shop-components 0.1.35 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  * @license
3
3
  * Copyright 2010-2024 Three.js Authors
4
4
  * SPDX-License-Identifier: MIT
5
- */const Qc="164",Qs={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Vs={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},$S=0,ry=1,A3=2,sy=1,e3=2,En=3,Bt=0,dt=1,ot=2,Mt=0,cr=1,Vc=2,oy=3,ay=4,t3=5,ts=100,i3=101,n3=102,r3=103,s3=104,o3=200,a3=201,l3=202,c3=203,qd=204,Nd=205,h3=206,u3=207,f3=208,d3=209,p3=210,g3=211,m3=212,v3=213,y3=214,w3=0,C3=1,x3=2,$c=3,I3=4,b3=5,_3=6,S3=7,ly=0,M3=1,P3=2,Ln=0,cy=1,hy=2,uy=3,Bd=4,T3=5,fy=6,dy=7,py="attached",D3="detached",gy=300,$s=301,Ao=302,eo=303,zd=304,Ah=306,zt=1e3,et=1001,ol=1002,fe=1003,Rd=1004,to=1005,we=1006,al=1007,zi=1008,E3=1008,Ri=1009,kd=1010,my=1011,jd=1012,ll=1013,ki=1014,Me=1015,Oe=1016,vy=1017,yy=1018,cl=1020,L3=35902,O3=1021,q3=1022,_e=1023,N3=1024,B3=1025,io=1026,hl=1027,no=1028,Kd=1029,Fd=1030,eh=1031,ul=1033,Gd=33776,Hd=33777,Yd=33778,Ud=33779,wy=35840,Cy=35841,xy=35842,Iy=35843,by=36196,_y=37492,Sy=37496,My=37808,Py=37809,Ty=37810,Dy=37811,Ey=37812,Ly=37813,Oy=37814,qy=37815,Ny=37816,By=37817,zy=37818,Ry=37819,ky=37820,jy=37821,Wd=36492,Ky=36494,Fy=36495,z3=36283,Gy=36284,Hy=36285,Yy=36286,ro=2300,is=2301,Jd=2302,Uy=2400,Wy=2401,Jy=2402,R3=2500,k3=0,Zy=1,Zd=2,j3=3200,Xd=3201,Xy=0,K3=1,On="",je="srgb",at="srgb-linear",Qd="display-p3",th="display-p3-linear",ih="linear",Le="srgb",nh="rec709",rh="p3",so=7680,Qy=519,F3=512,G3=513,H3=514,Vy=515,Y3=516,U3=517,W3=518,J3=519,Vd=35044,$y="300 es",qn=2e3,sh=2001;class ns{addEventListener(A,e){this._listeners===void 0&&(this._listeners={});const t=this._listeners;t[A]===void 0&&(t[A]=[]),t[A].indexOf(e)===-1&&t[A].push(e)}hasEventListener(A,e){if(this._listeners===void 0)return!1;const t=this._listeners;return t[A]!==void 0&&t[A].indexOf(e)!==-1}removeEventListener(A,e){if(this._listeners===void 0)return;const i=this._listeners[A];if(i!==void 0){const r=i.indexOf(e);r!==-1&&i.splice(r,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const t=this._listeners[A.type];if(t!==void 0){A.target=this;const i=t.slice(0);for(let r=0,s=i.length;r<s;r++)i[r].call(this,A);A.target=null}}}const Pt=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Aw=1234567;const oo=Math.PI/180,ao=180/Math.PI;function mi(){const n=Math.random()*4294967295|0,A=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0;return(Pt[n&255]+Pt[n>>8&255]+Pt[n>>16&255]+Pt[n>>24&255]+"-"+Pt[A&255]+Pt[A>>8&255]+"-"+Pt[A>>16&15|64]+Pt[A>>24&255]+"-"+Pt[e&63|128]+Pt[e>>8&255]+"-"+Pt[e>>16&255]+Pt[e>>24&255]+Pt[t&255]+Pt[t>>8&255]+Pt[t>>16&255]+Pt[t>>24&255]).toLowerCase()}function Qe(n,A,e){return Math.max(A,Math.min(e,n))}function $d(n,A){return(n%A+A)%A}function Z3(n,A,e,t,i){return t+(n-A)*(i-t)/(e-A)}function X3(n,A,e){return n!==A?(e-n)/(A-n):0}function fl(n,A,e){return(1-e)*n+e*A}function Q3(n,A,e,t){return fl(n,A,1-Math.exp(-e*t))}function V3(n,A=1){return A-Math.abs($d(n,A*2)-A)}function $3(n,A,e){return n<=A?0:n>=e?1:(n=(n-A)/(e-A),n*n*(3-2*n))}function AM(n,A,e){return n<=A?0:n>=e?1:(n=(n-A)/(e-A),n*n*n*(n*(n*6-15)+10))}function eM(n,A){return n+Math.floor(Math.random()*(A-n+1))}function tM(n,A){return n+Math.random()*(A-n)}function iM(n){return n*(.5-Math.random())}function nM(n){n!==void 0&&(Aw=n);let A=Aw+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function rM(n){return n*oo}function sM(n){return n*ao}function oM(n){return(n&n-1)===0&&n!==0}function aM(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function lM(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function cM(n,A,e,t,i){const r=Math.cos,s=Math.sin,o=r(e/2),a=s(e/2),l=r((A+t)/2),u=s((A+t)/2),c=r((A-t)/2),h=s((A-t)/2),f=r((t-A)/2),p=s((t-A)/2);switch(i){case"XYX":n.set(o*u,a*c,a*h,o*l);break;case"YZY":n.set(a*h,o*u,a*c,o*l);break;case"ZXZ":n.set(a*c,a*h,o*u,o*l);break;case"XZX":n.set(o*u,a*p,a*f,o*l);break;case"YXY":n.set(a*f,o*u,a*p,o*l);break;case"ZYZ":n.set(a*p,a*f,o*u,o*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ji(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Pe(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const lo={DEG2RAD:oo,RAD2DEG:ao,generateUUID:mi,clamp:Qe,euclideanModulo:$d,mapLinear:Z3,inverseLerp:X3,lerp:fl,damp:Q3,pingpong:V3,smoothstep:$3,smootherstep:AM,randInt:eM,randFloat:tM,randFloatSpread:iM,seededRandom:nM,degToRad:rM,radToDeg:sM,isPowerOfTwo:oM,ceilPowerOfTwo:aM,floorPowerOfTwo:lM,setQuaternionFromProperEuler:cM,normalize:Pe,denormalize:ji};class uA{constructor(A=0,e=0){uA.prototype.isVector2=!0,this.x=A,this.y=e}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,e){return this.x=A,this.y=e,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const e=this.x,t=this.y,i=A.elements;return this.x=i[0]*e+i[3]*t+i[6],this.y=i[1]*e+i[4]*t+i[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const e=Math.sqrt(this.lengthSq()*A.lengthSq());if(e===0)return Math.PI/2;const t=this.dot(A)/e;return Math.acos(Qe(t,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y;return e*e+t*t}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this}rotateAround(A,e){const t=Math.cos(e),i=Math.sin(e),r=this.x-A.x,s=this.y-A.y;return this.x=r*t-s*i+A.x,this.y=r*i+s*t+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class le{constructor(A,e,t,i,r,s,o,a,l){le.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,e,t,i,r,s,o,a,l)}set(A,e,t,i,r,s,o,a,l){const u=this.elements;return u[0]=A,u[1]=i,u[2]=o,u[3]=e,u[4]=r,u[5]=a,u[6]=t,u[7]=s,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const e=this.elements,t=A.elements;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],this}extractBasis(A,e,t){return A.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),t.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const e=A.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,r=this.elements,s=t[0],o=t[3],a=t[6],l=t[1],u=t[4],c=t[7],h=t[2],f=t[5],p=t[8],m=i[0],d=i[3],g=i[6],y=i[1],v=i[4],w=i[7],C=i[2],_=i[5],x=i[8];return r[0]=s*m+o*y+a*C,r[3]=s*d+o*v+a*_,r[6]=s*g+o*w+a*x,r[1]=l*m+u*y+c*C,r[4]=l*d+u*v+c*_,r[7]=l*g+u*w+c*x,r[2]=h*m+f*y+p*C,r[5]=h*d+f*v+p*_,r[8]=h*g+f*w+p*x,this}multiplyScalar(A){const e=this.elements;return e[0]*=A,e[3]*=A,e[6]*=A,e[1]*=A,e[4]*=A,e[7]*=A,e[2]*=A,e[5]*=A,e[8]*=A,this}determinant(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8];return e*s*u-e*o*l-t*r*u+t*o*a+i*r*l-i*s*a}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8],c=u*s-o*l,h=o*a-u*r,f=l*r-s*a,p=e*c+t*h+i*f;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return A[0]=c*m,A[1]=(i*l-u*t)*m,A[2]=(o*t-i*s)*m,A[3]=h*m,A[4]=(u*e-i*a)*m,A[5]=(i*r-o*e)*m,A[6]=f*m,A[7]=(t*a-l*e)*m,A[8]=(s*e-t*r)*m,this}transpose(){let A;const e=this.elements;return A=e[1],e[1]=e[3],e[3]=A,A=e[2],e[2]=e[6],e[6]=A,A=e[5],e[5]=e[7],e[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const e=this.elements;return A[0]=e[0],A[1]=e[3],A[2]=e[6],A[3]=e[1],A[4]=e[4],A[5]=e[7],A[6]=e[2],A[7]=e[5],A[8]=e[8],this}setUvTransform(A,e,t,i,r,s,o){const a=Math.cos(r),l=Math.sin(r);return this.set(t*a,t*l,-t*(a*s+l*o)+s+A,-i*l,i*a,-i*(-l*s+a*o)+o+e,0,0,1),this}scale(A,e){return this.premultiply(Ap.makeScale(A,e)),this}rotate(A){return this.premultiply(Ap.makeRotation(-A)),this}translate(A,e){return this.premultiply(Ap.makeTranslation(A,e)),this}makeTranslation(A,e){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,e,0,0,1),this}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,t,e,0,0,0,1),this}makeScale(A,e){return this.set(A,0,0,0,e,0,0,0,1),this}equals(A){const e=this.elements,t=A.elements;for(let i=0;i<9;i++)if(e[i]!==t[i])return!1;return!0}fromArray(A,e=0){for(let t=0;t<9;t++)this.elements[t]=A[t+e];return this}toArray(A=[],e=0){const t=this.elements;return A[e]=t[0],A[e+1]=t[1],A[e+2]=t[2],A[e+3]=t[3],A[e+4]=t[4],A[e+5]=t[5],A[e+6]=t[6],A[e+7]=t[7],A[e+8]=t[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Ap=new le;function ew(n){for(let A=n.length-1;A>=0;--A)if(n[A]>=65535)return!0;return!1}function dl(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function hM(){const n=dl("canvas");return n.style.display="block",n}const tw={};function iw(n){n in tw||(tw[n]=!0,console.warn(n))}const nw=new le().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),rw=new le().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),oh={[at]:{transfer:ih,primaries:nh,toReference:n=>n,fromReference:n=>n},[je]:{transfer:Le,primaries:nh,toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[th]:{transfer:ih,primaries:rh,toReference:n=>n.applyMatrix3(rw),fromReference:n=>n.applyMatrix3(nw)},[Qd]:{transfer:Le,primaries:rh,toReference:n=>n.convertSRGBToLinear().applyMatrix3(rw),fromReference:n=>n.applyMatrix3(nw).convertLinearToSRGB()}},uM=new Set([at,th]),Se={enabled:!0,_workingColorSpace:at,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!uM.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,A,e){if(this.enabled===!1||A===e||!A||!e)return n;const t=oh[A].toReference,i=oh[e].fromReference;return i(t(n))},fromWorkingColorSpace:function(n,A){return this.convert(n,this._workingColorSpace,A)},toWorkingColorSpace:function(n,A){return this.convert(n,A,this._workingColorSpace)},getPrimaries:function(n){return oh[n].primaries},getTransfer:function(n){return n===On?ih:oh[n].transfer}};function co(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function ep(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let ho;class fM{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let e;if(A instanceof HTMLCanvasElement)e=A;else{ho===void 0&&(ho=dl("canvas")),ho.width=A.width,ho.height=A.height;const t=ho.getContext("2d");A instanceof ImageData?t.putImageData(A,0,0):t.drawImage(A,0,0,A.width,A.height),e=ho}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const e=dl("canvas");e.width=A.width,e.height=A.height;const t=e.getContext("2d");t.drawImage(A,0,0,A.width,A.height);const i=t.getImageData(0,0,A.width,A.height),r=i.data;for(let s=0;s<r.length;s++)r[s]=co(r[s]/255)*255;return t.putImageData(i,0,0),e}else if(A.data){const e=A.data.slice(0);for(let t=0;t<e.length;t++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[t]=Math.floor(co(e[t]/255)*255):e[t]=co(e[t]);return{data:e,width:A.width,height:A.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),A}}let dM=0;class ah{constructor(A=null){this.isSource=!0,Object.defineProperty(this,"id",{value:dM++}),this.uuid=mi(),this.data=A,this.dataReady=!0,this.version=0}set needsUpdate(A){A===!0&&this.version++}toJSON(A){const e=A===void 0||typeof A=="string";if(!e&&A.images[this.uuid]!==void 0)return A.images[this.uuid];const t={uuid:this.uuid,url:""},i=this.data;if(i!==null){let r;if(Array.isArray(i)){r=[];for(let s=0,o=i.length;s<o;s++)i[s].isDataTexture?r.push(tp(i[s].image)):r.push(tp(i[s]))}else r=tp(i);t.url=r}return e||(A.images[this.uuid]=t),t}}function tp(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?fM.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let pM=0,lt=class Pd extends ns{constructor(A=Pd.DEFAULT_IMAGE,e=Pd.DEFAULT_MAPPING,t=et,i=et,r=we,s=zi,o=_e,a=Ri,l=Pd.DEFAULT_ANISOTROPY,u=On){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:pM++}),this.uuid=mi(),this.name="",this.source=new ah(A),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=t,this.wrapT=i,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=a,this.offset=new uA(0,0),this.repeat=new uA(1,1),this.center=new uA(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new le,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(A=null){this.source.data=A}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(A){return this.name=A.name,this.source=A.source,this.mipmaps=A.mipmaps.slice(0),this.mapping=A.mapping,this.channel=A.channel,this.wrapS=A.wrapS,this.wrapT=A.wrapT,this.magFilter=A.magFilter,this.minFilter=A.minFilter,this.anisotropy=A.anisotropy,this.format=A.format,this.internalFormat=A.internalFormat,this.type=A.type,this.offset.copy(A.offset),this.repeat.copy(A.repeat),this.center.copy(A.center),this.rotation=A.rotation,this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrix.copy(A.matrix),this.generateMipmaps=A.generateMipmaps,this.premultiplyAlpha=A.premultiplyAlpha,this.flipY=A.flipY,this.unpackAlignment=A.unpackAlignment,this.colorSpace=A.colorSpace,this.userData=JSON.parse(JSON.stringify(A.userData)),this.needsUpdate=!0,this}toJSON(A){const e=A===void 0||typeof A=="string";if(!e&&A.textures[this.uuid]!==void 0)return A.textures[this.uuid];const t={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(A).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(t.userData=this.userData),e||(A.textures[this.uuid]=t),t}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==gy)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case zt:A.x=A.x-Math.floor(A.x);break;case et:A.x=A.x<0?0:1;break;case ol:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case zt:A.y=A.y-Math.floor(A.y);break;case et:A.y=A.y<0?0:1;break;case ol:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(A){A===!0&&this.pmremVersion++}};lt.DEFAULT_IMAGE=null,lt.DEFAULT_MAPPING=gy,lt.DEFAULT_ANISOTROPY=1;class ve{constructor(A=0,e=0,t=0,i=1){ve.prototype.isVector4=!0,this.x=A,this.y=e,this.z=t,this.w=i}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,e,t,i){return this.x=A,this.y=e,this.z=t,this.w=i,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(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 new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this.z=A.z+e.z,this.w=A.w+e.w,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this.z+=A.z*e,this.w+=A.w*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this.z=A.z-e.z,this.w=A.w-e.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const e=this.x,t=this.y,i=this.z,r=this.w,s=A.elements;return this.x=s[0]*e+s[4]*t+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*t+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*t+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*t+s[11]*i+s[15]*r,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const e=Math.sqrt(1-A.w*A.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/e,this.y=A.y/e,this.z=A.z/e),this}setAxisAngleFromRotationMatrix(A){let e,t,i,r;const a=A.elements,l=a[0],u=a[4],c=a[8],h=a[1],f=a[5],p=a[9],m=a[2],d=a[6],g=a[10];if(Math.abs(u-h)<.01&&Math.abs(c-m)<.01&&Math.abs(p-d)<.01){if(Math.abs(u+h)<.1&&Math.abs(c+m)<.1&&Math.abs(p+d)<.1&&Math.abs(l+f+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const v=(l+1)/2,w=(f+1)/2,C=(g+1)/2,_=(u+h)/4,x=(c+m)/4,S=(p+d)/4;return v>w&&v>C?v<.01?(t=0,i=.707106781,r=.707106781):(t=Math.sqrt(v),i=_/t,r=x/t):w>C?w<.01?(t=.707106781,i=0,r=.707106781):(i=Math.sqrt(w),t=_/i,r=S/i):C<.01?(t=.707106781,i=.707106781,r=0):(r=Math.sqrt(C),t=x/r,i=S/r),this.set(t,i,r,e),this}let y=Math.sqrt((d-p)*(d-p)+(c-m)*(c-m)+(h-u)*(h-u));return Math.abs(y)<.001&&(y=1),this.x=(d-p)/y,this.y=(c-m)/y,this.z=(h-u)/y,this.w=Math.acos((l+f+g-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this.z=Math.max(A.z,Math.min(e.z,this.z)),this.w=Math.max(A.w,Math.min(e.w,this.w)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this.z=Math.max(A,Math.min(e,this.z)),this.w=Math.max(A,Math.min(e,this.w)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return 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}ceil(){return 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}round(){return 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}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this.z+=(A.z-this.z)*e,this.w+=(A.w-this.w)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this.z=A.z+(e.z-A.z)*t,this.w=A.w+(e.w-A.w)*t,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this.z=A[e+2],this.w=A[e+3],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A[e+2]=this.z,A[e+3]=this.w,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this.z=A.getZ(e),this.w=A.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class gM extends ns{constructor(A=1,e=1,t={}){super(),this.isRenderTarget=!0,this.width=A,this.height=e,this.depth=1,this.scissor=new ve(0,0,A,e),this.scissorTest=!1,this.viewport=new ve(0,0,A,e);const i={width:A,height:e,depth:1};t=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:we,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},t);const r=new lt(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace);r.flipY=!1,r.generateMipmaps=t.generateMipmaps,r.internalFormat=t.internalFormat,this.textures=[];const s=t.count;for(let o=0;o<s;o++)this.textures[o]=r.clone(),this.textures[o].isRenderTargetTexture=!0;this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,this.depthTexture=t.depthTexture,this.samples=t.samples}get texture(){return this.textures[0]}set texture(A){this.textures[0]=A}setSize(A,e,t=1){if(this.width!==A||this.height!==e||this.depth!==t){this.width=A,this.height=e,this.depth=t;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=A,this.textures[i].image.height=e,this.textures[i].image.depth=t;this.dispose()}this.viewport.set(0,0,A,e),this.scissor.set(0,0,A,e)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.textures.length=0;for(let t=0,i=A.textures.length;t<i;t++)this.textures[t]=A.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0;const e=Object.assign({},A.texture.image);return this.texture.source=new ah(e),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,this.resolveDepthBuffer=A.resolveDepthBuffer,this.resolveStencilBuffer=A.resolveStencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ve extends gM{constructor(A=1,e=1,t={}){super(A,e,t),this.isWebGLRenderTarget=!0}}class lh extends lt{constructor(A=null,e=1,t=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:e,height:t,depth:i},this.magFilter=fe,this.minFilter=fe,this.wrapR=et,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class mM extends Ve{constructor(A=1,e=1,t=1,i={}){super(A,e,i),this.isWebGLArrayRenderTarget=!0,this.depth=t,this.texture=new lh(null,A,e,t),this.texture.isRenderTargetTexture=!0}}class vM extends lt{constructor(A=null,e=1,t=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:A,width:e,height:t,depth:i},this.magFilter=fe,this.minFilter=fe,this.wrapR=et,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class vi{constructor(A=0,e=0,t=0,i=1){this.isQuaternion=!0,this._x=A,this._y=e,this._z=t,this._w=i}static slerpFlat(A,e,t,i,r,s,o){let a=t[i+0],l=t[i+1],u=t[i+2],c=t[i+3];const h=r[s+0],f=r[s+1],p=r[s+2],m=r[s+3];if(o===0){A[e+0]=a,A[e+1]=l,A[e+2]=u,A[e+3]=c;return}if(o===1){A[e+0]=h,A[e+1]=f,A[e+2]=p,A[e+3]=m;return}if(c!==m||a!==h||l!==f||u!==p){let d=1-o;const g=a*h+l*f+u*p+c*m,y=g>=0?1:-1,v=1-g*g;if(v>Number.EPSILON){const C=Math.sqrt(v),_=Math.atan2(C,g*y);d=Math.sin(d*_)/C,o=Math.sin(o*_)/C}const w=o*y;if(a=a*d+h*w,l=l*d+f*w,u=u*d+p*w,c=c*d+m*w,d===1-o){const C=1/Math.sqrt(a*a+l*l+u*u+c*c);a*=C,l*=C,u*=C,c*=C}}A[e]=a,A[e+1]=l,A[e+2]=u,A[e+3]=c}static multiplyQuaternionsFlat(A,e,t,i,r,s){const o=t[i],a=t[i+1],l=t[i+2],u=t[i+3],c=r[s],h=r[s+1],f=r[s+2],p=r[s+3];return A[e]=o*p+u*c+a*f-l*h,A[e+1]=a*p+u*h+l*c-o*f,A[e+2]=l*p+u*f+o*h-a*c,A[e+3]=u*p-o*c-a*h-l*f,A}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(A,e,t,i){return this._x=A,this._y=e,this._z=t,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,e=!0){const t=A._x,i=A._y,r=A._z,s=A._order,o=Math.cos,a=Math.sin,l=o(t/2),u=o(i/2),c=o(r/2),h=a(t/2),f=a(i/2),p=a(r/2);switch(s){case"XYZ":this._x=h*u*c+l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c-h*f*p;break;case"YXZ":this._x=h*u*c+l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c+h*f*p;break;case"ZXY":this._x=h*u*c-l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c-h*f*p;break;case"ZYX":this._x=h*u*c-l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c+h*f*p;break;case"YZX":this._x=h*u*c+l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c-h*f*p;break;case"XZY":this._x=h*u*c-l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c+h*f*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,e){const t=e/2,i=Math.sin(t);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(t),this._onChangeCallback(),this}setFromRotationMatrix(A){const e=A.elements,t=e[0],i=e[4],r=e[8],s=e[1],o=e[5],a=e[9],l=e[2],u=e[6],c=e[10],h=t+o+c;if(h>0){const f=.5/Math.sqrt(h+1);this._w=.25/f,this._x=(u-a)*f,this._y=(r-l)*f,this._z=(s-i)*f}else if(t>o&&t>c){const f=2*Math.sqrt(1+t-o-c);this._w=(u-a)/f,this._x=.25*f,this._y=(i+s)/f,this._z=(r+l)/f}else if(o>c){const f=2*Math.sqrt(1+o-t-c);this._w=(r-l)/f,this._x=(i+s)/f,this._y=.25*f,this._z=(a+u)/f}else{const f=2*Math.sqrt(1+c-t-o);this._w=(s-i)/f,this._x=(r+l)/f,this._y=(a+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(A,e){let t=A.dot(e)+1;return t<Number.EPSILON?(t=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=t):(this._x=0,this._y=-A.z,this._z=A.y,this._w=t)):(this._x=A.y*e.z-A.z*e.y,this._y=A.z*e.x-A.x*e.z,this._z=A.x*e.y-A.y*e.x,this._w=t),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(Qe(this.dot(A),-1,1)))}rotateTowards(A,e){const t=this.angleTo(A);if(t===0)return this;const i=Math.min(1,e/t);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,e){const t=A._x,i=A._y,r=A._z,s=A._w,o=e._x,a=e._y,l=e._z,u=e._w;return this._x=t*u+s*o+i*l-r*a,this._y=i*u+s*a+r*o-t*l,this._z=r*u+s*l+t*a-i*o,this._w=s*u-t*o-i*a-r*l,this._onChangeCallback(),this}slerp(A,e){if(e===0)return this;if(e===1)return this.copy(A);const t=this._x,i=this._y,r=this._z,s=this._w;let o=s*A._w+t*A._x+i*A._y+r*A._z;if(o<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,o=-o):this.copy(A),o>=1)return this._w=s,this._x=t,this._y=i,this._z=r,this;const a=1-o*o;if(a<=Number.EPSILON){const f=1-e;return this._w=f*s+e*this._w,this._x=f*t+e*this._x,this._y=f*i+e*this._y,this._z=f*r+e*this._z,this.normalize(),this}const l=Math.sqrt(a),u=Math.atan2(l,o),c=Math.sin((1-e)*u)/l,h=Math.sin(e*u)/l;return this._w=s*c+this._w*h,this._x=t*c+this._x*h,this._y=i*c+this._y*h,this._z=r*c+this._z*h,this._onChangeCallback(),this}slerpQuaternions(A,e,t){return this.copy(A).slerp(e,t)}random(){const A=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),t=Math.random(),i=Math.sqrt(1-t),r=Math.sqrt(t);return this.set(i*Math.sin(A),i*Math.cos(A),r*Math.sin(e),r*Math.cos(e))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,e=0){return this._x=A[e],this._y=A[e+1],this._z=A[e+2],this._w=A[e+3],this._onChangeCallback(),this}toArray(A=[],e=0){return A[e]=this._x,A[e+1]=this._y,A[e+2]=this._z,A[e+3]=this._w,A}fromBufferAttribute(A,e){return this._x=A.getX(e),this._y=A.getY(e),this._z=A.getZ(e),this._w=A.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class O{constructor(A=0,e=0,t=0){O.prototype.isVector3=!0,this.x=A,this.y=e,this.z=t}set(A,e,t){return t===void 0&&(t=this.z),this.x=A,this.y=e,this.z=t,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this.z=A.z+e.z,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this.z+=A.z*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this.z=A.z-e.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,e){return this.x=A.x*e.x,this.y=A.y*e.y,this.z=A.z*e.z,this}applyEuler(A){return this.applyQuaternion(sw.setFromEuler(A))}applyAxisAngle(A,e){return this.applyQuaternion(sw.setFromAxisAngle(A,e))}applyMatrix3(A){const e=this.x,t=this.y,i=this.z,r=A.elements;return this.x=r[0]*e+r[3]*t+r[6]*i,this.y=r[1]*e+r[4]*t+r[7]*i,this.z=r[2]*e+r[5]*t+r[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const e=this.x,t=this.y,i=this.z,r=A.elements,s=1/(r[3]*e+r[7]*t+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*t+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*t+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*t+r[10]*i+r[14])*s,this}applyQuaternion(A){const e=this.x,t=this.y,i=this.z,r=A.x,s=A.y,o=A.z,a=A.w,l=2*(s*i-o*t),u=2*(o*e-r*i),c=2*(r*t-s*e);return this.x=e+a*l+s*c-o*u,this.y=t+a*u+o*l-r*c,this.z=i+a*c+r*u-s*l,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const e=this.x,t=this.y,i=this.z,r=A.elements;return this.x=r[0]*e+r[4]*t+r[8]*i,this.y=r[1]*e+r[5]*t+r[9]*i,this.z=r[2]*e+r[6]*t+r[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this.z=Math.max(A.z,Math.min(e.z,this.z)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this.z=Math.max(A,Math.min(e,this.z)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this.z+=(A.z-this.z)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this.z=A.z+(e.z-A.z)*t,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,e){const t=A.x,i=A.y,r=A.z,s=e.x,o=e.y,a=e.z;return this.x=i*a-r*o,this.y=r*s-t*a,this.z=t*o-i*s,this}projectOnVector(A){const e=A.lengthSq();if(e===0)return this.set(0,0,0);const t=A.dot(this)/e;return this.copy(A).multiplyScalar(t)}projectOnPlane(A){return ip.copy(this).projectOnVector(A),this.sub(ip)}reflect(A){return this.sub(ip.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const e=Math.sqrt(this.lengthSq()*A.lengthSq());if(e===0)return Math.PI/2;const t=this.dot(A)/e;return Math.acos(Qe(t,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y,i=this.z-A.z;return e*e+t*t+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,e,t){const i=Math.sin(e)*A;return this.x=i*Math.sin(t),this.y=Math.cos(e)*A,this.z=i*Math.cos(t),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,e,t){return this.x=A*Math.sin(e),this.y=t,this.z=A*Math.cos(e),this}setFromMatrixPosition(A){const e=A.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(A){const e=this.setFromMatrixColumn(A,0).length(),t=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=e,this.y=t,this.z=i,this}setFromMatrixColumn(A,e){return this.fromArray(A.elements,e*4)}setFromMatrix3Column(A,e){return this.fromArray(A.elements,e*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this.z=A[e+2],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A[e+2]=this.z,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this.z=A.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,e=Math.random()*2-1,t=Math.sqrt(1-e*e);return this.x=t*Math.cos(A),this.y=e,this.z=t*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const ip=new O,sw=new vi;class ye{constructor(A=new O(1/0,1/0,1/0),e=new O(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=e}set(A,e){return this.min.copy(A),this.max.copy(e),this}setFromArray(A){this.makeEmpty();for(let e=0,t=A.length;e<t;e+=3)this.expandByPoint(Ki.fromArray(A,e));return this}setFromBufferAttribute(A){this.makeEmpty();for(let e=0,t=A.count;e<t;e++)this.expandByPoint(Ki.fromBufferAttribute(A,e));return this}setFromPoints(A){this.makeEmpty();for(let e=0,t=A.length;e<t;e++)this.expandByPoint(A[e]);return this}setFromCenterAndSize(A,e){const t=Ki.copy(e).multiplyScalar(.5);return this.min.copy(A).sub(t),this.max.copy(A).add(t),this}setFromObject(A,e=!1){return this.makeEmpty(),this.expandByObject(A,e)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,e=!1){A.updateWorldMatrix(!1,!1);const t=A.geometry;if(t!==void 0){const r=t.getAttribute("position");if(e===!0&&r!==void 0&&A.isInstancedMesh!==!0)for(let s=0,o=r.count;s<o;s++)A.isMesh===!0?A.getVertexPosition(s,Ki):Ki.fromBufferAttribute(r,s),Ki.applyMatrix4(A.matrixWorld),this.expandByPoint(Ki);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),ch.copy(A.boundingBox)):(t.boundingBox===null&&t.computeBoundingBox(),ch.copy(t.boundingBox)),ch.applyMatrix4(A.matrixWorld),this.union(ch)}const i=A.children;for(let r=0,s=i.length;r<s;r++)this.expandByObject(i[r],e);return this}containsPoint(A){return!(A.x<this.min.x||A.x>this.max.x||A.y<this.min.y||A.y>this.max.y||A.z<this.min.z||A.z>this.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,e){return e.set((A.x-this.min.x)/(this.max.x-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))}intersectsBox(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)}intersectsSphere(A){return this.clampPoint(A.center,Ki),Ki.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let e,t;return A.normal.x>0?(e=A.normal.x*this.min.x,t=A.normal.x*this.max.x):(e=A.normal.x*this.max.x,t=A.normal.x*this.min.x),A.normal.y>0?(e+=A.normal.y*this.min.y,t+=A.normal.y*this.max.y):(e+=A.normal.y*this.max.y,t+=A.normal.y*this.min.y),A.normal.z>0?(e+=A.normal.z*this.min.z,t+=A.normal.z*this.max.z):(e+=A.normal.z*this.max.z,t+=A.normal.z*this.min.z),e<=-A.constant&&t>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(pl),hh.subVectors(this.max,pl),uo.subVectors(A.a,pl),fo.subVectors(A.b,pl),po.subVectors(A.c,pl),hr.subVectors(fo,uo),ur.subVectors(po,fo),rs.subVectors(uo,po);let e=[0,-hr.z,hr.y,0,-ur.z,ur.y,0,-rs.z,rs.y,hr.z,0,-hr.x,ur.z,0,-ur.x,rs.z,0,-rs.x,-hr.y,hr.x,0,-ur.y,ur.x,0,-rs.y,rs.x,0];return!np(e,uo,fo,po,hh)||(e=[1,0,0,0,1,0,0,0,1],!np(e,uo,fo,po,hh))?!1:(uh.crossVectors(hr,ur),e=[uh.x,uh.y,uh.z],np(e,uo,fo,po,hh))}clampPoint(A,e){return e.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,Ki).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(Ki).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(Nn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),Nn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),Nn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),Nn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),Nn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),Nn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),Nn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),Nn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(Nn),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const Nn=[new O,new O,new O,new O,new O,new O,new O,new O],Ki=new O,ch=new ye,uo=new O,fo=new O,po=new O,hr=new O,ur=new O,rs=new O,pl=new O,hh=new O,uh=new O,ss=new O;function np(n,A,e,t,i){for(let r=0,s=n.length-3;r<=s;r+=3){ss.fromArray(n,r);const o=i.x*Math.abs(ss.x)+i.y*Math.abs(ss.y)+i.z*Math.abs(ss.z),a=A.dot(ss),l=e.dot(ss),u=t.dot(ss);if(Math.max(-Math.max(a,l,u),Math.min(a,l,u))>o)return!1}return!0}const yM=new ye,gl=new O,rp=new O;class Ai{constructor(A=new O,e=-1){this.isSphere=!0,this.center=A,this.radius=e}set(A,e){return this.center.copy(A),this.radius=e,this}setFromPoints(A,e){const t=this.center;e!==void 0?t.copy(e):yM.setFromPoints(A).getCenter(t);let i=0;for(let r=0,s=A.length;r<s;r++)i=Math.max(i,t.distanceToSquared(A[r]));return this.radius=Math.sqrt(i),this}copy(A){return this.center.copy(A.center),this.radius=A.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(A){return A.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(A){return A.distanceTo(this.center)-this.radius}intersectsSphere(A){const e=this.radius+A.radius;return A.center.distanceToSquared(this.center)<=e*e}intersectsBox(A){return A.intersectsSphere(this)}intersectsPlane(A){return Math.abs(A.distanceToPoint(this.center))<=this.radius}clampPoint(A,e){const t=this.center.distanceToSquared(A);return e.copy(A),t>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;gl.subVectors(A,this.center);const e=gl.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),i=(t-this.radius)*.5;this.center.addScaledVector(gl,i/t),this.radius+=i}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(rp.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(gl.copy(A.center).add(rp)),this.expandByPoint(gl.copy(A.center).sub(rp))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Bn=new O,sp=new O,fh=new O,fr=new O,op=new O,dh=new O,ap=new O;class os{constructor(A=new O,e=new O(0,0,-1)){this.origin=A,this.direction=e}set(A,e){return this.origin.copy(A),this.direction.copy(e),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,e){return e.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,Bn)),this}closestPointToPoint(A,e){e.subVectors(A,this.origin);const t=e.dot(this.direction);return t<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,t)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const e=Bn.subVectors(A,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(A):(Bn.copy(this.origin).addScaledVector(this.direction,e),Bn.distanceToSquared(A))}distanceSqToSegment(A,e,t,i){sp.copy(A).add(e).multiplyScalar(.5),fh.copy(e).sub(A).normalize(),fr.copy(this.origin).sub(sp);const r=A.distanceTo(e)*.5,s=-this.direction.dot(fh),o=fr.dot(this.direction),a=-fr.dot(fh),l=fr.lengthSq(),u=Math.abs(1-s*s);let c,h,f,p;if(u>0)if(c=s*a-o,h=s*o-a,p=r*u,c>=0)if(h>=-p)if(h<=p){const m=1/u;c*=m,h*=m,f=c*(c+s*h+2*o)+h*(s*c+h+2*a)+l}else h=r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;else h=-r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;else h<=-p?(c=Math.max(0,-(-s*r+o)),h=c>0?-r:Math.min(Math.max(-r,-a),r),f=-c*c+h*(h+2*a)+l):h<=p?(c=0,h=Math.min(Math.max(-r,-a),r),f=h*(h+2*a)+l):(c=Math.max(0,-(s*r+o)),h=c>0?r:Math.min(Math.max(-r,-a),r),f=-c*c+h*(h+2*a)+l);else h=s>0?-r:r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;return t&&t.copy(this.origin).addScaledVector(this.direction,c),i&&i.copy(sp).addScaledVector(fh,h),f}intersectSphere(A,e){Bn.subVectors(A.center,this.origin);const t=Bn.dot(this.direction),i=Bn.dot(Bn)-t*t,r=A.radius*A.radius;if(i>r)return null;const s=Math.sqrt(r-i),o=t-s,a=t+s;return a<0?null:o<0?this.at(a,e):this.at(o,e)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const e=A.normal.dot(this.direction);if(e===0)return A.distanceToPoint(this.origin)===0?0:null;const t=-(this.origin.dot(A.normal)+A.constant)/e;return t>=0?t:null}intersectPlane(A,e){const t=this.distanceToPlane(A);return t===null?null:this.at(t,e)}intersectsPlane(A){const e=A.distanceToPoint(this.origin);return e===0||A.normal.dot(this.direction)*e<0}intersectBox(A,e){let t,i,r,s,o,a;const l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,h=this.origin;return l>=0?(t=(A.min.x-h.x)*l,i=(A.max.x-h.x)*l):(t=(A.max.x-h.x)*l,i=(A.min.x-h.x)*l),u>=0?(r=(A.min.y-h.y)*u,s=(A.max.y-h.y)*u):(r=(A.max.y-h.y)*u,s=(A.min.y-h.y)*u),t>s||r>i||((r>t||isNaN(t))&&(t=r),(s<i||isNaN(i))&&(i=s),c>=0?(o=(A.min.z-h.z)*c,a=(A.max.z-h.z)*c):(o=(A.max.z-h.z)*c,a=(A.min.z-h.z)*c),t>a||o>i)||((o>t||t!==t)&&(t=o),(a<i||i!==i)&&(i=a),i<0)?null:this.at(t>=0?t:i,e)}intersectsBox(A){return this.intersectBox(A,Bn)!==null}intersectTriangle(A,e,t,i,r){op.subVectors(e,A),dh.subVectors(t,A),ap.crossVectors(op,dh);let s=this.direction.dot(ap),o;if(s>0){if(i)return null;o=1}else if(s<0)o=-1,s=-s;else return null;fr.subVectors(this.origin,A);const a=o*this.direction.dot(dh.crossVectors(fr,dh));if(a<0)return null;const l=o*this.direction.dot(op.cross(fr));if(l<0||a+l>s)return null;const u=-o*fr.dot(ap);return u<0?null:this.at(u/s,r)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class zA{constructor(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d){zA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d)}set(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d){const g=this.elements;return g[0]=A,g[4]=e,g[8]=t,g[12]=i,g[1]=r,g[5]=s,g[9]=o,g[13]=a,g[2]=l,g[6]=u,g[10]=c,g[14]=h,g[3]=f,g[7]=p,g[11]=m,g[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zA().fromArray(this.elements)}copy(A){const e=this.elements,t=A.elements;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],this}copyPosition(A){const e=this.elements,t=A.elements;return e[12]=t[12],e[13]=t[13],e[14]=t[14],this}setFromMatrix3(A){const e=A.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(A,e,t){return A.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),t.setFromMatrixColumn(this,2),this}makeBasis(A,e,t){return this.set(A.x,e.x,t.x,0,A.y,e.y,t.y,0,A.z,e.z,t.z,0,0,0,0,1),this}extractRotation(A){const e=this.elements,t=A.elements,i=1/go.setFromMatrixColumn(A,0).length(),r=1/go.setFromMatrixColumn(A,1).length(),s=1/go.setFromMatrixColumn(A,2).length();return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=0,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=0,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(A){const e=this.elements,t=A.x,i=A.y,r=A.z,s=Math.cos(t),o=Math.sin(t),a=Math.cos(i),l=Math.sin(i),u=Math.cos(r),c=Math.sin(r);if(A.order==="XYZ"){const h=s*u,f=s*c,p=o*u,m=o*c;e[0]=a*u,e[4]=-a*c,e[8]=l,e[1]=f+p*l,e[5]=h-m*l,e[9]=-o*a,e[2]=m-h*l,e[6]=p+f*l,e[10]=s*a}else if(A.order==="YXZ"){const h=a*u,f=a*c,p=l*u,m=l*c;e[0]=h+m*o,e[4]=p*o-f,e[8]=s*l,e[1]=s*c,e[5]=s*u,e[9]=-o,e[2]=f*o-p,e[6]=m+h*o,e[10]=s*a}else if(A.order==="ZXY"){const h=a*u,f=a*c,p=l*u,m=l*c;e[0]=h-m*o,e[4]=-s*c,e[8]=p+f*o,e[1]=f+p*o,e[5]=s*u,e[9]=m-h*o,e[2]=-s*l,e[6]=o,e[10]=s*a}else if(A.order==="ZYX"){const h=s*u,f=s*c,p=o*u,m=o*c;e[0]=a*u,e[4]=p*l-f,e[8]=h*l+m,e[1]=a*c,e[5]=m*l+h,e[9]=f*l-p,e[2]=-l,e[6]=o*a,e[10]=s*a}else if(A.order==="YZX"){const h=s*a,f=s*l,p=o*a,m=o*l;e[0]=a*u,e[4]=m-h*c,e[8]=p*c+f,e[1]=c,e[5]=s*u,e[9]=-o*u,e[2]=-l*u,e[6]=f*c+p,e[10]=h-m*c}else if(A.order==="XZY"){const h=s*a,f=s*l,p=o*a,m=o*l;e[0]=a*u,e[4]=-c,e[8]=l*u,e[1]=h*c+m,e[5]=s*u,e[9]=f*c-p,e[2]=p*c-f,e[6]=o*u,e[10]=m*c+h}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(A){return this.compose(wM,A,CM)}lookAt(A,e,t){const i=this.elements;return ei.subVectors(A,e),ei.lengthSq()===0&&(ei.z=1),ei.normalize(),dr.crossVectors(t,ei),dr.lengthSq()===0&&(Math.abs(t.z)===1?ei.x+=1e-4:ei.z+=1e-4,ei.normalize(),dr.crossVectors(t,ei)),dr.normalize(),ph.crossVectors(ei,dr),i[0]=dr.x,i[4]=ph.x,i[8]=ei.x,i[1]=dr.y,i[5]=ph.y,i[9]=ei.y,i[2]=dr.z,i[6]=ph.z,i[10]=ei.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,r=this.elements,s=t[0],o=t[4],a=t[8],l=t[12],u=t[1],c=t[5],h=t[9],f=t[13],p=t[2],m=t[6],d=t[10],g=t[14],y=t[3],v=t[7],w=t[11],C=t[15],_=i[0],x=i[4],S=i[8],b=i[12],I=i[1],D=i[5],P=i[9],M=i[13],T=i[2],q=i[6],B=i[10],W=i[14],K=i[3],U=i[7],k=i[11],N=i[15];return r[0]=s*_+o*I+a*T+l*K,r[4]=s*x+o*D+a*q+l*U,r[8]=s*S+o*P+a*B+l*k,r[12]=s*b+o*M+a*W+l*N,r[1]=u*_+c*I+h*T+f*K,r[5]=u*x+c*D+h*q+f*U,r[9]=u*S+c*P+h*B+f*k,r[13]=u*b+c*M+h*W+f*N,r[2]=p*_+m*I+d*T+g*K,r[6]=p*x+m*D+d*q+g*U,r[10]=p*S+m*P+d*B+g*k,r[14]=p*b+m*M+d*W+g*N,r[3]=y*_+v*I+w*T+C*K,r[7]=y*x+v*D+w*q+C*U,r[11]=y*S+v*P+w*B+C*k,r[15]=y*b+v*M+w*W+C*N,this}multiplyScalar(A){const e=this.elements;return e[0]*=A,e[4]*=A,e[8]*=A,e[12]*=A,e[1]*=A,e[5]*=A,e[9]*=A,e[13]*=A,e[2]*=A,e[6]*=A,e[10]*=A,e[14]*=A,e[3]*=A,e[7]*=A,e[11]*=A,e[15]*=A,this}determinant(){const A=this.elements,e=A[0],t=A[4],i=A[8],r=A[12],s=A[1],o=A[5],a=A[9],l=A[13],u=A[2],c=A[6],h=A[10],f=A[14],p=A[3],m=A[7],d=A[11],g=A[15];return p*(+r*a*c-i*l*c-r*o*h+t*l*h+i*o*f-t*a*f)+m*(+e*a*f-e*l*h+r*s*h-i*s*f+i*l*u-r*a*u)+d*(+e*l*c-e*o*f-r*s*c+t*s*f+r*o*u-t*l*u)+g*(-i*o*u-e*a*c+e*o*h+i*s*c-t*s*h+t*a*u)}transpose(){const A=this.elements;let e;return e=A[1],A[1]=A[4],A[4]=e,e=A[2],A[2]=A[8],A[8]=e,e=A[6],A[6]=A[9],A[9]=e,e=A[3],A[3]=A[12],A[12]=e,e=A[7],A[7]=A[13],A[13]=e,e=A[11],A[11]=A[14],A[14]=e,this}setPosition(A,e,t){const i=this.elements;return A.isVector3?(i[12]=A.x,i[13]=A.y,i[14]=A.z):(i[12]=A,i[13]=e,i[14]=t),this}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8],c=A[9],h=A[10],f=A[11],p=A[12],m=A[13],d=A[14],g=A[15],y=c*d*l-m*h*l+m*a*f-o*d*f-c*a*g+o*h*g,v=p*h*l-u*d*l-p*a*f+s*d*f+u*a*g-s*h*g,w=u*m*l-p*c*l+p*o*f-s*m*f-u*o*g+s*c*g,C=p*c*a-u*m*a-p*o*h+s*m*h+u*o*d-s*c*d,_=e*y+t*v+i*w+r*C;if(_===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const x=1/_;return A[0]=y*x,A[1]=(m*h*r-c*d*r-m*i*f+t*d*f+c*i*g-t*h*g)*x,A[2]=(o*d*r-m*a*r+m*i*l-t*d*l-o*i*g+t*a*g)*x,A[3]=(c*a*r-o*h*r-c*i*l+t*h*l+o*i*f-t*a*f)*x,A[4]=v*x,A[5]=(u*d*r-p*h*r+p*i*f-e*d*f-u*i*g+e*h*g)*x,A[6]=(p*a*r-s*d*r-p*i*l+e*d*l+s*i*g-e*a*g)*x,A[7]=(s*h*r-u*a*r+u*i*l-e*h*l-s*i*f+e*a*f)*x,A[8]=w*x,A[9]=(p*c*r-u*m*r-p*t*f+e*m*f+u*t*g-e*c*g)*x,A[10]=(s*m*r-p*o*r+p*t*l-e*m*l-s*t*g+e*o*g)*x,A[11]=(u*o*r-s*c*r-u*t*l+e*c*l+s*t*f-e*o*f)*x,A[12]=C*x,A[13]=(u*m*i-p*c*i+p*t*h-e*m*h-u*t*d+e*c*d)*x,A[14]=(p*o*i-s*m*i-p*t*a+e*m*a+s*t*d-e*o*d)*x,A[15]=(s*c*i-u*o*i+u*t*a-e*c*a-s*t*h+e*o*h)*x,this}scale(A){const e=this.elements,t=A.x,i=A.y,r=A.z;return e[0]*=t,e[4]*=i,e[8]*=r,e[1]*=t,e[5]*=i,e[9]*=r,e[2]*=t,e[6]*=i,e[10]*=r,e[3]*=t,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const A=this.elements,e=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],t=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],i=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(e,t,i))}makeTranslation(A,e,t){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,e,0,0,1,t,0,0,0,1),this}makeRotationX(A){const e=Math.cos(A),t=Math.sin(A);return this.set(1,0,0,0,0,e,-t,0,0,t,e,0,0,0,0,1),this}makeRotationY(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,0,t,0,0,1,0,0,-t,0,e,0,0,0,0,1),this}makeRotationZ(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,0,t,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,e){const t=Math.cos(e),i=Math.sin(e),r=1-t,s=A.x,o=A.y,a=A.z,l=r*s,u=r*o;return this.set(l*s+t,l*o-i*a,l*a+i*o,0,l*o+i*a,u*o+t,u*a-i*s,0,l*a-i*o,u*a+i*s,r*a*a+t,0,0,0,0,1),this}makeScale(A,e,t){return this.set(A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1),this}makeShear(A,e,t,i,r,s){return this.set(1,t,r,0,A,1,s,0,e,i,1,0,0,0,0,1),this}compose(A,e,t){const i=this.elements,r=e._x,s=e._y,o=e._z,a=e._w,l=r+r,u=s+s,c=o+o,h=r*l,f=r*u,p=r*c,m=s*u,d=s*c,g=o*c,y=a*l,v=a*u,w=a*c,C=t.x,_=t.y,x=t.z;return i[0]=(1-(m+g))*C,i[1]=(f+w)*C,i[2]=(p-v)*C,i[3]=0,i[4]=(f-w)*_,i[5]=(1-(h+g))*_,i[6]=(d+y)*_,i[7]=0,i[8]=(p+v)*x,i[9]=(d-y)*x,i[10]=(1-(h+m))*x,i[11]=0,i[12]=A.x,i[13]=A.y,i[14]=A.z,i[15]=1,this}decompose(A,e,t){const i=this.elements;let r=go.set(i[0],i[1],i[2]).length();const s=go.set(i[4],i[5],i[6]).length(),o=go.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),A.x=i[12],A.y=i[13],A.z=i[14],Fi.copy(this);const l=1/r,u=1/s,c=1/o;return Fi.elements[0]*=l,Fi.elements[1]*=l,Fi.elements[2]*=l,Fi.elements[4]*=u,Fi.elements[5]*=u,Fi.elements[6]*=u,Fi.elements[8]*=c,Fi.elements[9]*=c,Fi.elements[10]*=c,e.setFromRotationMatrix(Fi),t.x=r,t.y=s,t.z=o,this}makePerspective(A,e,t,i,r,s,o=qn){const a=this.elements,l=2*r/(e-A),u=2*r/(t-i),c=(e+A)/(e-A),h=(t+i)/(t-i);let f,p;if(o===qn)f=-(s+r)/(s-r),p=-2*s*r/(s-r);else if(o===sh)f=-s/(s-r),p=-s*r/(s-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return a[0]=l,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=u,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=f,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(A,e,t,i,r,s,o=qn){const a=this.elements,l=1/(e-A),u=1/(t-i),c=1/(s-r),h=(e+A)*l,f=(t+i)*u;let p,m;if(o===qn)p=(s+r)*c,m=-2*c;else if(o===sh)p=r*c,m=-1*c;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*u,a[9]=0,a[13]=-f,a[2]=0,a[6]=0,a[10]=m,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(A){const e=this.elements,t=A.elements;for(let i=0;i<16;i++)if(e[i]!==t[i])return!1;return!0}fromArray(A,e=0){for(let t=0;t<16;t++)this.elements[t]=A[t+e];return this}toArray(A=[],e=0){const t=this.elements;return A[e]=t[0],A[e+1]=t[1],A[e+2]=t[2],A[e+3]=t[3],A[e+4]=t[4],A[e+5]=t[5],A[e+6]=t[6],A[e+7]=t[7],A[e+8]=t[8],A[e+9]=t[9],A[e+10]=t[10],A[e+11]=t[11],A[e+12]=t[12],A[e+13]=t[13],A[e+14]=t[14],A[e+15]=t[15],A}}const go=new O,Fi=new zA,wM=new O(0,0,0),CM=new O(1,1,1),dr=new O,ph=new O,ei=new O,ow=new zA,aw=new vi;class on{constructor(A=0,e=0,t=0,i=on.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=e,this._z=t,this._order=i}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(A,e,t,i=this._order){return this._x=A,this._y=e,this._z=t,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,e=this._order,t=!0){const i=A.elements,r=i[0],s=i[4],o=i[8],a=i[1],l=i[5],u=i[9],c=i[2],h=i[6],f=i[10];switch(e){case"XYZ":this._y=Math.asin(Qe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Qe(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(a,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(Qe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-c,f),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(a,r));break;case"ZYX":this._y=Math.asin(-Qe(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(h,f),this._z=Math.atan2(a,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Qe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Qe(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,t===!0&&this._onChangeCallback(),this}setFromQuaternion(A,e,t){return ow.makeRotationFromQuaternion(A),this.setFromRotationMatrix(ow,e,t)}setFromVector3(A,e=this._order){return this.set(A.x,A.y,A.z,e)}reorder(A){return aw.setFromEuler(this),this.setFromQuaternion(aw,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],e=0){return A[e]=this._x,A[e+1]=this._y,A[e+2]=this._z,A[e+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}on.DEFAULT_ORDER="XYZ";class lp{constructor(){this.mask=1}set(A){this.mask=(1<<A|0)>>>0}enable(A){this.mask|=1<<A|0}enableAll(){this.mask=-1}toggle(A){this.mask^=1<<A|0}disable(A){this.mask&=~(1<<A|0)}disableAll(){this.mask=0}test(A){return(this.mask&A.mask)!==0}isEnabled(A){return(this.mask&(1<<A|0))!==0}}let xM=0;const lw=new O,mo=new vi,zn=new zA,gh=new O,ml=new O,IM=new O,bM=new vi,cw=new O(1,0,0),hw=new O(0,1,0),uw=new O(0,0,1),fw={type:"added"},_M={type:"removed"},vo={type:"childadded",child:null},cp={type:"childremoved",child:null};class Ie extends ns{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:xM++}),this.uuid=mi(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Ie.DEFAULT_UP.clone();const A=new O,e=new on,t=new vi,i=new O(1,1,1);function r(){t.setFromEuler(e,!1)}function s(){e.setFromQuaternion(t,void 0,!1)}e._onChange(r),t._onChange(s),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:A},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:t},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new zA},normalMatrix:{value:new le}}),this.matrix=new zA,this.matrixWorld=new zA,this.matrixAutoUpdate=Ie.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=Ie.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new lp,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(A){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(A),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(A){return this.quaternion.premultiply(A),this}setRotationFromAxisAngle(A,e){this.quaternion.setFromAxisAngle(A,e)}setRotationFromEuler(A){this.quaternion.setFromEuler(A,!0)}setRotationFromMatrix(A){this.quaternion.setFromRotationMatrix(A)}setRotationFromQuaternion(A){this.quaternion.copy(A)}rotateOnAxis(A,e){return mo.setFromAxisAngle(A,e),this.quaternion.multiply(mo),this}rotateOnWorldAxis(A,e){return mo.setFromAxisAngle(A,e),this.quaternion.premultiply(mo),this}rotateX(A){return this.rotateOnAxis(cw,A)}rotateY(A){return this.rotateOnAxis(hw,A)}rotateZ(A){return this.rotateOnAxis(uw,A)}translateOnAxis(A,e){return lw.copy(A).applyQuaternion(this.quaternion),this.position.add(lw.multiplyScalar(e)),this}translateX(A){return this.translateOnAxis(cw,A)}translateY(A){return this.translateOnAxis(hw,A)}translateZ(A){return this.translateOnAxis(uw,A)}localToWorld(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(this.matrixWorld)}worldToLocal(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(zn.copy(this.matrixWorld).invert())}lookAt(A,e,t){A.isVector3?gh.copy(A):gh.set(A,e,t);const i=this.parent;this.updateWorldMatrix(!0,!1),ml.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?zn.lookAt(ml,gh,this.up):zn.lookAt(gh,ml,this.up),this.quaternion.setFromRotationMatrix(zn),i&&(zn.extractRotation(i.matrixWorld),mo.setFromRotationMatrix(zn),this.quaternion.premultiply(mo.invert()))}add(A){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return A===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",A),this):(A&&A.isObject3D?(A.removeFromParent(),A.parent=this,this.children.push(A),A.dispatchEvent(fw),vo.child=A,this.dispatchEvent(vo),vo.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",A),this)}remove(A){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.remove(arguments[t]);return this}const e=this.children.indexOf(A);return e!==-1&&(A.parent=null,this.children.splice(e,1),A.dispatchEvent(_M),cp.child=A,this.dispatchEvent(cp),cp.child=null),this}removeFromParent(){const A=this.parent;return A!==null&&A.remove(this),this}clear(){return this.remove(...this.children)}attach(A){return this.updateWorldMatrix(!0,!1),zn.copy(this.matrixWorld).invert(),A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),zn.multiply(A.parent.matrixWorld)),A.applyMatrix4(zn),A.removeFromParent(),A.parent=this,this.children.push(A),A.updateWorldMatrix(!1,!0),A.dispatchEvent(fw),vo.child=A,this.dispatchEvent(vo),vo.child=null,this}getObjectById(A){return this.getObjectByProperty("id",A)}getObjectByName(A){return this.getObjectByProperty("name",A)}getObjectByProperty(A,e){if(this[A]===e)return this;for(let t=0,i=this.children.length;t<i;t++){const s=this.children[t].getObjectByProperty(A,e);if(s!==void 0)return s}}getObjectsByProperty(A,e,t=[]){this[A]===e&&t.push(this);const i=this.children;for(let r=0,s=i.length;r<s;r++)i[r].getObjectsByProperty(A,e,t);return t}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ml,A,IM),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ml,bM,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return A.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(A){A(this);const e=this.children;for(let t=0,i=e.length;t<i;t++)e[t].traverse(A)}traverseVisible(A){if(this.visible===!1)return;A(this);const e=this.children;for(let t=0,i=e.length;t<i;t++)e[t].traverseVisible(A)}traverseAncestors(A){const e=this.parent;e!==null&&(A(e),e.traverseAncestors(A))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,A=!0);const e=this.children;for(let t=0,i=e.length;t<i;t++){const r=e[t];(r.matrixWorldAutoUpdate===!0||A===!0)&&r.updateMatrixWorld(A)}}updateWorldMatrix(A,e){const t=this.parent;if(A===!0&&t!==null&&t.matrixWorldAutoUpdate===!0&&t.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),e===!0){const i=this.children;for(let r=0,s=i.length;r<s;r++){const o=i[r];o.matrixWorldAutoUpdate===!0&&o.updateWorldMatrix(!1,!0)}}}toJSON(A){const e=A===void 0||typeof A=="string",t={};e&&(A={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},t.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),i.maxGeometryCount=this._maxGeometryCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(A),this.boundingSphere!==null&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()}));function r(o,a){return o[a.uuid]===void 0&&(o[a.uuid]=a.toJSON(A)),a.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(A.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const a=o.shapes;if(Array.isArray(a))for(let l=0,u=a.length;l<u;l++){const c=a[l];r(A.shapes,c)}else r(A.shapes,a)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(r(A.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let a=0,l=this.material.length;a<l;a++)o.push(r(A.materials,this.material[a]));i.material=o}else i.material=r(A.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(A).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){const a=this.animations[o];i.animations.push(r(A.animations,a))}}if(e){const o=s(A.geometries),a=s(A.materials),l=s(A.textures),u=s(A.images),c=s(A.shapes),h=s(A.skeletons),f=s(A.animations),p=s(A.nodes);o.length>0&&(t.geometries=o),a.length>0&&(t.materials=a),l.length>0&&(t.textures=l),u.length>0&&(t.images=u),c.length>0&&(t.shapes=c),h.length>0&&(t.skeletons=h),f.length>0&&(t.animations=f),p.length>0&&(t.nodes=p)}return t.object=i,t;function s(o){const a=[];for(const l in o){const u=o[l];delete u.metadata,a.push(u)}return a}}clone(A){return new this.constructor().copy(this,A)}copy(A,e=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),e===!0)for(let t=0;t<A.children.length;t++){const i=A.children[t];this.add(i.clone())}return this}}Ie.DEFAULT_UP=new O(0,1,0),Ie.DEFAULT_MATRIX_AUTO_UPDATE=!0,Ie.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Gi=new O,Rn=new O,hp=new O,kn=new O,yo=new O,wo=new O,dw=new O,up=new O,fp=new O,dp=new O;class Ue{constructor(A=new O,e=new O,t=new O){this.a=A,this.b=e,this.c=t}static getNormal(A,e,t,i){i.subVectors(t,e),Gi.subVectors(A,e),i.cross(Gi);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(A,e,t,i,r){Gi.subVectors(i,e),Rn.subVectors(t,e),hp.subVectors(A,e);const s=Gi.dot(Gi),o=Gi.dot(Rn),a=Gi.dot(hp),l=Rn.dot(Rn),u=Rn.dot(hp),c=s*l-o*o;if(c===0)return r.set(0,0,0),null;const h=1/c,f=(l*a-o*u)*h,p=(s*u-o*a)*h;return r.set(1-f-p,p,f)}static containsPoint(A,e,t,i){return this.getBarycoord(A,e,t,i,kn)===null?!1:kn.x>=0&&kn.y>=0&&kn.x+kn.y<=1}static getInterpolation(A,e,t,i,r,s,o,a){return this.getBarycoord(A,e,t,i,kn)===null?(a.x=0,a.y=0,"z"in a&&(a.z=0),"w"in a&&(a.w=0),null):(a.setScalar(0),a.addScaledVector(r,kn.x),a.addScaledVector(s,kn.y),a.addScaledVector(o,kn.z),a)}static isFrontFacing(A,e,t,i){return Gi.subVectors(t,e),Rn.subVectors(A,e),Gi.cross(Rn).dot(i)<0}set(A,e,t){return this.a.copy(A),this.b.copy(e),this.c.copy(t),this}setFromPointsAndIndices(A,e,t,i){return this.a.copy(A[e]),this.b.copy(A[t]),this.c.copy(A[i]),this}setFromAttributeAndIndices(A,e,t,i){return this.a.fromBufferAttribute(A,e),this.b.fromBufferAttribute(A,t),this.c.fromBufferAttribute(A,i),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return Gi.subVectors(this.c,this.b),Rn.subVectors(this.a,this.b),Gi.cross(Rn).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return Ue.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,e){return Ue.getBarycoord(A,this.a,this.b,this.c,e)}getInterpolation(A,e,t,i,r){return Ue.getInterpolation(A,this.a,this.b,this.c,e,t,i,r)}containsPoint(A){return Ue.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return Ue.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,e){const t=this.a,i=this.b,r=this.c;let s,o;yo.subVectors(i,t),wo.subVectors(r,t),up.subVectors(A,t);const a=yo.dot(up),l=wo.dot(up);if(a<=0&&l<=0)return e.copy(t);fp.subVectors(A,i);const u=yo.dot(fp),c=wo.dot(fp);if(u>=0&&c<=u)return e.copy(i);const h=a*c-u*l;if(h<=0&&a>=0&&u<=0)return s=a/(a-u),e.copy(t).addScaledVector(yo,s);dp.subVectors(A,r);const f=yo.dot(dp),p=wo.dot(dp);if(p>=0&&f<=p)return e.copy(r);const m=f*l-a*p;if(m<=0&&l>=0&&p<=0)return o=l/(l-p),e.copy(t).addScaledVector(wo,o);const d=u*p-f*c;if(d<=0&&c-u>=0&&f-p>=0)return dw.subVectors(r,i),o=(c-u)/(c-u+(f-p)),e.copy(i).addScaledVector(dw,o);const g=1/(d+m+h);return s=m*g,o=h*g,e.copy(t).addScaledVector(yo,s).addScaledVector(wo,o)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}const pw={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,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},pr={h:0,s:0,l:0},mh={h:0,s:0,l:0};function pp(n,A,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?n+(A-n)*6*e:e<1/2?A:e<2/3?n+(A-n)*6*(2/3-e):n}let KA=class{constructor(A,e,t){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,e,t)}set(A,e,t){if(e===void 0&&t===void 0){const i=A;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(A,e,t);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,e=je){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,Se.toWorkingColorSpace(this,e),this}setRGB(A,e,t,i=Se.workingColorSpace){return this.r=A,this.g=e,this.b=t,Se.toWorkingColorSpace(this,i),this}setHSL(A,e,t,i=Se.workingColorSpace){if(A=$d(A,1),e=Qe(e,0,1),t=Qe(t,0,1),e===0)this.r=this.g=this.b=t;else{const r=t<=.5?t*(1+e):t+e-t*e,s=2*t-r;this.r=pp(s,r,A+1/3),this.g=pp(s,r,A),this.b=pp(s,r,A-1/3)}return Se.toWorkingColorSpace(this,i),this}setStyle(A,e=je){function t(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(A)){let r;const s=i[1],o=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(A)){const r=i[1],s=r.length;if(s===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,e);if(s===6)return this.setHex(parseInt(r,16),e);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,e);return this}setColorName(A,e=je){const t=pw[A.toLowerCase()];return t!==void 0?this.setHex(t,e):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=co(A.r),this.g=co(A.g),this.b=co(A.b),this}copyLinearToSRGB(A){return this.r=ep(A.r),this.g=ep(A.g),this.b=ep(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=je){return Se.fromWorkingColorSpace(Tt.copy(this),A),Math.round(Qe(Tt.r*255,0,255))*65536+Math.round(Qe(Tt.g*255,0,255))*256+Math.round(Qe(Tt.b*255,0,255))}getHexString(A=je){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,e=Se.workingColorSpace){Se.fromWorkingColorSpace(Tt.copy(this),e);const t=Tt.r,i=Tt.g,r=Tt.b,s=Math.max(t,i,r),o=Math.min(t,i,r);let a,l;const u=(o+s)/2;if(o===s)a=0,l=0;else{const c=s-o;switch(l=u<=.5?c/(s+o):c/(2-s-o),s){case t:a=(i-r)/c+(i<r?6:0);break;case i:a=(r-t)/c+2;break;case r:a=(t-i)/c+4;break}a/=6}return A.h=a,A.s=l,A.l=u,A}getRGB(A,e=Se.workingColorSpace){return Se.fromWorkingColorSpace(Tt.copy(this),e),A.r=Tt.r,A.g=Tt.g,A.b=Tt.b,A}getStyle(A=je){Se.fromWorkingColorSpace(Tt.copy(this),A);const e=Tt.r,t=Tt.g,i=Tt.b;return A!==je?`color(${A} ${e.toFixed(3)} ${t.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(t*255)},${Math.round(i*255)})`}offsetHSL(A,e,t){return this.getHSL(pr),this.setHSL(pr.h+A,pr.s+e,pr.l+t)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,e){return this.r=A.r+e.r,this.g=A.g+e.g,this.b=A.b+e.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,e){return this.r+=(A.r-this.r)*e,this.g+=(A.g-this.g)*e,this.b+=(A.b-this.b)*e,this}lerpColors(A,e,t){return this.r=A.r+(e.r-A.r)*t,this.g=A.g+(e.g-A.g)*t,this.b=A.b+(e.b-A.b)*t,this}lerpHSL(A,e){this.getHSL(pr),A.getHSL(mh);const t=fl(pr.h,mh.h,e),i=fl(pr.s,mh.s,e),r=fl(pr.l,mh.l,e);return this.setHSL(t,i,r),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const e=this.r,t=this.g,i=this.b,r=A.elements;return this.r=r[0]*e+r[3]*t+r[6]*i,this.g=r[1]*e+r[4]*t+r[7]*i,this.b=r[2]*e+r[5]*t+r[8]*i,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,e=0){return this.r=A[e],this.g=A[e+1],this.b=A[e+2],this}toArray(A=[],e=0){return A[e]=this.r,A[e+1]=this.g,A[e+2]=this.b,A}fromBufferAttribute(A,e){return this.r=A.getX(e),this.g=A.getY(e),this.b=A.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};const Tt=new KA;KA.NAMES=pw;let SM=0;class an extends ns{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:SM++}),this.uuid=mi(),this.name="",this.type="Material",this.blending=cr,this.side=Bt,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=qd,this.blendDst=Nd,this.blendEquation=ts,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new KA(0,0,0),this.blendAlpha=0,this.depthFunc=$c,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Qy,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=so,this.stencilZFail=so,this.stencilZPass=so,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const e in A){const t=A[e];if(t===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];if(i===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(t):i&&i.isVector3&&t&&t.isVector3?i.copy(t):this[e]=t}}toJSON(A){const e=A===void 0||typeof A=="string";e&&(A={textures:{},images:{}});const t={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.color&&this.color.isColor&&(t.color=this.color.getHex()),this.roughness!==void 0&&(t.roughness=this.roughness),this.metalness!==void 0&&(t.metalness=this.metalness),this.sheen!==void 0&&(t.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(t.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(t.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(t.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(t.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(t.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(t.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(t.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(t.shininess=this.shininess),this.clearcoat!==void 0&&(t.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(t.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(t.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(t.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(t.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,t.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(t.dispersion=this.dispersion),this.iridescence!==void 0&&(t.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(t.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(t.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(t.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(t.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(t.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(t.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(t.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(t.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(t.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(t.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(t.lightMap=this.lightMap.toJSON(A).uuid,t.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(t.aoMap=this.aoMap.toJSON(A).uuid,t.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(t.bumpMap=this.bumpMap.toJSON(A).uuid,t.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(t.normalMap=this.normalMap.toJSON(A).uuid,t.normalMapType=this.normalMapType,t.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(t.displacementMap=this.displacementMap.toJSON(A).uuid,t.displacementScale=this.displacementScale,t.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(t.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(t.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(t.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(t.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(t.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(t.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(t.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(t.combine=this.combine)),this.envMapRotation!==void 0&&(t.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(t.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(t.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(t.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(t.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(t.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(t.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(t.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(t.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(t.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(t.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(t.size=this.size),this.shadowSide!==null&&(t.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(t.sizeAttenuation=this.sizeAttenuation),this.blending!==cr&&(t.blending=this.blending),this.side!==Bt&&(t.side=this.side),this.vertexColors===!0&&(t.vertexColors=!0),this.opacity<1&&(t.opacity=this.opacity),this.transparent===!0&&(t.transparent=!0),this.blendSrc!==qd&&(t.blendSrc=this.blendSrc),this.blendDst!==Nd&&(t.blendDst=this.blendDst),this.blendEquation!==ts&&(t.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(t.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(t.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(t.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(t.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(t.blendAlpha=this.blendAlpha),this.depthFunc!==$c&&(t.depthFunc=this.depthFunc),this.depthTest===!1&&(t.depthTest=this.depthTest),this.depthWrite===!1&&(t.depthWrite=this.depthWrite),this.colorWrite===!1&&(t.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(t.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Qy&&(t.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(t.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(t.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==so&&(t.stencilFail=this.stencilFail),this.stencilZFail!==so&&(t.stencilZFail=this.stencilZFail),this.stencilZPass!==so&&(t.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(t.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(t.rotation=this.rotation),this.polygonOffset===!0&&(t.polygonOffset=!0),this.polygonOffsetFactor!==0&&(t.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(t.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(t.linewidth=this.linewidth),this.dashSize!==void 0&&(t.dashSize=this.dashSize),this.gapSize!==void 0&&(t.gapSize=this.gapSize),this.scale!==void 0&&(t.scale=this.scale),this.dithering===!0&&(t.dithering=!0),this.alphaTest>0&&(t.alphaTest=this.alphaTest),this.alphaHash===!0&&(t.alphaHash=!0),this.alphaToCoverage===!0&&(t.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(t.premultipliedAlpha=!0),this.forceSinglePass===!0&&(t.forceSinglePass=!0),this.wireframe===!0&&(t.wireframe=!0),this.wireframeLinewidth>1&&(t.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(t.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(t.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(t.flatShading=!0),this.visible===!1&&(t.visible=!1),this.toneMapped===!1&&(t.toneMapped=!1),this.fog===!1&&(t.fog=!1),Object.keys(this.userData).length>0&&(t.userData=this.userData);function i(r){const s=[];for(const o in r){const a=r[o];delete a.metadata,s.push(a)}return s}if(e){const r=i(A.textures),s=i(A.images);r.length>0&&(t.textures=r),s.length>0&&(t.images=s)}return t}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.blendColor.copy(A.blendColor),this.blendAlpha=A.blendAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const e=A.clippingPlanes;let t=null;if(e!==null){const i=e.length;t=new Array(i);for(let r=0;r!==i;++r)t[r]=e[r].clone()}return this.clippingPlanes=t,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}}class ti extends an{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new KA(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new on,this.combine=ly,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}const jn=MM();function MM(){const n=new ArrayBuffer(4),A=new Float32Array(n),e=new Uint32Array(n),t=new Uint32Array(512),i=new Uint32Array(512);for(let a=0;a<256;++a){const l=a-127;l<-27?(t[a]=0,t[a|256]=32768,i[a]=24,i[a|256]=24):l<-14?(t[a]=1024>>-l-14,t[a|256]=1024>>-l-14|32768,i[a]=-l-1,i[a|256]=-l-1):l<=15?(t[a]=l+15<<10,t[a|256]=l+15<<10|32768,i[a]=13,i[a|256]=13):l<128?(t[a]=31744,t[a|256]=64512,i[a]=24,i[a|256]=24):(t[a]=31744,t[a|256]=64512,i[a]=13,i[a|256]=13)}const r=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let a=1;a<1024;++a){let l=a<<13,u=0;for(;!(l&8388608);)l<<=1,u-=8388608;l&=-8388609,u+=947912704,r[a]=l|u}for(let a=1024;a<2048;++a)r[a]=939524096+(a-1024<<13);for(let a=1;a<31;++a)s[a]=a<<23;s[31]=1199570944,s[32]=2147483648;for(let a=33;a<63;++a)s[a]=2147483648+(a-32<<23);s[63]=3347054592;for(let a=1;a<64;++a)a!==32&&(o[a]=1024);return{floatView:A,uint32View:e,baseTable:t,shiftTable:i,mantissaTable:r,exponentTable:s,offsetTable:o}}function PM(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=Qe(n,-65504,65504),jn.floatView[0]=n;const A=jn.uint32View[0],e=A>>23&511;return jn.baseTable[e]+((A&8388607)>>jn.shiftTable[e])}function TM(n){const A=n>>10;return jn.uint32View[0]=jn.mantissaTable[jn.offsetTable[A]+(n&1023)]+jn.exponentTable[A],jn.floatView[0]}const ii={toHalfFloat:PM,fromHalfFloat:TM},tt=new O,vh=new uA;class ce{constructor(A,e,t=!1){if(Array.isArray(A))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=A,this.itemSize=e,this.count=A!==void 0?A.length/e:0,this.normalized=t,this.usage=Vd,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=Me,this.version=0}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return iw("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,e){this.updateRanges.push({start:A,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.name=A.name,this.array=new A.array.constructor(A.array),this.itemSize=A.itemSize,this.count=A.count,this.normalized=A.normalized,this.usage=A.usage,this.gpuType=A.gpuType,this}copyAt(A,e,t){A*=this.itemSize,t*=e.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[A+i]=e.array[t+i];return this}copyArray(A){return this.array.set(A),this}applyMatrix3(A){if(this.itemSize===2)for(let e=0,t=this.count;e<t;e++)vh.fromBufferAttribute(this,e),vh.applyMatrix3(A),this.setXY(e,vh.x,vh.y);else if(this.itemSize===3)for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyMatrix3(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}applyMatrix4(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyMatrix4(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}applyNormalMatrix(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyNormalMatrix(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}transformDirection(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.transformDirection(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}set(A,e=0){return this.array.set(A,e),this}getComponent(A,e){let t=this.array[A*this.itemSize+e];return this.normalized&&(t=ji(t,this.array)),t}setComponent(A,e,t){return this.normalized&&(t=Pe(t,this.array)),this.array[A*this.itemSize+e]=t,this}getX(A){let e=this.array[A*this.itemSize];return this.normalized&&(e=ji(e,this.array)),e}setX(A,e){return this.normalized&&(e=Pe(e,this.array)),this.array[A*this.itemSize]=e,this}getY(A){let e=this.array[A*this.itemSize+1];return this.normalized&&(e=ji(e,this.array)),e}setY(A,e){return this.normalized&&(e=Pe(e,this.array)),this.array[A*this.itemSize+1]=e,this}getZ(A){let e=this.array[A*this.itemSize+2];return this.normalized&&(e=ji(e,this.array)),e}setZ(A,e){return this.normalized&&(e=Pe(e,this.array)),this.array[A*this.itemSize+2]=e,this}getW(A){let e=this.array[A*this.itemSize+3];return this.normalized&&(e=ji(e,this.array)),e}setW(A,e){return this.normalized&&(e=Pe(e,this.array)),this.array[A*this.itemSize+3]=e,this}setXY(A,e,t){return A*=this.itemSize,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array)),this.array[A+0]=e,this.array[A+1]=t,this}setXYZ(A,e,t,i){return A*=this.itemSize,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array),i=Pe(i,this.array)),this.array[A+0]=e,this.array[A+1]=t,this.array[A+2]=i,this}setXYZW(A,e,t,i,r){return A*=this.itemSize,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array),i=Pe(i,this.array),r=Pe(r,this.array)),this.array[A+0]=e,this.array[A+1]=t,this.array[A+2]=i,this.array[A+3]=r,this}onUpload(A){return this.onUploadCallback=A,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const A={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(A.name=this.name),this.usage!==Vd&&(A.usage=this.usage),A}}class gw extends ce{constructor(A,e,t){super(new Uint16Array(A),e,t)}}class mw extends ce{constructor(A,e,t){super(new Uint32Array(A),e,t)}}class Dt extends ce{constructor(A,e,t){super(new Float32Array(A),e,t)}}let DM=0;const yi=new zA,gp=new Ie,Co=new O,ni=new ye,vl=new ye,pt=new O;class qe extends ns{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:DM++}),this.uuid=mi(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(A){return Array.isArray(A)?this.index=new(ew(A)?mw:gw)(A,1):this.index=A,this}getAttribute(A){return this.attributes[A]}setAttribute(A,e){return this.attributes[A]=e,this}deleteAttribute(A){return delete this.attributes[A],this}hasAttribute(A){return this.attributes[A]!==void 0}addGroup(A,e,t=0){this.groups.push({start:A,count:e,materialIndex:t})}clearGroups(){this.groups=[]}setDrawRange(A,e){this.drawRange.start=A,this.drawRange.count=e}applyMatrix4(A){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(A),e.needsUpdate=!0);const t=this.attributes.normal;if(t!==void 0){const r=new le().getNormalMatrix(A);t.applyNormalMatrix(r),t.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(A),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(A){return yi.makeRotationFromQuaternion(A),this.applyMatrix4(yi),this}rotateX(A){return yi.makeRotationX(A),this.applyMatrix4(yi),this}rotateY(A){return yi.makeRotationY(A),this.applyMatrix4(yi),this}rotateZ(A){return yi.makeRotationZ(A),this.applyMatrix4(yi),this}translate(A,e,t){return yi.makeTranslation(A,e,t),this.applyMatrix4(yi),this}scale(A,e,t){return yi.makeScale(A,e,t),this.applyMatrix4(yi),this}lookAt(A){return gp.lookAt(A),gp.updateMatrix(),this.applyMatrix4(gp.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Co).negate(),this.translate(Co.x,Co.y,Co.z),this}setFromPoints(A){const e=[];for(let t=0,i=A.length;t<i;t++){const r=A[t];e.push(r.x,r.y,r.z||0)}return this.setAttribute("position",new Dt(e,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ye);const A=this.attributes.position,e=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new O(-1/0,-1/0,-1/0),new O(1/0,1/0,1/0));return}if(A!==void 0){if(this.boundingBox.setFromBufferAttribute(A),e)for(let t=0,i=e.length;t<i;t++){const r=e[t];ni.setFromBufferAttribute(r),this.morphTargetsRelative?(pt.addVectors(this.boundingBox.min,ni.min),this.boundingBox.expandByPoint(pt),pt.addVectors(this.boundingBox.max,ni.max),this.boundingBox.expandByPoint(pt)):(this.boundingBox.expandByPoint(ni.min),this.boundingBox.expandByPoint(ni.max))}}else this.boundingBox.makeEmpty();(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.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ai);const A=this.attributes.position,e=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new O,1/0);return}if(A){const t=this.boundingSphere.center;if(ni.setFromBufferAttribute(A),e)for(let r=0,s=e.length;r<s;r++){const o=e[r];vl.setFromBufferAttribute(o),this.morphTargetsRelative?(pt.addVectors(ni.min,vl.min),ni.expandByPoint(pt),pt.addVectors(ni.max,vl.max),ni.expandByPoint(pt)):(ni.expandByPoint(vl.min),ni.expandByPoint(vl.max))}ni.getCenter(t);let i=0;for(let r=0,s=A.count;r<s;r++)pt.fromBufferAttribute(A,r),i=Math.max(i,t.distanceToSquared(pt));if(e)for(let r=0,s=e.length;r<s;r++){const o=e[r],a=this.morphTargetsRelative;for(let l=0,u=o.count;l<u;l++)pt.fromBufferAttribute(o,l),a&&(Co.fromBufferAttribute(A,l),pt.add(Co)),i=Math.max(i,t.distanceToSquared(pt))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const A=this.index,e=this.attributes;if(A===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const t=e.position,i=e.normal,r=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new ce(new Float32Array(4*t.count),4));const s=this.getAttribute("tangent"),o=[],a=[];for(let S=0;S<t.count;S++)o[S]=new O,a[S]=new O;const l=new O,u=new O,c=new O,h=new uA,f=new uA,p=new uA,m=new O,d=new O;function g(S,b,I){l.fromBufferAttribute(t,S),u.fromBufferAttribute(t,b),c.fromBufferAttribute(t,I),h.fromBufferAttribute(r,S),f.fromBufferAttribute(r,b),p.fromBufferAttribute(r,I),u.sub(l),c.sub(l),f.sub(h),p.sub(h);const D=1/(f.x*p.y-p.x*f.y);isFinite(D)&&(m.copy(u).multiplyScalar(p.y).addScaledVector(c,-f.y).multiplyScalar(D),d.copy(c).multiplyScalar(f.x).addScaledVector(u,-p.x).multiplyScalar(D),o[S].add(m),o[b].add(m),o[I].add(m),a[S].add(d),a[b].add(d),a[I].add(d))}let y=this.groups;y.length===0&&(y=[{start:0,count:A.count}]);for(let S=0,b=y.length;S<b;++S){const I=y[S],D=I.start,P=I.count;for(let M=D,T=D+P;M<T;M+=3)g(A.getX(M+0),A.getX(M+1),A.getX(M+2))}const v=new O,w=new O,C=new O,_=new O;function x(S){C.fromBufferAttribute(i,S),_.copy(C);const b=o[S];v.copy(b),v.sub(C.multiplyScalar(C.dot(b))).normalize(),w.crossVectors(_,b);const D=w.dot(a[S])<0?-1:1;s.setXYZW(S,v.x,v.y,v.z,D)}for(let S=0,b=y.length;S<b;++S){const I=y[S],D=I.start,P=I.count;for(let M=D,T=D+P;M<T;M+=3)x(A.getX(M+0)),x(A.getX(M+1)),x(A.getX(M+2))}}computeVertexNormals(){const A=this.index,e=this.getAttribute("position");if(e!==void 0){let t=this.getAttribute("normal");if(t===void 0)t=new ce(new Float32Array(e.count*3),3),this.setAttribute("normal",t);else for(let h=0,f=t.count;h<f;h++)t.setXYZ(h,0,0,0);const i=new O,r=new O,s=new O,o=new O,a=new O,l=new O,u=new O,c=new O;if(A)for(let h=0,f=A.count;h<f;h+=3){const p=A.getX(h+0),m=A.getX(h+1),d=A.getX(h+2);i.fromBufferAttribute(e,p),r.fromBufferAttribute(e,m),s.fromBufferAttribute(e,d),u.subVectors(s,r),c.subVectors(i,r),u.cross(c),o.fromBufferAttribute(t,p),a.fromBufferAttribute(t,m),l.fromBufferAttribute(t,d),o.add(u),a.add(u),l.add(u),t.setXYZ(p,o.x,o.y,o.z),t.setXYZ(m,a.x,a.y,a.z),t.setXYZ(d,l.x,l.y,l.z)}else for(let h=0,f=e.count;h<f;h+=3)i.fromBufferAttribute(e,h+0),r.fromBufferAttribute(e,h+1),s.fromBufferAttribute(e,h+2),u.subVectors(s,r),c.subVectors(i,r),u.cross(c),t.setXYZ(h+0,u.x,u.y,u.z),t.setXYZ(h+1,u.x,u.y,u.z),t.setXYZ(h+2,u.x,u.y,u.z);this.normalizeNormals(),t.needsUpdate=!0}}normalizeNormals(){const A=this.attributes.normal;for(let e=0,t=A.count;e<t;e++)pt.fromBufferAttribute(A,e),pt.normalize(),A.setXYZ(e,pt.x,pt.y,pt.z)}toNonIndexed(){function A(o,a){const l=o.array,u=o.itemSize,c=o.normalized,h=new l.constructor(a.length*u);let f=0,p=0;for(let m=0,d=a.length;m<d;m++){o.isInterleavedBufferAttribute?f=a[m]*o.data.stride+o.offset:f=a[m]*u;for(let g=0;g<u;g++)h[p++]=l[f++]}return new ce(h,u,c)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new qe,t=this.index.array,i=this.attributes;for(const o in i){const a=i[o],l=A(a,t);e.setAttribute(o,l)}const r=this.morphAttributes;for(const o in r){const a=[],l=r[o];for(let u=0,c=l.length;u<c;u++){const h=l[u],f=A(h,t);a.push(f)}e.morphAttributes[o]=a}e.morphTargetsRelative=this.morphTargetsRelative;const s=this.groups;for(let o=0,a=s.length;o<a;o++){const l=s[o];e.addGroup(l.start,l.count,l.materialIndex)}return e}toJSON(){const A={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(A.uuid=this.uuid,A.type=this.type,this.name!==""&&(A.name=this.name),Object.keys(this.userData).length>0&&(A.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const l in a)a[l]!==void 0&&(A[l]=a[l]);return A}A.data={attributes:{}};const e=this.index;e!==null&&(A.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const t=this.attributes;for(const a in t){const l=t[a];A.data.attributes[a]=l.toJSON(A.data)}const i={};let r=!1;for(const a in this.morphAttributes){const l=this.morphAttributes[a],u=[];for(let c=0,h=l.length;c<h;c++){const f=l[c];u.push(f.toJSON(A.data))}u.length>0&&(i[a]=u,r=!0)}r&&(A.data.morphAttributes=i,A.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(A.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(A.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=A.name;const t=A.index;t!==null&&this.setIndex(t.clone(e));const i=A.attributes;for(const l in i){const u=i[l];this.setAttribute(l,u.clone(e))}const r=A.morphAttributes;for(const l in r){const u=[],c=r[l];for(let h=0,f=c.length;h<f;h++)u.push(c[h].clone(e));this.morphAttributes[l]=u}this.morphTargetsRelative=A.morphTargetsRelative;const s=A.groups;for(let l=0,u=s.length;l<u;l++){const c=s[l];this.addGroup(c.start,c.count,c.materialIndex)}const o=A.boundingBox;o!==null&&(this.boundingBox=o.clone());const a=A.boundingSphere;return a!==null&&(this.boundingSphere=a.clone()),this.drawRange.start=A.drawRange.start,this.drawRange.count=A.drawRange.count,this.userData=A.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const vw=new zA,as=new os,yh=new Ai,yw=new O,xo=new O,Io=new O,bo=new O,mp=new O,wh=new O,Ch=new uA,xh=new uA,Ih=new uA,ww=new O,Cw=new O,xw=new O,bh=new O,_h=new O;let Te=class extends Ie{constructor(A=new qe,e=new ti){super(),this.isMesh=!0,this.type="Mesh",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),A.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=A.morphTargetInfluences.slice()),A.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},A.morphTargetDictionary)),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}getVertexPosition(A,e){const t=this.geometry,i=t.attributes.position,r=t.morphAttributes.position,s=t.morphTargetsRelative;e.fromBufferAttribute(i,A);const o=this.morphTargetInfluences;if(r&&o){wh.set(0,0,0);for(let a=0,l=r.length;a<l;a++){const u=o[a],c=r[a];u!==0&&(mp.fromBufferAttribute(c,A),s?wh.addScaledVector(mp,u):wh.addScaledVector(mp.sub(e),u))}e.add(wh)}return e}raycast(A,e){const t=this.geometry,i=this.material,r=this.matrixWorld;i!==void 0&&(t.boundingSphere===null&&t.computeBoundingSphere(),yh.copy(t.boundingSphere),yh.applyMatrix4(r),as.copy(A.ray).recast(A.near),!(yh.containsPoint(as.origin)===!1&&(as.intersectSphere(yh,yw)===null||as.origin.distanceToSquared(yw)>(A.far-A.near)**2))&&(vw.copy(r).invert(),as.copy(A.ray).applyMatrix4(vw),!(t.boundingBox!==null&&as.intersectsBox(t.boundingBox)===!1)&&this._computeIntersections(A,e,as)))}_computeIntersections(A,e,t){let i;const r=this.geometry,s=this.material,o=r.index,a=r.attributes.position,l=r.attributes.uv,u=r.attributes.uv1,c=r.attributes.normal,h=r.groups,f=r.drawRange;if(o!==null)if(Array.isArray(s))for(let p=0,m=h.length;p<m;p++){const d=h[p],g=s[d.materialIndex],y=Math.max(d.start,f.start),v=Math.min(o.count,Math.min(d.start+d.count,f.start+f.count));for(let w=y,C=v;w<C;w+=3){const _=o.getX(w),x=o.getX(w+1),S=o.getX(w+2);i=Sh(this,g,A,t,l,u,c,_,x,S),i&&(i.faceIndex=Math.floor(w/3),i.face.materialIndex=d.materialIndex,e.push(i))}}else{const p=Math.max(0,f.start),m=Math.min(o.count,f.start+f.count);for(let d=p,g=m;d<g;d+=3){const y=o.getX(d),v=o.getX(d+1),w=o.getX(d+2);i=Sh(this,s,A,t,l,u,c,y,v,w),i&&(i.faceIndex=Math.floor(d/3),e.push(i))}}else if(a!==void 0)if(Array.isArray(s))for(let p=0,m=h.length;p<m;p++){const d=h[p],g=s[d.materialIndex],y=Math.max(d.start,f.start),v=Math.min(a.count,Math.min(d.start+d.count,f.start+f.count));for(let w=y,C=v;w<C;w+=3){const _=w,x=w+1,S=w+2;i=Sh(this,g,A,t,l,u,c,_,x,S),i&&(i.faceIndex=Math.floor(w/3),i.face.materialIndex=d.materialIndex,e.push(i))}}else{const p=Math.max(0,f.start),m=Math.min(a.count,f.start+f.count);for(let d=p,g=m;d<g;d+=3){const y=d,v=d+1,w=d+2;i=Sh(this,s,A,t,l,u,c,y,v,w),i&&(i.faceIndex=Math.floor(d/3),e.push(i))}}}};function EM(n,A,e,t,i,r,s,o){let a;if(A.side===dt?a=t.intersectTriangle(s,r,i,!0,o):a=t.intersectTriangle(i,r,s,A.side===Bt,o),a===null)return null;_h.copy(o),_h.applyMatrix4(n.matrixWorld);const l=e.ray.origin.distanceTo(_h);return l<e.near||l>e.far?null:{distance:l,point:_h.clone(),object:n}}function Sh(n,A,e,t,i,r,s,o,a,l){n.getVertexPosition(o,xo),n.getVertexPosition(a,Io),n.getVertexPosition(l,bo);const u=EM(n,A,e,t,xo,Io,bo,bh);if(u){i&&(Ch.fromBufferAttribute(i,o),xh.fromBufferAttribute(i,a),Ih.fromBufferAttribute(i,l),u.uv=Ue.getInterpolation(bh,xo,Io,bo,Ch,xh,Ih,new uA)),r&&(Ch.fromBufferAttribute(r,o),xh.fromBufferAttribute(r,a),Ih.fromBufferAttribute(r,l),u.uv1=Ue.getInterpolation(bh,xo,Io,bo,Ch,xh,Ih,new uA)),s&&(ww.fromBufferAttribute(s,o),Cw.fromBufferAttribute(s,a),xw.fromBufferAttribute(s,l),u.normal=Ue.getInterpolation(bh,xo,Io,bo,ww,Cw,xw,new O),u.normal.dot(t.direction)>0&&u.normal.multiplyScalar(-1));const c={a:o,b:a,c:l,normal:new O,materialIndex:0};Ue.getNormal(xo,Io,bo,c.normal),u.face=c}return u}class ls extends qe{constructor(A=1,e=1,t=1,i=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:e,depth:t,widthSegments:i,heightSegments:r,depthSegments:s};const o=this;i=Math.floor(i),r=Math.floor(r),s=Math.floor(s);const a=[],l=[],u=[],c=[];let h=0,f=0;p("z","y","x",-1,-1,t,e,A,s,r,0),p("z","y","x",1,-1,t,e,-A,s,r,1),p("x","z","y",1,1,A,t,e,i,s,2),p("x","z","y",1,-1,A,t,-e,i,s,3),p("x","y","z",1,-1,A,e,t,i,r,4),p("x","y","z",-1,-1,A,e,-t,i,r,5),this.setIndex(a),this.setAttribute("position",new Dt(l,3)),this.setAttribute("normal",new Dt(u,3)),this.setAttribute("uv",new Dt(c,2));function p(m,d,g,y,v,w,C,_,x,S,b){const I=w/x,D=C/S,P=w/2,M=C/2,T=_/2,q=x+1,B=S+1;let W=0,K=0;const U=new O;for(let k=0;k<B;k++){const N=k*D-M;for(let Y=0;Y<q;Y++){const X=Y*I-P;U[m]=X*y,U[d]=N*v,U[g]=T,l.push(U.x,U.y,U.z),U[m]=0,U[d]=0,U[g]=_>0?1:-1,u.push(U.x,U.y,U.z),c.push(Y/x),c.push(1-k/S),W+=1}}for(let k=0;k<S;k++)for(let N=0;N<x;N++){const Y=h+N+q*k,X=h+N+q*(k+1),j=h+(N+1)+q*(k+1),G=h+(N+1)+q*k;a.push(Y,X,G),a.push(X,j,G),K+=6}o.addGroup(f,K,b),f+=K,h+=W}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new ls(A.width,A.height,A.depth,A.widthSegments,A.heightSegments,A.depthSegments)}}function _o(n){const A={};for(const e in n){A[e]={};for(const t in n[e]){const i=n[e][t];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),A[e][t]=null):A[e][t]=i.clone():Array.isArray(i)?A[e][t]=i.slice():A[e][t]=i}}return A}function Rt(n){const A={};for(let e=0;e<n.length;e++){const t=_o(n[e]);for(const i in t)A[i]=t[i]}return A}function LM(n){const A=[];for(let e=0;e<n.length;e++)A.push(n[e].clone());return A}function Iw(n){const A=n.getRenderTarget();return A===null?n.outputColorSpace:A.isXRRenderTarget===!0?A.texture.colorSpace:Se.workingColorSpace}const yl={clone:_o,merge:Rt};var OM=`void main() {
5
+ */const Qc="164",Qs={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},Vs={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},$S=0,ry=1,A3=2,sy=1,e3=2,En=3,Bt=0,dt=1,ot=2,Mt=0,cr=1,Vc=2,oy=3,ay=4,t3=5,ts=100,i3=101,n3=102,r3=103,s3=104,o3=200,a3=201,l3=202,c3=203,qd=204,Nd=205,h3=206,u3=207,f3=208,d3=209,p3=210,g3=211,m3=212,v3=213,y3=214,w3=0,C3=1,x3=2,$c=3,I3=4,b3=5,_3=6,S3=7,ly=0,M3=1,P3=2,Ln=0,cy=1,hy=2,uy=3,Bd=4,T3=5,fy=6,dy=7,py="attached",D3="detached",gy=300,$s=301,Ao=302,eo=303,zd=304,Ah=306,zt=1e3,et=1001,ol=1002,fe=1003,Rd=1004,to=1005,we=1006,al=1007,zi=1008,E3=1008,Ri=1009,kd=1010,my=1011,jd=1012,ll=1013,ki=1014,Me=1015,Oe=1016,vy=1017,yy=1018,cl=1020,L3=35902,O3=1021,q3=1022,_e=1023,N3=1024,B3=1025,io=1026,hl=1027,no=1028,Kd=1029,Fd=1030,eh=1031,ul=1033,Gd=33776,Hd=33777,Yd=33778,Ud=33779,wy=35840,Cy=35841,xy=35842,Iy=35843,by=36196,_y=37492,Sy=37496,My=37808,Py=37809,Ty=37810,Dy=37811,Ey=37812,Ly=37813,Oy=37814,qy=37815,Ny=37816,By=37817,zy=37818,Ry=37819,ky=37820,jy=37821,Wd=36492,Ky=36494,Fy=36495,z3=36283,Gy=36284,Hy=36285,Yy=36286,ro=2300,is=2301,Jd=2302,Uy=2400,Wy=2401,Jy=2402,R3=2500,k3=0,Zy=1,Zd=2,j3=3200,Xd=3201,Xy=0,K3=1,On="",je="srgb",at="srgb-linear",Qd="display-p3",th="display-p3-linear",ih="linear",Le="srgb",nh="rec709",rh="p3",so=7680,Qy=519,F3=512,G3=513,H3=514,Vy=515,Y3=516,U3=517,W3=518,J3=519,Vd=35044,$y="300 es",qn=2e3,sh=2001;class ns{addEventListener(A,e){this._listeners===void 0&&(this._listeners={});const t=this._listeners;t[A]===void 0&&(t[A]=[]),t[A].indexOf(e)===-1&&t[A].push(e)}hasEventListener(A,e){if(this._listeners===void 0)return!1;const t=this._listeners;return t[A]!==void 0&&t[A].indexOf(e)!==-1}removeEventListener(A,e){if(this._listeners===void 0)return;const i=this._listeners[A];if(i!==void 0){const r=i.indexOf(e);r!==-1&&i.splice(r,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const t=this._listeners[A.type];if(t!==void 0){A.target=this;const i=t.slice(0);for(let r=0,s=i.length;r<s;r++)i[r].call(this,A);A.target=null}}}const Pt=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Aw=1234567;const oo=Math.PI/180,ao=180/Math.PI;function mi(){const n=Math.random()*4294967295|0,A=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0;return(Pt[n&255]+Pt[n>>8&255]+Pt[n>>16&255]+Pt[n>>24&255]+"-"+Pt[A&255]+Pt[A>>8&255]+"-"+Pt[A>>16&15|64]+Pt[A>>24&255]+"-"+Pt[e&63|128]+Pt[e>>8&255]+"-"+Pt[e>>16&255]+Pt[e>>24&255]+Pt[t&255]+Pt[t>>8&255]+Pt[t>>16&255]+Pt[t>>24&255]).toLowerCase()}function Qe(n,A,e){return Math.max(A,Math.min(e,n))}function $d(n,A){return(n%A+A)%A}function Z3(n,A,e,t,i){return t+(n-A)*(i-t)/(e-A)}function X3(n,A,e){return n!==A?(e-n)/(A-n):0}function fl(n,A,e){return(1-e)*n+e*A}function Q3(n,A,e,t){return fl(n,A,1-Math.exp(-e*t))}function V3(n,A=1){return A-Math.abs($d(n,A*2)-A)}function $3(n,A,e){return n<=A?0:n>=e?1:(n=(n-A)/(e-A),n*n*(3-2*n))}function AM(n,A,e){return n<=A?0:n>=e?1:(n=(n-A)/(e-A),n*n*n*(n*(n*6-15)+10))}function eM(n,A){return n+Math.floor(Math.random()*(A-n+1))}function tM(n,A){return n+Math.random()*(A-n)}function iM(n){return n*(.5-Math.random())}function nM(n){n!==void 0&&(Aw=n);let A=Aw+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function rM(n){return n*oo}function sM(n){return n*ao}function oM(n){return(n&n-1)===0&&n!==0}function aM(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function lM(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function cM(n,A,e,t,i){const r=Math.cos,s=Math.sin,o=r(e/2),a=s(e/2),l=r((A+t)/2),u=s((A+t)/2),c=r((A-t)/2),h=s((A-t)/2),f=r((t-A)/2),p=s((t-A)/2);switch(i){case"XYX":n.set(o*u,a*c,a*h,o*l);break;case"YZY":n.set(a*h,o*u,a*c,o*l);break;case"ZXZ":n.set(a*c,a*h,o*u,o*l);break;case"XZX":n.set(o*u,a*p,a*f,o*l);break;case"YXY":n.set(a*f,o*u,a*p,o*l);break;case"ZYZ":n.set(a*p,a*f,o*u,o*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ji(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function Te(n,A){switch(A.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}const lo={DEG2RAD:oo,RAD2DEG:ao,generateUUID:mi,clamp:Qe,euclideanModulo:$d,mapLinear:Z3,inverseLerp:X3,lerp:fl,damp:Q3,pingpong:V3,smoothstep:$3,smootherstep:AM,randInt:eM,randFloat:tM,randFloatSpread:iM,seededRandom:nM,degToRad:rM,radToDeg:sM,isPowerOfTwo:oM,ceilPowerOfTwo:aM,floorPowerOfTwo:lM,setQuaternionFromProperEuler:cM,normalize:Te,denormalize:ji};class uA{constructor(A=0,e=0){uA.prototype.isVector2=!0,this.x=A,this.y=e}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,e){return this.x=A,this.y=e,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const e=this.x,t=this.y,i=A.elements;return this.x=i[0]*e+i[3]*t+i[6],this.y=i[1]*e+i[4]*t+i[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const e=Math.sqrt(this.lengthSq()*A.lengthSq());if(e===0)return Math.PI/2;const t=this.dot(A)/e;return Math.acos(Qe(t,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y;return e*e+t*t}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this}rotateAround(A,e){const t=Math.cos(e),i=Math.sin(e),r=this.x-A.x,s=this.y-A.y;return this.x=r*t-s*i+A.x,this.y=r*i+s*t+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class le{constructor(A,e,t,i,r,s,o,a,l){le.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,e,t,i,r,s,o,a,l)}set(A,e,t,i,r,s,o,a,l){const u=this.elements;return u[0]=A,u[1]=i,u[2]=o,u[3]=e,u[4]=r,u[5]=a,u[6]=t,u[7]=s,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const e=this.elements,t=A.elements;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],this}extractBasis(A,e,t){return A.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),t.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const e=A.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,r=this.elements,s=t[0],o=t[3],a=t[6],l=t[1],u=t[4],c=t[7],h=t[2],f=t[5],p=t[8],m=i[0],d=i[3],g=i[6],y=i[1],v=i[4],w=i[7],C=i[2],_=i[5],x=i[8];return r[0]=s*m+o*y+a*C,r[3]=s*d+o*v+a*_,r[6]=s*g+o*w+a*x,r[1]=l*m+u*y+c*C,r[4]=l*d+u*v+c*_,r[7]=l*g+u*w+c*x,r[2]=h*m+f*y+p*C,r[5]=h*d+f*v+p*_,r[8]=h*g+f*w+p*x,this}multiplyScalar(A){const e=this.elements;return e[0]*=A,e[3]*=A,e[6]*=A,e[1]*=A,e[4]*=A,e[7]*=A,e[2]*=A,e[5]*=A,e[8]*=A,this}determinant(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8];return e*s*u-e*o*l-t*r*u+t*o*a+i*r*l-i*s*a}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8],c=u*s-o*l,h=o*a-u*r,f=l*r-s*a,p=e*c+t*h+i*f;if(p===0)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return A[0]=c*m,A[1]=(i*l-u*t)*m,A[2]=(o*t-i*s)*m,A[3]=h*m,A[4]=(u*e-i*a)*m,A[5]=(i*r-o*e)*m,A[6]=f*m,A[7]=(t*a-l*e)*m,A[8]=(s*e-t*r)*m,this}transpose(){let A;const e=this.elements;return A=e[1],e[1]=e[3],e[3]=A,A=e[2],e[2]=e[6],e[6]=A,A=e[5],e[5]=e[7],e[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const e=this.elements;return A[0]=e[0],A[1]=e[3],A[2]=e[6],A[3]=e[1],A[4]=e[4],A[5]=e[7],A[6]=e[2],A[7]=e[5],A[8]=e[8],this}setUvTransform(A,e,t,i,r,s,o){const a=Math.cos(r),l=Math.sin(r);return this.set(t*a,t*l,-t*(a*s+l*o)+s+A,-i*l,i*a,-i*(-l*s+a*o)+o+e,0,0,1),this}scale(A,e){return this.premultiply(Ap.makeScale(A,e)),this}rotate(A){return this.premultiply(Ap.makeRotation(-A)),this}translate(A,e){return this.premultiply(Ap.makeTranslation(A,e)),this}makeTranslation(A,e){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,e,0,0,1),this}makeRotation(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,t,e,0,0,0,1),this}makeScale(A,e){return this.set(A,0,0,0,e,0,0,0,1),this}equals(A){const e=this.elements,t=A.elements;for(let i=0;i<9;i++)if(e[i]!==t[i])return!1;return!0}fromArray(A,e=0){for(let t=0;t<9;t++)this.elements[t]=A[t+e];return this}toArray(A=[],e=0){const t=this.elements;return A[e]=t[0],A[e+1]=t[1],A[e+2]=t[2],A[e+3]=t[3],A[e+4]=t[4],A[e+5]=t[5],A[e+6]=t[6],A[e+7]=t[7],A[e+8]=t[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const Ap=new le;function ew(n){for(let A=n.length-1;A>=0;--A)if(n[A]>=65535)return!0;return!1}function dl(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function hM(){const n=dl("canvas");return n.style.display="block",n}const tw={};function iw(n){n in tw||(tw[n]=!0,console.warn(n))}const nw=new le().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),rw=new le().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),oh={[at]:{transfer:ih,primaries:nh,toReference:n=>n,fromReference:n=>n},[je]:{transfer:Le,primaries:nh,toReference:n=>n.convertSRGBToLinear(),fromReference:n=>n.convertLinearToSRGB()},[th]:{transfer:ih,primaries:rh,toReference:n=>n.applyMatrix3(rw),fromReference:n=>n.applyMatrix3(nw)},[Qd]:{transfer:Le,primaries:rh,toReference:n=>n.convertSRGBToLinear().applyMatrix3(rw),fromReference:n=>n.applyMatrix3(nw).convertLinearToSRGB()}},uM=new Set([at,th]),Se={enabled:!0,_workingColorSpace:at,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(n){if(!uM.has(n))throw new Error(`Unsupported working color space, "${n}".`);this._workingColorSpace=n},convert:function(n,A,e){if(this.enabled===!1||A===e||!A||!e)return n;const t=oh[A].toReference,i=oh[e].fromReference;return i(t(n))},fromWorkingColorSpace:function(n,A){return this.convert(n,this._workingColorSpace,A)},toWorkingColorSpace:function(n,A){return this.convert(n,A,this._workingColorSpace)},getPrimaries:function(n){return oh[n].primaries},getTransfer:function(n){return n===On?ih:oh[n].transfer}};function co(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function ep(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}let ho;class fM{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let e;if(A instanceof HTMLCanvasElement)e=A;else{ho===void 0&&(ho=dl("canvas")),ho.width=A.width,ho.height=A.height;const t=ho.getContext("2d");A instanceof ImageData?t.putImageData(A,0,0):t.drawImage(A,0,0,A.width,A.height),e=ho}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const e=dl("canvas");e.width=A.width,e.height=A.height;const t=e.getContext("2d");t.drawImage(A,0,0,A.width,A.height);const i=t.getImageData(0,0,A.width,A.height),r=i.data;for(let s=0;s<r.length;s++)r[s]=co(r[s]/255)*255;return t.putImageData(i,0,0),e}else if(A.data){const e=A.data.slice(0);for(let t=0;t<e.length;t++)e instanceof Uint8Array||e instanceof Uint8ClampedArray?e[t]=Math.floor(co(e[t]/255)*255):e[t]=co(e[t]);return{data:e,width:A.width,height:A.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),A}}let dM=0;class ah{constructor(A=null){this.isSource=!0,Object.defineProperty(this,"id",{value:dM++}),this.uuid=mi(),this.data=A,this.dataReady=!0,this.version=0}set needsUpdate(A){A===!0&&this.version++}toJSON(A){const e=A===void 0||typeof A=="string";if(!e&&A.images[this.uuid]!==void 0)return A.images[this.uuid];const t={uuid:this.uuid,url:""},i=this.data;if(i!==null){let r;if(Array.isArray(i)){r=[];for(let s=0,o=i.length;s<o;s++)i[s].isDataTexture?r.push(tp(i[s].image)):r.push(tp(i[s]))}else r=tp(i);t.url=r}return e||(A.images[this.uuid]=t),t}}function tp(n){return typeof HTMLImageElement<"u"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&n instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&n instanceof ImageBitmap?fM.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let pM=0,lt=class Pd extends ns{constructor(A=Pd.DEFAULT_IMAGE,e=Pd.DEFAULT_MAPPING,t=et,i=et,r=we,s=zi,o=_e,a=Ri,l=Pd.DEFAULT_ANISOTROPY,u=On){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:pM++}),this.uuid=mi(),this.name="",this.source=new ah(A),this.mipmaps=[],this.mapping=e,this.channel=0,this.wrapS=t,this.wrapT=i,this.magFilter=r,this.minFilter=s,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=a,this.offset=new uA(0,0),this.repeat=new uA(1,1),this.center=new uA(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new le,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(A=null){this.source.data=A}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(A){return this.name=A.name,this.source=A.source,this.mipmaps=A.mipmaps.slice(0),this.mapping=A.mapping,this.channel=A.channel,this.wrapS=A.wrapS,this.wrapT=A.wrapT,this.magFilter=A.magFilter,this.minFilter=A.minFilter,this.anisotropy=A.anisotropy,this.format=A.format,this.internalFormat=A.internalFormat,this.type=A.type,this.offset.copy(A.offset),this.repeat.copy(A.repeat),this.center.copy(A.center),this.rotation=A.rotation,this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrix.copy(A.matrix),this.generateMipmaps=A.generateMipmaps,this.premultiplyAlpha=A.premultiplyAlpha,this.flipY=A.flipY,this.unpackAlignment=A.unpackAlignment,this.colorSpace=A.colorSpace,this.userData=JSON.parse(JSON.stringify(A.userData)),this.needsUpdate=!0,this}toJSON(A){const e=A===void 0||typeof A=="string";if(!e&&A.textures[this.uuid]!==void 0)return A.textures[this.uuid];const t={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(A).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(t.userData=this.userData),e||(A.textures[this.uuid]=t),t}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==gy)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case zt:A.x=A.x-Math.floor(A.x);break;case et:A.x=A.x<0?0:1;break;case ol:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case zt:A.y=A.y-Math.floor(A.y);break;case et:A.y=A.y<0?0:1;break;case ol:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(A){A===!0&&this.pmremVersion++}};lt.DEFAULT_IMAGE=null,lt.DEFAULT_MAPPING=gy,lt.DEFAULT_ANISOTROPY=1;class ve{constructor(A=0,e=0,t=0,i=1){ve.prototype.isVector4=!0,this.x=A,this.y=e,this.z=t,this.w=i}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,e,t,i){return this.x=A,this.y=e,this.z=t,this.w=i,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(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 new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this.z=A.z+e.z,this.w=A.w+e.w,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this.z+=A.z*e,this.w+=A.w*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this.z=A.z-e.z,this.w=A.w-e.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const e=this.x,t=this.y,i=this.z,r=this.w,s=A.elements;return this.x=s[0]*e+s[4]*t+s[8]*i+s[12]*r,this.y=s[1]*e+s[5]*t+s[9]*i+s[13]*r,this.z=s[2]*e+s[6]*t+s[10]*i+s[14]*r,this.w=s[3]*e+s[7]*t+s[11]*i+s[15]*r,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const e=Math.sqrt(1-A.w*A.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/e,this.y=A.y/e,this.z=A.z/e),this}setAxisAngleFromRotationMatrix(A){let e,t,i,r;const a=A.elements,l=a[0],u=a[4],c=a[8],h=a[1],f=a[5],p=a[9],m=a[2],d=a[6],g=a[10];if(Math.abs(u-h)<.01&&Math.abs(c-m)<.01&&Math.abs(p-d)<.01){if(Math.abs(u+h)<.1&&Math.abs(c+m)<.1&&Math.abs(p+d)<.1&&Math.abs(l+f+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;const v=(l+1)/2,w=(f+1)/2,C=(g+1)/2,_=(u+h)/4,x=(c+m)/4,S=(p+d)/4;return v>w&&v>C?v<.01?(t=0,i=.707106781,r=.707106781):(t=Math.sqrt(v),i=_/t,r=x/t):w>C?w<.01?(t=.707106781,i=0,r=.707106781):(i=Math.sqrt(w),t=_/i,r=S/i):C<.01?(t=.707106781,i=.707106781,r=0):(r=Math.sqrt(C),t=x/r,i=S/r),this.set(t,i,r,e),this}let y=Math.sqrt((d-p)*(d-p)+(c-m)*(c-m)+(h-u)*(h-u));return Math.abs(y)<.001&&(y=1),this.x=(d-p)/y,this.y=(c-m)/y,this.z=(h-u)/y,this.w=Math.acos((l+f+g-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this.z=Math.max(A.z,Math.min(e.z,this.z)),this.w=Math.max(A.w,Math.min(e.w,this.w)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this.z=Math.max(A,Math.min(e,this.z)),this.w=Math.max(A,Math.min(e,this.w)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return 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}ceil(){return 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}round(){return 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}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this.z+=(A.z-this.z)*e,this.w+=(A.w-this.w)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this.z=A.z+(e.z-A.z)*t,this.w=A.w+(e.w-A.w)*t,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this.z=A[e+2],this.w=A[e+3],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A[e+2]=this.z,A[e+3]=this.w,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this.z=A.getZ(e),this.w=A.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class gM extends ns{constructor(A=1,e=1,t={}){super(),this.isRenderTarget=!0,this.width=A,this.height=e,this.depth=1,this.scissor=new ve(0,0,A,e),this.scissorTest=!1,this.viewport=new ve(0,0,A,e);const i={width:A,height:e,depth:1};t=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:we,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},t);const r=new lt(i,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace);r.flipY=!1,r.generateMipmaps=t.generateMipmaps,r.internalFormat=t.internalFormat,this.textures=[];const s=t.count;for(let o=0;o<s;o++)this.textures[o]=r.clone(),this.textures[o].isRenderTargetTexture=!0;this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.resolveDepthBuffer=t.resolveDepthBuffer,this.resolveStencilBuffer=t.resolveStencilBuffer,this.depthTexture=t.depthTexture,this.samples=t.samples}get texture(){return this.textures[0]}set texture(A){this.textures[0]=A}setSize(A,e,t=1){if(this.width!==A||this.height!==e||this.depth!==t){this.width=A,this.height=e,this.depth=t;for(let i=0,r=this.textures.length;i<r;i++)this.textures[i].image.width=A,this.textures[i].image.height=e,this.textures[i].image.depth=t;this.dispose()}this.viewport.set(0,0,A,e),this.scissor.set(0,0,A,e)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.textures.length=0;for(let t=0,i=A.textures.length;t<i;t++)this.textures[t]=A.textures[t].clone(),this.textures[t].isRenderTargetTexture=!0;const e=Object.assign({},A.texture.image);return this.texture.source=new ah(e),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,this.resolveDepthBuffer=A.resolveDepthBuffer,this.resolveStencilBuffer=A.resolveStencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class Ve extends gM{constructor(A=1,e=1,t={}){super(A,e,t),this.isWebGLRenderTarget=!0}}class lh extends lt{constructor(A=null,e=1,t=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:e,height:t,depth:i},this.magFilter=fe,this.minFilter=fe,this.wrapR=et,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class mM extends Ve{constructor(A=1,e=1,t=1,i={}){super(A,e,i),this.isWebGLArrayRenderTarget=!0,this.depth=t,this.texture=new lh(null,A,e,t),this.texture.isRenderTargetTexture=!0}}class vM extends lt{constructor(A=null,e=1,t=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:A,width:e,height:t,depth:i},this.magFilter=fe,this.minFilter=fe,this.wrapR=et,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class vi{constructor(A=0,e=0,t=0,i=1){this.isQuaternion=!0,this._x=A,this._y=e,this._z=t,this._w=i}static slerpFlat(A,e,t,i,r,s,o){let a=t[i+0],l=t[i+1],u=t[i+2],c=t[i+3];const h=r[s+0],f=r[s+1],p=r[s+2],m=r[s+3];if(o===0){A[e+0]=a,A[e+1]=l,A[e+2]=u,A[e+3]=c;return}if(o===1){A[e+0]=h,A[e+1]=f,A[e+2]=p,A[e+3]=m;return}if(c!==m||a!==h||l!==f||u!==p){let d=1-o;const g=a*h+l*f+u*p+c*m,y=g>=0?1:-1,v=1-g*g;if(v>Number.EPSILON){const C=Math.sqrt(v),_=Math.atan2(C,g*y);d=Math.sin(d*_)/C,o=Math.sin(o*_)/C}const w=o*y;if(a=a*d+h*w,l=l*d+f*w,u=u*d+p*w,c=c*d+m*w,d===1-o){const C=1/Math.sqrt(a*a+l*l+u*u+c*c);a*=C,l*=C,u*=C,c*=C}}A[e]=a,A[e+1]=l,A[e+2]=u,A[e+3]=c}static multiplyQuaternionsFlat(A,e,t,i,r,s){const o=t[i],a=t[i+1],l=t[i+2],u=t[i+3],c=r[s],h=r[s+1],f=r[s+2],p=r[s+3];return A[e]=o*p+u*c+a*f-l*h,A[e+1]=a*p+u*h+l*c-o*f,A[e+2]=l*p+u*f+o*h-a*c,A[e+3]=u*p-o*c-a*h-l*f,A}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(A,e,t,i){return this._x=A,this._y=e,this._z=t,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,e=!0){const t=A._x,i=A._y,r=A._z,s=A._order,o=Math.cos,a=Math.sin,l=o(t/2),u=o(i/2),c=o(r/2),h=a(t/2),f=a(i/2),p=a(r/2);switch(s){case"XYZ":this._x=h*u*c+l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c-h*f*p;break;case"YXZ":this._x=h*u*c+l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c+h*f*p;break;case"ZXY":this._x=h*u*c-l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c-h*f*p;break;case"ZYX":this._x=h*u*c-l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c+h*f*p;break;case"YZX":this._x=h*u*c+l*f*p,this._y=l*f*c+h*u*p,this._z=l*u*p-h*f*c,this._w=l*u*c-h*f*p;break;case"XZY":this._x=h*u*c-l*f*p,this._y=l*f*c-h*u*p,this._z=l*u*p+h*f*c,this._w=l*u*c+h*f*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return e===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,e){const t=e/2,i=Math.sin(t);return this._x=A.x*i,this._y=A.y*i,this._z=A.z*i,this._w=Math.cos(t),this._onChangeCallback(),this}setFromRotationMatrix(A){const e=A.elements,t=e[0],i=e[4],r=e[8],s=e[1],o=e[5],a=e[9],l=e[2],u=e[6],c=e[10],h=t+o+c;if(h>0){const f=.5/Math.sqrt(h+1);this._w=.25/f,this._x=(u-a)*f,this._y=(r-l)*f,this._z=(s-i)*f}else if(t>o&&t>c){const f=2*Math.sqrt(1+t-o-c);this._w=(u-a)/f,this._x=.25*f,this._y=(i+s)/f,this._z=(r+l)/f}else if(o>c){const f=2*Math.sqrt(1+o-t-c);this._w=(r-l)/f,this._x=(i+s)/f,this._y=.25*f,this._z=(a+u)/f}else{const f=2*Math.sqrt(1+c-t-o);this._w=(s-i)/f,this._x=(r+l)/f,this._y=(a+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(A,e){let t=A.dot(e)+1;return t<Number.EPSILON?(t=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=t):(this._x=0,this._y=-A.z,this._z=A.y,this._w=t)):(this._x=A.y*e.z-A.z*e.y,this._y=A.z*e.x-A.x*e.z,this._z=A.x*e.y-A.y*e.x,this._w=t),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(Qe(this.dot(A),-1,1)))}rotateTowards(A,e){const t=this.angleTo(A);if(t===0)return this;const i=Math.min(1,e/t);return this.slerp(A,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,e){const t=A._x,i=A._y,r=A._z,s=A._w,o=e._x,a=e._y,l=e._z,u=e._w;return this._x=t*u+s*o+i*l-r*a,this._y=i*u+s*a+r*o-t*l,this._z=r*u+s*l+t*a-i*o,this._w=s*u-t*o-i*a-r*l,this._onChangeCallback(),this}slerp(A,e){if(e===0)return this;if(e===1)return this.copy(A);const t=this._x,i=this._y,r=this._z,s=this._w;let o=s*A._w+t*A._x+i*A._y+r*A._z;if(o<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,o=-o):this.copy(A),o>=1)return this._w=s,this._x=t,this._y=i,this._z=r,this;const a=1-o*o;if(a<=Number.EPSILON){const f=1-e;return this._w=f*s+e*this._w,this._x=f*t+e*this._x,this._y=f*i+e*this._y,this._z=f*r+e*this._z,this.normalize(),this}const l=Math.sqrt(a),u=Math.atan2(l,o),c=Math.sin((1-e)*u)/l,h=Math.sin(e*u)/l;return this._w=s*c+this._w*h,this._x=t*c+this._x*h,this._y=i*c+this._y*h,this._z=r*c+this._z*h,this._onChangeCallback(),this}slerpQuaternions(A,e,t){return this.copy(A).slerp(e,t)}random(){const A=2*Math.PI*Math.random(),e=2*Math.PI*Math.random(),t=Math.random(),i=Math.sqrt(1-t),r=Math.sqrt(t);return this.set(i*Math.sin(A),i*Math.cos(A),r*Math.sin(e),r*Math.cos(e))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,e=0){return this._x=A[e],this._y=A[e+1],this._z=A[e+2],this._w=A[e+3],this._onChangeCallback(),this}toArray(A=[],e=0){return A[e]=this._x,A[e+1]=this._y,A[e+2]=this._z,A[e+3]=this._w,A}fromBufferAttribute(A,e){return this._x=A.getX(e),this._y=A.getY(e),this._z=A.getZ(e),this._w=A.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class O{constructor(A=0,e=0,t=0){O.prototype.isVector3=!0,this.x=A,this.y=e,this.z=t}set(A,e,t){return t===void 0&&(t=this.z),this.x=A,this.y=e,this.z=t,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,e){switch(A){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,e){return this.x=A.x+e.x,this.y=A.y+e.y,this.z=A.z+e.z,this}addScaledVector(A,e){return this.x+=A.x*e,this.y+=A.y*e,this.z+=A.z*e,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,e){return this.x=A.x-e.x,this.y=A.y-e.y,this.z=A.z-e.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,e){return this.x=A.x*e.x,this.y=A.y*e.y,this.z=A.z*e.z,this}applyEuler(A){return this.applyQuaternion(sw.setFromEuler(A))}applyAxisAngle(A,e){return this.applyQuaternion(sw.setFromAxisAngle(A,e))}applyMatrix3(A){const e=this.x,t=this.y,i=this.z,r=A.elements;return this.x=r[0]*e+r[3]*t+r[6]*i,this.y=r[1]*e+r[4]*t+r[7]*i,this.z=r[2]*e+r[5]*t+r[8]*i,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const e=this.x,t=this.y,i=this.z,r=A.elements,s=1/(r[3]*e+r[7]*t+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*t+r[8]*i+r[12])*s,this.y=(r[1]*e+r[5]*t+r[9]*i+r[13])*s,this.z=(r[2]*e+r[6]*t+r[10]*i+r[14])*s,this}applyQuaternion(A){const e=this.x,t=this.y,i=this.z,r=A.x,s=A.y,o=A.z,a=A.w,l=2*(s*i-o*t),u=2*(o*e-r*i),c=2*(r*t-s*e);return this.x=e+a*l+s*c-o*u,this.y=t+a*u+o*l-r*c,this.z=i+a*c+r*u-s*l,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const e=this.x,t=this.y,i=this.z,r=A.elements;return this.x=r[0]*e+r[4]*t+r[8]*i,this.y=r[1]*e+r[5]*t+r[9]*i,this.z=r[2]*e+r[6]*t+r[10]*i,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,e){return this.x=Math.max(A.x,Math.min(e.x,this.x)),this.y=Math.max(A.y,Math.min(e.y,this.y)),this.z=Math.max(A.z,Math.min(e.z,this.z)),this}clampScalar(A,e){return this.x=Math.max(A,Math.min(e,this.x)),this.y=Math.max(A,Math.min(e,this.y)),this.z=Math.max(A,Math.min(e,this.z)),this}clampLength(A,e){const t=this.length();return this.divideScalar(t||1).multiplyScalar(Math.max(A,Math.min(e,t)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,e){return this.x+=(A.x-this.x)*e,this.y+=(A.y-this.y)*e,this.z+=(A.z-this.z)*e,this}lerpVectors(A,e,t){return this.x=A.x+(e.x-A.x)*t,this.y=A.y+(e.y-A.y)*t,this.z=A.z+(e.z-A.z)*t,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,e){const t=A.x,i=A.y,r=A.z,s=e.x,o=e.y,a=e.z;return this.x=i*a-r*o,this.y=r*s-t*a,this.z=t*o-i*s,this}projectOnVector(A){const e=A.lengthSq();if(e===0)return this.set(0,0,0);const t=A.dot(this)/e;return this.copy(A).multiplyScalar(t)}projectOnPlane(A){return ip.copy(this).projectOnVector(A),this.sub(ip)}reflect(A){return this.sub(ip.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const e=Math.sqrt(this.lengthSq()*A.lengthSq());if(e===0)return Math.PI/2;const t=this.dot(A)/e;return Math.acos(Qe(t,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const e=this.x-A.x,t=this.y-A.y,i=this.z-A.z;return e*e+t*t+i*i}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,e,t){const i=Math.sin(e)*A;return this.x=i*Math.sin(t),this.y=Math.cos(e)*A,this.z=i*Math.cos(t),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,e,t){return this.x=A*Math.sin(e),this.y=t,this.z=A*Math.cos(e),this}setFromMatrixPosition(A){const e=A.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(A){const e=this.setFromMatrixColumn(A,0).length(),t=this.setFromMatrixColumn(A,1).length(),i=this.setFromMatrixColumn(A,2).length();return this.x=e,this.y=t,this.z=i,this}setFromMatrixColumn(A,e){return this.fromArray(A.elements,e*4)}setFromMatrix3Column(A,e){return this.fromArray(A.elements,e*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,e=0){return this.x=A[e],this.y=A[e+1],this.z=A[e+2],this}toArray(A=[],e=0){return A[e]=this.x,A[e+1]=this.y,A[e+2]=this.z,A}fromBufferAttribute(A,e){return this.x=A.getX(e),this.y=A.getY(e),this.z=A.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,e=Math.random()*2-1,t=Math.sqrt(1-e*e);return this.x=t*Math.cos(A),this.y=e,this.z=t*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const ip=new O,sw=new vi;class ye{constructor(A=new O(1/0,1/0,1/0),e=new O(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=e}set(A,e){return this.min.copy(A),this.max.copy(e),this}setFromArray(A){this.makeEmpty();for(let e=0,t=A.length;e<t;e+=3)this.expandByPoint(Ki.fromArray(A,e));return this}setFromBufferAttribute(A){this.makeEmpty();for(let e=0,t=A.count;e<t;e++)this.expandByPoint(Ki.fromBufferAttribute(A,e));return this}setFromPoints(A){this.makeEmpty();for(let e=0,t=A.length;e<t;e++)this.expandByPoint(A[e]);return this}setFromCenterAndSize(A,e){const t=Ki.copy(e).multiplyScalar(.5);return this.min.copy(A).sub(t),this.max.copy(A).add(t),this}setFromObject(A,e=!1){return this.makeEmpty(),this.expandByObject(A,e)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,e=!1){A.updateWorldMatrix(!1,!1);const t=A.geometry;if(t!==void 0){const r=t.getAttribute("position");if(e===!0&&r!==void 0&&A.isInstancedMesh!==!0)for(let s=0,o=r.count;s<o;s++)A.isMesh===!0?A.getVertexPosition(s,Ki):Ki.fromBufferAttribute(r,s),Ki.applyMatrix4(A.matrixWorld),this.expandByPoint(Ki);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),ch.copy(A.boundingBox)):(t.boundingBox===null&&t.computeBoundingBox(),ch.copy(t.boundingBox)),ch.applyMatrix4(A.matrixWorld),this.union(ch)}const i=A.children;for(let r=0,s=i.length;r<s;r++)this.expandByObject(i[r],e);return this}containsPoint(A){return!(A.x<this.min.x||A.x>this.max.x||A.y<this.min.y||A.y>this.max.y||A.z<this.min.z||A.z>this.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,e){return e.set((A.x-this.min.x)/(this.max.x-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))}intersectsBox(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)}intersectsSphere(A){return this.clampPoint(A.center,Ki),Ki.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let e,t;return A.normal.x>0?(e=A.normal.x*this.min.x,t=A.normal.x*this.max.x):(e=A.normal.x*this.max.x,t=A.normal.x*this.min.x),A.normal.y>0?(e+=A.normal.y*this.min.y,t+=A.normal.y*this.max.y):(e+=A.normal.y*this.max.y,t+=A.normal.y*this.min.y),A.normal.z>0?(e+=A.normal.z*this.min.z,t+=A.normal.z*this.max.z):(e+=A.normal.z*this.max.z,t+=A.normal.z*this.min.z),e<=-A.constant&&t>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(pl),hh.subVectors(this.max,pl),uo.subVectors(A.a,pl),fo.subVectors(A.b,pl),po.subVectors(A.c,pl),hr.subVectors(fo,uo),ur.subVectors(po,fo),rs.subVectors(uo,po);let e=[0,-hr.z,hr.y,0,-ur.z,ur.y,0,-rs.z,rs.y,hr.z,0,-hr.x,ur.z,0,-ur.x,rs.z,0,-rs.x,-hr.y,hr.x,0,-ur.y,ur.x,0,-rs.y,rs.x,0];return!np(e,uo,fo,po,hh)||(e=[1,0,0,0,1,0,0,0,1],!np(e,uo,fo,po,hh))?!1:(uh.crossVectors(hr,ur),e=[uh.x,uh.y,uh.z],np(e,uo,fo,po,hh))}clampPoint(A,e){return e.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,Ki).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(Ki).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(Nn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),Nn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),Nn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),Nn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),Nn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),Nn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),Nn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),Nn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(Nn),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const Nn=[new O,new O,new O,new O,new O,new O,new O,new O],Ki=new O,ch=new ye,uo=new O,fo=new O,po=new O,hr=new O,ur=new O,rs=new O,pl=new O,hh=new O,uh=new O,ss=new O;function np(n,A,e,t,i){for(let r=0,s=n.length-3;r<=s;r+=3){ss.fromArray(n,r);const o=i.x*Math.abs(ss.x)+i.y*Math.abs(ss.y)+i.z*Math.abs(ss.z),a=A.dot(ss),l=e.dot(ss),u=t.dot(ss);if(Math.max(-Math.max(a,l,u),Math.min(a,l,u))>o)return!1}return!0}const yM=new ye,gl=new O,rp=new O;class Ai{constructor(A=new O,e=-1){this.isSphere=!0,this.center=A,this.radius=e}set(A,e){return this.center.copy(A),this.radius=e,this}setFromPoints(A,e){const t=this.center;e!==void 0?t.copy(e):yM.setFromPoints(A).getCenter(t);let i=0;for(let r=0,s=A.length;r<s;r++)i=Math.max(i,t.distanceToSquared(A[r]));return this.radius=Math.sqrt(i),this}copy(A){return this.center.copy(A.center),this.radius=A.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(A){return A.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(A){return A.distanceTo(this.center)-this.radius}intersectsSphere(A){const e=this.radius+A.radius;return A.center.distanceToSquared(this.center)<=e*e}intersectsBox(A){return A.intersectsSphere(this)}intersectsPlane(A){return Math.abs(A.distanceToPoint(this.center))<=this.radius}clampPoint(A,e){const t=this.center.distanceToSquared(A);return e.copy(A),t>this.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;gl.subVectors(A,this.center);const e=gl.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),i=(t-this.radius)*.5;this.center.addScaledVector(gl,i/t),this.radius+=i}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):(rp.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(gl.copy(A.center).add(rp)),this.expandByPoint(gl.copy(A.center).sub(rp))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Bn=new O,sp=new O,fh=new O,fr=new O,op=new O,dh=new O,ap=new O;class os{constructor(A=new O,e=new O(0,0,-1)){this.origin=A,this.direction=e}set(A,e){return this.origin.copy(A),this.direction.copy(e),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,e){return e.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,Bn)),this}closestPointToPoint(A,e){e.subVectors(A,this.origin);const t=e.dot(this.direction);return t<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,t)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const e=Bn.subVectors(A,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(A):(Bn.copy(this.origin).addScaledVector(this.direction,e),Bn.distanceToSquared(A))}distanceSqToSegment(A,e,t,i){sp.copy(A).add(e).multiplyScalar(.5),fh.copy(e).sub(A).normalize(),fr.copy(this.origin).sub(sp);const r=A.distanceTo(e)*.5,s=-this.direction.dot(fh),o=fr.dot(this.direction),a=-fr.dot(fh),l=fr.lengthSq(),u=Math.abs(1-s*s);let c,h,f,p;if(u>0)if(c=s*a-o,h=s*o-a,p=r*u,c>=0)if(h>=-p)if(h<=p){const m=1/u;c*=m,h*=m,f=c*(c+s*h+2*o)+h*(s*c+h+2*a)+l}else h=r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;else h=-r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;else h<=-p?(c=Math.max(0,-(-s*r+o)),h=c>0?-r:Math.min(Math.max(-r,-a),r),f=-c*c+h*(h+2*a)+l):h<=p?(c=0,h=Math.min(Math.max(-r,-a),r),f=h*(h+2*a)+l):(c=Math.max(0,-(s*r+o)),h=c>0?r:Math.min(Math.max(-r,-a),r),f=-c*c+h*(h+2*a)+l);else h=s>0?-r:r,c=Math.max(0,-(s*h+o)),f=-c*c+h*(h+2*a)+l;return t&&t.copy(this.origin).addScaledVector(this.direction,c),i&&i.copy(sp).addScaledVector(fh,h),f}intersectSphere(A,e){Bn.subVectors(A.center,this.origin);const t=Bn.dot(this.direction),i=Bn.dot(Bn)-t*t,r=A.radius*A.radius;if(i>r)return null;const s=Math.sqrt(r-i),o=t-s,a=t+s;return a<0?null:o<0?this.at(a,e):this.at(o,e)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const e=A.normal.dot(this.direction);if(e===0)return A.distanceToPoint(this.origin)===0?0:null;const t=-(this.origin.dot(A.normal)+A.constant)/e;return t>=0?t:null}intersectPlane(A,e){const t=this.distanceToPlane(A);return t===null?null:this.at(t,e)}intersectsPlane(A){const e=A.distanceToPoint(this.origin);return e===0||A.normal.dot(this.direction)*e<0}intersectBox(A,e){let t,i,r,s,o,a;const l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,h=this.origin;return l>=0?(t=(A.min.x-h.x)*l,i=(A.max.x-h.x)*l):(t=(A.max.x-h.x)*l,i=(A.min.x-h.x)*l),u>=0?(r=(A.min.y-h.y)*u,s=(A.max.y-h.y)*u):(r=(A.max.y-h.y)*u,s=(A.min.y-h.y)*u),t>s||r>i||((r>t||isNaN(t))&&(t=r),(s<i||isNaN(i))&&(i=s),c>=0?(o=(A.min.z-h.z)*c,a=(A.max.z-h.z)*c):(o=(A.max.z-h.z)*c,a=(A.min.z-h.z)*c),t>a||o>i)||((o>t||t!==t)&&(t=o),(a<i||i!==i)&&(i=a),i<0)?null:this.at(t>=0?t:i,e)}intersectsBox(A){return this.intersectBox(A,Bn)!==null}intersectTriangle(A,e,t,i,r){op.subVectors(e,A),dh.subVectors(t,A),ap.crossVectors(op,dh);let s=this.direction.dot(ap),o;if(s>0){if(i)return null;o=1}else if(s<0)o=-1,s=-s;else return null;fr.subVectors(this.origin,A);const a=o*this.direction.dot(dh.crossVectors(fr,dh));if(a<0)return null;const l=o*this.direction.dot(op.cross(fr));if(l<0||a+l>s)return null;const u=-o*fr.dot(ap);return u<0?null:this.at(u/s,r)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class zA{constructor(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d){zA.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d)}set(A,e,t,i,r,s,o,a,l,u,c,h,f,p,m,d){const g=this.elements;return g[0]=A,g[4]=e,g[8]=t,g[12]=i,g[1]=r,g[5]=s,g[9]=o,g[13]=a,g[2]=l,g[6]=u,g[10]=c,g[14]=h,g[3]=f,g[7]=p,g[11]=m,g[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zA().fromArray(this.elements)}copy(A){const e=this.elements,t=A.elements;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],this}copyPosition(A){const e=this.elements,t=A.elements;return e[12]=t[12],e[13]=t[13],e[14]=t[14],this}setFromMatrix3(A){const e=A.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(A,e,t){return A.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),t.setFromMatrixColumn(this,2),this}makeBasis(A,e,t){return this.set(A.x,e.x,t.x,0,A.y,e.y,t.y,0,A.z,e.z,t.z,0,0,0,0,1),this}extractRotation(A){const e=this.elements,t=A.elements,i=1/go.setFromMatrixColumn(A,0).length(),r=1/go.setFromMatrixColumn(A,1).length(),s=1/go.setFromMatrixColumn(A,2).length();return e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=0,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=0,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(A){const e=this.elements,t=A.x,i=A.y,r=A.z,s=Math.cos(t),o=Math.sin(t),a=Math.cos(i),l=Math.sin(i),u=Math.cos(r),c=Math.sin(r);if(A.order==="XYZ"){const h=s*u,f=s*c,p=o*u,m=o*c;e[0]=a*u,e[4]=-a*c,e[8]=l,e[1]=f+p*l,e[5]=h-m*l,e[9]=-o*a,e[2]=m-h*l,e[6]=p+f*l,e[10]=s*a}else if(A.order==="YXZ"){const h=a*u,f=a*c,p=l*u,m=l*c;e[0]=h+m*o,e[4]=p*o-f,e[8]=s*l,e[1]=s*c,e[5]=s*u,e[9]=-o,e[2]=f*o-p,e[6]=m+h*o,e[10]=s*a}else if(A.order==="ZXY"){const h=a*u,f=a*c,p=l*u,m=l*c;e[0]=h-m*o,e[4]=-s*c,e[8]=p+f*o,e[1]=f+p*o,e[5]=s*u,e[9]=m-h*o,e[2]=-s*l,e[6]=o,e[10]=s*a}else if(A.order==="ZYX"){const h=s*u,f=s*c,p=o*u,m=o*c;e[0]=a*u,e[4]=p*l-f,e[8]=h*l+m,e[1]=a*c,e[5]=m*l+h,e[9]=f*l-p,e[2]=-l,e[6]=o*a,e[10]=s*a}else if(A.order==="YZX"){const h=s*a,f=s*l,p=o*a,m=o*l;e[0]=a*u,e[4]=m-h*c,e[8]=p*c+f,e[1]=c,e[5]=s*u,e[9]=-o*u,e[2]=-l*u,e[6]=f*c+p,e[10]=h-m*c}else if(A.order==="XZY"){const h=s*a,f=s*l,p=o*a,m=o*l;e[0]=a*u,e[4]=-c,e[8]=l*u,e[1]=h*c+m,e[5]=s*u,e[9]=f*c-p,e[2]=p*c-f,e[6]=o*u,e[10]=m*c+h}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(A){return this.compose(wM,A,CM)}lookAt(A,e,t){const i=this.elements;return ei.subVectors(A,e),ei.lengthSq()===0&&(ei.z=1),ei.normalize(),dr.crossVectors(t,ei),dr.lengthSq()===0&&(Math.abs(t.z)===1?ei.x+=1e-4:ei.z+=1e-4,ei.normalize(),dr.crossVectors(t,ei)),dr.normalize(),ph.crossVectors(ei,dr),i[0]=dr.x,i[4]=ph.x,i[8]=ei.x,i[1]=dr.y,i[5]=ph.y,i[9]=ei.y,i[2]=dr.z,i[6]=ph.z,i[10]=ei.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,e){const t=A.elements,i=e.elements,r=this.elements,s=t[0],o=t[4],a=t[8],l=t[12],u=t[1],c=t[5],h=t[9],f=t[13],p=t[2],m=t[6],d=t[10],g=t[14],y=t[3],v=t[7],w=t[11],C=t[15],_=i[0],x=i[4],S=i[8],b=i[12],I=i[1],D=i[5],P=i[9],M=i[13],T=i[2],q=i[6],B=i[10],W=i[14],K=i[3],U=i[7],k=i[11],N=i[15];return r[0]=s*_+o*I+a*T+l*K,r[4]=s*x+o*D+a*q+l*U,r[8]=s*S+o*P+a*B+l*k,r[12]=s*b+o*M+a*W+l*N,r[1]=u*_+c*I+h*T+f*K,r[5]=u*x+c*D+h*q+f*U,r[9]=u*S+c*P+h*B+f*k,r[13]=u*b+c*M+h*W+f*N,r[2]=p*_+m*I+d*T+g*K,r[6]=p*x+m*D+d*q+g*U,r[10]=p*S+m*P+d*B+g*k,r[14]=p*b+m*M+d*W+g*N,r[3]=y*_+v*I+w*T+C*K,r[7]=y*x+v*D+w*q+C*U,r[11]=y*S+v*P+w*B+C*k,r[15]=y*b+v*M+w*W+C*N,this}multiplyScalar(A){const e=this.elements;return e[0]*=A,e[4]*=A,e[8]*=A,e[12]*=A,e[1]*=A,e[5]*=A,e[9]*=A,e[13]*=A,e[2]*=A,e[6]*=A,e[10]*=A,e[14]*=A,e[3]*=A,e[7]*=A,e[11]*=A,e[15]*=A,this}determinant(){const A=this.elements,e=A[0],t=A[4],i=A[8],r=A[12],s=A[1],o=A[5],a=A[9],l=A[13],u=A[2],c=A[6],h=A[10],f=A[14],p=A[3],m=A[7],d=A[11],g=A[15];return p*(+r*a*c-i*l*c-r*o*h+t*l*h+i*o*f-t*a*f)+m*(+e*a*f-e*l*h+r*s*h-i*s*f+i*l*u-r*a*u)+d*(+e*l*c-e*o*f-r*s*c+t*s*f+r*o*u-t*l*u)+g*(-i*o*u-e*a*c+e*o*h+i*s*c-t*s*h+t*a*u)}transpose(){const A=this.elements;let e;return e=A[1],A[1]=A[4],A[4]=e,e=A[2],A[2]=A[8],A[8]=e,e=A[6],A[6]=A[9],A[9]=e,e=A[3],A[3]=A[12],A[12]=e,e=A[7],A[7]=A[13],A[13]=e,e=A[11],A[11]=A[14],A[14]=e,this}setPosition(A,e,t){const i=this.elements;return A.isVector3?(i[12]=A.x,i[13]=A.y,i[14]=A.z):(i[12]=A,i[13]=e,i[14]=t),this}invert(){const A=this.elements,e=A[0],t=A[1],i=A[2],r=A[3],s=A[4],o=A[5],a=A[6],l=A[7],u=A[8],c=A[9],h=A[10],f=A[11],p=A[12],m=A[13],d=A[14],g=A[15],y=c*d*l-m*h*l+m*a*f-o*d*f-c*a*g+o*h*g,v=p*h*l-u*d*l-p*a*f+s*d*f+u*a*g-s*h*g,w=u*m*l-p*c*l+p*o*f-s*m*f-u*o*g+s*c*g,C=p*c*a-u*m*a-p*o*h+s*m*h+u*o*d-s*c*d,_=e*y+t*v+i*w+r*C;if(_===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const x=1/_;return A[0]=y*x,A[1]=(m*h*r-c*d*r-m*i*f+t*d*f+c*i*g-t*h*g)*x,A[2]=(o*d*r-m*a*r+m*i*l-t*d*l-o*i*g+t*a*g)*x,A[3]=(c*a*r-o*h*r-c*i*l+t*h*l+o*i*f-t*a*f)*x,A[4]=v*x,A[5]=(u*d*r-p*h*r+p*i*f-e*d*f-u*i*g+e*h*g)*x,A[6]=(p*a*r-s*d*r-p*i*l+e*d*l+s*i*g-e*a*g)*x,A[7]=(s*h*r-u*a*r+u*i*l-e*h*l-s*i*f+e*a*f)*x,A[8]=w*x,A[9]=(p*c*r-u*m*r-p*t*f+e*m*f+u*t*g-e*c*g)*x,A[10]=(s*m*r-p*o*r+p*t*l-e*m*l-s*t*g+e*o*g)*x,A[11]=(u*o*r-s*c*r-u*t*l+e*c*l+s*t*f-e*o*f)*x,A[12]=C*x,A[13]=(u*m*i-p*c*i+p*t*h-e*m*h-u*t*d+e*c*d)*x,A[14]=(p*o*i-s*m*i-p*t*a+e*m*a+s*t*d-e*o*d)*x,A[15]=(s*c*i-u*o*i+u*t*a-e*c*a-s*t*h+e*o*h)*x,this}scale(A){const e=this.elements,t=A.x,i=A.y,r=A.z;return e[0]*=t,e[4]*=i,e[8]*=r,e[1]*=t,e[5]*=i,e[9]*=r,e[2]*=t,e[6]*=i,e[10]*=r,e[3]*=t,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const A=this.elements,e=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],t=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],i=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(e,t,i))}makeTranslation(A,e,t){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,e,0,0,1,t,0,0,0,1),this}makeRotationX(A){const e=Math.cos(A),t=Math.sin(A);return this.set(1,0,0,0,0,e,-t,0,0,t,e,0,0,0,0,1),this}makeRotationY(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,0,t,0,0,1,0,0,-t,0,e,0,0,0,0,1),this}makeRotationZ(A){const e=Math.cos(A),t=Math.sin(A);return this.set(e,-t,0,0,t,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,e){const t=Math.cos(e),i=Math.sin(e),r=1-t,s=A.x,o=A.y,a=A.z,l=r*s,u=r*o;return this.set(l*s+t,l*o-i*a,l*a+i*o,0,l*o+i*a,u*o+t,u*a-i*s,0,l*a-i*o,u*a+i*s,r*a*a+t,0,0,0,0,1),this}makeScale(A,e,t){return this.set(A,0,0,0,0,e,0,0,0,0,t,0,0,0,0,1),this}makeShear(A,e,t,i,r,s){return this.set(1,t,r,0,A,1,s,0,e,i,1,0,0,0,0,1),this}compose(A,e,t){const i=this.elements,r=e._x,s=e._y,o=e._z,a=e._w,l=r+r,u=s+s,c=o+o,h=r*l,f=r*u,p=r*c,m=s*u,d=s*c,g=o*c,y=a*l,v=a*u,w=a*c,C=t.x,_=t.y,x=t.z;return i[0]=(1-(m+g))*C,i[1]=(f+w)*C,i[2]=(p-v)*C,i[3]=0,i[4]=(f-w)*_,i[5]=(1-(h+g))*_,i[6]=(d+y)*_,i[7]=0,i[8]=(p+v)*x,i[9]=(d-y)*x,i[10]=(1-(h+m))*x,i[11]=0,i[12]=A.x,i[13]=A.y,i[14]=A.z,i[15]=1,this}decompose(A,e,t){const i=this.elements;let r=go.set(i[0],i[1],i[2]).length();const s=go.set(i[4],i[5],i[6]).length(),o=go.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),A.x=i[12],A.y=i[13],A.z=i[14],Fi.copy(this);const l=1/r,u=1/s,c=1/o;return Fi.elements[0]*=l,Fi.elements[1]*=l,Fi.elements[2]*=l,Fi.elements[4]*=u,Fi.elements[5]*=u,Fi.elements[6]*=u,Fi.elements[8]*=c,Fi.elements[9]*=c,Fi.elements[10]*=c,e.setFromRotationMatrix(Fi),t.x=r,t.y=s,t.z=o,this}makePerspective(A,e,t,i,r,s,o=qn){const a=this.elements,l=2*r/(e-A),u=2*r/(t-i),c=(e+A)/(e-A),h=(t+i)/(t-i);let f,p;if(o===qn)f=-(s+r)/(s-r),p=-2*s*r/(s-r);else if(o===sh)f=-s/(s-r),p=-s*r/(s-r);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+o);return a[0]=l,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=u,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=f,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(A,e,t,i,r,s,o=qn){const a=this.elements,l=1/(e-A),u=1/(t-i),c=1/(s-r),h=(e+A)*l,f=(t+i)*u;let p,m;if(o===qn)p=(s+r)*c,m=-2*c;else if(o===sh)p=r*c,m=-1*c;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return a[0]=2*l,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*u,a[9]=0,a[13]=-f,a[2]=0,a[6]=0,a[10]=m,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(A){const e=this.elements,t=A.elements;for(let i=0;i<16;i++)if(e[i]!==t[i])return!1;return!0}fromArray(A,e=0){for(let t=0;t<16;t++)this.elements[t]=A[t+e];return this}toArray(A=[],e=0){const t=this.elements;return A[e]=t[0],A[e+1]=t[1],A[e+2]=t[2],A[e+3]=t[3],A[e+4]=t[4],A[e+5]=t[5],A[e+6]=t[6],A[e+7]=t[7],A[e+8]=t[8],A[e+9]=t[9],A[e+10]=t[10],A[e+11]=t[11],A[e+12]=t[12],A[e+13]=t[13],A[e+14]=t[14],A[e+15]=t[15],A}}const go=new O,Fi=new zA,wM=new O(0,0,0),CM=new O(1,1,1),dr=new O,ph=new O,ei=new O,ow=new zA,aw=new vi;class on{constructor(A=0,e=0,t=0,i=on.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=e,this._z=t,this._order=i}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(A,e,t,i=this._order){return this._x=A,this._y=e,this._z=t,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,e=this._order,t=!0){const i=A.elements,r=i[0],s=i[4],o=i[8],a=i[1],l=i[5],u=i[9],c=i[2],h=i[6],f=i[10];switch(e){case"XYZ":this._y=Math.asin(Qe(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Qe(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(a,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(Qe(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-c,f),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(a,r));break;case"ZYX":this._y=Math.asin(-Qe(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(h,f),this._z=Math.atan2(a,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Qe(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Qe(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,t===!0&&this._onChangeCallback(),this}setFromQuaternion(A,e,t){return ow.makeRotationFromQuaternion(A),this.setFromRotationMatrix(ow,e,t)}setFromVector3(A,e=this._order){return this.set(A.x,A.y,A.z,e)}reorder(A){return aw.setFromEuler(this),this.setFromQuaternion(aw,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],e=0){return A[e]=this._x,A[e+1]=this._y,A[e+2]=this._z,A[e+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}on.DEFAULT_ORDER="XYZ";class lp{constructor(){this.mask=1}set(A){this.mask=(1<<A|0)>>>0}enable(A){this.mask|=1<<A|0}enableAll(){this.mask=-1}toggle(A){this.mask^=1<<A|0}disable(A){this.mask&=~(1<<A|0)}disableAll(){this.mask=0}test(A){return(this.mask&A.mask)!==0}isEnabled(A){return(this.mask&(1<<A|0))!==0}}let xM=0;const lw=new O,mo=new vi,zn=new zA,gh=new O,ml=new O,IM=new O,bM=new vi,cw=new O(1,0,0),hw=new O(0,1,0),uw=new O(0,0,1),fw={type:"added"},_M={type:"removed"},vo={type:"childadded",child:null},cp={type:"childremoved",child:null};class Ie extends ns{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:xM++}),this.uuid=mi(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=Ie.DEFAULT_UP.clone();const A=new O,e=new on,t=new vi,i=new O(1,1,1);function r(){t.setFromEuler(e,!1)}function s(){e.setFromQuaternion(t,void 0,!1)}e._onChange(r),t._onChange(s),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:A},rotation:{configurable:!0,enumerable:!0,value:e},quaternion:{configurable:!0,enumerable:!0,value:t},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new zA},normalMatrix:{value:new le}}),this.matrix=new zA,this.matrixWorld=new zA,this.matrixAutoUpdate=Ie.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=Ie.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new lp,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(A){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(A),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(A){return this.quaternion.premultiply(A),this}setRotationFromAxisAngle(A,e){this.quaternion.setFromAxisAngle(A,e)}setRotationFromEuler(A){this.quaternion.setFromEuler(A,!0)}setRotationFromMatrix(A){this.quaternion.setFromRotationMatrix(A)}setRotationFromQuaternion(A){this.quaternion.copy(A)}rotateOnAxis(A,e){return mo.setFromAxisAngle(A,e),this.quaternion.multiply(mo),this}rotateOnWorldAxis(A,e){return mo.setFromAxisAngle(A,e),this.quaternion.premultiply(mo),this}rotateX(A){return this.rotateOnAxis(cw,A)}rotateY(A){return this.rotateOnAxis(hw,A)}rotateZ(A){return this.rotateOnAxis(uw,A)}translateOnAxis(A,e){return lw.copy(A).applyQuaternion(this.quaternion),this.position.add(lw.multiplyScalar(e)),this}translateX(A){return this.translateOnAxis(cw,A)}translateY(A){return this.translateOnAxis(hw,A)}translateZ(A){return this.translateOnAxis(uw,A)}localToWorld(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(this.matrixWorld)}worldToLocal(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(zn.copy(this.matrixWorld).invert())}lookAt(A,e,t){A.isVector3?gh.copy(A):gh.set(A,e,t);const i=this.parent;this.updateWorldMatrix(!0,!1),ml.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?zn.lookAt(ml,gh,this.up):zn.lookAt(gh,ml,this.up),this.quaternion.setFromRotationMatrix(zn),i&&(zn.extractRotation(i.matrixWorld),mo.setFromRotationMatrix(zn),this.quaternion.premultiply(mo.invert()))}add(A){if(arguments.length>1){for(let e=0;e<arguments.length;e++)this.add(arguments[e]);return this}return A===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",A),this):(A&&A.isObject3D?(A.removeFromParent(),A.parent=this,this.children.push(A),A.dispatchEvent(fw),vo.child=A,this.dispatchEvent(vo),vo.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",A),this)}remove(A){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.remove(arguments[t]);return this}const e=this.children.indexOf(A);return e!==-1&&(A.parent=null,this.children.splice(e,1),A.dispatchEvent(_M),cp.child=A,this.dispatchEvent(cp),cp.child=null),this}removeFromParent(){const A=this.parent;return A!==null&&A.remove(this),this}clear(){return this.remove(...this.children)}attach(A){return this.updateWorldMatrix(!0,!1),zn.copy(this.matrixWorld).invert(),A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),zn.multiply(A.parent.matrixWorld)),A.applyMatrix4(zn),A.removeFromParent(),A.parent=this,this.children.push(A),A.updateWorldMatrix(!1,!0),A.dispatchEvent(fw),vo.child=A,this.dispatchEvent(vo),vo.child=null,this}getObjectById(A){return this.getObjectByProperty("id",A)}getObjectByName(A){return this.getObjectByProperty("name",A)}getObjectByProperty(A,e){if(this[A]===e)return this;for(let t=0,i=this.children.length;t<i;t++){const s=this.children[t].getObjectByProperty(A,e);if(s!==void 0)return s}}getObjectsByProperty(A,e,t=[]){this[A]===e&&t.push(this);const i=this.children;for(let r=0,s=i.length;r<s;r++)i[r].getObjectsByProperty(A,e,t);return t}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ml,A,IM),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ml,bM,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const e=this.matrixWorld.elements;return A.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(A){A(this);const e=this.children;for(let t=0,i=e.length;t<i;t++)e[t].traverse(A)}traverseVisible(A){if(this.visible===!1)return;A(this);const e=this.children;for(let t=0,i=e.length;t<i;t++)e[t].traverseVisible(A)}traverseAncestors(A){const e=this.parent;e!==null&&(A(e),e.traverseAncestors(A))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,A=!0);const e=this.children;for(let t=0,i=e.length;t<i;t++){const r=e[t];(r.matrixWorldAutoUpdate===!0||A===!0)&&r.updateMatrixWorld(A)}}updateWorldMatrix(A,e){const t=this.parent;if(A===!0&&t!==null&&t.matrixWorldAutoUpdate===!0&&t.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),e===!0){const i=this.children;for(let r=0,s=i.length;r<s;r++){const o=i[r];o.matrixWorldAutoUpdate===!0&&o.updateWorldMatrix(!1,!0)}}}toJSON(A){const e=A===void 0||typeof A=="string",t={};e&&(A={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},t.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const i={};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.castShadow===!0&&(i.castShadow=!0),this.receiveShadow===!0&&(i.receiveShadow=!0),this.visible===!1&&(i.visible=!1),this.frustumCulled===!1&&(i.frustumCulled=!1),this.renderOrder!==0&&(i.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(o=>({boxInitialized:o.boxInitialized,boxMin:o.box.min.toArray(),boxMax:o.box.max.toArray(),sphereInitialized:o.sphereInitialized,sphereRadius:o.sphere.radius,sphereCenter:o.sphere.center.toArray()})),i.maxGeometryCount=this._maxGeometryCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(A),this.boundingSphere!==null&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),this.boundingBox!==null&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()}));function r(o,a){return o[a.uuid]===void 0&&(o[a.uuid]=a.toJSON(A)),a.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(A.geometries,this.geometry);const o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){const a=o.shapes;if(Array.isArray(a))for(let l=0,u=a.length;l<u;l++){const c=a[l];r(A.shapes,c)}else r(A.shapes,a)}}if(this.isSkinnedMesh&&(i.bindMode=this.bindMode,i.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(r(A.skeletons,this.skeleton),i.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const o=[];for(let a=0,l=this.material.length;a<l;a++)o.push(r(A.materials,this.material[a]));i.material=o}else i.material=r(A.materials,this.material);if(this.children.length>0){i.children=[];for(let o=0;o<this.children.length;o++)i.children.push(this.children[o].toJSON(A).object)}if(this.animations.length>0){i.animations=[];for(let o=0;o<this.animations.length;o++){const a=this.animations[o];i.animations.push(r(A.animations,a))}}if(e){const o=s(A.geometries),a=s(A.materials),l=s(A.textures),u=s(A.images),c=s(A.shapes),h=s(A.skeletons),f=s(A.animations),p=s(A.nodes);o.length>0&&(t.geometries=o),a.length>0&&(t.materials=a),l.length>0&&(t.textures=l),u.length>0&&(t.images=u),c.length>0&&(t.shapes=c),h.length>0&&(t.skeletons=h),f.length>0&&(t.animations=f),p.length>0&&(t.nodes=p)}return t.object=i,t;function s(o){const a=[];for(const l in o){const u=o[l];delete u.metadata,a.push(u)}return a}}clone(A){return new this.constructor().copy(this,A)}copy(A,e=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),e===!0)for(let t=0;t<A.children.length;t++){const i=A.children[t];this.add(i.clone())}return this}}Ie.DEFAULT_UP=new O(0,1,0),Ie.DEFAULT_MATRIX_AUTO_UPDATE=!0,Ie.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const Gi=new O,Rn=new O,hp=new O,kn=new O,yo=new O,wo=new O,dw=new O,up=new O,fp=new O,dp=new O;class Ue{constructor(A=new O,e=new O,t=new O){this.a=A,this.b=e,this.c=t}static getNormal(A,e,t,i){i.subVectors(t,e),Gi.subVectors(A,e),i.cross(Gi);const r=i.lengthSq();return r>0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(A,e,t,i,r){Gi.subVectors(i,e),Rn.subVectors(t,e),hp.subVectors(A,e);const s=Gi.dot(Gi),o=Gi.dot(Rn),a=Gi.dot(hp),l=Rn.dot(Rn),u=Rn.dot(hp),c=s*l-o*o;if(c===0)return r.set(0,0,0),null;const h=1/c,f=(l*a-o*u)*h,p=(s*u-o*a)*h;return r.set(1-f-p,p,f)}static containsPoint(A,e,t,i){return this.getBarycoord(A,e,t,i,kn)===null?!1:kn.x>=0&&kn.y>=0&&kn.x+kn.y<=1}static getInterpolation(A,e,t,i,r,s,o,a){return this.getBarycoord(A,e,t,i,kn)===null?(a.x=0,a.y=0,"z"in a&&(a.z=0),"w"in a&&(a.w=0),null):(a.setScalar(0),a.addScaledVector(r,kn.x),a.addScaledVector(s,kn.y),a.addScaledVector(o,kn.z),a)}static isFrontFacing(A,e,t,i){return Gi.subVectors(t,e),Rn.subVectors(A,e),Gi.cross(Rn).dot(i)<0}set(A,e,t){return this.a.copy(A),this.b.copy(e),this.c.copy(t),this}setFromPointsAndIndices(A,e,t,i){return this.a.copy(A[e]),this.b.copy(A[t]),this.c.copy(A[i]),this}setFromAttributeAndIndices(A,e,t,i){return this.a.fromBufferAttribute(A,e),this.b.fromBufferAttribute(A,t),this.c.fromBufferAttribute(A,i),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return Gi.subVectors(this.c,this.b),Rn.subVectors(this.a,this.b),Gi.cross(Rn).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return Ue.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,e){return Ue.getBarycoord(A,this.a,this.b,this.c,e)}getInterpolation(A,e,t,i,r){return Ue.getInterpolation(A,this.a,this.b,this.c,e,t,i,r)}containsPoint(A){return Ue.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return Ue.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,e){const t=this.a,i=this.b,r=this.c;let s,o;yo.subVectors(i,t),wo.subVectors(r,t),up.subVectors(A,t);const a=yo.dot(up),l=wo.dot(up);if(a<=0&&l<=0)return e.copy(t);fp.subVectors(A,i);const u=yo.dot(fp),c=wo.dot(fp);if(u>=0&&c<=u)return e.copy(i);const h=a*c-u*l;if(h<=0&&a>=0&&u<=0)return s=a/(a-u),e.copy(t).addScaledVector(yo,s);dp.subVectors(A,r);const f=yo.dot(dp),p=wo.dot(dp);if(p>=0&&f<=p)return e.copy(r);const m=f*l-a*p;if(m<=0&&l>=0&&p<=0)return o=l/(l-p),e.copy(t).addScaledVector(wo,o);const d=u*p-f*c;if(d<=0&&c-u>=0&&f-p>=0)return dw.subVectors(r,i),o=(c-u)/(c-u+(f-p)),e.copy(i).addScaledVector(dw,o);const g=1/(d+m+h);return s=m*g,o=h*g,e.copy(t).addScaledVector(yo,s).addScaledVector(wo,o)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}const pw={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,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},pr={h:0,s:0,l:0},mh={h:0,s:0,l:0};function pp(n,A,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?n+(A-n)*6*e:e<1/2?A:e<2/3?n+(A-n)*6*(2/3-e):n}let KA=class{constructor(A,e,t){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,e,t)}set(A,e,t){if(e===void 0&&t===void 0){const i=A;i&&i.isColor?this.copy(i):typeof i=="number"?this.setHex(i):typeof i=="string"&&this.setStyle(i)}else this.setRGB(A,e,t);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,e=je){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,Se.toWorkingColorSpace(this,e),this}setRGB(A,e,t,i=Se.workingColorSpace){return this.r=A,this.g=e,this.b=t,Se.toWorkingColorSpace(this,i),this}setHSL(A,e,t,i=Se.workingColorSpace){if(A=$d(A,1),e=Qe(e,0,1),t=Qe(t,0,1),e===0)this.r=this.g=this.b=t;else{const r=t<=.5?t*(1+e):t+e-t*e,s=2*t-r;this.r=pp(s,r,A+1/3),this.g=pp(s,r,A),this.b=pp(s,r,A-1/3)}return Se.toWorkingColorSpace(this,i),this}setStyle(A,e=je){function t(r){r!==void 0&&parseFloat(r)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(A)){let r;const s=i[1],o=i[2];switch(s){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return t(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(A)){const r=i[1],s=r.length;if(s===3)return this.setRGB(parseInt(r.charAt(0),16)/15,parseInt(r.charAt(1),16)/15,parseInt(r.charAt(2),16)/15,e);if(s===6)return this.setHex(parseInt(r,16),e);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,e);return this}setColorName(A,e=je){const t=pw[A.toLowerCase()];return t!==void 0?this.setHex(t,e):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=co(A.r),this.g=co(A.g),this.b=co(A.b),this}copyLinearToSRGB(A){return this.r=ep(A.r),this.g=ep(A.g),this.b=ep(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=je){return Se.fromWorkingColorSpace(Tt.copy(this),A),Math.round(Qe(Tt.r*255,0,255))*65536+Math.round(Qe(Tt.g*255,0,255))*256+Math.round(Qe(Tt.b*255,0,255))}getHexString(A=je){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,e=Se.workingColorSpace){Se.fromWorkingColorSpace(Tt.copy(this),e);const t=Tt.r,i=Tt.g,r=Tt.b,s=Math.max(t,i,r),o=Math.min(t,i,r);let a,l;const u=(o+s)/2;if(o===s)a=0,l=0;else{const c=s-o;switch(l=u<=.5?c/(s+o):c/(2-s-o),s){case t:a=(i-r)/c+(i<r?6:0);break;case i:a=(r-t)/c+2;break;case r:a=(t-i)/c+4;break}a/=6}return A.h=a,A.s=l,A.l=u,A}getRGB(A,e=Se.workingColorSpace){return Se.fromWorkingColorSpace(Tt.copy(this),e),A.r=Tt.r,A.g=Tt.g,A.b=Tt.b,A}getStyle(A=je){Se.fromWorkingColorSpace(Tt.copy(this),A);const e=Tt.r,t=Tt.g,i=Tt.b;return A!==je?`color(${A} ${e.toFixed(3)} ${t.toFixed(3)} ${i.toFixed(3)})`:`rgb(${Math.round(e*255)},${Math.round(t*255)},${Math.round(i*255)})`}offsetHSL(A,e,t){return this.getHSL(pr),this.setHSL(pr.h+A,pr.s+e,pr.l+t)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,e){return this.r=A.r+e.r,this.g=A.g+e.g,this.b=A.b+e.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,e){return this.r+=(A.r-this.r)*e,this.g+=(A.g-this.g)*e,this.b+=(A.b-this.b)*e,this}lerpColors(A,e,t){return this.r=A.r+(e.r-A.r)*t,this.g=A.g+(e.g-A.g)*t,this.b=A.b+(e.b-A.b)*t,this}lerpHSL(A,e){this.getHSL(pr),A.getHSL(mh);const t=fl(pr.h,mh.h,e),i=fl(pr.s,mh.s,e),r=fl(pr.l,mh.l,e);return this.setHSL(t,i,r),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const e=this.r,t=this.g,i=this.b,r=A.elements;return this.r=r[0]*e+r[3]*t+r[6]*i,this.g=r[1]*e+r[4]*t+r[7]*i,this.b=r[2]*e+r[5]*t+r[8]*i,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,e=0){return this.r=A[e],this.g=A[e+1],this.b=A[e+2],this}toArray(A=[],e=0){return A[e]=this.r,A[e+1]=this.g,A[e+2]=this.b,A}fromBufferAttribute(A,e){return this.r=A.getX(e),this.g=A.getY(e),this.b=A.getZ(e),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}};const Tt=new KA;KA.NAMES=pw;let SM=0;class an extends ns{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:SM++}),this.uuid=mi(),this.name="",this.type="Material",this.blending=cr,this.side=Bt,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=qd,this.blendDst=Nd,this.blendEquation=ts,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new KA(0,0,0),this.blendAlpha=0,this.depthFunc=$c,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Qy,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=so,this.stencilZFail=so,this.stencilZPass=so,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const e in A){const t=A[e];if(t===void 0){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];if(i===void 0){console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(t):i&&i.isVector3&&t&&t.isVector3?i.copy(t):this[e]=t}}toJSON(A){const e=A===void 0||typeof A=="string";e&&(A={textures:{},images:{}});const t={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};t.uuid=this.uuid,t.type=this.type,this.name!==""&&(t.name=this.name),this.color&&this.color.isColor&&(t.color=this.color.getHex()),this.roughness!==void 0&&(t.roughness=this.roughness),this.metalness!==void 0&&(t.metalness=this.metalness),this.sheen!==void 0&&(t.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(t.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(t.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(t.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(t.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(t.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(t.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(t.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(t.shininess=this.shininess),this.clearcoat!==void 0&&(t.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(t.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(t.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(t.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(t.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,t.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(t.dispersion=this.dispersion),this.iridescence!==void 0&&(t.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(t.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(t.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(t.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(t.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(t.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(t.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(t.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(t.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(t.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(t.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(t.lightMap=this.lightMap.toJSON(A).uuid,t.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(t.aoMap=this.aoMap.toJSON(A).uuid,t.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(t.bumpMap=this.bumpMap.toJSON(A).uuid,t.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(t.normalMap=this.normalMap.toJSON(A).uuid,t.normalMapType=this.normalMapType,t.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(t.displacementMap=this.displacementMap.toJSON(A).uuid,t.displacementScale=this.displacementScale,t.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(t.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(t.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(t.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(t.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(t.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(t.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(t.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(t.combine=this.combine)),this.envMapRotation!==void 0&&(t.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(t.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(t.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(t.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(t.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(t.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(t.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(t.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(t.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(t.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(t.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(t.size=this.size),this.shadowSide!==null&&(t.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(t.sizeAttenuation=this.sizeAttenuation),this.blending!==cr&&(t.blending=this.blending),this.side!==Bt&&(t.side=this.side),this.vertexColors===!0&&(t.vertexColors=!0),this.opacity<1&&(t.opacity=this.opacity),this.transparent===!0&&(t.transparent=!0),this.blendSrc!==qd&&(t.blendSrc=this.blendSrc),this.blendDst!==Nd&&(t.blendDst=this.blendDst),this.blendEquation!==ts&&(t.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(t.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(t.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(t.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(t.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(t.blendAlpha=this.blendAlpha),this.depthFunc!==$c&&(t.depthFunc=this.depthFunc),this.depthTest===!1&&(t.depthTest=this.depthTest),this.depthWrite===!1&&(t.depthWrite=this.depthWrite),this.colorWrite===!1&&(t.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(t.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Qy&&(t.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(t.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(t.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==so&&(t.stencilFail=this.stencilFail),this.stencilZFail!==so&&(t.stencilZFail=this.stencilZFail),this.stencilZPass!==so&&(t.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(t.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(t.rotation=this.rotation),this.polygonOffset===!0&&(t.polygonOffset=!0),this.polygonOffsetFactor!==0&&(t.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(t.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(t.linewidth=this.linewidth),this.dashSize!==void 0&&(t.dashSize=this.dashSize),this.gapSize!==void 0&&(t.gapSize=this.gapSize),this.scale!==void 0&&(t.scale=this.scale),this.dithering===!0&&(t.dithering=!0),this.alphaTest>0&&(t.alphaTest=this.alphaTest),this.alphaHash===!0&&(t.alphaHash=!0),this.alphaToCoverage===!0&&(t.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(t.premultipliedAlpha=!0),this.forceSinglePass===!0&&(t.forceSinglePass=!0),this.wireframe===!0&&(t.wireframe=!0),this.wireframeLinewidth>1&&(t.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(t.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(t.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(t.flatShading=!0),this.visible===!1&&(t.visible=!1),this.toneMapped===!1&&(t.toneMapped=!1),this.fog===!1&&(t.fog=!1),Object.keys(this.userData).length>0&&(t.userData=this.userData);function i(r){const s=[];for(const o in r){const a=r[o];delete a.metadata,s.push(a)}return s}if(e){const r=i(A.textures),s=i(A.images);r.length>0&&(t.textures=r),s.length>0&&(t.images=s)}return t}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.blendColor.copy(A.blendColor),this.blendAlpha=A.blendAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const e=A.clippingPlanes;let t=null;if(e!==null){const i=e.length;t=new Array(i);for(let r=0;r!==i;++r)t[r]=e[r].clone()}return this.clippingPlanes=t,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}}class ti extends an{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new KA(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new on,this.combine=ly,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}const jn=MM();function MM(){const n=new ArrayBuffer(4),A=new Float32Array(n),e=new Uint32Array(n),t=new Uint32Array(512),i=new Uint32Array(512);for(let a=0;a<256;++a){const l=a-127;l<-27?(t[a]=0,t[a|256]=32768,i[a]=24,i[a|256]=24):l<-14?(t[a]=1024>>-l-14,t[a|256]=1024>>-l-14|32768,i[a]=-l-1,i[a|256]=-l-1):l<=15?(t[a]=l+15<<10,t[a|256]=l+15<<10|32768,i[a]=13,i[a|256]=13):l<128?(t[a]=31744,t[a|256]=64512,i[a]=24,i[a|256]=24):(t[a]=31744,t[a|256]=64512,i[a]=13,i[a|256]=13)}const r=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let a=1;a<1024;++a){let l=a<<13,u=0;for(;!(l&8388608);)l<<=1,u-=8388608;l&=-8388609,u+=947912704,r[a]=l|u}for(let a=1024;a<2048;++a)r[a]=939524096+(a-1024<<13);for(let a=1;a<31;++a)s[a]=a<<23;s[31]=1199570944,s[32]=2147483648;for(let a=33;a<63;++a)s[a]=2147483648+(a-32<<23);s[63]=3347054592;for(let a=1;a<64;++a)a!==32&&(o[a]=1024);return{floatView:A,uint32View:e,baseTable:t,shiftTable:i,mantissaTable:r,exponentTable:s,offsetTable:o}}function PM(n){Math.abs(n)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),n=Qe(n,-65504,65504),jn.floatView[0]=n;const A=jn.uint32View[0],e=A>>23&511;return jn.baseTable[e]+((A&8388607)>>jn.shiftTable[e])}function TM(n){const A=n>>10;return jn.uint32View[0]=jn.mantissaTable[jn.offsetTable[A]+(n&1023)]+jn.exponentTable[A],jn.floatView[0]}const ii={toHalfFloat:PM,fromHalfFloat:TM},tt=new O,vh=new uA;class ce{constructor(A,e,t=!1){if(Array.isArray(A))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=A,this.itemSize=e,this.count=A!==void 0?A.length/e:0,this.normalized=t,this.usage=Vd,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=Me,this.version=0}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return iw("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,e){this.updateRanges.push({start:A,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.name=A.name,this.array=new A.array.constructor(A.array),this.itemSize=A.itemSize,this.count=A.count,this.normalized=A.normalized,this.usage=A.usage,this.gpuType=A.gpuType,this}copyAt(A,e,t){A*=this.itemSize,t*=e.itemSize;for(let i=0,r=this.itemSize;i<r;i++)this.array[A+i]=e.array[t+i];return this}copyArray(A){return this.array.set(A),this}applyMatrix3(A){if(this.itemSize===2)for(let e=0,t=this.count;e<t;e++)vh.fromBufferAttribute(this,e),vh.applyMatrix3(A),this.setXY(e,vh.x,vh.y);else if(this.itemSize===3)for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyMatrix3(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}applyMatrix4(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyMatrix4(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}applyNormalMatrix(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.applyNormalMatrix(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}transformDirection(A){for(let e=0,t=this.count;e<t;e++)tt.fromBufferAttribute(this,e),tt.transformDirection(A),this.setXYZ(e,tt.x,tt.y,tt.z);return this}set(A,e=0){return this.array.set(A,e),this}getComponent(A,e){let t=this.array[A*this.itemSize+e];return this.normalized&&(t=ji(t,this.array)),t}setComponent(A,e,t){return this.normalized&&(t=Te(t,this.array)),this.array[A*this.itemSize+e]=t,this}getX(A){let e=this.array[A*this.itemSize];return this.normalized&&(e=ji(e,this.array)),e}setX(A,e){return this.normalized&&(e=Te(e,this.array)),this.array[A*this.itemSize]=e,this}getY(A){let e=this.array[A*this.itemSize+1];return this.normalized&&(e=ji(e,this.array)),e}setY(A,e){return this.normalized&&(e=Te(e,this.array)),this.array[A*this.itemSize+1]=e,this}getZ(A){let e=this.array[A*this.itemSize+2];return this.normalized&&(e=ji(e,this.array)),e}setZ(A,e){return this.normalized&&(e=Te(e,this.array)),this.array[A*this.itemSize+2]=e,this}getW(A){let e=this.array[A*this.itemSize+3];return this.normalized&&(e=ji(e,this.array)),e}setW(A,e){return this.normalized&&(e=Te(e,this.array)),this.array[A*this.itemSize+3]=e,this}setXY(A,e,t){return A*=this.itemSize,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array)),this.array[A+0]=e,this.array[A+1]=t,this}setXYZ(A,e,t,i){return A*=this.itemSize,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array),i=Te(i,this.array)),this.array[A+0]=e,this.array[A+1]=t,this.array[A+2]=i,this}setXYZW(A,e,t,i,r){return A*=this.itemSize,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array),i=Te(i,this.array),r=Te(r,this.array)),this.array[A+0]=e,this.array[A+1]=t,this.array[A+2]=i,this.array[A+3]=r,this}onUpload(A){return this.onUploadCallback=A,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const A={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(A.name=this.name),this.usage!==Vd&&(A.usage=this.usage),A}}class gw extends ce{constructor(A,e,t){super(new Uint16Array(A),e,t)}}class mw extends ce{constructor(A,e,t){super(new Uint32Array(A),e,t)}}class Dt extends ce{constructor(A,e,t){super(new Float32Array(A),e,t)}}let DM=0;const yi=new zA,gp=new Ie,Co=new O,ni=new ye,vl=new ye,pt=new O;class qe extends ns{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:DM++}),this.uuid=mi(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(A){return Array.isArray(A)?this.index=new(ew(A)?mw:gw)(A,1):this.index=A,this}getAttribute(A){return this.attributes[A]}setAttribute(A,e){return this.attributes[A]=e,this}deleteAttribute(A){return delete this.attributes[A],this}hasAttribute(A){return this.attributes[A]!==void 0}addGroup(A,e,t=0){this.groups.push({start:A,count:e,materialIndex:t})}clearGroups(){this.groups=[]}setDrawRange(A,e){this.drawRange.start=A,this.drawRange.count=e}applyMatrix4(A){const e=this.attributes.position;e!==void 0&&(e.applyMatrix4(A),e.needsUpdate=!0);const t=this.attributes.normal;if(t!==void 0){const r=new le().getNormalMatrix(A);t.applyNormalMatrix(r),t.needsUpdate=!0}const i=this.attributes.tangent;return i!==void 0&&(i.transformDirection(A),i.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(A){return yi.makeRotationFromQuaternion(A),this.applyMatrix4(yi),this}rotateX(A){return yi.makeRotationX(A),this.applyMatrix4(yi),this}rotateY(A){return yi.makeRotationY(A),this.applyMatrix4(yi),this}rotateZ(A){return yi.makeRotationZ(A),this.applyMatrix4(yi),this}translate(A,e,t){return yi.makeTranslation(A,e,t),this.applyMatrix4(yi),this}scale(A,e,t){return yi.makeScale(A,e,t),this.applyMatrix4(yi),this}lookAt(A){return gp.lookAt(A),gp.updateMatrix(),this.applyMatrix4(gp.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Co).negate(),this.translate(Co.x,Co.y,Co.z),this}setFromPoints(A){const e=[];for(let t=0,i=A.length;t<i;t++){const r=A[t];e.push(r.x,r.y,r.z||0)}return this.setAttribute("position",new Dt(e,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new ye);const A=this.attributes.position,e=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new O(-1/0,-1/0,-1/0),new O(1/0,1/0,1/0));return}if(A!==void 0){if(this.boundingBox.setFromBufferAttribute(A),e)for(let t=0,i=e.length;t<i;t++){const r=e[t];ni.setFromBufferAttribute(r),this.morphTargetsRelative?(pt.addVectors(this.boundingBox.min,ni.min),this.boundingBox.expandByPoint(pt),pt.addVectors(this.boundingBox.max,ni.max),this.boundingBox.expandByPoint(pt)):(this.boundingBox.expandByPoint(ni.min),this.boundingBox.expandByPoint(ni.max))}}else this.boundingBox.makeEmpty();(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.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Ai);const A=this.attributes.position,e=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new O,1/0);return}if(A){const t=this.boundingSphere.center;if(ni.setFromBufferAttribute(A),e)for(let r=0,s=e.length;r<s;r++){const o=e[r];vl.setFromBufferAttribute(o),this.morphTargetsRelative?(pt.addVectors(ni.min,vl.min),ni.expandByPoint(pt),pt.addVectors(ni.max,vl.max),ni.expandByPoint(pt)):(ni.expandByPoint(vl.min),ni.expandByPoint(vl.max))}ni.getCenter(t);let i=0;for(let r=0,s=A.count;r<s;r++)pt.fromBufferAttribute(A,r),i=Math.max(i,t.distanceToSquared(pt));if(e)for(let r=0,s=e.length;r<s;r++){const o=e[r],a=this.morphTargetsRelative;for(let l=0,u=o.count;l<u;l++)pt.fromBufferAttribute(o,l),a&&(Co.fromBufferAttribute(A,l),pt.add(Co)),i=Math.max(i,t.distanceToSquared(pt))}this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const A=this.index,e=this.attributes;if(A===null||e.position===void 0||e.normal===void 0||e.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const t=e.position,i=e.normal,r=e.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new ce(new Float32Array(4*t.count),4));const s=this.getAttribute("tangent"),o=[],a=[];for(let S=0;S<t.count;S++)o[S]=new O,a[S]=new O;const l=new O,u=new O,c=new O,h=new uA,f=new uA,p=new uA,m=new O,d=new O;function g(S,b,I){l.fromBufferAttribute(t,S),u.fromBufferAttribute(t,b),c.fromBufferAttribute(t,I),h.fromBufferAttribute(r,S),f.fromBufferAttribute(r,b),p.fromBufferAttribute(r,I),u.sub(l),c.sub(l),f.sub(h),p.sub(h);const D=1/(f.x*p.y-p.x*f.y);isFinite(D)&&(m.copy(u).multiplyScalar(p.y).addScaledVector(c,-f.y).multiplyScalar(D),d.copy(c).multiplyScalar(f.x).addScaledVector(u,-p.x).multiplyScalar(D),o[S].add(m),o[b].add(m),o[I].add(m),a[S].add(d),a[b].add(d),a[I].add(d))}let y=this.groups;y.length===0&&(y=[{start:0,count:A.count}]);for(let S=0,b=y.length;S<b;++S){const I=y[S],D=I.start,P=I.count;for(let M=D,T=D+P;M<T;M+=3)g(A.getX(M+0),A.getX(M+1),A.getX(M+2))}const v=new O,w=new O,C=new O,_=new O;function x(S){C.fromBufferAttribute(i,S),_.copy(C);const b=o[S];v.copy(b),v.sub(C.multiplyScalar(C.dot(b))).normalize(),w.crossVectors(_,b);const D=w.dot(a[S])<0?-1:1;s.setXYZW(S,v.x,v.y,v.z,D)}for(let S=0,b=y.length;S<b;++S){const I=y[S],D=I.start,P=I.count;for(let M=D,T=D+P;M<T;M+=3)x(A.getX(M+0)),x(A.getX(M+1)),x(A.getX(M+2))}}computeVertexNormals(){const A=this.index,e=this.getAttribute("position");if(e!==void 0){let t=this.getAttribute("normal");if(t===void 0)t=new ce(new Float32Array(e.count*3),3),this.setAttribute("normal",t);else for(let h=0,f=t.count;h<f;h++)t.setXYZ(h,0,0,0);const i=new O,r=new O,s=new O,o=new O,a=new O,l=new O,u=new O,c=new O;if(A)for(let h=0,f=A.count;h<f;h+=3){const p=A.getX(h+0),m=A.getX(h+1),d=A.getX(h+2);i.fromBufferAttribute(e,p),r.fromBufferAttribute(e,m),s.fromBufferAttribute(e,d),u.subVectors(s,r),c.subVectors(i,r),u.cross(c),o.fromBufferAttribute(t,p),a.fromBufferAttribute(t,m),l.fromBufferAttribute(t,d),o.add(u),a.add(u),l.add(u),t.setXYZ(p,o.x,o.y,o.z),t.setXYZ(m,a.x,a.y,a.z),t.setXYZ(d,l.x,l.y,l.z)}else for(let h=0,f=e.count;h<f;h+=3)i.fromBufferAttribute(e,h+0),r.fromBufferAttribute(e,h+1),s.fromBufferAttribute(e,h+2),u.subVectors(s,r),c.subVectors(i,r),u.cross(c),t.setXYZ(h+0,u.x,u.y,u.z),t.setXYZ(h+1,u.x,u.y,u.z),t.setXYZ(h+2,u.x,u.y,u.z);this.normalizeNormals(),t.needsUpdate=!0}}normalizeNormals(){const A=this.attributes.normal;for(let e=0,t=A.count;e<t;e++)pt.fromBufferAttribute(A,e),pt.normalize(),A.setXYZ(e,pt.x,pt.y,pt.z)}toNonIndexed(){function A(o,a){const l=o.array,u=o.itemSize,c=o.normalized,h=new l.constructor(a.length*u);let f=0,p=0;for(let m=0,d=a.length;m<d;m++){o.isInterleavedBufferAttribute?f=a[m]*o.data.stride+o.offset:f=a[m]*u;for(let g=0;g<u;g++)h[p++]=l[f++]}return new ce(h,u,c)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const e=new qe,t=this.index.array,i=this.attributes;for(const o in i){const a=i[o],l=A(a,t);e.setAttribute(o,l)}const r=this.morphAttributes;for(const o in r){const a=[],l=r[o];for(let u=0,c=l.length;u<c;u++){const h=l[u],f=A(h,t);a.push(f)}e.morphAttributes[o]=a}e.morphTargetsRelative=this.morphTargetsRelative;const s=this.groups;for(let o=0,a=s.length;o<a;o++){const l=s[o];e.addGroup(l.start,l.count,l.materialIndex)}return e}toJSON(){const A={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(A.uuid=this.uuid,A.type=this.type,this.name!==""&&(A.name=this.name),Object.keys(this.userData).length>0&&(A.userData=this.userData),this.parameters!==void 0){const a=this.parameters;for(const l in a)a[l]!==void 0&&(A[l]=a[l]);return A}A.data={attributes:{}};const e=this.index;e!==null&&(A.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const t=this.attributes;for(const a in t){const l=t[a];A.data.attributes[a]=l.toJSON(A.data)}const i={};let r=!1;for(const a in this.morphAttributes){const l=this.morphAttributes[a],u=[];for(let c=0,h=l.length;c<h;c++){const f=l[c];u.push(f.toJSON(A.data))}u.length>0&&(i[a]=u,r=!0)}r&&(A.data.morphAttributes=i,A.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(A.data.groups=JSON.parse(JSON.stringify(s)));const o=this.boundingSphere;return o!==null&&(A.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=A.name;const t=A.index;t!==null&&this.setIndex(t.clone(e));const i=A.attributes;for(const l in i){const u=i[l];this.setAttribute(l,u.clone(e))}const r=A.morphAttributes;for(const l in r){const u=[],c=r[l];for(let h=0,f=c.length;h<f;h++)u.push(c[h].clone(e));this.morphAttributes[l]=u}this.morphTargetsRelative=A.morphTargetsRelative;const s=A.groups;for(let l=0,u=s.length;l<u;l++){const c=s[l];this.addGroup(c.start,c.count,c.materialIndex)}const o=A.boundingBox;o!==null&&(this.boundingBox=o.clone());const a=A.boundingSphere;return a!==null&&(this.boundingSphere=a.clone()),this.drawRange.start=A.drawRange.start,this.drawRange.count=A.drawRange.count,this.userData=A.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const vw=new zA,as=new os,yh=new Ai,yw=new O,xo=new O,Io=new O,bo=new O,mp=new O,wh=new O,Ch=new uA,xh=new uA,Ih=new uA,ww=new O,Cw=new O,xw=new O,bh=new O,_h=new O;let Pe=class extends Ie{constructor(A=new qe,e=new ti){super(),this.isMesh=!0,this.type="Mesh",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),A.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=A.morphTargetInfluences.slice()),A.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},A.morphTargetDictionary)),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}getVertexPosition(A,e){const t=this.geometry,i=t.attributes.position,r=t.morphAttributes.position,s=t.morphTargetsRelative;e.fromBufferAttribute(i,A);const o=this.morphTargetInfluences;if(r&&o){wh.set(0,0,0);for(let a=0,l=r.length;a<l;a++){const u=o[a],c=r[a];u!==0&&(mp.fromBufferAttribute(c,A),s?wh.addScaledVector(mp,u):wh.addScaledVector(mp.sub(e),u))}e.add(wh)}return e}raycast(A,e){const t=this.geometry,i=this.material,r=this.matrixWorld;i!==void 0&&(t.boundingSphere===null&&t.computeBoundingSphere(),yh.copy(t.boundingSphere),yh.applyMatrix4(r),as.copy(A.ray).recast(A.near),!(yh.containsPoint(as.origin)===!1&&(as.intersectSphere(yh,yw)===null||as.origin.distanceToSquared(yw)>(A.far-A.near)**2))&&(vw.copy(r).invert(),as.copy(A.ray).applyMatrix4(vw),!(t.boundingBox!==null&&as.intersectsBox(t.boundingBox)===!1)&&this._computeIntersections(A,e,as)))}_computeIntersections(A,e,t){let i;const r=this.geometry,s=this.material,o=r.index,a=r.attributes.position,l=r.attributes.uv,u=r.attributes.uv1,c=r.attributes.normal,h=r.groups,f=r.drawRange;if(o!==null)if(Array.isArray(s))for(let p=0,m=h.length;p<m;p++){const d=h[p],g=s[d.materialIndex],y=Math.max(d.start,f.start),v=Math.min(o.count,Math.min(d.start+d.count,f.start+f.count));for(let w=y,C=v;w<C;w+=3){const _=o.getX(w),x=o.getX(w+1),S=o.getX(w+2);i=Sh(this,g,A,t,l,u,c,_,x,S),i&&(i.faceIndex=Math.floor(w/3),i.face.materialIndex=d.materialIndex,e.push(i))}}else{const p=Math.max(0,f.start),m=Math.min(o.count,f.start+f.count);for(let d=p,g=m;d<g;d+=3){const y=o.getX(d),v=o.getX(d+1),w=o.getX(d+2);i=Sh(this,s,A,t,l,u,c,y,v,w),i&&(i.faceIndex=Math.floor(d/3),e.push(i))}}else if(a!==void 0)if(Array.isArray(s))for(let p=0,m=h.length;p<m;p++){const d=h[p],g=s[d.materialIndex],y=Math.max(d.start,f.start),v=Math.min(a.count,Math.min(d.start+d.count,f.start+f.count));for(let w=y,C=v;w<C;w+=3){const _=w,x=w+1,S=w+2;i=Sh(this,g,A,t,l,u,c,_,x,S),i&&(i.faceIndex=Math.floor(w/3),i.face.materialIndex=d.materialIndex,e.push(i))}}else{const p=Math.max(0,f.start),m=Math.min(a.count,f.start+f.count);for(let d=p,g=m;d<g;d+=3){const y=d,v=d+1,w=d+2;i=Sh(this,s,A,t,l,u,c,y,v,w),i&&(i.faceIndex=Math.floor(d/3),e.push(i))}}}};function EM(n,A,e,t,i,r,s,o){let a;if(A.side===dt?a=t.intersectTriangle(s,r,i,!0,o):a=t.intersectTriangle(i,r,s,A.side===Bt,o),a===null)return null;_h.copy(o),_h.applyMatrix4(n.matrixWorld);const l=e.ray.origin.distanceTo(_h);return l<e.near||l>e.far?null:{distance:l,point:_h.clone(),object:n}}function Sh(n,A,e,t,i,r,s,o,a,l){n.getVertexPosition(o,xo),n.getVertexPosition(a,Io),n.getVertexPosition(l,bo);const u=EM(n,A,e,t,xo,Io,bo,bh);if(u){i&&(Ch.fromBufferAttribute(i,o),xh.fromBufferAttribute(i,a),Ih.fromBufferAttribute(i,l),u.uv=Ue.getInterpolation(bh,xo,Io,bo,Ch,xh,Ih,new uA)),r&&(Ch.fromBufferAttribute(r,o),xh.fromBufferAttribute(r,a),Ih.fromBufferAttribute(r,l),u.uv1=Ue.getInterpolation(bh,xo,Io,bo,Ch,xh,Ih,new uA)),s&&(ww.fromBufferAttribute(s,o),Cw.fromBufferAttribute(s,a),xw.fromBufferAttribute(s,l),u.normal=Ue.getInterpolation(bh,xo,Io,bo,ww,Cw,xw,new O),u.normal.dot(t.direction)>0&&u.normal.multiplyScalar(-1));const c={a:o,b:a,c:l,normal:new O,materialIndex:0};Ue.getNormal(xo,Io,bo,c.normal),u.face=c}return u}class ls extends qe{constructor(A=1,e=1,t=1,i=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:e,depth:t,widthSegments:i,heightSegments:r,depthSegments:s};const o=this;i=Math.floor(i),r=Math.floor(r),s=Math.floor(s);const a=[],l=[],u=[],c=[];let h=0,f=0;p("z","y","x",-1,-1,t,e,A,s,r,0),p("z","y","x",1,-1,t,e,-A,s,r,1),p("x","z","y",1,1,A,t,e,i,s,2),p("x","z","y",1,-1,A,t,-e,i,s,3),p("x","y","z",1,-1,A,e,t,i,r,4),p("x","y","z",-1,-1,A,e,-t,i,r,5),this.setIndex(a),this.setAttribute("position",new Dt(l,3)),this.setAttribute("normal",new Dt(u,3)),this.setAttribute("uv",new Dt(c,2));function p(m,d,g,y,v,w,C,_,x,S,b){const I=w/x,D=C/S,P=w/2,M=C/2,T=_/2,q=x+1,B=S+1;let W=0,K=0;const U=new O;for(let k=0;k<B;k++){const N=k*D-M;for(let Y=0;Y<q;Y++){const X=Y*I-P;U[m]=X*y,U[d]=N*v,U[g]=T,l.push(U.x,U.y,U.z),U[m]=0,U[d]=0,U[g]=_>0?1:-1,u.push(U.x,U.y,U.z),c.push(Y/x),c.push(1-k/S),W+=1}}for(let k=0;k<S;k++)for(let N=0;N<x;N++){const Y=h+N+q*k,X=h+N+q*(k+1),j=h+(N+1)+q*(k+1),G=h+(N+1)+q*k;a.push(Y,X,G),a.push(X,j,G),K+=6}o.addGroup(f,K,b),f+=K,h+=W}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new ls(A.width,A.height,A.depth,A.widthSegments,A.heightSegments,A.depthSegments)}}function _o(n){const A={};for(const e in n){A[e]={};for(const t in n[e]){const i=n[e][t];i&&(i.isColor||i.isMatrix3||i.isMatrix4||i.isVector2||i.isVector3||i.isVector4||i.isTexture||i.isQuaternion)?i.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),A[e][t]=null):A[e][t]=i.clone():Array.isArray(i)?A[e][t]=i.slice():A[e][t]=i}}return A}function Rt(n){const A={};for(let e=0;e<n.length;e++){const t=_o(n[e]);for(const i in t)A[i]=t[i]}return A}function LM(n){const A=[];for(let e=0;e<n.length;e++)A.push(n[e].clone());return A}function Iw(n){const A=n.getRenderTarget();return A===null?n.outputColorSpace:A.isXRRenderTarget===!0?A.texture.colorSpace:Se.workingColorSpace}const yl={clone:_o,merge:Rt};var OM=`void main() {
6
6
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
7
7
  }`,qM=`void main() {
8
8
  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
@@ -41,7 +41,7 @@
41
41
  gl_FragColor = texture2D( tEquirect, sampleUV );
42
42
 
43
43
  }
44
- `},i=new ls(5,5,5),r=new $e({name:"CubemapFromEquirect",uniforms:_o(t.uniforms),vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,side:dt,blending:Mt});r.uniforms.tEquirect.value=e;const s=new Te(i,r),o=e.minFilter;return e.minFilter===zi&&(e.minFilter=we),new NM(1,10,this).update(A,s),e.minFilter=o,s.geometry.dispose(),s.material.dispose(),this}clear(A,e,t,i){const r=A.getRenderTarget();for(let s=0;s<6;s++)A.setRenderTarget(this,s),A.clear(e,t,i);A.setRenderTarget(r)}}const vp=new O,zM=new O,RM=new le;class Ut{constructor(A=new O(1,0,0),e=0){this.isPlane=!0,this.normal=A,this.constant=e}set(A,e){return this.normal.copy(A),this.constant=e,this}setComponents(A,e,t,i){return this.normal.set(A,e,t),this.constant=i,this}setFromNormalAndCoplanarPoint(A,e){return this.normal.copy(A),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(A,e,t){const i=vp.subVectors(t,e).cross(zM.subVectors(A,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,A),this}copy(A){return this.normal.copy(A.normal),this.constant=A.constant,this}normalize(){const A=1/this.normal.length();return this.normal.multiplyScalar(A),this.constant*=A,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(A){return this.normal.dot(A)+this.constant}distanceToSphere(A){return this.distanceToPoint(A.center)-A.radius}projectPoint(A,e){return e.copy(A).addScaledVector(this.normal,-this.distanceToPoint(A))}intersectLine(A,e){const t=A.delta(vp),i=this.normal.dot(t);if(i===0)return this.distanceToPoint(A.start)===0?e.copy(A.start):null;const r=-(A.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(A.start).addScaledVector(t,r)}intersectsLine(A){const e=this.distanceToPoint(A.start),t=this.distanceToPoint(A.end);return e<0&&t>0||t<0&&e>0}intersectsBox(A){return A.intersectsPlane(this)}intersectsSphere(A){return A.intersectsPlane(this)}coplanarPoint(A){return A.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(A,e){const t=e||RM.getNormalMatrix(A),i=this.coplanarPoint(vp).applyMatrix4(A),r=this.normal.applyMatrix3(t).normalize();return this.constant=-i.dot(r),this}translate(A){return this.constant-=A.dot(this.normal),this}equals(A){return A.normal.equals(this.normal)&&A.constant===this.constant}clone(){return new this.constructor().copy(this)}}const cs=new Ai,Mh=new O;class yp{constructor(A=new Ut,e=new Ut,t=new Ut,i=new Ut,r=new Ut,s=new Ut){this.planes=[A,e,t,i,r,s]}set(A,e,t,i,r,s){const o=this.planes;return o[0].copy(A),o[1].copy(e),o[2].copy(t),o[3].copy(i),o[4].copy(r),o[5].copy(s),this}copy(A){const e=this.planes;for(let t=0;t<6;t++)e[t].copy(A.planes[t]);return this}setFromProjectionMatrix(A,e=qn){const t=this.planes,i=A.elements,r=i[0],s=i[1],o=i[2],a=i[3],l=i[4],u=i[5],c=i[6],h=i[7],f=i[8],p=i[9],m=i[10],d=i[11],g=i[12],y=i[13],v=i[14],w=i[15];if(t[0].setComponents(a-r,h-l,d-f,w-g).normalize(),t[1].setComponents(a+r,h+l,d+f,w+g).normalize(),t[2].setComponents(a+s,h+u,d+p,w+y).normalize(),t[3].setComponents(a-s,h-u,d-p,w-y).normalize(),t[4].setComponents(a-o,h-c,d-m,w-v).normalize(),e===qn)t[5].setComponents(a+o,h+c,d+m,w+v).normalize();else if(e===sh)t[5].setComponents(o,c,m,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(A){if(A.boundingSphere!==void 0)A.boundingSphere===null&&A.computeBoundingSphere(),cs.copy(A.boundingSphere).applyMatrix4(A.matrixWorld);else{const e=A.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),cs.copy(e.boundingSphere).applyMatrix4(A.matrixWorld)}return this.intersectsSphere(cs)}intersectsSprite(A){return cs.center.set(0,0,0),cs.radius=.7071067811865476,cs.applyMatrix4(A.matrixWorld),this.intersectsSphere(cs)}intersectsSphere(A){const e=this.planes,t=A.center,i=-A.radius;for(let r=0;r<6;r++)if(e[r].distanceToPoint(t)<i)return!1;return!0}intersectsBox(A){const e=this.planes;for(let t=0;t<6;t++){const i=e[t];if(Mh.x=i.normal.x>0?A.max.x:A.min.x,Mh.y=i.normal.y>0?A.max.y:A.min.y,Mh.z=i.normal.z>0?A.max.z:A.min.z,i.distanceToPoint(Mh)<0)return!1}return!0}containsPoint(A){const e=this.planes;for(let t=0;t<6;t++)if(e[t].distanceToPoint(A)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function Pw(){let n=null,A=!1,e=null,t=null;function i(r,s){e(r,s),t=n.requestAnimationFrame(i)}return{start:function(){A!==!0&&e!==null&&(t=n.requestAnimationFrame(i),A=!0)},stop:function(){n.cancelAnimationFrame(t),A=!1},setAnimationLoop:function(r){e=r},setContext:function(r){n=r}}}function kM(n){const A=new WeakMap;function e(o,a){const l=o.array,u=o.usage,c=l.byteLength,h=n.createBuffer();n.bindBuffer(a,h),n.bufferData(a,l,u),o.onUploadCallback();let f;if(l instanceof Float32Array)f=n.FLOAT;else if(l instanceof Uint16Array)o.isFloat16BufferAttribute?f=n.HALF_FLOAT:f=n.UNSIGNED_SHORT;else if(l instanceof Int16Array)f=n.SHORT;else if(l instanceof Uint32Array)f=n.UNSIGNED_INT;else if(l instanceof Int32Array)f=n.INT;else if(l instanceof Int8Array)f=n.BYTE;else if(l instanceof Uint8Array)f=n.UNSIGNED_BYTE;else if(l instanceof Uint8ClampedArray)f=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+l);return{buffer:h,type:f,bytesPerElement:l.BYTES_PER_ELEMENT,version:o.version,size:c}}function t(o,a,l){const u=a.array,c=a._updateRange,h=a.updateRanges;if(n.bindBuffer(l,o),c.count===-1&&h.length===0&&n.bufferSubData(l,0,u),h.length!==0){for(let f=0,p=h.length;f<p;f++){const m=h[f];n.bufferSubData(l,m.start*u.BYTES_PER_ELEMENT,u,m.start,m.count)}a.clearUpdateRanges()}c.count!==-1&&(n.bufferSubData(l,c.offset*u.BYTES_PER_ELEMENT,u,c.offset,c.count),c.count=-1),a.onUploadCallback()}function i(o){return o.isInterleavedBufferAttribute&&(o=o.data),A.get(o)}function r(o){o.isInterleavedBufferAttribute&&(o=o.data);const a=A.get(o);a&&(n.deleteBuffer(a.buffer),A.delete(o))}function s(o,a){if(o.isGLBufferAttribute){const u=A.get(o);(!u||u.version<o.version)&&A.set(o,{buffer:o.buffer,type:o.type,bytesPerElement:o.elementSize,version:o.version});return}o.isInterleavedBufferAttribute&&(o=o.data);const l=A.get(o);if(l===void 0)A.set(o,e(o,a));else if(l.version<o.version){if(l.size!==o.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");t(l.buffer,o,a),l.version=o.version}}return{get:i,remove:r,update:s}}class Kn extends qe{constructor(A=1,e=1,t=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:A,height:e,widthSegments:t,heightSegments:i};const r=A/2,s=e/2,o=Math.floor(t),a=Math.floor(i),l=o+1,u=a+1,c=A/o,h=e/a,f=[],p=[],m=[],d=[];for(let g=0;g<u;g++){const y=g*h-s;for(let v=0;v<l;v++){const w=v*c-r;p.push(w,-y,0),m.push(0,0,1),d.push(v/o),d.push(1-g/a)}}for(let g=0;g<a;g++)for(let y=0;y<o;y++){const v=y+l*g,w=y+l*(g+1),C=y+1+l*(g+1),_=y+1+l*g;f.push(v,w,_),f.push(w,C,_)}this.setIndex(f),this.setAttribute("position",new Dt(p,3)),this.setAttribute("normal",new Dt(m,3)),this.setAttribute("uv",new Dt(d,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Kn(A.width,A.height,A.widthSegments,A.heightSegments)}}var jM=`#ifdef USE_ALPHAHASH
44
+ `},i=new ls(5,5,5),r=new $e({name:"CubemapFromEquirect",uniforms:_o(t.uniforms),vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,side:dt,blending:Mt});r.uniforms.tEquirect.value=e;const s=new Pe(i,r),o=e.minFilter;return e.minFilter===zi&&(e.minFilter=we),new NM(1,10,this).update(A,s),e.minFilter=o,s.geometry.dispose(),s.material.dispose(),this}clear(A,e,t,i){const r=A.getRenderTarget();for(let s=0;s<6;s++)A.setRenderTarget(this,s),A.clear(e,t,i);A.setRenderTarget(r)}}const vp=new O,zM=new O,RM=new le;class Ut{constructor(A=new O(1,0,0),e=0){this.isPlane=!0,this.normal=A,this.constant=e}set(A,e){return this.normal.copy(A),this.constant=e,this}setComponents(A,e,t,i){return this.normal.set(A,e,t),this.constant=i,this}setFromNormalAndCoplanarPoint(A,e){return this.normal.copy(A),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(A,e,t){const i=vp.subVectors(t,e).cross(zM.subVectors(A,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,A),this}copy(A){return this.normal.copy(A.normal),this.constant=A.constant,this}normalize(){const A=1/this.normal.length();return this.normal.multiplyScalar(A),this.constant*=A,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(A){return this.normal.dot(A)+this.constant}distanceToSphere(A){return this.distanceToPoint(A.center)-A.radius}projectPoint(A,e){return e.copy(A).addScaledVector(this.normal,-this.distanceToPoint(A))}intersectLine(A,e){const t=A.delta(vp),i=this.normal.dot(t);if(i===0)return this.distanceToPoint(A.start)===0?e.copy(A.start):null;const r=-(A.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(A.start).addScaledVector(t,r)}intersectsLine(A){const e=this.distanceToPoint(A.start),t=this.distanceToPoint(A.end);return e<0&&t>0||t<0&&e>0}intersectsBox(A){return A.intersectsPlane(this)}intersectsSphere(A){return A.intersectsPlane(this)}coplanarPoint(A){return A.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(A,e){const t=e||RM.getNormalMatrix(A),i=this.coplanarPoint(vp).applyMatrix4(A),r=this.normal.applyMatrix3(t).normalize();return this.constant=-i.dot(r),this}translate(A){return this.constant-=A.dot(this.normal),this}equals(A){return A.normal.equals(this.normal)&&A.constant===this.constant}clone(){return new this.constructor().copy(this)}}const cs=new Ai,Mh=new O;class yp{constructor(A=new Ut,e=new Ut,t=new Ut,i=new Ut,r=new Ut,s=new Ut){this.planes=[A,e,t,i,r,s]}set(A,e,t,i,r,s){const o=this.planes;return o[0].copy(A),o[1].copy(e),o[2].copy(t),o[3].copy(i),o[4].copy(r),o[5].copy(s),this}copy(A){const e=this.planes;for(let t=0;t<6;t++)e[t].copy(A.planes[t]);return this}setFromProjectionMatrix(A,e=qn){const t=this.planes,i=A.elements,r=i[0],s=i[1],o=i[2],a=i[3],l=i[4],u=i[5],c=i[6],h=i[7],f=i[8],p=i[9],m=i[10],d=i[11],g=i[12],y=i[13],v=i[14],w=i[15];if(t[0].setComponents(a-r,h-l,d-f,w-g).normalize(),t[1].setComponents(a+r,h+l,d+f,w+g).normalize(),t[2].setComponents(a+s,h+u,d+p,w+y).normalize(),t[3].setComponents(a-s,h-u,d-p,w-y).normalize(),t[4].setComponents(a-o,h-c,d-m,w-v).normalize(),e===qn)t[5].setComponents(a+o,h+c,d+m,w+v).normalize();else if(e===sh)t[5].setComponents(o,c,m,v).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);return this}intersectsObject(A){if(A.boundingSphere!==void 0)A.boundingSphere===null&&A.computeBoundingSphere(),cs.copy(A.boundingSphere).applyMatrix4(A.matrixWorld);else{const e=A.geometry;e.boundingSphere===null&&e.computeBoundingSphere(),cs.copy(e.boundingSphere).applyMatrix4(A.matrixWorld)}return this.intersectsSphere(cs)}intersectsSprite(A){return cs.center.set(0,0,0),cs.radius=.7071067811865476,cs.applyMatrix4(A.matrixWorld),this.intersectsSphere(cs)}intersectsSphere(A){const e=this.planes,t=A.center,i=-A.radius;for(let r=0;r<6;r++)if(e[r].distanceToPoint(t)<i)return!1;return!0}intersectsBox(A){const e=this.planes;for(let t=0;t<6;t++){const i=e[t];if(Mh.x=i.normal.x>0?A.max.x:A.min.x,Mh.y=i.normal.y>0?A.max.y:A.min.y,Mh.z=i.normal.z>0?A.max.z:A.min.z,i.distanceToPoint(Mh)<0)return!1}return!0}containsPoint(A){const e=this.planes;for(let t=0;t<6;t++)if(e[t].distanceToPoint(A)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function Pw(){let n=null,A=!1,e=null,t=null;function i(r,s){e(r,s),t=n.requestAnimationFrame(i)}return{start:function(){A!==!0&&e!==null&&(t=n.requestAnimationFrame(i),A=!0)},stop:function(){n.cancelAnimationFrame(t),A=!1},setAnimationLoop:function(r){e=r},setContext:function(r){n=r}}}function kM(n){const A=new WeakMap;function e(o,a){const l=o.array,u=o.usage,c=l.byteLength,h=n.createBuffer();n.bindBuffer(a,h),n.bufferData(a,l,u),o.onUploadCallback();let f;if(l instanceof Float32Array)f=n.FLOAT;else if(l instanceof Uint16Array)o.isFloat16BufferAttribute?f=n.HALF_FLOAT:f=n.UNSIGNED_SHORT;else if(l instanceof Int16Array)f=n.SHORT;else if(l instanceof Uint32Array)f=n.UNSIGNED_INT;else if(l instanceof Int32Array)f=n.INT;else if(l instanceof Int8Array)f=n.BYTE;else if(l instanceof Uint8Array)f=n.UNSIGNED_BYTE;else if(l instanceof Uint8ClampedArray)f=n.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+l);return{buffer:h,type:f,bytesPerElement:l.BYTES_PER_ELEMENT,version:o.version,size:c}}function t(o,a,l){const u=a.array,c=a._updateRange,h=a.updateRanges;if(n.bindBuffer(l,o),c.count===-1&&h.length===0&&n.bufferSubData(l,0,u),h.length!==0){for(let f=0,p=h.length;f<p;f++){const m=h[f];n.bufferSubData(l,m.start*u.BYTES_PER_ELEMENT,u,m.start,m.count)}a.clearUpdateRanges()}c.count!==-1&&(n.bufferSubData(l,c.offset*u.BYTES_PER_ELEMENT,u,c.offset,c.count),c.count=-1),a.onUploadCallback()}function i(o){return o.isInterleavedBufferAttribute&&(o=o.data),A.get(o)}function r(o){o.isInterleavedBufferAttribute&&(o=o.data);const a=A.get(o);a&&(n.deleteBuffer(a.buffer),A.delete(o))}function s(o,a){if(o.isGLBufferAttribute){const u=A.get(o);(!u||u.version<o.version)&&A.set(o,{buffer:o.buffer,type:o.type,bytesPerElement:o.elementSize,version:o.version});return}o.isInterleavedBufferAttribute&&(o=o.data);const l=A.get(o);if(l===void 0)A.set(o,e(o,a));else if(l.version<o.version){if(l.size!==o.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");t(l.buffer,o,a),l.version=o.version}}return{get:i,remove:r,update:s}}class Kn extends qe{constructor(A=1,e=1,t=1,i=1){super(),this.type="PlaneGeometry",this.parameters={width:A,height:e,widthSegments:t,heightSegments:i};const r=A/2,s=e/2,o=Math.floor(t),a=Math.floor(i),l=o+1,u=a+1,c=A/o,h=e/a,f=[],p=[],m=[],d=[];for(let g=0;g<u;g++){const y=g*h-s;for(let v=0;v<l;v++){const w=v*c-r;p.push(w,-y,0),m.push(0,0,1),d.push(v/o),d.push(1-g/a)}}for(let g=0;g<a;g++)for(let y=0;y<o;y++){const v=y+l*g,w=y+l*(g+1),C=y+1+l*(g+1),_=y+1+l*g;f.push(v,w,_),f.push(w,C,_)}this.setIndex(f),this.setAttribute("position",new Dt(p,3)),this.setAttribute("normal",new Dt(m,3)),this.setAttribute("uv",new Dt(d,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Kn(A.width,A.height,A.widthSegments,A.heightSegments)}}var jM=`#ifdef USE_ALPHAHASH
45
45
  if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
46
46
  #endif`,KM=`#ifdef USE_ALPHAHASH
47
47
  const float ALPHA_HASH_SCALE = 0.05;
@@ -3571,7 +3571,7 @@ void main() {
3571
3571
  #include <tonemapping_fragment>
3572
3572
  #include <colorspace_fragment>
3573
3573
  #include <fog_fragment>
3574
- }`},EA={common:{diffuse:{value:new KA(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new le},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new le}},envmap:{envMap:{value:null},envMapRotation:{value:new le},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new le}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new le}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new le},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new le},normalScale:{value:new uA(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new le},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new le}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new le}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new le}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new KA(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new KA(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0},uvTransform:{value:new le}},sprite:{diffuse:{value:new KA(16777215)},opacity:{value:1},center:{value:new uA(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new le},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0}}},ln={basic:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.fog]),vertexShader:oe.meshbasic_vert,fragmentShader:oe.meshbasic_frag},lambert:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,EA.lights,{emissive:{value:new KA(0)}}]),vertexShader:oe.meshlambert_vert,fragmentShader:oe.meshlambert_frag},phong:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,EA.lights,{emissive:{value:new KA(0)},specular:{value:new KA(1118481)},shininess:{value:30}}]),vertexShader:oe.meshphong_vert,fragmentShader:oe.meshphong_frag},standard:{uniforms:Rt([EA.common,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.roughnessmap,EA.metalnessmap,EA.fog,EA.lights,{emissive:{value:new KA(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:oe.meshphysical_vert,fragmentShader:oe.meshphysical_frag},toon:{uniforms:Rt([EA.common,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.gradientmap,EA.fog,EA.lights,{emissive:{value:new KA(0)}}]),vertexShader:oe.meshtoon_vert,fragmentShader:oe.meshtoon_frag},matcap:{uniforms:Rt([EA.common,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,{matcap:{value:null}}]),vertexShader:oe.meshmatcap_vert,fragmentShader:oe.meshmatcap_frag},points:{uniforms:Rt([EA.points,EA.fog]),vertexShader:oe.points_vert,fragmentShader:oe.points_frag},dashed:{uniforms:Rt([EA.common,EA.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:oe.linedashed_vert,fragmentShader:oe.linedashed_frag},depth:{uniforms:Rt([EA.common,EA.displacementmap]),vertexShader:oe.depth_vert,fragmentShader:oe.depth_frag},normal:{uniforms:Rt([EA.common,EA.bumpmap,EA.normalmap,EA.displacementmap,{opacity:{value:1}}]),vertexShader:oe.meshnormal_vert,fragmentShader:oe.meshnormal_frag},sprite:{uniforms:Rt([EA.sprite,EA.fog]),vertexShader:oe.sprite_vert,fragmentShader:oe.sprite_frag},background:{uniforms:{uvTransform:{value:new le},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:oe.background_vert,fragmentShader:oe.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new le}},vertexShader:oe.backgroundCube_vert,fragmentShader:oe.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:oe.cube_vert,fragmentShader:oe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:oe.equirect_vert,fragmentShader:oe.equirect_frag},distanceRGBA:{uniforms:Rt([EA.common,EA.displacementmap,{referencePosition:{value:new O},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:oe.distanceRGBA_vert,fragmentShader:oe.distanceRGBA_frag},shadow:{uniforms:Rt([EA.lights,EA.fog,{color:{value:new KA(0)},opacity:{value:1}}]),vertexShader:oe.shadow_vert,fragmentShader:oe.shadow_frag}};ln.physical={uniforms:Rt([ln.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new le},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new le},clearcoatNormalScale:{value:new uA(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new le},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new le},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new le},sheen:{value:0},sheenColor:{value:new KA(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new le},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new le},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new le},transmissionSamplerSize:{value:new uA},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new le},attenuationDistance:{value:0},attenuationColor:{value:new KA(0)},specularColor:{value:new KA(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new le},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new le},anisotropyVector:{value:new uA},anisotropyMap:{value:null},anisotropyMapTransform:{value:new le}}]),vertexShader:oe.meshphysical_vert,fragmentShader:oe.meshphysical_frag};const Ph={r:0,b:0,g:0},hs=new on,k6=new zA;function j6(n,A,e,t,i,r,s){const o=new KA(0);let a=r===!0?0:1,l,u,c=null,h=0,f=null;function p(y){let v=y.isScene===!0?y.background:null;return v&&v.isTexture&&(v=(y.backgroundBlurriness>0?e:A).get(v)),v}function m(y){let v=!1;const w=p(y);w===null?g(o,a):w&&w.isColor&&(g(w,1),v=!0);const C=n.xr.getEnvironmentBlendMode();C==="additive"?t.buffers.color.setClear(0,0,0,1,s):C==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||v)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil)}function d(y,v){const w=p(v);w&&(w.isCubeTexture||w.mapping===Ah)?(u===void 0&&(u=new Te(new ls(1,1,1),new $e({name:"BackgroundCubeMaterial",uniforms:_o(ln.backgroundCube.uniforms),vertexShader:ln.backgroundCube.vertexShader,fragmentShader:ln.backgroundCube.fragmentShader,side:dt,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(C,_,x){this.matrixWorld.copyPosition(x.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),hs.copy(v.backgroundRotation),hs.x*=-1,hs.y*=-1,hs.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(hs.y*=-1,hs.z*=-1),u.material.uniforms.envMap.value=w,u.material.uniforms.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(k6.makeRotationFromEuler(hs)),u.material.toneMapped=Se.getTransfer(w.colorSpace)!==Le,(c!==w||h!==w.version||f!==n.toneMapping)&&(u.material.needsUpdate=!0,c=w,h=w.version,f=n.toneMapping),u.layers.enableAll(),y.unshift(u,u.geometry,u.material,0,0,null)):w&&w.isTexture&&(l===void 0&&(l=new Te(new Kn(2,2),new $e({name:"BackgroundMaterial",uniforms:_o(ln.background.uniforms),vertexShader:ln.background.vertexShader,fragmentShader:ln.background.fragmentShader,side:Bt,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=w,l.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,l.material.toneMapped=Se.getTransfer(w.colorSpace)!==Le,w.matrixAutoUpdate===!0&&w.updateMatrix(),l.material.uniforms.uvTransform.value.copy(w.matrix),(c!==w||h!==w.version||f!==n.toneMapping)&&(l.material.needsUpdate=!0,c=w,h=w.version,f=n.toneMapping),l.layers.enableAll(),y.unshift(l,l.geometry,l.material,0,0,null))}function g(y,v){y.getRGB(Ph,Iw(n)),t.buffers.color.setClear(Ph.r,Ph.g,Ph.b,v,s)}return{getClearColor:function(){return o},setClearColor:function(y,v=1){o.set(y),a=v,g(o,a)},getClearAlpha:function(){return a},setClearAlpha:function(y){a=y,g(o,a)},render:m,addToRenderList:d}}function K6(n,A){const e=n.getParameter(n.MAX_VERTEX_ATTRIBS),t={},i=h(null);let r=i,s=!1;function o(I,D,P,M,T){let q=!1;const B=c(M,P,D);r!==B&&(r=B,l(r.object)),q=f(I,M,P,T),q&&p(I,M,P,T),T!==null&&A.update(T,n.ELEMENT_ARRAY_BUFFER),(q||s)&&(s=!1,w(I,D,P,M),T!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,A.get(T).buffer))}function a(){return n.createVertexArray()}function l(I){return n.bindVertexArray(I)}function u(I){return n.deleteVertexArray(I)}function c(I,D,P){const M=P.wireframe===!0;let T=t[I.id];T===void 0&&(T={},t[I.id]=T);let q=T[D.id];q===void 0&&(q={},T[D.id]=q);let B=q[M];return B===void 0&&(B=h(a()),q[M]=B),B}function h(I){const D=[],P=[],M=[];for(let T=0;T<e;T++)D[T]=0,P[T]=0,M[T]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:D,enabledAttributes:P,attributeDivisors:M,object:I,attributes:{},index:null}}function f(I,D,P,M){const T=r.attributes,q=D.attributes;let B=0;const W=P.getAttributes();for(const K in W)if(W[K].location>=0){const k=T[K];let N=q[K];if(N===void 0&&(K==="instanceMatrix"&&I.instanceMatrix&&(N=I.instanceMatrix),K==="instanceColor"&&I.instanceColor&&(N=I.instanceColor)),k===void 0||k.attribute!==N||N&&k.data!==N.data)return!0;B++}return r.attributesNum!==B||r.index!==M}function p(I,D,P,M){const T={},q=D.attributes;let B=0;const W=P.getAttributes();for(const K in W)if(W[K].location>=0){let k=q[K];k===void 0&&(K==="instanceMatrix"&&I.instanceMatrix&&(k=I.instanceMatrix),K==="instanceColor"&&I.instanceColor&&(k=I.instanceColor));const N={};N.attribute=k,k&&k.data&&(N.data=k.data),T[K]=N,B++}r.attributes=T,r.attributesNum=B,r.index=M}function m(){const I=r.newAttributes;for(let D=0,P=I.length;D<P;D++)I[D]=0}function d(I){g(I,0)}function g(I,D){const P=r.newAttributes,M=r.enabledAttributes,T=r.attributeDivisors;P[I]=1,M[I]===0&&(n.enableVertexAttribArray(I),M[I]=1),T[I]!==D&&(n.vertexAttribDivisor(I,D),T[I]=D)}function y(){const I=r.newAttributes,D=r.enabledAttributes;for(let P=0,M=D.length;P<M;P++)D[P]!==I[P]&&(n.disableVertexAttribArray(P),D[P]=0)}function v(I,D,P,M,T,q,B){B===!0?n.vertexAttribIPointer(I,D,P,T,q):n.vertexAttribPointer(I,D,P,M,T,q)}function w(I,D,P,M){m();const T=M.attributes,q=P.getAttributes(),B=D.defaultAttributeValues;for(const W in q){const K=q[W];if(K.location>=0){let U=T[W];if(U===void 0&&(W==="instanceMatrix"&&I.instanceMatrix&&(U=I.instanceMatrix),W==="instanceColor"&&I.instanceColor&&(U=I.instanceColor)),U!==void 0){const k=U.normalized,N=U.itemSize,Y=A.get(U);if(Y===void 0)continue;const X=Y.buffer,j=Y.type,G=Y.bytesPerElement,V=j===n.INT||j===n.UNSIGNED_INT||U.gpuType===ll;if(U.isInterleavedBufferAttribute){const J=U.data,tA=J.stride,dA=U.offset;if(J.isInstancedInterleavedBuffer){for(let H=0;H<K.locationSize;H++)g(K.location+H,J.meshPerAttribute);I.isInstancedMesh!==!0&&M._maxInstanceCount===void 0&&(M._maxInstanceCount=J.meshPerAttribute*J.count)}else for(let H=0;H<K.locationSize;H++)d(K.location+H);n.bindBuffer(n.ARRAY_BUFFER,X);for(let H=0;H<K.locationSize;H++)v(K.location+H,N/K.locationSize,j,k,tA*G,(dA+N/K.locationSize*H)*G,V)}else{if(U.isInstancedBufferAttribute){for(let J=0;J<K.locationSize;J++)g(K.location+J,U.meshPerAttribute);I.isInstancedMesh!==!0&&M._maxInstanceCount===void 0&&(M._maxInstanceCount=U.meshPerAttribute*U.count)}else for(let J=0;J<K.locationSize;J++)d(K.location+J);n.bindBuffer(n.ARRAY_BUFFER,X);for(let J=0;J<K.locationSize;J++)v(K.location+J,N/K.locationSize,j,k,N*G,N/K.locationSize*J*G,V)}}else if(B!==void 0){const k=B[W];if(k!==void 0)switch(k.length){case 2:n.vertexAttrib2fv(K.location,k);break;case 3:n.vertexAttrib3fv(K.location,k);break;case 4:n.vertexAttrib4fv(K.location,k);break;default:n.vertexAttrib1fv(K.location,k)}}}}y()}function C(){S();for(const I in t){const D=t[I];for(const P in D){const M=D[P];for(const T in M)u(M[T].object),delete M[T];delete D[P]}delete t[I]}}function _(I){if(t[I.id]===void 0)return;const D=t[I.id];for(const P in D){const M=D[P];for(const T in M)u(M[T].object),delete M[T];delete D[P]}delete t[I.id]}function x(I){for(const D in t){const P=t[D];if(P[I.id]===void 0)continue;const M=P[I.id];for(const T in M)u(M[T].object),delete M[T];delete P[I.id]}}function S(){b(),s=!0,r!==i&&(r=i,l(r.object))}function b(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:o,reset:S,resetDefaultState:b,dispose:C,releaseStatesOfGeometry:_,releaseStatesOfProgram:x,initAttributes:m,enableAttribute:d,disableUnusedAttributes:y}}function F6(n,A,e){let t;function i(l){t=l}function r(l,u){n.drawArrays(t,l,u),e.update(u,t,1)}function s(l,u,c){c!==0&&(n.drawArraysInstanced(t,l,u,c),e.update(u,t,c))}function o(l,u,c){if(c===0)return;const h=A.get("WEBGL_multi_draw");if(h===null)for(let f=0;f<c;f++)this.render(l[f],u[f]);else{h.multiDrawArraysWEBGL(t,l,0,u,0,c);let f=0;for(let p=0;p<c;p++)f+=u[p];e.update(f,t,1)}}function a(l,u,c,h){if(c===0)return;const f=A.get("WEBGL_multi_draw");if(f===null)for(let p=0;p<l.length;p++)s(l[p],u[p],h[p]);else{f.multiDrawArraysInstancedWEBGL(t,l,0,u,0,h,0,c);let p=0;for(let m=0;m<c;m++)p+=u[m];for(let m=0;m<h.length;m++)e.update(p,t,h[m])}}this.setMode=i,this.render=r,this.renderInstances=s,this.renderMultiDraw=o,this.renderMultiDrawInstances=a}function G6(n,A,e,t){let i;function r(){if(i!==void 0)return i;if(A.has("EXT_texture_filter_anisotropic")===!0){const _=A.get("EXT_texture_filter_anisotropic");i=n.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i}function s(_){return!(_!==_e&&t.convert(_)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(_){const x=_===Oe&&(A.has("EXT_color_buffer_half_float")||A.has("EXT_color_buffer_float"));return!(_!==Ri&&t.convert(_)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_TYPE)&&_!==Me&&!x)}function a(_){if(_==="highp"){if(n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.HIGH_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";_="mediump"}return _==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let l=e.precision!==void 0?e.precision:"highp";const u=a(l);u!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",u,"instead."),l=u);const c=e.logarithmicDepthBuffer===!0,h=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),f=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),p=n.getParameter(n.MAX_TEXTURE_SIZE),m=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),d=n.getParameter(n.MAX_VERTEX_ATTRIBS),g=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),y=n.getParameter(n.MAX_VARYING_VECTORS),v=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),w=f>0,C=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:a,textureFormatReadable:s,textureTypeReadable:o,precision:l,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:f,maxTextureSize:p,maxCubemapSize:m,maxAttributes:d,maxVertexUniforms:g,maxVaryings:y,maxFragmentUniforms:v,vertexTextures:w,maxSamples:C}}function H6(n){const A=this;let e=null,t=0,i=!1,r=!1;const s=new Ut,o=new le,a={value:null,needsUpdate:!1};this.uniform=a,this.numPlanes=0,this.numIntersection=0,this.init=function(c,h){const f=c.length!==0||h||t!==0||i;return i=h,t=c.length,f},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(c,h){e=u(c,h,0)},this.setState=function(c,h,f){const p=c.clippingPlanes,m=c.clipIntersection,d=c.clipShadows,g=n.get(c);if(!i||p===null||p.length===0||r&&!d)r?u(null):l();else{const y=r?0:t,v=y*4;let w=g.clippingState||null;a.value=w,w=u(p,h,v,f);for(let C=0;C!==v;++C)w[C]=e[C];g.clippingState=w,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=y}};function l(){a.value!==e&&(a.value=e,a.needsUpdate=t>0),A.numPlanes=t,A.numIntersection=0}function u(c,h,f,p){const m=c!==null?c.length:0;let d=null;if(m!==0){if(d=a.value,p!==!0||d===null){const g=f+m*4,y=h.matrixWorldInverse;o.getNormalMatrix(y),(d===null||d.length<g)&&(d=new Float32Array(g));for(let v=0,w=f;v!==m;++v,w+=4)s.copy(c[v]).applyMatrix4(y,o),s.normal.toArray(d,w),d[w+3]=s.constant}a.value=d,a.needsUpdate=!0}return A.numPlanes=m,A.numIntersection=0,d}}function Y6(n){let A=new WeakMap;function e(s,o){return o===eo?s.mapping=$s:o===zd&&(s.mapping=Ao),s}function t(s){if(s&&s.isTexture){const o=s.mapping;if(o===eo||o===zd)if(A.has(s)){const a=A.get(s).texture;return e(a,s.mapping)}else{const a=s.image;if(a&&a.height>0){const l=new BM(a.height);return l.fromEquirectangularTexture(n,s),A.set(s,l),s.addEventListener("dispose",i),e(l.texture,s.mapping)}else return null}}return s}function i(s){const o=s.target;o.removeEventListener("dispose",i);const a=A.get(o);a!==void 0&&(A.delete(o),a.dispose())}function r(){A=new WeakMap}return{get:t,dispose:r}}class Th extends bw{constructor(A=-1,e=1,t=1,i=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=A,this.right=e,this.top=t,this.bottom=i,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(A,e){return super.copy(A,e),this.left=A.left,this.right=A.right,this.top=A.top,this.bottom=A.bottom,this.near=A.near,this.far=A.far,this.zoom=A.zoom,this.view=A.view===null?null:Object.assign({},A.view),this}setViewOffset(A,e,t,i,r,s){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=e,this.view.offsetX=t,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),t=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=t-A,s=t+A,o=i+e,a=i-e;if(this.view!==null&&this.view.enabled){const l=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=l*this.view.offsetX,s=r+l*this.view.width,o-=u*this.view.offsetY,a=o-u*this.view.height}this.projectionMatrix.makeOrthographic(r,s,o,a,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const e=super.toJSON(A);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}}const Po=4,Tw=[.125,.215,.35,.446,.526,.582],us=20,wp=new Th,Dw=new KA;let Cp=null,xp=0,Ip=0,bp=!1;const fs=(1+Math.sqrt(5))/2,To=1/fs,Ew=[new O(-fs,To,0),new O(fs,To,0),new O(-To,0,fs),new O(To,0,fs),new O(0,fs,-To),new O(0,fs,To),new O(-1,1,-1),new O(1,1,-1),new O(-1,1,1),new O(1,1,1)];class Lw{constructor(A){this._renderer=A,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(A,e=0,t=.1,i=100){Cp=this._renderer.getRenderTarget(),xp=this._renderer.getActiveCubeFace(),Ip=this._renderer.getActiveMipmapLevel(),bp=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(A,t,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(A,e=null){return this._fromTexture(A,e)}fromCubemap(A,e=null){return this._fromTexture(A,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Nw(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=qw(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(A){this._lodMax=Math.floor(Math.log2(A)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let A=0;A<this._lodPlanes.length;A++)this._lodPlanes[A].dispose()}_cleanup(A){this._renderer.setRenderTarget(Cp,xp,Ip),this._renderer.xr.enabled=bp,A.scissorTest=!1,Dh(A,0,0,A.width,A.height)}_fromTexture(A,e){A.mapping===$s||A.mapping===Ao?this._setSize(A.image.length===0?16:A.image[0].width||A.image[0].image.width):this._setSize(A.image.width/4),Cp=this._renderer.getRenderTarget(),xp=this._renderer.getActiveCubeFace(),Ip=this._renderer.getActiveMipmapLevel(),bp=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const t=e||this._allocateTargets();return this._textureToCubeUV(A,t),this._applyPMREM(t),this._cleanup(t),t}_allocateTargets(){const A=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,t={magFilter:we,minFilter:we,generateMipmaps:!1,type:Oe,format:_e,colorSpace:at,depthBuffer:!1},i=Ow(A,e,t);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==A||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Ow(A,e,t);const{_lodMax:r}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=U6(r)),this._blurMaterial=W6(r,A,e)}return i}_compileMaterial(A){const e=new Te(this._lodPlanes[0],A);this._renderer.compile(e,wp)}_sceneToCubeUV(A,e,t,i){const o=new gt(90,1,e,t),a=[1,-1,1,1,1,1],l=[1,1,1,-1,-1,-1],u=this._renderer,c=u.autoClear,h=u.toneMapping;u.getClearColor(Dw),u.toneMapping=Ln,u.autoClear=!1;const f=new ti({name:"PMREM.Background",side:dt,depthWrite:!1,depthTest:!1}),p=new Te(new ls,f);let m=!1;const d=A.background;d?d.isColor&&(f.color.copy(d),A.background=null,m=!0):(f.color.copy(Dw),m=!0);for(let g=0;g<6;g++){const y=g%3;y===0?(o.up.set(0,a[g],0),o.lookAt(l[g],0,0)):y===1?(o.up.set(0,0,a[g]),o.lookAt(0,l[g],0)):(o.up.set(0,a[g],0),o.lookAt(0,0,l[g]));const v=this._cubeSize;Dh(i,y*v,g>2?v:0,v,v),u.setRenderTarget(i),m&&u.render(p,o),u.render(A,o)}p.geometry.dispose(),p.material.dispose(),u.toneMapping=h,u.autoClear=c,A.background=d}_textureToCubeUV(A,e){const t=this._renderer,i=A.mapping===$s||A.mapping===Ao;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Nw()),this._cubemapMaterial.uniforms.flipEnvMap.value=A.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=qw());const r=i?this._cubemapMaterial:this._equirectMaterial,s=new Te(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=A;const a=this._cubeSize;Dh(e,0,0,3*a,2*a),t.setRenderTarget(e),t.render(s,wp)}_applyPMREM(A){const e=this._renderer,t=e.autoClear;e.autoClear=!1;const i=this._lodPlanes.length;for(let r=1;r<i;r++){const s=Math.sqrt(this._sigmas[r]*this._sigmas[r]-this._sigmas[r-1]*this._sigmas[r-1]),o=Ew[(i-r-1)%Ew.length];this._blur(A,r-1,r,s,o)}e.autoClear=t}_blur(A,e,t,i,r){const s=this._pingPongRenderTarget;this._halfBlur(A,s,e,t,i,"latitudinal",r),this._halfBlur(s,A,t,t,i,"longitudinal",r)}_halfBlur(A,e,t,i,r,s,o){const a=this._renderer,l=this._blurMaterial;s!=="latitudinal"&&s!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const u=3,c=new Te(this._lodPlanes[i],l),h=l.uniforms,f=this._sizeLods[t]-1,p=isFinite(r)?Math.PI/(2*f):2*Math.PI/(2*us-1),m=r/p,d=isFinite(r)?1+Math.floor(u*m):us;d>us&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${us}`);const g=[];let y=0;for(let x=0;x<us;++x){const S=x/m,b=Math.exp(-S*S/2);g.push(b),x===0?y+=b:x<d&&(y+=2*b)}for(let x=0;x<g.length;x++)g[x]=g[x]/y;h.envMap.value=A.texture,h.samples.value=d,h.weights.value=g,h.latitudinal.value=s==="latitudinal",o&&(h.poleAxis.value=o);const{_lodMax:v}=this;h.dTheta.value=p,h.mipInt.value=v-t;const w=this._sizeLods[i],C=3*w*(i>v-Po?i-v+Po:0),_=4*(this._cubeSize-w);Dh(e,C,_,3*w,2*w),a.setRenderTarget(e),a.render(c,wp)}}function U6(n){const A=[],e=[],t=[];let i=n;const r=n-Po+1+Tw.length;for(let s=0;s<r;s++){const o=Math.pow(2,i);e.push(o);let a=1/o;s>n-Po?a=Tw[s-n+Po-1]:s===0&&(a=0),t.push(a);const l=1/(o-2),u=-l,c=1+l,h=[u,u,c,u,c,c,u,u,c,c,u,c],f=6,p=6,m=3,d=2,g=1,y=new Float32Array(m*p*f),v=new Float32Array(d*p*f),w=new Float32Array(g*p*f);for(let _=0;_<f;_++){const x=_%3*2/3-1,S=_>2?0:-1,b=[x,S,0,x+2/3,S,0,x+2/3,S+1,0,x,S,0,x+2/3,S+1,0,x,S+1,0];y.set(b,m*p*_),v.set(h,d*p*_);const I=[_,_,_,_,_,_];w.set(I,g*p*_)}const C=new qe;C.setAttribute("position",new ce(y,m)),C.setAttribute("uv",new ce(v,d)),C.setAttribute("faceIndex",new ce(w,g)),A.push(C),i>Po&&i--}return{lodPlanes:A,sizeLods:e,sigmas:t}}function Ow(n,A,e){const t=new Ve(n,A,e);return t.texture.mapping=Ah,t.texture.name="PMREM.cubeUv",t.scissorTest=!0,t}function Dh(n,A,e,t,i){n.viewport.set(A,e,t,i),n.scissor.set(A,e,t,i)}function W6(n,A,e){const t=new Float32Array(us),i=new O(0,1,0);return new $e({name:"SphericalGaussianBlur",defines:{n:us,CUBEUV_TEXEL_WIDTH:1/A,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:t},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:_p(),fragmentShader:`
3574
+ }`},EA={common:{diffuse:{value:new KA(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new le},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new le}},envmap:{envMap:{value:null},envMapRotation:{value:new le},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new le}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new le}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new le},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new le},normalScale:{value:new uA(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new le},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new le}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new le}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new le}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new KA(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new KA(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0},uvTransform:{value:new le}},sprite:{diffuse:{value:new KA(16777215)},opacity:{value:1},center:{value:new uA(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new le},alphaMap:{value:null},alphaMapTransform:{value:new le},alphaTest:{value:0}}},ln={basic:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.fog]),vertexShader:oe.meshbasic_vert,fragmentShader:oe.meshbasic_frag},lambert:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,EA.lights,{emissive:{value:new KA(0)}}]),vertexShader:oe.meshlambert_vert,fragmentShader:oe.meshlambert_frag},phong:{uniforms:Rt([EA.common,EA.specularmap,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,EA.lights,{emissive:{value:new KA(0)},specular:{value:new KA(1118481)},shininess:{value:30}}]),vertexShader:oe.meshphong_vert,fragmentShader:oe.meshphong_frag},standard:{uniforms:Rt([EA.common,EA.envmap,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.roughnessmap,EA.metalnessmap,EA.fog,EA.lights,{emissive:{value:new KA(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:oe.meshphysical_vert,fragmentShader:oe.meshphysical_frag},toon:{uniforms:Rt([EA.common,EA.aomap,EA.lightmap,EA.emissivemap,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.gradientmap,EA.fog,EA.lights,{emissive:{value:new KA(0)}}]),vertexShader:oe.meshtoon_vert,fragmentShader:oe.meshtoon_frag},matcap:{uniforms:Rt([EA.common,EA.bumpmap,EA.normalmap,EA.displacementmap,EA.fog,{matcap:{value:null}}]),vertexShader:oe.meshmatcap_vert,fragmentShader:oe.meshmatcap_frag},points:{uniforms:Rt([EA.points,EA.fog]),vertexShader:oe.points_vert,fragmentShader:oe.points_frag},dashed:{uniforms:Rt([EA.common,EA.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:oe.linedashed_vert,fragmentShader:oe.linedashed_frag},depth:{uniforms:Rt([EA.common,EA.displacementmap]),vertexShader:oe.depth_vert,fragmentShader:oe.depth_frag},normal:{uniforms:Rt([EA.common,EA.bumpmap,EA.normalmap,EA.displacementmap,{opacity:{value:1}}]),vertexShader:oe.meshnormal_vert,fragmentShader:oe.meshnormal_frag},sprite:{uniforms:Rt([EA.sprite,EA.fog]),vertexShader:oe.sprite_vert,fragmentShader:oe.sprite_frag},background:{uniforms:{uvTransform:{value:new le},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:oe.background_vert,fragmentShader:oe.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new le}},vertexShader:oe.backgroundCube_vert,fragmentShader:oe.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:oe.cube_vert,fragmentShader:oe.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:oe.equirect_vert,fragmentShader:oe.equirect_frag},distanceRGBA:{uniforms:Rt([EA.common,EA.displacementmap,{referencePosition:{value:new O},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:oe.distanceRGBA_vert,fragmentShader:oe.distanceRGBA_frag},shadow:{uniforms:Rt([EA.lights,EA.fog,{color:{value:new KA(0)},opacity:{value:1}}]),vertexShader:oe.shadow_vert,fragmentShader:oe.shadow_frag}};ln.physical={uniforms:Rt([ln.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new le},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new le},clearcoatNormalScale:{value:new uA(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new le},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new le},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new le},sheen:{value:0},sheenColor:{value:new KA(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new le},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new le},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new le},transmissionSamplerSize:{value:new uA},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new le},attenuationDistance:{value:0},attenuationColor:{value:new KA(0)},specularColor:{value:new KA(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new le},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new le},anisotropyVector:{value:new uA},anisotropyMap:{value:null},anisotropyMapTransform:{value:new le}}]),vertexShader:oe.meshphysical_vert,fragmentShader:oe.meshphysical_frag};const Ph={r:0,b:0,g:0},hs=new on,k6=new zA;function j6(n,A,e,t,i,r,s){const o=new KA(0);let a=r===!0?0:1,l,u,c=null,h=0,f=null;function p(y){let v=y.isScene===!0?y.background:null;return v&&v.isTexture&&(v=(y.backgroundBlurriness>0?e:A).get(v)),v}function m(y){let v=!1;const w=p(y);w===null?g(o,a):w&&w.isColor&&(g(w,1),v=!0);const C=n.xr.getEnvironmentBlendMode();C==="additive"?t.buffers.color.setClear(0,0,0,1,s):C==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||v)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil)}function d(y,v){const w=p(v);w&&(w.isCubeTexture||w.mapping===Ah)?(u===void 0&&(u=new Pe(new ls(1,1,1),new $e({name:"BackgroundCubeMaterial",uniforms:_o(ln.backgroundCube.uniforms),vertexShader:ln.backgroundCube.vertexShader,fragmentShader:ln.backgroundCube.fragmentShader,side:dt,depthTest:!1,depthWrite:!1,fog:!1})),u.geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(C,_,x){this.matrixWorld.copyPosition(x.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(u)),hs.copy(v.backgroundRotation),hs.x*=-1,hs.y*=-1,hs.z*=-1,w.isCubeTexture&&w.isRenderTargetTexture===!1&&(hs.y*=-1,hs.z*=-1),u.material.uniforms.envMap.value=w,u.material.uniforms.flipEnvMap.value=w.isCubeTexture&&w.isRenderTargetTexture===!1?-1:1,u.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,u.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,u.material.uniforms.backgroundRotation.value.setFromMatrix4(k6.makeRotationFromEuler(hs)),u.material.toneMapped=Se.getTransfer(w.colorSpace)!==Le,(c!==w||h!==w.version||f!==n.toneMapping)&&(u.material.needsUpdate=!0,c=w,h=w.version,f=n.toneMapping),u.layers.enableAll(),y.unshift(u,u.geometry,u.material,0,0,null)):w&&w.isTexture&&(l===void 0&&(l=new Pe(new Kn(2,2),new $e({name:"BackgroundMaterial",uniforms:_o(ln.background.uniforms),vertexShader:ln.background.vertexShader,fragmentShader:ln.background.fragmentShader,side:Bt,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=w,l.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,l.material.toneMapped=Se.getTransfer(w.colorSpace)!==Le,w.matrixAutoUpdate===!0&&w.updateMatrix(),l.material.uniforms.uvTransform.value.copy(w.matrix),(c!==w||h!==w.version||f!==n.toneMapping)&&(l.material.needsUpdate=!0,c=w,h=w.version,f=n.toneMapping),l.layers.enableAll(),y.unshift(l,l.geometry,l.material,0,0,null))}function g(y,v){y.getRGB(Ph,Iw(n)),t.buffers.color.setClear(Ph.r,Ph.g,Ph.b,v,s)}return{getClearColor:function(){return o},setClearColor:function(y,v=1){o.set(y),a=v,g(o,a)},getClearAlpha:function(){return a},setClearAlpha:function(y){a=y,g(o,a)},render:m,addToRenderList:d}}function K6(n,A){const e=n.getParameter(n.MAX_VERTEX_ATTRIBS),t={},i=h(null);let r=i,s=!1;function o(I,D,P,M,T){let q=!1;const B=c(M,P,D);r!==B&&(r=B,l(r.object)),q=f(I,M,P,T),q&&p(I,M,P,T),T!==null&&A.update(T,n.ELEMENT_ARRAY_BUFFER),(q||s)&&(s=!1,w(I,D,P,M),T!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,A.get(T).buffer))}function a(){return n.createVertexArray()}function l(I){return n.bindVertexArray(I)}function u(I){return n.deleteVertexArray(I)}function c(I,D,P){const M=P.wireframe===!0;let T=t[I.id];T===void 0&&(T={},t[I.id]=T);let q=T[D.id];q===void 0&&(q={},T[D.id]=q);let B=q[M];return B===void 0&&(B=h(a()),q[M]=B),B}function h(I){const D=[],P=[],M=[];for(let T=0;T<e;T++)D[T]=0,P[T]=0,M[T]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:D,enabledAttributes:P,attributeDivisors:M,object:I,attributes:{},index:null}}function f(I,D,P,M){const T=r.attributes,q=D.attributes;let B=0;const W=P.getAttributes();for(const K in W)if(W[K].location>=0){const k=T[K];let N=q[K];if(N===void 0&&(K==="instanceMatrix"&&I.instanceMatrix&&(N=I.instanceMatrix),K==="instanceColor"&&I.instanceColor&&(N=I.instanceColor)),k===void 0||k.attribute!==N||N&&k.data!==N.data)return!0;B++}return r.attributesNum!==B||r.index!==M}function p(I,D,P,M){const T={},q=D.attributes;let B=0;const W=P.getAttributes();for(const K in W)if(W[K].location>=0){let k=q[K];k===void 0&&(K==="instanceMatrix"&&I.instanceMatrix&&(k=I.instanceMatrix),K==="instanceColor"&&I.instanceColor&&(k=I.instanceColor));const N={};N.attribute=k,k&&k.data&&(N.data=k.data),T[K]=N,B++}r.attributes=T,r.attributesNum=B,r.index=M}function m(){const I=r.newAttributes;for(let D=0,P=I.length;D<P;D++)I[D]=0}function d(I){g(I,0)}function g(I,D){const P=r.newAttributes,M=r.enabledAttributes,T=r.attributeDivisors;P[I]=1,M[I]===0&&(n.enableVertexAttribArray(I),M[I]=1),T[I]!==D&&(n.vertexAttribDivisor(I,D),T[I]=D)}function y(){const I=r.newAttributes,D=r.enabledAttributes;for(let P=0,M=D.length;P<M;P++)D[P]!==I[P]&&(n.disableVertexAttribArray(P),D[P]=0)}function v(I,D,P,M,T,q,B){B===!0?n.vertexAttribIPointer(I,D,P,T,q):n.vertexAttribPointer(I,D,P,M,T,q)}function w(I,D,P,M){m();const T=M.attributes,q=P.getAttributes(),B=D.defaultAttributeValues;for(const W in q){const K=q[W];if(K.location>=0){let U=T[W];if(U===void 0&&(W==="instanceMatrix"&&I.instanceMatrix&&(U=I.instanceMatrix),W==="instanceColor"&&I.instanceColor&&(U=I.instanceColor)),U!==void 0){const k=U.normalized,N=U.itemSize,Y=A.get(U);if(Y===void 0)continue;const X=Y.buffer,j=Y.type,G=Y.bytesPerElement,V=j===n.INT||j===n.UNSIGNED_INT||U.gpuType===ll;if(U.isInterleavedBufferAttribute){const J=U.data,tA=J.stride,dA=U.offset;if(J.isInstancedInterleavedBuffer){for(let H=0;H<K.locationSize;H++)g(K.location+H,J.meshPerAttribute);I.isInstancedMesh!==!0&&M._maxInstanceCount===void 0&&(M._maxInstanceCount=J.meshPerAttribute*J.count)}else for(let H=0;H<K.locationSize;H++)d(K.location+H);n.bindBuffer(n.ARRAY_BUFFER,X);for(let H=0;H<K.locationSize;H++)v(K.location+H,N/K.locationSize,j,k,tA*G,(dA+N/K.locationSize*H)*G,V)}else{if(U.isInstancedBufferAttribute){for(let J=0;J<K.locationSize;J++)g(K.location+J,U.meshPerAttribute);I.isInstancedMesh!==!0&&M._maxInstanceCount===void 0&&(M._maxInstanceCount=U.meshPerAttribute*U.count)}else for(let J=0;J<K.locationSize;J++)d(K.location+J);n.bindBuffer(n.ARRAY_BUFFER,X);for(let J=0;J<K.locationSize;J++)v(K.location+J,N/K.locationSize,j,k,N*G,N/K.locationSize*J*G,V)}}else if(B!==void 0){const k=B[W];if(k!==void 0)switch(k.length){case 2:n.vertexAttrib2fv(K.location,k);break;case 3:n.vertexAttrib3fv(K.location,k);break;case 4:n.vertexAttrib4fv(K.location,k);break;default:n.vertexAttrib1fv(K.location,k)}}}}y()}function C(){S();for(const I in t){const D=t[I];for(const P in D){const M=D[P];for(const T in M)u(M[T].object),delete M[T];delete D[P]}delete t[I]}}function _(I){if(t[I.id]===void 0)return;const D=t[I.id];for(const P in D){const M=D[P];for(const T in M)u(M[T].object),delete M[T];delete D[P]}delete t[I.id]}function x(I){for(const D in t){const P=t[D];if(P[I.id]===void 0)continue;const M=P[I.id];for(const T in M)u(M[T].object),delete M[T];delete P[I.id]}}function S(){b(),s=!0,r!==i&&(r=i,l(r.object))}function b(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:o,reset:S,resetDefaultState:b,dispose:C,releaseStatesOfGeometry:_,releaseStatesOfProgram:x,initAttributes:m,enableAttribute:d,disableUnusedAttributes:y}}function F6(n,A,e){let t;function i(l){t=l}function r(l,u){n.drawArrays(t,l,u),e.update(u,t,1)}function s(l,u,c){c!==0&&(n.drawArraysInstanced(t,l,u,c),e.update(u,t,c))}function o(l,u,c){if(c===0)return;const h=A.get("WEBGL_multi_draw");if(h===null)for(let f=0;f<c;f++)this.render(l[f],u[f]);else{h.multiDrawArraysWEBGL(t,l,0,u,0,c);let f=0;for(let p=0;p<c;p++)f+=u[p];e.update(f,t,1)}}function a(l,u,c,h){if(c===0)return;const f=A.get("WEBGL_multi_draw");if(f===null)for(let p=0;p<l.length;p++)s(l[p],u[p],h[p]);else{f.multiDrawArraysInstancedWEBGL(t,l,0,u,0,h,0,c);let p=0;for(let m=0;m<c;m++)p+=u[m];for(let m=0;m<h.length;m++)e.update(p,t,h[m])}}this.setMode=i,this.render=r,this.renderInstances=s,this.renderMultiDraw=o,this.renderMultiDrawInstances=a}function G6(n,A,e,t){let i;function r(){if(i!==void 0)return i;if(A.has("EXT_texture_filter_anisotropic")===!0){const _=A.get("EXT_texture_filter_anisotropic");i=n.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i}function s(_){return!(_!==_e&&t.convert(_)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_FORMAT))}function o(_){const x=_===Oe&&(A.has("EXT_color_buffer_half_float")||A.has("EXT_color_buffer_float"));return!(_!==Ri&&t.convert(_)!==n.getParameter(n.IMPLEMENTATION_COLOR_READ_TYPE)&&_!==Me&&!x)}function a(_){if(_==="highp"){if(n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.HIGH_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";_="mediump"}return _==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let l=e.precision!==void 0?e.precision:"highp";const u=a(l);u!==l&&(console.warn("THREE.WebGLRenderer:",l,"not supported, using",u,"instead."),l=u);const c=e.logarithmicDepthBuffer===!0,h=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),f=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),p=n.getParameter(n.MAX_TEXTURE_SIZE),m=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),d=n.getParameter(n.MAX_VERTEX_ATTRIBS),g=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),y=n.getParameter(n.MAX_VARYING_VECTORS),v=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),w=f>0,C=n.getParameter(n.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:r,getMaxPrecision:a,textureFormatReadable:s,textureTypeReadable:o,precision:l,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:f,maxTextureSize:p,maxCubemapSize:m,maxAttributes:d,maxVertexUniforms:g,maxVaryings:y,maxFragmentUniforms:v,vertexTextures:w,maxSamples:C}}function H6(n){const A=this;let e=null,t=0,i=!1,r=!1;const s=new Ut,o=new le,a={value:null,needsUpdate:!1};this.uniform=a,this.numPlanes=0,this.numIntersection=0,this.init=function(c,h){const f=c.length!==0||h||t!==0||i;return i=h,t=c.length,f},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1},this.setGlobalState=function(c,h){e=u(c,h,0)},this.setState=function(c,h,f){const p=c.clippingPlanes,m=c.clipIntersection,d=c.clipShadows,g=n.get(c);if(!i||p===null||p.length===0||r&&!d)r?u(null):l();else{const y=r?0:t,v=y*4;let w=g.clippingState||null;a.value=w,w=u(p,h,v,f);for(let C=0;C!==v;++C)w[C]=e[C];g.clippingState=w,this.numIntersection=m?this.numPlanes:0,this.numPlanes+=y}};function l(){a.value!==e&&(a.value=e,a.needsUpdate=t>0),A.numPlanes=t,A.numIntersection=0}function u(c,h,f,p){const m=c!==null?c.length:0;let d=null;if(m!==0){if(d=a.value,p!==!0||d===null){const g=f+m*4,y=h.matrixWorldInverse;o.getNormalMatrix(y),(d===null||d.length<g)&&(d=new Float32Array(g));for(let v=0,w=f;v!==m;++v,w+=4)s.copy(c[v]).applyMatrix4(y,o),s.normal.toArray(d,w),d[w+3]=s.constant}a.value=d,a.needsUpdate=!0}return A.numPlanes=m,A.numIntersection=0,d}}function Y6(n){let A=new WeakMap;function e(s,o){return o===eo?s.mapping=$s:o===zd&&(s.mapping=Ao),s}function t(s){if(s&&s.isTexture){const o=s.mapping;if(o===eo||o===zd)if(A.has(s)){const a=A.get(s).texture;return e(a,s.mapping)}else{const a=s.image;if(a&&a.height>0){const l=new BM(a.height);return l.fromEquirectangularTexture(n,s),A.set(s,l),s.addEventListener("dispose",i),e(l.texture,s.mapping)}else return null}}return s}function i(s){const o=s.target;o.removeEventListener("dispose",i);const a=A.get(o);a!==void 0&&(A.delete(o),a.dispose())}function r(){A=new WeakMap}return{get:t,dispose:r}}class Th extends bw{constructor(A=-1,e=1,t=1,i=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=A,this.right=e,this.top=t,this.bottom=i,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(A,e){return super.copy(A,e),this.left=A.left,this.right=A.right,this.top=A.top,this.bottom=A.bottom,this.near=A.near,this.far=A.far,this.zoom=A.zoom,this.view=A.view===null?null:Object.assign({},A.view),this}setViewOffset(A,e,t,i,r,s){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=e,this.view.offsetX=t,this.view.offsetY=i,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),t=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=t-A,s=t+A,o=i+e,a=i-e;if(this.view!==null&&this.view.enabled){const l=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=l*this.view.offsetX,s=r+l*this.view.width,o-=u*this.view.offsetY,a=o-u*this.view.height}this.projectionMatrix.makeOrthographic(r,s,o,a,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const e=super.toJSON(A);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}}const Po=4,Tw=[.125,.215,.35,.446,.526,.582],us=20,wp=new Th,Dw=new KA;let Cp=null,xp=0,Ip=0,bp=!1;const fs=(1+Math.sqrt(5))/2,To=1/fs,Ew=[new O(-fs,To,0),new O(fs,To,0),new O(-To,0,fs),new O(To,0,fs),new O(0,fs,-To),new O(0,fs,To),new O(-1,1,-1),new O(1,1,-1),new O(-1,1,1),new O(1,1,1)];class Lw{constructor(A){this._renderer=A,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(A,e=0,t=.1,i=100){Cp=this._renderer.getRenderTarget(),xp=this._renderer.getActiveCubeFace(),Ip=this._renderer.getActiveMipmapLevel(),bp=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(A,t,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(A,e=null){return this._fromTexture(A,e)}fromCubemap(A,e=null){return this._fromTexture(A,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Nw(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=qw(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(A){this._lodMax=Math.floor(Math.log2(A)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let A=0;A<this._lodPlanes.length;A++)this._lodPlanes[A].dispose()}_cleanup(A){this._renderer.setRenderTarget(Cp,xp,Ip),this._renderer.xr.enabled=bp,A.scissorTest=!1,Dh(A,0,0,A.width,A.height)}_fromTexture(A,e){A.mapping===$s||A.mapping===Ao?this._setSize(A.image.length===0?16:A.image[0].width||A.image[0].image.width):this._setSize(A.image.width/4),Cp=this._renderer.getRenderTarget(),xp=this._renderer.getActiveCubeFace(),Ip=this._renderer.getActiveMipmapLevel(),bp=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const t=e||this._allocateTargets();return this._textureToCubeUV(A,t),this._applyPMREM(t),this._cleanup(t),t}_allocateTargets(){const A=3*Math.max(this._cubeSize,112),e=4*this._cubeSize,t={magFilter:we,minFilter:we,generateMipmaps:!1,type:Oe,format:_e,colorSpace:at,depthBuffer:!1},i=Ow(A,e,t);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==A||this._pingPongRenderTarget.height!==e){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=Ow(A,e,t);const{_lodMax:r}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=U6(r)),this._blurMaterial=W6(r,A,e)}return i}_compileMaterial(A){const e=new Pe(this._lodPlanes[0],A);this._renderer.compile(e,wp)}_sceneToCubeUV(A,e,t,i){const o=new gt(90,1,e,t),a=[1,-1,1,1,1,1],l=[1,1,1,-1,-1,-1],u=this._renderer,c=u.autoClear,h=u.toneMapping;u.getClearColor(Dw),u.toneMapping=Ln,u.autoClear=!1;const f=new ti({name:"PMREM.Background",side:dt,depthWrite:!1,depthTest:!1}),p=new Pe(new ls,f);let m=!1;const d=A.background;d?d.isColor&&(f.color.copy(d),A.background=null,m=!0):(f.color.copy(Dw),m=!0);for(let g=0;g<6;g++){const y=g%3;y===0?(o.up.set(0,a[g],0),o.lookAt(l[g],0,0)):y===1?(o.up.set(0,0,a[g]),o.lookAt(0,l[g],0)):(o.up.set(0,a[g],0),o.lookAt(0,0,l[g]));const v=this._cubeSize;Dh(i,y*v,g>2?v:0,v,v),u.setRenderTarget(i),m&&u.render(p,o),u.render(A,o)}p.geometry.dispose(),p.material.dispose(),u.toneMapping=h,u.autoClear=c,A.background=d}_textureToCubeUV(A,e){const t=this._renderer,i=A.mapping===$s||A.mapping===Ao;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Nw()),this._cubemapMaterial.uniforms.flipEnvMap.value=A.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=qw());const r=i?this._cubemapMaterial:this._equirectMaterial,s=new Pe(this._lodPlanes[0],r),o=r.uniforms;o.envMap.value=A;const a=this._cubeSize;Dh(e,0,0,3*a,2*a),t.setRenderTarget(e),t.render(s,wp)}_applyPMREM(A){const e=this._renderer,t=e.autoClear;e.autoClear=!1;const i=this._lodPlanes.length;for(let r=1;r<i;r++){const s=Math.sqrt(this._sigmas[r]*this._sigmas[r]-this._sigmas[r-1]*this._sigmas[r-1]),o=Ew[(i-r-1)%Ew.length];this._blur(A,r-1,r,s,o)}e.autoClear=t}_blur(A,e,t,i,r){const s=this._pingPongRenderTarget;this._halfBlur(A,s,e,t,i,"latitudinal",r),this._halfBlur(s,A,t,t,i,"longitudinal",r)}_halfBlur(A,e,t,i,r,s,o){const a=this._renderer,l=this._blurMaterial;s!=="latitudinal"&&s!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const u=3,c=new Pe(this._lodPlanes[i],l),h=l.uniforms,f=this._sizeLods[t]-1,p=isFinite(r)?Math.PI/(2*f):2*Math.PI/(2*us-1),m=r/p,d=isFinite(r)?1+Math.floor(u*m):us;d>us&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${us}`);const g=[];let y=0;for(let x=0;x<us;++x){const S=x/m,b=Math.exp(-S*S/2);g.push(b),x===0?y+=b:x<d&&(y+=2*b)}for(let x=0;x<g.length;x++)g[x]=g[x]/y;h.envMap.value=A.texture,h.samples.value=d,h.weights.value=g,h.latitudinal.value=s==="latitudinal",o&&(h.poleAxis.value=o);const{_lodMax:v}=this;h.dTheta.value=p,h.mipInt.value=v-t;const w=this._sizeLods[i],C=3*w*(i>v-Po?i-v+Po:0),_=4*(this._cubeSize-w);Dh(e,C,_,3*w,2*w),a.setRenderTarget(e),a.render(c,wp)}}function U6(n){const A=[],e=[],t=[];let i=n;const r=n-Po+1+Tw.length;for(let s=0;s<r;s++){const o=Math.pow(2,i);e.push(o);let a=1/o;s>n-Po?a=Tw[s-n+Po-1]:s===0&&(a=0),t.push(a);const l=1/(o-2),u=-l,c=1+l,h=[u,u,c,u,c,c,u,u,c,c,u,c],f=6,p=6,m=3,d=2,g=1,y=new Float32Array(m*p*f),v=new Float32Array(d*p*f),w=new Float32Array(g*p*f);for(let _=0;_<f;_++){const x=_%3*2/3-1,S=_>2?0:-1,b=[x,S,0,x+2/3,S,0,x+2/3,S+1,0,x,S,0,x+2/3,S+1,0,x,S+1,0];y.set(b,m*p*_),v.set(h,d*p*_);const I=[_,_,_,_,_,_];w.set(I,g*p*_)}const C=new qe;C.setAttribute("position",new ce(y,m)),C.setAttribute("uv",new ce(v,d)),C.setAttribute("faceIndex",new ce(w,g)),A.push(C),i>Po&&i--}return{lodPlanes:A,sizeLods:e,sigmas:t}}function Ow(n,A,e){const t=new Ve(n,A,e);return t.texture.mapping=Ah,t.texture.name="PMREM.cubeUv",t.scissorTest=!0,t}function Dh(n,A,e,t,i){n.viewport.set(A,e,t,i),n.scissor.set(A,e,t,i)}function W6(n,A,e){const t=new Float32Array(us),i=new O(0,1,0);return new $e({name:"SphericalGaussianBlur",defines:{n:us,CUBEUV_TEXEL_WIDTH:1/A,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:t},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:_p(),fragmentShader:`
3575
3575
 
3576
3576
  precision mediump float;
3577
3577
  precision mediump int;
@@ -3798,7 +3798,7 @@ void main() {
3798
3798
  squared_mean = squared_mean / samples;
3799
3799
  float std_dev = sqrt( squared_mean - mean * mean );
3800
3800
  gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
3801
- }`;function ST(n,A,e){let t=new yp;const i=new uA,r=new uA,s=new ve,o=new Pp({depthPacking:Xd}),a=new i1,l={},u=e.maxTextureSize,c={[Bt]:dt,[dt]:Bt,[ot]:ot},h=new $e({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new uA},radius:{value:4}},vertexShader:bT,fragmentShader:_T}),f=h.clone();f.defines.HORIZONTAL_PASS=1;const p=new qe;p.setAttribute("position",new ce(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new Te(p,h),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=sy;let g=this.type;this.render=function(_,x,S){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||_.length===0)return;const b=n.getRenderTarget(),I=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),P=n.state;P.setBlending(Mt),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);const M=g!==En&&this.type===En,T=g===En&&this.type!==En;for(let q=0,B=_.length;q<B;q++){const W=_[q],K=W.shadow;if(K===void 0){console.warn("THREE.WebGLShadowMap:",W,"has no shadow.");continue}if(K.autoUpdate===!1&&K.needsUpdate===!1)continue;i.copy(K.mapSize);const U=K.getFrameExtents();if(i.multiply(U),r.copy(K.mapSize),(i.x>u||i.y>u)&&(i.x>u&&(r.x=Math.floor(u/U.x),i.x=r.x*U.x,K.mapSize.x=r.x),i.y>u&&(r.y=Math.floor(u/U.y),i.y=r.y*U.y,K.mapSize.y=r.y)),K.map===null||M===!0||T===!0){const N=this.type!==En?{minFilter:fe,magFilter:fe}:{};K.map!==null&&K.map.dispose(),K.map=new Ve(i.x,i.y,N),K.map.texture.name=W.name+".shadowMap",K.camera.updateProjectionMatrix()}n.setRenderTarget(K.map),n.clear();const k=K.getViewportCount();for(let N=0;N<k;N++){const Y=K.getViewport(N);s.set(r.x*Y.x,r.y*Y.y,r.x*Y.z,r.y*Y.w),P.viewport(s),K.updateMatrices(W,N),t=K.getFrustum(),w(x,S,K.camera,W,this.type)}K.isPointLightShadow!==!0&&this.type===En&&y(K,S),K.needsUpdate=!1}g=this.type,d.needsUpdate=!1,n.setRenderTarget(b,I,D)};function y(_,x){const S=A.update(m);h.defines.VSM_SAMPLES!==_.blurSamples&&(h.defines.VSM_SAMPLES=_.blurSamples,f.defines.VSM_SAMPLES=_.blurSamples,h.needsUpdate=!0,f.needsUpdate=!0),_.mapPass===null&&(_.mapPass=new Ve(i.x,i.y)),h.uniforms.shadow_pass.value=_.map.texture,h.uniforms.resolution.value=_.mapSize,h.uniforms.radius.value=_.radius,n.setRenderTarget(_.mapPass),n.clear(),n.renderBufferDirect(x,null,S,h,m,null),f.uniforms.shadow_pass.value=_.mapPass.texture,f.uniforms.resolution.value=_.mapSize,f.uniforms.radius.value=_.radius,n.setRenderTarget(_.map),n.clear(),n.renderBufferDirect(x,null,S,f,m,null)}function v(_,x,S,b){let I=null;const D=S.isPointLight===!0?_.customDistanceMaterial:_.customDepthMaterial;if(D!==void 0)I=D;else if(I=S.isPointLight===!0?a:o,n.localClippingEnabled&&x.clipShadows===!0&&Array.isArray(x.clippingPlanes)&&x.clippingPlanes.length!==0||x.displacementMap&&x.displacementScale!==0||x.alphaMap&&x.alphaTest>0||x.map&&x.alphaTest>0){const P=I.uuid,M=x.uuid;let T=l[P];T===void 0&&(T={},l[P]=T);let q=T[M];q===void 0&&(q=I.clone(),T[M]=q,x.addEventListener("dispose",C)),I=q}if(I.visible=x.visible,I.wireframe=x.wireframe,b===En?I.side=x.shadowSide!==null?x.shadowSide:x.side:I.side=x.shadowSide!==null?x.shadowSide:c[x.side],I.alphaMap=x.alphaMap,I.alphaTest=x.alphaTest,I.map=x.map,I.clipShadows=x.clipShadows,I.clippingPlanes=x.clippingPlanes,I.clipIntersection=x.clipIntersection,I.displacementMap=x.displacementMap,I.displacementScale=x.displacementScale,I.displacementBias=x.displacementBias,I.wireframeLinewidth=x.wireframeLinewidth,I.linewidth=x.linewidth,S.isPointLight===!0&&I.isMeshDistanceMaterial===!0){const P=n.properties.get(I);P.light=S}return I}function w(_,x,S,b,I){if(_.visible===!1)return;if(_.layers.test(x.layers)&&(_.isMesh||_.isLine||_.isPoints)&&(_.castShadow||_.receiveShadow&&I===En)&&(!_.frustumCulled||t.intersectsObject(_))){_.modelViewMatrix.multiplyMatrices(S.matrixWorldInverse,_.matrixWorld);const M=A.update(_),T=_.material;if(Array.isArray(T)){const q=M.groups;for(let B=0,W=q.length;B<W;B++){const K=q[B],U=T[K.materialIndex];if(U&&U.visible){const k=v(_,U,b,I);_.onBeforeShadow(n,_,x,S,M,k,K),n.renderBufferDirect(S,null,M,k,_,K),_.onAfterShadow(n,_,x,S,M,k,K)}}}else if(T.visible){const q=v(_,T,b,I);_.onBeforeShadow(n,_,x,S,M,q,null),n.renderBufferDirect(S,null,M,q,_,null),_.onAfterShadow(n,_,x,S,M,q,null)}}const P=_.children;for(let M=0,T=P.length;M<T;M++)w(P[M],x,S,b,I)}function C(_){_.target.removeEventListener("dispose",C);for(const S in l){const b=l[S],I=_.target.uuid;I in b&&(b[I].dispose(),delete b[I])}}}function MT(n){function A(){let E=!1;const Q=new ve;let Z=null;const hA=new ve(0,0,0,0);return{setMask:function(MA){Z!==MA&&!E&&(n.colorMask(MA,MA,MA,MA),Z=MA)},setLocked:function(MA){E=MA},setClear:function(MA,jA,OA,re,ae){ae===!0&&(MA*=re,jA*=re,OA*=re),Q.set(MA,jA,OA,re),hA.equals(Q)===!1&&(n.clearColor(MA,jA,OA,re),hA.copy(Q))},reset:function(){E=!1,Z=null,hA.set(-1,0,0,0)}}}function e(){let E=!1,Q=null,Z=null,hA=null;return{setTest:function(MA){MA?V(n.DEPTH_TEST):J(n.DEPTH_TEST)},setMask:function(MA){Q!==MA&&!E&&(n.depthMask(MA),Q=MA)},setFunc:function(MA){if(Z!==MA){switch(MA){case w3:n.depthFunc(n.NEVER);break;case C3:n.depthFunc(n.ALWAYS);break;case x3:n.depthFunc(n.LESS);break;case $c:n.depthFunc(n.LEQUAL);break;case I3:n.depthFunc(n.EQUAL);break;case b3:n.depthFunc(n.GEQUAL);break;case _3:n.depthFunc(n.GREATER);break;case S3:n.depthFunc(n.NOTEQUAL);break;default:n.depthFunc(n.LEQUAL)}Z=MA}},setLocked:function(MA){E=MA},setClear:function(MA){hA!==MA&&(n.clearDepth(MA),hA=MA)},reset:function(){E=!1,Q=null,Z=null,hA=null}}}function t(){let E=!1,Q=null,Z=null,hA=null,MA=null,jA=null,OA=null,re=null,ae=null;return{setTest:function(NA){E||(NA?V(n.STENCIL_TEST):J(n.STENCIL_TEST))},setMask:function(NA){Q!==NA&&!E&&(n.stencilMask(NA),Q=NA)},setFunc:function(NA,ie,he){(Z!==NA||hA!==ie||MA!==he)&&(n.stencilFunc(NA,ie,he),Z=NA,hA=ie,MA=he)},setOp:function(NA,ie,he){(jA!==NA||OA!==ie||re!==he)&&(n.stencilOp(NA,ie,he),jA=NA,OA=ie,re=he)},setLocked:function(NA){E=NA},setClear:function(NA){ae!==NA&&(n.clearStencil(NA),ae=NA)},reset:function(){E=!1,Q=null,Z=null,hA=null,MA=null,jA=null,OA=null,re=null,ae=null}}}const i=new A,r=new e,s=new t,o=new WeakMap,a=new WeakMap;let l={},u={},c=new WeakMap,h=[],f=null,p=!1,m=null,d=null,g=null,y=null,v=null,w=null,C=null,_=new KA(0,0,0),x=0,S=!1,b=null,I=null,D=null,P=null,M=null;const T=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let q=!1,B=0;const W=n.getParameter(n.VERSION);W.indexOf("WebGL")!==-1?(B=parseFloat(/^WebGL (\d)/.exec(W)[1]),q=B>=1):W.indexOf("OpenGL ES")!==-1&&(B=parseFloat(/^OpenGL ES (\d)/.exec(W)[1]),q=B>=2);let K=null,U={};const k=n.getParameter(n.SCISSOR_BOX),N=n.getParameter(n.VIEWPORT),Y=new ve().fromArray(k),X=new ve().fromArray(N);function j(E,Q,Z,hA){const MA=new Uint8Array(4),jA=n.createTexture();n.bindTexture(E,jA),n.texParameteri(E,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(E,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let OA=0;OA<Z;OA++)E===n.TEXTURE_3D||E===n.TEXTURE_2D_ARRAY?n.texImage3D(Q,0,n.RGBA,1,1,hA,0,n.RGBA,n.UNSIGNED_BYTE,MA):n.texImage2D(Q+OA,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,MA);return jA}const G={};G[n.TEXTURE_2D]=j(n.TEXTURE_2D,n.TEXTURE_2D,1),G[n.TEXTURE_CUBE_MAP]=j(n.TEXTURE_CUBE_MAP,n.TEXTURE_CUBE_MAP_POSITIVE_X,6),G[n.TEXTURE_2D_ARRAY]=j(n.TEXTURE_2D_ARRAY,n.TEXTURE_2D_ARRAY,1,1),G[n.TEXTURE_3D]=j(n.TEXTURE_3D,n.TEXTURE_3D,1,1),i.setClear(0,0,0,1),r.setClear(1),s.setClear(0),V(n.DEPTH_TEST),r.setFunc($c),mA(!1),yA(ry),V(n.CULL_FACE),TA(Mt);function V(E){l[E]!==!0&&(n.enable(E),l[E]=!0)}function J(E){l[E]!==!1&&(n.disable(E),l[E]=!1)}function tA(E,Q){return u[E]!==Q?(n.bindFramebuffer(E,Q),u[E]=Q,E===n.DRAW_FRAMEBUFFER&&(u[n.FRAMEBUFFER]=Q),E===n.FRAMEBUFFER&&(u[n.DRAW_FRAMEBUFFER]=Q),!0):!1}function dA(E,Q){let Z=h,hA=!1;if(E){Z=c.get(Q),Z===void 0&&(Z=[],c.set(Q,Z));const MA=E.textures;if(Z.length!==MA.length||Z[0]!==n.COLOR_ATTACHMENT0){for(let jA=0,OA=MA.length;jA<OA;jA++)Z[jA]=n.COLOR_ATTACHMENT0+jA;Z.length=MA.length,hA=!0}}else Z[0]!==n.BACK&&(Z[0]=n.BACK,hA=!0);hA&&n.drawBuffers(Z)}function H(E){return f!==E?(n.useProgram(E),f=E,!0):!1}const aA={[ts]:n.FUNC_ADD,[i3]:n.FUNC_SUBTRACT,[n3]:n.FUNC_REVERSE_SUBTRACT};aA[r3]=n.MIN,aA[s3]=n.MAX;const AA={[o3]:n.ZERO,[a3]:n.ONE,[l3]:n.SRC_COLOR,[qd]:n.SRC_ALPHA,[p3]:n.SRC_ALPHA_SATURATE,[f3]:n.DST_COLOR,[h3]:n.DST_ALPHA,[c3]:n.ONE_MINUS_SRC_COLOR,[Nd]:n.ONE_MINUS_SRC_ALPHA,[d3]:n.ONE_MINUS_DST_COLOR,[u3]:n.ONE_MINUS_DST_ALPHA,[g3]:n.CONSTANT_COLOR,[m3]:n.ONE_MINUS_CONSTANT_COLOR,[v3]:n.CONSTANT_ALPHA,[y3]:n.ONE_MINUS_CONSTANT_ALPHA};function TA(E,Q,Z,hA,MA,jA,OA,re,ae,NA){if(E===Mt){p===!0&&(J(n.BLEND),p=!1);return}if(p===!1&&(V(n.BLEND),p=!0),E!==t3){if(E!==m||NA!==S){if((d!==ts||v!==ts)&&(n.blendEquation(n.FUNC_ADD),d=ts,v=ts),NA)switch(E){case cr:n.blendFuncSeparate(n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case Vc:n.blendFunc(n.ONE,n.ONE);break;case oy:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case ay:n.blendFuncSeparate(n.ZERO,n.SRC_COLOR,n.ZERO,n.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}else switch(E){case cr:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case Vc:n.blendFunc(n.SRC_ALPHA,n.ONE);break;case oy:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case ay:n.blendFunc(n.ZERO,n.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}g=null,y=null,w=null,C=null,_.set(0,0,0),x=0,m=E,S=NA}return}MA=MA||Q,jA=jA||Z,OA=OA||hA,(Q!==d||MA!==v)&&(n.blendEquationSeparate(aA[Q],aA[MA]),d=Q,v=MA),(Z!==g||hA!==y||jA!==w||OA!==C)&&(n.blendFuncSeparate(AA[Z],AA[hA],AA[jA],AA[OA]),g=Z,y=hA,w=jA,C=OA),(re.equals(_)===!1||ae!==x)&&(n.blendColor(re.r,re.g,re.b,ae),_.copy(re),x=ae),m=E,S=!1}function vA(E,Q){E.side===ot?J(n.CULL_FACE):V(n.CULL_FACE);let Z=E.side===dt;Q&&(Z=!Z),mA(Z),E.blending===cr&&E.transparent===!1?TA(Mt):TA(E.blending,E.blendEquation,E.blendSrc,E.blendDst,E.blendEquationAlpha,E.blendSrcAlpha,E.blendDstAlpha,E.blendColor,E.blendAlpha,E.premultipliedAlpha),r.setFunc(E.depthFunc),r.setTest(E.depthTest),r.setMask(E.depthWrite),i.setMask(E.colorWrite);const hA=E.stencilWrite;s.setTest(hA),hA&&(s.setMask(E.stencilWriteMask),s.setFunc(E.stencilFunc,E.stencilRef,E.stencilFuncMask),s.setOp(E.stencilFail,E.stencilZFail,E.stencilZPass)),gA(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),E.alphaToCoverage===!0?V(n.SAMPLE_ALPHA_TO_COVERAGE):J(n.SAMPLE_ALPHA_TO_COVERAGE)}function mA(E){b!==E&&(E?n.frontFace(n.CW):n.frontFace(n.CCW),b=E)}function yA(E){E!==$S?(V(n.CULL_FACE),E!==I&&(E===ry?n.cullFace(n.BACK):E===A3?n.cullFace(n.FRONT):n.cullFace(n.FRONT_AND_BACK))):J(n.CULL_FACE),I=E}function _A(E){E!==D&&(q&&n.lineWidth(E),D=E)}function gA(E,Q,Z){E?(V(n.POLYGON_OFFSET_FILL),(P!==Q||M!==Z)&&(n.polygonOffset(Q,Z),P=Q,M=Z)):J(n.POLYGON_OFFSET_FILL)}function R(E){E?V(n.SCISSOR_TEST):J(n.SCISSOR_TEST)}function L(E){E===void 0&&(E=n.TEXTURE0+T-1),K!==E&&(n.activeTexture(E),K=E)}function F(E,Q,Z){Z===void 0&&(K===null?Z=n.TEXTURE0+T-1:Z=K);let hA=U[Z];hA===void 0&&(hA={type:void 0,texture:void 0},U[Z]=hA),(hA.type!==E||hA.texture!==Q)&&(K!==Z&&(n.activeTexture(Z),K=Z),n.bindTexture(E,Q||G[E]),hA.type=E,hA.texture=Q)}function iA(){const E=U[K];E!==void 0&&E.type!==void 0&&(n.bindTexture(E.type,null),E.type=void 0,E.texture=void 0)}function eA(){try{n.compressedTexImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function nA(){try{n.compressedTexImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function fA(){try{n.texSubImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function wA(){try{n.texSubImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function cA(){try{n.compressedTexSubImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function xA(){try{n.compressedTexSubImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function lA(){try{n.texStorage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function IA(){try{n.texStorage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function HA(){try{n.texImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function qA(){try{n.texImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function CA(E){Y.equals(E)===!1&&(n.scissor(E.x,E.y,E.z,E.w),Y.copy(E))}function DA(E){X.equals(E)===!1&&(n.viewport(E.x,E.y,E.z,E.w),X.copy(E))}function SA(E,Q){let Z=a.get(Q);Z===void 0&&(Z=new WeakMap,a.set(Q,Z));let hA=Z.get(E);hA===void 0&&(hA=n.getUniformBlockIndex(Q,E.name),Z.set(E,hA))}function XA(E,Q){const hA=a.get(Q).get(E);o.get(Q)!==hA&&(n.uniformBlockBinding(Q,hA,E.__bindingPointIndex),o.set(Q,hA))}function FA(){n.disable(n.BLEND),n.disable(n.CULL_FACE),n.disable(n.DEPTH_TEST),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SCISSOR_TEST),n.disable(n.STENCIL_TEST),n.disable(n.SAMPLE_ALPHA_TO_COVERAGE),n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ONE,n.ZERO),n.blendFuncSeparate(n.ONE,n.ZERO,n.ONE,n.ZERO),n.blendColor(0,0,0,0),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,0),n.depthMask(!0),n.depthFunc(n.LESS),n.clearDepth(1),n.stencilMask(4294967295),n.stencilFunc(n.ALWAYS,0,4294967295),n.stencilOp(n.KEEP,n.KEEP,n.KEEP),n.clearStencil(0),n.cullFace(n.BACK),n.frontFace(n.CCW),n.polygonOffset(0,0),n.activeTexture(n.TEXTURE0),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.useProgram(null),n.lineWidth(1),n.scissor(0,0,n.canvas.width,n.canvas.height),n.viewport(0,0,n.canvas.width,n.canvas.height),l={},K=null,U={},u={},c=new WeakMap,h=[],f=null,p=!1,m=null,d=null,g=null,y=null,v=null,w=null,C=null,_=new KA(0,0,0),x=0,S=!1,b=null,I=null,D=null,P=null,M=null,Y.set(0,0,n.canvas.width,n.canvas.height),X.set(0,0,n.canvas.width,n.canvas.height),i.reset(),r.reset(),s.reset()}return{buffers:{color:i,depth:r,stencil:s},enable:V,disable:J,bindFramebuffer:tA,drawBuffers:dA,useProgram:H,setBlending:TA,setMaterial:vA,setFlipSided:mA,setCullFace:yA,setLineWidth:_A,setPolygonOffset:gA,setScissorTest:R,activeTexture:L,bindTexture:F,unbindTexture:iA,compressedTexImage2D:eA,compressedTexImage3D:nA,texImage2D:HA,texImage3D:qA,updateUBOMapping:SA,uniformBlockBinding:XA,texStorage2D:lA,texStorage3D:IA,texSubImage2D:fA,texSubImage3D:wA,compressedTexSubImage2D:cA,compressedTexSubImage3D:xA,scissor:CA,viewport:DA,reset:FA}}function PT(n,A,e,t,i,r,s){const o=A.has("WEBGL_multisampled_render_to_texture")?A.get("WEBGL_multisampled_render_to_texture"):null,a=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),l=new uA,u=new WeakMap;let c;const h=new WeakMap;let f=!1;try{f=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function p(R,L){return f?new OffscreenCanvas(R,L):dl("canvas")}function m(R,L,F){let iA=1;const eA=gA(R);if((eA.width>F||eA.height>F)&&(iA=F/Math.max(eA.width,eA.height)),iA<1)if(typeof HTMLImageElement<"u"&&R instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&R instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&R instanceof ImageBitmap||typeof VideoFrame<"u"&&R instanceof VideoFrame){const nA=Math.floor(iA*eA.width),fA=Math.floor(iA*eA.height);c===void 0&&(c=p(nA,fA));const wA=L?p(nA,fA):c;return wA.width=nA,wA.height=fA,wA.getContext("2d").drawImage(R,0,0,nA,fA),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+eA.width+"x"+eA.height+") to ("+nA+"x"+fA+")."),wA}else return"data"in R&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+eA.width+"x"+eA.height+")."),R;return R}function d(R){return R.generateMipmaps&&R.minFilter!==fe&&R.minFilter!==we}function g(R){n.generateMipmap(R)}function y(R,L,F,iA,eA=!1){if(R!==null){if(n[R]!==void 0)return n[R];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+R+"'")}let nA=L;if(L===n.RED&&(F===n.FLOAT&&(nA=n.R32F),F===n.HALF_FLOAT&&(nA=n.R16F),F===n.UNSIGNED_BYTE&&(nA=n.R8)),L===n.RED_INTEGER&&(F===n.UNSIGNED_BYTE&&(nA=n.R8UI),F===n.UNSIGNED_SHORT&&(nA=n.R16UI),F===n.UNSIGNED_INT&&(nA=n.R32UI),F===n.BYTE&&(nA=n.R8I),F===n.SHORT&&(nA=n.R16I),F===n.INT&&(nA=n.R32I)),L===n.RG&&(F===n.FLOAT&&(nA=n.RG32F),F===n.HALF_FLOAT&&(nA=n.RG16F),F===n.UNSIGNED_BYTE&&(nA=n.RG8)),L===n.RG_INTEGER&&(F===n.UNSIGNED_BYTE&&(nA=n.RG8UI),F===n.UNSIGNED_SHORT&&(nA=n.RG16UI),F===n.UNSIGNED_INT&&(nA=n.RG32UI),F===n.BYTE&&(nA=n.RG8I),F===n.SHORT&&(nA=n.RG16I),F===n.INT&&(nA=n.RG32I)),L===n.RGB&&F===n.UNSIGNED_INT_5_9_9_9_REV&&(nA=n.RGB9_E5),L===n.RGBA){const fA=eA?ih:Se.getTransfer(iA);F===n.FLOAT&&(nA=n.RGBA32F),F===n.HALF_FLOAT&&(nA=n.RGBA16F),F===n.UNSIGNED_BYTE&&(nA=fA===Le?n.SRGB8_ALPHA8:n.RGBA8),F===n.UNSIGNED_SHORT_4_4_4_4&&(nA=n.RGBA4),F===n.UNSIGNED_SHORT_5_5_5_1&&(nA=n.RGB5_A1)}return(nA===n.R16F||nA===n.R32F||nA===n.RG16F||nA===n.RG32F||nA===n.RGBA16F||nA===n.RGBA32F)&&A.get("EXT_color_buffer_float"),nA}function v(R,L){return d(R)===!0||R.isFramebufferTexture&&R.minFilter!==fe&&R.minFilter!==we?Math.log2(Math.max(L.width,L.height))+1:R.mipmaps!==void 0&&R.mipmaps.length>0?R.mipmaps.length:R.isCompressedTexture&&Array.isArray(R.image)?L.mipmaps.length:1}function w(R){const L=R.target;L.removeEventListener("dispose",w),_(L),L.isVideoTexture&&u.delete(L)}function C(R){const L=R.target;L.removeEventListener("dispose",C),S(L)}function _(R){const L=t.get(R);if(L.__webglInit===void 0)return;const F=R.source,iA=h.get(F);if(iA){const eA=iA[L.__cacheKey];eA.usedTimes--,eA.usedTimes===0&&x(R),Object.keys(iA).length===0&&h.delete(F)}t.remove(R)}function x(R){const L=t.get(R);n.deleteTexture(L.__webglTexture);const F=R.source,iA=h.get(F);delete iA[L.__cacheKey],s.memory.textures--}function S(R){const L=t.get(R);if(R.depthTexture&&R.depthTexture.dispose(),R.isWebGLCubeRenderTarget)for(let iA=0;iA<6;iA++){if(Array.isArray(L.__webglFramebuffer[iA]))for(let eA=0;eA<L.__webglFramebuffer[iA].length;eA++)n.deleteFramebuffer(L.__webglFramebuffer[iA][eA]);else n.deleteFramebuffer(L.__webglFramebuffer[iA]);L.__webglDepthbuffer&&n.deleteRenderbuffer(L.__webglDepthbuffer[iA])}else{if(Array.isArray(L.__webglFramebuffer))for(let iA=0;iA<L.__webglFramebuffer.length;iA++)n.deleteFramebuffer(L.__webglFramebuffer[iA]);else n.deleteFramebuffer(L.__webglFramebuffer);if(L.__webglDepthbuffer&&n.deleteRenderbuffer(L.__webglDepthbuffer),L.__webglMultisampledFramebuffer&&n.deleteFramebuffer(L.__webglMultisampledFramebuffer),L.__webglColorRenderbuffer)for(let iA=0;iA<L.__webglColorRenderbuffer.length;iA++)L.__webglColorRenderbuffer[iA]&&n.deleteRenderbuffer(L.__webglColorRenderbuffer[iA]);L.__webglDepthRenderbuffer&&n.deleteRenderbuffer(L.__webglDepthRenderbuffer)}const F=R.textures;for(let iA=0,eA=F.length;iA<eA;iA++){const nA=t.get(F[iA]);nA.__webglTexture&&(n.deleteTexture(nA.__webglTexture),s.memory.textures--),t.remove(F[iA])}t.remove(R)}let b=0;function I(){b=0}function D(){const R=b;return R>=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+R+" texture units while this GPU supports only "+i.maxTextures),b+=1,R}function P(R){const L=[];return L.push(R.wrapS),L.push(R.wrapT),L.push(R.wrapR||0),L.push(R.magFilter),L.push(R.minFilter),L.push(R.anisotropy),L.push(R.internalFormat),L.push(R.format),L.push(R.type),L.push(R.generateMipmaps),L.push(R.premultiplyAlpha),L.push(R.flipY),L.push(R.unpackAlignment),L.push(R.colorSpace),L.join()}function M(R,L){const F=t.get(R);if(R.isVideoTexture&&yA(R),R.isRenderTargetTexture===!1&&R.version>0&&F.__version!==R.version){const iA=R.image;if(iA===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(iA.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Y(F,R,L);return}}e.bindTexture(n.TEXTURE_2D,F.__webglTexture,n.TEXTURE0+L)}function T(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){Y(F,R,L);return}e.bindTexture(n.TEXTURE_2D_ARRAY,F.__webglTexture,n.TEXTURE0+L)}function q(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){Y(F,R,L);return}e.bindTexture(n.TEXTURE_3D,F.__webglTexture,n.TEXTURE0+L)}function B(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){X(F,R,L);return}e.bindTexture(n.TEXTURE_CUBE_MAP,F.__webglTexture,n.TEXTURE0+L)}const W={[zt]:n.REPEAT,[et]:n.CLAMP_TO_EDGE,[ol]:n.MIRRORED_REPEAT},K={[fe]:n.NEAREST,[Rd]:n.NEAREST_MIPMAP_NEAREST,[to]:n.NEAREST_MIPMAP_LINEAR,[we]:n.LINEAR,[al]:n.LINEAR_MIPMAP_NEAREST,[zi]:n.LINEAR_MIPMAP_LINEAR},U={[F3]:n.NEVER,[J3]:n.ALWAYS,[G3]:n.LESS,[Vy]:n.LEQUAL,[H3]:n.EQUAL,[W3]:n.GEQUAL,[Y3]:n.GREATER,[U3]:n.NOTEQUAL};function k(R,L){if(L.type===Me&&A.has("OES_texture_float_linear")===!1&&(L.magFilter===we||L.magFilter===al||L.magFilter===to||L.magFilter===zi||L.minFilter===we||L.minFilter===al||L.minFilter===to||L.minFilter===zi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(R,n.TEXTURE_WRAP_S,W[L.wrapS]),n.texParameteri(R,n.TEXTURE_WRAP_T,W[L.wrapT]),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,W[L.wrapR]),n.texParameteri(R,n.TEXTURE_MAG_FILTER,K[L.magFilter]),n.texParameteri(R,n.TEXTURE_MIN_FILTER,K[L.minFilter]),L.compareFunction&&(n.texParameteri(R,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(R,n.TEXTURE_COMPARE_FUNC,U[L.compareFunction])),A.has("EXT_texture_filter_anisotropic")===!0){if(L.magFilter===fe||L.minFilter!==to&&L.minFilter!==zi||L.type===Me&&A.has("OES_texture_float_linear")===!1)return;if(L.anisotropy>1||t.get(L).__currentAnisotropy){const F=A.get("EXT_texture_filter_anisotropic");n.texParameterf(R,F.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(L.anisotropy,i.getMaxAnisotropy())),t.get(L).__currentAnisotropy=L.anisotropy}}}function N(R,L){let F=!1;R.__webglInit===void 0&&(R.__webglInit=!0,L.addEventListener("dispose",w));const iA=L.source;let eA=h.get(iA);eA===void 0&&(eA={},h.set(iA,eA));const nA=P(L);if(nA!==R.__cacheKey){eA[nA]===void 0&&(eA[nA]={texture:n.createTexture(),usedTimes:0},s.memory.textures++,F=!0),eA[nA].usedTimes++;const fA=eA[R.__cacheKey];fA!==void 0&&(eA[R.__cacheKey].usedTimes--,fA.usedTimes===0&&x(L)),R.__cacheKey=nA,R.__webglTexture=eA[nA].texture}return F}function Y(R,L,F){let iA=n.TEXTURE_2D;(L.isDataArrayTexture||L.isCompressedArrayTexture)&&(iA=n.TEXTURE_2D_ARRAY),L.isData3DTexture&&(iA=n.TEXTURE_3D);const eA=N(R,L),nA=L.source;e.bindTexture(iA,R.__webglTexture,n.TEXTURE0+F);const fA=t.get(nA);if(nA.version!==fA.__version||eA===!0){e.activeTexture(n.TEXTURE0+F);const wA=Se.getPrimaries(Se.workingColorSpace),cA=L.colorSpace===On?null:Se.getPrimaries(L.colorSpace),xA=L.colorSpace===On||wA===cA?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,L.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,L.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,xA);let lA=m(L.image,!1,i.maxTextureSize);lA=_A(L,lA);const IA=r.convert(L.format,L.colorSpace),HA=r.convert(L.type);let qA=y(L.internalFormat,IA,HA,L.colorSpace,L.isVideoTexture);k(iA,L);let CA;const DA=L.mipmaps,SA=L.isVideoTexture!==!0,XA=fA.__version===void 0||eA===!0,FA=nA.dataReady,E=v(L,lA);if(L.isDepthTexture)qA=n.DEPTH_COMPONENT16,L.type===Me?qA=n.DEPTH_COMPONENT32F:L.type===ki?qA=n.DEPTH_COMPONENT24:L.type===cl&&(qA=n.DEPTH24_STENCIL8),XA&&(SA?e.texStorage2D(n.TEXTURE_2D,1,qA,lA.width,lA.height):e.texImage2D(n.TEXTURE_2D,0,qA,lA.width,lA.height,0,IA,HA,null));else if(L.isDataTexture)if(DA.length>0){SA&&XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,DA[0].width,DA[0].height);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,HA,CA.data):e.texImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,IA,HA,CA.data);L.generateMipmaps=!1}else SA?(XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,lA.width,lA.height),FA&&e.texSubImage2D(n.TEXTURE_2D,0,0,0,lA.width,lA.height,IA,HA,lA.data)):e.texImage2D(n.TEXTURE_2D,0,qA,lA.width,lA.height,0,IA,HA,lA.data);else if(L.isCompressedTexture)if(L.isCompressedArrayTexture){SA&&XA&&e.texStorage3D(n.TEXTURE_2D_ARRAY,E,qA,DA[0].width,DA[0].height,lA.depth);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],L.format!==_e?IA!==null?SA?FA&&e.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Q,0,0,0,CA.width,CA.height,lA.depth,IA,CA.data,0,0):e.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Q,qA,CA.width,CA.height,lA.depth,0,CA.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):SA?FA&&e.texSubImage3D(n.TEXTURE_2D_ARRAY,Q,0,0,0,CA.width,CA.height,lA.depth,IA,HA,CA.data):e.texImage3D(n.TEXTURE_2D_ARRAY,Q,qA,CA.width,CA.height,lA.depth,0,IA,HA,CA.data)}else{SA&&XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,DA[0].width,DA[0].height);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],L.format!==_e?IA!==null?SA?FA&&e.compressedTexSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,CA.data):e.compressedTexImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,CA.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,HA,CA.data):e.texImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,IA,HA,CA.data)}else if(L.isDataArrayTexture)SA?(XA&&e.texStorage3D(n.TEXTURE_2D_ARRAY,E,qA,lA.width,lA.height,lA.depth),FA&&e.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,lA.width,lA.height,lA.depth,IA,HA,lA.data)):e.texImage3D(n.TEXTURE_2D_ARRAY,0,qA,lA.width,lA.height,lA.depth,0,IA,HA,lA.data);else if(L.isData3DTexture)SA?(XA&&e.texStorage3D(n.TEXTURE_3D,E,qA,lA.width,lA.height,lA.depth),FA&&e.texSubImage3D(n.TEXTURE_3D,0,0,0,0,lA.width,lA.height,lA.depth,IA,HA,lA.data)):e.texImage3D(n.TEXTURE_3D,0,qA,lA.width,lA.height,lA.depth,0,IA,HA,lA.data);else if(L.isFramebufferTexture){if(XA)if(SA)e.texStorage2D(n.TEXTURE_2D,E,qA,lA.width,lA.height);else{let Q=lA.width,Z=lA.height;for(let hA=0;hA<E;hA++)e.texImage2D(n.TEXTURE_2D,hA,qA,Q,Z,0,IA,HA,null),Q>>=1,Z>>=1}}else if(DA.length>0){if(SA&&XA){const Q=gA(DA[0]);e.texStorage2D(n.TEXTURE_2D,E,qA,Q.width,Q.height)}for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,IA,HA,CA):e.texImage2D(n.TEXTURE_2D,Q,qA,IA,HA,CA);L.generateMipmaps=!1}else if(SA){if(XA){const Q=gA(lA);e.texStorage2D(n.TEXTURE_2D,E,qA,Q.width,Q.height)}FA&&e.texSubImage2D(n.TEXTURE_2D,0,0,0,IA,HA,lA)}else e.texImage2D(n.TEXTURE_2D,0,qA,IA,HA,lA);d(L)&&g(iA),fA.__version=nA.version,L.onUpdate&&L.onUpdate(L)}R.__version=L.version}function X(R,L,F){if(L.image.length!==6)return;const iA=N(R,L),eA=L.source;e.bindTexture(n.TEXTURE_CUBE_MAP,R.__webglTexture,n.TEXTURE0+F);const nA=t.get(eA);if(eA.version!==nA.__version||iA===!0){e.activeTexture(n.TEXTURE0+F);const fA=Se.getPrimaries(Se.workingColorSpace),wA=L.colorSpace===On?null:Se.getPrimaries(L.colorSpace),cA=L.colorSpace===On||fA===wA?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,L.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,L.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,cA);const xA=L.isCompressedTexture||L.image[0].isCompressedTexture,lA=L.image[0]&&L.image[0].isDataTexture,IA=[];for(let Z=0;Z<6;Z++)!xA&&!lA?IA[Z]=m(L.image[Z],!0,i.maxCubemapSize):IA[Z]=lA?L.image[Z].image:L.image[Z],IA[Z]=_A(L,IA[Z]);const HA=IA[0],qA=r.convert(L.format,L.colorSpace),CA=r.convert(L.type),DA=y(L.internalFormat,qA,CA,L.colorSpace),SA=L.isVideoTexture!==!0,XA=nA.__version===void 0||iA===!0,FA=eA.dataReady;let E=v(L,HA);k(n.TEXTURE_CUBE_MAP,L);let Q;if(xA){SA&&XA&&e.texStorage2D(n.TEXTURE_CUBE_MAP,E,DA,HA.width,HA.height);for(let Z=0;Z<6;Z++){Q=IA[Z].mipmaps;for(let hA=0;hA<Q.length;hA++){const MA=Q[hA];L.format!==_e?qA!==null?SA?FA&&e.compressedTexSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,0,0,MA.width,MA.height,qA,MA.data):e.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,DA,MA.width,MA.height,0,MA.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,0,0,MA.width,MA.height,qA,CA,MA.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,DA,MA.width,MA.height,0,qA,CA,MA.data)}}}else{if(Q=L.mipmaps,SA&&XA){Q.length>0&&E++;const Z=gA(IA[0]);e.texStorage2D(n.TEXTURE_CUBE_MAP,E,DA,Z.width,Z.height)}for(let Z=0;Z<6;Z++)if(lA){SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,IA[Z].width,IA[Z].height,qA,CA,IA[Z].data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,DA,IA[Z].width,IA[Z].height,0,qA,CA,IA[Z].data);for(let hA=0;hA<Q.length;hA++){const jA=Q[hA].image[Z].image;SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,0,0,jA.width,jA.height,qA,CA,jA.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,DA,jA.width,jA.height,0,qA,CA,jA.data)}}else{SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,qA,CA,IA[Z]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,DA,qA,CA,IA[Z]);for(let hA=0;hA<Q.length;hA++){const MA=Q[hA];SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,0,0,qA,CA,MA.image[Z]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,DA,qA,CA,MA.image[Z])}}}d(L)&&g(n.TEXTURE_CUBE_MAP),nA.__version=eA.version,L.onUpdate&&L.onUpdate(L)}R.__version=L.version}function j(R,L,F,iA,eA,nA){const fA=r.convert(F.format,F.colorSpace),wA=r.convert(F.type),cA=y(F.internalFormat,fA,wA,F.colorSpace);if(!t.get(L).__hasExternalTextures){const lA=Math.max(1,L.width>>nA),IA=Math.max(1,L.height>>nA);eA===n.TEXTURE_3D||eA===n.TEXTURE_2D_ARRAY?e.texImage3D(eA,nA,cA,lA,IA,L.depth,0,fA,wA,null):e.texImage2D(eA,nA,cA,lA,IA,0,fA,wA,null)}e.bindFramebuffer(n.FRAMEBUFFER,R),mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,iA,eA,t.get(F).__webglTexture,0,vA(L)):(eA===n.TEXTURE_2D||eA>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&eA<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,iA,eA,t.get(F).__webglTexture,nA),e.bindFramebuffer(n.FRAMEBUFFER,null)}function G(R,L,F){if(n.bindRenderbuffer(n.RENDERBUFFER,R),L.depthBuffer&&!L.stencilBuffer){let iA=n.DEPTH_COMPONENT24;if(F||mA(L)){const eA=L.depthTexture;eA&&eA.isDepthTexture&&(eA.type===Me?iA=n.DEPTH_COMPONENT32F:eA.type===ki&&(iA=n.DEPTH_COMPONENT24));const nA=vA(L);mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,nA,iA,L.width,L.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,nA,iA,L.width,L.height)}else n.renderbufferStorage(n.RENDERBUFFER,iA,L.width,L.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,R)}else if(L.depthBuffer&&L.stencilBuffer){const iA=vA(L);F&&mA(L)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,iA,n.DEPTH24_STENCIL8,L.width,L.height):mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,iA,n.DEPTH24_STENCIL8,L.width,L.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,L.width,L.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,R)}else{const iA=L.textures;for(let eA=0;eA<iA.length;eA++){const nA=iA[eA],fA=r.convert(nA.format,nA.colorSpace),wA=r.convert(nA.type),cA=y(nA.internalFormat,fA,wA,nA.colorSpace),xA=vA(L);F&&mA(L)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,xA,cA,L.width,L.height):mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,xA,cA,L.width,L.height):n.renderbufferStorage(n.RENDERBUFFER,cA,L.width,L.height)}}n.bindRenderbuffer(n.RENDERBUFFER,null)}function V(R,L){if(L&&L.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(n.FRAMEBUFFER,R),!(L.depthTexture&&L.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!t.get(L.depthTexture).__webglTexture||L.depthTexture.image.width!==L.width||L.depthTexture.image.height!==L.height)&&(L.depthTexture.image.width=L.width,L.depthTexture.image.height=L.height,L.depthTexture.needsUpdate=!0),M(L.depthTexture,0);const iA=t.get(L.depthTexture).__webglTexture,eA=vA(L);if(L.depthTexture.format===io)mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,iA,0,eA):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,iA,0);else if(L.depthTexture.format===hl)mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,iA,0,eA):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,iA,0);else throw new Error("Unknown depthTexture format")}function J(R){const L=t.get(R),F=R.isWebGLCubeRenderTarget===!0;if(R.depthTexture&&!L.__autoAllocateDepthBuffer){if(F)throw new Error("target.depthTexture not supported in Cube render targets");V(L.__webglFramebuffer,R)}else if(F){L.__webglDepthbuffer=[];for(let iA=0;iA<6;iA++)e.bindFramebuffer(n.FRAMEBUFFER,L.__webglFramebuffer[iA]),L.__webglDepthbuffer[iA]=n.createRenderbuffer(),G(L.__webglDepthbuffer[iA],R,!1)}else e.bindFramebuffer(n.FRAMEBUFFER,L.__webglFramebuffer),L.__webglDepthbuffer=n.createRenderbuffer(),G(L.__webglDepthbuffer,R,!1);e.bindFramebuffer(n.FRAMEBUFFER,null)}function tA(R,L,F){const iA=t.get(R);L!==void 0&&j(iA.__webglFramebuffer,R,R.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),F!==void 0&&J(R)}function dA(R){const L=R.texture,F=t.get(R),iA=t.get(L);R.addEventListener("dispose",C);const eA=R.textures,nA=R.isWebGLCubeRenderTarget===!0,fA=eA.length>1;if(fA||(iA.__webglTexture===void 0&&(iA.__webglTexture=n.createTexture()),iA.__version=L.version,s.memory.textures++),nA){F.__webglFramebuffer=[];for(let wA=0;wA<6;wA++)if(L.mipmaps&&L.mipmaps.length>0){F.__webglFramebuffer[wA]=[];for(let cA=0;cA<L.mipmaps.length;cA++)F.__webglFramebuffer[wA][cA]=n.createFramebuffer()}else F.__webglFramebuffer[wA]=n.createFramebuffer()}else{if(L.mipmaps&&L.mipmaps.length>0){F.__webglFramebuffer=[];for(let wA=0;wA<L.mipmaps.length;wA++)F.__webglFramebuffer[wA]=n.createFramebuffer()}else F.__webglFramebuffer=n.createFramebuffer();if(fA)for(let wA=0,cA=eA.length;wA<cA;wA++){const xA=t.get(eA[wA]);xA.__webglTexture===void 0&&(xA.__webglTexture=n.createTexture(),s.memory.textures++)}if(R.samples>0&&mA(R)===!1){F.__webglMultisampledFramebuffer=n.createFramebuffer(),F.__webglColorRenderbuffer=[],e.bindFramebuffer(n.FRAMEBUFFER,F.__webglMultisampledFramebuffer);for(let wA=0;wA<eA.length;wA++){const cA=eA[wA];F.__webglColorRenderbuffer[wA]=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,F.__webglColorRenderbuffer[wA]);const xA=r.convert(cA.format,cA.colorSpace),lA=r.convert(cA.type),IA=y(cA.internalFormat,xA,lA,cA.colorSpace,R.isXRRenderTarget===!0),HA=vA(R);n.renderbufferStorageMultisample(n.RENDERBUFFER,HA,IA,R.width,R.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+wA,n.RENDERBUFFER,F.__webglColorRenderbuffer[wA])}n.bindRenderbuffer(n.RENDERBUFFER,null),R.depthBuffer&&(F.__webglDepthRenderbuffer=n.createRenderbuffer(),G(F.__webglDepthRenderbuffer,R,!0)),e.bindFramebuffer(n.FRAMEBUFFER,null)}}if(nA){e.bindTexture(n.TEXTURE_CUBE_MAP,iA.__webglTexture),k(n.TEXTURE_CUBE_MAP,L);for(let wA=0;wA<6;wA++)if(L.mipmaps&&L.mipmaps.length>0)for(let cA=0;cA<L.mipmaps.length;cA++)j(F.__webglFramebuffer[wA][cA],R,L,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+wA,cA);else j(F.__webglFramebuffer[wA],R,L,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+wA,0);d(L)&&g(n.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(fA){for(let wA=0,cA=eA.length;wA<cA;wA++){const xA=eA[wA],lA=t.get(xA);e.bindTexture(n.TEXTURE_2D,lA.__webglTexture),k(n.TEXTURE_2D,xA),j(F.__webglFramebuffer,R,xA,n.COLOR_ATTACHMENT0+wA,n.TEXTURE_2D,0),d(xA)&&g(n.TEXTURE_2D)}e.unbindTexture()}else{let wA=n.TEXTURE_2D;if((R.isWebGL3DRenderTarget||R.isWebGLArrayRenderTarget)&&(wA=R.isWebGL3DRenderTarget?n.TEXTURE_3D:n.TEXTURE_2D_ARRAY),e.bindTexture(wA,iA.__webglTexture),k(wA,L),L.mipmaps&&L.mipmaps.length>0)for(let cA=0;cA<L.mipmaps.length;cA++)j(F.__webglFramebuffer[cA],R,L,n.COLOR_ATTACHMENT0,wA,cA);else j(F.__webglFramebuffer,R,L,n.COLOR_ATTACHMENT0,wA,0);d(L)&&g(wA),e.unbindTexture()}R.depthBuffer&&J(R)}function H(R){const L=R.textures;for(let F=0,iA=L.length;F<iA;F++){const eA=L[F];if(d(eA)){const nA=R.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:n.TEXTURE_2D,fA=t.get(eA).__webglTexture;e.bindTexture(nA,fA),g(nA),e.unbindTexture()}}}const aA=[],AA=[];function TA(R){if(R.samples>0){if(mA(R)===!1){const L=R.textures,F=R.width,iA=R.height;let eA=n.COLOR_BUFFER_BIT;const nA=R.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,fA=t.get(R),wA=L.length>1;if(wA)for(let cA=0;cA<L.length;cA++)e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.RENDERBUFFER,null),e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.TEXTURE_2D,null,0);e.bindFramebuffer(n.READ_FRAMEBUFFER,fA.__webglMultisampledFramebuffer),e.bindFramebuffer(n.DRAW_FRAMEBUFFER,fA.__webglFramebuffer);for(let cA=0;cA<L.length;cA++){if(R.resolveDepthBuffer&&(R.depthBuffer&&(eA|=n.DEPTH_BUFFER_BIT),R.stencilBuffer&&R.resolveStencilBuffer&&(eA|=n.STENCIL_BUFFER_BIT)),wA){n.framebufferRenderbuffer(n.READ_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.RENDERBUFFER,fA.__webglColorRenderbuffer[cA]);const xA=t.get(L[cA]).__webglTexture;n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,xA,0)}n.blitFramebuffer(0,0,F,iA,0,0,F,iA,eA,n.NEAREST),a===!0&&(aA.length=0,AA.length=0,aA.push(n.COLOR_ATTACHMENT0+cA),R.depthBuffer&&R.resolveDepthBuffer===!1&&(aA.push(nA),AA.push(nA),n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,AA)),n.invalidateFramebuffer(n.READ_FRAMEBUFFER,aA))}if(e.bindFramebuffer(n.READ_FRAMEBUFFER,null),e.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),wA)for(let cA=0;cA<L.length;cA++){e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.RENDERBUFFER,fA.__webglColorRenderbuffer[cA]);const xA=t.get(L[cA]).__webglTexture;e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.TEXTURE_2D,xA,0)}e.bindFramebuffer(n.DRAW_FRAMEBUFFER,fA.__webglMultisampledFramebuffer)}else if(R.depthBuffer&&R.resolveDepthBuffer===!1&&a){const L=R.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,[L])}}}function vA(R){return Math.min(i.maxSamples,R.samples)}function mA(R){const L=t.get(R);return R.samples>0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&L.__useRenderToTexture!==!1}function yA(R){const L=s.render.frame;u.get(R)!==L&&(u.set(R,L),R.update())}function _A(R,L){const F=R.colorSpace,iA=R.format,eA=R.type;return R.isCompressedTexture===!0||R.isVideoTexture===!0||F!==at&&F!==On&&(Se.getTransfer(F)===Le?(iA!==_e||eA!==Ri)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",F)),L}function gA(R){return typeof HTMLImageElement<"u"&&R instanceof HTMLImageElement?(l.width=R.naturalWidth||R.width,l.height=R.naturalHeight||R.height):typeof VideoFrame<"u"&&R instanceof VideoFrame?(l.width=R.displayWidth,l.height=R.displayHeight):(l.width=R.width,l.height=R.height),l}this.allocateTextureUnit=D,this.resetTextureUnits=I,this.setTexture2D=M,this.setTexture2DArray=T,this.setTexture3D=q,this.setTextureCube=B,this.rebindTextures=tA,this.setupRenderTarget=dA,this.updateRenderTargetMipmap=H,this.updateMultisampleRenderTarget=TA,this.setupDepthRenderbuffer=J,this.setupFrameBufferTexture=j,this.useMultisampledRTT=mA}function TT(n,A){function e(t,i=On){let r;const s=Se.getTransfer(i);if(t===Ri)return n.UNSIGNED_BYTE;if(t===vy)return n.UNSIGNED_SHORT_4_4_4_4;if(t===yy)return n.UNSIGNED_SHORT_5_5_5_1;if(t===L3)return n.UNSIGNED_INT_5_9_9_9_REV;if(t===kd)return n.BYTE;if(t===my)return n.SHORT;if(t===jd)return n.UNSIGNED_SHORT;if(t===ll)return n.INT;if(t===ki)return n.UNSIGNED_INT;if(t===Me)return n.FLOAT;if(t===Oe)return n.HALF_FLOAT;if(t===O3)return n.ALPHA;if(t===q3)return n.RGB;if(t===_e)return n.RGBA;if(t===N3)return n.LUMINANCE;if(t===B3)return n.LUMINANCE_ALPHA;if(t===io)return n.DEPTH_COMPONENT;if(t===hl)return n.DEPTH_STENCIL;if(t===no)return n.RED;if(t===Kd)return n.RED_INTEGER;if(t===Fd)return n.RG;if(t===eh)return n.RG_INTEGER;if(t===ul)return n.RGBA_INTEGER;if(t===Gd||t===Hd||t===Yd||t===Ud)if(s===Le)if(r=A.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(t===Gd)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(t===Hd)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(t===Yd)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(t===Ud)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=A.get("WEBGL_compressed_texture_s3tc"),r!==null){if(t===Gd)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Hd)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Yd)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Ud)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(t===wy||t===Cy||t===xy||t===Iy)if(r=A.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(t===wy)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Cy)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===xy)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===Iy)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(t===by||t===_y||t===Sy)if(r=A.get("WEBGL_compressed_texture_etc"),r!==null){if(t===by||t===_y)return s===Le?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(t===Sy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(t===My||t===Py||t===Ty||t===Dy||t===Ey||t===Ly||t===Oy||t===qy||t===Ny||t===By||t===zy||t===Ry||t===ky||t===jy)if(r=A.get("WEBGL_compressed_texture_astc"),r!==null){if(t===My)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(t===Py)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(t===Ty)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(t===Dy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(t===Ey)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(t===Ly)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(t===Oy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(t===qy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(t===Ny)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(t===By)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(t===zy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(t===Ry)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(t===ky)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(t===jy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(t===Wd||t===Ky||t===Fy)if(r=A.get("EXT_texture_compression_bptc"),r!==null){if(t===Wd)return s===Le?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(t===Ky)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(t===Fy)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(t===z3||t===Gy||t===Hy||t===Yy)if(r=A.get("EXT_texture_compression_rgtc"),r!==null){if(t===Wd)return r.COMPRESSED_RED_RGTC1_EXT;if(t===Gy)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(t===Hy)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(t===Yy)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return t===cl?n.UNSIGNED_INT_24_8:n[t]!==void 0?n[t]:null}return{convert:e}}class DT extends gt{constructor(A=[]){super(),this.isArrayCamera=!0,this.cameras=A}}let Et=class extends Ie{constructor(){super(),this.isGroup=!0,this.type="Group"}};const ET={type:"move"};class Tp{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Et,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Et,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new O,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new O),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Et,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new O,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new O),this._grip}dispatchEvent(A){return this._targetRay!==null&&this._targetRay.dispatchEvent(A),this._grip!==null&&this._grip.dispatchEvent(A),this._hand!==null&&this._hand.dispatchEvent(A),this}connect(A){if(A&&A.hand){const e=this._hand;if(e)for(const t of A.hand.values())this._getHandJoint(e,t)}return this.dispatchEvent({type:"connected",data:A}),this}disconnect(A){return this.dispatchEvent({type:"disconnected",data:A}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(A,e,t){let i=null,r=null,s=null;const o=this._targetRay,a=this._grip,l=this._hand;if(A&&e.session.visibilityState!=="visible-blurred"){if(l&&A.hand){s=!0;for(const m of A.hand.values()){const d=e.getJointPose(m,t),g=this._getHandJoint(l,m);d!==null&&(g.matrix.fromArray(d.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.matrixWorldNeedsUpdate=!0,g.jointRadius=d.radius),g.visible=d!==null}const u=l.joints["index-finger-tip"],c=l.joints["thumb-tip"],h=u.position.distanceTo(c.position),f=.02,p=.005;l.inputState.pinching&&h>f+p?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:A.handedness,target:this})):!l.inputState.pinching&&h<=f-p&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:A.handedness,target:this}))}else a!==null&&A.gripSpace&&(r=e.getPose(A.gripSpace,t),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1));o!==null&&(i=e.getPose(A.targetRaySpace,t),i===null&&r!==null&&(i=r),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(ET)))}return o!==null&&(o.visible=i!==null),a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),this}_getHandJoint(A,e){if(A.joints[e.jointName]===void 0){const t=new Et;t.matrixAutoUpdate=!1,t.visible=!1,A.joints[e.jointName]=t,A.add(t)}return A.joints[e.jointName]}}const LT=`
3801
+ }`;function ST(n,A,e){let t=new yp;const i=new uA,r=new uA,s=new ve,o=new Pp({depthPacking:Xd}),a=new i1,l={},u=e.maxTextureSize,c={[Bt]:dt,[dt]:Bt,[ot]:ot},h=new $e({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new uA},radius:{value:4}},vertexShader:bT,fragmentShader:_T}),f=h.clone();f.defines.HORIZONTAL_PASS=1;const p=new qe;p.setAttribute("position",new ce(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const m=new Pe(p,h),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=sy;let g=this.type;this.render=function(_,x,S){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||_.length===0)return;const b=n.getRenderTarget(),I=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),P=n.state;P.setBlending(Mt),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);const M=g!==En&&this.type===En,T=g===En&&this.type!==En;for(let q=0,B=_.length;q<B;q++){const W=_[q],K=W.shadow;if(K===void 0){console.warn("THREE.WebGLShadowMap:",W,"has no shadow.");continue}if(K.autoUpdate===!1&&K.needsUpdate===!1)continue;i.copy(K.mapSize);const U=K.getFrameExtents();if(i.multiply(U),r.copy(K.mapSize),(i.x>u||i.y>u)&&(i.x>u&&(r.x=Math.floor(u/U.x),i.x=r.x*U.x,K.mapSize.x=r.x),i.y>u&&(r.y=Math.floor(u/U.y),i.y=r.y*U.y,K.mapSize.y=r.y)),K.map===null||M===!0||T===!0){const N=this.type!==En?{minFilter:fe,magFilter:fe}:{};K.map!==null&&K.map.dispose(),K.map=new Ve(i.x,i.y,N),K.map.texture.name=W.name+".shadowMap",K.camera.updateProjectionMatrix()}n.setRenderTarget(K.map),n.clear();const k=K.getViewportCount();for(let N=0;N<k;N++){const Y=K.getViewport(N);s.set(r.x*Y.x,r.y*Y.y,r.x*Y.z,r.y*Y.w),P.viewport(s),K.updateMatrices(W,N),t=K.getFrustum(),w(x,S,K.camera,W,this.type)}K.isPointLightShadow!==!0&&this.type===En&&y(K,S),K.needsUpdate=!1}g=this.type,d.needsUpdate=!1,n.setRenderTarget(b,I,D)};function y(_,x){const S=A.update(m);h.defines.VSM_SAMPLES!==_.blurSamples&&(h.defines.VSM_SAMPLES=_.blurSamples,f.defines.VSM_SAMPLES=_.blurSamples,h.needsUpdate=!0,f.needsUpdate=!0),_.mapPass===null&&(_.mapPass=new Ve(i.x,i.y)),h.uniforms.shadow_pass.value=_.map.texture,h.uniforms.resolution.value=_.mapSize,h.uniforms.radius.value=_.radius,n.setRenderTarget(_.mapPass),n.clear(),n.renderBufferDirect(x,null,S,h,m,null),f.uniforms.shadow_pass.value=_.mapPass.texture,f.uniforms.resolution.value=_.mapSize,f.uniforms.radius.value=_.radius,n.setRenderTarget(_.map),n.clear(),n.renderBufferDirect(x,null,S,f,m,null)}function v(_,x,S,b){let I=null;const D=S.isPointLight===!0?_.customDistanceMaterial:_.customDepthMaterial;if(D!==void 0)I=D;else if(I=S.isPointLight===!0?a:o,n.localClippingEnabled&&x.clipShadows===!0&&Array.isArray(x.clippingPlanes)&&x.clippingPlanes.length!==0||x.displacementMap&&x.displacementScale!==0||x.alphaMap&&x.alphaTest>0||x.map&&x.alphaTest>0){const P=I.uuid,M=x.uuid;let T=l[P];T===void 0&&(T={},l[P]=T);let q=T[M];q===void 0&&(q=I.clone(),T[M]=q,x.addEventListener("dispose",C)),I=q}if(I.visible=x.visible,I.wireframe=x.wireframe,b===En?I.side=x.shadowSide!==null?x.shadowSide:x.side:I.side=x.shadowSide!==null?x.shadowSide:c[x.side],I.alphaMap=x.alphaMap,I.alphaTest=x.alphaTest,I.map=x.map,I.clipShadows=x.clipShadows,I.clippingPlanes=x.clippingPlanes,I.clipIntersection=x.clipIntersection,I.displacementMap=x.displacementMap,I.displacementScale=x.displacementScale,I.displacementBias=x.displacementBias,I.wireframeLinewidth=x.wireframeLinewidth,I.linewidth=x.linewidth,S.isPointLight===!0&&I.isMeshDistanceMaterial===!0){const P=n.properties.get(I);P.light=S}return I}function w(_,x,S,b,I){if(_.visible===!1)return;if(_.layers.test(x.layers)&&(_.isMesh||_.isLine||_.isPoints)&&(_.castShadow||_.receiveShadow&&I===En)&&(!_.frustumCulled||t.intersectsObject(_))){_.modelViewMatrix.multiplyMatrices(S.matrixWorldInverse,_.matrixWorld);const M=A.update(_),T=_.material;if(Array.isArray(T)){const q=M.groups;for(let B=0,W=q.length;B<W;B++){const K=q[B],U=T[K.materialIndex];if(U&&U.visible){const k=v(_,U,b,I);_.onBeforeShadow(n,_,x,S,M,k,K),n.renderBufferDirect(S,null,M,k,_,K),_.onAfterShadow(n,_,x,S,M,k,K)}}}else if(T.visible){const q=v(_,T,b,I);_.onBeforeShadow(n,_,x,S,M,q,null),n.renderBufferDirect(S,null,M,q,_,null),_.onAfterShadow(n,_,x,S,M,q,null)}}const P=_.children;for(let M=0,T=P.length;M<T;M++)w(P[M],x,S,b,I)}function C(_){_.target.removeEventListener("dispose",C);for(const S in l){const b=l[S],I=_.target.uuid;I in b&&(b[I].dispose(),delete b[I])}}}function MT(n){function A(){let E=!1;const Q=new ve;let Z=null;const hA=new ve(0,0,0,0);return{setMask:function(MA){Z!==MA&&!E&&(n.colorMask(MA,MA,MA,MA),Z=MA)},setLocked:function(MA){E=MA},setClear:function(MA,jA,OA,re,ae){ae===!0&&(MA*=re,jA*=re,OA*=re),Q.set(MA,jA,OA,re),hA.equals(Q)===!1&&(n.clearColor(MA,jA,OA,re),hA.copy(Q))},reset:function(){E=!1,Z=null,hA.set(-1,0,0,0)}}}function e(){let E=!1,Q=null,Z=null,hA=null;return{setTest:function(MA){MA?V(n.DEPTH_TEST):J(n.DEPTH_TEST)},setMask:function(MA){Q!==MA&&!E&&(n.depthMask(MA),Q=MA)},setFunc:function(MA){if(Z!==MA){switch(MA){case w3:n.depthFunc(n.NEVER);break;case C3:n.depthFunc(n.ALWAYS);break;case x3:n.depthFunc(n.LESS);break;case $c:n.depthFunc(n.LEQUAL);break;case I3:n.depthFunc(n.EQUAL);break;case b3:n.depthFunc(n.GEQUAL);break;case _3:n.depthFunc(n.GREATER);break;case S3:n.depthFunc(n.NOTEQUAL);break;default:n.depthFunc(n.LEQUAL)}Z=MA}},setLocked:function(MA){E=MA},setClear:function(MA){hA!==MA&&(n.clearDepth(MA),hA=MA)},reset:function(){E=!1,Q=null,Z=null,hA=null}}}function t(){let E=!1,Q=null,Z=null,hA=null,MA=null,jA=null,OA=null,re=null,ae=null;return{setTest:function(NA){E||(NA?V(n.STENCIL_TEST):J(n.STENCIL_TEST))},setMask:function(NA){Q!==NA&&!E&&(n.stencilMask(NA),Q=NA)},setFunc:function(NA,ie,he){(Z!==NA||hA!==ie||MA!==he)&&(n.stencilFunc(NA,ie,he),Z=NA,hA=ie,MA=he)},setOp:function(NA,ie,he){(jA!==NA||OA!==ie||re!==he)&&(n.stencilOp(NA,ie,he),jA=NA,OA=ie,re=he)},setLocked:function(NA){E=NA},setClear:function(NA){ae!==NA&&(n.clearStencil(NA),ae=NA)},reset:function(){E=!1,Q=null,Z=null,hA=null,MA=null,jA=null,OA=null,re=null,ae=null}}}const i=new A,r=new e,s=new t,o=new WeakMap,a=new WeakMap;let l={},u={},c=new WeakMap,h=[],f=null,p=!1,m=null,d=null,g=null,y=null,v=null,w=null,C=null,_=new KA(0,0,0),x=0,S=!1,b=null,I=null,D=null,P=null,M=null;const T=n.getParameter(n.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let q=!1,B=0;const W=n.getParameter(n.VERSION);W.indexOf("WebGL")!==-1?(B=parseFloat(/^WebGL (\d)/.exec(W)[1]),q=B>=1):W.indexOf("OpenGL ES")!==-1&&(B=parseFloat(/^OpenGL ES (\d)/.exec(W)[1]),q=B>=2);let K=null,U={};const k=n.getParameter(n.SCISSOR_BOX),N=n.getParameter(n.VIEWPORT),Y=new ve().fromArray(k),X=new ve().fromArray(N);function j(E,Q,Z,hA){const MA=new Uint8Array(4),jA=n.createTexture();n.bindTexture(E,jA),n.texParameteri(E,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(E,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let OA=0;OA<Z;OA++)E===n.TEXTURE_3D||E===n.TEXTURE_2D_ARRAY?n.texImage3D(Q,0,n.RGBA,1,1,hA,0,n.RGBA,n.UNSIGNED_BYTE,MA):n.texImage2D(Q+OA,0,n.RGBA,1,1,0,n.RGBA,n.UNSIGNED_BYTE,MA);return jA}const G={};G[n.TEXTURE_2D]=j(n.TEXTURE_2D,n.TEXTURE_2D,1),G[n.TEXTURE_CUBE_MAP]=j(n.TEXTURE_CUBE_MAP,n.TEXTURE_CUBE_MAP_POSITIVE_X,6),G[n.TEXTURE_2D_ARRAY]=j(n.TEXTURE_2D_ARRAY,n.TEXTURE_2D_ARRAY,1,1),G[n.TEXTURE_3D]=j(n.TEXTURE_3D,n.TEXTURE_3D,1,1),i.setClear(0,0,0,1),r.setClear(1),s.setClear(0),V(n.DEPTH_TEST),r.setFunc($c),mA(!1),yA(ry),V(n.CULL_FACE),TA(Mt);function V(E){l[E]!==!0&&(n.enable(E),l[E]=!0)}function J(E){l[E]!==!1&&(n.disable(E),l[E]=!1)}function tA(E,Q){return u[E]!==Q?(n.bindFramebuffer(E,Q),u[E]=Q,E===n.DRAW_FRAMEBUFFER&&(u[n.FRAMEBUFFER]=Q),E===n.FRAMEBUFFER&&(u[n.DRAW_FRAMEBUFFER]=Q),!0):!1}function dA(E,Q){let Z=h,hA=!1;if(E){Z=c.get(Q),Z===void 0&&(Z=[],c.set(Q,Z));const MA=E.textures;if(Z.length!==MA.length||Z[0]!==n.COLOR_ATTACHMENT0){for(let jA=0,OA=MA.length;jA<OA;jA++)Z[jA]=n.COLOR_ATTACHMENT0+jA;Z.length=MA.length,hA=!0}}else Z[0]!==n.BACK&&(Z[0]=n.BACK,hA=!0);hA&&n.drawBuffers(Z)}function H(E){return f!==E?(n.useProgram(E),f=E,!0):!1}const aA={[ts]:n.FUNC_ADD,[i3]:n.FUNC_SUBTRACT,[n3]:n.FUNC_REVERSE_SUBTRACT};aA[r3]=n.MIN,aA[s3]=n.MAX;const AA={[o3]:n.ZERO,[a3]:n.ONE,[l3]:n.SRC_COLOR,[qd]:n.SRC_ALPHA,[p3]:n.SRC_ALPHA_SATURATE,[f3]:n.DST_COLOR,[h3]:n.DST_ALPHA,[c3]:n.ONE_MINUS_SRC_COLOR,[Nd]:n.ONE_MINUS_SRC_ALPHA,[d3]:n.ONE_MINUS_DST_COLOR,[u3]:n.ONE_MINUS_DST_ALPHA,[g3]:n.CONSTANT_COLOR,[m3]:n.ONE_MINUS_CONSTANT_COLOR,[v3]:n.CONSTANT_ALPHA,[y3]:n.ONE_MINUS_CONSTANT_ALPHA};function TA(E,Q,Z,hA,MA,jA,OA,re,ae,NA){if(E===Mt){p===!0&&(J(n.BLEND),p=!1);return}if(p===!1&&(V(n.BLEND),p=!0),E!==t3){if(E!==m||NA!==S){if((d!==ts||v!==ts)&&(n.blendEquation(n.FUNC_ADD),d=ts,v=ts),NA)switch(E){case cr:n.blendFuncSeparate(n.ONE,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case Vc:n.blendFunc(n.ONE,n.ONE);break;case oy:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case ay:n.blendFuncSeparate(n.ZERO,n.SRC_COLOR,n.ZERO,n.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}else switch(E){case cr:n.blendFuncSeparate(n.SRC_ALPHA,n.ONE_MINUS_SRC_ALPHA,n.ONE,n.ONE_MINUS_SRC_ALPHA);break;case Vc:n.blendFunc(n.SRC_ALPHA,n.ONE);break;case oy:n.blendFuncSeparate(n.ZERO,n.ONE_MINUS_SRC_COLOR,n.ZERO,n.ONE);break;case ay:n.blendFunc(n.ZERO,n.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}g=null,y=null,w=null,C=null,_.set(0,0,0),x=0,m=E,S=NA}return}MA=MA||Q,jA=jA||Z,OA=OA||hA,(Q!==d||MA!==v)&&(n.blendEquationSeparate(aA[Q],aA[MA]),d=Q,v=MA),(Z!==g||hA!==y||jA!==w||OA!==C)&&(n.blendFuncSeparate(AA[Z],AA[hA],AA[jA],AA[OA]),g=Z,y=hA,w=jA,C=OA),(re.equals(_)===!1||ae!==x)&&(n.blendColor(re.r,re.g,re.b,ae),_.copy(re),x=ae),m=E,S=!1}function vA(E,Q){E.side===ot?J(n.CULL_FACE):V(n.CULL_FACE);let Z=E.side===dt;Q&&(Z=!Z),mA(Z),E.blending===cr&&E.transparent===!1?TA(Mt):TA(E.blending,E.blendEquation,E.blendSrc,E.blendDst,E.blendEquationAlpha,E.blendSrcAlpha,E.blendDstAlpha,E.blendColor,E.blendAlpha,E.premultipliedAlpha),r.setFunc(E.depthFunc),r.setTest(E.depthTest),r.setMask(E.depthWrite),i.setMask(E.colorWrite);const hA=E.stencilWrite;s.setTest(hA),hA&&(s.setMask(E.stencilWriteMask),s.setFunc(E.stencilFunc,E.stencilRef,E.stencilFuncMask),s.setOp(E.stencilFail,E.stencilZFail,E.stencilZPass)),gA(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),E.alphaToCoverage===!0?V(n.SAMPLE_ALPHA_TO_COVERAGE):J(n.SAMPLE_ALPHA_TO_COVERAGE)}function mA(E){b!==E&&(E?n.frontFace(n.CW):n.frontFace(n.CCW),b=E)}function yA(E){E!==$S?(V(n.CULL_FACE),E!==I&&(E===ry?n.cullFace(n.BACK):E===A3?n.cullFace(n.FRONT):n.cullFace(n.FRONT_AND_BACK))):J(n.CULL_FACE),I=E}function _A(E){E!==D&&(q&&n.lineWidth(E),D=E)}function gA(E,Q,Z){E?(V(n.POLYGON_OFFSET_FILL),(P!==Q||M!==Z)&&(n.polygonOffset(Q,Z),P=Q,M=Z)):J(n.POLYGON_OFFSET_FILL)}function R(E){E?V(n.SCISSOR_TEST):J(n.SCISSOR_TEST)}function L(E){E===void 0&&(E=n.TEXTURE0+T-1),K!==E&&(n.activeTexture(E),K=E)}function F(E,Q,Z){Z===void 0&&(K===null?Z=n.TEXTURE0+T-1:Z=K);let hA=U[Z];hA===void 0&&(hA={type:void 0,texture:void 0},U[Z]=hA),(hA.type!==E||hA.texture!==Q)&&(K!==Z&&(n.activeTexture(Z),K=Z),n.bindTexture(E,Q||G[E]),hA.type=E,hA.texture=Q)}function iA(){const E=U[K];E!==void 0&&E.type!==void 0&&(n.bindTexture(E.type,null),E.type=void 0,E.texture=void 0)}function eA(){try{n.compressedTexImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function nA(){try{n.compressedTexImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function fA(){try{n.texSubImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function wA(){try{n.texSubImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function cA(){try{n.compressedTexSubImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function xA(){try{n.compressedTexSubImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function lA(){try{n.texStorage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function IA(){try{n.texStorage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function HA(){try{n.texImage2D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function qA(){try{n.texImage3D.apply(n,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function CA(E){Y.equals(E)===!1&&(n.scissor(E.x,E.y,E.z,E.w),Y.copy(E))}function DA(E){X.equals(E)===!1&&(n.viewport(E.x,E.y,E.z,E.w),X.copy(E))}function SA(E,Q){let Z=a.get(Q);Z===void 0&&(Z=new WeakMap,a.set(Q,Z));let hA=Z.get(E);hA===void 0&&(hA=n.getUniformBlockIndex(Q,E.name),Z.set(E,hA))}function XA(E,Q){const hA=a.get(Q).get(E);o.get(Q)!==hA&&(n.uniformBlockBinding(Q,hA,E.__bindingPointIndex),o.set(Q,hA))}function FA(){n.disable(n.BLEND),n.disable(n.CULL_FACE),n.disable(n.DEPTH_TEST),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SCISSOR_TEST),n.disable(n.STENCIL_TEST),n.disable(n.SAMPLE_ALPHA_TO_COVERAGE),n.blendEquation(n.FUNC_ADD),n.blendFunc(n.ONE,n.ZERO),n.blendFuncSeparate(n.ONE,n.ZERO,n.ONE,n.ZERO),n.blendColor(0,0,0,0),n.colorMask(!0,!0,!0,!0),n.clearColor(0,0,0,0),n.depthMask(!0),n.depthFunc(n.LESS),n.clearDepth(1),n.stencilMask(4294967295),n.stencilFunc(n.ALWAYS,0,4294967295),n.stencilOp(n.KEEP,n.KEEP,n.KEEP),n.clearStencil(0),n.cullFace(n.BACK),n.frontFace(n.CCW),n.polygonOffset(0,0),n.activeTexture(n.TEXTURE0),n.bindFramebuffer(n.FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.useProgram(null),n.lineWidth(1),n.scissor(0,0,n.canvas.width,n.canvas.height),n.viewport(0,0,n.canvas.width,n.canvas.height),l={},K=null,U={},u={},c=new WeakMap,h=[],f=null,p=!1,m=null,d=null,g=null,y=null,v=null,w=null,C=null,_=new KA(0,0,0),x=0,S=!1,b=null,I=null,D=null,P=null,M=null,Y.set(0,0,n.canvas.width,n.canvas.height),X.set(0,0,n.canvas.width,n.canvas.height),i.reset(),r.reset(),s.reset()}return{buffers:{color:i,depth:r,stencil:s},enable:V,disable:J,bindFramebuffer:tA,drawBuffers:dA,useProgram:H,setBlending:TA,setMaterial:vA,setFlipSided:mA,setCullFace:yA,setLineWidth:_A,setPolygonOffset:gA,setScissorTest:R,activeTexture:L,bindTexture:F,unbindTexture:iA,compressedTexImage2D:eA,compressedTexImage3D:nA,texImage2D:HA,texImage3D:qA,updateUBOMapping:SA,uniformBlockBinding:XA,texStorage2D:lA,texStorage3D:IA,texSubImage2D:fA,texSubImage3D:wA,compressedTexSubImage2D:cA,compressedTexSubImage3D:xA,scissor:CA,viewport:DA,reset:FA}}function PT(n,A,e,t,i,r,s){const o=A.has("WEBGL_multisampled_render_to_texture")?A.get("WEBGL_multisampled_render_to_texture"):null,a=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),l=new uA,u=new WeakMap;let c;const h=new WeakMap;let f=!1;try{f=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function p(R,L){return f?new OffscreenCanvas(R,L):dl("canvas")}function m(R,L,F){let iA=1;const eA=gA(R);if((eA.width>F||eA.height>F)&&(iA=F/Math.max(eA.width,eA.height)),iA<1)if(typeof HTMLImageElement<"u"&&R instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&R instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&R instanceof ImageBitmap||typeof VideoFrame<"u"&&R instanceof VideoFrame){const nA=Math.floor(iA*eA.width),fA=Math.floor(iA*eA.height);c===void 0&&(c=p(nA,fA));const wA=L?p(nA,fA):c;return wA.width=nA,wA.height=fA,wA.getContext("2d").drawImage(R,0,0,nA,fA),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+eA.width+"x"+eA.height+") to ("+nA+"x"+fA+")."),wA}else return"data"in R&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+eA.width+"x"+eA.height+")."),R;return R}function d(R){return R.generateMipmaps&&R.minFilter!==fe&&R.minFilter!==we}function g(R){n.generateMipmap(R)}function y(R,L,F,iA,eA=!1){if(R!==null){if(n[R]!==void 0)return n[R];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+R+"'")}let nA=L;if(L===n.RED&&(F===n.FLOAT&&(nA=n.R32F),F===n.HALF_FLOAT&&(nA=n.R16F),F===n.UNSIGNED_BYTE&&(nA=n.R8)),L===n.RED_INTEGER&&(F===n.UNSIGNED_BYTE&&(nA=n.R8UI),F===n.UNSIGNED_SHORT&&(nA=n.R16UI),F===n.UNSIGNED_INT&&(nA=n.R32UI),F===n.BYTE&&(nA=n.R8I),F===n.SHORT&&(nA=n.R16I),F===n.INT&&(nA=n.R32I)),L===n.RG&&(F===n.FLOAT&&(nA=n.RG32F),F===n.HALF_FLOAT&&(nA=n.RG16F),F===n.UNSIGNED_BYTE&&(nA=n.RG8)),L===n.RG_INTEGER&&(F===n.UNSIGNED_BYTE&&(nA=n.RG8UI),F===n.UNSIGNED_SHORT&&(nA=n.RG16UI),F===n.UNSIGNED_INT&&(nA=n.RG32UI),F===n.BYTE&&(nA=n.RG8I),F===n.SHORT&&(nA=n.RG16I),F===n.INT&&(nA=n.RG32I)),L===n.RGB&&F===n.UNSIGNED_INT_5_9_9_9_REV&&(nA=n.RGB9_E5),L===n.RGBA){const fA=eA?ih:Se.getTransfer(iA);F===n.FLOAT&&(nA=n.RGBA32F),F===n.HALF_FLOAT&&(nA=n.RGBA16F),F===n.UNSIGNED_BYTE&&(nA=fA===Le?n.SRGB8_ALPHA8:n.RGBA8),F===n.UNSIGNED_SHORT_4_4_4_4&&(nA=n.RGBA4),F===n.UNSIGNED_SHORT_5_5_5_1&&(nA=n.RGB5_A1)}return(nA===n.R16F||nA===n.R32F||nA===n.RG16F||nA===n.RG32F||nA===n.RGBA16F||nA===n.RGBA32F)&&A.get("EXT_color_buffer_float"),nA}function v(R,L){return d(R)===!0||R.isFramebufferTexture&&R.minFilter!==fe&&R.minFilter!==we?Math.log2(Math.max(L.width,L.height))+1:R.mipmaps!==void 0&&R.mipmaps.length>0?R.mipmaps.length:R.isCompressedTexture&&Array.isArray(R.image)?L.mipmaps.length:1}function w(R){const L=R.target;L.removeEventListener("dispose",w),_(L),L.isVideoTexture&&u.delete(L)}function C(R){const L=R.target;L.removeEventListener("dispose",C),S(L)}function _(R){const L=t.get(R);if(L.__webglInit===void 0)return;const F=R.source,iA=h.get(F);if(iA){const eA=iA[L.__cacheKey];eA.usedTimes--,eA.usedTimes===0&&x(R),Object.keys(iA).length===0&&h.delete(F)}t.remove(R)}function x(R){const L=t.get(R);n.deleteTexture(L.__webglTexture);const F=R.source,iA=h.get(F);delete iA[L.__cacheKey],s.memory.textures--}function S(R){const L=t.get(R);if(R.depthTexture&&R.depthTexture.dispose(),R.isWebGLCubeRenderTarget)for(let iA=0;iA<6;iA++){if(Array.isArray(L.__webglFramebuffer[iA]))for(let eA=0;eA<L.__webglFramebuffer[iA].length;eA++)n.deleteFramebuffer(L.__webglFramebuffer[iA][eA]);else n.deleteFramebuffer(L.__webglFramebuffer[iA]);L.__webglDepthbuffer&&n.deleteRenderbuffer(L.__webglDepthbuffer[iA])}else{if(Array.isArray(L.__webglFramebuffer))for(let iA=0;iA<L.__webglFramebuffer.length;iA++)n.deleteFramebuffer(L.__webglFramebuffer[iA]);else n.deleteFramebuffer(L.__webglFramebuffer);if(L.__webglDepthbuffer&&n.deleteRenderbuffer(L.__webglDepthbuffer),L.__webglMultisampledFramebuffer&&n.deleteFramebuffer(L.__webglMultisampledFramebuffer),L.__webglColorRenderbuffer)for(let iA=0;iA<L.__webglColorRenderbuffer.length;iA++)L.__webglColorRenderbuffer[iA]&&n.deleteRenderbuffer(L.__webglColorRenderbuffer[iA]);L.__webglDepthRenderbuffer&&n.deleteRenderbuffer(L.__webglDepthRenderbuffer)}const F=R.textures;for(let iA=0,eA=F.length;iA<eA;iA++){const nA=t.get(F[iA]);nA.__webglTexture&&(n.deleteTexture(nA.__webglTexture),s.memory.textures--),t.remove(F[iA])}t.remove(R)}let b=0;function I(){b=0}function D(){const R=b;return R>=i.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+R+" texture units while this GPU supports only "+i.maxTextures),b+=1,R}function P(R){const L=[];return L.push(R.wrapS),L.push(R.wrapT),L.push(R.wrapR||0),L.push(R.magFilter),L.push(R.minFilter),L.push(R.anisotropy),L.push(R.internalFormat),L.push(R.format),L.push(R.type),L.push(R.generateMipmaps),L.push(R.premultiplyAlpha),L.push(R.flipY),L.push(R.unpackAlignment),L.push(R.colorSpace),L.join()}function M(R,L){const F=t.get(R);if(R.isVideoTexture&&yA(R),R.isRenderTargetTexture===!1&&R.version>0&&F.__version!==R.version){const iA=R.image;if(iA===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(iA.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Y(F,R,L);return}}e.bindTexture(n.TEXTURE_2D,F.__webglTexture,n.TEXTURE0+L)}function T(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){Y(F,R,L);return}e.bindTexture(n.TEXTURE_2D_ARRAY,F.__webglTexture,n.TEXTURE0+L)}function q(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){Y(F,R,L);return}e.bindTexture(n.TEXTURE_3D,F.__webglTexture,n.TEXTURE0+L)}function B(R,L){const F=t.get(R);if(R.version>0&&F.__version!==R.version){X(F,R,L);return}e.bindTexture(n.TEXTURE_CUBE_MAP,F.__webglTexture,n.TEXTURE0+L)}const W={[zt]:n.REPEAT,[et]:n.CLAMP_TO_EDGE,[ol]:n.MIRRORED_REPEAT},K={[fe]:n.NEAREST,[Rd]:n.NEAREST_MIPMAP_NEAREST,[to]:n.NEAREST_MIPMAP_LINEAR,[we]:n.LINEAR,[al]:n.LINEAR_MIPMAP_NEAREST,[zi]:n.LINEAR_MIPMAP_LINEAR},U={[F3]:n.NEVER,[J3]:n.ALWAYS,[G3]:n.LESS,[Vy]:n.LEQUAL,[H3]:n.EQUAL,[W3]:n.GEQUAL,[Y3]:n.GREATER,[U3]:n.NOTEQUAL};function k(R,L){if(L.type===Me&&A.has("OES_texture_float_linear")===!1&&(L.magFilter===we||L.magFilter===al||L.magFilter===to||L.magFilter===zi||L.minFilter===we||L.minFilter===al||L.minFilter===to||L.minFilter===zi)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(R,n.TEXTURE_WRAP_S,W[L.wrapS]),n.texParameteri(R,n.TEXTURE_WRAP_T,W[L.wrapT]),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,W[L.wrapR]),n.texParameteri(R,n.TEXTURE_MAG_FILTER,K[L.magFilter]),n.texParameteri(R,n.TEXTURE_MIN_FILTER,K[L.minFilter]),L.compareFunction&&(n.texParameteri(R,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(R,n.TEXTURE_COMPARE_FUNC,U[L.compareFunction])),A.has("EXT_texture_filter_anisotropic")===!0){if(L.magFilter===fe||L.minFilter!==to&&L.minFilter!==zi||L.type===Me&&A.has("OES_texture_float_linear")===!1)return;if(L.anisotropy>1||t.get(L).__currentAnisotropy){const F=A.get("EXT_texture_filter_anisotropic");n.texParameterf(R,F.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(L.anisotropy,i.getMaxAnisotropy())),t.get(L).__currentAnisotropy=L.anisotropy}}}function N(R,L){let F=!1;R.__webglInit===void 0&&(R.__webglInit=!0,L.addEventListener("dispose",w));const iA=L.source;let eA=h.get(iA);eA===void 0&&(eA={},h.set(iA,eA));const nA=P(L);if(nA!==R.__cacheKey){eA[nA]===void 0&&(eA[nA]={texture:n.createTexture(),usedTimes:0},s.memory.textures++,F=!0),eA[nA].usedTimes++;const fA=eA[R.__cacheKey];fA!==void 0&&(eA[R.__cacheKey].usedTimes--,fA.usedTimes===0&&x(L)),R.__cacheKey=nA,R.__webglTexture=eA[nA].texture}return F}function Y(R,L,F){let iA=n.TEXTURE_2D;(L.isDataArrayTexture||L.isCompressedArrayTexture)&&(iA=n.TEXTURE_2D_ARRAY),L.isData3DTexture&&(iA=n.TEXTURE_3D);const eA=N(R,L),nA=L.source;e.bindTexture(iA,R.__webglTexture,n.TEXTURE0+F);const fA=t.get(nA);if(nA.version!==fA.__version||eA===!0){e.activeTexture(n.TEXTURE0+F);const wA=Se.getPrimaries(Se.workingColorSpace),cA=L.colorSpace===On?null:Se.getPrimaries(L.colorSpace),xA=L.colorSpace===On||wA===cA?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,L.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,L.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,xA);let lA=m(L.image,!1,i.maxTextureSize);lA=_A(L,lA);const IA=r.convert(L.format,L.colorSpace),HA=r.convert(L.type);let qA=y(L.internalFormat,IA,HA,L.colorSpace,L.isVideoTexture);k(iA,L);let CA;const DA=L.mipmaps,SA=L.isVideoTexture!==!0,XA=fA.__version===void 0||eA===!0,FA=nA.dataReady,E=v(L,lA);if(L.isDepthTexture)qA=n.DEPTH_COMPONENT16,L.type===Me?qA=n.DEPTH_COMPONENT32F:L.type===ki?qA=n.DEPTH_COMPONENT24:L.type===cl&&(qA=n.DEPTH24_STENCIL8),XA&&(SA?e.texStorage2D(n.TEXTURE_2D,1,qA,lA.width,lA.height):e.texImage2D(n.TEXTURE_2D,0,qA,lA.width,lA.height,0,IA,HA,null));else if(L.isDataTexture)if(DA.length>0){SA&&XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,DA[0].width,DA[0].height);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,HA,CA.data):e.texImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,IA,HA,CA.data);L.generateMipmaps=!1}else SA?(XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,lA.width,lA.height),FA&&e.texSubImage2D(n.TEXTURE_2D,0,0,0,lA.width,lA.height,IA,HA,lA.data)):e.texImage2D(n.TEXTURE_2D,0,qA,lA.width,lA.height,0,IA,HA,lA.data);else if(L.isCompressedTexture)if(L.isCompressedArrayTexture){SA&&XA&&e.texStorage3D(n.TEXTURE_2D_ARRAY,E,qA,DA[0].width,DA[0].height,lA.depth);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],L.format!==_e?IA!==null?SA?FA&&e.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Q,0,0,0,CA.width,CA.height,lA.depth,IA,CA.data,0,0):e.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Q,qA,CA.width,CA.height,lA.depth,0,CA.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):SA?FA&&e.texSubImage3D(n.TEXTURE_2D_ARRAY,Q,0,0,0,CA.width,CA.height,lA.depth,IA,HA,CA.data):e.texImage3D(n.TEXTURE_2D_ARRAY,Q,qA,CA.width,CA.height,lA.depth,0,IA,HA,CA.data)}else{SA&&XA&&e.texStorage2D(n.TEXTURE_2D,E,qA,DA[0].width,DA[0].height);for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],L.format!==_e?IA!==null?SA?FA&&e.compressedTexSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,CA.data):e.compressedTexImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,CA.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,CA.width,CA.height,IA,HA,CA.data):e.texImage2D(n.TEXTURE_2D,Q,qA,CA.width,CA.height,0,IA,HA,CA.data)}else if(L.isDataArrayTexture)SA?(XA&&e.texStorage3D(n.TEXTURE_2D_ARRAY,E,qA,lA.width,lA.height,lA.depth),FA&&e.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,lA.width,lA.height,lA.depth,IA,HA,lA.data)):e.texImage3D(n.TEXTURE_2D_ARRAY,0,qA,lA.width,lA.height,lA.depth,0,IA,HA,lA.data);else if(L.isData3DTexture)SA?(XA&&e.texStorage3D(n.TEXTURE_3D,E,qA,lA.width,lA.height,lA.depth),FA&&e.texSubImage3D(n.TEXTURE_3D,0,0,0,0,lA.width,lA.height,lA.depth,IA,HA,lA.data)):e.texImage3D(n.TEXTURE_3D,0,qA,lA.width,lA.height,lA.depth,0,IA,HA,lA.data);else if(L.isFramebufferTexture){if(XA)if(SA)e.texStorage2D(n.TEXTURE_2D,E,qA,lA.width,lA.height);else{let Q=lA.width,Z=lA.height;for(let hA=0;hA<E;hA++)e.texImage2D(n.TEXTURE_2D,hA,qA,Q,Z,0,IA,HA,null),Q>>=1,Z>>=1}}else if(DA.length>0){if(SA&&XA){const Q=gA(DA[0]);e.texStorage2D(n.TEXTURE_2D,E,qA,Q.width,Q.height)}for(let Q=0,Z=DA.length;Q<Z;Q++)CA=DA[Q],SA?FA&&e.texSubImage2D(n.TEXTURE_2D,Q,0,0,IA,HA,CA):e.texImage2D(n.TEXTURE_2D,Q,qA,IA,HA,CA);L.generateMipmaps=!1}else if(SA){if(XA){const Q=gA(lA);e.texStorage2D(n.TEXTURE_2D,E,qA,Q.width,Q.height)}FA&&e.texSubImage2D(n.TEXTURE_2D,0,0,0,IA,HA,lA)}else e.texImage2D(n.TEXTURE_2D,0,qA,IA,HA,lA);d(L)&&g(iA),fA.__version=nA.version,L.onUpdate&&L.onUpdate(L)}R.__version=L.version}function X(R,L,F){if(L.image.length!==6)return;const iA=N(R,L),eA=L.source;e.bindTexture(n.TEXTURE_CUBE_MAP,R.__webglTexture,n.TEXTURE0+F);const nA=t.get(eA);if(eA.version!==nA.__version||iA===!0){e.activeTexture(n.TEXTURE0+F);const fA=Se.getPrimaries(Se.workingColorSpace),wA=L.colorSpace===On?null:Se.getPrimaries(L.colorSpace),cA=L.colorSpace===On||fA===wA?n.NONE:n.BROWSER_DEFAULT_WEBGL;n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,L.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,L.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,L.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,cA);const xA=L.isCompressedTexture||L.image[0].isCompressedTexture,lA=L.image[0]&&L.image[0].isDataTexture,IA=[];for(let Z=0;Z<6;Z++)!xA&&!lA?IA[Z]=m(L.image[Z],!0,i.maxCubemapSize):IA[Z]=lA?L.image[Z].image:L.image[Z],IA[Z]=_A(L,IA[Z]);const HA=IA[0],qA=r.convert(L.format,L.colorSpace),CA=r.convert(L.type),DA=y(L.internalFormat,qA,CA,L.colorSpace),SA=L.isVideoTexture!==!0,XA=nA.__version===void 0||iA===!0,FA=eA.dataReady;let E=v(L,HA);k(n.TEXTURE_CUBE_MAP,L);let Q;if(xA){SA&&XA&&e.texStorage2D(n.TEXTURE_CUBE_MAP,E,DA,HA.width,HA.height);for(let Z=0;Z<6;Z++){Q=IA[Z].mipmaps;for(let hA=0;hA<Q.length;hA++){const MA=Q[hA];L.format!==_e?qA!==null?SA?FA&&e.compressedTexSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,0,0,MA.width,MA.height,qA,MA.data):e.compressedTexImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,DA,MA.width,MA.height,0,MA.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,0,0,MA.width,MA.height,qA,CA,MA.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA,DA,MA.width,MA.height,0,qA,CA,MA.data)}}}else{if(Q=L.mipmaps,SA&&XA){Q.length>0&&E++;const Z=gA(IA[0]);e.texStorage2D(n.TEXTURE_CUBE_MAP,E,DA,Z.width,Z.height)}for(let Z=0;Z<6;Z++)if(lA){SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,IA[Z].width,IA[Z].height,qA,CA,IA[Z].data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,DA,IA[Z].width,IA[Z].height,0,qA,CA,IA[Z].data);for(let hA=0;hA<Q.length;hA++){const jA=Q[hA].image[Z].image;SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,0,0,jA.width,jA.height,qA,CA,jA.data):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,DA,jA.width,jA.height,0,qA,CA,jA.data)}}else{SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,0,0,qA,CA,IA[Z]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,0,DA,qA,CA,IA[Z]);for(let hA=0;hA<Q.length;hA++){const MA=Q[hA];SA?FA&&e.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,0,0,qA,CA,MA.image[Z]):e.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Z,hA+1,DA,qA,CA,MA.image[Z])}}}d(L)&&g(n.TEXTURE_CUBE_MAP),nA.__version=eA.version,L.onUpdate&&L.onUpdate(L)}R.__version=L.version}function j(R,L,F,iA,eA,nA){const fA=r.convert(F.format,F.colorSpace),wA=r.convert(F.type),cA=y(F.internalFormat,fA,wA,F.colorSpace);if(!t.get(L).__hasExternalTextures){const lA=Math.max(1,L.width>>nA),IA=Math.max(1,L.height>>nA);eA===n.TEXTURE_3D||eA===n.TEXTURE_2D_ARRAY?e.texImage3D(eA,nA,cA,lA,IA,L.depth,0,fA,wA,null):e.texImage2D(eA,nA,cA,lA,IA,0,fA,wA,null)}e.bindFramebuffer(n.FRAMEBUFFER,R),mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,iA,eA,t.get(F).__webglTexture,0,vA(L)):(eA===n.TEXTURE_2D||eA>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&eA<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,iA,eA,t.get(F).__webglTexture,nA),e.bindFramebuffer(n.FRAMEBUFFER,null)}function G(R,L,F){if(n.bindRenderbuffer(n.RENDERBUFFER,R),L.depthBuffer&&!L.stencilBuffer){let iA=n.DEPTH_COMPONENT24;if(F||mA(L)){const eA=L.depthTexture;eA&&eA.isDepthTexture&&(eA.type===Me?iA=n.DEPTH_COMPONENT32F:eA.type===ki&&(iA=n.DEPTH_COMPONENT24));const nA=vA(L);mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,nA,iA,L.width,L.height):n.renderbufferStorageMultisample(n.RENDERBUFFER,nA,iA,L.width,L.height)}else n.renderbufferStorage(n.RENDERBUFFER,iA,L.width,L.height);n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,R)}else if(L.depthBuffer&&L.stencilBuffer){const iA=vA(L);F&&mA(L)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,iA,n.DEPTH24_STENCIL8,L.width,L.height):mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,iA,n.DEPTH24_STENCIL8,L.width,L.height):n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_STENCIL,L.width,L.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.RENDERBUFFER,R)}else{const iA=L.textures;for(let eA=0;eA<iA.length;eA++){const nA=iA[eA],fA=r.convert(nA.format,nA.colorSpace),wA=r.convert(nA.type),cA=y(nA.internalFormat,fA,wA,nA.colorSpace),xA=vA(L);F&&mA(L)===!1?n.renderbufferStorageMultisample(n.RENDERBUFFER,xA,cA,L.width,L.height):mA(L)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,xA,cA,L.width,L.height):n.renderbufferStorage(n.RENDERBUFFER,cA,L.width,L.height)}}n.bindRenderbuffer(n.RENDERBUFFER,null)}function V(R,L){if(L&&L.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(e.bindFramebuffer(n.FRAMEBUFFER,R),!(L.depthTexture&&L.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!t.get(L.depthTexture).__webglTexture||L.depthTexture.image.width!==L.width||L.depthTexture.image.height!==L.height)&&(L.depthTexture.image.width=L.width,L.depthTexture.image.height=L.height,L.depthTexture.needsUpdate=!0),M(L.depthTexture,0);const iA=t.get(L.depthTexture).__webglTexture,eA=vA(L);if(L.depthTexture.format===io)mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,iA,0,eA):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,iA,0);else if(L.depthTexture.format===hl)mA(L)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,iA,0,eA):n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_STENCIL_ATTACHMENT,n.TEXTURE_2D,iA,0);else throw new Error("Unknown depthTexture format")}function J(R){const L=t.get(R),F=R.isWebGLCubeRenderTarget===!0;if(R.depthTexture&&!L.__autoAllocateDepthBuffer){if(F)throw new Error("target.depthTexture not supported in Cube render targets");V(L.__webglFramebuffer,R)}else if(F){L.__webglDepthbuffer=[];for(let iA=0;iA<6;iA++)e.bindFramebuffer(n.FRAMEBUFFER,L.__webglFramebuffer[iA]),L.__webglDepthbuffer[iA]=n.createRenderbuffer(),G(L.__webglDepthbuffer[iA],R,!1)}else e.bindFramebuffer(n.FRAMEBUFFER,L.__webglFramebuffer),L.__webglDepthbuffer=n.createRenderbuffer(),G(L.__webglDepthbuffer,R,!1);e.bindFramebuffer(n.FRAMEBUFFER,null)}function tA(R,L,F){const iA=t.get(R);L!==void 0&&j(iA.__webglFramebuffer,R,R.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),F!==void 0&&J(R)}function dA(R){const L=R.texture,F=t.get(R),iA=t.get(L);R.addEventListener("dispose",C);const eA=R.textures,nA=R.isWebGLCubeRenderTarget===!0,fA=eA.length>1;if(fA||(iA.__webglTexture===void 0&&(iA.__webglTexture=n.createTexture()),iA.__version=L.version,s.memory.textures++),nA){F.__webglFramebuffer=[];for(let wA=0;wA<6;wA++)if(L.mipmaps&&L.mipmaps.length>0){F.__webglFramebuffer[wA]=[];for(let cA=0;cA<L.mipmaps.length;cA++)F.__webglFramebuffer[wA][cA]=n.createFramebuffer()}else F.__webglFramebuffer[wA]=n.createFramebuffer()}else{if(L.mipmaps&&L.mipmaps.length>0){F.__webglFramebuffer=[];for(let wA=0;wA<L.mipmaps.length;wA++)F.__webglFramebuffer[wA]=n.createFramebuffer()}else F.__webglFramebuffer=n.createFramebuffer();if(fA)for(let wA=0,cA=eA.length;wA<cA;wA++){const xA=t.get(eA[wA]);xA.__webglTexture===void 0&&(xA.__webglTexture=n.createTexture(),s.memory.textures++)}if(R.samples>0&&mA(R)===!1){F.__webglMultisampledFramebuffer=n.createFramebuffer(),F.__webglColorRenderbuffer=[],e.bindFramebuffer(n.FRAMEBUFFER,F.__webglMultisampledFramebuffer);for(let wA=0;wA<eA.length;wA++){const cA=eA[wA];F.__webglColorRenderbuffer[wA]=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,F.__webglColorRenderbuffer[wA]);const xA=r.convert(cA.format,cA.colorSpace),lA=r.convert(cA.type),IA=y(cA.internalFormat,xA,lA,cA.colorSpace,R.isXRRenderTarget===!0),HA=vA(R);n.renderbufferStorageMultisample(n.RENDERBUFFER,HA,IA,R.width,R.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+wA,n.RENDERBUFFER,F.__webglColorRenderbuffer[wA])}n.bindRenderbuffer(n.RENDERBUFFER,null),R.depthBuffer&&(F.__webglDepthRenderbuffer=n.createRenderbuffer(),G(F.__webglDepthRenderbuffer,R,!0)),e.bindFramebuffer(n.FRAMEBUFFER,null)}}if(nA){e.bindTexture(n.TEXTURE_CUBE_MAP,iA.__webglTexture),k(n.TEXTURE_CUBE_MAP,L);for(let wA=0;wA<6;wA++)if(L.mipmaps&&L.mipmaps.length>0)for(let cA=0;cA<L.mipmaps.length;cA++)j(F.__webglFramebuffer[wA][cA],R,L,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+wA,cA);else j(F.__webglFramebuffer[wA],R,L,n.COLOR_ATTACHMENT0,n.TEXTURE_CUBE_MAP_POSITIVE_X+wA,0);d(L)&&g(n.TEXTURE_CUBE_MAP),e.unbindTexture()}else if(fA){for(let wA=0,cA=eA.length;wA<cA;wA++){const xA=eA[wA],lA=t.get(xA);e.bindTexture(n.TEXTURE_2D,lA.__webglTexture),k(n.TEXTURE_2D,xA),j(F.__webglFramebuffer,R,xA,n.COLOR_ATTACHMENT0+wA,n.TEXTURE_2D,0),d(xA)&&g(n.TEXTURE_2D)}e.unbindTexture()}else{let wA=n.TEXTURE_2D;if((R.isWebGL3DRenderTarget||R.isWebGLArrayRenderTarget)&&(wA=R.isWebGL3DRenderTarget?n.TEXTURE_3D:n.TEXTURE_2D_ARRAY),e.bindTexture(wA,iA.__webglTexture),k(wA,L),L.mipmaps&&L.mipmaps.length>0)for(let cA=0;cA<L.mipmaps.length;cA++)j(F.__webglFramebuffer[cA],R,L,n.COLOR_ATTACHMENT0,wA,cA);else j(F.__webglFramebuffer,R,L,n.COLOR_ATTACHMENT0,wA,0);d(L)&&g(wA),e.unbindTexture()}R.depthBuffer&&J(R)}function H(R){const L=R.textures;for(let F=0,iA=L.length;F<iA;F++){const eA=L[F];if(d(eA)){const nA=R.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:n.TEXTURE_2D,fA=t.get(eA).__webglTexture;e.bindTexture(nA,fA),g(nA),e.unbindTexture()}}}const aA=[],AA=[];function TA(R){if(R.samples>0){if(mA(R)===!1){const L=R.textures,F=R.width,iA=R.height;let eA=n.COLOR_BUFFER_BIT;const nA=R.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,fA=t.get(R),wA=L.length>1;if(wA)for(let cA=0;cA<L.length;cA++)e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.RENDERBUFFER,null),e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.TEXTURE_2D,null,0);e.bindFramebuffer(n.READ_FRAMEBUFFER,fA.__webglMultisampledFramebuffer),e.bindFramebuffer(n.DRAW_FRAMEBUFFER,fA.__webglFramebuffer);for(let cA=0;cA<L.length;cA++){if(R.resolveDepthBuffer&&(R.depthBuffer&&(eA|=n.DEPTH_BUFFER_BIT),R.stencilBuffer&&R.resolveStencilBuffer&&(eA|=n.STENCIL_BUFFER_BIT)),wA){n.framebufferRenderbuffer(n.READ_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.RENDERBUFFER,fA.__webglColorRenderbuffer[cA]);const xA=t.get(L[cA]).__webglTexture;n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,xA,0)}n.blitFramebuffer(0,0,F,iA,0,0,F,iA,eA,n.NEAREST),a===!0&&(aA.length=0,AA.length=0,aA.push(n.COLOR_ATTACHMENT0+cA),R.depthBuffer&&R.resolveDepthBuffer===!1&&(aA.push(nA),AA.push(nA),n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,AA)),n.invalidateFramebuffer(n.READ_FRAMEBUFFER,aA))}if(e.bindFramebuffer(n.READ_FRAMEBUFFER,null),e.bindFramebuffer(n.DRAW_FRAMEBUFFER,null),wA)for(let cA=0;cA<L.length;cA++){e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglMultisampledFramebuffer),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.RENDERBUFFER,fA.__webglColorRenderbuffer[cA]);const xA=t.get(L[cA]).__webglTexture;e.bindFramebuffer(n.FRAMEBUFFER,fA.__webglFramebuffer),n.framebufferTexture2D(n.DRAW_FRAMEBUFFER,n.COLOR_ATTACHMENT0+cA,n.TEXTURE_2D,xA,0)}e.bindFramebuffer(n.DRAW_FRAMEBUFFER,fA.__webglMultisampledFramebuffer)}else if(R.depthBuffer&&R.resolveDepthBuffer===!1&&a){const L=R.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;n.invalidateFramebuffer(n.DRAW_FRAMEBUFFER,[L])}}}function vA(R){return Math.min(i.maxSamples,R.samples)}function mA(R){const L=t.get(R);return R.samples>0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&L.__useRenderToTexture!==!1}function yA(R){const L=s.render.frame;u.get(R)!==L&&(u.set(R,L),R.update())}function _A(R,L){const F=R.colorSpace,iA=R.format,eA=R.type;return R.isCompressedTexture===!0||R.isVideoTexture===!0||F!==at&&F!==On&&(Se.getTransfer(F)===Le?(iA!==_e||eA!==Ri)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",F)),L}function gA(R){return typeof HTMLImageElement<"u"&&R instanceof HTMLImageElement?(l.width=R.naturalWidth||R.width,l.height=R.naturalHeight||R.height):typeof VideoFrame<"u"&&R instanceof VideoFrame?(l.width=R.displayWidth,l.height=R.displayHeight):(l.width=R.width,l.height=R.height),l}this.allocateTextureUnit=D,this.resetTextureUnits=I,this.setTexture2D=M,this.setTexture2DArray=T,this.setTexture3D=q,this.setTextureCube=B,this.rebindTextures=tA,this.setupRenderTarget=dA,this.updateRenderTargetMipmap=H,this.updateMultisampleRenderTarget=TA,this.setupDepthRenderbuffer=J,this.setupFrameBufferTexture=j,this.useMultisampledRTT=mA}function TT(n,A){function e(t,i=On){let r;const s=Se.getTransfer(i);if(t===Ri)return n.UNSIGNED_BYTE;if(t===vy)return n.UNSIGNED_SHORT_4_4_4_4;if(t===yy)return n.UNSIGNED_SHORT_5_5_5_1;if(t===L3)return n.UNSIGNED_INT_5_9_9_9_REV;if(t===kd)return n.BYTE;if(t===my)return n.SHORT;if(t===jd)return n.UNSIGNED_SHORT;if(t===ll)return n.INT;if(t===ki)return n.UNSIGNED_INT;if(t===Me)return n.FLOAT;if(t===Oe)return n.HALF_FLOAT;if(t===O3)return n.ALPHA;if(t===q3)return n.RGB;if(t===_e)return n.RGBA;if(t===N3)return n.LUMINANCE;if(t===B3)return n.LUMINANCE_ALPHA;if(t===io)return n.DEPTH_COMPONENT;if(t===hl)return n.DEPTH_STENCIL;if(t===no)return n.RED;if(t===Kd)return n.RED_INTEGER;if(t===Fd)return n.RG;if(t===eh)return n.RG_INTEGER;if(t===ul)return n.RGBA_INTEGER;if(t===Gd||t===Hd||t===Yd||t===Ud)if(s===Le)if(r=A.get("WEBGL_compressed_texture_s3tc_srgb"),r!==null){if(t===Gd)return r.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(t===Hd)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(t===Yd)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(t===Ud)return r.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(r=A.get("WEBGL_compressed_texture_s3tc"),r!==null){if(t===Gd)return r.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Hd)return r.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Yd)return r.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Ud)return r.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(t===wy||t===Cy||t===xy||t===Iy)if(r=A.get("WEBGL_compressed_texture_pvrtc"),r!==null){if(t===wy)return r.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Cy)return r.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===xy)return r.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===Iy)return r.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(t===by||t===_y||t===Sy)if(r=A.get("WEBGL_compressed_texture_etc"),r!==null){if(t===by||t===_y)return s===Le?r.COMPRESSED_SRGB8_ETC2:r.COMPRESSED_RGB8_ETC2;if(t===Sy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:r.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(t===My||t===Py||t===Ty||t===Dy||t===Ey||t===Ly||t===Oy||t===qy||t===Ny||t===By||t===zy||t===Ry||t===ky||t===jy)if(r=A.get("WEBGL_compressed_texture_astc"),r!==null){if(t===My)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:r.COMPRESSED_RGBA_ASTC_4x4_KHR;if(t===Py)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:r.COMPRESSED_RGBA_ASTC_5x4_KHR;if(t===Ty)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:r.COMPRESSED_RGBA_ASTC_5x5_KHR;if(t===Dy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:r.COMPRESSED_RGBA_ASTC_6x5_KHR;if(t===Ey)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:r.COMPRESSED_RGBA_ASTC_6x6_KHR;if(t===Ly)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:r.COMPRESSED_RGBA_ASTC_8x5_KHR;if(t===Oy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:r.COMPRESSED_RGBA_ASTC_8x6_KHR;if(t===qy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:r.COMPRESSED_RGBA_ASTC_8x8_KHR;if(t===Ny)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:r.COMPRESSED_RGBA_ASTC_10x5_KHR;if(t===By)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:r.COMPRESSED_RGBA_ASTC_10x6_KHR;if(t===zy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:r.COMPRESSED_RGBA_ASTC_10x8_KHR;if(t===Ry)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:r.COMPRESSED_RGBA_ASTC_10x10_KHR;if(t===ky)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:r.COMPRESSED_RGBA_ASTC_12x10_KHR;if(t===jy)return s===Le?r.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:r.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(t===Wd||t===Ky||t===Fy)if(r=A.get("EXT_texture_compression_bptc"),r!==null){if(t===Wd)return s===Le?r.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:r.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(t===Ky)return r.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(t===Fy)return r.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(t===z3||t===Gy||t===Hy||t===Yy)if(r=A.get("EXT_texture_compression_rgtc"),r!==null){if(t===Wd)return r.COMPRESSED_RED_RGTC1_EXT;if(t===Gy)return r.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(t===Hy)return r.COMPRESSED_RED_GREEN_RGTC2_EXT;if(t===Yy)return r.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return t===cl?n.UNSIGNED_INT_24_8:n[t]!==void 0?n[t]:null}return{convert:e}}class DT extends gt{constructor(A=[]){super(),this.isArrayCamera=!0,this.cameras=A}}let Et=class extends Ie{constructor(){super(),this.isGroup=!0,this.type="Group"}};const ET={type:"move"};class Tp{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Et,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Et,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new O,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new O),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Et,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new O,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new O),this._grip}dispatchEvent(A){return this._targetRay!==null&&this._targetRay.dispatchEvent(A),this._grip!==null&&this._grip.dispatchEvent(A),this._hand!==null&&this._hand.dispatchEvent(A),this}connect(A){if(A&&A.hand){const e=this._hand;if(e)for(const t of A.hand.values())this._getHandJoint(e,t)}return this.dispatchEvent({type:"connected",data:A}),this}disconnect(A){return this.dispatchEvent({type:"disconnected",data:A}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(A,e,t){let i=null,r=null,s=null;const o=this._targetRay,a=this._grip,l=this._hand;if(A&&e.session.visibilityState!=="visible-blurred"){if(l&&A.hand){s=!0;for(const m of A.hand.values()){const d=e.getJointPose(m,t),g=this._getHandJoint(l,m);d!==null&&(g.matrix.fromArray(d.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.matrixWorldNeedsUpdate=!0,g.jointRadius=d.radius),g.visible=d!==null}const u=l.joints["index-finger-tip"],c=l.joints["thumb-tip"],h=u.position.distanceTo(c.position),f=.02,p=.005;l.inputState.pinching&&h>f+p?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:A.handedness,target:this})):!l.inputState.pinching&&h<=f-p&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:A.handedness,target:this}))}else a!==null&&A.gripSpace&&(r=e.getPose(A.gripSpace,t),r!==null&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),a.matrixWorldNeedsUpdate=!0,r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1));o!==null&&(i=e.getPose(A.targetRaySpace,t),i===null&&r!==null&&(i=r),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(ET)))}return o!==null&&(o.visible=i!==null),a!==null&&(a.visible=r!==null),l!==null&&(l.visible=s!==null),this}_getHandJoint(A,e){if(A.joints[e.jointName]===void 0){const t=new Et;t.matrixAutoUpdate=!1,t.visible=!1,A.joints[e.jointName]=t,A.add(t)}return A.joints[e.jointName]}}const LT=`
3802
3802
  void main() {
3803
3803
 
3804
3804
  gl_Position = vec4( position, 1.0 );
@@ -3822,11 +3822,11 @@ void main() {
3822
3822
 
3823
3823
  }
3824
3824
 
3825
- }`;class qT{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(A,e,t){if(this.texture===null){const i=new lt,r=A.properties.get(i);r.__webglTexture=e.texture,(e.depthNear!=t.depthNear||e.depthFar!=t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}render(A,e){if(this.texture!==null){if(this.mesh===null){const t=e.cameras[0].viewport,i=new $e({vertexShader:LT,fragmentShader:OT,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Te(new Kn(20,20),i)}A.render(this.mesh,e)}}reset(){this.texture=null,this.mesh=null}}class NT extends ns{constructor(A,e){super();const t=this;let i=null,r=1,s=null,o="local-floor",a=1,l=null,u=null,c=null,h=null,f=null,p=null;const m=new qT,d=e.getContextAttributes();let g=null,y=null;const v=[],w=[],C=new uA;let _=null;const x=new gt;x.layers.enable(1),x.viewport=new ve;const S=new gt;S.layers.enable(2),S.viewport=new ve;const b=[x,S],I=new DT;I.layers.enable(1),I.layers.enable(2);let D=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getTargetRaySpace()},this.getControllerGrip=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getGripSpace()},this.getHand=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getHandSpace()};function M(j){const G=w.indexOf(j.inputSource);if(G===-1)return;const V=v[G];V!==void 0&&(V.update(j.inputSource,j.frame,l||s),V.dispatchEvent({type:j.type,data:j.inputSource}))}function T(){i.removeEventListener("select",M),i.removeEventListener("selectstart",M),i.removeEventListener("selectend",M),i.removeEventListener("squeeze",M),i.removeEventListener("squeezestart",M),i.removeEventListener("squeezeend",M),i.removeEventListener("end",T),i.removeEventListener("inputsourceschange",q);for(let j=0;j<v.length;j++){const G=w[j];G!==null&&(w[j]=null,v[j].disconnect(G))}D=null,P=null,m.reset(),A.setRenderTarget(g),f=null,h=null,c=null,i=null,y=null,X.stop(),t.isPresenting=!1,A.setPixelRatio(_),A.setSize(C.width,C.height,!1),t.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(j){r=j,t.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(j){o=j,t.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(j){l=j},this.getBaseLayer=function(){return h!==null?h:f},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(j){if(i=j,i!==null){if(g=A.getRenderTarget(),i.addEventListener("select",M),i.addEventListener("selectstart",M),i.addEventListener("selectend",M),i.addEventListener("squeeze",M),i.addEventListener("squeezestart",M),i.addEventListener("squeezeend",M),i.addEventListener("end",T),i.addEventListener("inputsourceschange",q),d.xrCompatible!==!0&&await e.makeXRCompatible(),_=A.getPixelRatio(),A.getSize(C),i.renderState.layers===void 0){const G={antialias:d.antialias,alpha:!0,depth:d.depth,stencil:d.stencil,framebufferScaleFactor:r};f=new XRWebGLLayer(i,e,G),i.updateRenderState({baseLayer:f}),A.setPixelRatio(1),A.setSize(f.framebufferWidth,f.framebufferHeight,!1),y=new Ve(f.framebufferWidth,f.framebufferHeight,{format:_e,type:Ri,colorSpace:A.outputColorSpace,stencilBuffer:d.stencil})}else{let G=null,V=null,J=null;d.depth&&(J=d.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,G=d.stencil?hl:io,V=d.stencil?cl:ki);const tA={colorFormat:e.RGBA8,depthFormat:J,scaleFactor:r};c=new XRWebGLBinding(i,e),h=c.createProjectionLayer(tA),i.updateRenderState({layers:[h]}),A.setPixelRatio(1),A.setSize(h.textureWidth,h.textureHeight,!1),y=new Ve(h.textureWidth,h.textureHeight,{format:_e,type:Ri,depthTexture:new Bw(h.textureWidth,h.textureHeight,V,void 0,void 0,void 0,void 0,void 0,void 0,G),stencilBuffer:d.stencil,colorSpace:A.outputColorSpace,samples:d.antialias?4:0,resolveDepthBuffer:h.ignoreDepthValues===!1})}y.isXRRenderTarget=!0,this.setFoveation(a),l=null,s=await i.requestReferenceSpace(o),X.setContext(i),X.start(),t.isPresenting=!0,t.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode};function q(j){for(let G=0;G<j.removed.length;G++){const V=j.removed[G],J=w.indexOf(V);J>=0&&(w[J]=null,v[J].disconnect(V))}for(let G=0;G<j.added.length;G++){const V=j.added[G];let J=w.indexOf(V);if(J===-1){for(let dA=0;dA<v.length;dA++)if(dA>=w.length){w.push(V),J=dA;break}else if(w[dA]===null){w[dA]=V,J=dA;break}if(J===-1)break}const tA=v[J];tA&&tA.connect(V)}}const B=new O,W=new O;function K(j,G,V){B.setFromMatrixPosition(G.matrixWorld),W.setFromMatrixPosition(V.matrixWorld);const J=B.distanceTo(W),tA=G.projectionMatrix.elements,dA=V.projectionMatrix.elements,H=tA[14]/(tA[10]-1),aA=tA[14]/(tA[10]+1),AA=(tA[9]+1)/tA[5],TA=(tA[9]-1)/tA[5],vA=(tA[8]-1)/tA[0],mA=(dA[8]+1)/dA[0],yA=H*vA,_A=H*mA,gA=J/(-vA+mA),R=gA*-vA;G.matrixWorld.decompose(j.position,j.quaternion,j.scale),j.translateX(R),j.translateZ(gA),j.matrixWorld.compose(j.position,j.quaternion,j.scale),j.matrixWorldInverse.copy(j.matrixWorld).invert();const L=H+gA,F=aA+gA,iA=yA-R,eA=_A+(J-R),nA=AA*aA/F*L,fA=TA*aA/F*L;j.projectionMatrix.makePerspective(iA,eA,nA,fA,L,F),j.projectionMatrixInverse.copy(j.projectionMatrix).invert()}function U(j,G){G===null?j.matrixWorld.copy(j.matrix):j.matrixWorld.multiplyMatrices(G.matrixWorld,j.matrix),j.matrixWorldInverse.copy(j.matrixWorld).invert()}this.updateCamera=function(j){if(i===null)return;m.texture!==null&&(j.near=m.depthNear,j.far=m.depthFar),I.near=S.near=x.near=j.near,I.far=S.far=x.far=j.far,(D!==I.near||P!==I.far)&&(i.updateRenderState({depthNear:I.near,depthFar:I.far}),D=I.near,P=I.far,x.near=D,x.far=P,S.near=D,S.far=P,x.updateProjectionMatrix(),S.updateProjectionMatrix(),j.updateProjectionMatrix());const G=j.parent,V=I.cameras;U(I,G);for(let J=0;J<V.length;J++)U(V[J],G);V.length===2?K(I,x,S):I.projectionMatrix.copy(x.projectionMatrix),k(j,I,G)};function k(j,G,V){V===null?j.matrix.copy(G.matrixWorld):(j.matrix.copy(V.matrixWorld),j.matrix.invert(),j.matrix.multiply(G.matrixWorld)),j.matrix.decompose(j.position,j.quaternion,j.scale),j.updateMatrixWorld(!0),j.projectionMatrix.copy(G.projectionMatrix),j.projectionMatrixInverse.copy(G.projectionMatrixInverse),j.isPerspectiveCamera&&(j.fov=ao*2*Math.atan(1/j.projectionMatrix.elements[5]),j.zoom=1)}this.getCamera=function(){return I},this.getFoveation=function(){if(!(h===null&&f===null))return a},this.setFoveation=function(j){a=j,h!==null&&(h.fixedFoveation=j),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=j)},this.hasDepthSensing=function(){return m.texture!==null};let N=null;function Y(j,G){if(u=G.getViewerPose(l||s),p=G,u!==null){const V=u.views;f!==null&&(A.setRenderTargetFramebuffer(y,f.framebuffer),A.setRenderTarget(y));let J=!1;V.length!==I.cameras.length&&(I.cameras.length=0,J=!0);for(let dA=0;dA<V.length;dA++){const H=V[dA];let aA=null;if(f!==null)aA=f.getViewport(H);else{const TA=c.getViewSubImage(h,H);aA=TA.viewport,dA===0&&(A.setRenderTargetTextures(y,TA.colorTexture,h.ignoreDepthValues?void 0:TA.depthStencilTexture),A.setRenderTarget(y))}let AA=b[dA];AA===void 0&&(AA=new gt,AA.layers.enable(dA),AA.viewport=new ve,b[dA]=AA),AA.matrix.fromArray(H.transform.matrix),AA.matrix.decompose(AA.position,AA.quaternion,AA.scale),AA.projectionMatrix.fromArray(H.projectionMatrix),AA.projectionMatrixInverse.copy(AA.projectionMatrix).invert(),AA.viewport.set(aA.x,aA.y,aA.width,aA.height),dA===0&&(I.matrix.copy(AA.matrix),I.matrix.decompose(I.position,I.quaternion,I.scale)),J===!0&&I.cameras.push(AA)}const tA=i.enabledFeatures;if(tA&&tA.includes("depth-sensing")){const dA=c.getDepthInformation(V[0]);dA&&dA.isValid&&dA.texture&&m.init(A,dA,i.renderState)}}for(let V=0;V<v.length;V++){const J=w[V],tA=v[V];J!==null&&tA!==void 0&&tA.update(J,G,l||s)}m.render(A,I),N&&N(j,G),G.detectedPlanes&&t.dispatchEvent({type:"planesdetected",data:G}),p=null}const X=new Pw;X.setAnimationLoop(Y),this.setAnimationLoop=function(j){N=j},this.dispose=function(){}}}const ds=new on,BT=new zA;function zT(n,A){function e(d,g){d.matrixAutoUpdate===!0&&d.updateMatrix(),g.value.copy(d.matrix)}function t(d,g){g.color.getRGB(d.fogColor.value,Iw(n)),g.isFog?(d.fogNear.value=g.near,d.fogFar.value=g.far):g.isFogExp2&&(d.fogDensity.value=g.density)}function i(d,g,y,v,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?r(d,g):g.isMeshToonMaterial?(r(d,g),c(d,g)):g.isMeshPhongMaterial?(r(d,g),u(d,g)):g.isMeshStandardMaterial?(r(d,g),h(d,g),g.isMeshPhysicalMaterial&&f(d,g,w)):g.isMeshMatcapMaterial?(r(d,g),p(d,g)):g.isMeshDepthMaterial?r(d,g):g.isMeshDistanceMaterial?(r(d,g),m(d,g)):g.isMeshNormalMaterial?r(d,g):g.isLineBasicMaterial?(s(d,g),g.isLineDashedMaterial&&o(d,g)):g.isPointsMaterial?a(d,g,y,v):g.isSpriteMaterial?l(d,g):g.isShadowMaterial?(d.color.value.copy(g.color),d.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function r(d,g){d.opacity.value=g.opacity,g.color&&d.diffuse.value.copy(g.color),g.emissive&&d.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(d.map.value=g.map,e(g.map,d.mapTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.bumpMap&&(d.bumpMap.value=g.bumpMap,e(g.bumpMap,d.bumpMapTransform),d.bumpScale.value=g.bumpScale,g.side===dt&&(d.bumpScale.value*=-1)),g.normalMap&&(d.normalMap.value=g.normalMap,e(g.normalMap,d.normalMapTransform),d.normalScale.value.copy(g.normalScale),g.side===dt&&d.normalScale.value.negate()),g.displacementMap&&(d.displacementMap.value=g.displacementMap,e(g.displacementMap,d.displacementMapTransform),d.displacementScale.value=g.displacementScale,d.displacementBias.value=g.displacementBias),g.emissiveMap&&(d.emissiveMap.value=g.emissiveMap,e(g.emissiveMap,d.emissiveMapTransform)),g.specularMap&&(d.specularMap.value=g.specularMap,e(g.specularMap,d.specularMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest);const y=A.get(g),v=y.envMap,w=y.envMapRotation;if(v&&(d.envMap.value=v,ds.copy(w),ds.x*=-1,ds.y*=-1,ds.z*=-1,v.isCubeTexture&&v.isRenderTargetTexture===!1&&(ds.y*=-1,ds.z*=-1),d.envMapRotation.value.setFromMatrix4(BT.makeRotationFromEuler(ds)),d.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,d.reflectivity.value=g.reflectivity,d.ior.value=g.ior,d.refractionRatio.value=g.refractionRatio),g.lightMap){d.lightMap.value=g.lightMap;const C=n._useLegacyLights===!0?Math.PI:1;d.lightMapIntensity.value=g.lightMapIntensity*C,e(g.lightMap,d.lightMapTransform)}g.aoMap&&(d.aoMap.value=g.aoMap,d.aoMapIntensity.value=g.aoMapIntensity,e(g.aoMap,d.aoMapTransform))}function s(d,g){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,g.map&&(d.map.value=g.map,e(g.map,d.mapTransform))}function o(d,g){d.dashSize.value=g.dashSize,d.totalSize.value=g.dashSize+g.gapSize,d.scale.value=g.scale}function a(d,g,y,v){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,d.size.value=g.size*y,d.scale.value=v*.5,g.map&&(d.map.value=g.map,e(g.map,d.uvTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest)}function l(d,g){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,d.rotation.value=g.rotation,g.map&&(d.map.value=g.map,e(g.map,d.mapTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest)}function u(d,g){d.specular.value.copy(g.specular),d.shininess.value=Math.max(g.shininess,1e-4)}function c(d,g){g.gradientMap&&(d.gradientMap.value=g.gradientMap)}function h(d,g){d.metalness.value=g.metalness,g.metalnessMap&&(d.metalnessMap.value=g.metalnessMap,e(g.metalnessMap,d.metalnessMapTransform)),d.roughness.value=g.roughness,g.roughnessMap&&(d.roughnessMap.value=g.roughnessMap,e(g.roughnessMap,d.roughnessMapTransform)),g.envMap&&(d.envMapIntensity.value=g.envMapIntensity)}function f(d,g,y){d.ior.value=g.ior,g.sheen>0&&(d.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),d.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(d.sheenColorMap.value=g.sheenColorMap,e(g.sheenColorMap,d.sheenColorMapTransform)),g.sheenRoughnessMap&&(d.sheenRoughnessMap.value=g.sheenRoughnessMap,e(g.sheenRoughnessMap,d.sheenRoughnessMapTransform))),g.clearcoat>0&&(d.clearcoat.value=g.clearcoat,d.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(d.clearcoatMap.value=g.clearcoatMap,e(g.clearcoatMap,d.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(d.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,e(g.clearcoatRoughnessMap,d.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(d.clearcoatNormalMap.value=g.clearcoatNormalMap,e(g.clearcoatNormalMap,d.clearcoatNormalMapTransform),d.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===dt&&d.clearcoatNormalScale.value.negate())),g.dispersion>0&&(d.dispersion.value=g.dispersion),g.iridescence>0&&(d.iridescence.value=g.iridescence,d.iridescenceIOR.value=g.iridescenceIOR,d.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],d.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(d.iridescenceMap.value=g.iridescenceMap,e(g.iridescenceMap,d.iridescenceMapTransform)),g.iridescenceThicknessMap&&(d.iridescenceThicknessMap.value=g.iridescenceThicknessMap,e(g.iridescenceThicknessMap,d.iridescenceThicknessMapTransform))),g.transmission>0&&(d.transmission.value=g.transmission,d.transmissionSamplerMap.value=y.texture,d.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(d.transmissionMap.value=g.transmissionMap,e(g.transmissionMap,d.transmissionMapTransform)),d.thickness.value=g.thickness,g.thicknessMap&&(d.thicknessMap.value=g.thicknessMap,e(g.thicknessMap,d.thicknessMapTransform)),d.attenuationDistance.value=g.attenuationDistance,d.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(d.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(d.anisotropyMap.value=g.anisotropyMap,e(g.anisotropyMap,d.anisotropyMapTransform))),d.specularIntensity.value=g.specularIntensity,d.specularColor.value.copy(g.specularColor),g.specularColorMap&&(d.specularColorMap.value=g.specularColorMap,e(g.specularColorMap,d.specularColorMapTransform)),g.specularIntensityMap&&(d.specularIntensityMap.value=g.specularIntensityMap,e(g.specularIntensityMap,d.specularIntensityMapTransform))}function p(d,g){g.matcap&&(d.matcap.value=g.matcap)}function m(d,g){const y=A.get(g).light;d.referencePosition.value.setFromMatrixPosition(y.matrixWorld),d.nearDistance.value=y.shadow.camera.near,d.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:t,refreshMaterialUniforms:i}}function RT(n,A,e,t){let i={},r={},s=[];const o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function a(y,v){const w=v.program;t.uniformBlockBinding(y,w)}function l(y,v){let w=i[y.id];w===void 0&&(p(y),w=u(y),i[y.id]=w,y.addEventListener("dispose",d));const C=v.program;t.updateUBOMapping(y,C);const _=A.render.frame;r[y.id]!==_&&(h(y),r[y.id]=_)}function u(y){const v=c();y.__bindingPointIndex=v;const w=n.createBuffer(),C=y.__size,_=y.usage;return n.bindBuffer(n.UNIFORM_BUFFER,w),n.bufferData(n.UNIFORM_BUFFER,C,_),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,v,w),w}function c(){for(let y=0;y<o;y++)if(s.indexOf(y)===-1)return s.push(y),y;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function h(y){const v=i[y.id],w=y.uniforms,C=y.__cache;n.bindBuffer(n.UNIFORM_BUFFER,v);for(let _=0,x=w.length;_<x;_++){const S=Array.isArray(w[_])?w[_]:[w[_]];for(let b=0,I=S.length;b<I;b++){const D=S[b];if(f(D,_,b,C)===!0){const P=D.__offset,M=Array.isArray(D.value)?D.value:[D.value];let T=0;for(let q=0;q<M.length;q++){const B=M[q],W=m(B);typeof B=="number"||typeof B=="boolean"?(D.__data[0]=B,n.bufferSubData(n.UNIFORM_BUFFER,P+T,D.__data)):B.isMatrix3?(D.__data[0]=B.elements[0],D.__data[1]=B.elements[1],D.__data[2]=B.elements[2],D.__data[3]=0,D.__data[4]=B.elements[3],D.__data[5]=B.elements[4],D.__data[6]=B.elements[5],D.__data[7]=0,D.__data[8]=B.elements[6],D.__data[9]=B.elements[7],D.__data[10]=B.elements[8],D.__data[11]=0):(B.toArray(D.__data,T),T+=W.storage/Float32Array.BYTES_PER_ELEMENT)}n.bufferSubData(n.UNIFORM_BUFFER,P,D.__data)}}}n.bindBuffer(n.UNIFORM_BUFFER,null)}function f(y,v,w,C){const _=y.value,x=v+"_"+w;if(C[x]===void 0)return typeof _=="number"||typeof _=="boolean"?C[x]=_:C[x]=_.clone(),!0;{const S=C[x];if(typeof _=="number"||typeof _=="boolean"){if(S!==_)return C[x]=_,!0}else if(S.equals(_)===!1)return S.copy(_),!0}return!1}function p(y){const v=y.uniforms;let w=0;const C=16;for(let x=0,S=v.length;x<S;x++){const b=Array.isArray(v[x])?v[x]:[v[x]];for(let I=0,D=b.length;I<D;I++){const P=b[I],M=Array.isArray(P.value)?P.value:[P.value];for(let T=0,q=M.length;T<q;T++){const B=M[T],W=m(B),K=w%C;K!==0&&C-K<W.boundary&&(w+=C-K),P.__data=new Float32Array(W.storage/Float32Array.BYTES_PER_ELEMENT),P.__offset=w,w+=W.storage}}}const _=w%C;return _>0&&(w+=C-_),y.__size=w,y.__cache={},this}function m(y){const v={boundary:0,storage:0};return typeof y=="number"||typeof y=="boolean"?(v.boundary=4,v.storage=4):y.isVector2?(v.boundary=8,v.storage=8):y.isVector3||y.isColor?(v.boundary=16,v.storage=12):y.isVector4?(v.boundary=16,v.storage=16):y.isMatrix3?(v.boundary=48,v.storage=48):y.isMatrix4?(v.boundary=64,v.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),v}function d(y){const v=y.target;v.removeEventListener("dispose",d);const w=s.indexOf(v.__bindingPointIndex);s.splice(w,1),n.deleteBuffer(i[v.id]),delete i[v.id],delete r[v.id]}function g(){for(const y in i)n.deleteBuffer(i[y]);s=[],i={},r={}}return{bind:a,update:l,dispose:g}}class n1{constructor(A={}){const{canvas:e=hM(),context:t=null,depth:i=!0,stencil:r=!1,alpha:s=!1,antialias:o=!1,premultipliedAlpha:a=!0,preserveDrawingBuffer:l=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:c=!1}=A;this.isWebGLRenderer=!0;let h;if(t!==null){if(typeof WebGLRenderingContext<"u"&&t instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");h=t.getContextAttributes().alpha}else h=s;const f=new Uint32Array(4),p=new Int32Array(4);let m=null,d=null;const g=[],y=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=je,this._useLegacyLights=!1,this.toneMapping=Ln,this.toneMappingExposure=1;const v=this;let w=!1,C=0,_=0,x=null,S=-1,b=null;const I=new ve,D=new ve;let P=null;const M=new KA(0);let T=0,q=e.width,B=e.height,W=1,K=null,U=null;const k=new ve(0,0,q,B),N=new ve(0,0,q,B);let Y=!1;const X=new yp;let j=!1,G=!1;const V=new zA,J=new O,tA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function dA(){return x===null?W:1}let H=t;function aA(z,$){return e.getContext(z,$)}try{const z={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:a,preserveDrawingBuffer:l,powerPreference:u,failIfMajorPerformanceCaveat:c};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Qc}`),e.addEventListener("webglcontextlost",E,!1),e.addEventListener("webglcontextrestored",Q,!1),e.addEventListener("webglcontextcreationerror",Z,!1),H===null){const $="webgl2";if(H=aA($,z),H===null)throw aA($)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(z){throw console.error("THREE.WebGLRenderer: "+z.message),z}let AA,TA,vA,mA,yA,_A,gA,R,L,F,iA,eA,nA,fA,wA,cA,xA,lA,IA,HA,qA,CA,DA,SA;function XA(){AA=new Z6(H),AA.init(),CA=new TT(H,AA),TA=new G6(H,AA,A,CA),vA=new MT(H),mA=new V6(H),yA=new pT,_A=new PT(H,AA,vA,yA,TA,CA,mA),gA=new Y6(v),R=new J6(v),L=new kM(H),DA=new K6(H,L),F=new X6(H,L,mA,DA),iA=new AP(H,F,L,mA),IA=new $6(H,TA,_A),cA=new H6(yA),eA=new dT(v,gA,R,AA,TA,DA,cA),nA=new zT(v,yA),fA=new mT,wA=new IT(AA),lA=new j6(v,gA,R,vA,iA,h,a),xA=new ST(v,iA,TA),SA=new RT(H,mA,TA,vA),HA=new F6(H,AA,mA),qA=new Q6(H,AA,mA),mA.programs=eA.programs,v.capabilities=TA,v.extensions=AA,v.properties=yA,v.renderLists=fA,v.shadowMap=xA,v.state=vA,v.info=mA}XA();const FA=new NT(v,H);this.xr=FA,this.getContext=function(){return H},this.getContextAttributes=function(){return H.getContextAttributes()},this.forceContextLoss=function(){const z=AA.get("WEBGL_lose_context");z&&z.loseContext()},this.forceContextRestore=function(){const z=AA.get("WEBGL_lose_context");z&&z.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(z){z!==void 0&&(W=z,this.setSize(q,B,!1))},this.getSize=function(z){return z.set(q,B)},this.setSize=function(z,$,oA=!0){if(FA.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}q=z,B=$,e.width=Math.floor(z*W),e.height=Math.floor($*W),oA===!0&&(e.style.width=z+"px",e.style.height=$+"px"),this.setViewport(0,0,z,$)},this.getDrawingBufferSize=function(z){return z.set(q*W,B*W).floor()},this.setDrawingBufferSize=function(z,$,oA){q=z,B=$,W=oA,e.width=Math.floor(z*oA),e.height=Math.floor($*oA),this.setViewport(0,0,z,$)},this.getCurrentViewport=function(z){return z.copy(I)},this.getViewport=function(z){return z.copy(k)},this.setViewport=function(z,$,oA,rA){z.isVector4?k.set(z.x,z.y,z.z,z.w):k.set(z,$,oA,rA),vA.viewport(I.copy(k).multiplyScalar(W).round())},this.getScissor=function(z){return z.copy(N)},this.setScissor=function(z,$,oA,rA){z.isVector4?N.set(z.x,z.y,z.z,z.w):N.set(z,$,oA,rA),vA.scissor(D.copy(N).multiplyScalar(W).round())},this.getScissorTest=function(){return Y},this.setScissorTest=function(z){vA.setScissorTest(Y=z)},this.setOpaqueSort=function(z){K=z},this.setTransparentSort=function(z){U=z},this.getClearColor=function(z){return z.copy(lA.getClearColor())},this.setClearColor=function(){lA.setClearColor.apply(lA,arguments)},this.getClearAlpha=function(){return lA.getClearAlpha()},this.setClearAlpha=function(){lA.setClearAlpha.apply(lA,arguments)},this.clear=function(z=!0,$=!0,oA=!0){let rA=0;if(z){let sA=!1;if(x!==null){const BA=x.texture.format;sA=BA===ul||BA===eh||BA===Kd}if(sA){const BA=x.texture.type,UA=BA===Ri||BA===ki||BA===jd||BA===cl||BA===vy||BA===yy,WA=lA.getClearColor(),QA=lA.getClearAlpha(),te=WA.r,bA=WA.g,se=WA.b;UA?(f[0]=te,f[1]=bA,f[2]=se,f[3]=QA,H.clearBufferuiv(H.COLOR,0,f)):(p[0]=te,p[1]=bA,p[2]=se,p[3]=QA,H.clearBufferiv(H.COLOR,0,p))}else rA|=H.COLOR_BUFFER_BIT}$&&(rA|=H.DEPTH_BUFFER_BIT),oA&&(rA|=H.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),H.clear(rA)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",E,!1),e.removeEventListener("webglcontextrestored",Q,!1),e.removeEventListener("webglcontextcreationerror",Z,!1),fA.dispose(),wA.dispose(),yA.dispose(),gA.dispose(),R.dispose(),iA.dispose(),DA.dispose(),SA.dispose(),eA.dispose(),FA.dispose(),FA.removeEventListener("sessionstart",NA),FA.removeEventListener("sessionend",ie),he.stop()};function E(z){z.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),w=!0}function Q(){console.log("THREE.WebGLRenderer: Context Restored."),w=!1;const z=mA.autoReset,$=xA.enabled,oA=xA.autoUpdate,rA=xA.needsUpdate,sA=xA.type;XA(),mA.autoReset=z,xA.enabled=$,xA.autoUpdate=oA,xA.needsUpdate=rA,xA.type=sA}function Z(z){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",z.statusMessage)}function hA(z){const $=z.target;$.removeEventListener("dispose",hA),MA($)}function MA(z){jA(z),yA.remove(z)}function jA(z){const $=yA.get(z).programs;$!==void 0&&($.forEach(function(oA){eA.releaseProgram(oA)}),z.isShaderMaterial&&eA.releaseShaderCache(z))}this.renderBufferDirect=function(z,$,oA,rA,sA,BA){$===null&&($=tA);const UA=sA.isMesh&&sA.matrixWorld.determinant()<0,WA=St(z,$,oA,rA,sA);vA.setMaterial(rA,UA);let QA=oA.index,te=1;if(rA.wireframe===!0){if(QA=F.getWireframeAttribute(oA),QA===void 0)return;te=2}const bA=oA.drawRange,se=oA.attributes.position;let Ze=bA.start*te,Ye=(bA.start+bA.count)*te;BA!==null&&(Ze=Math.max(Ze,BA.start*te),Ye=Math.min(Ye,(BA.start+BA.count)*te)),QA!==null?(Ze=Math.max(Ze,0),Ye=Math.min(Ye,QA.count)):se!=null&&(Ze=Math.max(Ze,0),Ye=Math.min(Ye,se.count));const xt=Ye-Ze;if(xt<0||xt===1/0)return;DA.setup(sA,rA,WA,oA,QA);let qi,Ce=HA;if(QA!==null&&(qi=L.get(QA),Ce=qA,Ce.setIndex(qi)),sA.isMesh)rA.wireframe===!0?(vA.setLineWidth(rA.wireframeLinewidth*dA()),Ce.setMode(H.LINES)):Ce.setMode(H.TRIANGLES);else if(sA.isLine){let Ae=rA.linewidth;Ae===void 0&&(Ae=1),vA.setLineWidth(Ae*dA()),sA.isLineSegments?Ce.setMode(H.LINES):sA.isLineLoop?Ce.setMode(H.LINE_LOOP):Ce.setMode(H.LINE_STRIP)}else sA.isPoints?Ce.setMode(H.POINTS):sA.isSprite&&Ce.setMode(H.TRIANGLES);if(sA.isBatchedMesh)sA._multiDrawInstances!==null?Ce.renderMultiDrawInstances(sA._multiDrawStarts,sA._multiDrawCounts,sA._multiDrawCount,sA._multiDrawInstances):Ce.renderMultiDraw(sA._multiDrawStarts,sA._multiDrawCounts,sA._multiDrawCount);else if(sA.isInstancedMesh)Ce.renderInstances(Ze,xt,sA.count);else if(oA.isInstancedBufferGeometry){const Ae=oA._maxInstanceCount!==void 0?oA._maxInstanceCount:1/0,Pn=Math.min(oA.instanceCount,Ae);Ce.renderInstances(Ze,xt,Pn)}else Ce.render(Ze,xt)};function OA(z,$,oA){z.transparent===!0&&z.side===ot&&z.forceSinglePass===!1?(z.side=dt,z.needsUpdate=!0,fi(z,$,oA),z.side=Bt,z.needsUpdate=!0,fi(z,$,oA),z.side=ot):fi(z,$,oA)}this.compile=function(z,$,oA=null){oA===null&&(oA=z),d=wA.get(oA),d.init($),y.push(d),oA.traverseVisible(function(sA){sA.isLight&&sA.layers.test($.layers)&&(d.pushLight(sA),sA.castShadow&&d.pushShadow(sA))}),z!==oA&&z.traverseVisible(function(sA){sA.isLight&&sA.layers.test($.layers)&&(d.pushLight(sA),sA.castShadow&&d.pushShadow(sA))}),d.setupLights(v._useLegacyLights);const rA=new Set;return z.traverse(function(sA){const BA=sA.material;if(BA)if(Array.isArray(BA))for(let UA=0;UA<BA.length;UA++){const WA=BA[UA];OA(WA,oA,sA),rA.add(WA)}else OA(BA,oA,sA),rA.add(BA)}),y.pop(),d=null,rA},this.compileAsync=function(z,$,oA=null){const rA=this.compile(z,$,oA);return new Promise(sA=>{function BA(){if(rA.forEach(function(UA){yA.get(UA).currentProgram.isReady()&&rA.delete(UA)}),rA.size===0){sA(z);return}setTimeout(BA,10)}AA.get("KHR_parallel_shader_compile")!==null?BA():setTimeout(BA,10)})};let re=null;function ae(z){re&&re(z)}function NA(){he.stop()}function ie(){he.start()}const he=new Pw;he.setAnimationLoop(ae),typeof self<"u"&&he.setContext(self),this.setAnimationLoop=function(z){re=z,FA.setAnimationLoop(z),z===null?he.stop():he.start()},FA.addEventListener("sessionstart",NA),FA.addEventListener("sessionend",ie),this.render=function(z,$){if($!==void 0&&$.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(w===!0)return;z.matrixWorldAutoUpdate===!0&&z.updateMatrixWorld(),$.parent===null&&$.matrixWorldAutoUpdate===!0&&$.updateMatrixWorld(),FA.enabled===!0&&FA.isPresenting===!0&&(FA.cameraAutoUpdate===!0&&FA.updateCamera($),$=FA.getCamera()),z.isScene===!0&&z.onBeforeRender(v,z,$,x),d=wA.get(z,y.length),d.init($),y.push(d),V.multiplyMatrices($.projectionMatrix,$.matrixWorldInverse),X.setFromProjectionMatrix(V),G=this.localClippingEnabled,j=cA.init(this.clippingPlanes,G),m=fA.get(z,g.length),m.init(),g.push(m),ke(z,$,0,v.sortObjects),m.finish(),v.sortObjects===!0&&m.sort(K,U);const oA=FA.enabled===!1||FA.isPresenting===!1||FA.hasDepthSensing()===!1;oA&&lA.addToRenderList(m,z),this.info.render.frame++,j===!0&&cA.beginShadows();const rA=d.state.shadowsArray;xA.render(rA,z,$),j===!0&&cA.endShadows(),this.info.autoReset===!0&&this.info.reset();const sA=m.opaque,BA=m.transmissive;if(d.setupLights(v._useLegacyLights),$.isArrayCamera){const UA=$.cameras;if(BA.length>0)for(let WA=0,QA=UA.length;WA<QA;WA++){const te=UA[WA];st(sA,BA,z,te)}oA&&lA.render(z);for(let WA=0,QA=UA.length;WA<QA;WA++){const te=UA[WA];be(m,z,te,te.viewport)}}else BA.length>0&&st(sA,BA,z,$),oA&&lA.render(z),be(m,z,$);x!==null&&(_A.updateMultisampleRenderTarget(x),_A.updateRenderTargetMipmap(x)),z.isScene===!0&&z.onAfterRender(v,z,$),DA.resetDefaultState(),S=-1,b=null,y.pop(),y.length>0?(d=y[y.length-1],j===!0&&cA.setGlobalState(v.clippingPlanes,d.state.camera)):d=null,g.pop(),g.length>0?m=g[g.length-1]:m=null};function ke(z,$,oA,rA){if(z.visible===!1)return;if(z.layers.test($.layers)){if(z.isGroup)oA=z.renderOrder;else if(z.isLOD)z.autoUpdate===!0&&z.update($);else if(z.isLight)d.pushLight(z),z.castShadow&&d.pushShadow(z);else if(z.isSprite){if(!z.frustumCulled||X.intersectsSprite(z)){rA&&J.setFromMatrixPosition(z.matrixWorld).applyMatrix4(V);const UA=iA.update(z),WA=z.material;WA.visible&&m.push(z,UA,WA,oA,J.z,null)}}else if((z.isMesh||z.isLine||z.isPoints)&&(!z.frustumCulled||X.intersectsObject(z))){const UA=iA.update(z),WA=z.material;if(rA&&(z.boundingSphere!==void 0?(z.boundingSphere===null&&z.computeBoundingSphere(),J.copy(z.boundingSphere.center)):(UA.boundingSphere===null&&UA.computeBoundingSphere(),J.copy(UA.boundingSphere.center)),J.applyMatrix4(z.matrixWorld).applyMatrix4(V)),Array.isArray(WA)){const QA=UA.groups;for(let te=0,bA=QA.length;te<bA;te++){const se=QA[te],Ze=WA[se.materialIndex];Ze&&Ze.visible&&m.push(z,UA,Ze,oA,J.z,se)}}else WA.visible&&m.push(z,UA,WA,oA,J.z,null)}}const BA=z.children;for(let UA=0,WA=BA.length;UA<WA;UA++)ke(BA[UA],$,oA,rA)}function be(z,$,oA,rA){const sA=z.opaque,BA=z.transmissive,UA=z.transparent;d.setupLightsView(oA),j===!0&&cA.setGlobalState(v.clippingPlanes,oA),rA&&vA.viewport(I.copy(rA)),sA.length>0&&Ct(sA,$,oA),BA.length>0&&Ct(BA,$,oA),UA.length>0&&Ct(UA,$,oA),vA.buffers.depth.setTest(!0),vA.buffers.depth.setMask(!0),vA.buffers.color.setMask(!0),vA.setPolygonOffset(!1)}function st(z,$,oA,rA){if((oA.isScene===!0?oA.overrideMaterial:null)!==null)return;d.state.transmissionRenderTarget[rA.id]===void 0&&(d.state.transmissionRenderTarget[rA.id]=new Ve(1,1,{generateMipmaps:!0,type:AA.has("EXT_color_buffer_half_float")||AA.has("EXT_color_buffer_float")?Oe:Ri,minFilter:zi,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1}));const BA=d.state.transmissionRenderTarget[rA.id],UA=rA.viewport||I;BA.setSize(UA.z,UA.w);const WA=v.getRenderTarget();v.setRenderTarget(BA),v.getClearColor(M),T=v.getClearAlpha(),T<1&&v.setClearColor(16777215,.5),v.clear();const QA=v.toneMapping;v.toneMapping=Ln;const te=rA.viewport;if(rA.viewport!==void 0&&(rA.viewport=void 0),d.setupLightsView(rA),j===!0&&cA.setGlobalState(v.clippingPlanes,rA),Ct(z,oA,rA),_A.updateMultisampleRenderTarget(BA),_A.updateRenderTargetMipmap(BA),AA.has("WEBGL_multisampled_render_to_texture")===!1){let bA=!1;for(let se=0,Ze=$.length;se<Ze;se++){const Ye=$[se],xt=Ye.object,qi=Ye.geometry,Ce=Ye.material,Ae=Ye.group;if(Ce.side===ot&&xt.layers.test(rA.layers)){const Pn=Ce.side;Ce.side=dt,Ce.needsUpdate=!0,Yt(xt,oA,rA,qi,Ce,Ae),Ce.side=Pn,Ce.needsUpdate=!0,bA=!0}}bA===!0&&(_A.updateMultisampleRenderTarget(BA),_A.updateRenderTargetMipmap(BA))}v.setRenderTarget(WA),v.setClearColor(M,T),te!==void 0&&(rA.viewport=te),v.toneMapping=QA}function Ct(z,$,oA){const rA=$.isScene===!0?$.overrideMaterial:null;for(let sA=0,BA=z.length;sA<BA;sA++){const UA=z[sA],WA=UA.object,QA=UA.geometry,te=rA===null?UA.material:rA,bA=UA.group;WA.layers.test(oA.layers)&&Yt(WA,$,oA,QA,te,bA)}}function Yt(z,$,oA,rA,sA,BA){z.onBeforeRender(v,$,oA,rA,sA,BA),z.modelViewMatrix.multiplyMatrices(oA.matrixWorldInverse,z.matrixWorld),z.normalMatrix.getNormalMatrix(z.modelViewMatrix),sA.onBeforeRender(v,$,oA,rA,z,BA),sA.transparent===!0&&sA.side===ot&&sA.forceSinglePass===!1?(sA.side=dt,sA.needsUpdate=!0,v.renderBufferDirect(oA,$,rA,sA,z,BA),sA.side=Bt,sA.needsUpdate=!0,v.renderBufferDirect(oA,$,rA,sA,z,BA),sA.side=ot):v.renderBufferDirect(oA,$,rA,sA,z,BA),z.onAfterRender(v,$,oA,rA,sA,BA)}function fi(z,$,oA){$.isScene!==!0&&($=tA);const rA=yA.get(z),sA=d.state.lights,BA=d.state.shadowsArray,UA=sA.state.version,WA=eA.getParameters(z,sA.state,BA,$,oA),QA=eA.getProgramCacheKey(WA);let te=rA.programs;rA.environment=z.isMeshStandardMaterial?$.environment:null,rA.fog=$.fog,rA.envMap=(z.isMeshStandardMaterial?R:gA).get(z.envMap||rA.environment),rA.envMapRotation=rA.environment!==null&&z.envMap===null?$.environmentRotation:z.envMapRotation,te===void 0&&(z.addEventListener("dispose",hA),te=new Map,rA.programs=te);let bA=te.get(QA);if(bA!==void 0){if(rA.currentProgram===bA&&rA.lightsStateVersion===UA)return Oi(z,WA),bA}else WA.uniforms=eA.getUniforms(z),z.onBuild(oA,WA,v),z.onBeforeCompile(WA,v),bA=eA.acquireProgram(WA,QA),te.set(QA,bA),rA.uniforms=WA.uniforms;const se=rA.uniforms;return(!z.isShaderMaterial&&!z.isRawShaderMaterial||z.clipping===!0)&&(se.clippingPlanes=cA.uniform),Oi(z,WA),rA.needsLights=wd(z),rA.lightsStateVersion=UA,rA.needsLights&&(se.ambientLightColor.value=sA.state.ambient,se.lightProbe.value=sA.state.probe,se.directionalLights.value=sA.state.directional,se.directionalLightShadows.value=sA.state.directionalShadow,se.spotLights.value=sA.state.spot,se.spotLightShadows.value=sA.state.spotShadow,se.rectAreaLights.value=sA.state.rectArea,se.ltc_1.value=sA.state.rectAreaLTC1,se.ltc_2.value=sA.state.rectAreaLTC2,se.pointLights.value=sA.state.point,se.pointLightShadows.value=sA.state.pointShadow,se.hemisphereLights.value=sA.state.hemi,se.directionalShadowMap.value=sA.state.directionalShadowMap,se.directionalShadowMatrix.value=sA.state.directionalShadowMatrix,se.spotShadowMap.value=sA.state.spotShadowMap,se.spotLightMatrix.value=sA.state.spotLightMatrix,se.spotLightMap.value=sA.state.spotLightMap,se.pointShadowMap.value=sA.state.pointShadowMap,se.pointShadowMatrix.value=sA.state.pointShadowMatrix),rA.currentProgram=bA,rA.uniformsList=null,bA}function Mn(z){if(z.uniformsList===null){const $=z.currentProgram.getUniforms();z.uniformsList=Lh.seqWithValue($.seq,z.uniforms)}return z.uniformsList}function Oi(z,$){const oA=yA.get(z);oA.outputColorSpace=$.outputColorSpace,oA.batching=$.batching,oA.instancing=$.instancing,oA.instancingColor=$.instancingColor,oA.instancingMorph=$.instancingMorph,oA.skinning=$.skinning,oA.morphTargets=$.morphTargets,oA.morphNormals=$.morphNormals,oA.morphColors=$.morphColors,oA.morphTargetsCount=$.morphTargetsCount,oA.numClippingPlanes=$.numClippingPlanes,oA.numIntersection=$.numClipIntersection,oA.vertexAlphas=$.vertexAlphas,oA.vertexTangents=$.vertexTangents,oA.toneMapping=$.toneMapping}function St(z,$,oA,rA,sA){$.isScene!==!0&&($=tA),_A.resetTextureUnits();const BA=$.fog,UA=rA.isMeshStandardMaterial?$.environment:null,WA=x===null?v.outputColorSpace:x.isXRRenderTarget===!0?x.texture.colorSpace:at,QA=(rA.isMeshStandardMaterial?R:gA).get(rA.envMap||UA),te=rA.vertexColors===!0&&!!oA.attributes.color&&oA.attributes.color.itemSize===4,bA=!!oA.attributes.tangent&&(!!rA.normalMap||rA.anisotropy>0),se=!!oA.morphAttributes.position,Ze=!!oA.morphAttributes.normal,Ye=!!oA.morphAttributes.color;let xt=Ln;rA.toneMapped&&(x===null||x.isXRRenderTarget===!0)&&(xt=v.toneMapping);const qi=oA.morphAttributes.position||oA.morphAttributes.normal||oA.morphAttributes.color,Ce=qi!==void 0?qi.length:0,Ae=yA.get(rA),Pn=d.state.lights;if(j===!0&&(G===!0||z!==b)){const Nt=z===b&&rA.id===S;cA.setState(rA,z,Nt)}let Ee=!1;rA.version===Ae.__version?(Ae.needsLights&&Ae.lightsStateVersion!==Pn.state.version||Ae.outputColorSpace!==WA||sA.isBatchedMesh&&Ae.batching===!1||!sA.isBatchedMesh&&Ae.batching===!0||sA.isInstancedMesh&&Ae.instancing===!1||!sA.isInstancedMesh&&Ae.instancing===!0||sA.isSkinnedMesh&&Ae.skinning===!1||!sA.isSkinnedMesh&&Ae.skinning===!0||sA.isInstancedMesh&&Ae.instancingColor===!0&&sA.instanceColor===null||sA.isInstancedMesh&&Ae.instancingColor===!1&&sA.instanceColor!==null||sA.isInstancedMesh&&Ae.instancingMorph===!0&&sA.morphTexture===null||sA.isInstancedMesh&&Ae.instancingMorph===!1&&sA.morphTexture!==null||Ae.envMap!==QA||rA.fog===!0&&Ae.fog!==BA||Ae.numClippingPlanes!==void 0&&(Ae.numClippingPlanes!==cA.numPlanes||Ae.numIntersection!==cA.numIntersection)||Ae.vertexAlphas!==te||Ae.vertexTangents!==bA||Ae.morphTargets!==se||Ae.morphNormals!==Ze||Ae.morphColors!==Ye||Ae.toneMapping!==xt||Ae.morphTargetsCount!==Ce)&&(Ee=!0):(Ee=!0,Ae.__version=rA.version);let Ni=Ae.currentProgram;Ee===!0&&(Ni=fi(rA,$,sA));let Bc=!1,ar=!1,Al=!1;const Xe=Ni.getUniforms(),Bi=Ae.uniforms;if(vA.useProgram(Ni.program)&&(Bc=!0,ar=!0,Al=!0),rA.id!==S&&(S=rA.id,ar=!0),Bc||b!==z){Xe.setValue(H,"projectionMatrix",z.projectionMatrix),Xe.setValue(H,"viewMatrix",z.matrixWorldInverse);const Nt=Xe.map.cameraPosition;Nt!==void 0&&Nt.setValue(H,J.setFromMatrixPosition(z.matrixWorld)),TA.logarithmicDepthBuffer&&Xe.setValue(H,"logDepthBufFC",2/(Math.log(z.far+1)/Math.LN2)),(rA.isMeshPhongMaterial||rA.isMeshToonMaterial||rA.isMeshLambertMaterial||rA.isMeshBasicMaterial||rA.isMeshStandardMaterial||rA.isShaderMaterial)&&Xe.setValue(H,"isOrthographic",z.isOrthographicCamera===!0),b!==z&&(b=z,ar=!0,Al=!0)}if(sA.isSkinnedMesh){Xe.setOptional(H,sA,"bindMatrix"),Xe.setOptional(H,sA,"bindMatrixInverse");const Nt=sA.skeleton;Nt&&(Nt.boneTexture===null&&Nt.computeBoneTexture(),Xe.setValue(H,"boneTexture",Nt.boneTexture,_A))}sA.isBatchedMesh&&(Xe.setOptional(H,sA,"batchingTexture"),Xe.setValue(H,"batchingTexture",sA._matricesTexture,_A));const Tn=oA.morphAttributes;if((Tn.position!==void 0||Tn.normal!==void 0||Tn.color!==void 0)&&IA.update(sA,oA,Ni),(ar||Ae.receiveShadow!==sA.receiveShadow)&&(Ae.receiveShadow=sA.receiveShadow,Xe.setValue(H,"receiveShadow",sA.receiveShadow)),rA.isMeshGouraudMaterial&&rA.envMap!==null&&(Bi.envMap.value=QA,Bi.flipEnvMap.value=QA.isCubeTexture&&QA.isRenderTargetTexture===!1?-1:1),rA.isMeshStandardMaterial&&rA.envMap===null&&$.environment!==null&&(Bi.envMapIntensity.value=$.environmentIntensity),ar&&(Xe.setValue(H,"toneMappingExposure",v.toneMappingExposure),Ae.needsLights&&or(Bi,Al),BA&&rA.fog===!0&&nA.refreshFogUniforms(Bi,BA),nA.refreshMaterialUniforms(Bi,rA,W,B,d.state.transmissionRenderTarget[z.id]),Lh.upload(H,Mn(Ae),Bi,_A)),rA.isShaderMaterial&&rA.uniformsNeedUpdate===!0&&(Lh.upload(H,Mn(Ae),Bi,_A),rA.uniformsNeedUpdate=!1),rA.isSpriteMaterial&&Xe.setValue(H,"center",sA.center),Xe.setValue(H,"modelViewMatrix",sA.modelViewMatrix),Xe.setValue(H,"normalMatrix",sA.normalMatrix),Xe.setValue(H,"modelMatrix",sA.matrixWorld),rA.isShaderMaterial||rA.isRawShaderMaterial){const Nt=rA.uniformsGroups;for(let Xs=0,zc=Nt.length;Xs<zc;Xs++){const di=Nt[Xs];SA.update(di,Ni),SA.bind(di,Ni)}}return Ni}function or(z,$){z.ambientLightColor.needsUpdate=$,z.lightProbe.needsUpdate=$,z.directionalLights.needsUpdate=$,z.directionalLightShadows.needsUpdate=$,z.pointLights.needsUpdate=$,z.pointLightShadows.needsUpdate=$,z.spotLights.needsUpdate=$,z.spotLightShadows.needsUpdate=$,z.rectAreaLights.needsUpdate=$,z.hemisphereLights.needsUpdate=$}function wd(z){return z.isMeshLambertMaterial||z.isMeshToonMaterial||z.isMeshPhongMaterial||z.isMeshStandardMaterial||z.isShadowMaterial||z.isShaderMaterial&&z.lights===!0}this.getActiveCubeFace=function(){return C},this.getActiveMipmapLevel=function(){return _},this.getRenderTarget=function(){return x},this.setRenderTargetTextures=function(z,$,oA){yA.get(z.texture).__webglTexture=$,yA.get(z.depthTexture).__webglTexture=oA;const rA=yA.get(z);rA.__hasExternalTextures=!0,rA.__autoAllocateDepthBuffer=oA===void 0,rA.__autoAllocateDepthBuffer||AA.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),rA.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(z,$){const oA=yA.get(z);oA.__webglFramebuffer=$,oA.__useDefaultFramebuffer=$===void 0},this.setRenderTarget=function(z,$=0,oA=0){x=z,C=$,_=oA;let rA=!0,sA=null,BA=!1,UA=!1;if(z){const QA=yA.get(z);QA.__useDefaultFramebuffer!==void 0?(vA.bindFramebuffer(H.FRAMEBUFFER,null),rA=!1):QA.__webglFramebuffer===void 0?_A.setupRenderTarget(z):QA.__hasExternalTextures&&_A.rebindTextures(z,yA.get(z.texture).__webglTexture,yA.get(z.depthTexture).__webglTexture);const te=z.texture;(te.isData3DTexture||te.isDataArrayTexture||te.isCompressedArrayTexture)&&(UA=!0);const bA=yA.get(z).__webglFramebuffer;z.isWebGLCubeRenderTarget?(Array.isArray(bA[$])?sA=bA[$][oA]:sA=bA[$],BA=!0):z.samples>0&&_A.useMultisampledRTT(z)===!1?sA=yA.get(z).__webglMultisampledFramebuffer:Array.isArray(bA)?sA=bA[oA]:sA=bA,I.copy(z.viewport),D.copy(z.scissor),P=z.scissorTest}else I.copy(k).multiplyScalar(W).floor(),D.copy(N).multiplyScalar(W).floor(),P=Y;if(vA.bindFramebuffer(H.FRAMEBUFFER,sA)&&rA&&vA.drawBuffers(z,sA),vA.viewport(I),vA.scissor(D),vA.setScissorTest(P),BA){const QA=yA.get(z.texture);H.framebufferTexture2D(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_CUBE_MAP_POSITIVE_X+$,QA.__webglTexture,oA)}else if(UA){const QA=yA.get(z.texture),te=$||0;H.framebufferTextureLayer(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,QA.__webglTexture,oA||0,te)}S=-1},this.readRenderTargetPixels=function(z,$,oA,rA,sA,BA,UA){if(!(z&&z.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let WA=yA.get(z).__webglFramebuffer;if(z.isWebGLCubeRenderTarget&&UA!==void 0&&(WA=WA[UA]),WA){vA.bindFramebuffer(H.FRAMEBUFFER,WA);try{const QA=z.texture,te=QA.format,bA=QA.type;if(!TA.textureFormatReadable(te)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!TA.textureTypeReadable(bA)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}$>=0&&$<=z.width-rA&&oA>=0&&oA<=z.height-sA&&H.readPixels($,oA,rA,sA,CA.convert(te),CA.convert(bA),BA)}finally{const QA=x!==null?yA.get(x).__webglFramebuffer:null;vA.bindFramebuffer(H.FRAMEBUFFER,QA)}}},this.copyFramebufferToTexture=function(z,$,oA=0){const rA=Math.pow(2,-oA),sA=Math.floor($.image.width*rA),BA=Math.floor($.image.height*rA);_A.setTexture2D($,0),H.copyTexSubImage2D(H.TEXTURE_2D,oA,0,0,z.x,z.y,sA,BA),vA.unbindTexture()},this.copyTextureToTexture=function(z,$,oA,rA=0){const sA=$.image.width,BA=$.image.height,UA=CA.convert(oA.format),WA=CA.convert(oA.type);_A.setTexture2D(oA,0),H.pixelStorei(H.UNPACK_FLIP_Y_WEBGL,oA.flipY),H.pixelStorei(H.UNPACK_PREMULTIPLY_ALPHA_WEBGL,oA.premultiplyAlpha),H.pixelStorei(H.UNPACK_ALIGNMENT,oA.unpackAlignment),$.isDataTexture?H.texSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,sA,BA,UA,WA,$.image.data):$.isCompressedTexture?H.compressedTexSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,$.mipmaps[0].width,$.mipmaps[0].height,UA,$.mipmaps[0].data):H.texSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,UA,WA,$.image),rA===0&&oA.generateMipmaps&&H.generateMipmap(H.TEXTURE_2D),vA.unbindTexture()},this.copyTextureToTexture3D=function(z,$,oA,rA,sA=0){const BA=z.max.x-z.min.x,UA=z.max.y-z.min.y,WA=z.max.z-z.min.z,QA=CA.convert(rA.format),te=CA.convert(rA.type);let bA;if(rA.isData3DTexture)_A.setTexture3D(rA,0),bA=H.TEXTURE_3D;else if(rA.isDataArrayTexture||rA.isCompressedArrayTexture)_A.setTexture2DArray(rA,0),bA=H.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}H.pixelStorei(H.UNPACK_FLIP_Y_WEBGL,rA.flipY),H.pixelStorei(H.UNPACK_PREMULTIPLY_ALPHA_WEBGL,rA.premultiplyAlpha),H.pixelStorei(H.UNPACK_ALIGNMENT,rA.unpackAlignment);const se=H.getParameter(H.UNPACK_ROW_LENGTH),Ze=H.getParameter(H.UNPACK_IMAGE_HEIGHT),Ye=H.getParameter(H.UNPACK_SKIP_PIXELS),xt=H.getParameter(H.UNPACK_SKIP_ROWS),qi=H.getParameter(H.UNPACK_SKIP_IMAGES),Ce=oA.isCompressedTexture?oA.mipmaps[sA]:oA.image;H.pixelStorei(H.UNPACK_ROW_LENGTH,Ce.width),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,Ce.height),H.pixelStorei(H.UNPACK_SKIP_PIXELS,z.min.x),H.pixelStorei(H.UNPACK_SKIP_ROWS,z.min.y),H.pixelStorei(H.UNPACK_SKIP_IMAGES,z.min.z),oA.isDataTexture||oA.isData3DTexture?H.texSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,te,Ce.data):rA.isCompressedArrayTexture?H.compressedTexSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,Ce.data):H.texSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,te,Ce),H.pixelStorei(H.UNPACK_ROW_LENGTH,se),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,Ze),H.pixelStorei(H.UNPACK_SKIP_PIXELS,Ye),H.pixelStorei(H.UNPACK_SKIP_ROWS,xt),H.pixelStorei(H.UNPACK_SKIP_IMAGES,qi),sA===0&&rA.generateMipmaps&&H.generateMipmap(bA),vA.unbindTexture()},this.initTexture=function(z){z.isCubeTexture?_A.setTextureCube(z,0):z.isData3DTexture?_A.setTexture3D(z,0):z.isDataArrayTexture||z.isCompressedArrayTexture?_A.setTexture2DArray(z,0):_A.setTexture2D(z,0),vA.unbindTexture()},this.resetState=function(){C=0,_=0,x=null,vA.reset(),DA.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return qn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(A){this._outputColorSpace=A;const e=this.getContext();e.drawingBufferColorSpace=A===Qd?"display-p3":"srgb",e.unpackColorSpace=Se.workingColorSpace===th?"display-p3":"srgb"}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(A){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=A}}class Eo extends Ie{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new on,this.environmentIntensity=1,this.environmentRotation=new on,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,e){return super.copy(A,e),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,this.backgroundRotation.copy(A.backgroundRotation),this.environmentIntensity=A.environmentIntensity,this.environmentRotation.copy(A.environmentRotation),A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const e=super.toJSON(A);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}class kT{constructor(A,e){this.isInterleavedBuffer=!0,this.array=A,this.stride=e,this.count=A!==void 0?A.length/e:0,this.usage=Vd,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=mi()}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return iw("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,e){this.updateRanges.push({start:A,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.array=new A.array.constructor(A.array),this.count=A.count,this.stride=A.stride,this.usage=A.usage,this}copyAt(A,e,t){A*=this.stride,t*=e.stride;for(let i=0,r=this.stride;i<r;i++)this.array[A+i]=e.array[t+i];return this}set(A,e=0){return this.array.set(A,e),this}clone(A){A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=mi()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const e=new this.array.constructor(A.arrayBuffers[this.array.buffer._uuid]),t=new this.constructor(e,this.stride);return t.setUsage(this.usage),t}onUpload(A){return this.onUploadCallback=A,this}toJSON(A){return A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=mi()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const kt=new O;class Dp{constructor(A,e,t,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=A,this.itemSize=e,this.offset=t,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(A){this.data.needsUpdate=A}applyMatrix4(A){for(let e=0,t=this.data.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.applyMatrix4(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}applyNormalMatrix(A){for(let e=0,t=this.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.applyNormalMatrix(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}transformDirection(A){for(let e=0,t=this.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.transformDirection(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}getComponent(A,e){let t=this.array[A*this.data.stride+this.offset+e];return this.normalized&&(t=ji(t,this.array)),t}setComponent(A,e,t){return this.normalized&&(t=Pe(t,this.array)),this.data.array[A*this.data.stride+this.offset+e]=t,this}setX(A,e){return this.normalized&&(e=Pe(e,this.array)),this.data.array[A*this.data.stride+this.offset]=e,this}setY(A,e){return this.normalized&&(e=Pe(e,this.array)),this.data.array[A*this.data.stride+this.offset+1]=e,this}setZ(A,e){return this.normalized&&(e=Pe(e,this.array)),this.data.array[A*this.data.stride+this.offset+2]=e,this}setW(A,e){return this.normalized&&(e=Pe(e,this.array)),this.data.array[A*this.data.stride+this.offset+3]=e,this}getX(A){let e=this.data.array[A*this.data.stride+this.offset];return this.normalized&&(e=ji(e,this.array)),e}getY(A){let e=this.data.array[A*this.data.stride+this.offset+1];return this.normalized&&(e=ji(e,this.array)),e}getZ(A){let e=this.data.array[A*this.data.stride+this.offset+2];return this.normalized&&(e=ji(e,this.array)),e}getW(A){let e=this.data.array[A*this.data.stride+this.offset+3];return this.normalized&&(e=ji(e,this.array)),e}setXY(A,e,t){return A=A*this.data.stride+this.offset,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this}setXYZ(A,e,t,i){return A=A*this.data.stride+this.offset,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array),i=Pe(i,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this.data.array[A+2]=i,this}setXYZW(A,e,t,i,r){return A=A*this.data.stride+this.offset,this.normalized&&(e=Pe(e,this.array),t=Pe(t,this.array),i=Pe(i,this.array),r=Pe(r,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this.data.array[A+2]=i,this.data.array[A+3]=r,this}clone(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)e.push(this.data.array[i+r])}return new ce(new this.array.constructor(e),this.itemSize,this.normalized)}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.clone(A)),new Dp(A.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)e.push(this.data.array[i+r])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.toJSON(A)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}const r1=new O,s1=new ve,o1=new ve,jT=new O,a1=new zA,Oh=new O,Ep=new Ai,l1=new zA,Lp=new os;class KT extends Te{constructor(A,e){super(A,e),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=py,this.bindMatrix=new zA,this.bindMatrixInverse=new zA,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const A=this.geometry;this.boundingBox===null&&(this.boundingBox=new ye),this.boundingBox.makeEmpty();const e=A.getAttribute("position");for(let t=0;t<e.count;t++)this.getVertexPosition(t,Oh),this.boundingBox.expandByPoint(Oh)}computeBoundingSphere(){const A=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new Ai),this.boundingSphere.makeEmpty();const e=A.getAttribute("position");for(let t=0;t<e.count;t++)this.getVertexPosition(t,Oh),this.boundingSphere.expandByPoint(Oh)}copy(A,e){return super.copy(A,e),this.bindMode=A.bindMode,this.bindMatrix.copy(A.bindMatrix),this.bindMatrixInverse.copy(A.bindMatrixInverse),this.skeleton=A.skeleton,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}raycast(A,e){const t=this.material,i=this.matrixWorld;t!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Ep.copy(this.boundingSphere),Ep.applyMatrix4(i),A.ray.intersectsSphere(Ep)!==!1&&(l1.copy(i).invert(),Lp.copy(A.ray).applyMatrix4(l1),!(this.boundingBox!==null&&Lp.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(A,e,Lp)))}getVertexPosition(A,e){return super.getVertexPosition(A,e),this.applyBoneTransform(A,e),e}bind(A,e){this.skeleton=A,e===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const A=new ve,e=this.geometry.attributes.skinWeight;for(let t=0,i=e.count;t<i;t++){A.fromBufferAttribute(e,t);const r=1/A.manhattanLength();r!==1/0?A.multiplyScalar(r):A.set(1,0,0,0),e.setXYZW(t,A.x,A.y,A.z,A.w)}}updateMatrixWorld(A){super.updateMatrixWorld(A),this.bindMode===py?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===D3?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(A,e){const t=this.skeleton,i=this.geometry;s1.fromBufferAttribute(i.attributes.skinIndex,A),o1.fromBufferAttribute(i.attributes.skinWeight,A),r1.copy(e).applyMatrix4(this.bindMatrix),e.set(0,0,0);for(let r=0;r<4;r++){const s=o1.getComponent(r);if(s!==0){const o=s1.getComponent(r);a1.multiplyMatrices(t.bones[o].matrixWorld,t.boneInverses[o]),e.addScaledVector(jT.copy(r1).applyMatrix4(a1),s)}}return e.applyMatrix4(this.bindMatrixInverse)}}class c1 extends Ie{constructor(){super(),this.isBone=!0,this.type="Bone"}}class jt extends lt{constructor(A=null,e=1,t=1,i,r,s,o,a,l=fe,u=fe,c,h){super(null,s,o,a,l,u,i,r,c,h),this.isDataTexture=!0,this.image={data:A,width:e,height:t},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const h1=new zA,FT=new zA;class Op{constructor(A=[],e=[]){this.uuid=mi(),this.bones=A.slice(0),this.boneInverses=e,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const A=this.bones,e=this.boneInverses;if(this.boneMatrices=new Float32Array(A.length*16),e.length===0)this.calculateInverses();else if(A.length!==e.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let t=0,i=this.bones.length;t<i;t++)this.boneInverses.push(new zA)}}calculateInverses(){this.boneInverses.length=0;for(let A=0,e=this.bones.length;A<e;A++){const t=new zA;this.bones[A]&&t.copy(this.bones[A].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let A=0,e=this.bones.length;A<e;A++){const t=this.bones[A];t&&t.matrixWorld.copy(this.boneInverses[A]).invert()}for(let A=0,e=this.bones.length;A<e;A++){const t=this.bones[A];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){const A=this.bones,e=this.boneInverses,t=this.boneMatrices,i=this.boneTexture;for(let r=0,s=A.length;r<s;r++){const o=A[r]?A[r].matrixWorld:FT;h1.multiplyMatrices(o,e[r]),h1.toArray(t,r*16)}i!==null&&(i.needsUpdate=!0)}clone(){return new Op(this.bones,this.boneInverses)}computeBoneTexture(){let A=Math.sqrt(this.bones.length*4);A=Math.ceil(A/4)*4,A=Math.max(A,4);const e=new Float32Array(A*A*4);e.set(this.boneMatrices);const t=new jt(e,A,A,_e,Me);return t.needsUpdate=!0,this.boneMatrices=e,this.boneTexture=t,this}getBoneByName(A){for(let e=0,t=this.bones.length;e<t;e++){const i=this.bones[e];if(i.name===A)return i}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(A,e){this.uuid=A.uuid;for(let t=0,i=A.bones.length;t<i;t++){const r=A.bones[t];let s=e[r];s===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),s=new c1),this.bones.push(s),this.boneInverses.push(new zA().fromArray(A.boneInverses[t]))}return this.init(),this}toJSON(){const A={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};A.uuid=this.uuid;const e=this.bones,t=this.boneInverses;for(let i=0,r=e.length;i<r;i++){const s=e[i];A.bones.push(s.uuid);const o=t[i];A.boneInverses.push(o.toArray())}return A}}class qh extends ce{constructor(A,e,t,i=1){super(A,e,t),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(A){return super.copy(A),this.meshPerAttribute=A.meshPerAttribute,this}toJSON(){const A=super.toJSON();return A.meshPerAttribute=this.meshPerAttribute,A.isInstancedBufferAttribute=!0,A}}const Lo=new zA,u1=new zA,Nh=[],f1=new ye,GT=new zA,Cl=new Te,xl=new Ai;class HT extends Te{constructor(A,e,t){super(A,e),this.isInstancedMesh=!0,this.instanceMatrix=new qh(new Float32Array(t*16),16),this.instanceColor=null,this.morphTexture=null,this.count=t,this.boundingBox=null,this.boundingSphere=null;for(let i=0;i<t;i++)this.setMatrixAt(i,GT)}computeBoundingBox(){const A=this.geometry,e=this.count;this.boundingBox===null&&(this.boundingBox=new ye),A.boundingBox===null&&A.computeBoundingBox(),this.boundingBox.makeEmpty();for(let t=0;t<e;t++)this.getMatrixAt(t,Lo),f1.copy(A.boundingBox).applyMatrix4(Lo),this.boundingBox.union(f1)}computeBoundingSphere(){const A=this.geometry,e=this.count;this.boundingSphere===null&&(this.boundingSphere=new Ai),A.boundingSphere===null&&A.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let t=0;t<e;t++)this.getMatrixAt(t,Lo),xl.copy(A.boundingSphere).applyMatrix4(Lo),this.boundingSphere.union(xl)}copy(A,e){return super.copy(A,e),this.instanceMatrix.copy(A.instanceMatrix),A.morphTexture!==null&&(this.morphTexture=A.morphTexture.clone()),A.instanceColor!==null&&(this.instanceColor=A.instanceColor.clone()),this.count=A.count,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}getColorAt(A,e){e.fromArray(this.instanceColor.array,A*3)}getMatrixAt(A,e){e.fromArray(this.instanceMatrix.array,A*16)}getMorphAt(A,e){const t=e.morphTargetInfluences,i=this.morphTexture.source.data.data,r=t.length+1,s=A*r+1;for(let o=0;o<t.length;o++)t[o]=i[s+o]}raycast(A,e){const t=this.matrixWorld,i=this.count;if(Cl.geometry=this.geometry,Cl.material=this.material,Cl.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),xl.copy(this.boundingSphere),xl.applyMatrix4(t),A.ray.intersectsSphere(xl)!==!1))for(let r=0;r<i;r++){this.getMatrixAt(r,Lo),u1.multiplyMatrices(t,Lo),Cl.matrixWorld=u1,Cl.raycast(A,Nh);for(let s=0,o=Nh.length;s<o;s++){const a=Nh[s];a.instanceId=r,a.object=this,e.push(a)}Nh.length=0}}setColorAt(A,e){this.instanceColor===null&&(this.instanceColor=new qh(new Float32Array(this.instanceMatrix.count*3),3)),e.toArray(this.instanceColor.array,A*3)}setMatrixAt(A,e){e.toArray(this.instanceMatrix.array,A*16)}setMorphAt(A,e){const t=e.morphTargetInfluences,i=t.length+1;this.morphTexture===null&&(this.morphTexture=new jt(new Float32Array(i*this.count),i,this.count,no,Me));const r=this.morphTexture.source.data.data;let s=0;for(let l=0;l<t.length;l++)s+=t[l];const o=this.geometry.morphTargetsRelative?1:1-s,a=i*A;r[a]=o,r.set(t,a+1)}updateMorphTargets(){}dispose(){return this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null),this}}class Bh extends an{constructor(A){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new KA(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.linewidth=A.linewidth,this.linecap=A.linecap,this.linejoin=A.linejoin,this.fog=A.fog,this}}const zh=new O,Rh=new O,d1=new zA,Il=new os,kh=new Ai,qp=new O,p1=new O;let Np=class extends Ie{constructor(A=new qe,e=new Bh){super(),this.isLine=!0,this.type="Line",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}computeLineDistances(){const A=this.geometry;if(A.index===null){const e=A.attributes.position,t=[0];for(let i=1,r=e.count;i<r;i++)zh.fromBufferAttribute(e,i-1),Rh.fromBufferAttribute(e,i),t[i]=t[i-1],t[i]+=zh.distanceTo(Rh);A.setAttribute("lineDistance",new Dt(t,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(A,e){const t=this.geometry,i=this.matrixWorld,r=A.params.Line.threshold,s=t.drawRange;if(t.boundingSphere===null&&t.computeBoundingSphere(),kh.copy(t.boundingSphere),kh.applyMatrix4(i),kh.radius+=r,A.ray.intersectsSphere(kh)===!1)return;d1.copy(i).invert(),Il.copy(A.ray).applyMatrix4(d1);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=this.isLineSegments?2:1,u=t.index,h=t.attributes.position;if(u!==null){const f=Math.max(0,s.start),p=Math.min(u.count,s.start+s.count);for(let m=f,d=p-1;m<d;m+=l){const g=u.getX(m),y=u.getX(m+1),v=jh(this,A,Il,a,g,y);v&&e.push(v)}if(this.isLineLoop){const m=u.getX(p-1),d=u.getX(f),g=jh(this,A,Il,a,m,d);g&&e.push(g)}}else{const f=Math.max(0,s.start),p=Math.min(h.count,s.start+s.count);for(let m=f,d=p-1;m<d;m+=l){const g=jh(this,A,Il,a,m,m+1);g&&e.push(g)}if(this.isLineLoop){const m=jh(this,A,Il,a,p-1,f);m&&e.push(m)}}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}};function jh(n,A,e,t,i,r){const s=n.geometry.attributes.position;if(zh.fromBufferAttribute(s,i),Rh.fromBufferAttribute(s,r),e.distanceSqToSegment(zh,Rh,qp,p1)>t)return;qp.applyMatrix4(n.matrixWorld);const a=A.ray.origin.distanceTo(qp);if(!(a<A.near||a>A.far))return{distance:a,point:p1.clone().applyMatrix4(n.matrixWorld),index:i,face:null,faceIndex:null,object:n}}const g1=new O,m1=new O;class bl extends Np{constructor(A,e){super(A,e),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const A=this.geometry;if(A.index===null){const e=A.attributes.position,t=[];for(let i=0,r=e.count;i<r;i+=2)g1.fromBufferAttribute(e,i),m1.fromBufferAttribute(e,i+1),t[i]=i===0?0:t[i-1],t[i+1]=t[i]+g1.distanceTo(m1);A.setAttribute("lineDistance",new Dt(t,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class YT extends Np{constructor(A,e){super(A,e),this.isLineLoop=!0,this.type="LineLoop"}}class v1 extends an{constructor(A){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new KA(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.alphaMap=A.alphaMap,this.size=A.size,this.sizeAttenuation=A.sizeAttenuation,this.fog=A.fog,this}}const y1=new zA,Bp=new os,Kh=new Ai,Fh=new O;class UT extends Ie{constructor(A=new qe,e=new v1){super(),this.isPoints=!0,this.type="Points",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}raycast(A,e){const t=this.geometry,i=this.matrixWorld,r=A.params.Points.threshold,s=t.drawRange;if(t.boundingSphere===null&&t.computeBoundingSphere(),Kh.copy(t.boundingSphere),Kh.applyMatrix4(i),Kh.radius+=r,A.ray.intersectsSphere(Kh)===!1)return;y1.copy(i).invert(),Bp.copy(A.ray).applyMatrix4(y1);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=t.index,c=t.attributes.position;if(l!==null){const h=Math.max(0,s.start),f=Math.min(l.count,s.start+s.count);for(let p=h,m=f;p<m;p++){const d=l.getX(p);Fh.fromBufferAttribute(c,d),w1(Fh,d,a,i,A,e,this)}}else{const h=Math.max(0,s.start),f=Math.min(c.count,s.start+s.count);for(let p=h,m=f;p<m;p++)Fh.fromBufferAttribute(c,p),w1(Fh,p,a,i,A,e,this)}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function w1(n,A,e,t,i,r,s){const o=Bp.distanceSqToPoint(n);if(o<e){const a=new O;Bp.closestPointToPoint(n,a),a.applyMatrix4(t);const l=i.ray.origin.distanceTo(a);if(l<i.near||l>i.far)return;r.push({distance:l,distanceToRay:Math.sqrt(o),point:a,index:A,face:null,object:s})}}class zp extends lt{constructor(A,e,t,i,r,s,o,a,l,u,c,h){super(null,s,o,a,l,u,i,r,c,h),this.isCompressedTexture=!0,this.image={width:e,height:t},this.mipmaps=A,this.flipY=!1,this.generateMipmaps=!1}}class WT extends lt{constructor(A,e,t,i,r,s,o,a,l){super(A,e,t,i,r,s,o,a,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class cn{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(A,e){const t=this.getUtoTmapping(A);return this.getPoint(t,e)}getPoints(A=5){const e=[];for(let t=0;t<=A;t++)e.push(this.getPoint(t/A));return e}getSpacedPoints(A=5){const e=[];for(let t=0;t<=A;t++)e.push(this.getPointAt(t/A));return e}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(A=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===A+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const e=[];let t,i=this.getPoint(0),r=0;e.push(0);for(let s=1;s<=A;s++)t=this.getPoint(s/A),r+=t.distanceTo(i),e.push(r),i=t;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(A,e){const t=this.getLengths();let i=0;const r=t.length;let s;e?s=e:s=A*t[r-1];let o=0,a=r-1,l;for(;o<=a;)if(i=Math.floor(o+(a-o)/2),l=t[i]-s,l<0)o=i+1;else if(l>0)a=i-1;else{a=i;break}if(i=a,t[i]===s)return i/(r-1);const u=t[i],h=t[i+1]-u,f=(s-u)/h;return(i+f)/(r-1)}getTangent(A,e){let i=A-1e-4,r=A+1e-4;i<0&&(i=0),r>1&&(r=1);const s=this.getPoint(i),o=this.getPoint(r),a=e||(s.isVector2?new uA:new O);return a.copy(o).sub(s).normalize(),a}getTangentAt(A,e){const t=this.getUtoTmapping(A);return this.getTangent(t,e)}computeFrenetFrames(A,e){const t=new O,i=[],r=[],s=[],o=new O,a=new zA;for(let f=0;f<=A;f++){const p=f/A;i[f]=this.getTangentAt(p,new O)}r[0]=new O,s[0]=new O;let l=Number.MAX_VALUE;const u=Math.abs(i[0].x),c=Math.abs(i[0].y),h=Math.abs(i[0].z);u<=l&&(l=u,t.set(1,0,0)),c<=l&&(l=c,t.set(0,1,0)),h<=l&&t.set(0,0,1),o.crossVectors(i[0],t).normalize(),r[0].crossVectors(i[0],o),s[0].crossVectors(i[0],r[0]);for(let f=1;f<=A;f++){if(r[f]=r[f-1].clone(),s[f]=s[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON){o.normalize();const p=Math.acos(Qe(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(a.makeRotationAxis(o,p))}s[f].crossVectors(i[f],r[f])}if(e===!0){let f=Math.acos(Qe(r[0].dot(r[A]),-1,1));f/=A,i[0].dot(o.crossVectors(r[0],r[A]))>0&&(f=-f);for(let p=1;p<=A;p++)r[p].applyMatrix4(a.makeRotationAxis(i[p],f*p)),s[p].crossVectors(i[p],r[p])}return{tangents:i,normals:r,binormals:s}}clone(){return new this.constructor().copy(this)}copy(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}toJSON(){const A={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return A.arcLengthDivisions=this.arcLengthDivisions,A.type=this.type,A}fromJSON(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}}class Rp extends cn{constructor(A=0,e=0,t=1,i=1,r=0,s=Math.PI*2,o=!1,a=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=A,this.aY=e,this.xRadius=t,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=o,this.aRotation=a}getPoint(A,e=new uA){const t=e,i=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(s?r=0:r=i),this.aClockwise===!0&&!s&&(r===i?r=-i:r=r-i);const o=this.aStartAngle+A*r;let a=this.aX+this.xRadius*Math.cos(o),l=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){const u=Math.cos(this.aRotation),c=Math.sin(this.aRotation),h=a-this.aX,f=l-this.aY;a=h*u-f*c+this.aX,l=h*c+f*u+this.aY}return t.set(a,l)}copy(A){return super.copy(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}toJSON(){const A=super.toJSON();return A.aX=this.aX,A.aY=this.aY,A.xRadius=this.xRadius,A.yRadius=this.yRadius,A.aStartAngle=this.aStartAngle,A.aEndAngle=this.aEndAngle,A.aClockwise=this.aClockwise,A.aRotation=this.aRotation,A}fromJSON(A){return super.fromJSON(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}}class JT extends Rp{constructor(A,e,t,i,r,s){super(A,e,t,t,i,r,s),this.isArcCurve=!0,this.type="ArcCurve"}}function kp(){let n=0,A=0,e=0,t=0;function i(r,s,o,a){n=r,A=o,e=-3*r+3*s-2*o-a,t=2*r-2*s+o+a}return{initCatmullRom:function(r,s,o,a,l){i(s,o,l*(o-r),l*(a-s))},initNonuniformCatmullRom:function(r,s,o,a,l,u,c){let h=(s-r)/l-(o-r)/(l+u)+(o-s)/u,f=(o-s)/u-(a-s)/(u+c)+(a-o)/c;h*=u,f*=u,i(s,o,h,f)},calc:function(r){const s=r*r,o=s*r;return n+A*r+e*s+t*o}}}const Gh=new O,jp=new kp,Kp=new kp,Fp=new kp;class ZT extends cn{constructor(A=[],e=!1,t="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=A,this.closed=e,this.curveType=t,this.tension=i}getPoint(A,e=new O){const t=e,i=this.points,r=i.length,s=(r-(this.closed?0:1))*A;let o=Math.floor(s),a=s-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:a===0&&o===r-1&&(o=r-2,a=1);let l,u;this.closed||o>0?l=i[(o-1)%r]:(Gh.subVectors(i[0],i[1]).add(i[0]),l=Gh);const c=i[o%r],h=i[(o+1)%r];if(this.closed||o+2<r?u=i[(o+2)%r]:(Gh.subVectors(i[r-1],i[r-2]).add(i[r-1]),u=Gh),this.curveType==="centripetal"||this.curveType==="chordal"){const f=this.curveType==="chordal"?.5:.25;let p=Math.pow(l.distanceToSquared(c),f),m=Math.pow(c.distanceToSquared(h),f),d=Math.pow(h.distanceToSquared(u),f);m<1e-4&&(m=1),p<1e-4&&(p=m),d<1e-4&&(d=m),jp.initNonuniformCatmullRom(l.x,c.x,h.x,u.x,p,m,d),Kp.initNonuniformCatmullRom(l.y,c.y,h.y,u.y,p,m,d),Fp.initNonuniformCatmullRom(l.z,c.z,h.z,u.z,p,m,d)}else this.curveType==="catmullrom"&&(jp.initCatmullRom(l.x,c.x,h.x,u.x,this.tension),Kp.initCatmullRom(l.y,c.y,h.y,u.y,this.tension),Fp.initCatmullRom(l.z,c.z,h.z,u.z,this.tension));return t.set(jp.calc(a),Kp.calc(a),Fp.calc(a)),t}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(i.clone())}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}toJSON(){const A=super.toJSON();A.points=[];for(let e=0,t=this.points.length;e<t;e++){const i=this.points[e];A.points.push(i.toArray())}return A.closed=this.closed,A.curveType=this.curveType,A.tension=this.tension,A}fromJSON(A){super.fromJSON(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(new O().fromArray(i))}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}}function C1(n,A,e,t,i){const r=(t-A)*.5,s=(i-e)*.5,o=n*n,a=n*o;return(2*e-2*t+r+s)*a+(-3*e+3*t-2*r-s)*o+r*n+e}function XT(n,A){const e=1-n;return e*e*A}function QT(n,A){return 2*(1-n)*n*A}function VT(n,A){return n*n*A}function _l(n,A,e,t){return XT(n,A)+QT(n,e)+VT(n,t)}function $T(n,A){const e=1-n;return e*e*e*A}function AD(n,A){const e=1-n;return 3*e*e*n*A}function eD(n,A){return 3*(1-n)*n*n*A}function tD(n,A){return n*n*n*A}function Sl(n,A,e,t,i){return $T(n,A)+AD(n,e)+eD(n,t)+tD(n,i)}class x1 extends cn{constructor(A=new uA,e=new uA,t=new uA,i=new uA){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=A,this.v1=e,this.v2=t,this.v3=i}getPoint(A,e=new uA){const t=e,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return t.set(Sl(A,i.x,r.x,s.x,o.x),Sl(A,i.y,r.y,s.y,o.y)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class iD extends cn{constructor(A=new O,e=new O,t=new O,i=new O){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=A,this.v1=e,this.v2=t,this.v3=i}getPoint(A,e=new O){const t=e,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return t.set(Sl(A,i.x,r.x,s.x,o.x),Sl(A,i.y,r.y,s.y,o.y),Sl(A,i.z,r.z,s.z,o.z)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class I1 extends cn{constructor(A=new uA,e=new uA){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=A,this.v2=e}getPoint(A,e=new uA){const t=e;return A===1?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(A).add(this.v1)),t}getPointAt(A,e){return this.getPoint(A,e)}getTangent(A,e=new uA){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,e){return this.getTangent(A,e)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class nD extends cn{constructor(A=new O,e=new O){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=A,this.v2=e}getPoint(A,e=new O){const t=e;return A===1?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(A).add(this.v1)),t}getPointAt(A,e){return this.getPoint(A,e)}getTangent(A,e=new O){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,e){return this.getTangent(A,e)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class b1 extends cn{constructor(A=new uA,e=new uA,t=new uA){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=A,this.v1=e,this.v2=t}getPoint(A,e=new uA){const t=e,i=this.v0,r=this.v1,s=this.v2;return t.set(_l(A,i.x,r.x,s.x),_l(A,i.y,r.y,s.y)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class rD extends cn{constructor(A=new O,e=new O,t=new O){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=A,this.v1=e,this.v2=t}getPoint(A,e=new O){const t=e,i=this.v0,r=this.v1,s=this.v2;return t.set(_l(A,i.x,r.x,s.x),_l(A,i.y,r.y,s.y),_l(A,i.z,r.z,s.z)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class _1 extends cn{constructor(A=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=A}getPoint(A,e=new uA){const t=e,i=this.points,r=(i.length-1)*A,s=Math.floor(r),o=r-s,a=i[s===0?s:s-1],l=i[s],u=i[s>i.length-2?i.length-1:s+1],c=i[s>i.length-3?i.length-1:s+2];return t.set(C1(o,a.x,l.x,u.x,c.x),C1(o,a.y,l.y,u.y,c.y)),t}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(i.clone())}return this}toJSON(){const A=super.toJSON();A.points=[];for(let e=0,t=this.points.length;e<t;e++){const i=this.points[e];A.points.push(i.toArray())}return A}fromJSON(A){super.fromJSON(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(new uA().fromArray(i))}return this}}var S1=Object.freeze({__proto__:null,ArcCurve:JT,CatmullRomCurve3:ZT,CubicBezierCurve:x1,CubicBezierCurve3:iD,EllipseCurve:Rp,LineCurve:I1,LineCurve3:nD,QuadraticBezierCurve:b1,QuadraticBezierCurve3:rD,SplineCurve:_1});class sD extends cn{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(A){this.curves.push(A)}closePath(){const A=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);if(!A.equals(e)){const t=A.isVector2===!0?"LineCurve":"LineCurve3";this.curves.push(new S1[t](e,A))}return this}getPoint(A,e){const t=A*this.getLength(),i=this.getCurveLengths();let r=0;for(;r<i.length;){if(i[r]>=t){const s=i[r]-t,o=this.curves[r],a=o.getLength(),l=a===0?0:1-s/a;return o.getPointAt(l,e)}r++}return null}getLength(){const A=this.getCurveLengths();return A[A.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const A=[];let e=0;for(let t=0,i=this.curves.length;t<i;t++)e+=this.curves[t].getLength(),A.push(e);return this.cacheLengths=A,A}getSpacedPoints(A=40){const e=[];for(let t=0;t<=A;t++)e.push(this.getPoint(t/A));return this.autoClose&&e.push(e[0]),e}getPoints(A=12){const e=[];let t;for(let i=0,r=this.curves;i<r.length;i++){const s=r[i],o=s.isEllipseCurve?A*2:s.isLineCurve||s.isLineCurve3?1:s.isSplineCurve?A*s.points.length:A,a=s.getPoints(o);for(let l=0;l<a.length;l++){const u=a[l];t&&t.equals(u)||(e.push(u),t=u)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(A){super.copy(A),this.curves=[];for(let e=0,t=A.curves.length;e<t;e++){const i=A.curves[e];this.curves.push(i.clone())}return this.autoClose=A.autoClose,this}toJSON(){const A=super.toJSON();A.autoClose=this.autoClose,A.curves=[];for(let e=0,t=this.curves.length;e<t;e++){const i=this.curves[e];A.curves.push(i.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.autoClose=A.autoClose,this.curves=[];for(let e=0,t=A.curves.length;e<t;e++){const i=A.curves[e];this.curves.push(new S1[i.type]().fromJSON(i))}return this}}class Gp extends sD{constructor(A){super(),this.type="Path",this.currentPoint=new uA,A&&this.setFromPoints(A)}setFromPoints(A){this.moveTo(A[0].x,A[0].y);for(let e=1,t=A.length;e<t;e++)this.lineTo(A[e].x,A[e].y);return this}moveTo(A,e){return this.currentPoint.set(A,e),this}lineTo(A,e){const t=new I1(this.currentPoint.clone(),new uA(A,e));return this.curves.push(t),this.currentPoint.set(A,e),this}quadraticCurveTo(A,e,t,i){const r=new b1(this.currentPoint.clone(),new uA(A,e),new uA(t,i));return this.curves.push(r),this.currentPoint.set(t,i),this}bezierCurveTo(A,e,t,i,r,s){const o=new x1(this.currentPoint.clone(),new uA(A,e),new uA(t,i),new uA(r,s));return this.curves.push(o),this.currentPoint.set(r,s),this}splineThru(A){const e=[this.currentPoint.clone()].concat(A),t=new _1(e);return this.curves.push(t),this.currentPoint.copy(A[A.length-1]),this}arc(A,e,t,i,r,s){const o=this.currentPoint.x,a=this.currentPoint.y;return this.absarc(A+o,e+a,t,i,r,s),this}absarc(A,e,t,i,r,s){return this.absellipse(A,e,t,t,i,r,s),this}ellipse(A,e,t,i,r,s,o,a){const l=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(A+l,e+u,t,i,r,s,o,a),this}absellipse(A,e,t,i,r,s,o,a){const l=new Rp(A,e,t,i,r,s,o,a);if(this.curves.length>0){const c=l.getPoint(0);c.equals(this.currentPoint)||this.lineTo(c.x,c.y)}this.curves.push(l);const u=l.getPoint(1);return this.currentPoint.copy(u),this}copy(A){return super.copy(A),this.currentPoint.copy(A.currentPoint),this}toJSON(){const A=super.toJSON();return A.currentPoint=this.currentPoint.toArray(),A}fromJSON(A){return super.fromJSON(A),this.currentPoint.fromArray(A.currentPoint),this}}const Hh=new O,Yh=new O,Hp=new O,Uh=new Ue;class M1 extends qe{constructor(A=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:A,thresholdAngle:e},A!==null){const i=Math.pow(10,4),r=Math.cos(oo*e),s=A.getIndex(),o=A.getAttribute("position"),a=s?s.count:o.count,l=[0,0,0],u=["a","b","c"],c=new Array(3),h={},f=[];for(let p=0;p<a;p+=3){s?(l[0]=s.getX(p),l[1]=s.getX(p+1),l[2]=s.getX(p+2)):(l[0]=p,l[1]=p+1,l[2]=p+2);const{a:m,b:d,c:g}=Uh;if(m.fromBufferAttribute(o,l[0]),d.fromBufferAttribute(o,l[1]),g.fromBufferAttribute(o,l[2]),Uh.getNormal(Hp),c[0]=`${Math.round(m.x*i)},${Math.round(m.y*i)},${Math.round(m.z*i)}`,c[1]=`${Math.round(d.x*i)},${Math.round(d.y*i)},${Math.round(d.z*i)}`,c[2]=`${Math.round(g.x*i)},${Math.round(g.y*i)},${Math.round(g.z*i)}`,!(c[0]===c[1]||c[1]===c[2]||c[2]===c[0]))for(let y=0;y<3;y++){const v=(y+1)%3,w=c[y],C=c[v],_=Uh[u[y]],x=Uh[u[v]],S=`${w}_${C}`,b=`${C}_${w}`;b in h&&h[b]?(Hp.dot(h[b].normal)<=r&&(f.push(_.x,_.y,_.z),f.push(x.x,x.y,x.z)),h[b]=null):S in h||(h[S]={index0:l[y],index1:l[v],normal:Hp.clone()})}}for(const p in h)if(h[p]){const{index0:m,index1:d}=h[p];Hh.fromBufferAttribute(o,m),Yh.fromBufferAttribute(o,d),f.push(Hh.x,Hh.y,Hh.z),f.push(Yh.x,Yh.y,Yh.z)}this.setAttribute("position",new Dt(f,3))}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}}class Yp extends Gp{constructor(A){super(A),this.uuid=mi(),this.type="Shape",this.holes=[]}getPointsHoles(A){const e=[];for(let t=0,i=this.holes.length;t<i;t++)e[t]=this.holes[t].getPoints(A);return e}extractPoints(A){return{shape:this.getPoints(A),holes:this.getPointsHoles(A)}}copy(A){super.copy(A),this.holes=[];for(let e=0,t=A.holes.length;e<t;e++){const i=A.holes[e];this.holes.push(i.clone())}return this}toJSON(){const A=super.toJSON();A.uuid=this.uuid,A.holes=[];for(let e=0,t=this.holes.length;e<t;e++){const i=this.holes[e];A.holes.push(i.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.uuid=A.uuid,this.holes=[];for(let e=0,t=A.holes.length;e<t;e++){const i=A.holes[e];this.holes.push(new Gp().fromJSON(i))}return this}}const oD={triangulate:function(n,A,e=2){const t=A&&A.length,i=t?A[0]*e:n.length;let r=P1(n,0,i,e,!0);const s=[];if(!r||r.next===r.prev)return s;let o,a,l,u,c,h,f;if(t&&(r=uD(n,A,r,e)),n.length>80*e){o=l=n[0],a=u=n[1];for(let p=e;p<i;p+=e)c=n[p],h=n[p+1],c<o&&(o=c),h<a&&(a=h),c>l&&(l=c),h>u&&(u=h);f=Math.max(l-o,u-a),f=f!==0?32767/f:0}return Ml(r,s,e,o,a,f,0),s}};function P1(n,A,e,t,i){let r,s;if(i===ID(n,A,e,t)>0)for(r=A;r<e;r+=t)s=E1(r,n[r],n[r+1],s);else for(r=e-t;r>=A;r-=t)s=E1(r,n[r],n[r+1],s);return s&&Wh(s,s.next)&&(Tl(s),s=s.next),s}function ps(n,A){if(!n)return n;A||(A=n);let e=n,t;do if(t=!1,!e.steiner&&(Wh(e,e.next)||Ke(e.prev,e,e.next)===0)){if(Tl(e),e=A=e.prev,e===e.next)break;t=!0}else e=e.next;while(t||e!==A);return A}function Ml(n,A,e,t,i,r,s){if(!n)return;!s&&r&&mD(n,t,i,r);let o=n,a,l;for(;n.prev!==n.next;){if(a=n.prev,l=n.next,r?lD(n,t,i,r):aD(n)){A.push(a.i/e|0),A.push(n.i/e|0),A.push(l.i/e|0),Tl(n),n=l.next,o=l.next;continue}if(n=l,n===o){s?s===1?(n=cD(ps(n),A,e),Ml(n,A,e,t,i,r,2)):s===2&&hD(n,A,e,t,i,r):Ml(ps(n),A,e,t,i,r,1);break}}}function aD(n){const A=n.prev,e=n,t=n.next;if(Ke(A,e,t)>=0)return!1;const i=A.x,r=e.x,s=t.x,o=A.y,a=e.y,l=t.y,u=i<r?i<s?i:s:r<s?r:s,c=o<a?o<l?o:l:a<l?a:l,h=i>r?i>s?i:s:r>s?r:s,f=o>a?o>l?o:l:a>l?a:l;let p=t.next;for(;p!==A;){if(p.x>=u&&p.x<=h&&p.y>=c&&p.y<=f&&Oo(i,o,r,a,s,l,p.x,p.y)&&Ke(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function lD(n,A,e,t){const i=n.prev,r=n,s=n.next;if(Ke(i,r,s)>=0)return!1;const o=i.x,a=r.x,l=s.x,u=i.y,c=r.y,h=s.y,f=o<a?o<l?o:l:a<l?a:l,p=u<c?u<h?u:h:c<h?c:h,m=o>a?o>l?o:l:a>l?a:l,d=u>c?u>h?u:h:c>h?c:h,g=Up(f,p,A,e,t),y=Up(m,d,A,e,t);let v=n.prevZ,w=n.nextZ;for(;v&&v.z>=g&&w&&w.z<=y;){if(v.x>=f&&v.x<=m&&v.y>=p&&v.y<=d&&v!==i&&v!==s&&Oo(o,u,a,c,l,h,v.x,v.y)&&Ke(v.prev,v,v.next)>=0||(v=v.prevZ,w.x>=f&&w.x<=m&&w.y>=p&&w.y<=d&&w!==i&&w!==s&&Oo(o,u,a,c,l,h,w.x,w.y)&&Ke(w.prev,w,w.next)>=0))return!1;w=w.nextZ}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=m&&v.y>=p&&v.y<=d&&v!==i&&v!==s&&Oo(o,u,a,c,l,h,v.x,v.y)&&Ke(v.prev,v,v.next)>=0)return!1;v=v.prevZ}for(;w&&w.z<=y;){if(w.x>=f&&w.x<=m&&w.y>=p&&w.y<=d&&w!==i&&w!==s&&Oo(o,u,a,c,l,h,w.x,w.y)&&Ke(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function cD(n,A,e){let t=n;do{const i=t.prev,r=t.next.next;!Wh(i,r)&&T1(i,t,t.next,r)&&Pl(i,r)&&Pl(r,i)&&(A.push(i.i/e|0),A.push(t.i/e|0),A.push(r.i/e|0),Tl(t),Tl(t.next),t=n=r),t=t.next}while(t!==n);return ps(t)}function hD(n,A,e,t,i,r){let s=n;do{let o=s.next.next;for(;o!==s.prev;){if(s.i!==o.i&&wD(s,o)){let a=D1(s,o);s=ps(s,s.next),a=ps(a,a.next),Ml(s,A,e,t,i,r,0),Ml(a,A,e,t,i,r,0);return}o=o.next}s=s.next}while(s!==n)}function uD(n,A,e,t){const i=[];let r,s,o,a,l;for(r=0,s=A.length;r<s;r++)o=A[r]*t,a=r<s-1?A[r+1]*t:n.length,l=P1(n,o,a,t,!1),l===l.next&&(l.steiner=!0),i.push(yD(l));for(i.sort(fD),r=0;r<i.length;r++)e=dD(i[r],e);return e}function fD(n,A){return n.x-A.x}function dD(n,A){const e=pD(n,A);if(!e)return A;const t=D1(e,n);return ps(t,t.next),ps(e,e.next)}function pD(n,A){let e=A,t=-1/0,i;const r=n.x,s=n.y;do{if(s<=e.y&&s>=e.next.y&&e.next.y!==e.y){const h=e.x+(s-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(h<=r&&h>t&&(t=h,i=e.x<e.next.x?e:e.next,h===r))return i}e=e.next}while(e!==A);if(!i)return null;const o=i,a=i.x,l=i.y;let u=1/0,c;e=i;do r>=e.x&&e.x>=a&&r!==e.x&&Oo(s<l?r:t,s,a,l,s<l?t:r,s,e.x,e.y)&&(c=Math.abs(s-e.y)/(r-e.x),Pl(e,n)&&(c<u||c===u&&(e.x>i.x||e.x===i.x&&gD(i,e)))&&(i=e,u=c)),e=e.next;while(e!==o);return i}function gD(n,A){return Ke(n.prev,n,A.prev)<0&&Ke(A.next,n,n.next)<0}function mD(n,A,e,t){let i=n;do i.z===0&&(i.z=Up(i.x,i.y,A,e,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==n);i.prevZ.nextZ=null,i.prevZ=null,vD(i)}function vD(n){let A,e,t,i,r,s,o,a,l=1;do{for(e=n,n=null,r=null,s=0;e;){for(s++,t=e,o=0,A=0;A<l&&(o++,t=t.nextZ,!!t);A++);for(a=l;o>0||a>0&&t;)o!==0&&(a===0||!t||e.z<=t.z)?(i=e,e=e.nextZ,o--):(i=t,t=t.nextZ,a--),r?r.nextZ=i:n=i,i.prevZ=r,r=i;e=t}r.nextZ=null,l*=2}while(s>1);return n}function Up(n,A,e,t,i){return n=(n-e)*i|0,A=(A-t)*i|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,n|A<<1}function yD(n){let A=n,e=n;do(A.x<e.x||A.x===e.x&&A.y<e.y)&&(e=A),A=A.next;while(A!==n);return e}function Oo(n,A,e,t,i,r,s,o){return(i-s)*(A-o)>=(n-s)*(r-o)&&(n-s)*(t-o)>=(e-s)*(A-o)&&(e-s)*(r-o)>=(i-s)*(t-o)}function wD(n,A){return n.next.i!==A.i&&n.prev.i!==A.i&&!CD(n,A)&&(Pl(n,A)&&Pl(A,n)&&xD(n,A)&&(Ke(n.prev,n,A.prev)||Ke(n,A.prev,A))||Wh(n,A)&&Ke(n.prev,n,n.next)>0&&Ke(A.prev,A,A.next)>0)}function Ke(n,A,e){return(A.y-n.y)*(e.x-A.x)-(A.x-n.x)*(e.y-A.y)}function Wh(n,A){return n.x===A.x&&n.y===A.y}function T1(n,A,e,t){const i=Zh(Ke(n,A,e)),r=Zh(Ke(n,A,t)),s=Zh(Ke(e,t,n)),o=Zh(Ke(e,t,A));return!!(i!==r&&s!==o||i===0&&Jh(n,e,A)||r===0&&Jh(n,t,A)||s===0&&Jh(e,n,t)||o===0&&Jh(e,A,t))}function Jh(n,A,e){return A.x<=Math.max(n.x,e.x)&&A.x>=Math.min(n.x,e.x)&&A.y<=Math.max(n.y,e.y)&&A.y>=Math.min(n.y,e.y)}function Zh(n){return n>0?1:n<0?-1:0}function CD(n,A){let e=n;do{if(e.i!==n.i&&e.next.i!==n.i&&e.i!==A.i&&e.next.i!==A.i&&T1(e,e.next,n,A))return!0;e=e.next}while(e!==n);return!1}function Pl(n,A){return Ke(n.prev,n,n.next)<0?Ke(n,A,n.next)>=0&&Ke(n,n.prev,A)>=0:Ke(n,A,n.prev)<0||Ke(n,n.next,A)<0}function xD(n,A){let e=n,t=!1;const i=(n.x+A.x)/2,r=(n.y+A.y)/2;do e.y>r!=e.next.y>r&&e.next.y!==e.y&&i<(e.next.x-e.x)*(r-e.y)/(e.next.y-e.y)+e.x&&(t=!t),e=e.next;while(e!==n);return t}function D1(n,A){const e=new Wp(n.i,n.x,n.y),t=new Wp(A.i,A.x,A.y),i=n.next,r=A.prev;return n.next=A,A.prev=n,e.next=i,i.prev=e,t.next=e,e.prev=t,r.next=t,t.prev=r,t}function E1(n,A,e,t){const i=new Wp(n,A,e);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function Tl(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function Wp(n,A,e){this.i=n,this.x=A,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ID(n,A,e,t){let i=0;for(let r=A,s=e-t;r<e;r+=t)i+=(n[s]-n[r])*(n[r+1]+n[s+1]),s=r;return i}class Jp{static area(A){const e=A.length;let t=0;for(let i=e-1,r=0;r<e;i=r++)t+=A[i].x*A[r].y-A[r].x*A[i].y;return t*.5}static isClockWise(A){return Jp.area(A)<0}static triangulateShape(A,e){const t=[],i=[],r=[];L1(A),O1(t,A);let s=A.length;e.forEach(L1);for(let a=0;a<e.length;a++)i.push(s),s+=e[a].length,O1(t,e[a]);const o=oD.triangulate(t,i);for(let a=0;a<o.length;a+=3)r.push(o.slice(a,a+3));return r}}function L1(n){const A=n.length;A>2&&n[A-1].equals(n[0])&&n.pop()}function O1(n,A){for(let e=0;e<A.length;e++)n.push(A[e].x),n.push(A[e].y)}class Xh extends qe{constructor(A=.5,e=1,t=32,i=1,r=0,s=Math.PI*2){super(),this.type="RingGeometry",this.parameters={innerRadius:A,outerRadius:e,thetaSegments:t,phiSegments:i,thetaStart:r,thetaLength:s},t=Math.max(3,t),i=Math.max(1,i);const o=[],a=[],l=[],u=[];let c=A;const h=(e-A)/i,f=new O,p=new uA;for(let m=0;m<=i;m++){for(let d=0;d<=t;d++){const g=r+d/t*s;f.x=c*Math.cos(g),f.y=c*Math.sin(g),a.push(f.x,f.y,f.z),l.push(0,0,1),p.x=(f.x/e+1)/2,p.y=(f.y/e+1)/2,u.push(p.x,p.y)}c+=h}for(let m=0;m<i;m++){const d=m*(t+1);for(let g=0;g<t;g++){const y=g+d,v=y,w=y+t+1,C=y+t+2,_=y+1;o.push(v,w,_),o.push(w,C,_)}}this.setIndex(o),this.setAttribute("position",new Dt(a,3)),this.setAttribute("normal",new Dt(l,3)),this.setAttribute("uv",new Dt(u,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Xh(A.innerRadius,A.outerRadius,A.thetaSegments,A.phiSegments,A.thetaStart,A.thetaLength)}}class bD extends $e{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class Dl extends an{constructor(A){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new KA(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new KA(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xy,this.normalScale=new uA(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new on,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.defines={STANDARD:""},this.color.copy(A.color),this.roughness=A.roughness,this.metalness=A.metalness,this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.roughnessMap=A.roughnessMap,this.metalnessMap=A.metalnessMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.envMapIntensity=A.envMapIntensity,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class hn extends Dl{constructor(A){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new uA(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Qe(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new KA(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new KA(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new KA(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(A)}get anisotropy(){return this._anisotropy}set anisotropy(A){this._anisotropy>0!=A>0&&this.version++,this._anisotropy=A}get clearcoat(){return this._clearcoat}set clearcoat(A){this._clearcoat>0!=A>0&&this.version++,this._clearcoat=A}get iridescence(){return this._iridescence}set iridescence(A){this._iridescence>0!=A>0&&this.version++,this._iridescence=A}get dispersion(){return this._dispersion}set dispersion(A){this._dispersion>0!=A>0&&this.version++,this._dispersion=A}get sheen(){return this._sheen}set sheen(A){this._sheen>0!=A>0&&this.version++,this._sheen=A}get transmission(){return this._transmission}set transmission(A){this._transmission>0!=A>0&&this.version++,this._transmission=A}copy(A){return super.copy(A),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=A.anisotropy,this.anisotropyRotation=A.anisotropyRotation,this.anisotropyMap=A.anisotropyMap,this.clearcoat=A.clearcoat,this.clearcoatMap=A.clearcoatMap,this.clearcoatRoughness=A.clearcoatRoughness,this.clearcoatRoughnessMap=A.clearcoatRoughnessMap,this.clearcoatNormalMap=A.clearcoatNormalMap,this.clearcoatNormalScale.copy(A.clearcoatNormalScale),this.dispersion=A.dispersion,this.ior=A.ior,this.iridescence=A.iridescence,this.iridescenceMap=A.iridescenceMap,this.iridescenceIOR=A.iridescenceIOR,this.iridescenceThicknessRange=[...A.iridescenceThicknessRange],this.iridescenceThicknessMap=A.iridescenceThicknessMap,this.sheen=A.sheen,this.sheenColor.copy(A.sheenColor),this.sheenColorMap=A.sheenColorMap,this.sheenRoughness=A.sheenRoughness,this.sheenRoughnessMap=A.sheenRoughnessMap,this.transmission=A.transmission,this.transmissionMap=A.transmissionMap,this.thickness=A.thickness,this.thicknessMap=A.thicknessMap,this.attenuationDistance=A.attenuationDistance,this.attenuationColor.copy(A.attenuationColor),this.specularIntensity=A.specularIntensity,this.specularIntensityMap=A.specularIntensityMap,this.specularColor.copy(A.specularColor),this.specularColorMap=A.specularColorMap,this}}class q1 extends Bh{constructor(A){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(A)}copy(A){return super.copy(A),this.scale=A.scale,this.dashSize=A.dashSize,this.gapSize=A.gapSize,this}}function Qh(n,A,e){return!n||!e&&n.constructor===A?n:typeof A.BYTES_PER_ELEMENT=="number"?new A(n):Array.prototype.slice.call(n)}function _D(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function SD(n){function A(i,r){return n[i]-n[r]}const e=n.length,t=new Array(e);for(let i=0;i!==e;++i)t[i]=i;return t.sort(A),t}function N1(n,A,e){const t=n.length,i=new n.constructor(t);for(let r=0,s=0;s!==t;++r){const o=e[r]*A;for(let a=0;a!==A;++a)i[s++]=n[o+a]}return i}function B1(n,A,e,t){let i=1,r=n[0];for(;r!==void 0&&r[t]===void 0;)r=n[i++];if(r===void 0)return;let s=r[t];if(s!==void 0)if(Array.isArray(s))do s=r[t],s!==void 0&&(A.push(r.time),e.push.apply(e,s)),r=n[i++];while(r!==void 0);else if(s.toArray!==void 0)do s=r[t],s!==void 0&&(A.push(r.time),s.toArray(e,e.length)),r=n[i++];while(r!==void 0);else do s=r[t],s!==void 0&&(A.push(r.time),e.push(s)),r=n[i++];while(r!==void 0)}class El{constructor(A,e,t,i){this.parameterPositions=A,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(t),this.sampleValues=e,this.valueSize=t,this.settings=null,this.DefaultSettings_={}}evaluate(A){const e=this.parameterPositions;let t=this._cachedIndex,i=e[t],r=e[t-1];A:{e:{let s;t:{i:if(!(A<i)){for(let o=t+2;;){if(i===void 0){if(A<r)break i;return t=e.length,this._cachedIndex=t,this.copySampleValue_(t-1)}if(t===o)break;if(r=i,i=e[++t],A<i)break e}s=e.length;break t}if(!(A>=r)){const o=e[1];A<o&&(t=2,r=o);for(let a=t-2;;){if(r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(t===a)break;if(i=r,r=e[--t-1],A>=r)break e}s=t,t=0;break t}break A}for(;t<s;){const o=t+s>>>1;A<e[o]?s=o:t=o+1}if(i=e[t],r=e[t-1],r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return t=e.length,this._cachedIndex=t,this.copySampleValue_(t-1)}this._cachedIndex=t,this.intervalChanged_(t,r,i)}return this.interpolate_(t,r,A,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,i=this.valueSize,r=A*i;for(let s=0;s!==i;++s)e[s]=t[r+s];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class MD extends El{constructor(A,e,t,i){super(A,e,t,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Uy,endingEnd:Uy}}intervalChanged_(A,e,t){const i=this.parameterPositions;let r=A-2,s=A+1,o=i[r],a=i[s];if(o===void 0)switch(this.getSettings_().endingStart){case Wy:r=A,o=2*e-t;break;case Jy:r=i.length-2,o=e+i[r]-i[r+1];break;default:r=A,o=t}if(a===void 0)switch(this.getSettings_().endingEnd){case Wy:s=A,a=2*t-e;break;case Jy:s=1,a=t+i[1]-i[0];break;default:s=A-1,a=e}const l=(t-e)*.5,u=this.valueSize;this._weightPrev=l/(e-o),this._weightNext=l/(a-t),this._offsetPrev=r*u,this._offsetNext=s*u}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=A*o,l=a-o,u=this._offsetPrev,c=this._offsetNext,h=this._weightPrev,f=this._weightNext,p=(t-e)/(i-e),m=p*p,d=m*p,g=-h*d+2*h*m-h*p,y=(1+h)*d+(-1.5-2*h)*m+(-.5+h)*p+1,v=(-1-f)*d+(1.5+f)*m+.5*p,w=f*d-f*m;for(let C=0;C!==o;++C)r[C]=g*s[u+C]+y*s[l+C]+v*s[a+C]+w*s[c+C];return r}}class PD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=A*o,l=a-o,u=(t-e)/(i-e),c=1-u;for(let h=0;h!==o;++h)r[h]=s[l+h]*c+s[a+h]*u;return r}}class TD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A){return this.copySampleValue_(A-1)}}class un{constructor(A,e,t,i){if(A===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(e===void 0||e.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+A);this.name=A,this.times=Qh(e,this.TimeBufferType),this.values=Qh(t,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(A){const e=A.constructor;let t;if(e.toJSON!==this.toJSON)t=e.toJSON(A);else{t={name:A.name,times:Qh(A.times,Array),values:Qh(A.values,Array)};const i=A.getInterpolation();i!==A.DefaultInterpolation&&(t.interpolation=i)}return t.type=A.ValueTypeName,t}InterpolantFactoryMethodDiscrete(A){return new TD(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodLinear(A){return new PD(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodSmooth(A){return new MD(this.times,this.values,this.getValueSize(),A)}setInterpolation(A){let e;switch(A){case ro:e=this.InterpolantFactoryMethodDiscrete;break;case is:e=this.InterpolantFactoryMethodLinear;break;case Jd:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){const t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(A!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(t);return console.warn("THREE.KeyframeTrack:",t),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ro;case this.InterpolantFactoryMethodLinear:return is;case this.InterpolantFactoryMethodSmooth:return Jd}}getValueSize(){return this.values.length/this.times.length}shift(A){if(A!==0){const e=this.times;for(let t=0,i=e.length;t!==i;++t)e[t]+=A}return this}scale(A){if(A!==1){const e=this.times;for(let t=0,i=e.length;t!==i;++t)e[t]*=A}return this}trim(A,e){const t=this.times,i=t.length;let r=0,s=i-1;for(;r!==i&&t[r]<A;)++r;for(;s!==-1&&t[s]>e;)--s;if(++s,r!==0||s!==i){r>=s&&(s=Math.max(s,1),r=s-1);const o=this.getValueSize();this.times=t.slice(r,s),this.values=this.values.slice(r*o,s*o)}return this}validate(){let A=!0;const e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),A=!1);const t=this.times,i=this.values,r=t.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),A=!1);let s=null;for(let o=0;o!==r;o++){const a=t[o];if(typeof a=="number"&&isNaN(a)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,a),A=!1;break}if(s!==null&&s>a){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,a,s),A=!1;break}s=a}if(i!==void 0&&_D(i))for(let o=0,a=i.length;o!==a;++o){const l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),A=!1;break}}return A}optimize(){const A=this.times.slice(),e=this.values.slice(),t=this.getValueSize(),i=this.getInterpolation()===Jd,r=A.length-1;let s=1;for(let o=1;o<r;++o){let a=!1;const l=A[o],u=A[o+1];if(l!==u&&(o!==1||l!==A[0]))if(i)a=!0;else{const c=o*t,h=c-t,f=c+t;for(let p=0;p!==t;++p){const m=e[c+p];if(m!==e[h+p]||m!==e[f+p]){a=!0;break}}}if(a){if(o!==s){A[s]=A[o];const c=o*t,h=s*t;for(let f=0;f!==t;++f)e[h+f]=e[c+f]}++s}}if(r>0){A[s]=A[r];for(let o=r*t,a=s*t,l=0;l!==t;++l)e[a+l]=e[o+l];++s}return s!==A.length?(this.times=A.slice(0,s),this.values=e.slice(0,s*t)):(this.times=A,this.values=e),this}clone(){const A=this.times.slice(),e=this.values.slice(),t=this.constructor,i=new t(this.name,A,e);return i.createInterpolant=this.createInterpolant,i}}un.prototype.TimeBufferType=Float32Array,un.prototype.ValueBufferType=Float32Array,un.prototype.DefaultInterpolation=is;class qo extends un{}qo.prototype.ValueTypeName="bool",qo.prototype.ValueBufferType=Array,qo.prototype.DefaultInterpolation=ro,qo.prototype.InterpolantFactoryMethodLinear=void 0,qo.prototype.InterpolantFactoryMethodSmooth=void 0;class z1 extends un{}z1.prototype.ValueTypeName="color";class No extends un{}No.prototype.ValueTypeName="number";class DD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=(t-e)/(i-e);let l=A*o;for(let u=l+o;l!==u;l+=4)vi.slerpFlat(r,0,s,l-o,s,l,a);return r}}class gs extends un{InterpolantFactoryMethodLinear(A){return new DD(this.times,this.values,this.getValueSize(),A)}}gs.prototype.ValueTypeName="quaternion",gs.prototype.DefaultInterpolation=is,gs.prototype.InterpolantFactoryMethodSmooth=void 0;class Bo extends un{}Bo.prototype.ValueTypeName="string",Bo.prototype.ValueBufferType=Array,Bo.prototype.DefaultInterpolation=ro,Bo.prototype.InterpolantFactoryMethodLinear=void 0,Bo.prototype.InterpolantFactoryMethodSmooth=void 0;class zo extends un{}zo.prototype.ValueTypeName="vector";class ED{constructor(A="",e=-1,t=[],i=R3){this.name=A,this.tracks=t,this.duration=e,this.blendMode=i,this.uuid=mi(),this.duration<0&&this.resetDuration()}static parse(A){const e=[],t=A.tracks,i=1/(A.fps||1);for(let s=0,o=t.length;s!==o;++s)e.push(OD(t[s]).scale(i));const r=new this(A.name,A.duration,e,A.blendMode);return r.uuid=A.uuid,r}static toJSON(A){const e=[],t=A.tracks,i={name:A.name,duration:A.duration,tracks:e,uuid:A.uuid,blendMode:A.blendMode};for(let r=0,s=t.length;r!==s;++r)e.push(un.toJSON(t[r]));return i}static CreateFromMorphTargetSequence(A,e,t,i){const r=e.length,s=[];for(let o=0;o<r;o++){let a=[],l=[];a.push((o+r-1)%r,o,(o+1)%r),l.push(0,1,0);const u=SD(a);a=N1(a,1,u),l=N1(l,1,u),!i&&a[0]===0&&(a.push(r),l.push(l[0])),s.push(new No(".morphTargetInfluences["+e[o].name+"]",a,l).scale(1/t))}return new this(A,-1,s)}static findByName(A,e){let t=A;if(!Array.isArray(A)){const i=A;t=i.geometry&&i.geometry.animations||i.animations}for(let i=0;i<t.length;i++)if(t[i].name===e)return t[i];return null}static CreateClipsFromMorphTargetSequences(A,e,t){const i={},r=/^([\w-]*?)([\d]+)$/;for(let o=0,a=A.length;o<a;o++){const l=A[o],u=l.name.match(r);if(u&&u.length>1){const c=u[1];let h=i[c];h||(i[c]=h=[]),h.push(l)}}const s=[];for(const o in i)s.push(this.CreateFromMorphTargetSequence(o,i[o],e,t));return s}static parseAnimation(A,e){if(!A)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const t=function(c,h,f,p,m){if(f.length!==0){const d=[],g=[];B1(f,d,g,p),d.length!==0&&m.push(new c(h,d,g))}},i=[],r=A.name||"default",s=A.fps||30,o=A.blendMode;let a=A.length||-1;const l=A.hierarchy||[];for(let c=0;c<l.length;c++){const h=l[c].keys;if(!(!h||h.length===0))if(h[0].morphTargets){const f={};let p;for(p=0;p<h.length;p++)if(h[p].morphTargets)for(let m=0;m<h[p].morphTargets.length;m++)f[h[p].morphTargets[m]]=-1;for(const m in f){const d=[],g=[];for(let y=0;y!==h[p].morphTargets.length;++y){const v=h[p];d.push(v.time),g.push(v.morphTarget===m?1:0)}i.push(new No(".morphTargetInfluence["+m+"]",d,g))}a=f.length*s}else{const f=".bones["+e[c].name+"]";t(zo,f+".position",h,"pos",i),t(gs,f+".quaternion",h,"rot",i),t(zo,f+".scale",h,"scl",i)}}return i.length===0?null:new this(r,a,i,o)}resetDuration(){const A=this.tracks;let e=0;for(let t=0,i=A.length;t!==i;++t){const r=this.tracks[t];e=Math.max(e,r.times[r.times.length-1])}return this.duration=e,this}trim(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].trim(0,this.duration);return this}validate(){let A=!0;for(let e=0;e<this.tracks.length;e++)A=A&&this.tracks[e].validate();return A}optimize(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].optimize();return this}clone(){const A=[];for(let e=0;e<this.tracks.length;e++)A.push(this.tracks[e].clone());return new this.constructor(this.name,this.duration,A,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function LD(n){switch(n.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return No;case"vector":case"vector2":case"vector3":case"vector4":return zo;case"color":return z1;case"quaternion":return gs;case"bool":case"boolean":return qo;case"string":return Bo}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+n)}function OD(n){if(n.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const A=LD(n.type);if(n.times===void 0){const e=[],t=[];B1(n.keys,e,t,"value"),n.times=e,n.values=t}return A.parse!==void 0?A.parse(n):new A(n.name,n.times,n.values,n.interpolation)}const mr={enabled:!1,files:{},add:function(n,A){this.enabled!==!1&&(this.files[n]=A)},get:function(n){if(this.enabled!==!1)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}};class R1{constructor(A,e,t){const i=this;let r=!1,s=0,o=0,a;const l=[];this.onStart=void 0,this.onLoad=A,this.onProgress=e,this.onError=t,this.itemStart=function(u){o++,r===!1&&i.onStart!==void 0&&i.onStart(u,s,o),r=!0},this.itemEnd=function(u){s++,i.onProgress!==void 0&&i.onProgress(u,s,o),s===o&&(r=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(u){i.onError!==void 0&&i.onError(u)},this.resolveURL=function(u){return a?a(u):u},this.setURLModifier=function(u){return a=u,this},this.addHandler=function(u,c){return l.push(u,c),this},this.removeHandler=function(u){const c=l.indexOf(u);return c!==-1&&l.splice(c,2),this},this.getHandler=function(u){for(let c=0,h=l.length;c<h;c+=2){const f=l[c],p=l[c+1];if(f.global&&(f.lastIndex=0),f.test(u))return p}return null}}}const qD=new R1;let vr=class{constructor(A){this.manager=A!==void 0?A:qD,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(A,e){const t=this;return new Promise(function(i,r){t.load(A,i,e,r)})}parse(){}setCrossOrigin(A){return this.crossOrigin=A,this}setWithCredentials(A){return this.withCredentials=A,this}setPath(A){return this.path=A,this}setResourcePath(A){return this.resourcePath=A,this}setRequestHeader(A){return this.requestHeader=A,this}};vr.DEFAULT_MATERIAL_NAME="__DEFAULT";const Fn={};class ND extends Error{constructor(A,e){super(A),this.response=e}}class Ll extends vr{constructor(A){super(A)}load(A,e,t,i){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=mr.get(A);if(r!==void 0)return this.manager.itemStart(A),setTimeout(()=>{e&&e(r),this.manager.itemEnd(A)},0),r;if(Fn[A]!==void 0){Fn[A].push({onLoad:e,onProgress:t,onError:i});return}Fn[A]=[],Fn[A].push({onLoad:e,onProgress:t,onError:i});const s=new Request(A,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,a=this.responseType;fetch(s).then(l=>{if(l.status===200||l.status===0){if(l.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||l.body===void 0||l.body.getReader===void 0)return l;const u=Fn[A],c=l.body.getReader(),h=l.headers.get("X-File-Size")||l.headers.get("Content-Length"),f=h?parseInt(h):0,p=f!==0;let m=0;const d=new ReadableStream({start(g){y();function y(){c.read().then(({done:v,value:w})=>{if(v)g.close();else{m+=w.byteLength;const C=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:f});for(let _=0,x=u.length;_<x;_++){const S=u[_];S.onProgress&&S.onProgress(C)}g.enqueue(w),y()}})}}});return new Response(d)}else throw new ND(`fetch for "${l.url}" responded with ${l.status}: ${l.statusText}`,l)}).then(l=>{switch(a){case"arraybuffer":return l.arrayBuffer();case"blob":return l.blob();case"document":return l.text().then(u=>new DOMParser().parseFromString(u,o));case"json":return l.json();default:if(o===void 0)return l.text();{const c=/charset="?([^;"\s]*)"?/i.exec(o),h=c&&c[1]?c[1].toLowerCase():void 0,f=new TextDecoder(h);return l.arrayBuffer().then(p=>f.decode(p))}}}).then(l=>{mr.add(A,l);const u=Fn[A];delete Fn[A];for(let c=0,h=u.length;c<h;c++){const f=u[c];f.onLoad&&f.onLoad(l)}}).catch(l=>{const u=Fn[A];if(u===void 0)throw this.manager.itemError(A),l;delete Fn[A];for(let c=0,h=u.length;c<h;c++){const f=u[c];f.onError&&f.onError(l)}this.manager.itemError(A)}).finally(()=>{this.manager.itemEnd(A)}),this.manager.itemStart(A)}setResponseType(A){return this.responseType=A,this}setMimeType(A){return this.mimeType=A,this}}class BD extends vr{constructor(A){super(A)}load(A,e,t,i){this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=this,s=mr.get(A);if(s!==void 0)return r.manager.itemStart(A),setTimeout(function(){e&&e(s),r.manager.itemEnd(A)},0),s;const o=dl("img");function a(){u(),mr.add(A,this),e&&e(this),r.manager.itemEnd(A)}function l(c){u(),i&&i(c),r.manager.itemError(A),r.manager.itemEnd(A)}function u(){o.removeEventListener("load",a,!1),o.removeEventListener("error",l,!1)}return o.addEventListener("load",a,!1),o.addEventListener("error",l,!1),A.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(A),o.src=A,o}}class zD extends vr{constructor(A){super(A)}load(A,e,t,i){const r=this,s=new jt,o=new Ll(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(A,function(a){let l;try{l=r.parse(a)}catch(u){if(i!==void 0)i(u);else{console.error(u);return}}l.image!==void 0?s.image=l.image:l.data!==void 0&&(s.image.width=l.width,s.image.height=l.height,s.image.data=l.data),s.wrapS=l.wrapS!==void 0?l.wrapS:et,s.wrapT=l.wrapT!==void 0?l.wrapT:et,s.magFilter=l.magFilter!==void 0?l.magFilter:we,s.minFilter=l.minFilter!==void 0?l.minFilter:we,s.anisotropy=l.anisotropy!==void 0?l.anisotropy:1,l.colorSpace!==void 0&&(s.colorSpace=l.colorSpace),l.flipY!==void 0&&(s.flipY=l.flipY),l.format!==void 0&&(s.format=l.format),l.type!==void 0&&(s.type=l.type),l.mipmaps!==void 0&&(s.mipmaps=l.mipmaps,s.minFilter=zi),l.mipmapCount===1&&(s.minFilter=we),l.generateMipmaps!==void 0&&(s.generateMipmaps=l.generateMipmaps),s.needsUpdate=!0,e&&e(s,l)},t,i),s}}class Zp extends vr{constructor(A){super(A)}load(A,e,t,i){const r=new lt,s=new BD(this.manager);return s.setCrossOrigin(this.crossOrigin),s.setPath(this.path),s.load(A,function(o){r.image=o,r.needsUpdate=!0,e!==void 0&&e(r)},t,i),r}}class Xp extends Ie{constructor(A,e=1){super(),this.isLight=!0,this.type="Light",this.color=new KA(A),this.intensity=e}dispose(){}copy(A,e){return super.copy(A,e),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){const e=super.toJSON(A);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&&(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(e.object.distance=this.distance),this.angle!==void 0&&(e.object.angle=this.angle),this.decay!==void 0&&(e.object.decay=this.decay),this.penumbra!==void 0&&(e.object.penumbra=this.penumbra),this.shadow!==void 0&&(e.object.shadow=this.shadow.toJSON()),e}}const Qp=new zA,k1=new O,j1=new O;class Vp{constructor(A){this.camera=A,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new uA(512,512),this.map=null,this.mapPass=null,this.matrix=new zA,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new yp,this._frameExtents=new uA(1,1),this._viewportCount=1,this._viewports=[new ve(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(A){const e=this.camera,t=this.matrix;k1.setFromMatrixPosition(A.matrixWorld),e.position.copy(k1),j1.setFromMatrixPosition(A.target.matrixWorld),e.lookAt(j1),e.updateMatrixWorld(),Qp.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Qp),t.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),t.multiply(Qp)}getViewport(A){return this._viewports[A]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(A){return this.camera=A.camera.clone(),this.bias=A.bias,this.radius=A.radius,this.mapSize.copy(A.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const A={};return this.bias!==0&&(A.bias=this.bias),this.normalBias!==0&&(A.normalBias=this.normalBias),this.radius!==1&&(A.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(A.mapSize=this.mapSize.toArray()),A.camera=this.camera.toJSON(!1).object,delete A.camera.matrix,A}}class RD extends Vp{constructor(){super(new gt(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(A){const e=this.camera,t=ao*2*A.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=A.distance||e.far;(t!==e.fov||i!==e.aspect||r!==e.far)&&(e.fov=t,e.aspect=i,e.far=r,e.updateProjectionMatrix()),super.updateMatrices(A)}copy(A){return super.copy(A),this.focus=A.focus,this}}class kD extends Xp{constructor(A,e,t=0,i=Math.PI/3,r=0,s=2){super(A,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.distance=t,this.angle=i,this.penumbra=r,this.decay=s,this.map=null,this.shadow=new RD}get power(){return this.intensity*Math.PI}set power(A){this.intensity=A/Math.PI}dispose(){this.shadow.dispose()}copy(A,e){return super.copy(A,e),this.distance=A.distance,this.angle=A.angle,this.penumbra=A.penumbra,this.decay=A.decay,this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}const K1=new zA,Ol=new O,$p=new O;class jD extends Vp{constructor(){super(new gt(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new uA(4,2),this._viewportCount=6,this._viewports=[new ve(2,1,1,1),new ve(0,1,1,1),new ve(3,1,1,1),new ve(1,1,1,1),new ve(3,0,1,1),new ve(1,0,1,1)],this._cubeDirections=[new O(1,0,0),new O(-1,0,0),new O(0,0,1),new O(0,0,-1),new O(0,1,0),new O(0,-1,0)],this._cubeUps=[new O(0,1,0),new O(0,1,0),new O(0,1,0),new O(0,1,0),new O(0,0,1),new O(0,0,-1)]}updateMatrices(A,e=0){const t=this.camera,i=this.matrix,r=A.distance||t.far;r!==t.far&&(t.far=r,t.updateProjectionMatrix()),Ol.setFromMatrixPosition(A.matrixWorld),t.position.copy(Ol),$p.copy(t.position),$p.add(this._cubeDirections[e]),t.up.copy(this._cubeUps[e]),t.lookAt($p),t.updateMatrixWorld(),i.makeTranslation(-Ol.x,-Ol.y,-Ol.z),K1.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(K1)}}class KD extends Xp{constructor(A,e,t=0,i=2){super(A,e),this.isPointLight=!0,this.type="PointLight",this.distance=t,this.decay=i,this.shadow=new jD}get power(){return this.intensity*4*Math.PI}set power(A){this.intensity=A/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(A,e){return super.copy(A,e),this.distance=A.distance,this.decay=A.decay,this.shadow=A.shadow.clone(),this}}class FD extends Vp{constructor(){super(new Th(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class GD extends Xp{constructor(A,e){super(A,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.shadow=new FD}dispose(){this.shadow.dispose()}copy(A){return super.copy(A),this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}class ql{static decodeText(A){if(typeof TextDecoder<"u")return new TextDecoder().decode(A);let e="";for(let t=0,i=A.length;t<i;t++)e+=String.fromCharCode(A[t]);try{return decodeURIComponent(escape(e))}catch{return e}}static extractUrlBase(A){const e=A.lastIndexOf("/");return e===-1?"./":A.slice(0,e+1)}static resolveURL(A,e){return typeof A!="string"||A===""?"":(/^https?:\/\//i.test(e)&&/^\//.test(A)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(A)||/^data:.*,.*$/i.test(A)||/^blob:.*$/i.test(A)?A:e+A)}}class HD extends qe{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(A){return super.copy(A),this.instanceCount=A.instanceCount,this}toJSON(){const A=super.toJSON();return A.instanceCount=this.instanceCount,A.isInstancedBufferGeometry=!0,A}}class YD extends vr{constructor(A){super(A),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(A){return this.options=A,this}load(A,e,t,i){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=this,s=mr.get(A);if(s!==void 0){if(r.manager.itemStart(A),s.then){s.then(l=>{e&&e(l),r.manager.itemEnd(A)}).catch(l=>{i&&i(l)});return}return setTimeout(function(){e&&e(s),r.manager.itemEnd(A)},0),s}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader;const a=fetch(A,o).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(l){return mr.add(A,l),e&&e(l),r.manager.itemEnd(A),l}).catch(function(l){i&&i(l),mr.remove(A),r.manager.itemError(A),r.manager.itemEnd(A)});mr.add(A,a),r.manager.itemStart(A)}}class F1{constructor(A=!0){this.autoStart=A,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=G1(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let A=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const e=G1();A=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=A}return A}}function G1(){return(typeof performance>"u"?Date:performance).now()}const Ag="\\[\\]\\.:\\/",UD=new RegExp("["+Ag+"]","g"),eg="[^"+Ag+"]",WD="[^"+Ag.replace("\\.","")+"]",JD=/((?:WC+[\/:])*)/.source.replace("WC",eg),ZD=/(WCOD+)?/.source.replace("WCOD",WD),XD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",eg),QD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",eg),VD=new RegExp("^"+JD+ZD+XD+QD+"$"),$D=["material","materials","bones","map"];class AE{constructor(A,e,t){const i=t||xe.parseTrackName(e);this._targetGroup=A,this._bindings=A.subscribe_(e,i)}getValue(A,e){this.bind();const t=this._targetGroup.nCachedObjects_,i=this._bindings[t];i!==void 0&&i.getValue(A,e)}setValue(A,e){const t=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=t.length;i!==r;++i)t[i].setValue(A,e)}bind(){const A=this._bindings;for(let e=this._targetGroup.nCachedObjects_,t=A.length;e!==t;++e)A[e].bind()}unbind(){const A=this._bindings;for(let e=this._targetGroup.nCachedObjects_,t=A.length;e!==t;++e)A[e].unbind()}}class xe{constructor(A,e,t){this.path=e,this.parsedPath=t||xe.parseTrackName(e),this.node=xe.findNode(A,this.parsedPath.nodeName),this.rootNode=A,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(A,e,t){return A&&A.isAnimationObjectGroup?new xe.Composite(A,e,t):new xe(A,e,t)}static sanitizeNodeName(A){return A.replace(/\s/g,"_").replace(UD,"")}static parseTrackName(A){const e=VD.exec(A);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+A);const t={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=t.nodeName&&t.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){const r=t.nodeName.substring(i+1);$D.indexOf(r)!==-1&&(t.nodeName=t.nodeName.substring(0,i),t.objectName=r)}if(t.propertyName===null||t.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+A);return t}static findNode(A,e){if(e===void 0||e===""||e==="."||e===-1||e===A.name||e===A.uuid)return A;if(A.skeleton){const t=A.skeleton.getBoneByName(e);if(t!==void 0)return t}if(A.children){const t=function(r){for(let s=0;s<r.length;s++){const o=r[s];if(o.name===e||o.uuid===e)return o;const a=t(o.children);if(a)return a}return null},i=t(A.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(A,e){A[e]=this.targetObject[this.propertyName]}_getValue_array(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)A[e++]=t[i]}_getValue_arrayElement(A,e){A[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(A,e){this.resolvedProperty.toArray(A,e)}_setValue_direct(A,e){this.targetObject[this.propertyName]=A[e]}_setValue_direct_setNeedsUpdate(A,e){this.targetObject[this.propertyName]=A[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(A,e){this.targetObject[this.propertyName]=A[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++]}_setValue_array_setNeedsUpdate(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(A,e){this.resolvedProperty[this.propertyIndex]=A[e]}_setValue_arrayElement_setNeedsUpdate(A,e){this.resolvedProperty[this.propertyIndex]=A[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(A,e){this.resolvedProperty[this.propertyIndex]=A[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(A,e){this.resolvedProperty.fromArray(A,e)}_setValue_fromArray_setNeedsUpdate(A,e){this.resolvedProperty.fromArray(A,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(A,e){this.resolvedProperty.fromArray(A,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(A,e){this.bind(),this.getValue(A,e)}_setValue_unbound(A,e){this.bind(),this.setValue(A,e)}bind(){let A=this.node;const e=this.parsedPath,t=e.objectName,i=e.propertyName;let r=e.propertyIndex;if(A||(A=xe.findNode(this.rootNode,e.nodeName),this.node=A),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!A){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(t){let l=e.objectIndex;switch(t){case"materials":if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}A=A.material.materials;break;case"bones":if(!A.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}A=A.skeleton.bones;for(let u=0;u<A.length;u++)if(A[u].name===l){l=u;break}break;case"map":if("map"in A){A=A.map;break}if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}A=A.material.map;break;default:if(A[t]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}A=A[t]}if(l!==void 0){if(A[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,A);return}A=A[l]}}const s=A[i];if(s===void 0){const l=e.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+i+" but it wasn't found.",A);return}let o=this.Versioning.None;this.targetObject=A,A.needsUpdate!==void 0?o=this.Versioning.NeedsUpdate:A.matrixWorldNeedsUpdate!==void 0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let a=this.BindingType.Direct;if(r!==void 0){if(i==="morphTargetInfluences"){if(!A.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!A.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}A.morphTargetDictionary[r]!==void 0&&(r=A.morphTargetDictionary[r])}a=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else s.fromArray!==void 0&&s.toArray!==void 0?(a=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(a=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[a],this.setValue=this.SetterByBindingTypeAndVersioning[a][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}xe.Composite=AE,xe.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},xe.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},xe.prototype.GetterByBindingType=[xe.prototype._getValue_direct,xe.prototype._getValue_array,xe.prototype._getValue_arrayElement,xe.prototype._getValue_toArray],xe.prototype.SetterByBindingTypeAndVersioning=[[xe.prototype._setValue_direct,xe.prototype._setValue_direct_setNeedsUpdate,xe.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_array,xe.prototype._setValue_array_setNeedsUpdate,xe.prototype._setValue_array_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_arrayElement,xe.prototype._setValue_arrayElement_setNeedsUpdate,xe.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_fromArray,xe.prototype._setValue_fromArray_setNeedsUpdate,xe.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class tg{constructor(A){this.value=A}clone(){return new tg(this.value.clone===void 0?this.value:this.value.clone())}}const H1=new zA;class eE{constructor(A,e,t=0,i=1/0){this.ray=new os(A,e),this.near=t,this.far=i,this.camera=null,this.layers=new lp,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(A,e){this.ray.set(A,e)}setFromCamera(A,e){e.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(A.x,A.y,.5).unproject(e).sub(this.ray.origin).normalize(),this.camera=e):e.isOrthographicCamera?(this.ray.origin.set(A.x,A.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld),this.camera=e):console.error("THREE.Raycaster: Unsupported camera type: "+e.type)}setFromXRController(A){return H1.identity().extractRotation(A.matrixWorld),this.ray.origin.setFromMatrixPosition(A.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(H1),this}intersectObject(A,e=!0,t=[]){return ig(A,this,t,e),t.sort(Y1),t}intersectObjects(A,e=!0,t=[]){for(let i=0,r=A.length;i<r;i++)ig(A[i],this,t,e);return t.sort(Y1),t}}function Y1(n,A){return n.distance-A.distance}function ig(n,A,e,t){if(n.layers.test(A.layers)&&n.raycast(A,e),t===!0){const i=n.children;for(let r=0,s=i.length;r<s;r++)ig(i[r],A,e,!0)}}class ng{constructor(A=1,e=0,t=0){return this.radius=A,this.phi=e,this.theta=t,this}set(A,e,t){return this.radius=A,this.phi=e,this.theta=t,this}copy(A){return this.radius=A.radius,this.phi=A.phi,this.theta=A.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(A){return this.setFromCartesianCoords(A.x,A.y,A.z)}setFromCartesianCoords(A,e,t){return this.radius=Math.sqrt(A*A+e*e+t*t),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(A,t),this.phi=Math.acos(Qe(e/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}const U1=new O,Vh=new O;class De{constructor(A=new O,e=new O){this.start=A,this.end=e}set(A,e){return this.start.copy(A),this.end.copy(e),this}copy(A){return this.start.copy(A.start),this.end.copy(A.end),this}getCenter(A){return A.addVectors(this.start,this.end).multiplyScalar(.5)}delta(A){return A.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(A,e){return this.delta(e).multiplyScalar(A).add(this.start)}closestPointToPointParameter(A,e){U1.subVectors(A,this.start),Vh.subVectors(this.end,this.start);const t=Vh.dot(Vh);let r=Vh.dot(U1)/t;return e&&(r=Qe(r,0,1)),r}closestPointToPoint(A,e,t){const i=this.closestPointToPointParameter(A,e);return this.delta(t).multiplyScalar(i).add(this.start)}applyMatrix4(A){return this.start.applyMatrix4(A),this.end.applyMatrix4(A),this}equals(A){return A.start.equals(this.start)&&A.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}class tE{constructor(){this.type="ShapePath",this.color=new KA,this.subPaths=[],this.currentPath=null}moveTo(A,e){return this.currentPath=new Gp,this.subPaths.push(this.currentPath),this.currentPath.moveTo(A,e),this}lineTo(A,e){return this.currentPath.lineTo(A,e),this}quadraticCurveTo(A,e,t,i){return this.currentPath.quadraticCurveTo(A,e,t,i),this}bezierCurveTo(A,e,t,i,r,s){return this.currentPath.bezierCurveTo(A,e,t,i,r,s),this}splineThru(A){return this.currentPath.splineThru(A),this}toShapes(A){function e(g){const y=[];for(let v=0,w=g.length;v<w;v++){const C=g[v],_=new Yp;_.curves=C.curves,y.push(_)}return y}function t(g,y){const v=y.length;let w=!1;for(let C=v-1,_=0;_<v;C=_++){let x=y[C],S=y[_],b=S.x-x.x,I=S.y-x.y;if(Math.abs(I)>Number.EPSILON){if(I<0&&(x=y[_],b=-b,S=y[C],I=-I),g.y<x.y||g.y>S.y)continue;if(g.y===x.y){if(g.x===x.x)return!0}else{const D=I*(g.x-x.x)-b*(g.y-x.y);if(D===0)return!0;if(D<0)continue;w=!w}}else{if(g.y!==x.y)continue;if(S.x<=g.x&&g.x<=x.x||x.x<=g.x&&g.x<=S.x)return!0}}return w}const i=Jp.isClockWise,r=this.subPaths;if(r.length===0)return[];let s,o,a;const l=[];if(r.length===1)return o=r[0],a=new Yp,a.curves=o.curves,l.push(a),l;let u=!i(r[0].getPoints());u=A?!u:u;const c=[],h=[];let f=[],p=0,m;h[p]=void 0,f[p]=[];for(let g=0,y=r.length;g<y;g++)o=r[g],m=o.getPoints(),s=i(m),s=A?!s:s,s?(!u&&h[p]&&p++,h[p]={s:new Yp,p:m},h[p].s.curves=o.curves,u&&p++,f[p]=[]):f[p].push({h:o,p:m[0]});if(!h[0])return e(r);if(h.length>1){let g=!1,y=0;for(let v=0,w=h.length;v<w;v++)c[v]=[];for(let v=0,w=h.length;v<w;v++){const C=f[v];for(let _=0;_<C.length;_++){const x=C[_];let S=!0;for(let b=0;b<h.length;b++)t(x.p,h[b].p)&&(v!==b&&y++,S?(S=!1,c[b].push(x)):g=!0);S&&c[v].push(x)}}y>0&&g===!1&&(f=c)}let d;for(let g=0,y=h.length;g<y;g++){a=h[g].s,l.push(a),d=f[g];for(let v=0,w=d.length;v<w;v++)a.holes.push(d[v].h)}return l}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Qc}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Qc);class iE extends zD{constructor(A){super(A),this.type=Oe}parse(A){const s=function(S,b){switch(S){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(b||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(b||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(b||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(b||""))}},u=`
3825
+ }`;class qT{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(A,e,t){if(this.texture===null){const i=new lt,r=A.properties.get(i);r.__webglTexture=e.texture,(e.depthNear!=t.depthNear||e.depthFar!=t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}render(A,e){if(this.texture!==null){if(this.mesh===null){const t=e.cameras[0].viewport,i=new $e({vertexShader:LT,fragmentShader:OT,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new Pe(new Kn(20,20),i)}A.render(this.mesh,e)}}reset(){this.texture=null,this.mesh=null}}class NT extends ns{constructor(A,e){super();const t=this;let i=null,r=1,s=null,o="local-floor",a=1,l=null,u=null,c=null,h=null,f=null,p=null;const m=new qT,d=e.getContextAttributes();let g=null,y=null;const v=[],w=[],C=new uA;let _=null;const x=new gt;x.layers.enable(1),x.viewport=new ve;const S=new gt;S.layers.enable(2),S.viewport=new ve;const b=[x,S],I=new DT;I.layers.enable(1),I.layers.enable(2);let D=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getTargetRaySpace()},this.getControllerGrip=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getGripSpace()},this.getHand=function(j){let G=v[j];return G===void 0&&(G=new Tp,v[j]=G),G.getHandSpace()};function M(j){const G=w.indexOf(j.inputSource);if(G===-1)return;const V=v[G];V!==void 0&&(V.update(j.inputSource,j.frame,l||s),V.dispatchEvent({type:j.type,data:j.inputSource}))}function T(){i.removeEventListener("select",M),i.removeEventListener("selectstart",M),i.removeEventListener("selectend",M),i.removeEventListener("squeeze",M),i.removeEventListener("squeezestart",M),i.removeEventListener("squeezeend",M),i.removeEventListener("end",T),i.removeEventListener("inputsourceschange",q);for(let j=0;j<v.length;j++){const G=w[j];G!==null&&(w[j]=null,v[j].disconnect(G))}D=null,P=null,m.reset(),A.setRenderTarget(g),f=null,h=null,c=null,i=null,y=null,X.stop(),t.isPresenting=!1,A.setPixelRatio(_),A.setSize(C.width,C.height,!1),t.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(j){r=j,t.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(j){o=j,t.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(j){l=j},this.getBaseLayer=function(){return h!==null?h:f},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(j){if(i=j,i!==null){if(g=A.getRenderTarget(),i.addEventListener("select",M),i.addEventListener("selectstart",M),i.addEventListener("selectend",M),i.addEventListener("squeeze",M),i.addEventListener("squeezestart",M),i.addEventListener("squeezeend",M),i.addEventListener("end",T),i.addEventListener("inputsourceschange",q),d.xrCompatible!==!0&&await e.makeXRCompatible(),_=A.getPixelRatio(),A.getSize(C),i.renderState.layers===void 0){const G={antialias:d.antialias,alpha:!0,depth:d.depth,stencil:d.stencil,framebufferScaleFactor:r};f=new XRWebGLLayer(i,e,G),i.updateRenderState({baseLayer:f}),A.setPixelRatio(1),A.setSize(f.framebufferWidth,f.framebufferHeight,!1),y=new Ve(f.framebufferWidth,f.framebufferHeight,{format:_e,type:Ri,colorSpace:A.outputColorSpace,stencilBuffer:d.stencil})}else{let G=null,V=null,J=null;d.depth&&(J=d.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,G=d.stencil?hl:io,V=d.stencil?cl:ki);const tA={colorFormat:e.RGBA8,depthFormat:J,scaleFactor:r};c=new XRWebGLBinding(i,e),h=c.createProjectionLayer(tA),i.updateRenderState({layers:[h]}),A.setPixelRatio(1),A.setSize(h.textureWidth,h.textureHeight,!1),y=new Ve(h.textureWidth,h.textureHeight,{format:_e,type:Ri,depthTexture:new Bw(h.textureWidth,h.textureHeight,V,void 0,void 0,void 0,void 0,void 0,void 0,G),stencilBuffer:d.stencil,colorSpace:A.outputColorSpace,samples:d.antialias?4:0,resolveDepthBuffer:h.ignoreDepthValues===!1})}y.isXRRenderTarget=!0,this.setFoveation(a),l=null,s=await i.requestReferenceSpace(o),X.setContext(i),X.start(),t.isPresenting=!0,t.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(i!==null)return i.environmentBlendMode};function q(j){for(let G=0;G<j.removed.length;G++){const V=j.removed[G],J=w.indexOf(V);J>=0&&(w[J]=null,v[J].disconnect(V))}for(let G=0;G<j.added.length;G++){const V=j.added[G];let J=w.indexOf(V);if(J===-1){for(let dA=0;dA<v.length;dA++)if(dA>=w.length){w.push(V),J=dA;break}else if(w[dA]===null){w[dA]=V,J=dA;break}if(J===-1)break}const tA=v[J];tA&&tA.connect(V)}}const B=new O,W=new O;function K(j,G,V){B.setFromMatrixPosition(G.matrixWorld),W.setFromMatrixPosition(V.matrixWorld);const J=B.distanceTo(W),tA=G.projectionMatrix.elements,dA=V.projectionMatrix.elements,H=tA[14]/(tA[10]-1),aA=tA[14]/(tA[10]+1),AA=(tA[9]+1)/tA[5],TA=(tA[9]-1)/tA[5],vA=(tA[8]-1)/tA[0],mA=(dA[8]+1)/dA[0],yA=H*vA,_A=H*mA,gA=J/(-vA+mA),R=gA*-vA;G.matrixWorld.decompose(j.position,j.quaternion,j.scale),j.translateX(R),j.translateZ(gA),j.matrixWorld.compose(j.position,j.quaternion,j.scale),j.matrixWorldInverse.copy(j.matrixWorld).invert();const L=H+gA,F=aA+gA,iA=yA-R,eA=_A+(J-R),nA=AA*aA/F*L,fA=TA*aA/F*L;j.projectionMatrix.makePerspective(iA,eA,nA,fA,L,F),j.projectionMatrixInverse.copy(j.projectionMatrix).invert()}function U(j,G){G===null?j.matrixWorld.copy(j.matrix):j.matrixWorld.multiplyMatrices(G.matrixWorld,j.matrix),j.matrixWorldInverse.copy(j.matrixWorld).invert()}this.updateCamera=function(j){if(i===null)return;m.texture!==null&&(j.near=m.depthNear,j.far=m.depthFar),I.near=S.near=x.near=j.near,I.far=S.far=x.far=j.far,(D!==I.near||P!==I.far)&&(i.updateRenderState({depthNear:I.near,depthFar:I.far}),D=I.near,P=I.far,x.near=D,x.far=P,S.near=D,S.far=P,x.updateProjectionMatrix(),S.updateProjectionMatrix(),j.updateProjectionMatrix());const G=j.parent,V=I.cameras;U(I,G);for(let J=0;J<V.length;J++)U(V[J],G);V.length===2?K(I,x,S):I.projectionMatrix.copy(x.projectionMatrix),k(j,I,G)};function k(j,G,V){V===null?j.matrix.copy(G.matrixWorld):(j.matrix.copy(V.matrixWorld),j.matrix.invert(),j.matrix.multiply(G.matrixWorld)),j.matrix.decompose(j.position,j.quaternion,j.scale),j.updateMatrixWorld(!0),j.projectionMatrix.copy(G.projectionMatrix),j.projectionMatrixInverse.copy(G.projectionMatrixInverse),j.isPerspectiveCamera&&(j.fov=ao*2*Math.atan(1/j.projectionMatrix.elements[5]),j.zoom=1)}this.getCamera=function(){return I},this.getFoveation=function(){if(!(h===null&&f===null))return a},this.setFoveation=function(j){a=j,h!==null&&(h.fixedFoveation=j),f!==null&&f.fixedFoveation!==void 0&&(f.fixedFoveation=j)},this.hasDepthSensing=function(){return m.texture!==null};let N=null;function Y(j,G){if(u=G.getViewerPose(l||s),p=G,u!==null){const V=u.views;f!==null&&(A.setRenderTargetFramebuffer(y,f.framebuffer),A.setRenderTarget(y));let J=!1;V.length!==I.cameras.length&&(I.cameras.length=0,J=!0);for(let dA=0;dA<V.length;dA++){const H=V[dA];let aA=null;if(f!==null)aA=f.getViewport(H);else{const TA=c.getViewSubImage(h,H);aA=TA.viewport,dA===0&&(A.setRenderTargetTextures(y,TA.colorTexture,h.ignoreDepthValues?void 0:TA.depthStencilTexture),A.setRenderTarget(y))}let AA=b[dA];AA===void 0&&(AA=new gt,AA.layers.enable(dA),AA.viewport=new ve,b[dA]=AA),AA.matrix.fromArray(H.transform.matrix),AA.matrix.decompose(AA.position,AA.quaternion,AA.scale),AA.projectionMatrix.fromArray(H.projectionMatrix),AA.projectionMatrixInverse.copy(AA.projectionMatrix).invert(),AA.viewport.set(aA.x,aA.y,aA.width,aA.height),dA===0&&(I.matrix.copy(AA.matrix),I.matrix.decompose(I.position,I.quaternion,I.scale)),J===!0&&I.cameras.push(AA)}const tA=i.enabledFeatures;if(tA&&tA.includes("depth-sensing")){const dA=c.getDepthInformation(V[0]);dA&&dA.isValid&&dA.texture&&m.init(A,dA,i.renderState)}}for(let V=0;V<v.length;V++){const J=w[V],tA=v[V];J!==null&&tA!==void 0&&tA.update(J,G,l||s)}m.render(A,I),N&&N(j,G),G.detectedPlanes&&t.dispatchEvent({type:"planesdetected",data:G}),p=null}const X=new Pw;X.setAnimationLoop(Y),this.setAnimationLoop=function(j){N=j},this.dispose=function(){}}}const ds=new on,BT=new zA;function zT(n,A){function e(d,g){d.matrixAutoUpdate===!0&&d.updateMatrix(),g.value.copy(d.matrix)}function t(d,g){g.color.getRGB(d.fogColor.value,Iw(n)),g.isFog?(d.fogNear.value=g.near,d.fogFar.value=g.far):g.isFogExp2&&(d.fogDensity.value=g.density)}function i(d,g,y,v,w){g.isMeshBasicMaterial||g.isMeshLambertMaterial?r(d,g):g.isMeshToonMaterial?(r(d,g),c(d,g)):g.isMeshPhongMaterial?(r(d,g),u(d,g)):g.isMeshStandardMaterial?(r(d,g),h(d,g),g.isMeshPhysicalMaterial&&f(d,g,w)):g.isMeshMatcapMaterial?(r(d,g),p(d,g)):g.isMeshDepthMaterial?r(d,g):g.isMeshDistanceMaterial?(r(d,g),m(d,g)):g.isMeshNormalMaterial?r(d,g):g.isLineBasicMaterial?(s(d,g),g.isLineDashedMaterial&&o(d,g)):g.isPointsMaterial?a(d,g,y,v):g.isSpriteMaterial?l(d,g):g.isShadowMaterial?(d.color.value.copy(g.color),d.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function r(d,g){d.opacity.value=g.opacity,g.color&&d.diffuse.value.copy(g.color),g.emissive&&d.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(d.map.value=g.map,e(g.map,d.mapTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.bumpMap&&(d.bumpMap.value=g.bumpMap,e(g.bumpMap,d.bumpMapTransform),d.bumpScale.value=g.bumpScale,g.side===dt&&(d.bumpScale.value*=-1)),g.normalMap&&(d.normalMap.value=g.normalMap,e(g.normalMap,d.normalMapTransform),d.normalScale.value.copy(g.normalScale),g.side===dt&&d.normalScale.value.negate()),g.displacementMap&&(d.displacementMap.value=g.displacementMap,e(g.displacementMap,d.displacementMapTransform),d.displacementScale.value=g.displacementScale,d.displacementBias.value=g.displacementBias),g.emissiveMap&&(d.emissiveMap.value=g.emissiveMap,e(g.emissiveMap,d.emissiveMapTransform)),g.specularMap&&(d.specularMap.value=g.specularMap,e(g.specularMap,d.specularMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest);const y=A.get(g),v=y.envMap,w=y.envMapRotation;if(v&&(d.envMap.value=v,ds.copy(w),ds.x*=-1,ds.y*=-1,ds.z*=-1,v.isCubeTexture&&v.isRenderTargetTexture===!1&&(ds.y*=-1,ds.z*=-1),d.envMapRotation.value.setFromMatrix4(BT.makeRotationFromEuler(ds)),d.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,d.reflectivity.value=g.reflectivity,d.ior.value=g.ior,d.refractionRatio.value=g.refractionRatio),g.lightMap){d.lightMap.value=g.lightMap;const C=n._useLegacyLights===!0?Math.PI:1;d.lightMapIntensity.value=g.lightMapIntensity*C,e(g.lightMap,d.lightMapTransform)}g.aoMap&&(d.aoMap.value=g.aoMap,d.aoMapIntensity.value=g.aoMapIntensity,e(g.aoMap,d.aoMapTransform))}function s(d,g){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,g.map&&(d.map.value=g.map,e(g.map,d.mapTransform))}function o(d,g){d.dashSize.value=g.dashSize,d.totalSize.value=g.dashSize+g.gapSize,d.scale.value=g.scale}function a(d,g,y,v){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,d.size.value=g.size*y,d.scale.value=v*.5,g.map&&(d.map.value=g.map,e(g.map,d.uvTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest)}function l(d,g){d.diffuse.value.copy(g.color),d.opacity.value=g.opacity,d.rotation.value=g.rotation,g.map&&(d.map.value=g.map,e(g.map,d.mapTransform)),g.alphaMap&&(d.alphaMap.value=g.alphaMap,e(g.alphaMap,d.alphaMapTransform)),g.alphaTest>0&&(d.alphaTest.value=g.alphaTest)}function u(d,g){d.specular.value.copy(g.specular),d.shininess.value=Math.max(g.shininess,1e-4)}function c(d,g){g.gradientMap&&(d.gradientMap.value=g.gradientMap)}function h(d,g){d.metalness.value=g.metalness,g.metalnessMap&&(d.metalnessMap.value=g.metalnessMap,e(g.metalnessMap,d.metalnessMapTransform)),d.roughness.value=g.roughness,g.roughnessMap&&(d.roughnessMap.value=g.roughnessMap,e(g.roughnessMap,d.roughnessMapTransform)),g.envMap&&(d.envMapIntensity.value=g.envMapIntensity)}function f(d,g,y){d.ior.value=g.ior,g.sheen>0&&(d.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),d.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(d.sheenColorMap.value=g.sheenColorMap,e(g.sheenColorMap,d.sheenColorMapTransform)),g.sheenRoughnessMap&&(d.sheenRoughnessMap.value=g.sheenRoughnessMap,e(g.sheenRoughnessMap,d.sheenRoughnessMapTransform))),g.clearcoat>0&&(d.clearcoat.value=g.clearcoat,d.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(d.clearcoatMap.value=g.clearcoatMap,e(g.clearcoatMap,d.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(d.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,e(g.clearcoatRoughnessMap,d.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(d.clearcoatNormalMap.value=g.clearcoatNormalMap,e(g.clearcoatNormalMap,d.clearcoatNormalMapTransform),d.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===dt&&d.clearcoatNormalScale.value.negate())),g.dispersion>0&&(d.dispersion.value=g.dispersion),g.iridescence>0&&(d.iridescence.value=g.iridescence,d.iridescenceIOR.value=g.iridescenceIOR,d.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],d.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(d.iridescenceMap.value=g.iridescenceMap,e(g.iridescenceMap,d.iridescenceMapTransform)),g.iridescenceThicknessMap&&(d.iridescenceThicknessMap.value=g.iridescenceThicknessMap,e(g.iridescenceThicknessMap,d.iridescenceThicknessMapTransform))),g.transmission>0&&(d.transmission.value=g.transmission,d.transmissionSamplerMap.value=y.texture,d.transmissionSamplerSize.value.set(y.width,y.height),g.transmissionMap&&(d.transmissionMap.value=g.transmissionMap,e(g.transmissionMap,d.transmissionMapTransform)),d.thickness.value=g.thickness,g.thicknessMap&&(d.thicknessMap.value=g.thicknessMap,e(g.thicknessMap,d.thicknessMapTransform)),d.attenuationDistance.value=g.attenuationDistance,d.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(d.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(d.anisotropyMap.value=g.anisotropyMap,e(g.anisotropyMap,d.anisotropyMapTransform))),d.specularIntensity.value=g.specularIntensity,d.specularColor.value.copy(g.specularColor),g.specularColorMap&&(d.specularColorMap.value=g.specularColorMap,e(g.specularColorMap,d.specularColorMapTransform)),g.specularIntensityMap&&(d.specularIntensityMap.value=g.specularIntensityMap,e(g.specularIntensityMap,d.specularIntensityMapTransform))}function p(d,g){g.matcap&&(d.matcap.value=g.matcap)}function m(d,g){const y=A.get(g).light;d.referencePosition.value.setFromMatrixPosition(y.matrixWorld),d.nearDistance.value=y.shadow.camera.near,d.farDistance.value=y.shadow.camera.far}return{refreshFogUniforms:t,refreshMaterialUniforms:i}}function RT(n,A,e,t){let i={},r={},s=[];const o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function a(y,v){const w=v.program;t.uniformBlockBinding(y,w)}function l(y,v){let w=i[y.id];w===void 0&&(p(y),w=u(y),i[y.id]=w,y.addEventListener("dispose",d));const C=v.program;t.updateUBOMapping(y,C);const _=A.render.frame;r[y.id]!==_&&(h(y),r[y.id]=_)}function u(y){const v=c();y.__bindingPointIndex=v;const w=n.createBuffer(),C=y.__size,_=y.usage;return n.bindBuffer(n.UNIFORM_BUFFER,w),n.bufferData(n.UNIFORM_BUFFER,C,_),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,v,w),w}function c(){for(let y=0;y<o;y++)if(s.indexOf(y)===-1)return s.push(y),y;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function h(y){const v=i[y.id],w=y.uniforms,C=y.__cache;n.bindBuffer(n.UNIFORM_BUFFER,v);for(let _=0,x=w.length;_<x;_++){const S=Array.isArray(w[_])?w[_]:[w[_]];for(let b=0,I=S.length;b<I;b++){const D=S[b];if(f(D,_,b,C)===!0){const P=D.__offset,M=Array.isArray(D.value)?D.value:[D.value];let T=0;for(let q=0;q<M.length;q++){const B=M[q],W=m(B);typeof B=="number"||typeof B=="boolean"?(D.__data[0]=B,n.bufferSubData(n.UNIFORM_BUFFER,P+T,D.__data)):B.isMatrix3?(D.__data[0]=B.elements[0],D.__data[1]=B.elements[1],D.__data[2]=B.elements[2],D.__data[3]=0,D.__data[4]=B.elements[3],D.__data[5]=B.elements[4],D.__data[6]=B.elements[5],D.__data[7]=0,D.__data[8]=B.elements[6],D.__data[9]=B.elements[7],D.__data[10]=B.elements[8],D.__data[11]=0):(B.toArray(D.__data,T),T+=W.storage/Float32Array.BYTES_PER_ELEMENT)}n.bufferSubData(n.UNIFORM_BUFFER,P,D.__data)}}}n.bindBuffer(n.UNIFORM_BUFFER,null)}function f(y,v,w,C){const _=y.value,x=v+"_"+w;if(C[x]===void 0)return typeof _=="number"||typeof _=="boolean"?C[x]=_:C[x]=_.clone(),!0;{const S=C[x];if(typeof _=="number"||typeof _=="boolean"){if(S!==_)return C[x]=_,!0}else if(S.equals(_)===!1)return S.copy(_),!0}return!1}function p(y){const v=y.uniforms;let w=0;const C=16;for(let x=0,S=v.length;x<S;x++){const b=Array.isArray(v[x])?v[x]:[v[x]];for(let I=0,D=b.length;I<D;I++){const P=b[I],M=Array.isArray(P.value)?P.value:[P.value];for(let T=0,q=M.length;T<q;T++){const B=M[T],W=m(B),K=w%C;K!==0&&C-K<W.boundary&&(w+=C-K),P.__data=new Float32Array(W.storage/Float32Array.BYTES_PER_ELEMENT),P.__offset=w,w+=W.storage}}}const _=w%C;return _>0&&(w+=C-_),y.__size=w,y.__cache={},this}function m(y){const v={boundary:0,storage:0};return typeof y=="number"||typeof y=="boolean"?(v.boundary=4,v.storage=4):y.isVector2?(v.boundary=8,v.storage=8):y.isVector3||y.isColor?(v.boundary=16,v.storage=12):y.isVector4?(v.boundary=16,v.storage=16):y.isMatrix3?(v.boundary=48,v.storage=48):y.isMatrix4?(v.boundary=64,v.storage=64):y.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",y),v}function d(y){const v=y.target;v.removeEventListener("dispose",d);const w=s.indexOf(v.__bindingPointIndex);s.splice(w,1),n.deleteBuffer(i[v.id]),delete i[v.id],delete r[v.id]}function g(){for(const y in i)n.deleteBuffer(i[y]);s=[],i={},r={}}return{bind:a,update:l,dispose:g}}class n1{constructor(A={}){const{canvas:e=hM(),context:t=null,depth:i=!0,stencil:r=!1,alpha:s=!1,antialias:o=!1,premultipliedAlpha:a=!0,preserveDrawingBuffer:l=!1,powerPreference:u="default",failIfMajorPerformanceCaveat:c=!1}=A;this.isWebGLRenderer=!0;let h;if(t!==null){if(typeof WebGLRenderingContext<"u"&&t instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");h=t.getContextAttributes().alpha}else h=s;const f=new Uint32Array(4),p=new Int32Array(4);let m=null,d=null;const g=[],y=[];this.domElement=e,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=je,this._useLegacyLights=!1,this.toneMapping=Ln,this.toneMappingExposure=1;const v=this;let w=!1,C=0,_=0,x=null,S=-1,b=null;const I=new ve,D=new ve;let P=null;const M=new KA(0);let T=0,q=e.width,B=e.height,W=1,K=null,U=null;const k=new ve(0,0,q,B),N=new ve(0,0,q,B);let Y=!1;const X=new yp;let j=!1,G=!1;const V=new zA,J=new O,tA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function dA(){return x===null?W:1}let H=t;function aA(z,$){return e.getContext(z,$)}try{const z={alpha:!0,depth:i,stencil:r,antialias:o,premultipliedAlpha:a,preserveDrawingBuffer:l,powerPreference:u,failIfMajorPerformanceCaveat:c};if("setAttribute"in e&&e.setAttribute("data-engine",`three.js r${Qc}`),e.addEventListener("webglcontextlost",E,!1),e.addEventListener("webglcontextrestored",Q,!1),e.addEventListener("webglcontextcreationerror",Z,!1),H===null){const $="webgl2";if(H=aA($,z),H===null)throw aA($)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(z){throw console.error("THREE.WebGLRenderer: "+z.message),z}let AA,TA,vA,mA,yA,_A,gA,R,L,F,iA,eA,nA,fA,wA,cA,xA,lA,IA,HA,qA,CA,DA,SA;function XA(){AA=new Z6(H),AA.init(),CA=new TT(H,AA),TA=new G6(H,AA,A,CA),vA=new MT(H),mA=new V6(H),yA=new pT,_A=new PT(H,AA,vA,yA,TA,CA,mA),gA=new Y6(v),R=new J6(v),L=new kM(H),DA=new K6(H,L),F=new X6(H,L,mA,DA),iA=new AP(H,F,L,mA),IA=new $6(H,TA,_A),cA=new H6(yA),eA=new dT(v,gA,R,AA,TA,DA,cA),nA=new zT(v,yA),fA=new mT,wA=new IT(AA),lA=new j6(v,gA,R,vA,iA,h,a),xA=new ST(v,iA,TA),SA=new RT(H,mA,TA,vA),HA=new F6(H,AA,mA),qA=new Q6(H,AA,mA),mA.programs=eA.programs,v.capabilities=TA,v.extensions=AA,v.properties=yA,v.renderLists=fA,v.shadowMap=xA,v.state=vA,v.info=mA}XA();const FA=new NT(v,H);this.xr=FA,this.getContext=function(){return H},this.getContextAttributes=function(){return H.getContextAttributes()},this.forceContextLoss=function(){const z=AA.get("WEBGL_lose_context");z&&z.loseContext()},this.forceContextRestore=function(){const z=AA.get("WEBGL_lose_context");z&&z.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(z){z!==void 0&&(W=z,this.setSize(q,B,!1))},this.getSize=function(z){return z.set(q,B)},this.setSize=function(z,$,oA=!0){if(FA.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}q=z,B=$,e.width=Math.floor(z*W),e.height=Math.floor($*W),oA===!0&&(e.style.width=z+"px",e.style.height=$+"px"),this.setViewport(0,0,z,$)},this.getDrawingBufferSize=function(z){return z.set(q*W,B*W).floor()},this.setDrawingBufferSize=function(z,$,oA){q=z,B=$,W=oA,e.width=Math.floor(z*oA),e.height=Math.floor($*oA),this.setViewport(0,0,z,$)},this.getCurrentViewport=function(z){return z.copy(I)},this.getViewport=function(z){return z.copy(k)},this.setViewport=function(z,$,oA,rA){z.isVector4?k.set(z.x,z.y,z.z,z.w):k.set(z,$,oA,rA),vA.viewport(I.copy(k).multiplyScalar(W).round())},this.getScissor=function(z){return z.copy(N)},this.setScissor=function(z,$,oA,rA){z.isVector4?N.set(z.x,z.y,z.z,z.w):N.set(z,$,oA,rA),vA.scissor(D.copy(N).multiplyScalar(W).round())},this.getScissorTest=function(){return Y},this.setScissorTest=function(z){vA.setScissorTest(Y=z)},this.setOpaqueSort=function(z){K=z},this.setTransparentSort=function(z){U=z},this.getClearColor=function(z){return z.copy(lA.getClearColor())},this.setClearColor=function(){lA.setClearColor.apply(lA,arguments)},this.getClearAlpha=function(){return lA.getClearAlpha()},this.setClearAlpha=function(){lA.setClearAlpha.apply(lA,arguments)},this.clear=function(z=!0,$=!0,oA=!0){let rA=0;if(z){let sA=!1;if(x!==null){const BA=x.texture.format;sA=BA===ul||BA===eh||BA===Kd}if(sA){const BA=x.texture.type,UA=BA===Ri||BA===ki||BA===jd||BA===cl||BA===vy||BA===yy,WA=lA.getClearColor(),QA=lA.getClearAlpha(),te=WA.r,bA=WA.g,se=WA.b;UA?(f[0]=te,f[1]=bA,f[2]=se,f[3]=QA,H.clearBufferuiv(H.COLOR,0,f)):(p[0]=te,p[1]=bA,p[2]=se,p[3]=QA,H.clearBufferiv(H.COLOR,0,p))}else rA|=H.COLOR_BUFFER_BIT}$&&(rA|=H.DEPTH_BUFFER_BIT),oA&&(rA|=H.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),H.clear(rA)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){e.removeEventListener("webglcontextlost",E,!1),e.removeEventListener("webglcontextrestored",Q,!1),e.removeEventListener("webglcontextcreationerror",Z,!1),fA.dispose(),wA.dispose(),yA.dispose(),gA.dispose(),R.dispose(),iA.dispose(),DA.dispose(),SA.dispose(),eA.dispose(),FA.dispose(),FA.removeEventListener("sessionstart",NA),FA.removeEventListener("sessionend",ie),he.stop()};function E(z){z.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),w=!0}function Q(){console.log("THREE.WebGLRenderer: Context Restored."),w=!1;const z=mA.autoReset,$=xA.enabled,oA=xA.autoUpdate,rA=xA.needsUpdate,sA=xA.type;XA(),mA.autoReset=z,xA.enabled=$,xA.autoUpdate=oA,xA.needsUpdate=rA,xA.type=sA}function Z(z){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",z.statusMessage)}function hA(z){const $=z.target;$.removeEventListener("dispose",hA),MA($)}function MA(z){jA(z),yA.remove(z)}function jA(z){const $=yA.get(z).programs;$!==void 0&&($.forEach(function(oA){eA.releaseProgram(oA)}),z.isShaderMaterial&&eA.releaseShaderCache(z))}this.renderBufferDirect=function(z,$,oA,rA,sA,BA){$===null&&($=tA);const UA=sA.isMesh&&sA.matrixWorld.determinant()<0,WA=St(z,$,oA,rA,sA);vA.setMaterial(rA,UA);let QA=oA.index,te=1;if(rA.wireframe===!0){if(QA=F.getWireframeAttribute(oA),QA===void 0)return;te=2}const bA=oA.drawRange,se=oA.attributes.position;let Ze=bA.start*te,Ye=(bA.start+bA.count)*te;BA!==null&&(Ze=Math.max(Ze,BA.start*te),Ye=Math.min(Ye,(BA.start+BA.count)*te)),QA!==null?(Ze=Math.max(Ze,0),Ye=Math.min(Ye,QA.count)):se!=null&&(Ze=Math.max(Ze,0),Ye=Math.min(Ye,se.count));const xt=Ye-Ze;if(xt<0||xt===1/0)return;DA.setup(sA,rA,WA,oA,QA);let qi,Ce=HA;if(QA!==null&&(qi=L.get(QA),Ce=qA,Ce.setIndex(qi)),sA.isMesh)rA.wireframe===!0?(vA.setLineWidth(rA.wireframeLinewidth*dA()),Ce.setMode(H.LINES)):Ce.setMode(H.TRIANGLES);else if(sA.isLine){let Ae=rA.linewidth;Ae===void 0&&(Ae=1),vA.setLineWidth(Ae*dA()),sA.isLineSegments?Ce.setMode(H.LINES):sA.isLineLoop?Ce.setMode(H.LINE_LOOP):Ce.setMode(H.LINE_STRIP)}else sA.isPoints?Ce.setMode(H.POINTS):sA.isSprite&&Ce.setMode(H.TRIANGLES);if(sA.isBatchedMesh)sA._multiDrawInstances!==null?Ce.renderMultiDrawInstances(sA._multiDrawStarts,sA._multiDrawCounts,sA._multiDrawCount,sA._multiDrawInstances):Ce.renderMultiDraw(sA._multiDrawStarts,sA._multiDrawCounts,sA._multiDrawCount);else if(sA.isInstancedMesh)Ce.renderInstances(Ze,xt,sA.count);else if(oA.isInstancedBufferGeometry){const Ae=oA._maxInstanceCount!==void 0?oA._maxInstanceCount:1/0,Pn=Math.min(oA.instanceCount,Ae);Ce.renderInstances(Ze,xt,Pn)}else Ce.render(Ze,xt)};function OA(z,$,oA){z.transparent===!0&&z.side===ot&&z.forceSinglePass===!1?(z.side=dt,z.needsUpdate=!0,fi(z,$,oA),z.side=Bt,z.needsUpdate=!0,fi(z,$,oA),z.side=ot):fi(z,$,oA)}this.compile=function(z,$,oA=null){oA===null&&(oA=z),d=wA.get(oA),d.init($),y.push(d),oA.traverseVisible(function(sA){sA.isLight&&sA.layers.test($.layers)&&(d.pushLight(sA),sA.castShadow&&d.pushShadow(sA))}),z!==oA&&z.traverseVisible(function(sA){sA.isLight&&sA.layers.test($.layers)&&(d.pushLight(sA),sA.castShadow&&d.pushShadow(sA))}),d.setupLights(v._useLegacyLights);const rA=new Set;return z.traverse(function(sA){const BA=sA.material;if(BA)if(Array.isArray(BA))for(let UA=0;UA<BA.length;UA++){const WA=BA[UA];OA(WA,oA,sA),rA.add(WA)}else OA(BA,oA,sA),rA.add(BA)}),y.pop(),d=null,rA},this.compileAsync=function(z,$,oA=null){const rA=this.compile(z,$,oA);return new Promise(sA=>{function BA(){if(rA.forEach(function(UA){yA.get(UA).currentProgram.isReady()&&rA.delete(UA)}),rA.size===0){sA(z);return}setTimeout(BA,10)}AA.get("KHR_parallel_shader_compile")!==null?BA():setTimeout(BA,10)})};let re=null;function ae(z){re&&re(z)}function NA(){he.stop()}function ie(){he.start()}const he=new Pw;he.setAnimationLoop(ae),typeof self<"u"&&he.setContext(self),this.setAnimationLoop=function(z){re=z,FA.setAnimationLoop(z),z===null?he.stop():he.start()},FA.addEventListener("sessionstart",NA),FA.addEventListener("sessionend",ie),this.render=function(z,$){if($!==void 0&&$.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(w===!0)return;z.matrixWorldAutoUpdate===!0&&z.updateMatrixWorld(),$.parent===null&&$.matrixWorldAutoUpdate===!0&&$.updateMatrixWorld(),FA.enabled===!0&&FA.isPresenting===!0&&(FA.cameraAutoUpdate===!0&&FA.updateCamera($),$=FA.getCamera()),z.isScene===!0&&z.onBeforeRender(v,z,$,x),d=wA.get(z,y.length),d.init($),y.push(d),V.multiplyMatrices($.projectionMatrix,$.matrixWorldInverse),X.setFromProjectionMatrix(V),G=this.localClippingEnabled,j=cA.init(this.clippingPlanes,G),m=fA.get(z,g.length),m.init(),g.push(m),ke(z,$,0,v.sortObjects),m.finish(),v.sortObjects===!0&&m.sort(K,U);const oA=FA.enabled===!1||FA.isPresenting===!1||FA.hasDepthSensing()===!1;oA&&lA.addToRenderList(m,z),this.info.render.frame++,j===!0&&cA.beginShadows();const rA=d.state.shadowsArray;xA.render(rA,z,$),j===!0&&cA.endShadows(),this.info.autoReset===!0&&this.info.reset();const sA=m.opaque,BA=m.transmissive;if(d.setupLights(v._useLegacyLights),$.isArrayCamera){const UA=$.cameras;if(BA.length>0)for(let WA=0,QA=UA.length;WA<QA;WA++){const te=UA[WA];st(sA,BA,z,te)}oA&&lA.render(z);for(let WA=0,QA=UA.length;WA<QA;WA++){const te=UA[WA];be(m,z,te,te.viewport)}}else BA.length>0&&st(sA,BA,z,$),oA&&lA.render(z),be(m,z,$);x!==null&&(_A.updateMultisampleRenderTarget(x),_A.updateRenderTargetMipmap(x)),z.isScene===!0&&z.onAfterRender(v,z,$),DA.resetDefaultState(),S=-1,b=null,y.pop(),y.length>0?(d=y[y.length-1],j===!0&&cA.setGlobalState(v.clippingPlanes,d.state.camera)):d=null,g.pop(),g.length>0?m=g[g.length-1]:m=null};function ke(z,$,oA,rA){if(z.visible===!1)return;if(z.layers.test($.layers)){if(z.isGroup)oA=z.renderOrder;else if(z.isLOD)z.autoUpdate===!0&&z.update($);else if(z.isLight)d.pushLight(z),z.castShadow&&d.pushShadow(z);else if(z.isSprite){if(!z.frustumCulled||X.intersectsSprite(z)){rA&&J.setFromMatrixPosition(z.matrixWorld).applyMatrix4(V);const UA=iA.update(z),WA=z.material;WA.visible&&m.push(z,UA,WA,oA,J.z,null)}}else if((z.isMesh||z.isLine||z.isPoints)&&(!z.frustumCulled||X.intersectsObject(z))){const UA=iA.update(z),WA=z.material;if(rA&&(z.boundingSphere!==void 0?(z.boundingSphere===null&&z.computeBoundingSphere(),J.copy(z.boundingSphere.center)):(UA.boundingSphere===null&&UA.computeBoundingSphere(),J.copy(UA.boundingSphere.center)),J.applyMatrix4(z.matrixWorld).applyMatrix4(V)),Array.isArray(WA)){const QA=UA.groups;for(let te=0,bA=QA.length;te<bA;te++){const se=QA[te],Ze=WA[se.materialIndex];Ze&&Ze.visible&&m.push(z,UA,Ze,oA,J.z,se)}}else WA.visible&&m.push(z,UA,WA,oA,J.z,null)}}const BA=z.children;for(let UA=0,WA=BA.length;UA<WA;UA++)ke(BA[UA],$,oA,rA)}function be(z,$,oA,rA){const sA=z.opaque,BA=z.transmissive,UA=z.transparent;d.setupLightsView(oA),j===!0&&cA.setGlobalState(v.clippingPlanes,oA),rA&&vA.viewport(I.copy(rA)),sA.length>0&&Ct(sA,$,oA),BA.length>0&&Ct(BA,$,oA),UA.length>0&&Ct(UA,$,oA),vA.buffers.depth.setTest(!0),vA.buffers.depth.setMask(!0),vA.buffers.color.setMask(!0),vA.setPolygonOffset(!1)}function st(z,$,oA,rA){if((oA.isScene===!0?oA.overrideMaterial:null)!==null)return;d.state.transmissionRenderTarget[rA.id]===void 0&&(d.state.transmissionRenderTarget[rA.id]=new Ve(1,1,{generateMipmaps:!0,type:AA.has("EXT_color_buffer_half_float")||AA.has("EXT_color_buffer_float")?Oe:Ri,minFilter:zi,samples:4,stencilBuffer:r,resolveDepthBuffer:!1,resolveStencilBuffer:!1}));const BA=d.state.transmissionRenderTarget[rA.id],UA=rA.viewport||I;BA.setSize(UA.z,UA.w);const WA=v.getRenderTarget();v.setRenderTarget(BA),v.getClearColor(M),T=v.getClearAlpha(),T<1&&v.setClearColor(16777215,.5),v.clear();const QA=v.toneMapping;v.toneMapping=Ln;const te=rA.viewport;if(rA.viewport!==void 0&&(rA.viewport=void 0),d.setupLightsView(rA),j===!0&&cA.setGlobalState(v.clippingPlanes,rA),Ct(z,oA,rA),_A.updateMultisampleRenderTarget(BA),_A.updateRenderTargetMipmap(BA),AA.has("WEBGL_multisampled_render_to_texture")===!1){let bA=!1;for(let se=0,Ze=$.length;se<Ze;se++){const Ye=$[se],xt=Ye.object,qi=Ye.geometry,Ce=Ye.material,Ae=Ye.group;if(Ce.side===ot&&xt.layers.test(rA.layers)){const Pn=Ce.side;Ce.side=dt,Ce.needsUpdate=!0,Yt(xt,oA,rA,qi,Ce,Ae),Ce.side=Pn,Ce.needsUpdate=!0,bA=!0}}bA===!0&&(_A.updateMultisampleRenderTarget(BA),_A.updateRenderTargetMipmap(BA))}v.setRenderTarget(WA),v.setClearColor(M,T),te!==void 0&&(rA.viewport=te),v.toneMapping=QA}function Ct(z,$,oA){const rA=$.isScene===!0?$.overrideMaterial:null;for(let sA=0,BA=z.length;sA<BA;sA++){const UA=z[sA],WA=UA.object,QA=UA.geometry,te=rA===null?UA.material:rA,bA=UA.group;WA.layers.test(oA.layers)&&Yt(WA,$,oA,QA,te,bA)}}function Yt(z,$,oA,rA,sA,BA){z.onBeforeRender(v,$,oA,rA,sA,BA),z.modelViewMatrix.multiplyMatrices(oA.matrixWorldInverse,z.matrixWorld),z.normalMatrix.getNormalMatrix(z.modelViewMatrix),sA.onBeforeRender(v,$,oA,rA,z,BA),sA.transparent===!0&&sA.side===ot&&sA.forceSinglePass===!1?(sA.side=dt,sA.needsUpdate=!0,v.renderBufferDirect(oA,$,rA,sA,z,BA),sA.side=Bt,sA.needsUpdate=!0,v.renderBufferDirect(oA,$,rA,sA,z,BA),sA.side=ot):v.renderBufferDirect(oA,$,rA,sA,z,BA),z.onAfterRender(v,$,oA,rA,sA,BA)}function fi(z,$,oA){$.isScene!==!0&&($=tA);const rA=yA.get(z),sA=d.state.lights,BA=d.state.shadowsArray,UA=sA.state.version,WA=eA.getParameters(z,sA.state,BA,$,oA),QA=eA.getProgramCacheKey(WA);let te=rA.programs;rA.environment=z.isMeshStandardMaterial?$.environment:null,rA.fog=$.fog,rA.envMap=(z.isMeshStandardMaterial?R:gA).get(z.envMap||rA.environment),rA.envMapRotation=rA.environment!==null&&z.envMap===null?$.environmentRotation:z.envMapRotation,te===void 0&&(z.addEventListener("dispose",hA),te=new Map,rA.programs=te);let bA=te.get(QA);if(bA!==void 0){if(rA.currentProgram===bA&&rA.lightsStateVersion===UA)return Oi(z,WA),bA}else WA.uniforms=eA.getUniforms(z),z.onBuild(oA,WA,v),z.onBeforeCompile(WA,v),bA=eA.acquireProgram(WA,QA),te.set(QA,bA),rA.uniforms=WA.uniforms;const se=rA.uniforms;return(!z.isShaderMaterial&&!z.isRawShaderMaterial||z.clipping===!0)&&(se.clippingPlanes=cA.uniform),Oi(z,WA),rA.needsLights=wd(z),rA.lightsStateVersion=UA,rA.needsLights&&(se.ambientLightColor.value=sA.state.ambient,se.lightProbe.value=sA.state.probe,se.directionalLights.value=sA.state.directional,se.directionalLightShadows.value=sA.state.directionalShadow,se.spotLights.value=sA.state.spot,se.spotLightShadows.value=sA.state.spotShadow,se.rectAreaLights.value=sA.state.rectArea,se.ltc_1.value=sA.state.rectAreaLTC1,se.ltc_2.value=sA.state.rectAreaLTC2,se.pointLights.value=sA.state.point,se.pointLightShadows.value=sA.state.pointShadow,se.hemisphereLights.value=sA.state.hemi,se.directionalShadowMap.value=sA.state.directionalShadowMap,se.directionalShadowMatrix.value=sA.state.directionalShadowMatrix,se.spotShadowMap.value=sA.state.spotShadowMap,se.spotLightMatrix.value=sA.state.spotLightMatrix,se.spotLightMap.value=sA.state.spotLightMap,se.pointShadowMap.value=sA.state.pointShadowMap,se.pointShadowMatrix.value=sA.state.pointShadowMatrix),rA.currentProgram=bA,rA.uniformsList=null,bA}function Mn(z){if(z.uniformsList===null){const $=z.currentProgram.getUniforms();z.uniformsList=Lh.seqWithValue($.seq,z.uniforms)}return z.uniformsList}function Oi(z,$){const oA=yA.get(z);oA.outputColorSpace=$.outputColorSpace,oA.batching=$.batching,oA.instancing=$.instancing,oA.instancingColor=$.instancingColor,oA.instancingMorph=$.instancingMorph,oA.skinning=$.skinning,oA.morphTargets=$.morphTargets,oA.morphNormals=$.morphNormals,oA.morphColors=$.morphColors,oA.morphTargetsCount=$.morphTargetsCount,oA.numClippingPlanes=$.numClippingPlanes,oA.numIntersection=$.numClipIntersection,oA.vertexAlphas=$.vertexAlphas,oA.vertexTangents=$.vertexTangents,oA.toneMapping=$.toneMapping}function St(z,$,oA,rA,sA){$.isScene!==!0&&($=tA),_A.resetTextureUnits();const BA=$.fog,UA=rA.isMeshStandardMaterial?$.environment:null,WA=x===null?v.outputColorSpace:x.isXRRenderTarget===!0?x.texture.colorSpace:at,QA=(rA.isMeshStandardMaterial?R:gA).get(rA.envMap||UA),te=rA.vertexColors===!0&&!!oA.attributes.color&&oA.attributes.color.itemSize===4,bA=!!oA.attributes.tangent&&(!!rA.normalMap||rA.anisotropy>0),se=!!oA.morphAttributes.position,Ze=!!oA.morphAttributes.normal,Ye=!!oA.morphAttributes.color;let xt=Ln;rA.toneMapped&&(x===null||x.isXRRenderTarget===!0)&&(xt=v.toneMapping);const qi=oA.morphAttributes.position||oA.morphAttributes.normal||oA.morphAttributes.color,Ce=qi!==void 0?qi.length:0,Ae=yA.get(rA),Pn=d.state.lights;if(j===!0&&(G===!0||z!==b)){const Nt=z===b&&rA.id===S;cA.setState(rA,z,Nt)}let Ee=!1;rA.version===Ae.__version?(Ae.needsLights&&Ae.lightsStateVersion!==Pn.state.version||Ae.outputColorSpace!==WA||sA.isBatchedMesh&&Ae.batching===!1||!sA.isBatchedMesh&&Ae.batching===!0||sA.isInstancedMesh&&Ae.instancing===!1||!sA.isInstancedMesh&&Ae.instancing===!0||sA.isSkinnedMesh&&Ae.skinning===!1||!sA.isSkinnedMesh&&Ae.skinning===!0||sA.isInstancedMesh&&Ae.instancingColor===!0&&sA.instanceColor===null||sA.isInstancedMesh&&Ae.instancingColor===!1&&sA.instanceColor!==null||sA.isInstancedMesh&&Ae.instancingMorph===!0&&sA.morphTexture===null||sA.isInstancedMesh&&Ae.instancingMorph===!1&&sA.morphTexture!==null||Ae.envMap!==QA||rA.fog===!0&&Ae.fog!==BA||Ae.numClippingPlanes!==void 0&&(Ae.numClippingPlanes!==cA.numPlanes||Ae.numIntersection!==cA.numIntersection)||Ae.vertexAlphas!==te||Ae.vertexTangents!==bA||Ae.morphTargets!==se||Ae.morphNormals!==Ze||Ae.morphColors!==Ye||Ae.toneMapping!==xt||Ae.morphTargetsCount!==Ce)&&(Ee=!0):(Ee=!0,Ae.__version=rA.version);let Ni=Ae.currentProgram;Ee===!0&&(Ni=fi(rA,$,sA));let Bc=!1,ar=!1,Al=!1;const Xe=Ni.getUniforms(),Bi=Ae.uniforms;if(vA.useProgram(Ni.program)&&(Bc=!0,ar=!0,Al=!0),rA.id!==S&&(S=rA.id,ar=!0),Bc||b!==z){Xe.setValue(H,"projectionMatrix",z.projectionMatrix),Xe.setValue(H,"viewMatrix",z.matrixWorldInverse);const Nt=Xe.map.cameraPosition;Nt!==void 0&&Nt.setValue(H,J.setFromMatrixPosition(z.matrixWorld)),TA.logarithmicDepthBuffer&&Xe.setValue(H,"logDepthBufFC",2/(Math.log(z.far+1)/Math.LN2)),(rA.isMeshPhongMaterial||rA.isMeshToonMaterial||rA.isMeshLambertMaterial||rA.isMeshBasicMaterial||rA.isMeshStandardMaterial||rA.isShaderMaterial)&&Xe.setValue(H,"isOrthographic",z.isOrthographicCamera===!0),b!==z&&(b=z,ar=!0,Al=!0)}if(sA.isSkinnedMesh){Xe.setOptional(H,sA,"bindMatrix"),Xe.setOptional(H,sA,"bindMatrixInverse");const Nt=sA.skeleton;Nt&&(Nt.boneTexture===null&&Nt.computeBoneTexture(),Xe.setValue(H,"boneTexture",Nt.boneTexture,_A))}sA.isBatchedMesh&&(Xe.setOptional(H,sA,"batchingTexture"),Xe.setValue(H,"batchingTexture",sA._matricesTexture,_A));const Tn=oA.morphAttributes;if((Tn.position!==void 0||Tn.normal!==void 0||Tn.color!==void 0)&&IA.update(sA,oA,Ni),(ar||Ae.receiveShadow!==sA.receiveShadow)&&(Ae.receiveShadow=sA.receiveShadow,Xe.setValue(H,"receiveShadow",sA.receiveShadow)),rA.isMeshGouraudMaterial&&rA.envMap!==null&&(Bi.envMap.value=QA,Bi.flipEnvMap.value=QA.isCubeTexture&&QA.isRenderTargetTexture===!1?-1:1),rA.isMeshStandardMaterial&&rA.envMap===null&&$.environment!==null&&(Bi.envMapIntensity.value=$.environmentIntensity),ar&&(Xe.setValue(H,"toneMappingExposure",v.toneMappingExposure),Ae.needsLights&&or(Bi,Al),BA&&rA.fog===!0&&nA.refreshFogUniforms(Bi,BA),nA.refreshMaterialUniforms(Bi,rA,W,B,d.state.transmissionRenderTarget[z.id]),Lh.upload(H,Mn(Ae),Bi,_A)),rA.isShaderMaterial&&rA.uniformsNeedUpdate===!0&&(Lh.upload(H,Mn(Ae),Bi,_A),rA.uniformsNeedUpdate=!1),rA.isSpriteMaterial&&Xe.setValue(H,"center",sA.center),Xe.setValue(H,"modelViewMatrix",sA.modelViewMatrix),Xe.setValue(H,"normalMatrix",sA.normalMatrix),Xe.setValue(H,"modelMatrix",sA.matrixWorld),rA.isShaderMaterial||rA.isRawShaderMaterial){const Nt=rA.uniformsGroups;for(let Xs=0,zc=Nt.length;Xs<zc;Xs++){const di=Nt[Xs];SA.update(di,Ni),SA.bind(di,Ni)}}return Ni}function or(z,$){z.ambientLightColor.needsUpdate=$,z.lightProbe.needsUpdate=$,z.directionalLights.needsUpdate=$,z.directionalLightShadows.needsUpdate=$,z.pointLights.needsUpdate=$,z.pointLightShadows.needsUpdate=$,z.spotLights.needsUpdate=$,z.spotLightShadows.needsUpdate=$,z.rectAreaLights.needsUpdate=$,z.hemisphereLights.needsUpdate=$}function wd(z){return z.isMeshLambertMaterial||z.isMeshToonMaterial||z.isMeshPhongMaterial||z.isMeshStandardMaterial||z.isShadowMaterial||z.isShaderMaterial&&z.lights===!0}this.getActiveCubeFace=function(){return C},this.getActiveMipmapLevel=function(){return _},this.getRenderTarget=function(){return x},this.setRenderTargetTextures=function(z,$,oA){yA.get(z.texture).__webglTexture=$,yA.get(z.depthTexture).__webglTexture=oA;const rA=yA.get(z);rA.__hasExternalTextures=!0,rA.__autoAllocateDepthBuffer=oA===void 0,rA.__autoAllocateDepthBuffer||AA.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),rA.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(z,$){const oA=yA.get(z);oA.__webglFramebuffer=$,oA.__useDefaultFramebuffer=$===void 0},this.setRenderTarget=function(z,$=0,oA=0){x=z,C=$,_=oA;let rA=!0,sA=null,BA=!1,UA=!1;if(z){const QA=yA.get(z);QA.__useDefaultFramebuffer!==void 0?(vA.bindFramebuffer(H.FRAMEBUFFER,null),rA=!1):QA.__webglFramebuffer===void 0?_A.setupRenderTarget(z):QA.__hasExternalTextures&&_A.rebindTextures(z,yA.get(z.texture).__webglTexture,yA.get(z.depthTexture).__webglTexture);const te=z.texture;(te.isData3DTexture||te.isDataArrayTexture||te.isCompressedArrayTexture)&&(UA=!0);const bA=yA.get(z).__webglFramebuffer;z.isWebGLCubeRenderTarget?(Array.isArray(bA[$])?sA=bA[$][oA]:sA=bA[$],BA=!0):z.samples>0&&_A.useMultisampledRTT(z)===!1?sA=yA.get(z).__webglMultisampledFramebuffer:Array.isArray(bA)?sA=bA[oA]:sA=bA,I.copy(z.viewport),D.copy(z.scissor),P=z.scissorTest}else I.copy(k).multiplyScalar(W).floor(),D.copy(N).multiplyScalar(W).floor(),P=Y;if(vA.bindFramebuffer(H.FRAMEBUFFER,sA)&&rA&&vA.drawBuffers(z,sA),vA.viewport(I),vA.scissor(D),vA.setScissorTest(P),BA){const QA=yA.get(z.texture);H.framebufferTexture2D(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,H.TEXTURE_CUBE_MAP_POSITIVE_X+$,QA.__webglTexture,oA)}else if(UA){const QA=yA.get(z.texture),te=$||0;H.framebufferTextureLayer(H.FRAMEBUFFER,H.COLOR_ATTACHMENT0,QA.__webglTexture,oA||0,te)}S=-1},this.readRenderTargetPixels=function(z,$,oA,rA,sA,BA,UA){if(!(z&&z.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let WA=yA.get(z).__webglFramebuffer;if(z.isWebGLCubeRenderTarget&&UA!==void 0&&(WA=WA[UA]),WA){vA.bindFramebuffer(H.FRAMEBUFFER,WA);try{const QA=z.texture,te=QA.format,bA=QA.type;if(!TA.textureFormatReadable(te)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!TA.textureTypeReadable(bA)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}$>=0&&$<=z.width-rA&&oA>=0&&oA<=z.height-sA&&H.readPixels($,oA,rA,sA,CA.convert(te),CA.convert(bA),BA)}finally{const QA=x!==null?yA.get(x).__webglFramebuffer:null;vA.bindFramebuffer(H.FRAMEBUFFER,QA)}}},this.copyFramebufferToTexture=function(z,$,oA=0){const rA=Math.pow(2,-oA),sA=Math.floor($.image.width*rA),BA=Math.floor($.image.height*rA);_A.setTexture2D($,0),H.copyTexSubImage2D(H.TEXTURE_2D,oA,0,0,z.x,z.y,sA,BA),vA.unbindTexture()},this.copyTextureToTexture=function(z,$,oA,rA=0){const sA=$.image.width,BA=$.image.height,UA=CA.convert(oA.format),WA=CA.convert(oA.type);_A.setTexture2D(oA,0),H.pixelStorei(H.UNPACK_FLIP_Y_WEBGL,oA.flipY),H.pixelStorei(H.UNPACK_PREMULTIPLY_ALPHA_WEBGL,oA.premultiplyAlpha),H.pixelStorei(H.UNPACK_ALIGNMENT,oA.unpackAlignment),$.isDataTexture?H.texSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,sA,BA,UA,WA,$.image.data):$.isCompressedTexture?H.compressedTexSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,$.mipmaps[0].width,$.mipmaps[0].height,UA,$.mipmaps[0].data):H.texSubImage2D(H.TEXTURE_2D,rA,z.x,z.y,UA,WA,$.image),rA===0&&oA.generateMipmaps&&H.generateMipmap(H.TEXTURE_2D),vA.unbindTexture()},this.copyTextureToTexture3D=function(z,$,oA,rA,sA=0){const BA=z.max.x-z.min.x,UA=z.max.y-z.min.y,WA=z.max.z-z.min.z,QA=CA.convert(rA.format),te=CA.convert(rA.type);let bA;if(rA.isData3DTexture)_A.setTexture3D(rA,0),bA=H.TEXTURE_3D;else if(rA.isDataArrayTexture||rA.isCompressedArrayTexture)_A.setTexture2DArray(rA,0),bA=H.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}H.pixelStorei(H.UNPACK_FLIP_Y_WEBGL,rA.flipY),H.pixelStorei(H.UNPACK_PREMULTIPLY_ALPHA_WEBGL,rA.premultiplyAlpha),H.pixelStorei(H.UNPACK_ALIGNMENT,rA.unpackAlignment);const se=H.getParameter(H.UNPACK_ROW_LENGTH),Ze=H.getParameter(H.UNPACK_IMAGE_HEIGHT),Ye=H.getParameter(H.UNPACK_SKIP_PIXELS),xt=H.getParameter(H.UNPACK_SKIP_ROWS),qi=H.getParameter(H.UNPACK_SKIP_IMAGES),Ce=oA.isCompressedTexture?oA.mipmaps[sA]:oA.image;H.pixelStorei(H.UNPACK_ROW_LENGTH,Ce.width),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,Ce.height),H.pixelStorei(H.UNPACK_SKIP_PIXELS,z.min.x),H.pixelStorei(H.UNPACK_SKIP_ROWS,z.min.y),H.pixelStorei(H.UNPACK_SKIP_IMAGES,z.min.z),oA.isDataTexture||oA.isData3DTexture?H.texSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,te,Ce.data):rA.isCompressedArrayTexture?H.compressedTexSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,Ce.data):H.texSubImage3D(bA,sA,$.x,$.y,$.z,BA,UA,WA,QA,te,Ce),H.pixelStorei(H.UNPACK_ROW_LENGTH,se),H.pixelStorei(H.UNPACK_IMAGE_HEIGHT,Ze),H.pixelStorei(H.UNPACK_SKIP_PIXELS,Ye),H.pixelStorei(H.UNPACK_SKIP_ROWS,xt),H.pixelStorei(H.UNPACK_SKIP_IMAGES,qi),sA===0&&rA.generateMipmaps&&H.generateMipmap(bA),vA.unbindTexture()},this.initTexture=function(z){z.isCubeTexture?_A.setTextureCube(z,0):z.isData3DTexture?_A.setTexture3D(z,0):z.isDataArrayTexture||z.isCompressedArrayTexture?_A.setTexture2DArray(z,0):_A.setTexture2D(z,0),vA.unbindTexture()},this.resetState=function(){C=0,_=0,x=null,vA.reset(),DA.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return qn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(A){this._outputColorSpace=A;const e=this.getContext();e.drawingBufferColorSpace=A===Qd?"display-p3":"srgb",e.unpackColorSpace=Se.workingColorSpace===th?"display-p3":"srgb"}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(A){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=A}}class Eo extends Ie{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new on,this.environmentIntensity=1,this.environmentRotation=new on,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,e){return super.copy(A,e),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,this.backgroundRotation.copy(A.backgroundRotation),this.environmentIntensity=A.environmentIntensity,this.environmentRotation.copy(A.environmentRotation),A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const e=super.toJSON(A);return this.fog!==null&&(e.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(e.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(e.object.backgroundIntensity=this.backgroundIntensity),e.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(e.object.environmentIntensity=this.environmentIntensity),e.object.environmentRotation=this.environmentRotation.toArray(),e}}class kT{constructor(A,e){this.isInterleavedBuffer=!0,this.array=A,this.stride=e,this.count=A!==void 0?A.length/e:0,this.usage=Vd,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=mi()}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return iw("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,e){this.updateRanges.push({start:A,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.array=new A.array.constructor(A.array),this.count=A.count,this.stride=A.stride,this.usage=A.usage,this}copyAt(A,e,t){A*=this.stride,t*=e.stride;for(let i=0,r=this.stride;i<r;i++)this.array[A+i]=e.array[t+i];return this}set(A,e=0){return this.array.set(A,e),this}clone(A){A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=mi()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const e=new this.array.constructor(A.arrayBuffers[this.array.buffer._uuid]),t=new this.constructor(e,this.stride);return t.setUsage(this.usage),t}onUpload(A){return this.onUploadCallback=A,this}toJSON(A){return A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=mi()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const kt=new O;class Dp{constructor(A,e,t,i=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=A,this.itemSize=e,this.offset=t,this.normalized=i}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(A){this.data.needsUpdate=A}applyMatrix4(A){for(let e=0,t=this.data.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.applyMatrix4(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}applyNormalMatrix(A){for(let e=0,t=this.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.applyNormalMatrix(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}transformDirection(A){for(let e=0,t=this.count;e<t;e++)kt.fromBufferAttribute(this,e),kt.transformDirection(A),this.setXYZ(e,kt.x,kt.y,kt.z);return this}getComponent(A,e){let t=this.array[A*this.data.stride+this.offset+e];return this.normalized&&(t=ji(t,this.array)),t}setComponent(A,e,t){return this.normalized&&(t=Te(t,this.array)),this.data.array[A*this.data.stride+this.offset+e]=t,this}setX(A,e){return this.normalized&&(e=Te(e,this.array)),this.data.array[A*this.data.stride+this.offset]=e,this}setY(A,e){return this.normalized&&(e=Te(e,this.array)),this.data.array[A*this.data.stride+this.offset+1]=e,this}setZ(A,e){return this.normalized&&(e=Te(e,this.array)),this.data.array[A*this.data.stride+this.offset+2]=e,this}setW(A,e){return this.normalized&&(e=Te(e,this.array)),this.data.array[A*this.data.stride+this.offset+3]=e,this}getX(A){let e=this.data.array[A*this.data.stride+this.offset];return this.normalized&&(e=ji(e,this.array)),e}getY(A){let e=this.data.array[A*this.data.stride+this.offset+1];return this.normalized&&(e=ji(e,this.array)),e}getZ(A){let e=this.data.array[A*this.data.stride+this.offset+2];return this.normalized&&(e=ji(e,this.array)),e}getW(A){let e=this.data.array[A*this.data.stride+this.offset+3];return this.normalized&&(e=ji(e,this.array)),e}setXY(A,e,t){return A=A*this.data.stride+this.offset,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this}setXYZ(A,e,t,i){return A=A*this.data.stride+this.offset,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array),i=Te(i,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this.data.array[A+2]=i,this}setXYZW(A,e,t,i,r){return A=A*this.data.stride+this.offset,this.normalized&&(e=Te(e,this.array),t=Te(t,this.array),i=Te(i,this.array),r=Te(r,this.array)),this.data.array[A+0]=e,this.data.array[A+1]=t,this.data.array[A+2]=i,this.data.array[A+3]=r,this}clone(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)e.push(this.data.array[i+r])}return new ce(new this.array.constructor(e),this.itemSize,this.normalized)}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.clone(A)),new Dp(A.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const e=[];for(let t=0;t<this.count;t++){const i=t*this.data.stride+this.offset;for(let r=0;r<this.itemSize;r++)e.push(this.data.array[i+r])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:e,normalized:this.normalized}}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.toJSON(A)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}const r1=new O,s1=new ve,o1=new ve,jT=new O,a1=new zA,Oh=new O,Ep=new Ai,l1=new zA,Lp=new os;class KT extends Pe{constructor(A,e){super(A,e),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=py,this.bindMatrix=new zA,this.bindMatrixInverse=new zA,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const A=this.geometry;this.boundingBox===null&&(this.boundingBox=new ye),this.boundingBox.makeEmpty();const e=A.getAttribute("position");for(let t=0;t<e.count;t++)this.getVertexPosition(t,Oh),this.boundingBox.expandByPoint(Oh)}computeBoundingSphere(){const A=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new Ai),this.boundingSphere.makeEmpty();const e=A.getAttribute("position");for(let t=0;t<e.count;t++)this.getVertexPosition(t,Oh),this.boundingSphere.expandByPoint(Oh)}copy(A,e){return super.copy(A,e),this.bindMode=A.bindMode,this.bindMatrix.copy(A.bindMatrix),this.bindMatrixInverse.copy(A.bindMatrixInverse),this.skeleton=A.skeleton,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}raycast(A,e){const t=this.material,i=this.matrixWorld;t!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),Ep.copy(this.boundingSphere),Ep.applyMatrix4(i),A.ray.intersectsSphere(Ep)!==!1&&(l1.copy(i).invert(),Lp.copy(A.ray).applyMatrix4(l1),!(this.boundingBox!==null&&Lp.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(A,e,Lp)))}getVertexPosition(A,e){return super.getVertexPosition(A,e),this.applyBoneTransform(A,e),e}bind(A,e){this.skeleton=A,e===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),e=this.matrixWorld),this.bindMatrix.copy(e),this.bindMatrixInverse.copy(e).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const A=new ve,e=this.geometry.attributes.skinWeight;for(let t=0,i=e.count;t<i;t++){A.fromBufferAttribute(e,t);const r=1/A.manhattanLength();r!==1/0?A.multiplyScalar(r):A.set(1,0,0,0),e.setXYZW(t,A.x,A.y,A.z,A.w)}}updateMatrixWorld(A){super.updateMatrixWorld(A),this.bindMode===py?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===D3?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(A,e){const t=this.skeleton,i=this.geometry;s1.fromBufferAttribute(i.attributes.skinIndex,A),o1.fromBufferAttribute(i.attributes.skinWeight,A),r1.copy(e).applyMatrix4(this.bindMatrix),e.set(0,0,0);for(let r=0;r<4;r++){const s=o1.getComponent(r);if(s!==0){const o=s1.getComponent(r);a1.multiplyMatrices(t.bones[o].matrixWorld,t.boneInverses[o]),e.addScaledVector(jT.copy(r1).applyMatrix4(a1),s)}}return e.applyMatrix4(this.bindMatrixInverse)}}class c1 extends Ie{constructor(){super(),this.isBone=!0,this.type="Bone"}}class jt extends lt{constructor(A=null,e=1,t=1,i,r,s,o,a,l=fe,u=fe,c,h){super(null,s,o,a,l,u,i,r,c,h),this.isDataTexture=!0,this.image={data:A,width:e,height:t},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const h1=new zA,FT=new zA;class Op{constructor(A=[],e=[]){this.uuid=mi(),this.bones=A.slice(0),this.boneInverses=e,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const A=this.bones,e=this.boneInverses;if(this.boneMatrices=new Float32Array(A.length*16),e.length===0)this.calculateInverses();else if(A.length!==e.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let t=0,i=this.bones.length;t<i;t++)this.boneInverses.push(new zA)}}calculateInverses(){this.boneInverses.length=0;for(let A=0,e=this.bones.length;A<e;A++){const t=new zA;this.bones[A]&&t.copy(this.bones[A].matrixWorld).invert(),this.boneInverses.push(t)}}pose(){for(let A=0,e=this.bones.length;A<e;A++){const t=this.bones[A];t&&t.matrixWorld.copy(this.boneInverses[A]).invert()}for(let A=0,e=this.bones.length;A<e;A++){const t=this.bones[A];t&&(t.parent&&t.parent.isBone?(t.matrix.copy(t.parent.matrixWorld).invert(),t.matrix.multiply(t.matrixWorld)):t.matrix.copy(t.matrixWorld),t.matrix.decompose(t.position,t.quaternion,t.scale))}}update(){const A=this.bones,e=this.boneInverses,t=this.boneMatrices,i=this.boneTexture;for(let r=0,s=A.length;r<s;r++){const o=A[r]?A[r].matrixWorld:FT;h1.multiplyMatrices(o,e[r]),h1.toArray(t,r*16)}i!==null&&(i.needsUpdate=!0)}clone(){return new Op(this.bones,this.boneInverses)}computeBoneTexture(){let A=Math.sqrt(this.bones.length*4);A=Math.ceil(A/4)*4,A=Math.max(A,4);const e=new Float32Array(A*A*4);e.set(this.boneMatrices);const t=new jt(e,A,A,_e,Me);return t.needsUpdate=!0,this.boneMatrices=e,this.boneTexture=t,this}getBoneByName(A){for(let e=0,t=this.bones.length;e<t;e++){const i=this.bones[e];if(i.name===A)return i}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(A,e){this.uuid=A.uuid;for(let t=0,i=A.bones.length;t<i;t++){const r=A.bones[t];let s=e[r];s===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),s=new c1),this.bones.push(s),this.boneInverses.push(new zA().fromArray(A.boneInverses[t]))}return this.init(),this}toJSON(){const A={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};A.uuid=this.uuid;const e=this.bones,t=this.boneInverses;for(let i=0,r=e.length;i<r;i++){const s=e[i];A.bones.push(s.uuid);const o=t[i];A.boneInverses.push(o.toArray())}return A}}class qh extends ce{constructor(A,e,t,i=1){super(A,e,t),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=i}copy(A){return super.copy(A),this.meshPerAttribute=A.meshPerAttribute,this}toJSON(){const A=super.toJSON();return A.meshPerAttribute=this.meshPerAttribute,A.isInstancedBufferAttribute=!0,A}}const Lo=new zA,u1=new zA,Nh=[],f1=new ye,GT=new zA,Cl=new Pe,xl=new Ai;class HT extends Pe{constructor(A,e,t){super(A,e),this.isInstancedMesh=!0,this.instanceMatrix=new qh(new Float32Array(t*16),16),this.instanceColor=null,this.morphTexture=null,this.count=t,this.boundingBox=null,this.boundingSphere=null;for(let i=0;i<t;i++)this.setMatrixAt(i,GT)}computeBoundingBox(){const A=this.geometry,e=this.count;this.boundingBox===null&&(this.boundingBox=new ye),A.boundingBox===null&&A.computeBoundingBox(),this.boundingBox.makeEmpty();for(let t=0;t<e;t++)this.getMatrixAt(t,Lo),f1.copy(A.boundingBox).applyMatrix4(Lo),this.boundingBox.union(f1)}computeBoundingSphere(){const A=this.geometry,e=this.count;this.boundingSphere===null&&(this.boundingSphere=new Ai),A.boundingSphere===null&&A.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let t=0;t<e;t++)this.getMatrixAt(t,Lo),xl.copy(A.boundingSphere).applyMatrix4(Lo),this.boundingSphere.union(xl)}copy(A,e){return super.copy(A,e),this.instanceMatrix.copy(A.instanceMatrix),A.morphTexture!==null&&(this.morphTexture=A.morphTexture.clone()),A.instanceColor!==null&&(this.instanceColor=A.instanceColor.clone()),this.count=A.count,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}getColorAt(A,e){e.fromArray(this.instanceColor.array,A*3)}getMatrixAt(A,e){e.fromArray(this.instanceMatrix.array,A*16)}getMorphAt(A,e){const t=e.morphTargetInfluences,i=this.morphTexture.source.data.data,r=t.length+1,s=A*r+1;for(let o=0;o<t.length;o++)t[o]=i[s+o]}raycast(A,e){const t=this.matrixWorld,i=this.count;if(Cl.geometry=this.geometry,Cl.material=this.material,Cl.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),xl.copy(this.boundingSphere),xl.applyMatrix4(t),A.ray.intersectsSphere(xl)!==!1))for(let r=0;r<i;r++){this.getMatrixAt(r,Lo),u1.multiplyMatrices(t,Lo),Cl.matrixWorld=u1,Cl.raycast(A,Nh);for(let s=0,o=Nh.length;s<o;s++){const a=Nh[s];a.instanceId=r,a.object=this,e.push(a)}Nh.length=0}}setColorAt(A,e){this.instanceColor===null&&(this.instanceColor=new qh(new Float32Array(this.instanceMatrix.count*3),3)),e.toArray(this.instanceColor.array,A*3)}setMatrixAt(A,e){e.toArray(this.instanceMatrix.array,A*16)}setMorphAt(A,e){const t=e.morphTargetInfluences,i=t.length+1;this.morphTexture===null&&(this.morphTexture=new jt(new Float32Array(i*this.count),i,this.count,no,Me));const r=this.morphTexture.source.data.data;let s=0;for(let l=0;l<t.length;l++)s+=t[l];const o=this.geometry.morphTargetsRelative?1:1-s,a=i*A;r[a]=o,r.set(t,a+1)}updateMorphTargets(){}dispose(){return this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null),this}}class Bh extends an{constructor(A){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new KA(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.linewidth=A.linewidth,this.linecap=A.linecap,this.linejoin=A.linejoin,this.fog=A.fog,this}}const zh=new O,Rh=new O,d1=new zA,Il=new os,kh=new Ai,qp=new O,p1=new O;let Np=class extends Ie{constructor(A=new qe,e=new Bh){super(),this.isLine=!0,this.type="Line",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}computeLineDistances(){const A=this.geometry;if(A.index===null){const e=A.attributes.position,t=[0];for(let i=1,r=e.count;i<r;i++)zh.fromBufferAttribute(e,i-1),Rh.fromBufferAttribute(e,i),t[i]=t[i-1],t[i]+=zh.distanceTo(Rh);A.setAttribute("lineDistance",new Dt(t,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(A,e){const t=this.geometry,i=this.matrixWorld,r=A.params.Line.threshold,s=t.drawRange;if(t.boundingSphere===null&&t.computeBoundingSphere(),kh.copy(t.boundingSphere),kh.applyMatrix4(i),kh.radius+=r,A.ray.intersectsSphere(kh)===!1)return;d1.copy(i).invert(),Il.copy(A.ray).applyMatrix4(d1);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=this.isLineSegments?2:1,u=t.index,h=t.attributes.position;if(u!==null){const f=Math.max(0,s.start),p=Math.min(u.count,s.start+s.count);for(let m=f,d=p-1;m<d;m+=l){const g=u.getX(m),y=u.getX(m+1),v=jh(this,A,Il,a,g,y);v&&e.push(v)}if(this.isLineLoop){const m=u.getX(p-1),d=u.getX(f),g=jh(this,A,Il,a,m,d);g&&e.push(g)}}else{const f=Math.max(0,s.start),p=Math.min(h.count,s.start+s.count);for(let m=f,d=p-1;m<d;m+=l){const g=jh(this,A,Il,a,m,m+1);g&&e.push(g)}if(this.isLineLoop){const m=jh(this,A,Il,a,p-1,f);m&&e.push(m)}}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}};function jh(n,A,e,t,i,r){const s=n.geometry.attributes.position;if(zh.fromBufferAttribute(s,i),Rh.fromBufferAttribute(s,r),e.distanceSqToSegment(zh,Rh,qp,p1)>t)return;qp.applyMatrix4(n.matrixWorld);const a=A.ray.origin.distanceTo(qp);if(!(a<A.near||a>A.far))return{distance:a,point:p1.clone().applyMatrix4(n.matrixWorld),index:i,face:null,faceIndex:null,object:n}}const g1=new O,m1=new O;class bl extends Np{constructor(A,e){super(A,e),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const A=this.geometry;if(A.index===null){const e=A.attributes.position,t=[];for(let i=0,r=e.count;i<r;i+=2)g1.fromBufferAttribute(e,i),m1.fromBufferAttribute(e,i+1),t[i]=i===0?0:t[i-1],t[i+1]=t[i]+g1.distanceTo(m1);A.setAttribute("lineDistance",new Dt(t,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class YT extends Np{constructor(A,e){super(A,e),this.isLineLoop=!0,this.type="LineLoop"}}class v1 extends an{constructor(A){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new KA(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.alphaMap=A.alphaMap,this.size=A.size,this.sizeAttenuation=A.sizeAttenuation,this.fog=A.fog,this}}const y1=new zA,Bp=new os,Kh=new Ai,Fh=new O;class UT extends Ie{constructor(A=new qe,e=new v1){super(),this.isPoints=!0,this.type="Points",this.geometry=A,this.material=e,this.updateMorphTargets()}copy(A,e){return super.copy(A,e),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}raycast(A,e){const t=this.geometry,i=this.matrixWorld,r=A.params.Points.threshold,s=t.drawRange;if(t.boundingSphere===null&&t.computeBoundingSphere(),Kh.copy(t.boundingSphere),Kh.applyMatrix4(i),Kh.radius+=r,A.ray.intersectsSphere(Kh)===!1)return;y1.copy(i).invert(),Bp.copy(A.ray).applyMatrix4(y1);const o=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=o*o,l=t.index,c=t.attributes.position;if(l!==null){const h=Math.max(0,s.start),f=Math.min(l.count,s.start+s.count);for(let p=h,m=f;p<m;p++){const d=l.getX(p);Fh.fromBufferAttribute(c,d),w1(Fh,d,a,i,A,e,this)}}else{const h=Math.max(0,s.start),f=Math.min(c.count,s.start+s.count);for(let p=h,m=f;p<m;p++)Fh.fromBufferAttribute(c,p),w1(Fh,p,a,i,A,e,this)}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=i.length;r<s;r++){const o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}}function w1(n,A,e,t,i,r,s){const o=Bp.distanceSqToPoint(n);if(o<e){const a=new O;Bp.closestPointToPoint(n,a),a.applyMatrix4(t);const l=i.ray.origin.distanceTo(a);if(l<i.near||l>i.far)return;r.push({distance:l,distanceToRay:Math.sqrt(o),point:a,index:A,face:null,object:s})}}class zp extends lt{constructor(A,e,t,i,r,s,o,a,l,u,c,h){super(null,s,o,a,l,u,i,r,c,h),this.isCompressedTexture=!0,this.image={width:e,height:t},this.mipmaps=A,this.flipY=!1,this.generateMipmaps=!1}}class WT extends lt{constructor(A,e,t,i,r,s,o,a,l){super(A,e,t,i,r,s,o,a,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class cn{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(A,e){const t=this.getUtoTmapping(A);return this.getPoint(t,e)}getPoints(A=5){const e=[];for(let t=0;t<=A;t++)e.push(this.getPoint(t/A));return e}getSpacedPoints(A=5){const e=[];for(let t=0;t<=A;t++)e.push(this.getPointAt(t/A));return e}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(A=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===A+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const e=[];let t,i=this.getPoint(0),r=0;e.push(0);for(let s=1;s<=A;s++)t=this.getPoint(s/A),r+=t.distanceTo(i),e.push(r),i=t;return this.cacheArcLengths=e,e}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(A,e){const t=this.getLengths();let i=0;const r=t.length;let s;e?s=e:s=A*t[r-1];let o=0,a=r-1,l;for(;o<=a;)if(i=Math.floor(o+(a-o)/2),l=t[i]-s,l<0)o=i+1;else if(l>0)a=i-1;else{a=i;break}if(i=a,t[i]===s)return i/(r-1);const u=t[i],h=t[i+1]-u,f=(s-u)/h;return(i+f)/(r-1)}getTangent(A,e){let i=A-1e-4,r=A+1e-4;i<0&&(i=0),r>1&&(r=1);const s=this.getPoint(i),o=this.getPoint(r),a=e||(s.isVector2?new uA:new O);return a.copy(o).sub(s).normalize(),a}getTangentAt(A,e){const t=this.getUtoTmapping(A);return this.getTangent(t,e)}computeFrenetFrames(A,e){const t=new O,i=[],r=[],s=[],o=new O,a=new zA;for(let f=0;f<=A;f++){const p=f/A;i[f]=this.getTangentAt(p,new O)}r[0]=new O,s[0]=new O;let l=Number.MAX_VALUE;const u=Math.abs(i[0].x),c=Math.abs(i[0].y),h=Math.abs(i[0].z);u<=l&&(l=u,t.set(1,0,0)),c<=l&&(l=c,t.set(0,1,0)),h<=l&&t.set(0,0,1),o.crossVectors(i[0],t).normalize(),r[0].crossVectors(i[0],o),s[0].crossVectors(i[0],r[0]);for(let f=1;f<=A;f++){if(r[f]=r[f-1].clone(),s[f]=s[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON){o.normalize();const p=Math.acos(Qe(i[f-1].dot(i[f]),-1,1));r[f].applyMatrix4(a.makeRotationAxis(o,p))}s[f].crossVectors(i[f],r[f])}if(e===!0){let f=Math.acos(Qe(r[0].dot(r[A]),-1,1));f/=A,i[0].dot(o.crossVectors(r[0],r[A]))>0&&(f=-f);for(let p=1;p<=A;p++)r[p].applyMatrix4(a.makeRotationAxis(i[p],f*p)),s[p].crossVectors(i[p],r[p])}return{tangents:i,normals:r,binormals:s}}clone(){return new this.constructor().copy(this)}copy(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}toJSON(){const A={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return A.arcLengthDivisions=this.arcLengthDivisions,A.type=this.type,A}fromJSON(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}}class Rp extends cn{constructor(A=0,e=0,t=1,i=1,r=0,s=Math.PI*2,o=!1,a=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=A,this.aY=e,this.xRadius=t,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=s,this.aClockwise=o,this.aRotation=a}getPoint(A,e=new uA){const t=e,i=Math.PI*2;let r=this.aEndAngle-this.aStartAngle;const s=Math.abs(r)<Number.EPSILON;for(;r<0;)r+=i;for(;r>i;)r-=i;r<Number.EPSILON&&(s?r=0:r=i),this.aClockwise===!0&&!s&&(r===i?r=-i:r=r-i);const o=this.aStartAngle+A*r;let a=this.aX+this.xRadius*Math.cos(o),l=this.aY+this.yRadius*Math.sin(o);if(this.aRotation!==0){const u=Math.cos(this.aRotation),c=Math.sin(this.aRotation),h=a-this.aX,f=l-this.aY;a=h*u-f*c+this.aX,l=h*c+f*u+this.aY}return t.set(a,l)}copy(A){return super.copy(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}toJSON(){const A=super.toJSON();return A.aX=this.aX,A.aY=this.aY,A.xRadius=this.xRadius,A.yRadius=this.yRadius,A.aStartAngle=this.aStartAngle,A.aEndAngle=this.aEndAngle,A.aClockwise=this.aClockwise,A.aRotation=this.aRotation,A}fromJSON(A){return super.fromJSON(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}}class JT extends Rp{constructor(A,e,t,i,r,s){super(A,e,t,t,i,r,s),this.isArcCurve=!0,this.type="ArcCurve"}}function kp(){let n=0,A=0,e=0,t=0;function i(r,s,o,a){n=r,A=o,e=-3*r+3*s-2*o-a,t=2*r-2*s+o+a}return{initCatmullRom:function(r,s,o,a,l){i(s,o,l*(o-r),l*(a-s))},initNonuniformCatmullRom:function(r,s,o,a,l,u,c){let h=(s-r)/l-(o-r)/(l+u)+(o-s)/u,f=(o-s)/u-(a-s)/(u+c)+(a-o)/c;h*=u,f*=u,i(s,o,h,f)},calc:function(r){const s=r*r,o=s*r;return n+A*r+e*s+t*o}}}const Gh=new O,jp=new kp,Kp=new kp,Fp=new kp;class ZT extends cn{constructor(A=[],e=!1,t="centripetal",i=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=A,this.closed=e,this.curveType=t,this.tension=i}getPoint(A,e=new O){const t=e,i=this.points,r=i.length,s=(r-(this.closed?0:1))*A;let o=Math.floor(s),a=s-o;this.closed?o+=o>0?0:(Math.floor(Math.abs(o)/r)+1)*r:a===0&&o===r-1&&(o=r-2,a=1);let l,u;this.closed||o>0?l=i[(o-1)%r]:(Gh.subVectors(i[0],i[1]).add(i[0]),l=Gh);const c=i[o%r],h=i[(o+1)%r];if(this.closed||o+2<r?u=i[(o+2)%r]:(Gh.subVectors(i[r-1],i[r-2]).add(i[r-1]),u=Gh),this.curveType==="centripetal"||this.curveType==="chordal"){const f=this.curveType==="chordal"?.5:.25;let p=Math.pow(l.distanceToSquared(c),f),m=Math.pow(c.distanceToSquared(h),f),d=Math.pow(h.distanceToSquared(u),f);m<1e-4&&(m=1),p<1e-4&&(p=m),d<1e-4&&(d=m),jp.initNonuniformCatmullRom(l.x,c.x,h.x,u.x,p,m,d),Kp.initNonuniformCatmullRom(l.y,c.y,h.y,u.y,p,m,d),Fp.initNonuniformCatmullRom(l.z,c.z,h.z,u.z,p,m,d)}else this.curveType==="catmullrom"&&(jp.initCatmullRom(l.x,c.x,h.x,u.x,this.tension),Kp.initCatmullRom(l.y,c.y,h.y,u.y,this.tension),Fp.initCatmullRom(l.z,c.z,h.z,u.z,this.tension));return t.set(jp.calc(a),Kp.calc(a),Fp.calc(a)),t}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(i.clone())}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}toJSON(){const A=super.toJSON();A.points=[];for(let e=0,t=this.points.length;e<t;e++){const i=this.points[e];A.points.push(i.toArray())}return A.closed=this.closed,A.curveType=this.curveType,A.tension=this.tension,A}fromJSON(A){super.fromJSON(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(new O().fromArray(i))}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}}function C1(n,A,e,t,i){const r=(t-A)*.5,s=(i-e)*.5,o=n*n,a=n*o;return(2*e-2*t+r+s)*a+(-3*e+3*t-2*r-s)*o+r*n+e}function XT(n,A){const e=1-n;return e*e*A}function QT(n,A){return 2*(1-n)*n*A}function VT(n,A){return n*n*A}function _l(n,A,e,t){return XT(n,A)+QT(n,e)+VT(n,t)}function $T(n,A){const e=1-n;return e*e*e*A}function AD(n,A){const e=1-n;return 3*e*e*n*A}function eD(n,A){return 3*(1-n)*n*n*A}function tD(n,A){return n*n*n*A}function Sl(n,A,e,t,i){return $T(n,A)+AD(n,e)+eD(n,t)+tD(n,i)}class x1 extends cn{constructor(A=new uA,e=new uA,t=new uA,i=new uA){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=A,this.v1=e,this.v2=t,this.v3=i}getPoint(A,e=new uA){const t=e,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return t.set(Sl(A,i.x,r.x,s.x,o.x),Sl(A,i.y,r.y,s.y,o.y)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class iD extends cn{constructor(A=new O,e=new O,t=new O,i=new O){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=A,this.v1=e,this.v2=t,this.v3=i}getPoint(A,e=new O){const t=e,i=this.v0,r=this.v1,s=this.v2,o=this.v3;return t.set(Sl(A,i.x,r.x,s.x,o.x),Sl(A,i.y,r.y,s.y,o.y),Sl(A,i.z,r.z,s.z,o.z)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class I1 extends cn{constructor(A=new uA,e=new uA){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=A,this.v2=e}getPoint(A,e=new uA){const t=e;return A===1?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(A).add(this.v1)),t}getPointAt(A,e){return this.getPoint(A,e)}getTangent(A,e=new uA){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,e){return this.getTangent(A,e)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class nD extends cn{constructor(A=new O,e=new O){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=A,this.v2=e}getPoint(A,e=new O){const t=e;return A===1?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(A).add(this.v1)),t}getPointAt(A,e){return this.getPoint(A,e)}getTangent(A,e=new O){return e.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,e){return this.getTangent(A,e)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class b1 extends cn{constructor(A=new uA,e=new uA,t=new uA){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=A,this.v1=e,this.v2=t}getPoint(A,e=new uA){const t=e,i=this.v0,r=this.v1,s=this.v2;return t.set(_l(A,i.x,r.x,s.x),_l(A,i.y,r.y,s.y)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class rD extends cn{constructor(A=new O,e=new O,t=new O){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=A,this.v1=e,this.v2=t}getPoint(A,e=new O){const t=e,i=this.v0,r=this.v1,s=this.v2;return t.set(_l(A,i.x,r.x,s.x),_l(A,i.y,r.y,s.y),_l(A,i.z,r.z,s.z)),t}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class _1 extends cn{constructor(A=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=A}getPoint(A,e=new uA){const t=e,i=this.points,r=(i.length-1)*A,s=Math.floor(r),o=r-s,a=i[s===0?s:s-1],l=i[s],u=i[s>i.length-2?i.length-1:s+1],c=i[s>i.length-3?i.length-1:s+2];return t.set(C1(o,a.x,l.x,u.x,c.x),C1(o,a.y,l.y,u.y,c.y)),t}copy(A){super.copy(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(i.clone())}return this}toJSON(){const A=super.toJSON();A.points=[];for(let e=0,t=this.points.length;e<t;e++){const i=this.points[e];A.points.push(i.toArray())}return A}fromJSON(A){super.fromJSON(A),this.points=[];for(let e=0,t=A.points.length;e<t;e++){const i=A.points[e];this.points.push(new uA().fromArray(i))}return this}}var S1=Object.freeze({__proto__:null,ArcCurve:JT,CatmullRomCurve3:ZT,CubicBezierCurve:x1,CubicBezierCurve3:iD,EllipseCurve:Rp,LineCurve:I1,LineCurve3:nD,QuadraticBezierCurve:b1,QuadraticBezierCurve3:rD,SplineCurve:_1});class sD extends cn{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(A){this.curves.push(A)}closePath(){const A=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);if(!A.equals(e)){const t=A.isVector2===!0?"LineCurve":"LineCurve3";this.curves.push(new S1[t](e,A))}return this}getPoint(A,e){const t=A*this.getLength(),i=this.getCurveLengths();let r=0;for(;r<i.length;){if(i[r]>=t){const s=i[r]-t,o=this.curves[r],a=o.getLength(),l=a===0?0:1-s/a;return o.getPointAt(l,e)}r++}return null}getLength(){const A=this.getCurveLengths();return A[A.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const A=[];let e=0;for(let t=0,i=this.curves.length;t<i;t++)e+=this.curves[t].getLength(),A.push(e);return this.cacheLengths=A,A}getSpacedPoints(A=40){const e=[];for(let t=0;t<=A;t++)e.push(this.getPoint(t/A));return this.autoClose&&e.push(e[0]),e}getPoints(A=12){const e=[];let t;for(let i=0,r=this.curves;i<r.length;i++){const s=r[i],o=s.isEllipseCurve?A*2:s.isLineCurve||s.isLineCurve3?1:s.isSplineCurve?A*s.points.length:A,a=s.getPoints(o);for(let l=0;l<a.length;l++){const u=a[l];t&&t.equals(u)||(e.push(u),t=u)}}return this.autoClose&&e.length>1&&!e[e.length-1].equals(e[0])&&e.push(e[0]),e}copy(A){super.copy(A),this.curves=[];for(let e=0,t=A.curves.length;e<t;e++){const i=A.curves[e];this.curves.push(i.clone())}return this.autoClose=A.autoClose,this}toJSON(){const A=super.toJSON();A.autoClose=this.autoClose,A.curves=[];for(let e=0,t=this.curves.length;e<t;e++){const i=this.curves[e];A.curves.push(i.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.autoClose=A.autoClose,this.curves=[];for(let e=0,t=A.curves.length;e<t;e++){const i=A.curves[e];this.curves.push(new S1[i.type]().fromJSON(i))}return this}}class Gp extends sD{constructor(A){super(),this.type="Path",this.currentPoint=new uA,A&&this.setFromPoints(A)}setFromPoints(A){this.moveTo(A[0].x,A[0].y);for(let e=1,t=A.length;e<t;e++)this.lineTo(A[e].x,A[e].y);return this}moveTo(A,e){return this.currentPoint.set(A,e),this}lineTo(A,e){const t=new I1(this.currentPoint.clone(),new uA(A,e));return this.curves.push(t),this.currentPoint.set(A,e),this}quadraticCurveTo(A,e,t,i){const r=new b1(this.currentPoint.clone(),new uA(A,e),new uA(t,i));return this.curves.push(r),this.currentPoint.set(t,i),this}bezierCurveTo(A,e,t,i,r,s){const o=new x1(this.currentPoint.clone(),new uA(A,e),new uA(t,i),new uA(r,s));return this.curves.push(o),this.currentPoint.set(r,s),this}splineThru(A){const e=[this.currentPoint.clone()].concat(A),t=new _1(e);return this.curves.push(t),this.currentPoint.copy(A[A.length-1]),this}arc(A,e,t,i,r,s){const o=this.currentPoint.x,a=this.currentPoint.y;return this.absarc(A+o,e+a,t,i,r,s),this}absarc(A,e,t,i,r,s){return this.absellipse(A,e,t,t,i,r,s),this}ellipse(A,e,t,i,r,s,o,a){const l=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(A+l,e+u,t,i,r,s,o,a),this}absellipse(A,e,t,i,r,s,o,a){const l=new Rp(A,e,t,i,r,s,o,a);if(this.curves.length>0){const c=l.getPoint(0);c.equals(this.currentPoint)||this.lineTo(c.x,c.y)}this.curves.push(l);const u=l.getPoint(1);return this.currentPoint.copy(u),this}copy(A){return super.copy(A),this.currentPoint.copy(A.currentPoint),this}toJSON(){const A=super.toJSON();return A.currentPoint=this.currentPoint.toArray(),A}fromJSON(A){return super.fromJSON(A),this.currentPoint.fromArray(A.currentPoint),this}}const Hh=new O,Yh=new O,Hp=new O,Uh=new Ue;class M1 extends qe{constructor(A=null,e=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:A,thresholdAngle:e},A!==null){const i=Math.pow(10,4),r=Math.cos(oo*e),s=A.getIndex(),o=A.getAttribute("position"),a=s?s.count:o.count,l=[0,0,0],u=["a","b","c"],c=new Array(3),h={},f=[];for(let p=0;p<a;p+=3){s?(l[0]=s.getX(p),l[1]=s.getX(p+1),l[2]=s.getX(p+2)):(l[0]=p,l[1]=p+1,l[2]=p+2);const{a:m,b:d,c:g}=Uh;if(m.fromBufferAttribute(o,l[0]),d.fromBufferAttribute(o,l[1]),g.fromBufferAttribute(o,l[2]),Uh.getNormal(Hp),c[0]=`${Math.round(m.x*i)},${Math.round(m.y*i)},${Math.round(m.z*i)}`,c[1]=`${Math.round(d.x*i)},${Math.round(d.y*i)},${Math.round(d.z*i)}`,c[2]=`${Math.round(g.x*i)},${Math.round(g.y*i)},${Math.round(g.z*i)}`,!(c[0]===c[1]||c[1]===c[2]||c[2]===c[0]))for(let y=0;y<3;y++){const v=(y+1)%3,w=c[y],C=c[v],_=Uh[u[y]],x=Uh[u[v]],S=`${w}_${C}`,b=`${C}_${w}`;b in h&&h[b]?(Hp.dot(h[b].normal)<=r&&(f.push(_.x,_.y,_.z),f.push(x.x,x.y,x.z)),h[b]=null):S in h||(h[S]={index0:l[y],index1:l[v],normal:Hp.clone()})}}for(const p in h)if(h[p]){const{index0:m,index1:d}=h[p];Hh.fromBufferAttribute(o,m),Yh.fromBufferAttribute(o,d),f.push(Hh.x,Hh.y,Hh.z),f.push(Yh.x,Yh.y,Yh.z)}this.setAttribute("position",new Dt(f,3))}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}}class Yp extends Gp{constructor(A){super(A),this.uuid=mi(),this.type="Shape",this.holes=[]}getPointsHoles(A){const e=[];for(let t=0,i=this.holes.length;t<i;t++)e[t]=this.holes[t].getPoints(A);return e}extractPoints(A){return{shape:this.getPoints(A),holes:this.getPointsHoles(A)}}copy(A){super.copy(A),this.holes=[];for(let e=0,t=A.holes.length;e<t;e++){const i=A.holes[e];this.holes.push(i.clone())}return this}toJSON(){const A=super.toJSON();A.uuid=this.uuid,A.holes=[];for(let e=0,t=this.holes.length;e<t;e++){const i=this.holes[e];A.holes.push(i.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.uuid=A.uuid,this.holes=[];for(let e=0,t=A.holes.length;e<t;e++){const i=A.holes[e];this.holes.push(new Gp().fromJSON(i))}return this}}const oD={triangulate:function(n,A,e=2){const t=A&&A.length,i=t?A[0]*e:n.length;let r=P1(n,0,i,e,!0);const s=[];if(!r||r.next===r.prev)return s;let o,a,l,u,c,h,f;if(t&&(r=uD(n,A,r,e)),n.length>80*e){o=l=n[0],a=u=n[1];for(let p=e;p<i;p+=e)c=n[p],h=n[p+1],c<o&&(o=c),h<a&&(a=h),c>l&&(l=c),h>u&&(u=h);f=Math.max(l-o,u-a),f=f!==0?32767/f:0}return Ml(r,s,e,o,a,f,0),s}};function P1(n,A,e,t,i){let r,s;if(i===ID(n,A,e,t)>0)for(r=A;r<e;r+=t)s=E1(r,n[r],n[r+1],s);else for(r=e-t;r>=A;r-=t)s=E1(r,n[r],n[r+1],s);return s&&Wh(s,s.next)&&(Tl(s),s=s.next),s}function ps(n,A){if(!n)return n;A||(A=n);let e=n,t;do if(t=!1,!e.steiner&&(Wh(e,e.next)||Ke(e.prev,e,e.next)===0)){if(Tl(e),e=A=e.prev,e===e.next)break;t=!0}else e=e.next;while(t||e!==A);return A}function Ml(n,A,e,t,i,r,s){if(!n)return;!s&&r&&mD(n,t,i,r);let o=n,a,l;for(;n.prev!==n.next;){if(a=n.prev,l=n.next,r?lD(n,t,i,r):aD(n)){A.push(a.i/e|0),A.push(n.i/e|0),A.push(l.i/e|0),Tl(n),n=l.next,o=l.next;continue}if(n=l,n===o){s?s===1?(n=cD(ps(n),A,e),Ml(n,A,e,t,i,r,2)):s===2&&hD(n,A,e,t,i,r):Ml(ps(n),A,e,t,i,r,1);break}}}function aD(n){const A=n.prev,e=n,t=n.next;if(Ke(A,e,t)>=0)return!1;const i=A.x,r=e.x,s=t.x,o=A.y,a=e.y,l=t.y,u=i<r?i<s?i:s:r<s?r:s,c=o<a?o<l?o:l:a<l?a:l,h=i>r?i>s?i:s:r>s?r:s,f=o>a?o>l?o:l:a>l?a:l;let p=t.next;for(;p!==A;){if(p.x>=u&&p.x<=h&&p.y>=c&&p.y<=f&&Oo(i,o,r,a,s,l,p.x,p.y)&&Ke(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}function lD(n,A,e,t){const i=n.prev,r=n,s=n.next;if(Ke(i,r,s)>=0)return!1;const o=i.x,a=r.x,l=s.x,u=i.y,c=r.y,h=s.y,f=o<a?o<l?o:l:a<l?a:l,p=u<c?u<h?u:h:c<h?c:h,m=o>a?o>l?o:l:a>l?a:l,d=u>c?u>h?u:h:c>h?c:h,g=Up(f,p,A,e,t),y=Up(m,d,A,e,t);let v=n.prevZ,w=n.nextZ;for(;v&&v.z>=g&&w&&w.z<=y;){if(v.x>=f&&v.x<=m&&v.y>=p&&v.y<=d&&v!==i&&v!==s&&Oo(o,u,a,c,l,h,v.x,v.y)&&Ke(v.prev,v,v.next)>=0||(v=v.prevZ,w.x>=f&&w.x<=m&&w.y>=p&&w.y<=d&&w!==i&&w!==s&&Oo(o,u,a,c,l,h,w.x,w.y)&&Ke(w.prev,w,w.next)>=0))return!1;w=w.nextZ}for(;v&&v.z>=g;){if(v.x>=f&&v.x<=m&&v.y>=p&&v.y<=d&&v!==i&&v!==s&&Oo(o,u,a,c,l,h,v.x,v.y)&&Ke(v.prev,v,v.next)>=0)return!1;v=v.prevZ}for(;w&&w.z<=y;){if(w.x>=f&&w.x<=m&&w.y>=p&&w.y<=d&&w!==i&&w!==s&&Oo(o,u,a,c,l,h,w.x,w.y)&&Ke(w.prev,w,w.next)>=0)return!1;w=w.nextZ}return!0}function cD(n,A,e){let t=n;do{const i=t.prev,r=t.next.next;!Wh(i,r)&&T1(i,t,t.next,r)&&Pl(i,r)&&Pl(r,i)&&(A.push(i.i/e|0),A.push(t.i/e|0),A.push(r.i/e|0),Tl(t),Tl(t.next),t=n=r),t=t.next}while(t!==n);return ps(t)}function hD(n,A,e,t,i,r){let s=n;do{let o=s.next.next;for(;o!==s.prev;){if(s.i!==o.i&&wD(s,o)){let a=D1(s,o);s=ps(s,s.next),a=ps(a,a.next),Ml(s,A,e,t,i,r,0),Ml(a,A,e,t,i,r,0);return}o=o.next}s=s.next}while(s!==n)}function uD(n,A,e,t){const i=[];let r,s,o,a,l;for(r=0,s=A.length;r<s;r++)o=A[r]*t,a=r<s-1?A[r+1]*t:n.length,l=P1(n,o,a,t,!1),l===l.next&&(l.steiner=!0),i.push(yD(l));for(i.sort(fD),r=0;r<i.length;r++)e=dD(i[r],e);return e}function fD(n,A){return n.x-A.x}function dD(n,A){const e=pD(n,A);if(!e)return A;const t=D1(e,n);return ps(t,t.next),ps(e,e.next)}function pD(n,A){let e=A,t=-1/0,i;const r=n.x,s=n.y;do{if(s<=e.y&&s>=e.next.y&&e.next.y!==e.y){const h=e.x+(s-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(h<=r&&h>t&&(t=h,i=e.x<e.next.x?e:e.next,h===r))return i}e=e.next}while(e!==A);if(!i)return null;const o=i,a=i.x,l=i.y;let u=1/0,c;e=i;do r>=e.x&&e.x>=a&&r!==e.x&&Oo(s<l?r:t,s,a,l,s<l?t:r,s,e.x,e.y)&&(c=Math.abs(s-e.y)/(r-e.x),Pl(e,n)&&(c<u||c===u&&(e.x>i.x||e.x===i.x&&gD(i,e)))&&(i=e,u=c)),e=e.next;while(e!==o);return i}function gD(n,A){return Ke(n.prev,n,A.prev)<0&&Ke(A.next,n,n.next)<0}function mD(n,A,e,t){let i=n;do i.z===0&&(i.z=Up(i.x,i.y,A,e,t)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==n);i.prevZ.nextZ=null,i.prevZ=null,vD(i)}function vD(n){let A,e,t,i,r,s,o,a,l=1;do{for(e=n,n=null,r=null,s=0;e;){for(s++,t=e,o=0,A=0;A<l&&(o++,t=t.nextZ,!!t);A++);for(a=l;o>0||a>0&&t;)o!==0&&(a===0||!t||e.z<=t.z)?(i=e,e=e.nextZ,o--):(i=t,t=t.nextZ,a--),r?r.nextZ=i:n=i,i.prevZ=r,r=i;e=t}r.nextZ=null,l*=2}while(s>1);return n}function Up(n,A,e,t,i){return n=(n-e)*i|0,A=(A-t)*i|0,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,n|A<<1}function yD(n){let A=n,e=n;do(A.x<e.x||A.x===e.x&&A.y<e.y)&&(e=A),A=A.next;while(A!==n);return e}function Oo(n,A,e,t,i,r,s,o){return(i-s)*(A-o)>=(n-s)*(r-o)&&(n-s)*(t-o)>=(e-s)*(A-o)&&(e-s)*(r-o)>=(i-s)*(t-o)}function wD(n,A){return n.next.i!==A.i&&n.prev.i!==A.i&&!CD(n,A)&&(Pl(n,A)&&Pl(A,n)&&xD(n,A)&&(Ke(n.prev,n,A.prev)||Ke(n,A.prev,A))||Wh(n,A)&&Ke(n.prev,n,n.next)>0&&Ke(A.prev,A,A.next)>0)}function Ke(n,A,e){return(A.y-n.y)*(e.x-A.x)-(A.x-n.x)*(e.y-A.y)}function Wh(n,A){return n.x===A.x&&n.y===A.y}function T1(n,A,e,t){const i=Zh(Ke(n,A,e)),r=Zh(Ke(n,A,t)),s=Zh(Ke(e,t,n)),o=Zh(Ke(e,t,A));return!!(i!==r&&s!==o||i===0&&Jh(n,e,A)||r===0&&Jh(n,t,A)||s===0&&Jh(e,n,t)||o===0&&Jh(e,A,t))}function Jh(n,A,e){return A.x<=Math.max(n.x,e.x)&&A.x>=Math.min(n.x,e.x)&&A.y<=Math.max(n.y,e.y)&&A.y>=Math.min(n.y,e.y)}function Zh(n){return n>0?1:n<0?-1:0}function CD(n,A){let e=n;do{if(e.i!==n.i&&e.next.i!==n.i&&e.i!==A.i&&e.next.i!==A.i&&T1(e,e.next,n,A))return!0;e=e.next}while(e!==n);return!1}function Pl(n,A){return Ke(n.prev,n,n.next)<0?Ke(n,A,n.next)>=0&&Ke(n,n.prev,A)>=0:Ke(n,A,n.prev)<0||Ke(n,n.next,A)<0}function xD(n,A){let e=n,t=!1;const i=(n.x+A.x)/2,r=(n.y+A.y)/2;do e.y>r!=e.next.y>r&&e.next.y!==e.y&&i<(e.next.x-e.x)*(r-e.y)/(e.next.y-e.y)+e.x&&(t=!t),e=e.next;while(e!==n);return t}function D1(n,A){const e=new Wp(n.i,n.x,n.y),t=new Wp(A.i,A.x,A.y),i=n.next,r=A.prev;return n.next=A,A.prev=n,e.next=i,i.prev=e,t.next=e,e.prev=t,r.next=t,t.prev=r,t}function E1(n,A,e,t){const i=new Wp(n,A,e);return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function Tl(n){n.next.prev=n.prev,n.prev.next=n.next,n.prevZ&&(n.prevZ.nextZ=n.nextZ),n.nextZ&&(n.nextZ.prevZ=n.prevZ)}function Wp(n,A,e){this.i=n,this.x=A,this.y=e,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ID(n,A,e,t){let i=0;for(let r=A,s=e-t;r<e;r+=t)i+=(n[s]-n[r])*(n[r+1]+n[s+1]),s=r;return i}class Jp{static area(A){const e=A.length;let t=0;for(let i=e-1,r=0;r<e;i=r++)t+=A[i].x*A[r].y-A[r].x*A[i].y;return t*.5}static isClockWise(A){return Jp.area(A)<0}static triangulateShape(A,e){const t=[],i=[],r=[];L1(A),O1(t,A);let s=A.length;e.forEach(L1);for(let a=0;a<e.length;a++)i.push(s),s+=e[a].length,O1(t,e[a]);const o=oD.triangulate(t,i);for(let a=0;a<o.length;a+=3)r.push(o.slice(a,a+3));return r}}function L1(n){const A=n.length;A>2&&n[A-1].equals(n[0])&&n.pop()}function O1(n,A){for(let e=0;e<A.length;e++)n.push(A[e].x),n.push(A[e].y)}class Xh extends qe{constructor(A=.5,e=1,t=32,i=1,r=0,s=Math.PI*2){super(),this.type="RingGeometry",this.parameters={innerRadius:A,outerRadius:e,thetaSegments:t,phiSegments:i,thetaStart:r,thetaLength:s},t=Math.max(3,t),i=Math.max(1,i);const o=[],a=[],l=[],u=[];let c=A;const h=(e-A)/i,f=new O,p=new uA;for(let m=0;m<=i;m++){for(let d=0;d<=t;d++){const g=r+d/t*s;f.x=c*Math.cos(g),f.y=c*Math.sin(g),a.push(f.x,f.y,f.z),l.push(0,0,1),p.x=(f.x/e+1)/2,p.y=(f.y/e+1)/2,u.push(p.x,p.y)}c+=h}for(let m=0;m<i;m++){const d=m*(t+1);for(let g=0;g<t;g++){const y=g+d,v=y,w=y+t+1,C=y+t+2,_=y+1;o.push(v,w,_),o.push(w,C,_)}}this.setIndex(o),this.setAttribute("position",new Dt(a,3)),this.setAttribute("normal",new Dt(l,3)),this.setAttribute("uv",new Dt(u,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Xh(A.innerRadius,A.outerRadius,A.thetaSegments,A.phiSegments,A.thetaStart,A.thetaLength)}}class bD extends $e{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class Dl extends an{constructor(A){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new KA(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new KA(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Xy,this.normalScale=new uA(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new on,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.defines={STANDARD:""},this.color.copy(A.color),this.roughness=A.roughness,this.metalness=A.metalness,this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.roughnessMap=A.roughnessMap,this.metalnessMap=A.metalnessMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.envMapIntensity=A.envMapIntensity,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class hn extends Dl{constructor(A){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new uA(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Qe(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(e){this.ior=(1+.4*e)/(1-.4*e)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new KA(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new KA(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new KA(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(A)}get anisotropy(){return this._anisotropy}set anisotropy(A){this._anisotropy>0!=A>0&&this.version++,this._anisotropy=A}get clearcoat(){return this._clearcoat}set clearcoat(A){this._clearcoat>0!=A>0&&this.version++,this._clearcoat=A}get iridescence(){return this._iridescence}set iridescence(A){this._iridescence>0!=A>0&&this.version++,this._iridescence=A}get dispersion(){return this._dispersion}set dispersion(A){this._dispersion>0!=A>0&&this.version++,this._dispersion=A}get sheen(){return this._sheen}set sheen(A){this._sheen>0!=A>0&&this.version++,this._sheen=A}get transmission(){return this._transmission}set transmission(A){this._transmission>0!=A>0&&this.version++,this._transmission=A}copy(A){return super.copy(A),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=A.anisotropy,this.anisotropyRotation=A.anisotropyRotation,this.anisotropyMap=A.anisotropyMap,this.clearcoat=A.clearcoat,this.clearcoatMap=A.clearcoatMap,this.clearcoatRoughness=A.clearcoatRoughness,this.clearcoatRoughnessMap=A.clearcoatRoughnessMap,this.clearcoatNormalMap=A.clearcoatNormalMap,this.clearcoatNormalScale.copy(A.clearcoatNormalScale),this.dispersion=A.dispersion,this.ior=A.ior,this.iridescence=A.iridescence,this.iridescenceMap=A.iridescenceMap,this.iridescenceIOR=A.iridescenceIOR,this.iridescenceThicknessRange=[...A.iridescenceThicknessRange],this.iridescenceThicknessMap=A.iridescenceThicknessMap,this.sheen=A.sheen,this.sheenColor.copy(A.sheenColor),this.sheenColorMap=A.sheenColorMap,this.sheenRoughness=A.sheenRoughness,this.sheenRoughnessMap=A.sheenRoughnessMap,this.transmission=A.transmission,this.transmissionMap=A.transmissionMap,this.thickness=A.thickness,this.thicknessMap=A.thicknessMap,this.attenuationDistance=A.attenuationDistance,this.attenuationColor.copy(A.attenuationColor),this.specularIntensity=A.specularIntensity,this.specularIntensityMap=A.specularIntensityMap,this.specularColor.copy(A.specularColor),this.specularColorMap=A.specularColorMap,this}}class q1 extends Bh{constructor(A){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(A)}copy(A){return super.copy(A),this.scale=A.scale,this.dashSize=A.dashSize,this.gapSize=A.gapSize,this}}function Qh(n,A,e){return!n||!e&&n.constructor===A?n:typeof A.BYTES_PER_ELEMENT=="number"?new A(n):Array.prototype.slice.call(n)}function _D(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function SD(n){function A(i,r){return n[i]-n[r]}const e=n.length,t=new Array(e);for(let i=0;i!==e;++i)t[i]=i;return t.sort(A),t}function N1(n,A,e){const t=n.length,i=new n.constructor(t);for(let r=0,s=0;s!==t;++r){const o=e[r]*A;for(let a=0;a!==A;++a)i[s++]=n[o+a]}return i}function B1(n,A,e,t){let i=1,r=n[0];for(;r!==void 0&&r[t]===void 0;)r=n[i++];if(r===void 0)return;let s=r[t];if(s!==void 0)if(Array.isArray(s))do s=r[t],s!==void 0&&(A.push(r.time),e.push.apply(e,s)),r=n[i++];while(r!==void 0);else if(s.toArray!==void 0)do s=r[t],s!==void 0&&(A.push(r.time),s.toArray(e,e.length)),r=n[i++];while(r!==void 0);else do s=r[t],s!==void 0&&(A.push(r.time),e.push(s)),r=n[i++];while(r!==void 0)}class El{constructor(A,e,t,i){this.parameterPositions=A,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(t),this.sampleValues=e,this.valueSize=t,this.settings=null,this.DefaultSettings_={}}evaluate(A){const e=this.parameterPositions;let t=this._cachedIndex,i=e[t],r=e[t-1];A:{e:{let s;t:{i:if(!(A<i)){for(let o=t+2;;){if(i===void 0){if(A<r)break i;return t=e.length,this._cachedIndex=t,this.copySampleValue_(t-1)}if(t===o)break;if(r=i,i=e[++t],A<i)break e}s=e.length;break t}if(!(A>=r)){const o=e[1];A<o&&(t=2,r=o);for(let a=t-2;;){if(r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(t===a)break;if(i=r,r=e[--t-1],A>=r)break e}s=t,t=0;break t}break A}for(;t<s;){const o=t+s>>>1;A<e[o]?s=o:t=o+1}if(i=e[t],r=e[t-1],r===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(i===void 0)return t=e.length,this._cachedIndex=t,this.copySampleValue_(t-1)}this._cachedIndex=t,this.intervalChanged_(t,r,i)}return this.interpolate_(t,r,A,i)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,i=this.valueSize,r=A*i;for(let s=0;s!==i;++s)e[s]=t[r+s];return e}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class MD extends El{constructor(A,e,t,i){super(A,e,t,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Uy,endingEnd:Uy}}intervalChanged_(A,e,t){const i=this.parameterPositions;let r=A-2,s=A+1,o=i[r],a=i[s];if(o===void 0)switch(this.getSettings_().endingStart){case Wy:r=A,o=2*e-t;break;case Jy:r=i.length-2,o=e+i[r]-i[r+1];break;default:r=A,o=t}if(a===void 0)switch(this.getSettings_().endingEnd){case Wy:s=A,a=2*t-e;break;case Jy:s=1,a=t+i[1]-i[0];break;default:s=A-1,a=e}const l=(t-e)*.5,u=this.valueSize;this._weightPrev=l/(e-o),this._weightNext=l/(a-t),this._offsetPrev=r*u,this._offsetNext=s*u}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=A*o,l=a-o,u=this._offsetPrev,c=this._offsetNext,h=this._weightPrev,f=this._weightNext,p=(t-e)/(i-e),m=p*p,d=m*p,g=-h*d+2*h*m-h*p,y=(1+h)*d+(-1.5-2*h)*m+(-.5+h)*p+1,v=(-1-f)*d+(1.5+f)*m+.5*p,w=f*d-f*m;for(let C=0;C!==o;++C)r[C]=g*s[u+C]+y*s[l+C]+v*s[a+C]+w*s[c+C];return r}}class PD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=A*o,l=a-o,u=(t-e)/(i-e),c=1-u;for(let h=0;h!==o;++h)r[h]=s[l+h]*c+s[a+h]*u;return r}}class TD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A){return this.copySampleValue_(A-1)}}class un{constructor(A,e,t,i){if(A===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(e===void 0||e.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+A);this.name=A,this.times=Qh(e,this.TimeBufferType),this.values=Qh(t,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}static toJSON(A){const e=A.constructor;let t;if(e.toJSON!==this.toJSON)t=e.toJSON(A);else{t={name:A.name,times:Qh(A.times,Array),values:Qh(A.values,Array)};const i=A.getInterpolation();i!==A.DefaultInterpolation&&(t.interpolation=i)}return t.type=A.ValueTypeName,t}InterpolantFactoryMethodDiscrete(A){return new TD(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodLinear(A){return new PD(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodSmooth(A){return new MD(this.times,this.values,this.getValueSize(),A)}setInterpolation(A){let e;switch(A){case ro:e=this.InterpolantFactoryMethodDiscrete;break;case is:e=this.InterpolantFactoryMethodLinear;break;case Jd:e=this.InterpolantFactoryMethodSmooth;break}if(e===void 0){const t="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(A!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(t);return console.warn("THREE.KeyframeTrack:",t),this}return this.createInterpolant=e,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return ro;case this.InterpolantFactoryMethodLinear:return is;case this.InterpolantFactoryMethodSmooth:return Jd}}getValueSize(){return this.values.length/this.times.length}shift(A){if(A!==0){const e=this.times;for(let t=0,i=e.length;t!==i;++t)e[t]+=A}return this}scale(A){if(A!==1){const e=this.times;for(let t=0,i=e.length;t!==i;++t)e[t]*=A}return this}trim(A,e){const t=this.times,i=t.length;let r=0,s=i-1;for(;r!==i&&t[r]<A;)++r;for(;s!==-1&&t[s]>e;)--s;if(++s,r!==0||s!==i){r>=s&&(s=Math.max(s,1),r=s-1);const o=this.getValueSize();this.times=t.slice(r,s),this.values=this.values.slice(r*o,s*o)}return this}validate(){let A=!0;const e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),A=!1);const t=this.times,i=this.values,r=t.length;r===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),A=!1);let s=null;for(let o=0;o!==r;o++){const a=t[o];if(typeof a=="number"&&isNaN(a)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,a),A=!1;break}if(s!==null&&s>a){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,a,s),A=!1;break}s=a}if(i!==void 0&&_D(i))for(let o=0,a=i.length;o!==a;++o){const l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),A=!1;break}}return A}optimize(){const A=this.times.slice(),e=this.values.slice(),t=this.getValueSize(),i=this.getInterpolation()===Jd,r=A.length-1;let s=1;for(let o=1;o<r;++o){let a=!1;const l=A[o],u=A[o+1];if(l!==u&&(o!==1||l!==A[0]))if(i)a=!0;else{const c=o*t,h=c-t,f=c+t;for(let p=0;p!==t;++p){const m=e[c+p];if(m!==e[h+p]||m!==e[f+p]){a=!0;break}}}if(a){if(o!==s){A[s]=A[o];const c=o*t,h=s*t;for(let f=0;f!==t;++f)e[h+f]=e[c+f]}++s}}if(r>0){A[s]=A[r];for(let o=r*t,a=s*t,l=0;l!==t;++l)e[a+l]=e[o+l];++s}return s!==A.length?(this.times=A.slice(0,s),this.values=e.slice(0,s*t)):(this.times=A,this.values=e),this}clone(){const A=this.times.slice(),e=this.values.slice(),t=this.constructor,i=new t(this.name,A,e);return i.createInterpolant=this.createInterpolant,i}}un.prototype.TimeBufferType=Float32Array,un.prototype.ValueBufferType=Float32Array,un.prototype.DefaultInterpolation=is;class qo extends un{}qo.prototype.ValueTypeName="bool",qo.prototype.ValueBufferType=Array,qo.prototype.DefaultInterpolation=ro,qo.prototype.InterpolantFactoryMethodLinear=void 0,qo.prototype.InterpolantFactoryMethodSmooth=void 0;class z1 extends un{}z1.prototype.ValueTypeName="color";class No extends un{}No.prototype.ValueTypeName="number";class DD extends El{constructor(A,e,t,i){super(A,e,t,i)}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=(t-e)/(i-e);let l=A*o;for(let u=l+o;l!==u;l+=4)vi.slerpFlat(r,0,s,l-o,s,l,a);return r}}class gs extends un{InterpolantFactoryMethodLinear(A){return new DD(this.times,this.values,this.getValueSize(),A)}}gs.prototype.ValueTypeName="quaternion",gs.prototype.DefaultInterpolation=is,gs.prototype.InterpolantFactoryMethodSmooth=void 0;class Bo extends un{}Bo.prototype.ValueTypeName="string",Bo.prototype.ValueBufferType=Array,Bo.prototype.DefaultInterpolation=ro,Bo.prototype.InterpolantFactoryMethodLinear=void 0,Bo.prototype.InterpolantFactoryMethodSmooth=void 0;class zo extends un{}zo.prototype.ValueTypeName="vector";class ED{constructor(A="",e=-1,t=[],i=R3){this.name=A,this.tracks=t,this.duration=e,this.blendMode=i,this.uuid=mi(),this.duration<0&&this.resetDuration()}static parse(A){const e=[],t=A.tracks,i=1/(A.fps||1);for(let s=0,o=t.length;s!==o;++s)e.push(OD(t[s]).scale(i));const r=new this(A.name,A.duration,e,A.blendMode);return r.uuid=A.uuid,r}static toJSON(A){const e=[],t=A.tracks,i={name:A.name,duration:A.duration,tracks:e,uuid:A.uuid,blendMode:A.blendMode};for(let r=0,s=t.length;r!==s;++r)e.push(un.toJSON(t[r]));return i}static CreateFromMorphTargetSequence(A,e,t,i){const r=e.length,s=[];for(let o=0;o<r;o++){let a=[],l=[];a.push((o+r-1)%r,o,(o+1)%r),l.push(0,1,0);const u=SD(a);a=N1(a,1,u),l=N1(l,1,u),!i&&a[0]===0&&(a.push(r),l.push(l[0])),s.push(new No(".morphTargetInfluences["+e[o].name+"]",a,l).scale(1/t))}return new this(A,-1,s)}static findByName(A,e){let t=A;if(!Array.isArray(A)){const i=A;t=i.geometry&&i.geometry.animations||i.animations}for(let i=0;i<t.length;i++)if(t[i].name===e)return t[i];return null}static CreateClipsFromMorphTargetSequences(A,e,t){const i={},r=/^([\w-]*?)([\d]+)$/;for(let o=0,a=A.length;o<a;o++){const l=A[o],u=l.name.match(r);if(u&&u.length>1){const c=u[1];let h=i[c];h||(i[c]=h=[]),h.push(l)}}const s=[];for(const o in i)s.push(this.CreateFromMorphTargetSequence(o,i[o],e,t));return s}static parseAnimation(A,e){if(!A)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const t=function(c,h,f,p,m){if(f.length!==0){const d=[],g=[];B1(f,d,g,p),d.length!==0&&m.push(new c(h,d,g))}},i=[],r=A.name||"default",s=A.fps||30,o=A.blendMode;let a=A.length||-1;const l=A.hierarchy||[];for(let c=0;c<l.length;c++){const h=l[c].keys;if(!(!h||h.length===0))if(h[0].morphTargets){const f={};let p;for(p=0;p<h.length;p++)if(h[p].morphTargets)for(let m=0;m<h[p].morphTargets.length;m++)f[h[p].morphTargets[m]]=-1;for(const m in f){const d=[],g=[];for(let y=0;y!==h[p].morphTargets.length;++y){const v=h[p];d.push(v.time),g.push(v.morphTarget===m?1:0)}i.push(new No(".morphTargetInfluence["+m+"]",d,g))}a=f.length*s}else{const f=".bones["+e[c].name+"]";t(zo,f+".position",h,"pos",i),t(gs,f+".quaternion",h,"rot",i),t(zo,f+".scale",h,"scl",i)}}return i.length===0?null:new this(r,a,i,o)}resetDuration(){const A=this.tracks;let e=0;for(let t=0,i=A.length;t!==i;++t){const r=this.tracks[t];e=Math.max(e,r.times[r.times.length-1])}return this.duration=e,this}trim(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].trim(0,this.duration);return this}validate(){let A=!0;for(let e=0;e<this.tracks.length;e++)A=A&&this.tracks[e].validate();return A}optimize(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].optimize();return this}clone(){const A=[];for(let e=0;e<this.tracks.length;e++)A.push(this.tracks[e].clone());return new this.constructor(this.name,this.duration,A,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function LD(n){switch(n.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return No;case"vector":case"vector2":case"vector3":case"vector4":return zo;case"color":return z1;case"quaternion":return gs;case"bool":case"boolean":return qo;case"string":return Bo}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+n)}function OD(n){if(n.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const A=LD(n.type);if(n.times===void 0){const e=[],t=[];B1(n.keys,e,t,"value"),n.times=e,n.values=t}return A.parse!==void 0?A.parse(n):new A(n.name,n.times,n.values,n.interpolation)}const mr={enabled:!1,files:{},add:function(n,A){this.enabled!==!1&&(this.files[n]=A)},get:function(n){if(this.enabled!==!1)return this.files[n]},remove:function(n){delete this.files[n]},clear:function(){this.files={}}};class R1{constructor(A,e,t){const i=this;let r=!1,s=0,o=0,a;const l=[];this.onStart=void 0,this.onLoad=A,this.onProgress=e,this.onError=t,this.itemStart=function(u){o++,r===!1&&i.onStart!==void 0&&i.onStart(u,s,o),r=!0},this.itemEnd=function(u){s++,i.onProgress!==void 0&&i.onProgress(u,s,o),s===o&&(r=!1,i.onLoad!==void 0&&i.onLoad())},this.itemError=function(u){i.onError!==void 0&&i.onError(u)},this.resolveURL=function(u){return a?a(u):u},this.setURLModifier=function(u){return a=u,this},this.addHandler=function(u,c){return l.push(u,c),this},this.removeHandler=function(u){const c=l.indexOf(u);return c!==-1&&l.splice(c,2),this},this.getHandler=function(u){for(let c=0,h=l.length;c<h;c+=2){const f=l[c],p=l[c+1];if(f.global&&(f.lastIndex=0),f.test(u))return p}return null}}}const qD=new R1;let vr=class{constructor(A){this.manager=A!==void 0?A:qD,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(A,e){const t=this;return new Promise(function(i,r){t.load(A,i,e,r)})}parse(){}setCrossOrigin(A){return this.crossOrigin=A,this}setWithCredentials(A){return this.withCredentials=A,this}setPath(A){return this.path=A,this}setResourcePath(A){return this.resourcePath=A,this}setRequestHeader(A){return this.requestHeader=A,this}};vr.DEFAULT_MATERIAL_NAME="__DEFAULT";const Fn={};class ND extends Error{constructor(A,e){super(A),this.response=e}}class Ll extends vr{constructor(A){super(A)}load(A,e,t,i){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=mr.get(A);if(r!==void 0)return this.manager.itemStart(A),setTimeout(()=>{e&&e(r),this.manager.itemEnd(A)},0),r;if(Fn[A]!==void 0){Fn[A].push({onLoad:e,onProgress:t,onError:i});return}Fn[A]=[],Fn[A].push({onLoad:e,onProgress:t,onError:i});const s=new Request(A,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),o=this.mimeType,a=this.responseType;fetch(s).then(l=>{if(l.status===200||l.status===0){if(l.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||l.body===void 0||l.body.getReader===void 0)return l;const u=Fn[A],c=l.body.getReader(),h=l.headers.get("X-File-Size")||l.headers.get("Content-Length"),f=h?parseInt(h):0,p=f!==0;let m=0;const d=new ReadableStream({start(g){y();function y(){c.read().then(({done:v,value:w})=>{if(v)g.close();else{m+=w.byteLength;const C=new ProgressEvent("progress",{lengthComputable:p,loaded:m,total:f});for(let _=0,x=u.length;_<x;_++){const S=u[_];S.onProgress&&S.onProgress(C)}g.enqueue(w),y()}})}}});return new Response(d)}else throw new ND(`fetch for "${l.url}" responded with ${l.status}: ${l.statusText}`,l)}).then(l=>{switch(a){case"arraybuffer":return l.arrayBuffer();case"blob":return l.blob();case"document":return l.text().then(u=>new DOMParser().parseFromString(u,o));case"json":return l.json();default:if(o===void 0)return l.text();{const c=/charset="?([^;"\s]*)"?/i.exec(o),h=c&&c[1]?c[1].toLowerCase():void 0,f=new TextDecoder(h);return l.arrayBuffer().then(p=>f.decode(p))}}}).then(l=>{mr.add(A,l);const u=Fn[A];delete Fn[A];for(let c=0,h=u.length;c<h;c++){const f=u[c];f.onLoad&&f.onLoad(l)}}).catch(l=>{const u=Fn[A];if(u===void 0)throw this.manager.itemError(A),l;delete Fn[A];for(let c=0,h=u.length;c<h;c++){const f=u[c];f.onError&&f.onError(l)}this.manager.itemError(A)}).finally(()=>{this.manager.itemEnd(A)}),this.manager.itemStart(A)}setResponseType(A){return this.responseType=A,this}setMimeType(A){return this.mimeType=A,this}}class BD extends vr{constructor(A){super(A)}load(A,e,t,i){this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=this,s=mr.get(A);if(s!==void 0)return r.manager.itemStart(A),setTimeout(function(){e&&e(s),r.manager.itemEnd(A)},0),s;const o=dl("img");function a(){u(),mr.add(A,this),e&&e(this),r.manager.itemEnd(A)}function l(c){u(),i&&i(c),r.manager.itemError(A),r.manager.itemEnd(A)}function u(){o.removeEventListener("load",a,!1),o.removeEventListener("error",l,!1)}return o.addEventListener("load",a,!1),o.addEventListener("error",l,!1),A.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(o.crossOrigin=this.crossOrigin),r.manager.itemStart(A),o.src=A,o}}class zD extends vr{constructor(A){super(A)}load(A,e,t,i){const r=this,s=new jt,o=new Ll(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(A,function(a){let l;try{l=r.parse(a)}catch(u){if(i!==void 0)i(u);else{console.error(u);return}}l.image!==void 0?s.image=l.image:l.data!==void 0&&(s.image.width=l.width,s.image.height=l.height,s.image.data=l.data),s.wrapS=l.wrapS!==void 0?l.wrapS:et,s.wrapT=l.wrapT!==void 0?l.wrapT:et,s.magFilter=l.magFilter!==void 0?l.magFilter:we,s.minFilter=l.minFilter!==void 0?l.minFilter:we,s.anisotropy=l.anisotropy!==void 0?l.anisotropy:1,l.colorSpace!==void 0&&(s.colorSpace=l.colorSpace),l.flipY!==void 0&&(s.flipY=l.flipY),l.format!==void 0&&(s.format=l.format),l.type!==void 0&&(s.type=l.type),l.mipmaps!==void 0&&(s.mipmaps=l.mipmaps,s.minFilter=zi),l.mipmapCount===1&&(s.minFilter=we),l.generateMipmaps!==void 0&&(s.generateMipmaps=l.generateMipmaps),s.needsUpdate=!0,e&&e(s,l)},t,i),s}}class Zp extends vr{constructor(A){super(A)}load(A,e,t,i){const r=new lt,s=new BD(this.manager);return s.setCrossOrigin(this.crossOrigin),s.setPath(this.path),s.load(A,function(o){r.image=o,r.needsUpdate=!0,e!==void 0&&e(r)},t,i),r}}class Xp extends Ie{constructor(A,e=1){super(),this.isLight=!0,this.type="Light",this.color=new KA(A),this.intensity=e}dispose(){}copy(A,e){return super.copy(A,e),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){const e=super.toJSON(A);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,this.groundColor!==void 0&&(e.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(e.object.distance=this.distance),this.angle!==void 0&&(e.object.angle=this.angle),this.decay!==void 0&&(e.object.decay=this.decay),this.penumbra!==void 0&&(e.object.penumbra=this.penumbra),this.shadow!==void 0&&(e.object.shadow=this.shadow.toJSON()),e}}const Qp=new zA,k1=new O,j1=new O;class Vp{constructor(A){this.camera=A,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new uA(512,512),this.map=null,this.mapPass=null,this.matrix=new zA,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new yp,this._frameExtents=new uA(1,1),this._viewportCount=1,this._viewports=[new ve(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(A){const e=this.camera,t=this.matrix;k1.setFromMatrixPosition(A.matrixWorld),e.position.copy(k1),j1.setFromMatrixPosition(A.target.matrixWorld),e.lookAt(j1),e.updateMatrixWorld(),Qp.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this._frustum.setFromProjectionMatrix(Qp),t.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),t.multiply(Qp)}getViewport(A){return this._viewports[A]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(A){return this.camera=A.camera.clone(),this.bias=A.bias,this.radius=A.radius,this.mapSize.copy(A.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const A={};return this.bias!==0&&(A.bias=this.bias),this.normalBias!==0&&(A.normalBias=this.normalBias),this.radius!==1&&(A.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(A.mapSize=this.mapSize.toArray()),A.camera=this.camera.toJSON(!1).object,delete A.camera.matrix,A}}class RD extends Vp{constructor(){super(new gt(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(A){const e=this.camera,t=ao*2*A.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=A.distance||e.far;(t!==e.fov||i!==e.aspect||r!==e.far)&&(e.fov=t,e.aspect=i,e.far=r,e.updateProjectionMatrix()),super.updateMatrices(A)}copy(A){return super.copy(A),this.focus=A.focus,this}}class kD extends Xp{constructor(A,e,t=0,i=Math.PI/3,r=0,s=2){super(A,e),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.distance=t,this.angle=i,this.penumbra=r,this.decay=s,this.map=null,this.shadow=new RD}get power(){return this.intensity*Math.PI}set power(A){this.intensity=A/Math.PI}dispose(){this.shadow.dispose()}copy(A,e){return super.copy(A,e),this.distance=A.distance,this.angle=A.angle,this.penumbra=A.penumbra,this.decay=A.decay,this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}const K1=new zA,Ol=new O,$p=new O;class jD extends Vp{constructor(){super(new gt(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new uA(4,2),this._viewportCount=6,this._viewports=[new ve(2,1,1,1),new ve(0,1,1,1),new ve(3,1,1,1),new ve(1,1,1,1),new ve(3,0,1,1),new ve(1,0,1,1)],this._cubeDirections=[new O(1,0,0),new O(-1,0,0),new O(0,0,1),new O(0,0,-1),new O(0,1,0),new O(0,-1,0)],this._cubeUps=[new O(0,1,0),new O(0,1,0),new O(0,1,0),new O(0,1,0),new O(0,0,1),new O(0,0,-1)]}updateMatrices(A,e=0){const t=this.camera,i=this.matrix,r=A.distance||t.far;r!==t.far&&(t.far=r,t.updateProjectionMatrix()),Ol.setFromMatrixPosition(A.matrixWorld),t.position.copy(Ol),$p.copy(t.position),$p.add(this._cubeDirections[e]),t.up.copy(this._cubeUps[e]),t.lookAt($p),t.updateMatrixWorld(),i.makeTranslation(-Ol.x,-Ol.y,-Ol.z),K1.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(K1)}}class KD extends Xp{constructor(A,e,t=0,i=2){super(A,e),this.isPointLight=!0,this.type="PointLight",this.distance=t,this.decay=i,this.shadow=new jD}get power(){return this.intensity*4*Math.PI}set power(A){this.intensity=A/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(A,e){return super.copy(A,e),this.distance=A.distance,this.decay=A.decay,this.shadow=A.shadow.clone(),this}}class FD extends Vp{constructor(){super(new Th(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class GD extends Xp{constructor(A,e){super(A,e),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(Ie.DEFAULT_UP),this.updateMatrix(),this.target=new Ie,this.shadow=new FD}dispose(){this.shadow.dispose()}copy(A){return super.copy(A),this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}class ql{static decodeText(A){if(typeof TextDecoder<"u")return new TextDecoder().decode(A);let e="";for(let t=0,i=A.length;t<i;t++)e+=String.fromCharCode(A[t]);try{return decodeURIComponent(escape(e))}catch{return e}}static extractUrlBase(A){const e=A.lastIndexOf("/");return e===-1?"./":A.slice(0,e+1)}static resolveURL(A,e){return typeof A!="string"||A===""?"":(/^https?:\/\//i.test(e)&&/^\//.test(A)&&(e=e.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(A)||/^data:.*,.*$/i.test(A)||/^blob:.*$/i.test(A)?A:e+A)}}class HD extends qe{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(A){return super.copy(A),this.instanceCount=A.instanceCount,this}toJSON(){const A=super.toJSON();return A.instanceCount=this.instanceCount,A.isInstancedBufferGeometry=!0,A}}class YD extends vr{constructor(A){super(A),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(A){return this.options=A,this}load(A,e,t,i){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const r=this,s=mr.get(A);if(s!==void 0){if(r.manager.itemStart(A),s.then){s.then(l=>{e&&e(l),r.manager.itemEnd(A)}).catch(l=>{i&&i(l)});return}return setTimeout(function(){e&&e(s),r.manager.itemEnd(A)},0),s}const o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader;const a=fetch(A,o).then(function(l){return l.blob()}).then(function(l){return createImageBitmap(l,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(l){return mr.add(A,l),e&&e(l),r.manager.itemEnd(A),l}).catch(function(l){i&&i(l),mr.remove(A),r.manager.itemError(A),r.manager.itemEnd(A)});mr.add(A,a),r.manager.itemStart(A)}}class F1{constructor(A=!0){this.autoStart=A,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=G1(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let A=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const e=G1();A=(e-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=A}return A}}function G1(){return(typeof performance>"u"?Date:performance).now()}const Ag="\\[\\]\\.:\\/",UD=new RegExp("["+Ag+"]","g"),eg="[^"+Ag+"]",WD="[^"+Ag.replace("\\.","")+"]",JD=/((?:WC+[\/:])*)/.source.replace("WC",eg),ZD=/(WCOD+)?/.source.replace("WCOD",WD),XD=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",eg),QD=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",eg),VD=new RegExp("^"+JD+ZD+XD+QD+"$"),$D=["material","materials","bones","map"];class AE{constructor(A,e,t){const i=t||xe.parseTrackName(e);this._targetGroup=A,this._bindings=A.subscribe_(e,i)}getValue(A,e){this.bind();const t=this._targetGroup.nCachedObjects_,i=this._bindings[t];i!==void 0&&i.getValue(A,e)}setValue(A,e){const t=this._bindings;for(let i=this._targetGroup.nCachedObjects_,r=t.length;i!==r;++i)t[i].setValue(A,e)}bind(){const A=this._bindings;for(let e=this._targetGroup.nCachedObjects_,t=A.length;e!==t;++e)A[e].bind()}unbind(){const A=this._bindings;for(let e=this._targetGroup.nCachedObjects_,t=A.length;e!==t;++e)A[e].unbind()}}class xe{constructor(A,e,t){this.path=e,this.parsedPath=t||xe.parseTrackName(e),this.node=xe.findNode(A,this.parsedPath.nodeName),this.rootNode=A,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(A,e,t){return A&&A.isAnimationObjectGroup?new xe.Composite(A,e,t):new xe(A,e,t)}static sanitizeNodeName(A){return A.replace(/\s/g,"_").replace(UD,"")}static parseTrackName(A){const e=VD.exec(A);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+A);const t={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=t.nodeName&&t.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){const r=t.nodeName.substring(i+1);$D.indexOf(r)!==-1&&(t.nodeName=t.nodeName.substring(0,i),t.objectName=r)}if(t.propertyName===null||t.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+A);return t}static findNode(A,e){if(e===void 0||e===""||e==="."||e===-1||e===A.name||e===A.uuid)return A;if(A.skeleton){const t=A.skeleton.getBoneByName(e);if(t!==void 0)return t}if(A.children){const t=function(r){for(let s=0;s<r.length;s++){const o=r[s];if(o.name===e||o.uuid===e)return o;const a=t(o.children);if(a)return a}return null},i=t(A.children);if(i)return i}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(A,e){A[e]=this.targetObject[this.propertyName]}_getValue_array(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)A[e++]=t[i]}_getValue_arrayElement(A,e){A[e]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(A,e){this.resolvedProperty.toArray(A,e)}_setValue_direct(A,e){this.targetObject[this.propertyName]=A[e]}_setValue_direct_setNeedsUpdate(A,e){this.targetObject[this.propertyName]=A[e],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(A,e){this.targetObject[this.propertyName]=A[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++]}_setValue_array_setNeedsUpdate(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(A,e){const t=this.resolvedProperty;for(let i=0,r=t.length;i!==r;++i)t[i]=A[e++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(A,e){this.resolvedProperty[this.propertyIndex]=A[e]}_setValue_arrayElement_setNeedsUpdate(A,e){this.resolvedProperty[this.propertyIndex]=A[e],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(A,e){this.resolvedProperty[this.propertyIndex]=A[e],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(A,e){this.resolvedProperty.fromArray(A,e)}_setValue_fromArray_setNeedsUpdate(A,e){this.resolvedProperty.fromArray(A,e),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(A,e){this.resolvedProperty.fromArray(A,e),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(A,e){this.bind(),this.getValue(A,e)}_setValue_unbound(A,e){this.bind(),this.setValue(A,e)}bind(){let A=this.node;const e=this.parsedPath,t=e.objectName,i=e.propertyName;let r=e.propertyIndex;if(A||(A=xe.findNode(this.rootNode,e.nodeName),this.node=A),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!A){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(t){let l=e.objectIndex;switch(t){case"materials":if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}A=A.material.materials;break;case"bones":if(!A.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}A=A.skeleton.bones;for(let u=0;u<A.length;u++)if(A[u].name===l){l=u;break}break;case"map":if("map"in A){A=A.map;break}if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}A=A.material.map;break;default:if(A[t]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}A=A[t]}if(l!==void 0){if(A[l]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,A);return}A=A[l]}}const s=A[i];if(s===void 0){const l=e.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+l+"."+i+" but it wasn't found.",A);return}let o=this.Versioning.None;this.targetObject=A,A.needsUpdate!==void 0?o=this.Versioning.NeedsUpdate:A.matrixWorldNeedsUpdate!==void 0&&(o=this.Versioning.MatrixWorldNeedsUpdate);let a=this.BindingType.Direct;if(r!==void 0){if(i==="morphTargetInfluences"){if(!A.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!A.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}A.morphTargetDictionary[r]!==void 0&&(r=A.morphTargetDictionary[r])}a=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else s.fromArray!==void 0&&s.toArray!==void 0?(a=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(a=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[a],this.setValue=this.SetterByBindingTypeAndVersioning[a][o]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}xe.Composite=AE,xe.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},xe.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},xe.prototype.GetterByBindingType=[xe.prototype._getValue_direct,xe.prototype._getValue_array,xe.prototype._getValue_arrayElement,xe.prototype._getValue_toArray],xe.prototype.SetterByBindingTypeAndVersioning=[[xe.prototype._setValue_direct,xe.prototype._setValue_direct_setNeedsUpdate,xe.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_array,xe.prototype._setValue_array_setNeedsUpdate,xe.prototype._setValue_array_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_arrayElement,xe.prototype._setValue_arrayElement_setNeedsUpdate,xe.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[xe.prototype._setValue_fromArray,xe.prototype._setValue_fromArray_setNeedsUpdate,xe.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class tg{constructor(A){this.value=A}clone(){return new tg(this.value.clone===void 0?this.value:this.value.clone())}}const H1=new zA;class eE{constructor(A,e,t=0,i=1/0){this.ray=new os(A,e),this.near=t,this.far=i,this.camera=null,this.layers=new lp,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(A,e){this.ray.set(A,e)}setFromCamera(A,e){e.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(A.x,A.y,.5).unproject(e).sub(this.ray.origin).normalize(),this.camera=e):e.isOrthographicCamera?(this.ray.origin.set(A.x,A.y,(e.near+e.far)/(e.near-e.far)).unproject(e),this.ray.direction.set(0,0,-1).transformDirection(e.matrixWorld),this.camera=e):console.error("THREE.Raycaster: Unsupported camera type: "+e.type)}setFromXRController(A){return H1.identity().extractRotation(A.matrixWorld),this.ray.origin.setFromMatrixPosition(A.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(H1),this}intersectObject(A,e=!0,t=[]){return ig(A,this,t,e),t.sort(Y1),t}intersectObjects(A,e=!0,t=[]){for(let i=0,r=A.length;i<r;i++)ig(A[i],this,t,e);return t.sort(Y1),t}}function Y1(n,A){return n.distance-A.distance}function ig(n,A,e,t){if(n.layers.test(A.layers)&&n.raycast(A,e),t===!0){const i=n.children;for(let r=0,s=i.length;r<s;r++)ig(i[r],A,e,!0)}}class ng{constructor(A=1,e=0,t=0){return this.radius=A,this.phi=e,this.theta=t,this}set(A,e,t){return this.radius=A,this.phi=e,this.theta=t,this}copy(A){return this.radius=A.radius,this.phi=A.phi,this.theta=A.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(A){return this.setFromCartesianCoords(A.x,A.y,A.z)}setFromCartesianCoords(A,e,t){return this.radius=Math.sqrt(A*A+e*e+t*t),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(A,t),this.phi=Math.acos(Qe(e/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}const U1=new O,Vh=new O;class De{constructor(A=new O,e=new O){this.start=A,this.end=e}set(A,e){return this.start.copy(A),this.end.copy(e),this}copy(A){return this.start.copy(A.start),this.end.copy(A.end),this}getCenter(A){return A.addVectors(this.start,this.end).multiplyScalar(.5)}delta(A){return A.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(A,e){return this.delta(e).multiplyScalar(A).add(this.start)}closestPointToPointParameter(A,e){U1.subVectors(A,this.start),Vh.subVectors(this.end,this.start);const t=Vh.dot(Vh);let r=Vh.dot(U1)/t;return e&&(r=Qe(r,0,1)),r}closestPointToPoint(A,e,t){const i=this.closestPointToPointParameter(A,e);return this.delta(t).multiplyScalar(i).add(this.start)}applyMatrix4(A){return this.start.applyMatrix4(A),this.end.applyMatrix4(A),this}equals(A){return A.start.equals(this.start)&&A.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}class tE{constructor(){this.type="ShapePath",this.color=new KA,this.subPaths=[],this.currentPath=null}moveTo(A,e){return this.currentPath=new Gp,this.subPaths.push(this.currentPath),this.currentPath.moveTo(A,e),this}lineTo(A,e){return this.currentPath.lineTo(A,e),this}quadraticCurveTo(A,e,t,i){return this.currentPath.quadraticCurveTo(A,e,t,i),this}bezierCurveTo(A,e,t,i,r,s){return this.currentPath.bezierCurveTo(A,e,t,i,r,s),this}splineThru(A){return this.currentPath.splineThru(A),this}toShapes(A){function e(g){const y=[];for(let v=0,w=g.length;v<w;v++){const C=g[v],_=new Yp;_.curves=C.curves,y.push(_)}return y}function t(g,y){const v=y.length;let w=!1;for(let C=v-1,_=0;_<v;C=_++){let x=y[C],S=y[_],b=S.x-x.x,I=S.y-x.y;if(Math.abs(I)>Number.EPSILON){if(I<0&&(x=y[_],b=-b,S=y[C],I=-I),g.y<x.y||g.y>S.y)continue;if(g.y===x.y){if(g.x===x.x)return!0}else{const D=I*(g.x-x.x)-b*(g.y-x.y);if(D===0)return!0;if(D<0)continue;w=!w}}else{if(g.y!==x.y)continue;if(S.x<=g.x&&g.x<=x.x||x.x<=g.x&&g.x<=S.x)return!0}}return w}const i=Jp.isClockWise,r=this.subPaths;if(r.length===0)return[];let s,o,a;const l=[];if(r.length===1)return o=r[0],a=new Yp,a.curves=o.curves,l.push(a),l;let u=!i(r[0].getPoints());u=A?!u:u;const c=[],h=[];let f=[],p=0,m;h[p]=void 0,f[p]=[];for(let g=0,y=r.length;g<y;g++)o=r[g],m=o.getPoints(),s=i(m),s=A?!s:s,s?(!u&&h[p]&&p++,h[p]={s:new Yp,p:m},h[p].s.curves=o.curves,u&&p++,f[p]=[]):f[p].push({h:o,p:m[0]});if(!h[0])return e(r);if(h.length>1){let g=!1,y=0;for(let v=0,w=h.length;v<w;v++)c[v]=[];for(let v=0,w=h.length;v<w;v++){const C=f[v];for(let _=0;_<C.length;_++){const x=C[_];let S=!0;for(let b=0;b<h.length;b++)t(x.p,h[b].p)&&(v!==b&&y++,S?(S=!1,c[b].push(x)):g=!0);S&&c[v].push(x)}}y>0&&g===!1&&(f=c)}let d;for(let g=0,y=h.length;g<y;g++){a=h[g].s,l.push(a),d=f[g];for(let v=0,w=d.length;v<w;v++)a.holes.push(d[v].h)}return l}}typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:Qc}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=Qc);class iE extends zD{constructor(A){super(A),this.type=Oe}parse(A){const s=function(S,b){switch(S){case 1:throw new Error("THREE.RGBELoader: Read Error: "+(b||""));case 2:throw new Error("THREE.RGBELoader: Write Error: "+(b||""));case 3:throw new Error("THREE.RGBELoader: Bad File Format: "+(b||""));default:case 4:throw new Error("THREE.RGBELoader: Memory Error: "+(b||""))}},u=`
3826
3826
  `,c=function(S,b,I){b=b||1024;let P=S.pos,M=-1,T=0,q="",B=String.fromCharCode.apply(null,new Uint16Array(S.subarray(P,P+128)));for(;0>(M=B.indexOf(u))&&T<b&&P<S.byteLength;)q+=B,T+=B.length,P+=128,B+=String.fromCharCode.apply(null,new Uint16Array(S.subarray(P,P+128)));return-1<M?(I!==!1&&(S.pos+=T+M+1),q+B.slice(0,M)):!1},h=function(S){const b=/^#\?(\S+)/,I=/^\s*GAMMA\s*=\s*(\d+(\.\d+)?)\s*$/,D=/^\s*EXPOSURE\s*=\s*(\d+(\.\d+)?)\s*$/,P=/^\s*FORMAT=(\S+)\s*$/,M=/^\s*\-Y\s+(\d+)\s+\+X\s+(\d+)\s*$/,T={valid:0,string:"",comments:"",programtype:"RGBE",format:"",gamma:1,exposure:1,width:0,height:0};let q,B;for((S.pos>=S.byteLength||!(q=c(S)))&&s(1,"no header found"),(B=q.match(b))||s(3,"bad initial token"),T.valid|=1,T.programtype=B[1],T.string+=q+`
3827
3827
  `;q=c(S),q!==!1;){if(T.string+=q+`
3828
3828
  `,q.charAt(0)==="#"){T.comments+=q+`
3829
- `;continue}if((B=q.match(I))&&(T.gamma=parseFloat(B[1])),(B=q.match(D))&&(T.exposure=parseFloat(B[1])),(B=q.match(P))&&(T.valid|=2,T.format=B[1]),(B=q.match(M))&&(T.valid|=4,T.height=parseInt(B[1],10),T.width=parseInt(B[2],10)),T.valid&2&&T.valid&4)break}return T.valid&2||s(3,"missing format specifier"),T.valid&4||s(3,"missing image size specifier"),T},f=function(S,b,I){const D=b;if(D<8||D>32767||S[0]!==2||S[1]!==2||S[2]&128)return new Uint8Array(S);D!==(S[2]<<8|S[3])&&s(3,"wrong scanline width");const P=new Uint8Array(4*b*I);P.length||s(4,"unable to allocate buffer space");let M=0,T=0;const q=4*D,B=new Uint8Array(4),W=new Uint8Array(q);let K=I;for(;K>0&&T<S.byteLength;){T+4>S.byteLength&&s(1),B[0]=S[T++],B[1]=S[T++],B[2]=S[T++],B[3]=S[T++],(B[0]!=2||B[1]!=2||(B[2]<<8|B[3])!=D)&&s(3,"bad rgbe scanline format");let U=0,k;for(;U<q&&T<S.byteLength;){k=S[T++];const Y=k>128;if(Y&&(k-=128),(k===0||U+k>q)&&s(3,"bad scanline data"),Y){const X=S[T++];for(let j=0;j<k;j++)W[U++]=X}else W.set(S.subarray(T,T+k),U),U+=k,T+=k}const N=D;for(let Y=0;Y<N;Y++){let X=0;P[M]=W[Y+X],X+=D,P[M+1]=W[Y+X],X+=D,P[M+2]=W[Y+X],X+=D,P[M+3]=W[Y+X],M+=4}K--}return P},p=function(S,b,I,D){const P=S[b+3],M=Math.pow(2,P-128)/255;I[D+0]=S[b+0]*M,I[D+1]=S[b+1]*M,I[D+2]=S[b+2]*M,I[D+3]=1},m=function(S,b,I,D){const P=S[b+3],M=Math.pow(2,P-128)/255;I[D+0]=ii.toHalfFloat(Math.min(S[b+0]*M,65504)),I[D+1]=ii.toHalfFloat(Math.min(S[b+1]*M,65504)),I[D+2]=ii.toHalfFloat(Math.min(S[b+2]*M,65504)),I[D+3]=ii.toHalfFloat(1)},d=new Uint8Array(A);d.pos=0;const g=h(d),y=g.width,v=g.height,w=f(d.subarray(d.pos),y,v);let C,_,x;switch(this.type){case Me:x=w.length/4;const S=new Float32Array(x*4);for(let I=0;I<x;I++)p(w,I*4,S,I*4);C=S,_=Me;break;case Oe:x=w.length/4;const b=new Uint16Array(x*4);for(let I=0;I<x;I++)m(w,I*4,b,I*4);C=b,_=Oe;break;default:throw new Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:y,height:v,data:C,header:g.string,gamma:g.gamma,exposure:g.exposure,type:_}}setDataType(A){return this.type=A,this}load(A,e,t,i){function r(s,o){switch(s.type){case Me:case Oe:s.colorSpace=at,s.minFilter=we,s.magFilter=we,s.generateMipmaps=!1,s.flipY=!0;break}e&&e(s,o)}return super.load(A,r,t,i)}}class Ro{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const nE=new Th(-1,1,1,-1,0,1);class rE extends qe{constructor(){super(),this.setAttribute("position",new Dt([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt([0,2,0,0,2,0],2))}}const sE=new rE;class Gn{constructor(A){this._mesh=new Te(sE,A)}dispose(){this._mesh.geometry.dispose()}render(A){A.render(this._mesh,nE)}get material(){return this._mesh.material}set material(A){this._mesh.material=A}}class oE extends Ro{constructor(A,e,t=null,i=null,r=null){super(),this.scene=A,this.camera=e,this.overrideMaterial=t,this.clearColor=i,this.clearAlpha=r,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new KA}render(A,e,t){const i=A.autoClear;A.autoClear=!1;let r,s;this.overrideMaterial!==null&&(s=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(A.getClearColor(this._oldClearColor),A.setClearColor(this.clearColor)),this.clearAlpha!==null&&(r=A.getClearAlpha(),A.setClearAlpha(this.clearAlpha)),this.clearDepth==!0&&A.clearDepth(),A.setRenderTarget(this.renderToScreen?null:t),this.clear===!0&&A.clear(A.autoClearColor,A.autoClearDepth,A.autoClearStencil),A.render(this.scene,this.camera),this.clearColor!==null&&A.setClearColor(this._oldClearColor),this.clearAlpha!==null&&A.setClearAlpha(r),this.overrideMaterial!==null&&(this.scene.overrideMaterial=s),A.autoClear=i}}const W1={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
3829
+ `;continue}if((B=q.match(I))&&(T.gamma=parseFloat(B[1])),(B=q.match(D))&&(T.exposure=parseFloat(B[1])),(B=q.match(P))&&(T.valid|=2,T.format=B[1]),(B=q.match(M))&&(T.valid|=4,T.height=parseInt(B[1],10),T.width=parseInt(B[2],10)),T.valid&2&&T.valid&4)break}return T.valid&2||s(3,"missing format specifier"),T.valid&4||s(3,"missing image size specifier"),T},f=function(S,b,I){const D=b;if(D<8||D>32767||S[0]!==2||S[1]!==2||S[2]&128)return new Uint8Array(S);D!==(S[2]<<8|S[3])&&s(3,"wrong scanline width");const P=new Uint8Array(4*b*I);P.length||s(4,"unable to allocate buffer space");let M=0,T=0;const q=4*D,B=new Uint8Array(4),W=new Uint8Array(q);let K=I;for(;K>0&&T<S.byteLength;){T+4>S.byteLength&&s(1),B[0]=S[T++],B[1]=S[T++],B[2]=S[T++],B[3]=S[T++],(B[0]!=2||B[1]!=2||(B[2]<<8|B[3])!=D)&&s(3,"bad rgbe scanline format");let U=0,k;for(;U<q&&T<S.byteLength;){k=S[T++];const Y=k>128;if(Y&&(k-=128),(k===0||U+k>q)&&s(3,"bad scanline data"),Y){const X=S[T++];for(let j=0;j<k;j++)W[U++]=X}else W.set(S.subarray(T,T+k),U),U+=k,T+=k}const N=D;for(let Y=0;Y<N;Y++){let X=0;P[M]=W[Y+X],X+=D,P[M+1]=W[Y+X],X+=D,P[M+2]=W[Y+X],X+=D,P[M+3]=W[Y+X],M+=4}K--}return P},p=function(S,b,I,D){const P=S[b+3],M=Math.pow(2,P-128)/255;I[D+0]=S[b+0]*M,I[D+1]=S[b+1]*M,I[D+2]=S[b+2]*M,I[D+3]=1},m=function(S,b,I,D){const P=S[b+3],M=Math.pow(2,P-128)/255;I[D+0]=ii.toHalfFloat(Math.min(S[b+0]*M,65504)),I[D+1]=ii.toHalfFloat(Math.min(S[b+1]*M,65504)),I[D+2]=ii.toHalfFloat(Math.min(S[b+2]*M,65504)),I[D+3]=ii.toHalfFloat(1)},d=new Uint8Array(A);d.pos=0;const g=h(d),y=g.width,v=g.height,w=f(d.subarray(d.pos),y,v);let C,_,x;switch(this.type){case Me:x=w.length/4;const S=new Float32Array(x*4);for(let I=0;I<x;I++)p(w,I*4,S,I*4);C=S,_=Me;break;case Oe:x=w.length/4;const b=new Uint16Array(x*4);for(let I=0;I<x;I++)m(w,I*4,b,I*4);C=b,_=Oe;break;default:throw new Error("THREE.RGBELoader: Unsupported type: "+this.type)}return{width:y,height:v,data:C,header:g.string,gamma:g.gamma,exposure:g.exposure,type:_}}setDataType(A){return this.type=A,this}load(A,e,t,i){function r(s,o){switch(s.type){case Me:case Oe:s.colorSpace=at,s.minFilter=we,s.magFilter=we,s.generateMipmaps=!1,s.flipY=!0;break}e&&e(s,o)}return super.load(A,r,t,i)}}class Ro{constructor(){this.isPass=!0,this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}}const nE=new Th(-1,1,1,-1,0,1);class rE extends qe{constructor(){super(),this.setAttribute("position",new Dt([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new Dt([0,2,0,0,2,0],2))}}const sE=new rE;class Gn{constructor(A){this._mesh=new Pe(sE,A)}dispose(){this._mesh.geometry.dispose()}render(A){A.render(this._mesh,nE)}get material(){return this._mesh.material}set material(A){this._mesh.material=A}}class oE extends Ro{constructor(A,e,t=null,i=null,r=null){super(),this.scene=A,this.camera=e,this.overrideMaterial=t,this.clearColor=i,this.clearAlpha=r,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new KA}render(A,e,t){const i=A.autoClear;A.autoClear=!1;let r,s;this.overrideMaterial!==null&&(s=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor!==null&&(A.getClearColor(this._oldClearColor),A.setClearColor(this.clearColor)),this.clearAlpha!==null&&(r=A.getClearAlpha(),A.setClearAlpha(this.clearAlpha)),this.clearDepth==!0&&A.clearDepth(),A.setRenderTarget(this.renderToScreen?null:t),this.clear===!0&&A.clear(A.autoClearColor,A.autoClearDepth,A.autoClearStencil),A.render(this.scene,this.camera),this.clearColor!==null&&A.setClearColor(this._oldClearColor),this.clearAlpha!==null&&A.setClearAlpha(r),this.overrideMaterial!==null&&(this.scene.overrideMaterial=s),A.autoClear=i}}const W1={name:"CopyShader",uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:`
3830
3830
 
3831
3831
  varying vec2 vUv;
3832
3832
 
@@ -4598,7 +4598,7 @@ struct BVH {
4598
4598
  usampler2D bvhContents;
4599
4599
 
4600
4600
  };
4601
- `;function xC(n,A,e=0){if(n.isInterleavedBufferAttribute){const t=n.itemSize;for(let i=0,r=n.count;i<r;i++){const s=i+e;A.setX(s,n.getX(i)),t>=2&&A.setY(s,n.getY(i)),t>=3&&A.setZ(s,n.getZ(i)),t>=4&&A.setW(s,n.getW(i))}}else{const t=A.array,i=t.constructor,r=t.BYTES_PER_ELEMENT*n.itemSize*e;new i(t.buffer,r,n.array.length).set(n.array)}}function Gl(n,A=null){const e=n.array.constructor,t=n.normalized,i=n.itemSize,r=A===null?n.count:A;return new ce(new e(i*r),i,t)}function Qo(n,A){if(!n&&!A)return!0;if(!!n!=!!A)return!1;const e=n.count===A.count,t=n.normalized===A.normalized,i=n.array.constructor===A.array.constructor,r=n.itemSize===A.itemSize;return!(!e||!t||!i||!r)}function wL(n){const A=n[0].index!==null,e=new Set(Object.keys(n[0].attributes));if(!n[0].getAttribute("position"))throw new Error("StaticGeometryGenerator: position attribute is required.");for(let t=0;t<n.length;++t){const i=n[t];let r=0;if(A!==(i.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const s in i.attributes){if(!e.has(s))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+s+'" attribute exists among all geometries, or in none of them.');r++}if(r!==e.size)throw new Error("StaticGeometryGenerator: All geometries must have the same number of attributes.")}}function CL(n){let A=0;for(let e=0,t=n.length;e<t;e++)A+=n[e].getIndex().count;return A}function xL(n){let A=0;for(let e=0,t=n.length;e<t;e++)A+=n[e].getAttribute("position").count;return A}function IL(n,A,e){n.index&&n.index.count!==A&&n.setIndex(null);const t=n.attributes;for(const i in t)t[i].count!==e&&n.deleteAttribute(i)}function bL(n,A={},e=new qe){const{useGroups:t=!1,forceUpdate:i=!1,skipAssigningAttributes:r=[],overwriteIndex:s=!0}=A;wL(n);const o=n[0].index!==null,a=o?CL(n):-1,l=xL(n);if(IL(e,a,l),t){let c=0;for(let h=0,f=n.length;h<f;h++){const p=n[h];let m;o?m=p.getIndex().count:m=p.getAttribute("position").count,e.addGroup(c,m,h),c+=m}}if(o){let c=!1;if(e.index||(e.setIndex(new ce(new Uint32Array(a),1,!1)),c=!0),c||s){let h=0,f=0;const p=e.getIndex();for(let m=0,d=n.length;m<d;m++){const g=n[m],y=g.getIndex();if(!(!i&&!c&&r[m]))for(let w=0;w<y.count;++w)p.setX(h+w,y.getX(w)+f);h+=y.count,f+=g.getAttribute("position").count}}}const u=Object.keys(n[0].attributes);for(let c=0,h=u.length;c<h;c++){let f=!1;const p=u[c];if(!e.getAttribute(p)){const g=n[0].getAttribute(p);e.setAttribute(p,Gl(g,l)),f=!0}let m=0;const d=e.getAttribute(p);for(let g=0,y=n.length;g<y;g++){const v=n[g],w=!i&&!f&&r[g],C=v.getAttribute(p);w||xC(C,d,m),m+=C.count}}}function _L(n,A,e){const t=n.index,r=n.attributes.position.count,s=t?t.count:r;let o=n.groups;o.length===0&&(o=[{count:s,start:0,materialIndex:0}]);let a=n.getAttribute("materialIndex");if(!a||a.count!==r){let u;e.length<=255?u=new Uint8Array(r):u=new Uint16Array(r),a=new ce(u,1,!1),n.deleteAttribute("materialIndex"),n.setAttribute("materialIndex",a)}const l=a.array;for(let u=0;u<o.length;u++){const c=o[u],h=c.start,f=c.count,p=Math.min(f,s-h),m=Array.isArray(A)?A[c.materialIndex]:A,d=e.indexOf(m);for(let g=0;g<p;g++){let y=h+g;t&&(y=t.getX(y)),l[y]=d}}}function SL(n,A){if(!n.index){const e=n.attributes.position.count,t=new Array(e);for(let i=0;i<e;i++)t[i]=i;n.setIndex(t)}if(!n.attributes.normal&&A&&A.includes("normal")&&n.computeVertexNormals(),!n.attributes.uv&&A&&A.includes("uv")){const e=n.attributes.position.count;n.setAttribute("uv",new ce(new Float32Array(e*2),2,!1))}if(!n.attributes.uv2&&A&&A.includes("uv2")){const e=n.attributes.position.count;n.setAttribute("uv2",new ce(new Float32Array(e*2),2,!1))}if(!n.attributes.tangent&&A&&A.includes("tangent"))if(n.attributes.uv&&n.attributes.normal)n.computeTangents();else{const e=n.attributes.position.count;n.setAttribute("tangent",new ce(new Float32Array(e*4),4,!1))}if(!n.attributes.color&&A&&A.includes("color")){const e=n.attributes.position.count,t=new Float32Array(e*4);t.fill(1),n.setAttribute("color",new ce(t,4))}}function Tg(n){let A=0;if(n.byteLength!==0){const e=new Uint8Array(n);for(let t=0;t<n.byteLength;t++){const i=e[t];A=(A<<5)-A+i,A|=0}}return A}function IC(n){let A=n.uuid;const e=Object.values(n.attributes);n.index&&(e.push(n.index),A+=`index|${n.index.version}`);const t=Object.keys(e).sort();for(const i of t){const r=e[i];A+=`${i}_${r.version}|`}return A}function bC(n){const A=n.skeleton;return A?(A.boneTexture||A.computeBoneTexture(),`${Tg(A.boneTexture.image.data.buffer)}_${A.boneTexture.uuid}`):null}class ML{constructor(A=null){this.matrixWorld=new zA,this.geometryHash=null,this.skeletonHash=null,this.primitiveCount=-1,A!==null&&this.updateFrom(A)}updateFrom(A){const e=A.geometry,t=(e.index?e.index.count:e.attributes.position.count)/3;this.matrixWorld.copy(A.matrixWorld),this.geometryHash=IC(e),this.primitiveCount=t,this.skeletonHash=bC(A)}didChange(A){const e=A.geometry,t=(e.index?e.index.count:e.attributes.position.count)/3;return!(this.matrixWorld.equals(A.matrixWorld)&&this.geometryHash===IC(e)&&this.skeletonHash===bC(A)&&this.primitiveCount===t)}}const ms=new O,vs=new O,ys=new O,_C=new ve,vu=new O,Dg=new O,SC=new ve,MC=new ve,yu=new zA,PC=new zA;function TC(n,A,e){const t=n.skeleton,i=n.geometry,r=t.bones,s=t.boneInverses;SC.fromBufferAttribute(i.attributes.skinIndex,A),MC.fromBufferAttribute(i.attributes.skinWeight,A),yu.elements.fill(0);for(let o=0;o<4;o++){const a=MC.getComponent(o);if(a!==0){const l=SC.getComponent(o);PC.multiplyMatrices(r[l].matrixWorld,s[l]),PL(yu,PC,a)}}return yu.multiply(n.bindMatrix).premultiply(n.bindMatrixInverse),e.transformDirection(yu),e}function Eg(n,A,e,t,i){vu.set(0,0,0);for(let r=0,s=n.length;r<s;r++){const o=A[r],a=n[r];o!==0&&(Dg.fromBufferAttribute(a,t),e?vu.addScaledVector(Dg,o):vu.addScaledVector(Dg.sub(i),o))}i.add(vu)}function PL(n,A,e){const t=n.elements,i=A.elements;for(let r=0,s=i.length;r<s;r++)t[r]+=i[r]*e}function TL(n){const{index:A,attributes:e}=n;if(A)for(let t=0,i=A.count;t<i;t+=3){const r=A.getX(t),s=A.getX(t+2);A.setX(t,s),A.setX(t+2,r)}else for(const t in e){const i=e[t],r=i.itemSize;for(let s=0,o=i.count;s<o;s+=3)for(let a=0;a<r;a++){const l=i.getComponent(s,a),u=i.getComponent(s+2,a);i.setComponent(s,a,u),i.setComponent(s+2,a,l)}}return n}function DL(n,A={},e=new qe){A={applyWorldTransforms:!0,attributes:[],...A};const t=n.geometry,i=A.applyWorldTransforms,r=A.attributes.includes("normal"),s=A.attributes.includes("tangent"),o=t.attributes,a=e.attributes;for(const y in e.attributes)(!A.attributes.includes(y)||!(y in t.attributes))&&e.deleteAttribute(y);!e.index&&t.index&&(e.index=t.index.clone()),a.position||e.setAttribute("position",Gl(o.position)),r&&!a.normal&&o.normal&&e.setAttribute("normal",Gl(o.normal)),s&&!a.tangent&&o.tangent&&e.setAttribute("tangent",Gl(o.tangent)),Qo(t.index,e.index),Qo(o.position,a.position),r&&Qo(o.normal,a.normal),s&&Qo(o.tangent,a.tangent);const l=o.position,u=r?o.normal:null,c=s?o.tangent:null,h=t.morphAttributes.position,f=t.morphAttributes.normal,p=t.morphAttributes.tangent,m=t.morphTargetsRelative,d=n.morphTargetInfluences,g=new le;g.getNormalMatrix(n.matrixWorld),t.index&&e.index.array.set(t.index.array);for(let y=0,v=o.position.count;y<v;y++)ms.fromBufferAttribute(l,y),u&&vs.fromBufferAttribute(u,y),c&&(_C.fromBufferAttribute(c,y),ys.fromBufferAttribute(c,y)),d&&(h&&Eg(h,d,m,y,ms),f&&Eg(f,d,m,y,vs),p&&Eg(p,d,m,y,ys)),n.isSkinnedMesh&&(n.applyBoneTransform(y,ms),u&&TC(n,y,vs),c&&TC(n,y,ys)),i&&ms.applyMatrix4(n.matrixWorld),a.position.setXYZ(y,ms.x,ms.y,ms.z),u&&(i&&vs.applyNormalMatrix(g),a.normal.setXYZ(y,vs.x,vs.y,vs.z)),c&&(i&&ys.transformDirection(n.matrixWorld),a.tangent.setXYZW(y,ys.x,ys.y,ys.z,_C.w));for(const y in A.attributes){const v=A.attributes[y];v==="position"||v==="tangent"||v==="normal"||!(v in o)||(a[v]||e.setAttribute(v,Gl(o[v])),Qo(o[v],a[v]),xC(o[v],a[v]))}return n.matrixWorld.determinant()<0&&TL(e),e}class EL extends qe{constructor(){super(),this.version=0,this.hash=null,this._diff=new ML}isCompatible(A,e){const t=A.geometry;for(let i=0;i<e.length;i++){const r=e[i],s=t.attributes[r],o=this.attributes[r];if(s&&!Qo(s,o))return!1}return!0}updateFrom(A,e){const t=this._diff;return t.didChange(A)?(DL(A,e,this),t.updateFrom(A),this.version++,this.hash=`${this.uuid}_${this.version}`,!0):!1}}const Lg=0,DC=1,EC=2;function LL(n,A){for(let e=0,t=n.length;e<t;e++)n[e].traverseVisible(r=>{r.isMesh&&A(r)})}function OL(n){const A=[];for(let e=0,t=n.length;e<t;e++){const i=n[e];Array.isArray(i.material)?A.push(...i.material):A.push(i.material)}return A}function qL(n,A,e){if(n.length===0){A.setIndex(null);const t=A.attributes;for(const i in t)A.deleteAttribute(i);for(const i in e.attributes)A.setAttribute(e.attributes[i],new ce(new Float32Array(0),4,!1))}else bL(n,e,A);for(const t in A.attributes)A.attributes[t].needsUpdate=!0}class NL{constructor(A){this.objects=null,this.useGroups=!0,this.applyWorldTransforms=!0,this.generateMissingAttributes=!0,this.overwriteIndex=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Map,this._geometryMergeSets=new WeakMap,this._mergeOrder=[],this._dummyMesh=null,this.setObjects(A||[])}_getDummyMesh(){if(!this._dummyMesh){const A=new ti,e=new qe;e.setAttribute("position",new ce(new Float32Array(9),3)),this._dummyMesh=new Te(e,A)}return this._dummyMesh}_getMeshes(){const A=[];return LL(this.objects,e=>{A.push(e)}),A.sort((e,t)=>e.uuid>t.uuid?1:e.uuid<t.uuid?-1:0),A.length===0&&A.push(this._getDummyMesh()),A}_updateIntermediateGeometries(){const{_intermediateGeometry:A}=this,e=this._getMeshes(),t=new Set(A.keys()),i={attributes:this.attributes,applyWorldTransforms:this.applyWorldTransforms};for(let r=0,s=e.length;r<s;r++){const o=e[r],a=o.uuid;t.delete(a);let l=A.get(a);(!l||!l.isCompatible(o,this.attributes))&&(l&&l.dispose(),l=new EL,A.set(a,l)),l.updateFrom(o,i)&&this.generateMissingAttributes&&SL(l,this.attributes)}t.forEach(r=>{A.delete(r)})}setObjects(A){Array.isArray(A)?this.objects=[...A]:this.objects=[A]}generate(A=new qe){const{useGroups:e,overwriteIndex:t,_intermediateGeometry:i,_geometryMergeSets:r}=this,s=this._getMeshes(),o=[],a=[],l=r.get(A)||[];this._updateIntermediateGeometries();let u=!1;s.length!==l.length&&(u=!0);for(let h=0,f=s.length;h<f;h++){const p=s[h],m=i.get(p.uuid);a.push(m);const d=l[h];!d||d.uuid!==m.uuid?(o.push(!1),u=!0):d.version!==m.version?o.push(!1):o.push(!0)}qL(a,A,{useGroups:e,forceUpdate:u,skipAssigningAttributes:o,overwriteIndex:t}),u&&A.dispose(),r.set(A,a.map(h=>({version:h.version,uuid:h.uuid})));let c=Lg;return u?c=EC:o.includes(!1)&&(c=DC),{changeType:c,materials:OL(s),geometry:A}}}function BL(n){const A=new Set;for(let e=0,t=n.length;e<t;e++){const i=n[e];for(const r in i){const s=i[r];s&&s.isTexture&&A.add(s)}}return Array.from(A)}function zL(n){const A=[],e=new Set;for(let i=0,r=n.length;i<r;i++)n[i].traverse(s=>{s.visible&&(s.isRectAreaLight||s.isSpotLight||s.isPointLight||s.isDirectionalLight)&&(A.push(s),s.iesMap&&e.add(s.iesMap))});const t=Array.from(e).sort((i,r)=>i.uuid<r.uuid?1:i.uuid>r.uuid?-1:0);return{lights:A,iesTextures:t}}class RL{get initialized(){return!!this.bvh}constructor(A){this.bvhOptions={},this.attributes=["position","normal","tangent","color","uv","uv2"],this.generateBVH=!0,this.bvh=null,this.geometry=new qe,this.staticGeometryGenerator=new NL(A),this._bvhWorker=null,this._pendingGenerate=null,this._buildAsync=!1}setObjects(A){this.staticGeometryGenerator.setObjects(A)}setBVHWorker(A){this._bvhWorker=A}async generateAsync(A=null){if(!this._bvhWorker)throw new Error('PathTracingSceneGenerator: "setBVHWorker" must be called before "generateAsync" can be called.');if(this.bvh instanceof Promise)return this._pendingGenerate||(this._pendingGenerate=new Promise(async()=>(await this.bvh,this._pendingGenerate=null,this.generateAsync(A)))),this._pendingGenerate;{this._buildAsync=!0;const e=this.generate(A);return this._buildAsync=!1,e.bvh=this.bvh=await e.bvh,e}}generate(A=null){const{staticGeometryGenerator:e,geometry:t,attributes:i}=this,r=e.objects;e.attributes=i,r.forEach(c=>{c.traverse(h=>{h.isSkinnedMesh&&h.skeleton&&h.skeleton.update()})});const s=e.generate(t),o=s.materials,a=BL(o),{lights:l,iesTextures:u}=zL(r);if(s.changeType!==Lg&&_L(t,o,o),this.generateBVH){if(this.bvh instanceof Promise)throw new Error("PathTracingSceneGenerator: BVH is already building asynchronously.");if(s.changeType===EC){const c={strategy:$1,maxLeafTris:1,indirect:!0,onProgress:A,...this.bvhOptions};this._buildAsync?this.bvh=this._bvhWorker.generate(t,c):this.bvh=new mC(t,c)}else s.changeType===DC&&this.bvh.refit()}return{bvhChanged:s.changeType!==Lg,bvh:this.bvh,lights:l,iesTextures:u,geometry:t,materials:o,textures:a,objects:r}}}class Og extends $e{set needsUpdate(A){super.needsUpdate=!0,this.dispatchEvent({type:"recompilation"})}constructor(A){super(A);for(const e in this.uniforms)Object.defineProperty(this,e,{get(){return this.uniforms[e].value},set(t){this.uniforms[e].value=t}})}setDefine(A,e=void 0){if(e==null){if(A in this.defines)return delete this.defines[A],this.needsUpdate=!0,!0}else if(this.defines[A]!==e)return this.defines[A]=e,this.needsUpdate=!0,!0;return!1}}class kL extends Og{constructor(A){super({blending:Mt,uniforms:{target1:{value:null},target2:{value:null},opacity:{value:1}},vertexShader:`
4601
+ `;function xC(n,A,e=0){if(n.isInterleavedBufferAttribute){const t=n.itemSize;for(let i=0,r=n.count;i<r;i++){const s=i+e;A.setX(s,n.getX(i)),t>=2&&A.setY(s,n.getY(i)),t>=3&&A.setZ(s,n.getZ(i)),t>=4&&A.setW(s,n.getW(i))}}else{const t=A.array,i=t.constructor,r=t.BYTES_PER_ELEMENT*n.itemSize*e;new i(t.buffer,r,n.array.length).set(n.array)}}function Gl(n,A=null){const e=n.array.constructor,t=n.normalized,i=n.itemSize,r=A===null?n.count:A;return new ce(new e(i*r),i,t)}function Qo(n,A){if(!n&&!A)return!0;if(!!n!=!!A)return!1;const e=n.count===A.count,t=n.normalized===A.normalized,i=n.array.constructor===A.array.constructor,r=n.itemSize===A.itemSize;return!(!e||!t||!i||!r)}function wL(n){const A=n[0].index!==null,e=new Set(Object.keys(n[0].attributes));if(!n[0].getAttribute("position"))throw new Error("StaticGeometryGenerator: position attribute is required.");for(let t=0;t<n.length;++t){const i=n[t];let r=0;if(A!==(i.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const s in i.attributes){if(!e.has(s))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+s+'" attribute exists among all geometries, or in none of them.');r++}if(r!==e.size)throw new Error("StaticGeometryGenerator: All geometries must have the same number of attributes.")}}function CL(n){let A=0;for(let e=0,t=n.length;e<t;e++)A+=n[e].getIndex().count;return A}function xL(n){let A=0;for(let e=0,t=n.length;e<t;e++)A+=n[e].getAttribute("position").count;return A}function IL(n,A,e){n.index&&n.index.count!==A&&n.setIndex(null);const t=n.attributes;for(const i in t)t[i].count!==e&&n.deleteAttribute(i)}function bL(n,A={},e=new qe){const{useGroups:t=!1,forceUpdate:i=!1,skipAssigningAttributes:r=[],overwriteIndex:s=!0}=A;wL(n);const o=n[0].index!==null,a=o?CL(n):-1,l=xL(n);if(IL(e,a,l),t){let c=0;for(let h=0,f=n.length;h<f;h++){const p=n[h];let m;o?m=p.getIndex().count:m=p.getAttribute("position").count,e.addGroup(c,m,h),c+=m}}if(o){let c=!1;if(e.index||(e.setIndex(new ce(new Uint32Array(a),1,!1)),c=!0),c||s){let h=0,f=0;const p=e.getIndex();for(let m=0,d=n.length;m<d;m++){const g=n[m],y=g.getIndex();if(!(!i&&!c&&r[m]))for(let w=0;w<y.count;++w)p.setX(h+w,y.getX(w)+f);h+=y.count,f+=g.getAttribute("position").count}}}const u=Object.keys(n[0].attributes);for(let c=0,h=u.length;c<h;c++){let f=!1;const p=u[c];if(!e.getAttribute(p)){const g=n[0].getAttribute(p);e.setAttribute(p,Gl(g,l)),f=!0}let m=0;const d=e.getAttribute(p);for(let g=0,y=n.length;g<y;g++){const v=n[g],w=!i&&!f&&r[g],C=v.getAttribute(p);w||xC(C,d,m),m+=C.count}}}function _L(n,A,e){const t=n.index,r=n.attributes.position.count,s=t?t.count:r;let o=n.groups;o.length===0&&(o=[{count:s,start:0,materialIndex:0}]);let a=n.getAttribute("materialIndex");if(!a||a.count!==r){let u;e.length<=255?u=new Uint8Array(r):u=new Uint16Array(r),a=new ce(u,1,!1),n.deleteAttribute("materialIndex"),n.setAttribute("materialIndex",a)}const l=a.array;for(let u=0;u<o.length;u++){const c=o[u],h=c.start,f=c.count,p=Math.min(f,s-h),m=Array.isArray(A)?A[c.materialIndex]:A,d=e.indexOf(m);for(let g=0;g<p;g++){let y=h+g;t&&(y=t.getX(y)),l[y]=d}}}function SL(n,A){if(!n.index){const e=n.attributes.position.count,t=new Array(e);for(let i=0;i<e;i++)t[i]=i;n.setIndex(t)}if(!n.attributes.normal&&A&&A.includes("normal")&&n.computeVertexNormals(),!n.attributes.uv&&A&&A.includes("uv")){const e=n.attributes.position.count;n.setAttribute("uv",new ce(new Float32Array(e*2),2,!1))}if(!n.attributes.uv2&&A&&A.includes("uv2")){const e=n.attributes.position.count;n.setAttribute("uv2",new ce(new Float32Array(e*2),2,!1))}if(!n.attributes.tangent&&A&&A.includes("tangent"))if(n.attributes.uv&&n.attributes.normal)n.computeTangents();else{const e=n.attributes.position.count;n.setAttribute("tangent",new ce(new Float32Array(e*4),4,!1))}if(!n.attributes.color&&A&&A.includes("color")){const e=n.attributes.position.count,t=new Float32Array(e*4);t.fill(1),n.setAttribute("color",new ce(t,4))}}function Tg(n){let A=0;if(n.byteLength!==0){const e=new Uint8Array(n);for(let t=0;t<n.byteLength;t++){const i=e[t];A=(A<<5)-A+i,A|=0}}return A}function IC(n){let A=n.uuid;const e=Object.values(n.attributes);n.index&&(e.push(n.index),A+=`index|${n.index.version}`);const t=Object.keys(e).sort();for(const i of t){const r=e[i];A+=`${i}_${r.version}|`}return A}function bC(n){const A=n.skeleton;return A?(A.boneTexture||A.computeBoneTexture(),`${Tg(A.boneTexture.image.data.buffer)}_${A.boneTexture.uuid}`):null}class ML{constructor(A=null){this.matrixWorld=new zA,this.geometryHash=null,this.skeletonHash=null,this.primitiveCount=-1,A!==null&&this.updateFrom(A)}updateFrom(A){const e=A.geometry,t=(e.index?e.index.count:e.attributes.position.count)/3;this.matrixWorld.copy(A.matrixWorld),this.geometryHash=IC(e),this.primitiveCount=t,this.skeletonHash=bC(A)}didChange(A){const e=A.geometry,t=(e.index?e.index.count:e.attributes.position.count)/3;return!(this.matrixWorld.equals(A.matrixWorld)&&this.geometryHash===IC(e)&&this.skeletonHash===bC(A)&&this.primitiveCount===t)}}const ms=new O,vs=new O,ys=new O,_C=new ve,vu=new O,Dg=new O,SC=new ve,MC=new ve,yu=new zA,PC=new zA;function TC(n,A,e){const t=n.skeleton,i=n.geometry,r=t.bones,s=t.boneInverses;SC.fromBufferAttribute(i.attributes.skinIndex,A),MC.fromBufferAttribute(i.attributes.skinWeight,A),yu.elements.fill(0);for(let o=0;o<4;o++){const a=MC.getComponent(o);if(a!==0){const l=SC.getComponent(o);PC.multiplyMatrices(r[l].matrixWorld,s[l]),PL(yu,PC,a)}}return yu.multiply(n.bindMatrix).premultiply(n.bindMatrixInverse),e.transformDirection(yu),e}function Eg(n,A,e,t,i){vu.set(0,0,0);for(let r=0,s=n.length;r<s;r++){const o=A[r],a=n[r];o!==0&&(Dg.fromBufferAttribute(a,t),e?vu.addScaledVector(Dg,o):vu.addScaledVector(Dg.sub(i),o))}i.add(vu)}function PL(n,A,e){const t=n.elements,i=A.elements;for(let r=0,s=i.length;r<s;r++)t[r]+=i[r]*e}function TL(n){const{index:A,attributes:e}=n;if(A)for(let t=0,i=A.count;t<i;t+=3){const r=A.getX(t),s=A.getX(t+2);A.setX(t,s),A.setX(t+2,r)}else for(const t in e){const i=e[t],r=i.itemSize;for(let s=0,o=i.count;s<o;s+=3)for(let a=0;a<r;a++){const l=i.getComponent(s,a),u=i.getComponent(s+2,a);i.setComponent(s,a,u),i.setComponent(s+2,a,l)}}return n}function DL(n,A={},e=new qe){A={applyWorldTransforms:!0,attributes:[],...A};const t=n.geometry,i=A.applyWorldTransforms,r=A.attributes.includes("normal"),s=A.attributes.includes("tangent"),o=t.attributes,a=e.attributes;for(const y in e.attributes)(!A.attributes.includes(y)||!(y in t.attributes))&&e.deleteAttribute(y);!e.index&&t.index&&(e.index=t.index.clone()),a.position||e.setAttribute("position",Gl(o.position)),r&&!a.normal&&o.normal&&e.setAttribute("normal",Gl(o.normal)),s&&!a.tangent&&o.tangent&&e.setAttribute("tangent",Gl(o.tangent)),Qo(t.index,e.index),Qo(o.position,a.position),r&&Qo(o.normal,a.normal),s&&Qo(o.tangent,a.tangent);const l=o.position,u=r?o.normal:null,c=s?o.tangent:null,h=t.morphAttributes.position,f=t.morphAttributes.normal,p=t.morphAttributes.tangent,m=t.morphTargetsRelative,d=n.morphTargetInfluences,g=new le;g.getNormalMatrix(n.matrixWorld),t.index&&e.index.array.set(t.index.array);for(let y=0,v=o.position.count;y<v;y++)ms.fromBufferAttribute(l,y),u&&vs.fromBufferAttribute(u,y),c&&(_C.fromBufferAttribute(c,y),ys.fromBufferAttribute(c,y)),d&&(h&&Eg(h,d,m,y,ms),f&&Eg(f,d,m,y,vs),p&&Eg(p,d,m,y,ys)),n.isSkinnedMesh&&(n.applyBoneTransform(y,ms),u&&TC(n,y,vs),c&&TC(n,y,ys)),i&&ms.applyMatrix4(n.matrixWorld),a.position.setXYZ(y,ms.x,ms.y,ms.z),u&&(i&&vs.applyNormalMatrix(g),a.normal.setXYZ(y,vs.x,vs.y,vs.z)),c&&(i&&ys.transformDirection(n.matrixWorld),a.tangent.setXYZW(y,ys.x,ys.y,ys.z,_C.w));for(const y in A.attributes){const v=A.attributes[y];v==="position"||v==="tangent"||v==="normal"||!(v in o)||(a[v]||e.setAttribute(v,Gl(o[v])),Qo(o[v],a[v]),xC(o[v],a[v]))}return n.matrixWorld.determinant()<0&&TL(e),e}class EL extends qe{constructor(){super(),this.version=0,this.hash=null,this._diff=new ML}isCompatible(A,e){const t=A.geometry;for(let i=0;i<e.length;i++){const r=e[i],s=t.attributes[r],o=this.attributes[r];if(s&&!Qo(s,o))return!1}return!0}updateFrom(A,e){const t=this._diff;return t.didChange(A)?(DL(A,e,this),t.updateFrom(A),this.version++,this.hash=`${this.uuid}_${this.version}`,!0):!1}}const Lg=0,DC=1,EC=2;function LL(n,A){for(let e=0,t=n.length;e<t;e++)n[e].traverseVisible(r=>{r.isMesh&&A(r)})}function OL(n){const A=[];for(let e=0,t=n.length;e<t;e++){const i=n[e];Array.isArray(i.material)?A.push(...i.material):A.push(i.material)}return A}function qL(n,A,e){if(n.length===0){A.setIndex(null);const t=A.attributes;for(const i in t)A.deleteAttribute(i);for(const i in e.attributes)A.setAttribute(e.attributes[i],new ce(new Float32Array(0),4,!1))}else bL(n,e,A);for(const t in A.attributes)A.attributes[t].needsUpdate=!0}class NL{constructor(A){this.objects=null,this.useGroups=!0,this.applyWorldTransforms=!0,this.generateMissingAttributes=!0,this.overwriteIndex=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Map,this._geometryMergeSets=new WeakMap,this._mergeOrder=[],this._dummyMesh=null,this.setObjects(A||[])}_getDummyMesh(){if(!this._dummyMesh){const A=new ti,e=new qe;e.setAttribute("position",new ce(new Float32Array(9),3)),this._dummyMesh=new Pe(e,A)}return this._dummyMesh}_getMeshes(){const A=[];return LL(this.objects,e=>{A.push(e)}),A.sort((e,t)=>e.uuid>t.uuid?1:e.uuid<t.uuid?-1:0),A.length===0&&A.push(this._getDummyMesh()),A}_updateIntermediateGeometries(){const{_intermediateGeometry:A}=this,e=this._getMeshes(),t=new Set(A.keys()),i={attributes:this.attributes,applyWorldTransforms:this.applyWorldTransforms};for(let r=0,s=e.length;r<s;r++){const o=e[r],a=o.uuid;t.delete(a);let l=A.get(a);(!l||!l.isCompatible(o,this.attributes))&&(l&&l.dispose(),l=new EL,A.set(a,l)),l.updateFrom(o,i)&&this.generateMissingAttributes&&SL(l,this.attributes)}t.forEach(r=>{A.delete(r)})}setObjects(A){Array.isArray(A)?this.objects=[...A]:this.objects=[A]}generate(A=new qe){const{useGroups:e,overwriteIndex:t,_intermediateGeometry:i,_geometryMergeSets:r}=this,s=this._getMeshes(),o=[],a=[],l=r.get(A)||[];this._updateIntermediateGeometries();let u=!1;s.length!==l.length&&(u=!0);for(let h=0,f=s.length;h<f;h++){const p=s[h],m=i.get(p.uuid);a.push(m);const d=l[h];!d||d.uuid!==m.uuid?(o.push(!1),u=!0):d.version!==m.version?o.push(!1):o.push(!0)}qL(a,A,{useGroups:e,forceUpdate:u,skipAssigningAttributes:o,overwriteIndex:t}),u&&A.dispose(),r.set(A,a.map(h=>({version:h.version,uuid:h.uuid})));let c=Lg;return u?c=EC:o.includes(!1)&&(c=DC),{changeType:c,materials:OL(s),geometry:A}}}function BL(n){const A=new Set;for(let e=0,t=n.length;e<t;e++){const i=n[e];for(const r in i){const s=i[r];s&&s.isTexture&&A.add(s)}}return Array.from(A)}function zL(n){const A=[],e=new Set;for(let i=0,r=n.length;i<r;i++)n[i].traverse(s=>{s.visible&&(s.isRectAreaLight||s.isSpotLight||s.isPointLight||s.isDirectionalLight)&&(A.push(s),s.iesMap&&e.add(s.iesMap))});const t=Array.from(e).sort((i,r)=>i.uuid<r.uuid?1:i.uuid>r.uuid?-1:0);return{lights:A,iesTextures:t}}class RL{get initialized(){return!!this.bvh}constructor(A){this.bvhOptions={},this.attributes=["position","normal","tangent","color","uv","uv2"],this.generateBVH=!0,this.bvh=null,this.geometry=new qe,this.staticGeometryGenerator=new NL(A),this._bvhWorker=null,this._pendingGenerate=null,this._buildAsync=!1}setObjects(A){this.staticGeometryGenerator.setObjects(A)}setBVHWorker(A){this._bvhWorker=A}async generateAsync(A=null){if(!this._bvhWorker)throw new Error('PathTracingSceneGenerator: "setBVHWorker" must be called before "generateAsync" can be called.');if(this.bvh instanceof Promise)return this._pendingGenerate||(this._pendingGenerate=new Promise(async()=>(await this.bvh,this._pendingGenerate=null,this.generateAsync(A)))),this._pendingGenerate;{this._buildAsync=!0;const e=this.generate(A);return this._buildAsync=!1,e.bvh=this.bvh=await e.bvh,e}}generate(A=null){const{staticGeometryGenerator:e,geometry:t,attributes:i}=this,r=e.objects;e.attributes=i,r.forEach(c=>{c.traverse(h=>{h.isSkinnedMesh&&h.skeleton&&h.skeleton.update()})});const s=e.generate(t),o=s.materials,a=BL(o),{lights:l,iesTextures:u}=zL(r);if(s.changeType!==Lg&&_L(t,o,o),this.generateBVH){if(this.bvh instanceof Promise)throw new Error("PathTracingSceneGenerator: BVH is already building asynchronously.");if(s.changeType===EC){const c={strategy:$1,maxLeafTris:1,indirect:!0,onProgress:A,...this.bvhOptions};this._buildAsync?this.bvh=this._bvhWorker.generate(t,c):this.bvh=new mC(t,c)}else s.changeType===DC&&this.bvh.refit()}return{bvhChanged:s.changeType!==Lg,bvh:this.bvh,lights:l,iesTextures:u,geometry:t,materials:o,textures:a,objects:r}}}class Og extends $e{set needsUpdate(A){super.needsUpdate=!0,this.dispatchEvent({type:"recompilation"})}constructor(A){super(A);for(const e in this.uniforms)Object.defineProperty(this,e,{get(){return this.uniforms[e].value},set(t){this.uniforms[e].value=t}})}setDefine(A,e=void 0){if(e==null){if(A in this.defines)return delete this.defines[A],this.needsUpdate=!0,!0}else if(this.defines[A]!==e)return this.defines[A]=e,this.needsUpdate=!0,!0;return!1}}class kL extends Og{constructor(A){super({blending:Mt,uniforms:{target1:{value:null},target2:{value:null},opacity:{value:1}},vertexShader:`
4602
4602
 
4603
4603
  varying vec2 vUv;
4604
4604
 
@@ -9455,7 +9455,7 @@ void main(void)\r
9455
9455
  * goldfirestudios.com
9456
9456
  *
9457
9457
  * MIT License
9458
- */(function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},HowlerGlobal.prototype.pos=function(e,t,i){var r=this;if(!r.ctx||!r.ctx.listener)return r;if(t=typeof t!="number"?r._pos[1]:t,i=typeof i!="number"?r._pos[2]:i,typeof e=="number")r._pos=[e,t,i],typeof r.ctx.listener.positionX<"u"?(r.ctx.listener.positionX.setTargetAtTime(r._pos[0],Howler.ctx.currentTime,.1),r.ctx.listener.positionY.setTargetAtTime(r._pos[1],Howler.ctx.currentTime,.1),r.ctx.listener.positionZ.setTargetAtTime(r._pos[2],Howler.ctx.currentTime,.1)):r.ctx.listener.setPosition(r._pos[0],r._pos[1],r._pos[2]);else return r._pos;return r},HowlerGlobal.prototype.orientation=function(e,t,i,r,s,o){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;if(t=typeof t!="number"?l[1]:t,i=typeof i!="number"?l[2]:i,r=typeof r!="number"?l[3]:r,s=typeof s!="number"?l[4]:s,o=typeof o!="number"?l[5]:o,typeof e=="number")a._orientation=[e,t,i,r,s,o],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(s,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,t,i,r,s,o);else return l;return a},Howl.prototype.init=function(e){return function(t){var i=this;return i._orientation=t.orientation||[1,0,0],i._stereo=t.stereo||null,i._pos=t.pos||null,i._pannerAttr={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:360,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:360,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:0,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:"inverse",maxDistance:typeof t.maxDistance<"u"?t.maxDistance:1e4,panningModel:typeof t.panningModel<"u"?t.panningModel:"HRTF",refDistance:typeof t.refDistance<"u"?t.refDistance:1,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:1},i._onstereo=t.onstereo?[{fn:t.onstereo}]:[],i._onpos=t.onpos?[{fn:t.onpos}]:[],i._onorientation=t.onorientation?[{fn:t.onorientation}]:[],e.call(this,t)}}(Howl.prototype.init),Howl.prototype.stereo=function(e,t){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"stereo",action:function(){i.stereo(e,t)}}),i;var r=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof t>"u")if(typeof e=="number")i._stereo=e,i._pos=[e,0,0];else return i._stereo;for(var s=i._getSoundIds(t),o=0;o<s.length;o++){var a=i._soundById(s[o]);if(a)if(typeof e=="number")a._stereo=e,a._pos=[e,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&A(a,r),r==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(e,0,0):a._panner.pan.setValueAtTime(e,Howler.ctx.currentTime)),i._emit("stereo",a._id);else return a._stereo}return i},Howl.prototype.pos=function(e,t,i,r){var s=this;if(!s._webAudio)return s;if(s._state!=="loaded")return s._queue.push({event:"pos",action:function(){s.pos(e,t,i,r)}}),s;if(t=typeof t!="number"?0:t,i=typeof i!="number"?-.5:i,typeof r>"u")if(typeof e=="number")s._pos=[e,t,i];else return s._pos;for(var o=s._getSoundIds(r),a=0;a<o.length;a++){var l=s._soundById(o[a]);if(l)if(typeof e=="number")l._pos=[e,t,i],l._node&&((!l._panner||l._panner.pan)&&A(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(i,Howler.ctx.currentTime)):l._panner.setPosition(e,t,i)),s._emit("pos",l._id);else return l._pos}return s},Howl.prototype.orientation=function(e,t,i,r){var s=this;if(!s._webAudio)return s;if(s._state!=="loaded")return s._queue.push({event:"orientation",action:function(){s.orientation(e,t,i,r)}}),s;if(t=typeof t!="number"?s._orientation[1]:t,i=typeof i!="number"?s._orientation[2]:i,typeof r>"u")if(typeof e=="number")s._orientation=[e,t,i];else return s._orientation;for(var o=s._getSoundIds(r),a=0;a<o.length;a++){var l=s._soundById(o[a]);if(l)if(typeof e=="number")l._orientation=[e,t,i],l._node&&(l._panner||(l._pos||(l._pos=s._pos||[0,0,-.5]),A(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(i,Howler.ctx.currentTime)):l._panner.setOrientation(e,t,i)),s._emit("orientation",l._id);else return l._orientation}return s},Howl.prototype.pannerAttr=function(){var e=this,t=arguments,i,r,s;if(!e._webAudio)return e;if(t.length===0)return e._pannerAttr;if(t.length===1)if(typeof t[0]=="object")i=t[0],typeof r>"u"&&(i.pannerAttr||(i.pannerAttr={coneInnerAngle:i.coneInnerAngle,coneOuterAngle:i.coneOuterAngle,coneOuterGain:i.coneOuterGain,distanceModel:i.distanceModel,maxDistance:i.maxDistance,refDistance:i.refDistance,rolloffFactor:i.rolloffFactor,panningModel:i.panningModel}),e._pannerAttr={coneInnerAngle:typeof i.pannerAttr.coneInnerAngle<"u"?i.pannerAttr.coneInnerAngle:e._coneInnerAngle,coneOuterAngle:typeof i.pannerAttr.coneOuterAngle<"u"?i.pannerAttr.coneOuterAngle:e._coneOuterAngle,coneOuterGain:typeof i.pannerAttr.coneOuterGain<"u"?i.pannerAttr.coneOuterGain:e._coneOuterGain,distanceModel:typeof i.pannerAttr.distanceModel<"u"?i.pannerAttr.distanceModel:e._distanceModel,maxDistance:typeof i.pannerAttr.maxDistance<"u"?i.pannerAttr.maxDistance:e._maxDistance,refDistance:typeof i.pannerAttr.refDistance<"u"?i.pannerAttr.refDistance:e._refDistance,rolloffFactor:typeof i.pannerAttr.rolloffFactor<"u"?i.pannerAttr.rolloffFactor:e._rolloffFactor,panningModel:typeof i.pannerAttr.panningModel<"u"?i.pannerAttr.panningModel:e._panningModel});else return s=e._soundById(parseInt(t[0],10)),s?s._pannerAttr:e._pannerAttr;else t.length===2&&(i=t[0],r=parseInt(t[1],10));for(var o=e._getSoundIds(r),a=0;a<o.length;a++)if(s=e._soundById(o[a]),s){var l=s._pannerAttr;l={coneInnerAngle:typeof i.coneInnerAngle<"u"?i.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof i.coneOuterAngle<"u"?i.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof i.coneOuterGain<"u"?i.coneOuterGain:l.coneOuterGain,distanceModel:typeof i.distanceModel<"u"?i.distanceModel:l.distanceModel,maxDistance:typeof i.maxDistance<"u"?i.maxDistance:l.maxDistance,refDistance:typeof i.refDistance<"u"?i.refDistance:l.refDistance,rolloffFactor:typeof i.rolloffFactor<"u"?i.rolloffFactor:l.rolloffFactor,panningModel:typeof i.panningModel<"u"?i.panningModel:l.panningModel};var u=s._panner;u||(s._pos||(s._pos=e._pos||[0,0,-.5]),A(s,"spatial"),u=s._panner),u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel}return e},Sound.prototype.init=function(e){return function(){var t=this,i=t._parent;t._orientation=i._orientation,t._stereo=i._stereo,t._pos=i._pos,t._pannerAttr=i._pannerAttr,e.call(this),t._stereo?i.stereo(t._stereo):t._pos&&i.pos(t._pos[0],t._pos[1],t._pos[2],t._id)}}(Sound.prototype.init),Sound.prototype.reset=function(e){return function(){var t=this,i=t._parent;return t._orientation=i._orientation,t._stereo=i._stereo,t._pos=i._pos,t._pannerAttr=i._pannerAttr,t._stereo?i.stereo(t._stereo):t._pos?i.pos(t._pos[0],t._pos[1],t._pos[2],t._id):t._panner&&(t._panner.disconnect(0),t._panner=void 0,i._refreshBuffer(t)),e.call(this)}}(Sound.prototype.reset);var A=function(e,t){t=t||"spatial",t==="spatial"?(e._panner=Howler.ctx.createPanner(),e._panner.coneInnerAngle=e._pannerAttr.coneInnerAngle,e._panner.coneOuterAngle=e._pannerAttr.coneOuterAngle,e._panner.coneOuterGain=e._pannerAttr.coneOuterGain,e._panner.distanceModel=e._pannerAttr.distanceModel,e._panner.maxDistance=e._pannerAttr.maxDistance,e._panner.refDistance=e._pannerAttr.refDistance,e._panner.rolloffFactor=e._pannerAttr.rolloffFactor,e._panner.panningModel=e._pannerAttr.panningModel,typeof e._panner.positionX<"u"?(e._panner.positionX.setValueAtTime(e._pos[0],Howler.ctx.currentTime),e._panner.positionY.setValueAtTime(e._pos[1],Howler.ctx.currentTime),e._panner.positionZ.setValueAtTime(e._pos[2],Howler.ctx.currentTime)):e._panner.setPosition(e._pos[0],e._pos[1],e._pos[2]),typeof e._panner.orientationX<"u"?(e._panner.orientationX.setValueAtTime(e._orientation[0],Howler.ctx.currentTime),e._panner.orientationY.setValueAtTime(e._orientation[1],Howler.ctx.currentTime),e._panner.orientationZ.setValueAtTime(e._orientation[2],Howler.ctx.currentTime)):e._panner.setOrientation(e._orientation[0],e._orientation[1],e._orientation[2])):(e._panner=Howler.ctx.createStereoPanner(),e._panner.pan.setValueAtTime(e._stereo,Howler.ctx.currentTime)),e._panner.connect(e._node),e._paused||e._parent.pause(e._id,!0).play(e._id,!0)}})()})(Sb);const E9="data:audio/mpeg;base64,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";let L9=class{constructor(){this.sound=new Sb.Howl({src:[E9]})}play(){this.sound.play()}};const Sn=n=>{var A,e;for(;n.children.length>0;)Sn(n.children[0]),(A=n.children[0])==null||A.removeFromParent();if(n instanceof Te)try{(e=n.geometry)==null||e.dispose()}catch{}else n.dispose&&n.dispose()};function O9(n){return new O(n[0],n[1],n[2])}function q9(){let n=3,A=Math.max(1/window.devicePixelRatio,.5);return window.innerWidth/window.innerHeight<.65&&(n=4,A=1/window.devicePixelRatio),{tiles:n,renderScale:A}}function Mb(n){let A=!1,e=!1,t=!1,i=1/0,r=1/0,s=1/0,o=-1/0,a=-1/0,l=-1/0,u=0,c=0;return n.traverse(f=>{if(f.isMesh&&f.geometry){const p=f;if(p.material.userData.isLOGO)return;p.geometry.computeBoundingBox();let m=p.geometry.attributes.position;const d=p.geometry.morphAttributes.position;let g=p.morphTargetInfluences;const y=Object.keys(p.morphTargetDictionary||{});y.includes("width")&&(e=!0),y.includes("length")&&(A=!0),y.includes("height")&&(t=!0);for(let v=0;v<m.count;v++){let w=m.getX(v),C=m.getY(v),_=m.getZ(v);c=Math.max(C,c),d&&g&&d.forEach((S,b)=>{const I=g&&g[b]||0;w+=S.getX(v)*I,C+=S.getY(v)*I,_+=S.getZ(v)*I}),w<i&&(i=w),C<r&&(r=C),_<s&&(s=_),w>o&&(o=w),C>a&&(a=C),_>l&&(l=_);const x=Math.sqrt(w*w+_*_);x>u&&(u=x)}}}),{box:new ye(new O(i,r,s),new O(o,a,l)),maxRadius:u,height:c,hasWidth:e,hasLength:A,hasHeight:t}}function N9(n,A,e=null){let t=0;return function(){let i=e||this,r=arguments;clearTimeout(t),t=window.setTimeout(function(){n.apply(i,r)},A)}}class Ef{constructor(A,e,t){this.length=A,this.width=e,this.height=t}}const Pb=n=>{var t;let A=0,e=0;if(n.geometry){n.geometry.computeBoundingBox();const i=new O;(t=n.geometry.boundingBox)==null||t.getSize(i),i.y?(e=i.y,!i.x&&i.z?A=i.z:i.x&&!i.z?A=i.x:i.x&&i.z&&(A=i.z)):(A=i.z,e=i.x)}return{width:A,height:e}};function Tb(n,A){if(A===k3)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===Zd||A===Zy){let e=n.getIndex();if(e===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let a=0;a<o.count;a++)s.push(a);n.setIndex(s),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const t=e.count-2,i=[];if(A===Zd)for(let s=1;s<=t;s++)i.push(e.getX(0)),i.push(e.getX(s)),i.push(e.getX(s+1));else for(let s=0;s<t;s++)s%2===0?(i.push(e.getX(s)),i.push(e.getX(s+1)),i.push(e.getX(s+2))):(i.push(e.getX(s+2)),i.push(e.getX(s+1)),i.push(e.getX(s)));i.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}class B9 extends vr{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new K9(e)}),this.register(function(e){return new F9(e)}),this.register(function(e){return new Q9(e)}),this.register(function(e){return new V9(e)}),this.register(function(e){return new $9(e)}),this.register(function(e){return new H9(e)}),this.register(function(e){return new Y9(e)}),this.register(function(e){return new U9(e)}),this.register(function(e){return new W9(e)}),this.register(function(e){return new j9(e)}),this.register(function(e){return new J9(e)}),this.register(function(e){return new G9(e)}),this.register(function(e){return new X9(e)}),this.register(function(e){return new Z9(e)}),this.register(function(e){return new R9(e)}),this.register(function(e){return new AR(e)}),this.register(function(e){return new eR(e)})}load(A,e,t,i){const r=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const l=ql.extractUrlBase(A);s=ql.resolveURL(l,this.path)}else s=ql.extractUrlBase(A);this.manager.itemStart(A);const o=function(l){i?i(l):console.error(l),r.manager.itemError(A),r.manager.itemEnd(A)},a=new Ll(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(A,function(l){try{r.parse(l,s,function(u){e(u),r.manager.itemEnd(A)},o)}catch(u){o(u)}},t,o)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,i){let r;const s={},o={},a=new TextDecoder;if(typeof A=="string")r=JSON.parse(A);else if(A instanceof ArrayBuffer)if(a.decode(new Uint8Array(A,0,4))===Db){try{s[pe.KHR_BINARY_GLTF]=new tR(A)}catch(c){i&&i(c);return}r=JSON.parse(s[pe.KHR_BINARY_GLTF].content)}else r=JSON.parse(a.decode(A));else r=A;if(r.asset===void 0||r.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const l=new pR(r,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const c=this.pluginCallbacks[u](l);c.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[c.name]=c,s[c.name]=!0}if(r.extensionsUsed)for(let u=0;u<r.extensionsUsed.length;++u){const c=r.extensionsUsed[u],h=r.extensionsRequired||[];switch(c){case pe.KHR_MATERIALS_UNLIT:s[c]=new k9;break;case pe.KHR_DRACO_MESH_COMPRESSION:s[c]=new iR(r,this.dracoLoader);break;case pe.KHR_TEXTURE_TRANSFORM:s[c]=new nR;break;case pe.KHR_MESH_QUANTIZATION:s[c]=new rR;break;default:h.indexOf(c)>=0&&o[c]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+c+'".')}}l.setExtensions(s),l.setPlugins(o),l.parse(t,i)}parseAsync(A,e){const t=this;return new Promise(function(i,r){t.parse(A,e,i,r)})}}function z9(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const pe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class R9{constructor(A){this.parser=A,this.name=pe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let t=0,i=e.length;t<i;t++){const r=e[t];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(A){const e=this.parser,t="light:"+A;let i=e.cache.get(t);if(i)return i;const r=e.json,a=((r.extensions&&r.extensions[this.name]||{}).lights||[])[A];let l;const u=new KA(16777215);a.color!==void 0&&u.setRGB(a.color[0],a.color[1],a.color[2],at);const c=a.range!==void 0?a.range:0;switch(a.type){case"directional":l=new GD(u),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new KD(u),l.distance=c;break;case"spot":l=new kD(u),l.distance=c,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle!==void 0?a.spot.innerConeAngle:0,a.spot.outerConeAngle=a.spot.outerConeAngle!==void 0?a.spot.outerConeAngle:Math.PI/4,l.angle=a.spot.outerConeAngle,l.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+a.type)}return l.position.set(0,0,0),l.decay=2,jr(l,a),a.intensity!==void 0&&(l.intensity=a.intensity),l.name=e.createUniqueName(a.name||"light_"+A),i=Promise.resolve(l),e.cache.add(t,i),i}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,t=this.parser,r=t.json.nodes[A],o=(r.extensions&&r.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(a){return t._getNodeRef(e.cache,o,a)})}}let k9=class{constructor(){this.name=pe.KHR_MATERIALS_UNLIT}getMaterialType(){return ti}extendParams(A,e,t){const i=[];A.color=new KA(1,1,1),A.opacity=1;const r=e.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const s=r.baseColorFactor;A.color.setRGB(s[0],s[1],s[2],at),A.opacity=s[3]}r.baseColorTexture!==void 0&&i.push(t.assignTexture(A,"map",r.baseColorTexture,je))}return Promise.all(i)}},j9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name].emissiveStrength;return r!==void 0&&(e.emissiveIntensity=r),Promise.resolve()}},K9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&r.push(t.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&r.push(t.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(r.push(t.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new uA(o,o)}return Promise.all(r)}},F9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_DISPERSION}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return e.dispersion=r.dispersion!==void 0?r.dispersion:0,Promise.resolve()}},G9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&r.push(t.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&r.push(t.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(r)}},H9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_SHEEN}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];e.sheenColor=new KA(0,0,0),e.sheenRoughness=0,e.sheen=1;const s=i.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;e.sheenColor.setRGB(o[0],o[1],o[2],at)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&r.push(t.assignTexture(e,"sheenColorMap",s.sheenColorTexture,je)),s.sheenRoughnessTexture!==void 0&&r.push(t.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(r)}},Y9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&r.push(t.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(r)}},U9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_VOLUME}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&r.push(t.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return e.attenuationColor=new KA().setRGB(o[0],o[1],o[2],at),Promise.all(r)}},W9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_IOR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return e.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}},J9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_SPECULAR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&r.push(t.assignTexture(e,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return e.specularColor=new KA().setRGB(o[0],o[1],o[2],at),s.specularColorTexture!==void 0&&r.push(t.assignTexture(e,"specularColorMap",s.specularColorTexture,je)),Promise.all(r)}},Z9=class{constructor(A){this.parser=A,this.name=pe.EXT_MATERIALS_BUMP}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&r.push(t.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(r)}},X9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&r.push(t.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(r)}};class Q9{constructor(A){this.parser=A,this.name=pe.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,t=e.json,i=t.textures[A];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],s=e.options.ktx2Loader;if(!s){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,r.source,s)}}class V9{constructor(A){this.parser=A,this.name=pe.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,t=this.parser,i=t.json,r=i.textures[A];if(!r.extensions||!r.extensions[e])return null;const s=r.extensions[e],o=i.images[s.source];let a=t.textureLoader;if(o.uri){const l=t.options.manager.getHandler(o.uri);l!==null&&(a=l)}return this.detectSupport().then(function(l){if(l)return t.loadTextureImage(A,s.source,a);if(i.extensionsRequired&&i.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return t.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class $9{constructor(A){this.parser=A,this.name=pe.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,t=this.parser,i=t.json,r=i.textures[A];if(!r.extensions||!r.extensions[e])return null;const s=r.extensions[e],o=i.images[s.source];let a=t.textureLoader;if(o.uri){const l=t.options.manager.getHandler(o.uri);l!==null&&(a=l)}return this.detectSupport().then(function(l){if(l)return t.loadTextureImage(A,s.source,a);if(i.extensionsRequired&&i.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return t.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class AR{constructor(A){this.name=pe.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,t=e.bufferViews[A];if(t.extensions&&t.extensions[this.name]){const i=t.extensions[this.name],r=this.parser.getDependency("buffer",i.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const a=i.byteOffset||0,l=i.byteLength||0,u=i.count,c=i.byteStride,h=new Uint8Array(o,a,l);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(u,c,h,i.mode,i.filter).then(function(f){return f.buffer}):s.ready.then(function(){const f=new ArrayBuffer(u*c);return s.decodeGltfBuffer(new Uint8Array(f),u,c,h,i.mode,i.filter),f})})}else return null}}let eR=class{constructor(A){this.name=pe.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,t=e.nodes[A];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const i=e.meshes[t.mesh];for(const l of i.primitives)if(l.mode!==Si.TRIANGLES&&l.mode!==Si.TRIANGLE_STRIP&&l.mode!==Si.TRIANGLE_FAN&&l.mode!==void 0)return null;const s=t.extensions[this.name].attributes,o=[],a={};for(const l in s)o.push(this.parser.getDependency("accessor",s[l]).then(u=>(a[l]=u,a[l])));return o.length<1?null:(o.push(this.parser.createNodeMesh(A)),Promise.all(o).then(l=>{const u=l.pop(),c=u.isGroup?u.children:[u],h=l[0].count,f=[];for(const p of c){const m=new zA,d=new O,g=new vi,y=new O(1,1,1),v=new HT(p.geometry,p.material,h);for(let w=0;w<h;w++)a.TRANSLATION&&d.fromBufferAttribute(a.TRANSLATION,w),a.ROTATION&&g.fromBufferAttribute(a.ROTATION,w),a.SCALE&&y.fromBufferAttribute(a.SCALE,w),v.setMatrixAt(w,m.compose(d,g,y));for(const w in a)if(w==="_COLOR_0"){const C=a[w];v.instanceColor=new qh(C.array,C.itemSize,C.normalized)}else w!=="TRANSLATION"&&w!=="ROTATION"&&w!=="SCALE"&&p.geometry.setAttribute(w,a[w]);Ie.prototype.copy.call(v,p),this.parser.assignFinalMaterial(v),f.push(v)}return u.isGroup?(u.clear(),u.add(...f),u):f[0]}))}};const Db="glTF",hc=12,Eb={JSON:1313821514,BIN:5130562};class tR{constructor(A){this.name=pe.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,hc),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==Db)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-hc,r=new DataView(A,hc);let s=0;for(;s<i;){const o=r.getUint32(s,!0);s+=4;const a=r.getUint32(s,!0);if(s+=4,a===Eb.JSON){const l=new Uint8Array(A,hc+s,o);this.content=t.decode(l)}else if(a===Eb.BIN){const l=hc+s;this.body=A.slice(l,l+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class iR{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=pe.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const t=this.json,i=this.dracoLoader,r=A.extensions[this.name].bufferView,s=A.extensions[this.name].attributes,o={},a={},l={};for(const u in s){const c=N0[u]||u.toLowerCase();o[c]=s[u]}for(const u in A.attributes){const c=N0[u]||u.toLowerCase();if(s[u]!==void 0){const h=t.accessors[A.attributes[u]],f=Pa[h.componentType];l[c]=f.name,a[c]=h.normalized===!0}}return e.getDependency("bufferView",r).then(function(u){return new Promise(function(c,h){i.decodeDracoFile(u,function(f){for(const p in f.attributes){const m=f.attributes[p],d=a[p];d!==void 0&&(m.normalized=d)}c(f)},o,l,at,h)})})}}class nR{constructor(){this.name=pe.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class rR{constructor(){this.name=pe.KHR_MESH_QUANTIZATION}}class Lb extends El{constructor(A,e,t,i){super(A,e,t,i)}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,i=this.valueSize,r=A*i*3+i;for(let s=0;s!==i;s++)e[s]=t[r+s];return e}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=o*2,l=o*3,u=i-e,c=(t-e)/u,h=c*c,f=h*c,p=A*l,m=p-l,d=-2*f+3*h,g=f-h,y=1-d,v=g-h+c;for(let w=0;w!==o;w++){const C=s[m+w+o],_=s[m+w+a]*u,x=s[p+w+o],S=s[p+w]*u;r[w]=y*C+v*_+d*x+g*S}return r}}const sR=new vi;class oR extends Lb{interpolate_(A,e,t,i){const r=super.interpolate_(A,e,t,i);return sR.fromArray(r).normalize().toArray(r),r}}const Si={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Pa={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ob={9728:fe,9729:we,9984:Rd,9985:al,9986:to,9987:zi},qb={33071:et,33648:ol,10497:zt},q0={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},N0={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},kr={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},aR={CUBICSPLINE:void 0,LINEAR:is,STEP:ro},B0={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function lR(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Dl({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Bt})),n.DefaultMaterial}function Hs(n,A,e){for(const t in e.extensions)n[t]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[t]=e.extensions[t])}function jr(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function cR(n,A,e){let t=!1,i=!1,r=!1;for(let l=0,u=A.length;l<u;l++){const c=A[l];if(c.POSITION!==void 0&&(t=!0),c.NORMAL!==void 0&&(i=!0),c.COLOR_0!==void 0&&(r=!0),t&&i&&r)break}if(!t&&!i&&!r)return Promise.resolve(n);const s=[],o=[],a=[];for(let l=0,u=A.length;l<u;l++){const c=A[l];if(t){const h=c.POSITION!==void 0?e.getDependency("accessor",c.POSITION):n.attributes.position;s.push(h)}if(i){const h=c.NORMAL!==void 0?e.getDependency("accessor",c.NORMAL):n.attributes.normal;o.push(h)}if(r){const h=c.COLOR_0!==void 0?e.getDependency("accessor",c.COLOR_0):n.attributes.color;a.push(h)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(a)]).then(function(l){const u=l[0],c=l[1],h=l[2];return t&&(n.morphAttributes.position=u),i&&(n.morphAttributes.normal=c),r&&(n.morphAttributes.color=h),n.morphTargetsRelative=!0,n})}function hR(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,t=A.weights.length;e<t;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let t=0,i=e.length;t<i;t++)n.morphTargetDictionary[e[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function uR(n){let A;const e=n.extensions&&n.extensions[pe.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+z0(e.attributes):A=n.indices+":"+z0(n.attributes)+":"+n.mode,n.targets!==void 0)for(let t=0,i=n.targets.length;t<i;t++)A+=":"+z0(n.targets[t]);return A}function z0(n){let A="";const e=Object.keys(n).sort();for(let t=0,i=e.length;t<i;t++)A+=e[t]+":"+n[e[t]]+";";return A}function R0(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function fR(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const dR=new zA;class pR{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new z9,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,i=!1,r=-1;typeof navigator<"u"&&(t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,i=navigator.userAgent.indexOf("Firefox")>-1,r=i?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||t||i&&r<98?this.textureLoader=new Zp(this.options.manager):this.textureLoader=new YD(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Ll(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const t=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(s){const o={scene:s[0][i.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:i.asset,parser:t,userData:{}};return Hs(r,o,i),jr(o,i),Promise.all(t._invokeAll(function(a){return a.afterRoot&&a.afterRoot(o)})).then(function(){for(const a of o.scenes)a.updateMatrixWorld();A(o)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],t=this.json.meshes||[];for(let i=0,r=e.length;i<r;i++){const s=e[i].joints;for(let o=0,a=s.length;o<a;o++)A[s[o]].isBone=!0}for(let i=0,r=A.length;i<r;i++){const s=A[i];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(t[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,t){if(A.refs[e]<=1)return t;const i=t.clone(),r=(s,o)=>{const a=this.associations.get(s);a!=null&&this.associations.set(o,a);for(const[l,u]of s.children.entries())r(u,o.children[l])};return r(t,i),i.name+="_instance_"+A.uses[e]++,i}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let t=0;t<e.length;t++){const i=A(e[t]);if(i)return i}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const t=[];for(let i=0;i<e.length;i++){const r=A(e[i]);r&&t.push(r)}return t}getDependency(A,e){const t=A+":"+e;let i=this.cache.get(t);if(!i){switch(A){case"scene":i=this.loadScene(e);break;case"node":i=this._invokeOne(function(r){return r.loadNode&&r.loadNode(e)});break;case"mesh":i=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(e)});break;case"accessor":i=this.loadAccessor(e);break;case"bufferView":i=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(e)});break;case"buffer":i=this.loadBuffer(e);break;case"material":i=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(e)});break;case"texture":i=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(e)});break;case"skin":i=this.loadSkin(e);break;case"animation":i=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(e)});break;case"camera":i=this.loadCamera(e);break;default:if(i=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(A,e)}),!i)throw new Error("Unknown type: "+A);break}this.cache.add(t,i)}return i}getDependencies(A){let e=this.cache.get(A);if(!e){const t=this,i=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(i.map(function(r,s){return t.getDependency(A,s)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],t=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[pe.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(r,s){t.load(ql.resolveURL(e.uri,i.path),r,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(t){const i=e.byteLength||0,r=e.byteOffset||0;return t.slice(r,r+i)})}loadAccessor(A){const e=this,t=this.json,i=this.json.accessors[A];if(i.bufferView===void 0&&i.sparse===void 0){const s=q0[i.type],o=Pa[i.componentType],a=i.normalized===!0,l=new o(i.count*s);return Promise.resolve(new ce(l,s,a))}const r=[];return i.bufferView!==void 0?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),i.sparse!==void 0&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then(function(s){const o=s[0],a=q0[i.type],l=Pa[i.componentType],u=l.BYTES_PER_ELEMENT,c=u*a,h=i.byteOffset||0,f=i.bufferView!==void 0?t.bufferViews[i.bufferView].byteStride:void 0,p=i.normalized===!0;let m,d;if(f&&f!==c){const g=Math.floor(h/f),y="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+g+":"+i.count;let v=e.cache.get(y);v||(m=new l(o,g*f,i.count*f/u),v=new kT(m,f/u),e.cache.add(y,v)),d=new Dp(v,a,h%f/u,p)}else o===null?m=new l(i.count*a):m=new l(o,h,i.count*a),d=new ce(m,a,p);if(i.sparse!==void 0){const g=q0.SCALAR,y=Pa[i.sparse.indices.componentType],v=i.sparse.indices.byteOffset||0,w=i.sparse.values.byteOffset||0,C=new y(s[1],v,i.sparse.count*g),_=new l(s[2],w,i.sparse.count*a);o!==null&&(d=new ce(d.array.slice(),d.itemSize,d.normalized));for(let x=0,S=C.length;x<S;x++){const b=C[x];if(d.setX(b,_[x*a]),a>=2&&d.setY(b,_[x*a+1]),a>=3&&d.setZ(b,_[x*a+2]),a>=4&&d.setW(b,_[x*a+3]),a>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return d})}loadTexture(A){const e=this.json,t=this.options,r=e.textures[A].source,s=e.images[r];let o=this.textureLoader;if(s.uri){const a=t.manager.getHandler(s.uri);a!==null&&(o=a)}return this.loadTextureImage(A,r,o)}loadTextureImage(A,e,t){const i=this,r=this.json,s=r.textures[A],o=r.images[e],a=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[a])return this.textureCache[a];const l=this.loadImageSource(e,t).then(function(u){u.flipY=!1,u.name=s.name||o.name||"",u.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(u.name=o.uri);const h=(r.samplers||{})[s.sampler]||{};return u.magFilter=Ob[h.magFilter]||we,u.minFilter=Ob[h.minFilter]||zi,u.wrapS=qb[h.wrapS]||zt,u.wrapT=qb[h.wrapT]||zt,i.associations.set(u,{textures:A}),u}).catch(function(){return null});return this.textureCache[a]=l,l}loadImageSource(A,e){const t=this,i=this.json,r=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(c=>c.clone());const s=i.images[A],o=self.URL||self.webkitURL;let a=s.uri||"",l=!1;if(s.bufferView!==void 0)a=t.getDependency("bufferView",s.bufferView).then(function(c){l=!0;const h=new Blob([c],{type:s.mimeType});return a=o.createObjectURL(h),a});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const u=Promise.resolve(a).then(function(c){return new Promise(function(h,f){let p=h;e.isImageBitmapLoader===!0&&(p=function(m){const d=new lt(m);d.needsUpdate=!0,h(d)}),e.load(ql.resolveURL(c,r.path),p,void 0,f)})}).then(function(c){return l===!0&&o.revokeObjectURL(a),c.userData.mimeType=s.mimeType||fR(s.uri),c}).catch(function(c){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),c});return this.sourceCache[A]=u,u}assignTexture(A,e,t,i){const r=this;return this.getDependency("texture",t.index).then(function(s){if(!s)return null;if(t.texCoord!==void 0&&t.texCoord>0&&(s=s.clone(),s.channel=t.texCoord),r.extensions[pe.KHR_TEXTURE_TRANSFORM]){const o=t.extensions!==void 0?t.extensions[pe.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const a=r.associations.get(s);s=r.extensions[pe.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),r.associations.set(s,a)}}return i!==void 0&&(s.colorSpace=i),A[e]=s,s})}assignFinalMaterial(A){const e=A.geometry;let t=A.material;const i=e.attributes.tangent===void 0,r=e.attributes.color!==void 0,s=e.attributes.normal===void 0;if(A.isPoints){const o="PointsMaterial:"+t.uuid;let a=this.cache.get(o);a||(a=new v1,an.prototype.copy.call(a,t),a.color.copy(t.color),a.map=t.map,a.sizeAttenuation=!1,this.cache.add(o,a)),t=a}else if(A.isLine){const o="LineBasicMaterial:"+t.uuid;let a=this.cache.get(o);a||(a=new Bh,an.prototype.copy.call(a,t),a.color.copy(t.color),a.map=t.map,this.cache.add(o,a)),t=a}if(i||r||s){let o="ClonedMaterial:"+t.uuid+":";i&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let a=this.cache.get(o);a||(a=t.clone(),r&&(a.vertexColors=!0),s&&(a.flatShading=!0),i&&(a.normalScale&&(a.normalScale.y*=-1),a.clearcoatNormalScale&&(a.clearcoatNormalScale.y*=-1)),this.cache.add(o,a),this.associations.set(a,this.associations.get(t))),t=a}A.material=t}getMaterialType(){return Dl}loadMaterial(A){const e=this,t=this.json,i=this.extensions,r=t.materials[A];let s;const o={},a=r.extensions||{},l=[];if(a[pe.KHR_MATERIALS_UNLIT]){const c=i[pe.KHR_MATERIALS_UNLIT];s=c.getMaterialType(),l.push(c.extendParams(o,r,e))}else{const c=r.pbrMetallicRoughness||{};if(o.color=new KA(1,1,1),o.opacity=1,Array.isArray(c.baseColorFactor)){const h=c.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],at),o.opacity=h[3]}c.baseColorTexture!==void 0&&l.push(e.assignTexture(o,"map",c.baseColorTexture,je)),o.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,o.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(l.push(e.assignTexture(o,"metalnessMap",c.metallicRoughnessTexture)),l.push(e.assignTexture(o,"roughnessMap",c.metallicRoughnessTexture))),s=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(A)}),l.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(A,o)})))}r.doubleSided===!0&&(o.side=ot);const u=r.alphaMode||B0.OPAQUE;if(u===B0.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===B0.MASK&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&s!==ti&&(l.push(e.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new uA(1,1),r.normalTexture.scale!==void 0)){const c=r.normalTexture.scale;o.normalScale.set(c,c)}if(r.occlusionTexture!==void 0&&s!==ti&&(l.push(e.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&s!==ti){const c=r.emissiveFactor;o.emissive=new KA().setRGB(c[0],c[1],c[2],at)}return r.emissiveTexture!==void 0&&s!==ti&&l.push(e.assignTexture(o,"emissiveMap",r.emissiveTexture,je)),Promise.all(l).then(function(){const c=new s(o);return r.name&&(c.name=r.name),jr(c,r),e.associations.set(c,{materials:A}),r.extensions&&Hs(i,c,r),c})}createUniqueName(A){const e=xe.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,t=this.extensions,i=this.primitiveCache;function r(o){return t[pe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,e).then(function(a){return Nb(a,o,e)})}const s=[];for(let o=0,a=A.length;o<a;o++){const l=A[o],u=uR(l),c=i[u];if(c)s.push(c.promise);else{let h;l.extensions&&l.extensions[pe.KHR_DRACO_MESH_COMPRESSION]?h=r(l):h=Nb(new qe,l,e),i[u]={primitive:l,promise:h},s.push(h)}}return Promise.all(s)}loadMesh(A){const e=this,t=this.json,i=this.extensions,r=t.meshes[A],s=r.primitives,o=[];for(let a=0,l=s.length;a<l;a++){const u=s[a].material===void 0?lR(this.cache):this.getDependency("material",s[a].material);o.push(u)}return o.push(e.loadGeometries(s)),Promise.all(o).then(function(a){const l=a.slice(0,a.length-1),u=a[a.length-1],c=[];for(let f=0,p=u.length;f<p;f++){const m=u[f],d=s[f];let g;const y=l[f];if(d.mode===Si.TRIANGLES||d.mode===Si.TRIANGLE_STRIP||d.mode===Si.TRIANGLE_FAN||d.mode===void 0)g=r.isSkinnedMesh===!0?new KT(m,y):new Te(m,y),g.isSkinnedMesh===!0&&g.normalizeSkinWeights(),d.mode===Si.TRIANGLE_STRIP?g.geometry=Tb(g.geometry,Zy):d.mode===Si.TRIANGLE_FAN&&(g.geometry=Tb(g.geometry,Zd));else if(d.mode===Si.LINES)g=new bl(m,y);else if(d.mode===Si.LINE_STRIP)g=new Np(m,y);else if(d.mode===Si.LINE_LOOP)g=new YT(m,y);else if(d.mode===Si.POINTS)g=new UT(m,y);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(g.geometry.morphAttributes).length>0&&hR(g,r),g.name=e.createUniqueName(r.name||"mesh_"+A),jr(g,r),d.extensions&&Hs(i,g,d),e.assignFinalMaterial(g),c.push(g)}for(let f=0,p=c.length;f<p;f++)e.associations.set(c[f],{meshes:A,primitives:f});if(c.length===1)return r.extensions&&Hs(i,c[0],r),c[0];const h=new Et;r.extensions&&Hs(i,h,r),e.associations.set(h,{meshes:A});for(let f=0,p=c.length;f<p;f++)h.add(c[f]);return h})}loadCamera(A){let e;const t=this.json.cameras[A],i=t[t.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return t.type==="perspective"?e=new gt(lo.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):t.type==="orthographic"&&(e=new Th(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),t.name&&(e.name=this.createUniqueName(t.name)),jr(e,t),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],t=[];for(let i=0,r=e.joints.length;i<r;i++)t.push(this._loadNodeShallow(e.joints[i]));return e.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",e.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(i){const r=i.pop(),s=i,o=[],a=[];for(let l=0,u=s.length;l<u;l++){const c=s[l];if(c){o.push(c);const h=new zA;r!==null&&h.fromArray(r.array,l*16),a.push(h)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[l])}return new Op(o,a)})}loadAnimation(A){const e=this.json,t=this,i=e.animations[A],r=i.name?i.name:"animation_"+A,s=[],o=[],a=[],l=[],u=[];for(let c=0,h=i.channels.length;c<h;c++){const f=i.channels[c],p=i.samplers[f.sampler],m=f.target,d=m.node,g=i.parameters!==void 0?i.parameters[p.input]:p.input,y=i.parameters!==void 0?i.parameters[p.output]:p.output;m.node!==void 0&&(s.push(this.getDependency("node",d)),o.push(this.getDependency("accessor",g)),a.push(this.getDependency("accessor",y)),l.push(p),u.push(m))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(a),Promise.all(l),Promise.all(u)]).then(function(c){const h=c[0],f=c[1],p=c[2],m=c[3],d=c[4],g=[];for(let y=0,v=h.length;y<v;y++){const w=h[y],C=f[y],_=p[y],x=m[y],S=d[y];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();const b=t._createAnimationTracks(w,C,_,x,S);if(b)for(let I=0;I<b.length;I++)g.push(b[I])}return new ED(r,void 0,g)})}createNodeMesh(A){const e=this.json,t=this,i=e.nodes[A];return i.mesh===void 0?null:t.getDependency("mesh",i.mesh).then(function(r){const s=t._getNodeRef(t.meshCache,i.mesh,r);return i.weights!==void 0&&s.traverse(function(o){if(o.isMesh)for(let a=0,l=i.weights.length;a<l;a++)o.morphTargetInfluences[a]=i.weights[a]}),s})}loadNode(A){const e=this.json,t=this,i=e.nodes[A],r=t._loadNodeShallow(A),s=[],o=i.children||[];for(let l=0,u=o.length;l<u;l++)s.push(t.getDependency("node",o[l]));const a=i.skin===void 0?Promise.resolve(null):t.getDependency("skin",i.skin);return Promise.all([r,Promise.all(s),a]).then(function(l){const u=l[0],c=l[1],h=l[2];h!==null&&u.traverse(function(f){f.isSkinnedMesh&&f.bind(h,dR)});for(let f=0,p=c.length;f<p;f++)u.add(c[f]);return u})}_loadNodeShallow(A){const e=this.json,t=this.extensions,i=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const r=e.nodes[A],s=r.name?i.createUniqueName(r.name):"",o=[],a=i._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(A)});return a&&o.push(a),r.camera!==void 0&&o.push(i.getDependency("camera",r.camera).then(function(l){return i._getNodeRef(i.cameraCache,r.camera,l)})),i._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(A)}).forEach(function(l){o.push(l)}),this.nodeCache[A]=Promise.all(o).then(function(l){let u;if(r.isBone===!0?u=new c1:l.length>1?u=new Et:l.length===1?u=l[0]:u=new Ie,u!==l[0])for(let c=0,h=l.length;c<h;c++)u.add(l[c]);if(r.name&&(u.userData.name=r.name,u.name=s),jr(u,r),r.extensions&&Hs(t,u,r),r.matrix!==void 0){const c=new zA;c.fromArray(r.matrix),u.applyMatrix4(c)}else r.translation!==void 0&&u.position.fromArray(r.translation),r.rotation!==void 0&&u.quaternion.fromArray(r.rotation),r.scale!==void 0&&u.scale.fromArray(r.scale);return i.associations.has(u)||i.associations.set(u,{}),i.associations.get(u).nodes=A,u}),this.nodeCache[A]}loadScene(A){const e=this.extensions,t=this.json.scenes[A],i=this,r=new Et;t.name&&(r.name=i.createUniqueName(t.name)),jr(r,t),t.extensions&&Hs(e,r,t);const s=t.nodes||[],o=[];for(let a=0,l=s.length;a<l;a++)o.push(i.getDependency("node",s[a]));return Promise.all(o).then(function(a){for(let u=0,c=a.length;u<c;u++)r.add(a[u]);const l=u=>{const c=new Map;for(const[h,f]of i.associations)(h instanceof an||h instanceof lt)&&c.set(h,f);return u.traverse(h=>{const f=i.associations.get(h);f!=null&&c.set(h,f)}),c};return i.associations=l(r),r})}_createAnimationTracks(A,e,t,i,r){const s=[],o=A.name?A.name:A.uuid,a=[];kr[r.path]===kr.weights?A.traverse(function(h){h.morphTargetInfluences&&a.push(h.name?h.name:h.uuid)}):a.push(o);let l;switch(kr[r.path]){case kr.weights:l=No;break;case kr.rotation:l=gs;break;case kr.position:case kr.scale:l=zo;break;default:switch(t.itemSize){case 1:l=No;break;case 2:case 3:default:l=zo;break}break}const u=i.interpolation!==void 0?aR[i.interpolation]:is,c=this._getArrayFromAccessor(t);for(let h=0,f=a.length;h<f;h++){const p=new l(a[h]+"."+kr[r.path],e.array,c,u);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(p),s.push(p)}return s}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const t=R0(e.constructor),i=new Float32Array(e.length);for(let r=0,s=e.length;r<s;r++)i[r]=e[r]*t;e=i}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(t){const i=this instanceof gs?oR:Lb;return new i(this.times,this.values,this.getValueSize()/3,t)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function gR(n,A,e){const t=A.attributes,i=new ye;if(t.POSITION!==void 0){const o=e.json.accessors[t.POSITION],a=o.min,l=o.max;if(a!==void 0&&l!==void 0){if(i.set(new O(a[0],a[1],a[2]),new O(l[0],l[1],l[2])),o.normalized){const u=R0(Pa[o.componentType]);i.min.multiplyScalar(u),i.max.multiplyScalar(u)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=A.targets;if(r!==void 0){const o=new O,a=new O;for(let l=0,u=r.length;l<u;l++){const c=r[l];if(c.POSITION!==void 0){const h=e.json.accessors[c.POSITION],f=h.min,p=h.max;if(f!==void 0&&p!==void 0){if(a.setX(Math.max(Math.abs(f[0]),Math.abs(p[0]))),a.setY(Math.max(Math.abs(f[1]),Math.abs(p[1]))),a.setZ(Math.max(Math.abs(f[2]),Math.abs(p[2]))),h.normalized){const m=R0(Pa[h.componentType]);a.multiplyScalar(m)}o.max(a)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(o)}n.boundingBox=i;const s=new Ai;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,n.boundingSphere=s}function Nb(n,A,e){const t=A.attributes,i=[];function r(s,o){return e.getDependency("accessor",s).then(function(a){n.setAttribute(o,a)})}for(const s in t){const o=N0[s]||s.toLowerCase();o in n.attributes||i.push(r(t[s],o))}if(A.indices!==void 0&&!n.index){const s=e.getDependency("accessor",A.indices).then(function(o){n.setIndex(o)});i.push(s)}return Se.workingColorSpace!==at&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Se.workingColorSpace}" not supported.`),jr(n,A),gR(n,A,e),Promise.all(i).then(function(){return A.targets!==void 0?cR(n,A.targets,e):n})}const k0=new WeakMap;class mR extends vr{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,t,i){const r=new Ll(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,s=>{this.parse(s,e,i)},t,i)}parse(A,e,t=()=>{}){this.decodeDracoFile(A,e,null,null,je).catch(t)}decodeDracoFile(A,e,t,i,r=at,s=()=>{}){const o={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:r};return this.decodeGeometry(A,o).then(e).catch(s)}decodeGeometry(A,e){const t=JSON.stringify(e);if(k0.has(A)){const a=k0.get(A);if(a.key===t)return a.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const r=this.workerNextTaskID++,s=A.byteLength,o=this._getWorker(r,s).then(a=>(i=a,new Promise((l,u)=>{i._callbacks[r]={resolve:l,reject:u},i.postMessage({type:"decode",id:r,taskConfig:e,buffer:A},[A])}))).then(a=>this._createGeometry(a.geometry));return o.catch(()=>!0).then(()=>{i&&r&&this._releaseTask(i,r)}),k0.set(A,{key:t,promise:o}),o}_createGeometry(A){const e=new qe;A.index&&e.setIndex(new ce(A.index.array,1));for(let t=0;t<A.attributes.length;t++){const i=A.attributes[t],r=i.name,s=i.array,o=i.itemSize,a=new ce(s,o);r==="color"&&(this._assignVertexColorSpace(a,i.vertexColorSpace),a.normalized=!(s instanceof Float32Array)),e.setAttribute(r,a)}return e}_assignVertexColorSpace(A,e){if(e!==je)return;const t=new KA;for(let i=0,r=A.count;i<r;i++)t.fromBufferAttribute(A,i).convertSRGBToLinear(),A.setXYZ(i,t.r,t.g,t.b)}_loadLibrary(A,e){const t=new Ll(this.manager);return t.setPath(this.decoderPath),t.setResponseType(e),t.setWithCredentials(this.withCredentials),new Promise((i,r)=>{t.load(A,i,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(t=>{const i=t[0];A||(this.decoderConfig.wasmBinary=t[1]);const r=vR.toString(),s=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
9458
+ */(function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(e){var t=this;if(!t.ctx||!t.ctx.listener)return t;for(var i=t._howls.length-1;i>=0;i--)t._howls[i].stereo(e);return t},HowlerGlobal.prototype.pos=function(e,t,i){var r=this;if(!r.ctx||!r.ctx.listener)return r;if(t=typeof t!="number"?r._pos[1]:t,i=typeof i!="number"?r._pos[2]:i,typeof e=="number")r._pos=[e,t,i],typeof r.ctx.listener.positionX<"u"?(r.ctx.listener.positionX.setTargetAtTime(r._pos[0],Howler.ctx.currentTime,.1),r.ctx.listener.positionY.setTargetAtTime(r._pos[1],Howler.ctx.currentTime,.1),r.ctx.listener.positionZ.setTargetAtTime(r._pos[2],Howler.ctx.currentTime,.1)):r.ctx.listener.setPosition(r._pos[0],r._pos[1],r._pos[2]);else return r._pos;return r},HowlerGlobal.prototype.orientation=function(e,t,i,r,s,o){var a=this;if(!a.ctx||!a.ctx.listener)return a;var l=a._orientation;if(t=typeof t!="number"?l[1]:t,i=typeof i!="number"?l[2]:i,r=typeof r!="number"?l[3]:r,s=typeof s!="number"?l[4]:s,o=typeof o!="number"?l[5]:o,typeof e=="number")a._orientation=[e,t,i,r,s,o],typeof a.ctx.listener.forwardX<"u"?(a.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1),a.ctx.listener.forwardY.setTargetAtTime(t,Howler.ctx.currentTime,.1),a.ctx.listener.forwardZ.setTargetAtTime(i,Howler.ctx.currentTime,.1),a.ctx.listener.upX.setTargetAtTime(r,Howler.ctx.currentTime,.1),a.ctx.listener.upY.setTargetAtTime(s,Howler.ctx.currentTime,.1),a.ctx.listener.upZ.setTargetAtTime(o,Howler.ctx.currentTime,.1)):a.ctx.listener.setOrientation(e,t,i,r,s,o);else return l;return a},Howl.prototype.init=function(e){return function(t){var i=this;return i._orientation=t.orientation||[1,0,0],i._stereo=t.stereo||null,i._pos=t.pos||null,i._pannerAttr={coneInnerAngle:typeof t.coneInnerAngle<"u"?t.coneInnerAngle:360,coneOuterAngle:typeof t.coneOuterAngle<"u"?t.coneOuterAngle:360,coneOuterGain:typeof t.coneOuterGain<"u"?t.coneOuterGain:0,distanceModel:typeof t.distanceModel<"u"?t.distanceModel:"inverse",maxDistance:typeof t.maxDistance<"u"?t.maxDistance:1e4,panningModel:typeof t.panningModel<"u"?t.panningModel:"HRTF",refDistance:typeof t.refDistance<"u"?t.refDistance:1,rolloffFactor:typeof t.rolloffFactor<"u"?t.rolloffFactor:1},i._onstereo=t.onstereo?[{fn:t.onstereo}]:[],i._onpos=t.onpos?[{fn:t.onpos}]:[],i._onorientation=t.onorientation?[{fn:t.onorientation}]:[],e.call(this,t)}}(Howl.prototype.init),Howl.prototype.stereo=function(e,t){var i=this;if(!i._webAudio)return i;if(i._state!=="loaded")return i._queue.push({event:"stereo",action:function(){i.stereo(e,t)}}),i;var r=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof t>"u")if(typeof e=="number")i._stereo=e,i._pos=[e,0,0];else return i._stereo;for(var s=i._getSoundIds(t),o=0;o<s.length;o++){var a=i._soundById(s[o]);if(a)if(typeof e=="number")a._stereo=e,a._pos=[e,0,0],a._node&&(a._pannerAttr.panningModel="equalpower",(!a._panner||!a._panner.pan)&&A(a,r),r==="spatial"?typeof a._panner.positionX<"u"?(a._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),a._panner.positionY.setValueAtTime(0,Howler.ctx.currentTime),a._panner.positionZ.setValueAtTime(0,Howler.ctx.currentTime)):a._panner.setPosition(e,0,0):a._panner.pan.setValueAtTime(e,Howler.ctx.currentTime)),i._emit("stereo",a._id);else return a._stereo}return i},Howl.prototype.pos=function(e,t,i,r){var s=this;if(!s._webAudio)return s;if(s._state!=="loaded")return s._queue.push({event:"pos",action:function(){s.pos(e,t,i,r)}}),s;if(t=typeof t!="number"?0:t,i=typeof i!="number"?-.5:i,typeof r>"u")if(typeof e=="number")s._pos=[e,t,i];else return s._pos;for(var o=s._getSoundIds(r),a=0;a<o.length;a++){var l=s._soundById(o[a]);if(l)if(typeof e=="number")l._pos=[e,t,i],l._node&&((!l._panner||l._panner.pan)&&A(l,"spatial"),typeof l._panner.positionX<"u"?(l._panner.positionX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.positionY.setValueAtTime(t,Howler.ctx.currentTime),l._panner.positionZ.setValueAtTime(i,Howler.ctx.currentTime)):l._panner.setPosition(e,t,i)),s._emit("pos",l._id);else return l._pos}return s},Howl.prototype.orientation=function(e,t,i,r){var s=this;if(!s._webAudio)return s;if(s._state!=="loaded")return s._queue.push({event:"orientation",action:function(){s.orientation(e,t,i,r)}}),s;if(t=typeof t!="number"?s._orientation[1]:t,i=typeof i!="number"?s._orientation[2]:i,typeof r>"u")if(typeof e=="number")s._orientation=[e,t,i];else return s._orientation;for(var o=s._getSoundIds(r),a=0;a<o.length;a++){var l=s._soundById(o[a]);if(l)if(typeof e=="number")l._orientation=[e,t,i],l._node&&(l._panner||(l._pos||(l._pos=s._pos||[0,0,-.5]),A(l,"spatial")),typeof l._panner.orientationX<"u"?(l._panner.orientationX.setValueAtTime(e,Howler.ctx.currentTime),l._panner.orientationY.setValueAtTime(t,Howler.ctx.currentTime),l._panner.orientationZ.setValueAtTime(i,Howler.ctx.currentTime)):l._panner.setOrientation(e,t,i)),s._emit("orientation",l._id);else return l._orientation}return s},Howl.prototype.pannerAttr=function(){var e=this,t=arguments,i,r,s;if(!e._webAudio)return e;if(t.length===0)return e._pannerAttr;if(t.length===1)if(typeof t[0]=="object")i=t[0],typeof r>"u"&&(i.pannerAttr||(i.pannerAttr={coneInnerAngle:i.coneInnerAngle,coneOuterAngle:i.coneOuterAngle,coneOuterGain:i.coneOuterGain,distanceModel:i.distanceModel,maxDistance:i.maxDistance,refDistance:i.refDistance,rolloffFactor:i.rolloffFactor,panningModel:i.panningModel}),e._pannerAttr={coneInnerAngle:typeof i.pannerAttr.coneInnerAngle<"u"?i.pannerAttr.coneInnerAngle:e._coneInnerAngle,coneOuterAngle:typeof i.pannerAttr.coneOuterAngle<"u"?i.pannerAttr.coneOuterAngle:e._coneOuterAngle,coneOuterGain:typeof i.pannerAttr.coneOuterGain<"u"?i.pannerAttr.coneOuterGain:e._coneOuterGain,distanceModel:typeof i.pannerAttr.distanceModel<"u"?i.pannerAttr.distanceModel:e._distanceModel,maxDistance:typeof i.pannerAttr.maxDistance<"u"?i.pannerAttr.maxDistance:e._maxDistance,refDistance:typeof i.pannerAttr.refDistance<"u"?i.pannerAttr.refDistance:e._refDistance,rolloffFactor:typeof i.pannerAttr.rolloffFactor<"u"?i.pannerAttr.rolloffFactor:e._rolloffFactor,panningModel:typeof i.pannerAttr.panningModel<"u"?i.pannerAttr.panningModel:e._panningModel});else return s=e._soundById(parseInt(t[0],10)),s?s._pannerAttr:e._pannerAttr;else t.length===2&&(i=t[0],r=parseInt(t[1],10));for(var o=e._getSoundIds(r),a=0;a<o.length;a++)if(s=e._soundById(o[a]),s){var l=s._pannerAttr;l={coneInnerAngle:typeof i.coneInnerAngle<"u"?i.coneInnerAngle:l.coneInnerAngle,coneOuterAngle:typeof i.coneOuterAngle<"u"?i.coneOuterAngle:l.coneOuterAngle,coneOuterGain:typeof i.coneOuterGain<"u"?i.coneOuterGain:l.coneOuterGain,distanceModel:typeof i.distanceModel<"u"?i.distanceModel:l.distanceModel,maxDistance:typeof i.maxDistance<"u"?i.maxDistance:l.maxDistance,refDistance:typeof i.refDistance<"u"?i.refDistance:l.refDistance,rolloffFactor:typeof i.rolloffFactor<"u"?i.rolloffFactor:l.rolloffFactor,panningModel:typeof i.panningModel<"u"?i.panningModel:l.panningModel};var u=s._panner;u||(s._pos||(s._pos=e._pos||[0,0,-.5]),A(s,"spatial"),u=s._panner),u.coneInnerAngle=l.coneInnerAngle,u.coneOuterAngle=l.coneOuterAngle,u.coneOuterGain=l.coneOuterGain,u.distanceModel=l.distanceModel,u.maxDistance=l.maxDistance,u.refDistance=l.refDistance,u.rolloffFactor=l.rolloffFactor,u.panningModel=l.panningModel}return e},Sound.prototype.init=function(e){return function(){var t=this,i=t._parent;t._orientation=i._orientation,t._stereo=i._stereo,t._pos=i._pos,t._pannerAttr=i._pannerAttr,e.call(this),t._stereo?i.stereo(t._stereo):t._pos&&i.pos(t._pos[0],t._pos[1],t._pos[2],t._id)}}(Sound.prototype.init),Sound.prototype.reset=function(e){return function(){var t=this,i=t._parent;return t._orientation=i._orientation,t._stereo=i._stereo,t._pos=i._pos,t._pannerAttr=i._pannerAttr,t._stereo?i.stereo(t._stereo):t._pos?i.pos(t._pos[0],t._pos[1],t._pos[2],t._id):t._panner&&(t._panner.disconnect(0),t._panner=void 0,i._refreshBuffer(t)),e.call(this)}}(Sound.prototype.reset);var A=function(e,t){t=t||"spatial",t==="spatial"?(e._panner=Howler.ctx.createPanner(),e._panner.coneInnerAngle=e._pannerAttr.coneInnerAngle,e._panner.coneOuterAngle=e._pannerAttr.coneOuterAngle,e._panner.coneOuterGain=e._pannerAttr.coneOuterGain,e._panner.distanceModel=e._pannerAttr.distanceModel,e._panner.maxDistance=e._pannerAttr.maxDistance,e._panner.refDistance=e._pannerAttr.refDistance,e._panner.rolloffFactor=e._pannerAttr.rolloffFactor,e._panner.panningModel=e._pannerAttr.panningModel,typeof e._panner.positionX<"u"?(e._panner.positionX.setValueAtTime(e._pos[0],Howler.ctx.currentTime),e._panner.positionY.setValueAtTime(e._pos[1],Howler.ctx.currentTime),e._panner.positionZ.setValueAtTime(e._pos[2],Howler.ctx.currentTime)):e._panner.setPosition(e._pos[0],e._pos[1],e._pos[2]),typeof e._panner.orientationX<"u"?(e._panner.orientationX.setValueAtTime(e._orientation[0],Howler.ctx.currentTime),e._panner.orientationY.setValueAtTime(e._orientation[1],Howler.ctx.currentTime),e._panner.orientationZ.setValueAtTime(e._orientation[2],Howler.ctx.currentTime)):e._panner.setOrientation(e._orientation[0],e._orientation[1],e._orientation[2])):(e._panner=Howler.ctx.createStereoPanner(),e._panner.pan.setValueAtTime(e._stereo,Howler.ctx.currentTime)),e._panner.connect(e._node),e._paused||e._parent.pause(e._id,!0).play(e._id,!0)}})()})(Sb);const E9="data:audio/mpeg;base64,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";let L9=class{constructor(){this.sound=new Sb.Howl({src:[E9]})}play(){this.sound.play()}};const Sn=n=>{var A,e;for(;n.children.length>0;)Sn(n.children[0]),(A=n.children[0])==null||A.removeFromParent();if(n instanceof Pe)try{(e=n.geometry)==null||e.dispose()}catch{}else n.dispose&&n.dispose()};function O9(n){return new O(n[0],n[1],n[2])}function q9(){let n=3,A=Math.max(1/window.devicePixelRatio,.5);return window.innerWidth/window.innerHeight<.65&&(n=4,A=1/window.devicePixelRatio),{tiles:n,renderScale:A}}function Mb(n){let A=!1,e=!1,t=!1,i=1/0,r=1/0,s=1/0,o=-1/0,a=-1/0,l=-1/0,u=0,c=0;return n.traverse(f=>{if(f.isMesh&&f.geometry){const p=f;if(p.material.userData.isLOGO)return;p.geometry.computeBoundingBox();let m=p.geometry.attributes.position;const d=p.geometry.morphAttributes.position;let g=p.morphTargetInfluences;const y=Object.keys(p.morphTargetDictionary||{});y.includes("width")&&(e=!0),y.includes("length")&&(A=!0),y.includes("height")&&(t=!0);for(let v=0;v<m.count;v++){let w=m.getX(v),C=m.getY(v),_=m.getZ(v);c=Math.max(C,c),d&&g&&d.forEach((S,b)=>{const I=g&&g[b]||0;w+=S.getX(v)*I,C+=S.getY(v)*I,_+=S.getZ(v)*I}),w<i&&(i=w),C<r&&(r=C),_<s&&(s=_),w>o&&(o=w),C>a&&(a=C),_>l&&(l=_);const x=Math.sqrt(w*w+_*_);x>u&&(u=x)}}}),{box:new ye(new O(i,r,s),new O(o,a,l)),maxRadius:u,height:c,hasWidth:e,hasLength:A,hasHeight:t}}function N9(n,A,e=null){let t=0;return function(){let i=e||this,r=arguments;clearTimeout(t),t=window.setTimeout(function(){n.apply(i,r)},A)}}class Ef{constructor(A,e,t){this.length=A,this.width=e,this.height=t}}const Pb=n=>{var t;let A=0,e=0;if(n.geometry){n.geometry.computeBoundingBox();const i=new O;(t=n.geometry.boundingBox)==null||t.getSize(i),i.y?(e=i.y,!i.x&&i.z?A=i.z:i.x&&!i.z?A=i.x:i.x&&i.z&&(A=i.z)):(A=i.z,e=i.x)}return{width:A,height:e}};function Tb(n,A){if(A===k3)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),n;if(A===Zd||A===Zy){let e=n.getIndex();if(e===null){const s=[],o=n.getAttribute("position");if(o!==void 0){for(let a=0;a<o.count;a++)s.push(a);n.setIndex(s),e=n.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),n}const t=e.count-2,i=[];if(A===Zd)for(let s=1;s<=t;s++)i.push(e.getX(0)),i.push(e.getX(s)),i.push(e.getX(s+1));else for(let s=0;s<t;s++)s%2===0?(i.push(e.getX(s)),i.push(e.getX(s+1)),i.push(e.getX(s+2))):(i.push(e.getX(s+2)),i.push(e.getX(s+1)),i.push(e.getX(s)));i.length/3!==t&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const r=n.clone();return r.setIndex(i),r.clearGroups(),r}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",A),n}class B9 extends vr{constructor(A){super(A),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new K9(e)}),this.register(function(e){return new F9(e)}),this.register(function(e){return new Q9(e)}),this.register(function(e){return new V9(e)}),this.register(function(e){return new $9(e)}),this.register(function(e){return new H9(e)}),this.register(function(e){return new Y9(e)}),this.register(function(e){return new U9(e)}),this.register(function(e){return new W9(e)}),this.register(function(e){return new j9(e)}),this.register(function(e){return new J9(e)}),this.register(function(e){return new G9(e)}),this.register(function(e){return new X9(e)}),this.register(function(e){return new Z9(e)}),this.register(function(e){return new R9(e)}),this.register(function(e){return new AR(e)}),this.register(function(e){return new eR(e)})}load(A,e,t,i){const r=this;let s;if(this.resourcePath!=="")s=this.resourcePath;else if(this.path!==""){const l=ql.extractUrlBase(A);s=ql.resolveURL(l,this.path)}else s=ql.extractUrlBase(A);this.manager.itemStart(A);const o=function(l){i?i(l):console.error(l),r.manager.itemError(A),r.manager.itemEnd(A)},a=new Ll(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(A,function(l){try{r.parse(l,s,function(u){e(u),r.manager.itemEnd(A)},o)}catch(u){o(u)}},t,o)}setDRACOLoader(A){return this.dracoLoader=A,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(A){return this.ktx2Loader=A,this}setMeshoptDecoder(A){return this.meshoptDecoder=A,this}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,i){let r;const s={},o={},a=new TextDecoder;if(typeof A=="string")r=JSON.parse(A);else if(A instanceof ArrayBuffer)if(a.decode(new Uint8Array(A,0,4))===Db){try{s[pe.KHR_BINARY_GLTF]=new tR(A)}catch(c){i&&i(c);return}r=JSON.parse(s[pe.KHR_BINARY_GLTF].content)}else r=JSON.parse(a.decode(A));else r=A;if(r.asset===void 0||r.asset.version[0]<2){i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const l=new pR(r,{path:e||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let u=0;u<this.pluginCallbacks.length;u++){const c=this.pluginCallbacks[u](l);c.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),o[c.name]=c,s[c.name]=!0}if(r.extensionsUsed)for(let u=0;u<r.extensionsUsed.length;++u){const c=r.extensionsUsed[u],h=r.extensionsRequired||[];switch(c){case pe.KHR_MATERIALS_UNLIT:s[c]=new k9;break;case pe.KHR_DRACO_MESH_COMPRESSION:s[c]=new iR(r,this.dracoLoader);break;case pe.KHR_TEXTURE_TRANSFORM:s[c]=new nR;break;case pe.KHR_MESH_QUANTIZATION:s[c]=new rR;break;default:h.indexOf(c)>=0&&o[c]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+c+'".')}}l.setExtensions(s),l.setPlugins(o),l.parse(t,i)}parseAsync(A,e){const t=this;return new Promise(function(i,r){t.parse(A,e,i,r)})}}function z9(){let n={};return{get:function(A){return n[A]},add:function(A,e){n[A]=e},remove:function(A){delete n[A]},removeAll:function(){n={}}}}const pe={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class R9{constructor(A){this.parser=A,this.name=pe.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const A=this.parser,e=this.parser.json.nodes||[];for(let t=0,i=e.length;t<i;t++){const r=e[t];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&A._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(A){const e=this.parser,t="light:"+A;let i=e.cache.get(t);if(i)return i;const r=e.json,a=((r.extensions&&r.extensions[this.name]||{}).lights||[])[A];let l;const u=new KA(16777215);a.color!==void 0&&u.setRGB(a.color[0],a.color[1],a.color[2],at);const c=a.range!==void 0?a.range:0;switch(a.type){case"directional":l=new GD(u),l.target.position.set(0,0,-1),l.add(l.target);break;case"point":l=new KD(u),l.distance=c;break;case"spot":l=new kD(u),l.distance=c,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle!==void 0?a.spot.innerConeAngle:0,a.spot.outerConeAngle=a.spot.outerConeAngle!==void 0?a.spot.outerConeAngle:Math.PI/4,l.angle=a.spot.outerConeAngle,l.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,l.target.position.set(0,0,-1),l.add(l.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+a.type)}return l.position.set(0,0,0),l.decay=2,jr(l,a),a.intensity!==void 0&&(l.intensity=a.intensity),l.name=e.createUniqueName(a.name||"light_"+A),i=Promise.resolve(l),e.cache.add(t,i),i}getDependency(A,e){if(A==="light")return this._loadLight(e)}createNodeAttachment(A){const e=this,t=this.parser,r=t.json.nodes[A],o=(r.extensions&&r.extensions[this.name]||{}).light;return o===void 0?null:this._loadLight(o).then(function(a){return t._getNodeRef(e.cache,o,a)})}}let k9=class{constructor(){this.name=pe.KHR_MATERIALS_UNLIT}getMaterialType(){return ti}extendParams(A,e,t){const i=[];A.color=new KA(1,1,1),A.opacity=1;const r=e.pbrMetallicRoughness;if(r){if(Array.isArray(r.baseColorFactor)){const s=r.baseColorFactor;A.color.setRGB(s[0],s[1],s[2],at),A.opacity=s[3]}r.baseColorTexture!==void 0&&i.push(t.assignTexture(A,"map",r.baseColorTexture,je))}return Promise.all(i)}},j9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name].emissiveStrength;return r!==void 0&&(e.emissiveIntensity=r),Promise.resolve()}},K9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_CLEARCOAT}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];if(s.clearcoatFactor!==void 0&&(e.clearcoat=s.clearcoatFactor),s.clearcoatTexture!==void 0&&r.push(t.assignTexture(e,"clearcoatMap",s.clearcoatTexture)),s.clearcoatRoughnessFactor!==void 0&&(e.clearcoatRoughness=s.clearcoatRoughnessFactor),s.clearcoatRoughnessTexture!==void 0&&r.push(t.assignTexture(e,"clearcoatRoughnessMap",s.clearcoatRoughnessTexture)),s.clearcoatNormalTexture!==void 0&&(r.push(t.assignTexture(e,"clearcoatNormalMap",s.clearcoatNormalTexture)),s.clearcoatNormalTexture.scale!==void 0)){const o=s.clearcoatNormalTexture.scale;e.clearcoatNormalScale=new uA(o,o)}return Promise.all(r)}},F9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_DISPERSION}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return e.dispersion=r.dispersion!==void 0?r.dispersion:0,Promise.resolve()}},G9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_IRIDESCENCE}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.iridescenceFactor!==void 0&&(e.iridescence=s.iridescenceFactor),s.iridescenceTexture!==void 0&&r.push(t.assignTexture(e,"iridescenceMap",s.iridescenceTexture)),s.iridescenceIor!==void 0&&(e.iridescenceIOR=s.iridescenceIor),e.iridescenceThicknessRange===void 0&&(e.iridescenceThicknessRange=[100,400]),s.iridescenceThicknessMinimum!==void 0&&(e.iridescenceThicknessRange[0]=s.iridescenceThicknessMinimum),s.iridescenceThicknessMaximum!==void 0&&(e.iridescenceThicknessRange[1]=s.iridescenceThicknessMaximum),s.iridescenceThicknessTexture!==void 0&&r.push(t.assignTexture(e,"iridescenceThicknessMap",s.iridescenceThicknessTexture)),Promise.all(r)}},H9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_SHEEN}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[];e.sheenColor=new KA(0,0,0),e.sheenRoughness=0,e.sheen=1;const s=i.extensions[this.name];if(s.sheenColorFactor!==void 0){const o=s.sheenColorFactor;e.sheenColor.setRGB(o[0],o[1],o[2],at)}return s.sheenRoughnessFactor!==void 0&&(e.sheenRoughness=s.sheenRoughnessFactor),s.sheenColorTexture!==void 0&&r.push(t.assignTexture(e,"sheenColorMap",s.sheenColorTexture,je)),s.sheenRoughnessTexture!==void 0&&r.push(t.assignTexture(e,"sheenRoughnessMap",s.sheenRoughnessTexture)),Promise.all(r)}},Y9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_TRANSMISSION}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.transmissionFactor!==void 0&&(e.transmission=s.transmissionFactor),s.transmissionTexture!==void 0&&r.push(t.assignTexture(e,"transmissionMap",s.transmissionTexture)),Promise.all(r)}},U9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_VOLUME}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];e.thickness=s.thicknessFactor!==void 0?s.thicknessFactor:0,s.thicknessTexture!==void 0&&r.push(t.assignTexture(e,"thicknessMap",s.thicknessTexture)),e.attenuationDistance=s.attenuationDistance||1/0;const o=s.attenuationColor||[1,1,1];return e.attenuationColor=new KA().setRGB(o[0],o[1],o[2],at),Promise.all(r)}},W9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_IOR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const i=this.parser.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=i.extensions[this.name];return e.ior=r.ior!==void 0?r.ior:1.5,Promise.resolve()}},J9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_SPECULAR}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];e.specularIntensity=s.specularFactor!==void 0?s.specularFactor:1,s.specularTexture!==void 0&&r.push(t.assignTexture(e,"specularIntensityMap",s.specularTexture));const o=s.specularColorFactor||[1,1,1];return e.specularColor=new KA().setRGB(o[0],o[1],o[2],at),s.specularColorTexture!==void 0&&r.push(t.assignTexture(e,"specularColorMap",s.specularColorTexture,je)),Promise.all(r)}},Z9=class{constructor(A){this.parser=A,this.name=pe.EXT_MATERIALS_BUMP}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return e.bumpScale=s.bumpFactor!==void 0?s.bumpFactor:1,s.bumpTexture!==void 0&&r.push(t.assignTexture(e,"bumpMap",s.bumpTexture)),Promise.all(r)}},X9=class{constructor(A){this.parser=A,this.name=pe.KHR_MATERIALS_ANISOTROPY}getMaterialType(A){const t=this.parser.json.materials[A];return!t.extensions||!t.extensions[this.name]?null:hn}extendMaterialParams(A,e){const t=this.parser,i=t.json.materials[A];if(!i.extensions||!i.extensions[this.name])return Promise.resolve();const r=[],s=i.extensions[this.name];return s.anisotropyStrength!==void 0&&(e.anisotropy=s.anisotropyStrength),s.anisotropyRotation!==void 0&&(e.anisotropyRotation=s.anisotropyRotation),s.anisotropyTexture!==void 0&&r.push(t.assignTexture(e,"anisotropyMap",s.anisotropyTexture)),Promise.all(r)}};class Q9{constructor(A){this.parser=A,this.name=pe.KHR_TEXTURE_BASISU}loadTexture(A){const e=this.parser,t=e.json,i=t.textures[A];if(!i.extensions||!i.extensions[this.name])return null;const r=i.extensions[this.name],s=e.options.ktx2Loader;if(!s){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return e.loadTextureImage(A,r.source,s)}}class V9{constructor(A){this.parser=A,this.name=pe.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(A){const e=this.name,t=this.parser,i=t.json,r=i.textures[A];if(!r.extensions||!r.extensions[e])return null;const s=r.extensions[e],o=i.images[s.source];let a=t.textureLoader;if(o.uri){const l=t.options.manager.getHandler(o.uri);l!==null&&(a=l)}return this.detectSupport().then(function(l){if(l)return t.loadTextureImage(A,s.source,a);if(i.extensionsRequired&&i.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return t.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class $9{constructor(A){this.parser=A,this.name=pe.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(A){const e=this.name,t=this.parser,i=t.json,r=i.textures[A];if(!r.extensions||!r.extensions[e])return null;const s=r.extensions[e],o=i.images[s.source];let a=t.textureLoader;if(o.uri){const l=t.options.manager.getHandler(o.uri);l!==null&&(a=l)}return this.detectSupport().then(function(l){if(l)return t.loadTextureImage(A,s.source,a);if(i.extensionsRequired&&i.extensionsRequired.indexOf(e)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return t.loadTexture(A)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(A){const e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",e.onload=e.onerror=function(){A(e.height===1)}})),this.isSupported}}class AR{constructor(A){this.name=pe.EXT_MESHOPT_COMPRESSION,this.parser=A}loadBufferView(A){const e=this.parser.json,t=e.bufferViews[A];if(t.extensions&&t.extensions[this.name]){const i=t.extensions[this.name],r=this.parser.getDependency("buffer",i.buffer),s=this.parser.options.meshoptDecoder;if(!s||!s.supported){if(e.extensionsRequired&&e.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then(function(o){const a=i.byteOffset||0,l=i.byteLength||0,u=i.count,c=i.byteStride,h=new Uint8Array(o,a,l);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(u,c,h,i.mode,i.filter).then(function(f){return f.buffer}):s.ready.then(function(){const f=new ArrayBuffer(u*c);return s.decodeGltfBuffer(new Uint8Array(f),u,c,h,i.mode,i.filter),f})})}else return null}}let eR=class{constructor(A){this.name=pe.EXT_MESH_GPU_INSTANCING,this.parser=A}createNodeMesh(A){const e=this.parser.json,t=e.nodes[A];if(!t.extensions||!t.extensions[this.name]||t.mesh===void 0)return null;const i=e.meshes[t.mesh];for(const l of i.primitives)if(l.mode!==Si.TRIANGLES&&l.mode!==Si.TRIANGLE_STRIP&&l.mode!==Si.TRIANGLE_FAN&&l.mode!==void 0)return null;const s=t.extensions[this.name].attributes,o=[],a={};for(const l in s)o.push(this.parser.getDependency("accessor",s[l]).then(u=>(a[l]=u,a[l])));return o.length<1?null:(o.push(this.parser.createNodeMesh(A)),Promise.all(o).then(l=>{const u=l.pop(),c=u.isGroup?u.children:[u],h=l[0].count,f=[];for(const p of c){const m=new zA,d=new O,g=new vi,y=new O(1,1,1),v=new HT(p.geometry,p.material,h);for(let w=0;w<h;w++)a.TRANSLATION&&d.fromBufferAttribute(a.TRANSLATION,w),a.ROTATION&&g.fromBufferAttribute(a.ROTATION,w),a.SCALE&&y.fromBufferAttribute(a.SCALE,w),v.setMatrixAt(w,m.compose(d,g,y));for(const w in a)if(w==="_COLOR_0"){const C=a[w];v.instanceColor=new qh(C.array,C.itemSize,C.normalized)}else w!=="TRANSLATION"&&w!=="ROTATION"&&w!=="SCALE"&&p.geometry.setAttribute(w,a[w]);Ie.prototype.copy.call(v,p),this.parser.assignFinalMaterial(v),f.push(v)}return u.isGroup?(u.clear(),u.add(...f),u):f[0]}))}};const Db="glTF",hc=12,Eb={JSON:1313821514,BIN:5130562};class tR{constructor(A){this.name=pe.KHR_BINARY_GLTF,this.content=null,this.body=null;const e=new DataView(A,0,hc),t=new TextDecoder;if(this.header={magic:t.decode(new Uint8Array(A.slice(0,4))),version:e.getUint32(4,!0),length:e.getUint32(8,!0)},this.header.magic!==Db)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const i=this.header.length-hc,r=new DataView(A,hc);let s=0;for(;s<i;){const o=r.getUint32(s,!0);s+=4;const a=r.getUint32(s,!0);if(s+=4,a===Eb.JSON){const l=new Uint8Array(A,hc+s,o);this.content=t.decode(l)}else if(a===Eb.BIN){const l=hc+s;this.body=A.slice(l,l+o)}s+=o}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class iR{constructor(A,e){if(!e)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=pe.KHR_DRACO_MESH_COMPRESSION,this.json=A,this.dracoLoader=e,this.dracoLoader.preload()}decodePrimitive(A,e){const t=this.json,i=this.dracoLoader,r=A.extensions[this.name].bufferView,s=A.extensions[this.name].attributes,o={},a={},l={};for(const u in s){const c=N0[u]||u.toLowerCase();o[c]=s[u]}for(const u in A.attributes){const c=N0[u]||u.toLowerCase();if(s[u]!==void 0){const h=t.accessors[A.attributes[u]],f=Pa[h.componentType];l[c]=f.name,a[c]=h.normalized===!0}}return e.getDependency("bufferView",r).then(function(u){return new Promise(function(c,h){i.decodeDracoFile(u,function(f){for(const p in f.attributes){const m=f.attributes[p],d=a[p];d!==void 0&&(m.normalized=d)}c(f)},o,l,at,h)})})}}class nR{constructor(){this.name=pe.KHR_TEXTURE_TRANSFORM}extendTexture(A,e){return(e.texCoord===void 0||e.texCoord===A.channel)&&e.offset===void 0&&e.rotation===void 0&&e.scale===void 0||(A=A.clone(),e.texCoord!==void 0&&(A.channel=e.texCoord),e.offset!==void 0&&A.offset.fromArray(e.offset),e.rotation!==void 0&&(A.rotation=e.rotation),e.scale!==void 0&&A.repeat.fromArray(e.scale),A.needsUpdate=!0),A}}class rR{constructor(){this.name=pe.KHR_MESH_QUANTIZATION}}class Lb extends El{constructor(A,e,t,i){super(A,e,t,i)}copySampleValue_(A){const e=this.resultBuffer,t=this.sampleValues,i=this.valueSize,r=A*i*3+i;for(let s=0;s!==i;s++)e[s]=t[r+s];return e}interpolate_(A,e,t,i){const r=this.resultBuffer,s=this.sampleValues,o=this.valueSize,a=o*2,l=o*3,u=i-e,c=(t-e)/u,h=c*c,f=h*c,p=A*l,m=p-l,d=-2*f+3*h,g=f-h,y=1-d,v=g-h+c;for(let w=0;w!==o;w++){const C=s[m+w+o],_=s[m+w+a]*u,x=s[p+w+o],S=s[p+w]*u;r[w]=y*C+v*_+d*x+g*S}return r}}const sR=new vi;class oR extends Lb{interpolate_(A,e,t,i){const r=super.interpolate_(A,e,t,i);return sR.fromArray(r).normalize().toArray(r),r}}const Si={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Pa={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Ob={9728:fe,9729:we,9984:Rd,9985:al,9986:to,9987:zi},qb={33071:et,33648:ol,10497:zt},q0={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},N0={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},kr={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},aR={CUBICSPLINE:void 0,LINEAR:is,STEP:ro},B0={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function lR(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new Dl({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:Bt})),n.DefaultMaterial}function Hs(n,A,e){for(const t in e.extensions)n[t]===void 0&&(A.userData.gltfExtensions=A.userData.gltfExtensions||{},A.userData.gltfExtensions[t]=e.extensions[t])}function jr(n,A){A.extras!==void 0&&(typeof A.extras=="object"?Object.assign(n.userData,A.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+A.extras))}function cR(n,A,e){let t=!1,i=!1,r=!1;for(let l=0,u=A.length;l<u;l++){const c=A[l];if(c.POSITION!==void 0&&(t=!0),c.NORMAL!==void 0&&(i=!0),c.COLOR_0!==void 0&&(r=!0),t&&i&&r)break}if(!t&&!i&&!r)return Promise.resolve(n);const s=[],o=[],a=[];for(let l=0,u=A.length;l<u;l++){const c=A[l];if(t){const h=c.POSITION!==void 0?e.getDependency("accessor",c.POSITION):n.attributes.position;s.push(h)}if(i){const h=c.NORMAL!==void 0?e.getDependency("accessor",c.NORMAL):n.attributes.normal;o.push(h)}if(r){const h=c.COLOR_0!==void 0?e.getDependency("accessor",c.COLOR_0):n.attributes.color;a.push(h)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(a)]).then(function(l){const u=l[0],c=l[1],h=l[2];return t&&(n.morphAttributes.position=u),i&&(n.morphAttributes.normal=c),r&&(n.morphAttributes.color=h),n.morphTargetsRelative=!0,n})}function hR(n,A){if(n.updateMorphTargets(),A.weights!==void 0)for(let e=0,t=A.weights.length;e<t;e++)n.morphTargetInfluences[e]=A.weights[e];if(A.extras&&Array.isArray(A.extras.targetNames)){const e=A.extras.targetNames;if(n.morphTargetInfluences.length===e.length){n.morphTargetDictionary={};for(let t=0,i=e.length;t<i;t++)n.morphTargetDictionary[e[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function uR(n){let A;const e=n.extensions&&n.extensions[pe.KHR_DRACO_MESH_COMPRESSION];if(e?A="draco:"+e.bufferView+":"+e.indices+":"+z0(e.attributes):A=n.indices+":"+z0(n.attributes)+":"+n.mode,n.targets!==void 0)for(let t=0,i=n.targets.length;t<i;t++)A+=":"+z0(n.targets[t]);return A}function z0(n){let A="";const e=Object.keys(n).sort();for(let t=0,i=e.length;t<i;t++)A+=e[t]+":"+n[e[t]]+";";return A}function R0(n){switch(n){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function fR(n){return n.search(/\.jpe?g($|\?)/i)>0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":"image/png"}const dR=new zA;class pR{constructor(A={},e={}){this.json=A,this.extensions={},this.plugins={},this.options=e,this.cache=new z9,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let t=!1,i=!1,r=-1;typeof navigator<"u"&&(t=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)===!0,i=navigator.userAgent.indexOf("Firefox")>-1,r=i?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),typeof createImageBitmap>"u"||t||i&&r<98?this.textureLoader=new Zp(this.options.manager):this.textureLoader=new YD(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Ll(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(A){this.extensions=A}setPlugins(A){this.plugins=A}parse(A,e){const t=this,i=this.json,r=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(s){return s._markDefs&&s._markDefs()}),Promise.all(this._invokeAll(function(s){return s.beforeRoot&&s.beforeRoot()})).then(function(){return Promise.all([t.getDependencies("scene"),t.getDependencies("animation"),t.getDependencies("camera")])}).then(function(s){const o={scene:s[0][i.scene||0],scenes:s[0],animations:s[1],cameras:s[2],asset:i.asset,parser:t,userData:{}};return Hs(r,o,i),jr(o,i),Promise.all(t._invokeAll(function(a){return a.afterRoot&&a.afterRoot(o)})).then(function(){for(const a of o.scenes)a.updateMatrixWorld();A(o)})}).catch(e)}_markDefs(){const A=this.json.nodes||[],e=this.json.skins||[],t=this.json.meshes||[];for(let i=0,r=e.length;i<r;i++){const s=e[i].joints;for(let o=0,a=s.length;o<a;o++)A[s[o]].isBone=!0}for(let i=0,r=A.length;i<r;i++){const s=A[i];s.mesh!==void 0&&(this._addNodeRef(this.meshCache,s.mesh),s.skin!==void 0&&(t[s.mesh].isSkinnedMesh=!0)),s.camera!==void 0&&this._addNodeRef(this.cameraCache,s.camera)}}_addNodeRef(A,e){e!==void 0&&(A.refs[e]===void 0&&(A.refs[e]=A.uses[e]=0),A.refs[e]++)}_getNodeRef(A,e,t){if(A.refs[e]<=1)return t;const i=t.clone(),r=(s,o)=>{const a=this.associations.get(s);a!=null&&this.associations.set(o,a);for(const[l,u]of s.children.entries())r(u,o.children[l])};return r(t,i),i.name+="_instance_"+A.uses[e]++,i}_invokeOne(A){const e=Object.values(this.plugins);e.push(this);for(let t=0;t<e.length;t++){const i=A(e[t]);if(i)return i}return null}_invokeAll(A){const e=Object.values(this.plugins);e.unshift(this);const t=[];for(let i=0;i<e.length;i++){const r=A(e[i]);r&&t.push(r)}return t}getDependency(A,e){const t=A+":"+e;let i=this.cache.get(t);if(!i){switch(A){case"scene":i=this.loadScene(e);break;case"node":i=this._invokeOne(function(r){return r.loadNode&&r.loadNode(e)});break;case"mesh":i=this._invokeOne(function(r){return r.loadMesh&&r.loadMesh(e)});break;case"accessor":i=this.loadAccessor(e);break;case"bufferView":i=this._invokeOne(function(r){return r.loadBufferView&&r.loadBufferView(e)});break;case"buffer":i=this.loadBuffer(e);break;case"material":i=this._invokeOne(function(r){return r.loadMaterial&&r.loadMaterial(e)});break;case"texture":i=this._invokeOne(function(r){return r.loadTexture&&r.loadTexture(e)});break;case"skin":i=this.loadSkin(e);break;case"animation":i=this._invokeOne(function(r){return r.loadAnimation&&r.loadAnimation(e)});break;case"camera":i=this.loadCamera(e);break;default:if(i=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(A,e)}),!i)throw new Error("Unknown type: "+A);break}this.cache.add(t,i)}return i}getDependencies(A){let e=this.cache.get(A);if(!e){const t=this,i=this.json[A+(A==="mesh"?"es":"s")]||[];e=Promise.all(i.map(function(r,s){return t.getDependency(A,s)})),this.cache.add(A,e)}return e}loadBuffer(A){const e=this.json.buffers[A],t=this.fileLoader;if(e.type&&e.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+e.type+" buffer type is not supported.");if(e.uri===void 0&&A===0)return Promise.resolve(this.extensions[pe.KHR_BINARY_GLTF].body);const i=this.options;return new Promise(function(r,s){t.load(ql.resolveURL(e.uri,i.path),r,void 0,function(){s(new Error('THREE.GLTFLoader: Failed to load buffer "'+e.uri+'".'))})})}loadBufferView(A){const e=this.json.bufferViews[A];return this.getDependency("buffer",e.buffer).then(function(t){const i=e.byteLength||0,r=e.byteOffset||0;return t.slice(r,r+i)})}loadAccessor(A){const e=this,t=this.json,i=this.json.accessors[A];if(i.bufferView===void 0&&i.sparse===void 0){const s=q0[i.type],o=Pa[i.componentType],a=i.normalized===!0,l=new o(i.count*s);return Promise.resolve(new ce(l,s,a))}const r=[];return i.bufferView!==void 0?r.push(this.getDependency("bufferView",i.bufferView)):r.push(null),i.sparse!==void 0&&(r.push(this.getDependency("bufferView",i.sparse.indices.bufferView)),r.push(this.getDependency("bufferView",i.sparse.values.bufferView))),Promise.all(r).then(function(s){const o=s[0],a=q0[i.type],l=Pa[i.componentType],u=l.BYTES_PER_ELEMENT,c=u*a,h=i.byteOffset||0,f=i.bufferView!==void 0?t.bufferViews[i.bufferView].byteStride:void 0,p=i.normalized===!0;let m,d;if(f&&f!==c){const g=Math.floor(h/f),y="InterleavedBuffer:"+i.bufferView+":"+i.componentType+":"+g+":"+i.count;let v=e.cache.get(y);v||(m=new l(o,g*f,i.count*f/u),v=new kT(m,f/u),e.cache.add(y,v)),d=new Dp(v,a,h%f/u,p)}else o===null?m=new l(i.count*a):m=new l(o,h,i.count*a),d=new ce(m,a,p);if(i.sparse!==void 0){const g=q0.SCALAR,y=Pa[i.sparse.indices.componentType],v=i.sparse.indices.byteOffset||0,w=i.sparse.values.byteOffset||0,C=new y(s[1],v,i.sparse.count*g),_=new l(s[2],w,i.sparse.count*a);o!==null&&(d=new ce(d.array.slice(),d.itemSize,d.normalized));for(let x=0,S=C.length;x<S;x++){const b=C[x];if(d.setX(b,_[x*a]),a>=2&&d.setY(b,_[x*a+1]),a>=3&&d.setZ(b,_[x*a+2]),a>=4&&d.setW(b,_[x*a+3]),a>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return d})}loadTexture(A){const e=this.json,t=this.options,r=e.textures[A].source,s=e.images[r];let o=this.textureLoader;if(s.uri){const a=t.manager.getHandler(s.uri);a!==null&&(o=a)}return this.loadTextureImage(A,r,o)}loadTextureImage(A,e,t){const i=this,r=this.json,s=r.textures[A],o=r.images[e],a=(o.uri||o.bufferView)+":"+s.sampler;if(this.textureCache[a])return this.textureCache[a];const l=this.loadImageSource(e,t).then(function(u){u.flipY=!1,u.name=s.name||o.name||"",u.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(u.name=o.uri);const h=(r.samplers||{})[s.sampler]||{};return u.magFilter=Ob[h.magFilter]||we,u.minFilter=Ob[h.minFilter]||zi,u.wrapS=qb[h.wrapS]||zt,u.wrapT=qb[h.wrapT]||zt,i.associations.set(u,{textures:A}),u}).catch(function(){return null});return this.textureCache[a]=l,l}loadImageSource(A,e){const t=this,i=this.json,r=this.options;if(this.sourceCache[A]!==void 0)return this.sourceCache[A].then(c=>c.clone());const s=i.images[A],o=self.URL||self.webkitURL;let a=s.uri||"",l=!1;if(s.bufferView!==void 0)a=t.getDependency("bufferView",s.bufferView).then(function(c){l=!0;const h=new Blob([c],{type:s.mimeType});return a=o.createObjectURL(h),a});else if(s.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+A+" is missing URI and bufferView");const u=Promise.resolve(a).then(function(c){return new Promise(function(h,f){let p=h;e.isImageBitmapLoader===!0&&(p=function(m){const d=new lt(m);d.needsUpdate=!0,h(d)}),e.load(ql.resolveURL(c,r.path),p,void 0,f)})}).then(function(c){return l===!0&&o.revokeObjectURL(a),c.userData.mimeType=s.mimeType||fR(s.uri),c}).catch(function(c){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),c});return this.sourceCache[A]=u,u}assignTexture(A,e,t,i){const r=this;return this.getDependency("texture",t.index).then(function(s){if(!s)return null;if(t.texCoord!==void 0&&t.texCoord>0&&(s=s.clone(),s.channel=t.texCoord),r.extensions[pe.KHR_TEXTURE_TRANSFORM]){const o=t.extensions!==void 0?t.extensions[pe.KHR_TEXTURE_TRANSFORM]:void 0;if(o){const a=r.associations.get(s);s=r.extensions[pe.KHR_TEXTURE_TRANSFORM].extendTexture(s,o),r.associations.set(s,a)}}return i!==void 0&&(s.colorSpace=i),A[e]=s,s})}assignFinalMaterial(A){const e=A.geometry;let t=A.material;const i=e.attributes.tangent===void 0,r=e.attributes.color!==void 0,s=e.attributes.normal===void 0;if(A.isPoints){const o="PointsMaterial:"+t.uuid;let a=this.cache.get(o);a||(a=new v1,an.prototype.copy.call(a,t),a.color.copy(t.color),a.map=t.map,a.sizeAttenuation=!1,this.cache.add(o,a)),t=a}else if(A.isLine){const o="LineBasicMaterial:"+t.uuid;let a=this.cache.get(o);a||(a=new Bh,an.prototype.copy.call(a,t),a.color.copy(t.color),a.map=t.map,this.cache.add(o,a)),t=a}if(i||r||s){let o="ClonedMaterial:"+t.uuid+":";i&&(o+="derivative-tangents:"),r&&(o+="vertex-colors:"),s&&(o+="flat-shading:");let a=this.cache.get(o);a||(a=t.clone(),r&&(a.vertexColors=!0),s&&(a.flatShading=!0),i&&(a.normalScale&&(a.normalScale.y*=-1),a.clearcoatNormalScale&&(a.clearcoatNormalScale.y*=-1)),this.cache.add(o,a),this.associations.set(a,this.associations.get(t))),t=a}A.material=t}getMaterialType(){return Dl}loadMaterial(A){const e=this,t=this.json,i=this.extensions,r=t.materials[A];let s;const o={},a=r.extensions||{},l=[];if(a[pe.KHR_MATERIALS_UNLIT]){const c=i[pe.KHR_MATERIALS_UNLIT];s=c.getMaterialType(),l.push(c.extendParams(o,r,e))}else{const c=r.pbrMetallicRoughness||{};if(o.color=new KA(1,1,1),o.opacity=1,Array.isArray(c.baseColorFactor)){const h=c.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],at),o.opacity=h[3]}c.baseColorTexture!==void 0&&l.push(e.assignTexture(o,"map",c.baseColorTexture,je)),o.metalness=c.metallicFactor!==void 0?c.metallicFactor:1,o.roughness=c.roughnessFactor!==void 0?c.roughnessFactor:1,c.metallicRoughnessTexture!==void 0&&(l.push(e.assignTexture(o,"metalnessMap",c.metallicRoughnessTexture)),l.push(e.assignTexture(o,"roughnessMap",c.metallicRoughnessTexture))),s=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(A)}),l.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(A,o)})))}r.doubleSided===!0&&(o.side=ot);const u=r.alphaMode||B0.OPAQUE;if(u===B0.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===B0.MASK&&(o.alphaTest=r.alphaCutoff!==void 0?r.alphaCutoff:.5)),r.normalTexture!==void 0&&s!==ti&&(l.push(e.assignTexture(o,"normalMap",r.normalTexture)),o.normalScale=new uA(1,1),r.normalTexture.scale!==void 0)){const c=r.normalTexture.scale;o.normalScale.set(c,c)}if(r.occlusionTexture!==void 0&&s!==ti&&(l.push(e.assignTexture(o,"aoMap",r.occlusionTexture)),r.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=r.occlusionTexture.strength)),r.emissiveFactor!==void 0&&s!==ti){const c=r.emissiveFactor;o.emissive=new KA().setRGB(c[0],c[1],c[2],at)}return r.emissiveTexture!==void 0&&s!==ti&&l.push(e.assignTexture(o,"emissiveMap",r.emissiveTexture,je)),Promise.all(l).then(function(){const c=new s(o);return r.name&&(c.name=r.name),jr(c,r),e.associations.set(c,{materials:A}),r.extensions&&Hs(i,c,r),c})}createUniqueName(A){const e=xe.sanitizeNodeName(A||"");return e in this.nodeNamesUsed?e+"_"+ ++this.nodeNamesUsed[e]:(this.nodeNamesUsed[e]=0,e)}loadGeometries(A){const e=this,t=this.extensions,i=this.primitiveCache;function r(o){return t[pe.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,e).then(function(a){return Nb(a,o,e)})}const s=[];for(let o=0,a=A.length;o<a;o++){const l=A[o],u=uR(l),c=i[u];if(c)s.push(c.promise);else{let h;l.extensions&&l.extensions[pe.KHR_DRACO_MESH_COMPRESSION]?h=r(l):h=Nb(new qe,l,e),i[u]={primitive:l,promise:h},s.push(h)}}return Promise.all(s)}loadMesh(A){const e=this,t=this.json,i=this.extensions,r=t.meshes[A],s=r.primitives,o=[];for(let a=0,l=s.length;a<l;a++){const u=s[a].material===void 0?lR(this.cache):this.getDependency("material",s[a].material);o.push(u)}return o.push(e.loadGeometries(s)),Promise.all(o).then(function(a){const l=a.slice(0,a.length-1),u=a[a.length-1],c=[];for(let f=0,p=u.length;f<p;f++){const m=u[f],d=s[f];let g;const y=l[f];if(d.mode===Si.TRIANGLES||d.mode===Si.TRIANGLE_STRIP||d.mode===Si.TRIANGLE_FAN||d.mode===void 0)g=r.isSkinnedMesh===!0?new KT(m,y):new Pe(m,y),g.isSkinnedMesh===!0&&g.normalizeSkinWeights(),d.mode===Si.TRIANGLE_STRIP?g.geometry=Tb(g.geometry,Zy):d.mode===Si.TRIANGLE_FAN&&(g.geometry=Tb(g.geometry,Zd));else if(d.mode===Si.LINES)g=new bl(m,y);else if(d.mode===Si.LINE_STRIP)g=new Np(m,y);else if(d.mode===Si.LINE_LOOP)g=new YT(m,y);else if(d.mode===Si.POINTS)g=new UT(m,y);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(g.geometry.morphAttributes).length>0&&hR(g,r),g.name=e.createUniqueName(r.name||"mesh_"+A),jr(g,r),d.extensions&&Hs(i,g,d),e.assignFinalMaterial(g),c.push(g)}for(let f=0,p=c.length;f<p;f++)e.associations.set(c[f],{meshes:A,primitives:f});if(c.length===1)return r.extensions&&Hs(i,c[0],r),c[0];const h=new Et;r.extensions&&Hs(i,h,r),e.associations.set(h,{meshes:A});for(let f=0,p=c.length;f<p;f++)h.add(c[f]);return h})}loadCamera(A){let e;const t=this.json.cameras[A],i=t[t.type];if(!i){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return t.type==="perspective"?e=new gt(lo.radToDeg(i.yfov),i.aspectRatio||1,i.znear||1,i.zfar||2e6):t.type==="orthographic"&&(e=new Th(-i.xmag,i.xmag,i.ymag,-i.ymag,i.znear,i.zfar)),t.name&&(e.name=this.createUniqueName(t.name)),jr(e,t),Promise.resolve(e)}loadSkin(A){const e=this.json.skins[A],t=[];for(let i=0,r=e.joints.length;i<r;i++)t.push(this._loadNodeShallow(e.joints[i]));return e.inverseBindMatrices!==void 0?t.push(this.getDependency("accessor",e.inverseBindMatrices)):t.push(null),Promise.all(t).then(function(i){const r=i.pop(),s=i,o=[],a=[];for(let l=0,u=s.length;l<u;l++){const c=s[l];if(c){o.push(c);const h=new zA;r!==null&&h.fromArray(r.array,l*16),a.push(h)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',e.joints[l])}return new Op(o,a)})}loadAnimation(A){const e=this.json,t=this,i=e.animations[A],r=i.name?i.name:"animation_"+A,s=[],o=[],a=[],l=[],u=[];for(let c=0,h=i.channels.length;c<h;c++){const f=i.channels[c],p=i.samplers[f.sampler],m=f.target,d=m.node,g=i.parameters!==void 0?i.parameters[p.input]:p.input,y=i.parameters!==void 0?i.parameters[p.output]:p.output;m.node!==void 0&&(s.push(this.getDependency("node",d)),o.push(this.getDependency("accessor",g)),a.push(this.getDependency("accessor",y)),l.push(p),u.push(m))}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(a),Promise.all(l),Promise.all(u)]).then(function(c){const h=c[0],f=c[1],p=c[2],m=c[3],d=c[4],g=[];for(let y=0,v=h.length;y<v;y++){const w=h[y],C=f[y],_=p[y],x=m[y],S=d[y];if(w===void 0)continue;w.updateMatrix&&w.updateMatrix();const b=t._createAnimationTracks(w,C,_,x,S);if(b)for(let I=0;I<b.length;I++)g.push(b[I])}return new ED(r,void 0,g)})}createNodeMesh(A){const e=this.json,t=this,i=e.nodes[A];return i.mesh===void 0?null:t.getDependency("mesh",i.mesh).then(function(r){const s=t._getNodeRef(t.meshCache,i.mesh,r);return i.weights!==void 0&&s.traverse(function(o){if(o.isMesh)for(let a=0,l=i.weights.length;a<l;a++)o.morphTargetInfluences[a]=i.weights[a]}),s})}loadNode(A){const e=this.json,t=this,i=e.nodes[A],r=t._loadNodeShallow(A),s=[],o=i.children||[];for(let l=0,u=o.length;l<u;l++)s.push(t.getDependency("node",o[l]));const a=i.skin===void 0?Promise.resolve(null):t.getDependency("skin",i.skin);return Promise.all([r,Promise.all(s),a]).then(function(l){const u=l[0],c=l[1],h=l[2];h!==null&&u.traverse(function(f){f.isSkinnedMesh&&f.bind(h,dR)});for(let f=0,p=c.length;f<p;f++)u.add(c[f]);return u})}_loadNodeShallow(A){const e=this.json,t=this.extensions,i=this;if(this.nodeCache[A]!==void 0)return this.nodeCache[A];const r=e.nodes[A],s=r.name?i.createUniqueName(r.name):"",o=[],a=i._invokeOne(function(l){return l.createNodeMesh&&l.createNodeMesh(A)});return a&&o.push(a),r.camera!==void 0&&o.push(i.getDependency("camera",r.camera).then(function(l){return i._getNodeRef(i.cameraCache,r.camera,l)})),i._invokeAll(function(l){return l.createNodeAttachment&&l.createNodeAttachment(A)}).forEach(function(l){o.push(l)}),this.nodeCache[A]=Promise.all(o).then(function(l){let u;if(r.isBone===!0?u=new c1:l.length>1?u=new Et:l.length===1?u=l[0]:u=new Ie,u!==l[0])for(let c=0,h=l.length;c<h;c++)u.add(l[c]);if(r.name&&(u.userData.name=r.name,u.name=s),jr(u,r),r.extensions&&Hs(t,u,r),r.matrix!==void 0){const c=new zA;c.fromArray(r.matrix),u.applyMatrix4(c)}else r.translation!==void 0&&u.position.fromArray(r.translation),r.rotation!==void 0&&u.quaternion.fromArray(r.rotation),r.scale!==void 0&&u.scale.fromArray(r.scale);return i.associations.has(u)||i.associations.set(u,{}),i.associations.get(u).nodes=A,u}),this.nodeCache[A]}loadScene(A){const e=this.extensions,t=this.json.scenes[A],i=this,r=new Et;t.name&&(r.name=i.createUniqueName(t.name)),jr(r,t),t.extensions&&Hs(e,r,t);const s=t.nodes||[],o=[];for(let a=0,l=s.length;a<l;a++)o.push(i.getDependency("node",s[a]));return Promise.all(o).then(function(a){for(let u=0,c=a.length;u<c;u++)r.add(a[u]);const l=u=>{const c=new Map;for(const[h,f]of i.associations)(h instanceof an||h instanceof lt)&&c.set(h,f);return u.traverse(h=>{const f=i.associations.get(h);f!=null&&c.set(h,f)}),c};return i.associations=l(r),r})}_createAnimationTracks(A,e,t,i,r){const s=[],o=A.name?A.name:A.uuid,a=[];kr[r.path]===kr.weights?A.traverse(function(h){h.morphTargetInfluences&&a.push(h.name?h.name:h.uuid)}):a.push(o);let l;switch(kr[r.path]){case kr.weights:l=No;break;case kr.rotation:l=gs;break;case kr.position:case kr.scale:l=zo;break;default:switch(t.itemSize){case 1:l=No;break;case 2:case 3:default:l=zo;break}break}const u=i.interpolation!==void 0?aR[i.interpolation]:is,c=this._getArrayFromAccessor(t);for(let h=0,f=a.length;h<f;h++){const p=new l(a[h]+"."+kr[r.path],e.array,c,u);i.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(p),s.push(p)}return s}_getArrayFromAccessor(A){let e=A.array;if(A.normalized){const t=R0(e.constructor),i=new Float32Array(e.length);for(let r=0,s=e.length;r<s;r++)i[r]=e[r]*t;e=i}return e}_createCubicSplineTrackInterpolant(A){A.createInterpolant=function(t){const i=this instanceof gs?oR:Lb;return new i(this.times,this.values,this.getValueSize()/3,t)},A.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function gR(n,A,e){const t=A.attributes,i=new ye;if(t.POSITION!==void 0){const o=e.json.accessors[t.POSITION],a=o.min,l=o.max;if(a!==void 0&&l!==void 0){if(i.set(new O(a[0],a[1],a[2]),new O(l[0],l[1],l[2])),o.normalized){const u=R0(Pa[o.componentType]);i.min.multiplyScalar(u),i.max.multiplyScalar(u)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const r=A.targets;if(r!==void 0){const o=new O,a=new O;for(let l=0,u=r.length;l<u;l++){const c=r[l];if(c.POSITION!==void 0){const h=e.json.accessors[c.POSITION],f=h.min,p=h.max;if(f!==void 0&&p!==void 0){if(a.setX(Math.max(Math.abs(f[0]),Math.abs(p[0]))),a.setY(Math.max(Math.abs(f[1]),Math.abs(p[1]))),a.setZ(Math.max(Math.abs(f[2]),Math.abs(p[2]))),h.normalized){const m=R0(Pa[h.componentType]);a.multiplyScalar(m)}o.max(a)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(o)}n.boundingBox=i;const s=new Ai;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,n.boundingSphere=s}function Nb(n,A,e){const t=A.attributes,i=[];function r(s,o){return e.getDependency("accessor",s).then(function(a){n.setAttribute(o,a)})}for(const s in t){const o=N0[s]||s.toLowerCase();o in n.attributes||i.push(r(t[s],o))}if(A.indices!==void 0&&!n.index){const s=e.getDependency("accessor",A.indices).then(function(o){n.setIndex(o)});i.push(s)}return Se.workingColorSpace!==at&&"COLOR_0"in t&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${Se.workingColorSpace}" not supported.`),jr(n,A),gR(n,A,e),Promise.all(i).then(function(){return A.targets!==void 0?cR(n,A.targets,e):n})}const k0=new WeakMap;class mR extends vr{constructor(A){super(A),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}setDecoderPath(A){return this.decoderPath=A,this}setDecoderConfig(A){return this.decoderConfig=A,this}setWorkerLimit(A){return this.workerLimit=A,this}load(A,e,t,i){const r=new Ll(this.manager);r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(this.withCredentials),r.load(A,s=>{this.parse(s,e,i)},t,i)}parse(A,e,t=()=>{}){this.decodeDracoFile(A,e,null,null,je).catch(t)}decodeDracoFile(A,e,t,i,r=at,s=()=>{}){const o={attributeIDs:t||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!t,vertexColorSpace:r};return this.decodeGeometry(A,o).then(e).catch(s)}decodeGeometry(A,e){const t=JSON.stringify(e);if(k0.has(A)){const a=k0.get(A);if(a.key===t)return a.promise;if(A.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i;const r=this.workerNextTaskID++,s=A.byteLength,o=this._getWorker(r,s).then(a=>(i=a,new Promise((l,u)=>{i._callbacks[r]={resolve:l,reject:u},i.postMessage({type:"decode",id:r,taskConfig:e,buffer:A},[A])}))).then(a=>this._createGeometry(a.geometry));return o.catch(()=>!0).then(()=>{i&&r&&this._releaseTask(i,r)}),k0.set(A,{key:t,promise:o}),o}_createGeometry(A){const e=new qe;A.index&&e.setIndex(new ce(A.index.array,1));for(let t=0;t<A.attributes.length;t++){const i=A.attributes[t],r=i.name,s=i.array,o=i.itemSize,a=new ce(s,o);r==="color"&&(this._assignVertexColorSpace(a,i.vertexColorSpace),a.normalized=!(s instanceof Float32Array)),e.setAttribute(r,a)}return e}_assignVertexColorSpace(A,e){if(e!==je)return;const t=new KA;for(let i=0,r=A.count;i<r;i++)t.fromBufferAttribute(A,i).convertSRGBToLinear(),A.setXYZ(i,t.r,t.g,t.b)}_loadLibrary(A,e){const t=new Ll(this.manager);return t.setPath(this.decoderPath),t.setResponseType(e),t.setWithCredentials(this.withCredentials),new Promise((i,r)=>{t.load(A,i,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const A=typeof WebAssembly!="object"||this.decoderConfig.type==="js",e=[];return A?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(t=>{const i=t[0];A||(this.decoderConfig.wasmBinary=t[1]);const r=vR.toString(),s=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join(`
9459
9459
  `);this.workerSourceURL=URL.createObjectURL(new Blob([s]))}),this.decoderPending}_getWorker(A,e){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const i=new Worker(this.workerSourceURL);i._callbacks={},i._taskCosts={},i._taskLoad=0,i.postMessage({type:"init",decoderConfig:this.decoderConfig}),i.onmessage=function(r){const s=r.data;switch(s.type){case"decode":i._callbacks[s.id].resolve(s);break;case"error":i._callbacks[s.id].reject(s);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+s.type+'"')}},this.workerPool.push(i)}else this.workerPool.sort(function(i,r){return i._taskLoad>r._taskLoad?-1:1});const t=this.workerPool[this.workerPool.length-1];return t._taskCosts[A]=e,t._taskLoad+=e,t})}_releaseTask(A,e){A._taskLoad-=A._taskCosts[e],delete A._callbacks[e],delete A._taskCosts[e]}debug(){console.log("Task load: ",this.workerPool.map(A=>A._taskLoad))}dispose(){for(let A=0;A<this.workerPool.length;++A)this.workerPool[A].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function vR(){let n,A;onmessage=function(s){const o=s.data;switch(o.type){case"init":n=o.decoderConfig,A=new Promise(function(u){n.onModuleLoaded=function(c){u({draco:c})},DracoDecoderModule(n)});break;case"decode":const a=o.buffer,l=o.taskConfig;A.then(u=>{const c=u.draco,h=new c.Decoder;try{const f=e(c,h,new Int8Array(a),l),p=f.attributes.map(m=>m.array.buffer);f.index&&p.push(f.index.array.buffer),self.postMessage({type:"decode",id:o.id,geometry:f},p)}catch(f){console.error(f),self.postMessage({type:"error",id:o.id,error:f.message})}finally{c.destroy(h)}});break}};function e(s,o,a,l){const u=l.attributeIDs,c=l.attributeTypes;let h,f;const p=o.GetEncodedGeometryType(a);if(p===s.TRIANGULAR_MESH)h=new s.Mesh,f=o.DecodeArrayToMesh(a,a.byteLength,h);else if(p===s.POINT_CLOUD)h=new s.PointCloud,f=o.DecodeArrayToPointCloud(a,a.byteLength,h);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!f.ok()||h.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+f.error_msg());const m={index:null,attributes:[]};for(const d in u){const g=self[c[d]];let y,v;if(l.useUniqueIDs)v=u[d],y=o.GetAttributeByUniqueId(h,v);else{if(v=o.GetAttributeId(h,s[u[d]]),v===-1)continue;y=o.GetAttribute(h,v)}const w=i(s,o,h,d,g,y);d==="color"&&(w.vertexColorSpace=l.vertexColorSpace),m.attributes.push(w)}return p===s.TRIANGULAR_MESH&&(m.index=t(s,o,h)),s.destroy(h),m}function t(s,o,a){const u=a.num_faces()*3,c=u*4,h=s._malloc(c);o.GetTrianglesUInt32Array(a,c,h);const f=new Uint32Array(s.HEAPF32.buffer,h,u).slice();return s._free(h),{array:f,itemSize:1}}function i(s,o,a,l,u,c){const h=c.num_components(),p=a.num_points()*h,m=p*u.BYTES_PER_ELEMENT,d=r(s,u),g=s._malloc(m);o.GetAttributeDataArrayForAllPoints(a,c,d,m,g);const y=new u(s.HEAPF32.buffer,g,p).slice();return s._free(g),{name:l,array:y,itemSize:h}}function r(s,o){switch(o){case Float32Array:return s.DT_FLOAT32;case Int8Array:return s.DT_INT8;case Int16Array:return s.DT_INT16;case Int32Array:return s.DT_INT32;case Uint8Array:return s.DT_UINT8;case Uint16Array:return s.DT_UINT16;case Uint32Array:return s.DT_UINT32}}}class ai{parse(A,e={}){if(e=Object.assign({decodeSpeed:5,encodeSpeed:5,encoderMethod:ai.MESH_EDGEBREAKER_ENCODING,quantization:[16,8,8,8,8],exportUvs:!0,exportNormals:!0,exportColor:!1},e),DracoEncoderModule===void 0)throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");const t=A.geometry,i=DracoEncoderModule(),r=new i.Encoder;let s,o;if(A.isMesh===!0){s=new i.MeshBuilder,o=new i.Mesh;const f=t.getAttribute("position");s.AddFloatAttributeToMesh(o,i.POSITION,f.count,f.itemSize,f.array);const p=t.getIndex();if(p!==null)s.AddFacesToMesh(o,p.count/3,p.array);else{const m=new(f.count>65535?Uint32Array:Uint16Array)(f.count);for(let d=0;d<m.length;d++)m[d]=d;s.AddFacesToMesh(o,f.count,m)}if(e.exportNormals===!0){const m=t.getAttribute("normal");m!==void 0&&s.AddFloatAttributeToMesh(o,i.NORMAL,m.count,m.itemSize,m.array)}if(e.exportUvs===!0){const m=t.getAttribute("uv");m!==void 0&&s.AddFloatAttributeToMesh(o,i.TEX_COORD,m.count,m.itemSize,m.array)}if(e.exportColor===!0){const m=t.getAttribute("color");if(m!==void 0){const d=Bb(m);s.AddFloatAttributeToMesh(o,i.COLOR,m.count,m.itemSize,d)}}}else if(A.isPoints===!0){s=new i.PointCloudBuilder,o=new i.PointCloud;const f=t.getAttribute("position");if(s.AddFloatAttribute(o,i.POSITION,f.count,f.itemSize,f.array),e.exportColor===!0){const p=t.getAttribute("color");if(p!==void 0){const m=Bb(p);s.AddFloatAttribute(o,i.COLOR,p.count,p.itemSize,m)}}}else throw new Error("DRACOExporter: Unsupported object type.");const a=new i.DracoInt8Array,l=e.encodeSpeed!==void 0?e.encodeSpeed:5,u=e.decodeSpeed!==void 0?e.decodeSpeed:5;if(r.SetSpeedOptions(l,u),e.encoderMethod!==void 0&&r.SetEncodingMethod(e.encoderMethod),e.quantization!==void 0)for(let f=0;f<5;f++)e.quantization[f]!==void 0&&r.SetAttributeQuantization(f,e.quantization[f]);let c;if(A.isMesh===!0?c=r.EncodeMeshToDracoBuffer(o,a):c=r.EncodePointCloudToDracoBuffer(o,!0,a),i.destroy(o),c===0)throw new Error("THREE.DRACOExporter: Draco encoding failed.");const h=new Int8Array(new ArrayBuffer(c));for(let f=0;f<c;f++)h[f]=a.GetValue(f);return i.destroy(a),i.destroy(r),i.destroy(s),h}}function Bb(n){const A=new KA,e=n.count,t=n.itemSize,i=new Float32Array(e*t);for(let r=0,s=e;r<s;r++)A.fromBufferAttribute(n,r).convertLinearToSRGB(),i[r*t]=A.r,i[r*t+1]=A.g,i[r*t+2]=A.b,t===4&&(i[r*t+3]=n.getW(r));return i}ai.MESH_EDGEBREAKER_ENCODING=1,ai.MESH_SEQUENTIAL_ENCODING=0,ai.POINT_CLOUD=0,ai.TRIANGULAR_MESH=1,ai.INVALID=-1,ai.POSITION=0,ai.NORMAL=1,ai.COLOR=2,ai.TEX_COORD=3,ai.GENERIC=4;let uc,j0,Ta,Lf;function K0(n,A=1/0,e=null){j0||(j0=new Kn(2,2,1,1)),Ta||(Ta=new $e({uniforms:{blitTexture:new tg(n)},vertexShader:`
9460
9460
  varying vec2 vUv;
9461
9461
  void main(){
@@ -9473,7 +9473,7 @@ void main(void)\r
9473
9473
  #else
9474
9474
  gl_FragColor = texture2D( blitTexture, vUv);
9475
9475
  #endif
9476
- }`})),Ta.uniforms.blitTexture.value=n,Ta.defines.IS_SRGB=n.colorSpace==je,Ta.needsUpdate=!0,Lf||(Lf=new Te(j0,Ta),Lf.frustumCulled=!1);const t=new gt,i=new Eo;i.add(Lf),e===null&&(e=uc=new n1({antialias:!1}));const r=Math.min(n.image.width,A),s=Math.min(n.image.height,A);e.setSize(r,s),e.clear(),e.render(i,t);const o=document.createElement("canvas"),a=o.getContext("2d");o.width=r,o.height=s,a.drawImage(e.domElement,0,0,r,s);const l=new WT(o);return l.minFilter=n.minFilter,l.magFilter=n.magFilter,l.wrapS=n.wrapS,l.wrapT=n.wrapT,l.name=n.name,uc&&(uc.forceContextLoss(),uc.dispose(),uc=null),l}const zb={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]};class F0{constructor(){this.pluginCallbacks=[],this.register(function(A){return new PR(A)}),this.register(function(A){return new TR(A)}),this.register(function(A){return new OR(A)}),this.register(function(A){return new qR(A)}),this.register(function(A){return new NR(A)}),this.register(function(A){return new BR(A)}),this.register(function(A){return new DR(A)}),this.register(function(A){return new ER(A)}),this.register(function(A){return new LR(A)}),this.register(function(A){return new zR(A)}),this.register(function(A){return new RR(A)}),this.register(function(A){return new kR(A)}),this.register(function(A){return new jR(A)}),this.register(function(A){return new KR(A)})}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,i){const r=new MR,s=[];for(let o=0,a=this.pluginCallbacks.length;o<a;o++)s.push(this.pluginCallbacks[o](r));r.setPlugins(s),r.write(A,e,i).catch(t)}parseAsync(A,e){const t=this;return new Promise(function(i,r){t.parse(A,i,r,e)})}}const ge={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},G0="KHR_mesh_quantization",li={};li[fe]=ge.NEAREST,li[Rd]=ge.NEAREST_MIPMAP_NEAREST,li[to]=ge.NEAREST_MIPMAP_LINEAR,li[we]=ge.LINEAR,li[al]=ge.LINEAR_MIPMAP_NEAREST,li[zi]=ge.LINEAR_MIPMAP_LINEAR,li[et]=ge.CLAMP_TO_EDGE,li[zt]=ge.REPEAT,li[ol]=ge.MIRRORED_REPEAT;const Rb={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},yR=new KA,kb=12,wR=1179937895,CR=2,jb=8,xR=1313821514,IR=5130562;function fc(n,A){return n.length===A.length&&n.every(function(e,t){return e===A[t]})}function bR(n){return new TextEncoder().encode(n).buffer}function _R(n){return fc(n.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function SR(n,A,e){const t={min:new Array(n.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(n.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let i=A;i<A+e;i++)for(let r=0;r<n.itemSize;r++){let s;n.itemSize>4?s=n.array[i*n.itemSize+r]:(r===0?s=n.getX(i):r===1?s=n.getY(i):r===2?s=n.getZ(i):r===3&&(s=n.getW(i)),n.normalized===!0&&(s=lo.normalize(s,n.array))),t.min[r]=Math.min(t.min[r],s),t.max[r]=Math.max(t.max[r],s)}return t}function Kb(n){return Math.ceil(n/4)*4}function H0(n,A=0){const e=Kb(n.byteLength);if(e!==n.byteLength){const t=new Uint8Array(e);if(t.set(new Uint8Array(n)),A!==0)for(let i=n.byteLength;i<e;i++)t[i]=A;return t.buffer}return n}function Fb(){return typeof document>"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}function Gb(n,A){if(n.toBlob!==void 0)return new Promise(t=>n.toBlob(t,A));let e;return A==="image/jpeg"?e=.92:A==="image/webp"&&(e=.8),n.convertToBlob({type:A,quality:e})}class MR{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter r"+Qc}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(A){this.plugins=A}async write(A,e,t={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},t),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(A),await Promise.all(this.pending);const i=this,r=i.buffers,s=i.json;t=i.options;const o=i.extensionsUsed,a=i.extensionsRequired,l=new Blob(r,{type:"application/octet-stream"}),u=Object.keys(o),c=Object.keys(a);if(u.length>0&&(s.extensionsUsed=u),c.length>0&&(s.extensionsRequired=c),s.buffers&&s.buffers.length>0&&(s.buffers[0].byteLength=l.size),t.binary===!0){const h=new FileReader;h.readAsArrayBuffer(l),h.onloadend=function(){const f=H0(h.result),p=new DataView(new ArrayBuffer(jb));p.setUint32(0,f.byteLength,!0),p.setUint32(4,IR,!0);const m=H0(bR(JSON.stringify(s)),32),d=new DataView(new ArrayBuffer(jb));d.setUint32(0,m.byteLength,!0),d.setUint32(4,xR,!0);const g=new ArrayBuffer(kb),y=new DataView(g);y.setUint32(0,wR,!0),y.setUint32(4,CR,!0);const v=kb+d.byteLength+m.byteLength+p.byteLength+f.byteLength;y.setUint32(8,v,!0);const w=new Blob([g,d,m,p,f],{type:"application/octet-stream"}),C=new FileReader;C.readAsArrayBuffer(w),C.onloadend=function(){e(C.result)}}}else if(s.buffers&&s.buffers.length>0){const h=new FileReader;h.readAsDataURL(l),h.onloadend=function(){const f=h.result;s.buffers[0].uri=f,e(s)}}else e(s)}serializeUserData(A,e){if(Object.keys(A.userData).length===0)return;const t=this.options,i=this.extensionsUsed;try{const r=JSON.parse(JSON.stringify(A.userData));if(t.includeCustomExtensions&&r.gltfExtensions){e.extensions===void 0&&(e.extensions={});for(const s in r.gltfExtensions)e.extensions[s]=r.gltfExtensions[s],i[s]=!0;delete r.gltfExtensions}Object.keys(r).length>0&&(e.extras=r)}catch(r){console.warn("THREE.GLTFExporter: userData of '"+A.name+"' won't be serialized because of JSON.stringify error - "+r.message)}}getUID(A,e=!1){if(this.uids.has(A)===!1){const i=new Map;i.set(!0,this.uid++),i.set(!1,this.uid++),this.uids.set(A,i)}return this.uids.get(A).get(e)}isNormalizedNormalAttribute(A){if(this.cache.attributesNormalized.has(A))return!1;const t=new O;for(let i=0,r=A.count;i<r;i++)if(Math.abs(t.fromBufferAttribute(A,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(A){const e=this.cache;if(e.attributesNormalized.has(A))return e.attributesNormalized.get(A);const t=A.clone(),i=new O;for(let r=0,s=t.count;r<s;r++)i.fromBufferAttribute(t,r),i.x===0&&i.y===0&&i.z===0?i.setX(1):i.normalize(),t.setXYZ(r,i.x,i.y,i.z);return e.attributesNormalized.set(A,t),t}applyTextureTransform(A,e){let t=!1;const i={};(e.offset.x!==0||e.offset.y!==0)&&(i.offset=e.offset.toArray(),t=!0),e.rotation!==0&&(i.rotation=e.rotation,t=!0),(e.repeat.x!==1||e.repeat.y!==1)&&(i.scale=e.repeat.toArray(),t=!0),t&&(A.extensions=A.extensions||{},A.extensions.KHR_texture_transform=i,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(A,e){if(A===e)return A;function t(f){return f.colorSpace===je?function(m){return m<.04045?m*.0773993808:Math.pow(m*.9478672986+.0521327014,2.4)}:function(m){return m}}console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),A instanceof zp&&(A=K0(A)),e instanceof zp&&(e=K0(e));const i=A?A.image:null,r=e?e.image:null,s=Math.max(i?i.width:0,r?r.width:0),o=Math.max(i?i.height:0,r?r.height:0),a=Fb();a.width=s,a.height=o;const l=a.getContext("2d");l.fillStyle="#00ffff",l.fillRect(0,0,s,o);const u=l.getImageData(0,0,s,o);if(i){l.drawImage(i,0,0,s,o);const f=t(A),p=l.getImageData(0,0,s,o).data;for(let m=2;m<p.length;m+=4)u.data[m]=f(p[m]/256)*256}if(r){l.drawImage(r,0,0,s,o);const f=t(e),p=l.getImageData(0,0,s,o).data;for(let m=1;m<p.length;m+=4)u.data[m]=f(p[m]/256)*256}l.putImageData(u,0,0);const h=(A||e).clone();return h.source=new ah(a),h.colorSpace=On,h.channel=(A||e).channel,A&&e&&A.channel!==e.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),h}processBuffer(A){const e=this.json,t=this.buffers;return e.buffers||(e.buffers=[{byteLength:0}]),t.push(A),0}processBufferView(A,e,t,i,r){const s=this.json;s.bufferViews||(s.bufferViews=[]);let o;switch(e){case ge.BYTE:case ge.UNSIGNED_BYTE:o=1;break;case ge.SHORT:case ge.UNSIGNED_SHORT:o=2;break;default:o=4}let a=A.itemSize*o;r===ge.ARRAY_BUFFER&&(a=Math.ceil(a/4)*4);const l=Kb(i*a),u=new DataView(new ArrayBuffer(l));let c=0;for(let p=t;p<t+i;p++){for(let m=0;m<A.itemSize;m++){let d;A.itemSize>4?d=A.array[p*A.itemSize+m]:(m===0?d=A.getX(p):m===1?d=A.getY(p):m===2?d=A.getZ(p):m===3&&(d=A.getW(p)),A.normalized===!0&&(d=lo.normalize(d,A.array))),e===ge.FLOAT?u.setFloat32(c,d,!0):e===ge.INT?u.setInt32(c,d,!0):e===ge.UNSIGNED_INT?u.setUint32(c,d,!0):e===ge.SHORT?u.setInt16(c,d,!0):e===ge.UNSIGNED_SHORT?u.setUint16(c,d,!0):e===ge.BYTE?u.setInt8(c,d):e===ge.UNSIGNED_BYTE&&u.setUint8(c,d),c+=o}c%a!==0&&(c+=a-c%a)}const h={buffer:this.processBuffer(u.buffer),byteOffset:this.byteOffset,byteLength:l};return r!==void 0&&(h.target=r),r===ge.ARRAY_BUFFER&&(h.byteStride=a),this.byteOffset+=l,s.bufferViews.push(h),{id:s.bufferViews.length-1,byteLength:0}}processBufferViewImage(A){const e=this,t=e.json;return t.bufferViews||(t.bufferViews=[]),new Promise(function(i){const r=new FileReader;r.readAsArrayBuffer(A),r.onloadend=function(){const s=H0(r.result),o={buffer:e.processBuffer(s),byteOffset:e.byteOffset,byteLength:s.byteLength};e.byteOffset+=s.byteLength,i(t.bufferViews.push(o)-1)}})}processAccessor(A,e,t,i){const r=this.json,s={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"};let o;if(A.array.constructor===Float32Array)o=ge.FLOAT;else if(A.array.constructor===Int32Array)o=ge.INT;else if(A.array.constructor===Uint32Array)o=ge.UNSIGNED_INT;else if(A.array.constructor===Int16Array)o=ge.SHORT;else if(A.array.constructor===Uint16Array)o=ge.UNSIGNED_SHORT;else if(A.array.constructor===Int8Array)o=ge.BYTE;else if(A.array.constructor===Uint8Array)o=ge.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+A.array.constructor.name);if(t===void 0&&(t=0),(i===void 0||i===1/0)&&(i=A.count),i===0)return null;const a=SR(A,t,i);let l;e!==void 0&&(l=A===e.index?ge.ELEMENT_ARRAY_BUFFER:ge.ARRAY_BUFFER);const u=this.processBufferView(A,o,t,i,l),c={bufferView:u.id,byteOffset:u.byteOffset,componentType:o,count:i,max:a.max,min:a.min,type:s[A.itemSize]};return A.normalized===!0&&(c.normalized=!0),r.accessors||(r.accessors=[]),r.accessors.push(c)-1}processImage(A,e,t,i="image/png"){if(A!==null){const r=this,s=r.cache,o=r.json,a=r.options,l=r.pending;s.images.has(A)||s.images.set(A,{});const u=s.images.get(A),c=i+":flipY/"+t.toString();if(u[c]!==void 0)return u[c];o.images||(o.images=[]);const h={mimeType:i},f=Fb();f.width=Math.min(A.width,a.maxTextureSize),f.height=Math.min(A.height,a.maxTextureSize);const p=f.getContext("2d");if(t===!0&&(p.translate(0,f.height),p.scale(1,-1)),A.data!==void 0){e!==_e&&console.error("GLTFExporter: Only RGBAFormat is supported.",e),(A.width>a.maxTextureSize||A.height>a.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",A);const d=new Uint8ClampedArray(A.height*A.width*4);for(let g=0;g<d.length;g+=4)d[g+0]=A.data[g+0],d[g+1]=A.data[g+1],d[g+2]=A.data[g+2],d[g+3]=A.data[g+3];p.putImageData(new ImageData(d,A.width,A.height),0,0)}else if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&A instanceof OffscreenCanvas)p.drawImage(A,0,0,f.width,f.height);else throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.");a.binary===!0?l.push(Gb(f,i).then(d=>r.processBufferViewImage(d)).then(d=>{h.bufferView=d})):f.toDataURL!==void 0?h.uri=f.toDataURL(i):l.push(Gb(f,i).then(d=>new FileReader().readAsDataURL(d)).then(d=>{h.uri=d}));const m=o.images.push(h)-1;return u[c]=m,m}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(A){const e=this.json;e.samplers||(e.samplers=[]);const t={magFilter:li[A.magFilter],minFilter:li[A.minFilter],wrapS:li[A.wrapS],wrapT:li[A.wrapT]};return e.samplers.push(t)-1}processTexture(A){const t=this.options,i=this.cache,r=this.json;if(i.textures.has(A))return i.textures.get(A);r.textures||(r.textures=[]),A instanceof zp&&(A=K0(A,t.maxTextureSize));let s=A.userData.mimeType;s==="image/webp"&&(s="image/png");const o={sampler:this.processSampler(A),source:this.processImage(A.image,A.format,A.flipY,s)};A.name&&(o.name=A.name),this._invokeAll(function(l){l.writeTexture&&l.writeTexture(A,o)});const a=r.textures.push(o)-1;return i.textures.set(A,a),a}processMaterial(A){const e=this.cache,t=this.json;if(e.materials.has(A))return e.materials.get(A);if(A.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;t.materials||(t.materials=[]);const i={pbrMetallicRoughness:{}};A.isMeshStandardMaterial!==!0&&A.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");const r=A.color.toArray().concat([A.opacity]);if(fc(r,[1,1,1,1])||(i.pbrMetallicRoughness.baseColorFactor=r),A.isMeshStandardMaterial?(i.pbrMetallicRoughness.metallicFactor=A.metalness,i.pbrMetallicRoughness.roughnessFactor=A.roughness):(i.pbrMetallicRoughness.metallicFactor=.5,i.pbrMetallicRoughness.roughnessFactor=.5),A.metalnessMap||A.roughnessMap){const o=this.buildMetalRoughTexture(A.metalnessMap,A.roughnessMap),a={index:this.processTexture(o),channel:o.channel};this.applyTextureTransform(a,o),i.pbrMetallicRoughness.metallicRoughnessTexture=a}if(A.map){const o={index:this.processTexture(A.map),texCoord:A.map.channel};this.applyTextureTransform(o,A.map),i.pbrMetallicRoughness.baseColorTexture=o}if(A.emissive){const o=A.emissive;if(Math.max(o.r,o.g,o.b)>0&&(i.emissiveFactor=A.emissive.toArray()),A.emissiveMap){const l={index:this.processTexture(A.emissiveMap),texCoord:A.emissiveMap.channel};this.applyTextureTransform(l,A.emissiveMap),i.emissiveTexture=l}}if(A.normalMap){const o={index:this.processTexture(A.normalMap),texCoord:A.normalMap.channel};A.normalScale&&A.normalScale.x!==1&&(o.scale=A.normalScale.x),this.applyTextureTransform(o,A.normalMap),i.normalTexture=o}if(A.aoMap){const o={index:this.processTexture(A.aoMap),texCoord:A.aoMap.channel};A.aoMapIntensity!==1&&(o.strength=A.aoMapIntensity),this.applyTextureTransform(o,A.aoMap),i.occlusionTexture=o}A.transparent?i.alphaMode="BLEND":A.alphaTest>0&&(i.alphaMode="MASK",i.alphaCutoff=A.alphaTest),A.side===ot&&(i.doubleSided=!0),A.name!==""&&(i.name=A.name),this.serializeUserData(A,i),this._invokeAll(function(o){o.writeMaterial&&o.writeMaterial(A,i)});const s=t.materials.push(i)-1;return e.materials.set(A,s),s}processMesh(A){const e=this.cache,t=this.json,i=[A.geometry.uuid];if(Array.isArray(A.material))for(let w=0,C=A.material.length;w<C;w++)i.push(A.material[w].uuid);else i.push(A.material.uuid);const r=i.join(":");if(e.meshes.has(r))return e.meshes.get(r);const s=A.geometry;let o;A.isLineSegments?o=ge.LINES:A.isLineLoop?o=ge.LINE_LOOP:A.isLine?o=ge.LINE_STRIP:A.isPoints?o=ge.POINTS:o=A.material.wireframe?ge.LINES:ge.TRIANGLES;const a={},l={},u=[],c=[],h={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},f=s.getAttribute("normal");f!==void 0&&!this.isNormalizedNormalAttribute(f)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),s.setAttribute("normal",this.createNormalizedNormalAttribute(f)));let p=null;for(let w in s.attributes){if(w.slice(0,5)==="morph")continue;const C=s.attributes[w];if(w=h[w]||w.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(w)||(w="_"+w),e.attributes.has(this.getUID(C))){l[w]=e.attributes.get(this.getUID(C));continue}p=null;const x=C.array;w==="JOINTS_0"&&!(x instanceof Uint16Array)&&!(x instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),p=new ce(new Uint16Array(x),C.itemSize,C.normalized));const S=this.processAccessor(p||C,s);S!==null&&(w.startsWith("_")||this.detectMeshQuantization(w,C),l[w]=S,e.attributes.set(this.getUID(C),S))}if(f!==void 0&&s.setAttribute("normal",f),Object.keys(l).length===0)return null;if(A.morphTargetInfluences!==void 0&&A.morphTargetInfluences.length>0){const w=[],C=[],_={};if(A.morphTargetDictionary!==void 0)for(const x in A.morphTargetDictionary)_[A.morphTargetDictionary[x]]=x;for(let x=0;x<A.morphTargetInfluences.length;++x){const S={};let b=!1;for(const I in s.morphAttributes){if(I!=="position"&&I!=="normal"){b||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),b=!0);continue}const D=s.morphAttributes[I][x],P=I.toUpperCase(),M=s.attributes[I];if(e.attributes.has(this.getUID(D,!0))){S[P]=e.attributes.get(this.getUID(D,!0));continue}const T=D.clone();if(!s.morphTargetsRelative)for(let q=0,B=D.count;q<B;q++)for(let W=0;W<D.itemSize;W++)W===0&&T.setX(q,D.getX(q)-M.getX(q)),W===1&&T.setY(q,D.getY(q)-M.getY(q)),W===2&&T.setZ(q,D.getZ(q)-M.getZ(q)),W===3&&T.setW(q,D.getW(q)-M.getW(q));S[P]=this.processAccessor(T,s),e.attributes.set(this.getUID(M,!0),S[P])}c.push(S),w.push(A.morphTargetInfluences[x]),A.morphTargetDictionary!==void 0&&C.push(_[x])}a.weights=w,C.length>0&&(a.extras={},a.extras.targetNames=C)}const m=Array.isArray(A.material);if(m&&s.groups.length===0)return null;let d=!1;if(m&&s.index===null){const w=[];for(let C=0,_=s.attributes.position.count;C<_;C++)w[C]=C;s.setIndex(w),d=!0}const g=m?A.material:[A.material],y=m?s.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let w=0,C=y.length;w<C;w++){const _={mode:o,attributes:l};if(this.serializeUserData(s,_),c.length>0&&(_.targets=c),s.index!==null){let S=this.getUID(s.index);(y[w].start!==void 0||y[w].count!==void 0)&&(S+=":"+y[w].start+":"+y[w].count),e.attributes.has(S)?_.indices=e.attributes.get(S):(_.indices=this.processAccessor(s.index,s,y[w].start,y[w].count),e.attributes.set(S,_.indices)),_.indices===null&&delete _.indices}const x=this.processMaterial(g[y[w].materialIndex]);x!==null&&(_.material=x),u.push(_)}d===!0&&s.setIndex(null),a.primitives=u,t.meshes||(t.meshes=[]),this._invokeAll(function(w){w.writeMesh&&w.writeMesh(A,a)});const v=t.meshes.push(a)-1;return e.meshes.set(r,v),v}detectMeshQuantization(A,e){if(this.extensionsUsed[G0])return;let t;switch(e.array.constructor){case Int8Array:t="byte";break;case Uint8Array:t="unsigned byte";break;case Int16Array:t="short";break;case Uint16Array:t="unsigned short";break;default:return}e.normalized&&(t+=" normalized");const i=A.split("_",1)[0];zb[i]&&zb[i].includes(t)&&(this.extensionsUsed[G0]=!0,this.extensionsRequired[G0]=!0)}processCamera(A){const e=this.json;e.cameras||(e.cameras=[]);const t=A.isOrthographicCamera,i={type:t?"orthographic":"perspective"};return t?i.orthographic={xmag:A.right*2,ymag:A.top*2,zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near}:i.perspective={aspectRatio:A.aspect,yfov:lo.degToRad(A.fov),zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near},A.name!==""&&(i.name=A.type),e.cameras.push(i)-1}processAnimation(A,e){const t=this.json,i=this.nodeMap;t.animations||(t.animations=[]),A=F0.Utils.mergeMorphTargetTracks(A.clone(),e);const r=A.tracks,s=[],o=[];for(let a=0;a<r.length;++a){const l=r[a],u=xe.parseTrackName(l.name);let c=xe.findNode(e,u.nodeName);const h=Rb[u.propertyName];if(u.objectName==="bones"&&(c.isSkinnedMesh===!0?c=c.skeleton.getBoneByName(u.objectIndex):c=void 0),!c||!h)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',l.name),null;const f=1;let p=l.values.length/l.times.length;h===Rb.morphTargetInfluences&&(p/=c.morphTargetInfluences.length);let m;l.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(m="CUBICSPLINE",p/=3):l.getInterpolation()===ro?m="STEP":m="LINEAR",o.push({input:this.processAccessor(new ce(l.times,f)),output:this.processAccessor(new ce(l.values,p)),interpolation:m}),s.push({sampler:o.length-1,target:{node:i.get(c),path:h}})}return t.animations.push({name:A.name||"clip_"+t.animations.length,samplers:o,channels:s}),t.animations.length-1}processSkin(A){const e=this.json,t=this.nodeMap,i=e.nodes[t.get(A)],r=A.skeleton;if(r===void 0)return null;const s=A.skeleton.bones[0];if(s===void 0)return null;const o=[],a=new Float32Array(r.bones.length*16),l=new zA;for(let c=0;c<r.bones.length;++c)o.push(t.get(r.bones[c])),l.copy(r.boneInverses[c]),l.multiply(A.bindMatrix).toArray(a,c*16);return e.skins===void 0&&(e.skins=[]),e.skins.push({inverseBindMatrices:this.processAccessor(new ce(a,16)),joints:o,skeleton:t.get(s)}),i.skin=e.skins.length-1}processNode(A){const e=this.json,t=this.options,i=this.nodeMap;e.nodes||(e.nodes=[]);const r={};if(t.trs){const o=A.quaternion.toArray(),a=A.position.toArray(),l=A.scale.toArray();fc(o,[0,0,0,1])||(r.rotation=o),fc(a,[0,0,0])||(r.translation=a),fc(l,[1,1,1])||(r.scale=l)}else A.matrixAutoUpdate&&A.updateMatrix(),_R(A.matrix)===!1&&(r.matrix=A.matrix.elements);if(A.name!==""&&(r.name=String(A.name)),this.serializeUserData(A,r),A.isMesh||A.isLine||A.isPoints){const o=this.processMesh(A);o!==null&&(r.mesh=o)}else A.isCamera&&(r.camera=this.processCamera(A));if(A.isSkinnedMesh&&this.skins.push(A),A.children.length>0){const o=[];for(let a=0,l=A.children.length;a<l;a++){const u=A.children[a];if(u.visible||t.onlyVisible===!1){const c=this.processNode(u);c!==null&&o.push(c)}}o.length>0&&(r.children=o)}this._invokeAll(function(o){o.writeNode&&o.writeNode(A,r)});const s=e.nodes.push(r)-1;return i.set(A,s),s}processScene(A){const e=this.json,t=this.options;e.scenes||(e.scenes=[],e.scene=0);const i={};A.name!==""&&(i.name=A.name),e.scenes.push(i);const r=[];for(let s=0,o=A.children.length;s<o;s++){const a=A.children[s];if(a.visible||t.onlyVisible===!1){const l=this.processNode(a);l!==null&&r.push(l)}}r.length>0&&(i.nodes=r),this.serializeUserData(A,i)}processObjects(A){const e=new Eo;e.name="AuxScene";for(let t=0;t<A.length;t++)e.children.push(A[t]);this.processScene(e)}processInput(A){const e=this.options;A=A instanceof Array?A:[A],this._invokeAll(function(i){i.beforeParse&&i.beforeParse(A)});const t=[];for(let i=0;i<A.length;i++)A[i]instanceof Eo?this.processScene(A[i]):t.push(A[i]);t.length>0&&this.processObjects(t);for(let i=0;i<this.skins.length;++i)this.processSkin(this.skins[i]);for(let i=0;i<e.animations.length;++i)this.processAnimation(e.animations[i],A[0]);this._invokeAll(function(i){i.afterParse&&i.afterParse(A)})}_invokeAll(A){for(let e=0,t=this.plugins.length;e<t;e++)A(this.plugins[e])}}class PR{constructor(A){this.writer=A,this.name="KHR_lights_punctual"}writeNode(A,e){if(!A.isLight)return;if(!A.isDirectionalLight&&!A.isPointLight&&!A.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",A);return}const t=this.writer,i=t.json,r=t.extensionsUsed,s={};A.name&&(s.name=A.name),s.color=A.color.toArray(),s.intensity=A.intensity,A.isDirectionalLight?s.type="directional":A.isPointLight?(s.type="point",A.distance>0&&(s.range=A.distance)):A.isSpotLight&&(s.type="spot",A.distance>0&&(s.range=A.distance),s.spot={},s.spot.innerConeAngle=(1-A.penumbra)*A.angle,s.spot.outerConeAngle=A.angle),A.decay!==void 0&&A.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),A.target&&(A.target.parent!==A||A.target.position.x!==0||A.target.position.y!==0||A.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),r[this.name]||(i.extensions=i.extensions||{},i.extensions[this.name]={lights:[]},r[this.name]=!0);const o=i.extensions[this.name].lights;o.push(s),e.extensions=e.extensions||{},e.extensions[this.name]={light:o.length-1}}}class TR{constructor(A){this.writer=A,this.name="KHR_materials_unlit"}writeMaterial(A,e){if(!A.isMeshBasicMaterial)return;const i=this.writer.extensionsUsed;e.extensions=e.extensions||{},e.extensions[this.name]={},i[this.name]=!0,e.pbrMetallicRoughness.metallicFactor=0,e.pbrMetallicRoughness.roughnessFactor=.9}}class DR{constructor(A){this.writer=A,this.name="KHR_materials_clearcoat"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.clearcoat===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.clearcoatFactor=A.clearcoat,A.clearcoatMap){const s={index:t.processTexture(A.clearcoatMap),texCoord:A.clearcoatMap.channel};t.applyTextureTransform(s,A.clearcoatMap),r.clearcoatTexture=s}if(r.clearcoatRoughnessFactor=A.clearcoatRoughness,A.clearcoatRoughnessMap){const s={index:t.processTexture(A.clearcoatRoughnessMap),texCoord:A.clearcoatRoughnessMap.channel};t.applyTextureTransform(s,A.clearcoatRoughnessMap),r.clearcoatRoughnessTexture=s}if(A.clearcoatNormalMap){const s={index:t.processTexture(A.clearcoatNormalMap),texCoord:A.clearcoatNormalMap.channel};A.clearcoatNormalScale.x!==1&&(s.scale=A.clearcoatNormalScale.x),t.applyTextureTransform(s,A.clearcoatNormalMap),r.clearcoatNormalTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class ER{constructor(A){this.writer=A,this.name="KHR_materials_dispersion"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.dispersion===0)return;const i=this.writer.extensionsUsed,r={};r.dispersion=A.dispersion,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class LR{constructor(A){this.writer=A,this.name="KHR_materials_iridescence"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.iridescence===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.iridescenceFactor=A.iridescence,A.iridescenceMap){const s={index:t.processTexture(A.iridescenceMap),texCoord:A.iridescenceMap.channel};t.applyTextureTransform(s,A.iridescenceMap),r.iridescenceTexture=s}if(r.iridescenceIor=A.iridescenceIOR,r.iridescenceThicknessMinimum=A.iridescenceThicknessRange[0],r.iridescenceThicknessMaximum=A.iridescenceThicknessRange[1],A.iridescenceThicknessMap){const s={index:t.processTexture(A.iridescenceThicknessMap),texCoord:A.iridescenceThicknessMap.channel};t.applyTextureTransform(s,A.iridescenceThicknessMap),r.iridescenceThicknessTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class OR{constructor(A){this.writer=A,this.name="KHR_materials_transmission"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.transmissionFactor=A.transmission,A.transmissionMap){const s={index:t.processTexture(A.transmissionMap),texCoord:A.transmissionMap.channel};t.applyTextureTransform(s,A.transmissionMap),r.transmissionTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class qR{constructor(A){this.writer=A,this.name="KHR_materials_volume"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.thicknessFactor=A.thickness,A.thicknessMap){const s={index:t.processTexture(A.thicknessMap),texCoord:A.thicknessMap.channel};t.applyTextureTransform(s,A.thicknessMap),r.thicknessTexture=s}r.attenuationDistance=A.attenuationDistance,r.attenuationColor=A.attenuationColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class NR{constructor(A){this.writer=A,this.name="KHR_materials_ior"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.ior===1.5)return;const i=this.writer.extensionsUsed,r={};r.ior=A.ior,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class BR{constructor(A){this.writer=A,this.name="KHR_materials_specular"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.specularIntensity===1&&A.specularColor.equals(yR)&&!A.specularIntensityMap&&!A.specularColorMap)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.specularIntensityMap){const s={index:t.processTexture(A.specularIntensityMap),texCoord:A.specularIntensityMap.channel};t.applyTextureTransform(s,A.specularIntensityMap),r.specularTexture=s}if(A.specularColorMap){const s={index:t.processTexture(A.specularColorMap),texCoord:A.specularColorMap.channel};t.applyTextureTransform(s,A.specularColorMap),r.specularColorTexture=s}r.specularFactor=A.specularIntensity,r.specularColorFactor=A.specularColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class zR{constructor(A){this.writer=A,this.name="KHR_materials_sheen"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.sheen==0)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.sheenRoughnessMap){const s={index:t.processTexture(A.sheenRoughnessMap),texCoord:A.sheenRoughnessMap.channel};t.applyTextureTransform(s,A.sheenRoughnessMap),r.sheenRoughnessTexture=s}if(A.sheenColorMap){const s={index:t.processTexture(A.sheenColorMap),texCoord:A.sheenColorMap.channel};t.applyTextureTransform(s,A.sheenColorMap),r.sheenColorTexture=s}r.sheenRoughnessFactor=A.sheenRoughness,r.sheenColorFactor=A.sheenColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class RR{constructor(A){this.writer=A,this.name="KHR_materials_anisotropy"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.anisotropy==0)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.anisotropyMap){const s={index:t.processTexture(A.anisotropyMap)};t.applyTextureTransform(s,A.anisotropyMap),r.anisotropyTexture=s}r.anisotropyStrength=A.anisotropy,r.anisotropyRotation=A.anisotropyRotation,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class kR{constructor(A){this.writer=A,this.name="KHR_materials_emissive_strength"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.emissiveIntensity===1)return;const i=this.writer.extensionsUsed,r={};r.emissiveStrength=A.emissiveIntensity,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class jR{constructor(A){this.writer=A,this.name="EXT_materials_bump"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.bumpScale===1&&!A.bumpMap)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.bumpMap){const s={index:t.processTexture(A.bumpMap),texCoord:A.bumpMap.channel};t.applyTextureTransform(s,A.bumpMap),r.bumpTexture=s}r.bumpFactor=A.bumpScale,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class KR{constructor(A){this.writer=A,this.name="EXT_mesh_gpu_instancing"}writeNode(A,e){if(!A.isInstancedMesh)return;const t=this.writer,i=A,r=new Float32Array(i.count*3),s=new Float32Array(i.count*4),o=new Float32Array(i.count*3),a=new zA,l=new O,u=new vi,c=new O;for(let f=0;f<i.count;f++)i.getMatrixAt(f,a),a.decompose(l,u,c),l.toArray(r,f*3),u.toArray(s,f*4),c.toArray(o,f*3);const h={TRANSLATION:t.processAccessor(new ce(r,3)),ROTATION:t.processAccessor(new ce(s,4)),SCALE:t.processAccessor(new ce(o,3))};i.instanceColor&&(h._COLOR_0=t.processAccessor(i.instanceColor)),e.extensions=e.extensions||{},e.extensions[this.name]={attributes:h},t.extensionsUsed[this.name]=!0,t.extensionsRequired[this.name]=!0}}F0.Utils={insertKeyframe:function(n,A){const t=n.getValueSize(),i=new n.TimeBufferType(n.times.length+1),r=new n.ValueBufferType(n.values.length+t),s=n.createInterpolant(new n.ValueBufferType(t));let o;if(n.times.length===0){i[0]=A;for(let a=0;a<t;a++)r[a]=0;o=0}else if(A<n.times[0]){if(Math.abs(n.times[0]-A)<.001)return 0;i[0]=A,i.set(n.times,1),r.set(s.evaluate(A),0),r.set(n.values,t),o=0}else if(A>n.times[n.times.length-1]){if(Math.abs(n.times[n.times.length-1]-A)<.001)return n.times.length-1;i[i.length-1]=A,i.set(n.times,0),r.set(n.values,0),r.set(s.evaluate(A),n.values.length),o=i.length-1}else for(let a=0;a<n.times.length;a++){if(Math.abs(n.times[a]-A)<.001)return a;if(n.times[a]<A&&n.times[a+1]>A){i.set(n.times.slice(0,a+1),0),i[a+1]=A,i.set(n.times.slice(a+1),a+2),r.set(n.values.slice(0,(a+1)*t),0),r.set(s.evaluate(A),(a+1)*t),r.set(n.values.slice((a+1)*t),(a+2)*t),o=a+1;break}}return n.times=i,n.values=r,o},mergeMorphTargetTracks:function(n,A){const e=[],t={},i=n.tracks;for(let r=0;r<i.length;++r){let s=i[r];const o=xe.parseTrackName(s.name),a=xe.findNode(A,o.nodeName);if(o.propertyName!=="morphTargetInfluences"||o.propertyIndex===void 0){e.push(s);continue}if(s.createInterpolant!==s.InterpolantFactoryMethodDiscrete&&s.createInterpolant!==s.InterpolantFactoryMethodLinear){if(s.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),s=s.clone(),s.setInterpolation(is)}const l=a.morphTargetInfluences.length,u=a.morphTargetDictionary[o.propertyIndex];if(u===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+o.propertyIndex);let c;if(t[a.uuid]===void 0){c=s.clone();const f=new c.ValueBufferType(l*c.times.length);for(let p=0;p<c.times.length;p++)f[p*l+u]=c.values[p];c.name=(o.nodeName||"")+".morphTargetInfluences",c.values=f,t[a.uuid]=c,e.push(c);continue}const h=s.createInterpolant(new s.ValueBufferType(1));c=t[a.uuid];for(let f=0;f<c.times.length;f++)c.values[f*l+u]=h.evaluate(c.times[f]);for(let f=0;f<s.times.length;f++){const p=this.insertKeyframe(c,s.times[f]);c.values[p*l+u]=s.values[f]}}return n.tracks=e,n}};const Hb=new F0,Da=new B9,Of=new mR;window.dracoPath?Of.setDecoderPath(window.dracoPath):Of.setDecoderPath("./draco/"),Of.setDecoderConfig({type:"wasm"}),Da.setDRACOLoader(Of);const FR=new ai,Yb=[115,103,108,98];function GR(n,A,e){const t=JSON.stringify(A),i=new TextEncoder().encode(t),r=new Uint8Array([115,103,108,98]),s=new Uint8Array(2);s[0]=e>>8,s[1]=e&255;const o=new Uint8Array(4);o[0]=i.length>>24,o[1]=i.length>>16&255,o[2]=i.length>>8&255,o[3]=i.length&255;const a=new Uint8Array(n),l=r.length+s.length+o.length+i.length+a.length,u=new Uint8Array(l);let c=0;return u.set(r,c),c+=r.length,u.set(s,c),c+=s.length,u.set(o,c),c+=o.length,u.set(i,c),c+=i.length,u.set(a,c),u.buffer}function HR(n){const A=new Uint8Array(n.slice(0,4));let e=!0;for(let c=0;c<Yb.length;c++)if(A[c]!==Yb[c]){e=!1;break}if(!e)throw new Error("Invalid file format");const i=new DataView(n,4,2).getUint16(0,!1),s=new DataView(n,6,4).getUint32(0,!1),o=new Uint8Array(n.slice(10,10+s)),a=new TextDecoder().decode(o),l=JSON.parse(a),u=n.slice(10+s);return{version:i,jsonDescription:l,glbContent:u}}class dc{constructor(A){this.props=A,this.cache=new Map}load(A,e,t,i){if(this.props.useCache&&this.cache.has(A)){e(this.cache.get(A));return}const r=this;fetch(A).then(s=>{if(!s.ok){i==null||i(new ErrorEvent("NetworkError",{message:"NetworkError for "+A+": "+s.statusText}));return}return s.arrayBuffer()}).then(async s=>{s||i==null||i(new ErrorEvent("Error",{message:"Not a valid sglb file."}));try{const o=r.parse(s);if(!o.glbContent){i==null||i(new ErrorEvent("Error",{message:"No glb content."}));return}const a=L0(o.glbContent,"model/gltf-binary"),l=await Da.loadAsync(a);URL.revokeObjectURL(a),o.glbContent=void 0,o.glb=l.scene,s=void 0,this.cache.set(A,o),e(o)}catch(o){i==null||i(new ErrorEvent("Error",{message:o==null?void 0:o.message}))}}).catch(s=>{i==null||i(new ErrorEvent("Error",{message:s.message}))})}async loadAsync(A){if(this.props.useCache&&this.cache.has(A))return this.cache.get(A);try{const e=await fetch(A);if(!e.ok)throw new Error(`NetworkError for ${A}: ${e.statusText}`);const t=await e.arrayBuffer();if(!t)throw new Error("Not a valid sglb file.");const i=this.parse(t);if(!i.glbContent)throw new Error("No GLB content.");const r=L0(i.glbContent,"model/gltf-binary"),s=await Da.loadAsync(r);return URL.revokeObjectURL(r),i.glbContent=void 0,i.glb=s.scene,this.cache.set(A,i),i}catch(e){throw e}}parse(A){return HR(A)}clear(){[...this.cache.values()]}}/**
9476
+ }`})),Ta.uniforms.blitTexture.value=n,Ta.defines.IS_SRGB=n.colorSpace==je,Ta.needsUpdate=!0,Lf||(Lf=new Pe(j0,Ta),Lf.frustumCulled=!1);const t=new gt,i=new Eo;i.add(Lf),e===null&&(e=uc=new n1({antialias:!1}));const r=Math.min(n.image.width,A),s=Math.min(n.image.height,A);e.setSize(r,s),e.clear(),e.render(i,t);const o=document.createElement("canvas"),a=o.getContext("2d");o.width=r,o.height=s,a.drawImage(e.domElement,0,0,r,s);const l=new WT(o);return l.minFilter=n.minFilter,l.magFilter=n.magFilter,l.wrapS=n.wrapS,l.wrapT=n.wrapT,l.name=n.name,uc&&(uc.forceContextLoss(),uc.dispose(),uc=null),l}const zb={POSITION:["byte","byte normalized","unsigned byte","unsigned byte normalized","short","short normalized","unsigned short","unsigned short normalized"],NORMAL:["byte normalized","short normalized"],TANGENT:["byte normalized","short normalized"],TEXCOORD:["byte","byte normalized","unsigned byte","short","short normalized","unsigned short"]};class F0{constructor(){this.pluginCallbacks=[],this.register(function(A){return new PR(A)}),this.register(function(A){return new TR(A)}),this.register(function(A){return new OR(A)}),this.register(function(A){return new qR(A)}),this.register(function(A){return new NR(A)}),this.register(function(A){return new BR(A)}),this.register(function(A){return new DR(A)}),this.register(function(A){return new ER(A)}),this.register(function(A){return new LR(A)}),this.register(function(A){return new zR(A)}),this.register(function(A){return new RR(A)}),this.register(function(A){return new kR(A)}),this.register(function(A){return new jR(A)}),this.register(function(A){return new KR(A)})}register(A){return this.pluginCallbacks.indexOf(A)===-1&&this.pluginCallbacks.push(A),this}unregister(A){return this.pluginCallbacks.indexOf(A)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(A),1),this}parse(A,e,t,i){const r=new MR,s=[];for(let o=0,a=this.pluginCallbacks.length;o<a;o++)s.push(this.pluginCallbacks[o](r));r.setPlugins(s),r.write(A,e,i).catch(t)}parseAsync(A,e){const t=this;return new Promise(function(i,r){t.parse(A,i,r,e)})}}const ge={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,REPEAT:10497},G0="KHR_mesh_quantization",li={};li[fe]=ge.NEAREST,li[Rd]=ge.NEAREST_MIPMAP_NEAREST,li[to]=ge.NEAREST_MIPMAP_LINEAR,li[we]=ge.LINEAR,li[al]=ge.LINEAR_MIPMAP_NEAREST,li[zi]=ge.LINEAR_MIPMAP_LINEAR,li[et]=ge.CLAMP_TO_EDGE,li[zt]=ge.REPEAT,li[ol]=ge.MIRRORED_REPEAT;const Rb={scale:"scale",position:"translation",quaternion:"rotation",morphTargetInfluences:"weights"},yR=new KA,kb=12,wR=1179937895,CR=2,jb=8,xR=1313821514,IR=5130562;function fc(n,A){return n.length===A.length&&n.every(function(e,t){return e===A[t]})}function bR(n){return new TextEncoder().encode(n).buffer}function _R(n){return fc(n.elements,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function SR(n,A,e){const t={min:new Array(n.itemSize).fill(Number.POSITIVE_INFINITY),max:new Array(n.itemSize).fill(Number.NEGATIVE_INFINITY)};for(let i=A;i<A+e;i++)for(let r=0;r<n.itemSize;r++){let s;n.itemSize>4?s=n.array[i*n.itemSize+r]:(r===0?s=n.getX(i):r===1?s=n.getY(i):r===2?s=n.getZ(i):r===3&&(s=n.getW(i)),n.normalized===!0&&(s=lo.normalize(s,n.array))),t.min[r]=Math.min(t.min[r],s),t.max[r]=Math.max(t.max[r],s)}return t}function Kb(n){return Math.ceil(n/4)*4}function H0(n,A=0){const e=Kb(n.byteLength);if(e!==n.byteLength){const t=new Uint8Array(e);if(t.set(new Uint8Array(n)),A!==0)for(let i=n.byteLength;i<e;i++)t[i]=A;return t.buffer}return n}function Fb(){return typeof document>"u"&&typeof OffscreenCanvas<"u"?new OffscreenCanvas(1,1):document.createElement("canvas")}function Gb(n,A){if(n.toBlob!==void 0)return new Promise(t=>n.toBlob(t,A));let e;return A==="image/jpeg"?e=.92:A==="image/webp"&&(e=.8),n.convertToBlob({type:A,quality:e})}class MR{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.extensionsRequired={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter r"+Qc}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(A){this.plugins=A}async write(A,e,t={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},t),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(A),await Promise.all(this.pending);const i=this,r=i.buffers,s=i.json;t=i.options;const o=i.extensionsUsed,a=i.extensionsRequired,l=new Blob(r,{type:"application/octet-stream"}),u=Object.keys(o),c=Object.keys(a);if(u.length>0&&(s.extensionsUsed=u),c.length>0&&(s.extensionsRequired=c),s.buffers&&s.buffers.length>0&&(s.buffers[0].byteLength=l.size),t.binary===!0){const h=new FileReader;h.readAsArrayBuffer(l),h.onloadend=function(){const f=H0(h.result),p=new DataView(new ArrayBuffer(jb));p.setUint32(0,f.byteLength,!0),p.setUint32(4,IR,!0);const m=H0(bR(JSON.stringify(s)),32),d=new DataView(new ArrayBuffer(jb));d.setUint32(0,m.byteLength,!0),d.setUint32(4,xR,!0);const g=new ArrayBuffer(kb),y=new DataView(g);y.setUint32(0,wR,!0),y.setUint32(4,CR,!0);const v=kb+d.byteLength+m.byteLength+p.byteLength+f.byteLength;y.setUint32(8,v,!0);const w=new Blob([g,d,m,p,f],{type:"application/octet-stream"}),C=new FileReader;C.readAsArrayBuffer(w),C.onloadend=function(){e(C.result)}}}else if(s.buffers&&s.buffers.length>0){const h=new FileReader;h.readAsDataURL(l),h.onloadend=function(){const f=h.result;s.buffers[0].uri=f,e(s)}}else e(s)}serializeUserData(A,e){if(Object.keys(A.userData).length===0)return;const t=this.options,i=this.extensionsUsed;try{const r=JSON.parse(JSON.stringify(A.userData));if(t.includeCustomExtensions&&r.gltfExtensions){e.extensions===void 0&&(e.extensions={});for(const s in r.gltfExtensions)e.extensions[s]=r.gltfExtensions[s],i[s]=!0;delete r.gltfExtensions}Object.keys(r).length>0&&(e.extras=r)}catch(r){console.warn("THREE.GLTFExporter: userData of '"+A.name+"' won't be serialized because of JSON.stringify error - "+r.message)}}getUID(A,e=!1){if(this.uids.has(A)===!1){const i=new Map;i.set(!0,this.uid++),i.set(!1,this.uid++),this.uids.set(A,i)}return this.uids.get(A).get(e)}isNormalizedNormalAttribute(A){if(this.cache.attributesNormalized.has(A))return!1;const t=new O;for(let i=0,r=A.count;i<r;i++)if(Math.abs(t.fromBufferAttribute(A,i).length()-1)>5e-4)return!1;return!0}createNormalizedNormalAttribute(A){const e=this.cache;if(e.attributesNormalized.has(A))return e.attributesNormalized.get(A);const t=A.clone(),i=new O;for(let r=0,s=t.count;r<s;r++)i.fromBufferAttribute(t,r),i.x===0&&i.y===0&&i.z===0?i.setX(1):i.normalize(),t.setXYZ(r,i.x,i.y,i.z);return e.attributesNormalized.set(A,t),t}applyTextureTransform(A,e){let t=!1;const i={};(e.offset.x!==0||e.offset.y!==0)&&(i.offset=e.offset.toArray(),t=!0),e.rotation!==0&&(i.rotation=e.rotation,t=!0),(e.repeat.x!==1||e.repeat.y!==1)&&(i.scale=e.repeat.toArray(),t=!0),t&&(A.extensions=A.extensions||{},A.extensions.KHR_texture_transform=i,this.extensionsUsed.KHR_texture_transform=!0)}buildMetalRoughTexture(A,e){if(A===e)return A;function t(f){return f.colorSpace===je?function(m){return m<.04045?m*.0773993808:Math.pow(m*.9478672986+.0521327014,2.4)}:function(m){return m}}console.warn("THREE.GLTFExporter: Merged metalnessMap and roughnessMap textures."),A instanceof zp&&(A=K0(A)),e instanceof zp&&(e=K0(e));const i=A?A.image:null,r=e?e.image:null,s=Math.max(i?i.width:0,r?r.width:0),o=Math.max(i?i.height:0,r?r.height:0),a=Fb();a.width=s,a.height=o;const l=a.getContext("2d");l.fillStyle="#00ffff",l.fillRect(0,0,s,o);const u=l.getImageData(0,0,s,o);if(i){l.drawImage(i,0,0,s,o);const f=t(A),p=l.getImageData(0,0,s,o).data;for(let m=2;m<p.length;m+=4)u.data[m]=f(p[m]/256)*256}if(r){l.drawImage(r,0,0,s,o);const f=t(e),p=l.getImageData(0,0,s,o).data;for(let m=1;m<p.length;m+=4)u.data[m]=f(p[m]/256)*256}l.putImageData(u,0,0);const h=(A||e).clone();return h.source=new ah(a),h.colorSpace=On,h.channel=(A||e).channel,A&&e&&A.channel!==e.channel&&console.warn("THREE.GLTFExporter: UV channels for metalnessMap and roughnessMap textures must match."),h}processBuffer(A){const e=this.json,t=this.buffers;return e.buffers||(e.buffers=[{byteLength:0}]),t.push(A),0}processBufferView(A,e,t,i,r){const s=this.json;s.bufferViews||(s.bufferViews=[]);let o;switch(e){case ge.BYTE:case ge.UNSIGNED_BYTE:o=1;break;case ge.SHORT:case ge.UNSIGNED_SHORT:o=2;break;default:o=4}let a=A.itemSize*o;r===ge.ARRAY_BUFFER&&(a=Math.ceil(a/4)*4);const l=Kb(i*a),u=new DataView(new ArrayBuffer(l));let c=0;for(let p=t;p<t+i;p++){for(let m=0;m<A.itemSize;m++){let d;A.itemSize>4?d=A.array[p*A.itemSize+m]:(m===0?d=A.getX(p):m===1?d=A.getY(p):m===2?d=A.getZ(p):m===3&&(d=A.getW(p)),A.normalized===!0&&(d=lo.normalize(d,A.array))),e===ge.FLOAT?u.setFloat32(c,d,!0):e===ge.INT?u.setInt32(c,d,!0):e===ge.UNSIGNED_INT?u.setUint32(c,d,!0):e===ge.SHORT?u.setInt16(c,d,!0):e===ge.UNSIGNED_SHORT?u.setUint16(c,d,!0):e===ge.BYTE?u.setInt8(c,d):e===ge.UNSIGNED_BYTE&&u.setUint8(c,d),c+=o}c%a!==0&&(c+=a-c%a)}const h={buffer:this.processBuffer(u.buffer),byteOffset:this.byteOffset,byteLength:l};return r!==void 0&&(h.target=r),r===ge.ARRAY_BUFFER&&(h.byteStride=a),this.byteOffset+=l,s.bufferViews.push(h),{id:s.bufferViews.length-1,byteLength:0}}processBufferViewImage(A){const e=this,t=e.json;return t.bufferViews||(t.bufferViews=[]),new Promise(function(i){const r=new FileReader;r.readAsArrayBuffer(A),r.onloadend=function(){const s=H0(r.result),o={buffer:e.processBuffer(s),byteOffset:e.byteOffset,byteLength:s.byteLength};e.byteOffset+=s.byteLength,i(t.bufferViews.push(o)-1)}})}processAccessor(A,e,t,i){const r=this.json,s={1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",9:"MAT3",16:"MAT4"};let o;if(A.array.constructor===Float32Array)o=ge.FLOAT;else if(A.array.constructor===Int32Array)o=ge.INT;else if(A.array.constructor===Uint32Array)o=ge.UNSIGNED_INT;else if(A.array.constructor===Int16Array)o=ge.SHORT;else if(A.array.constructor===Uint16Array)o=ge.UNSIGNED_SHORT;else if(A.array.constructor===Int8Array)o=ge.BYTE;else if(A.array.constructor===Uint8Array)o=ge.UNSIGNED_BYTE;else throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type: "+A.array.constructor.name);if(t===void 0&&(t=0),(i===void 0||i===1/0)&&(i=A.count),i===0)return null;const a=SR(A,t,i);let l;e!==void 0&&(l=A===e.index?ge.ELEMENT_ARRAY_BUFFER:ge.ARRAY_BUFFER);const u=this.processBufferView(A,o,t,i,l),c={bufferView:u.id,byteOffset:u.byteOffset,componentType:o,count:i,max:a.max,min:a.min,type:s[A.itemSize]};return A.normalized===!0&&(c.normalized=!0),r.accessors||(r.accessors=[]),r.accessors.push(c)-1}processImage(A,e,t,i="image/png"){if(A!==null){const r=this,s=r.cache,o=r.json,a=r.options,l=r.pending;s.images.has(A)||s.images.set(A,{});const u=s.images.get(A),c=i+":flipY/"+t.toString();if(u[c]!==void 0)return u[c];o.images||(o.images=[]);const h={mimeType:i},f=Fb();f.width=Math.min(A.width,a.maxTextureSize),f.height=Math.min(A.height,a.maxTextureSize);const p=f.getContext("2d");if(t===!0&&(p.translate(0,f.height),p.scale(1,-1)),A.data!==void 0){e!==_e&&console.error("GLTFExporter: Only RGBAFormat is supported.",e),(A.width>a.maxTextureSize||A.height>a.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",A);const d=new Uint8ClampedArray(A.height*A.width*4);for(let g=0;g<d.length;g+=4)d[g+0]=A.data[g+0],d[g+1]=A.data[g+1],d[g+2]=A.data[g+2],d[g+3]=A.data[g+3];p.putImageData(new ImageData(d,A.width,A.height),0,0)}else if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap||typeof OffscreenCanvas<"u"&&A instanceof OffscreenCanvas)p.drawImage(A,0,0,f.width,f.height);else throw new Error("THREE.GLTFExporter: Invalid image type. Use HTMLImageElement, HTMLCanvasElement, ImageBitmap or OffscreenCanvas.");a.binary===!0?l.push(Gb(f,i).then(d=>r.processBufferViewImage(d)).then(d=>{h.bufferView=d})):f.toDataURL!==void 0?h.uri=f.toDataURL(i):l.push(Gb(f,i).then(d=>new FileReader().readAsDataURL(d)).then(d=>{h.uri=d}));const m=o.images.push(h)-1;return u[c]=m,m}else throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(A){const e=this.json;e.samplers||(e.samplers=[]);const t={magFilter:li[A.magFilter],minFilter:li[A.minFilter],wrapS:li[A.wrapS],wrapT:li[A.wrapT]};return e.samplers.push(t)-1}processTexture(A){const t=this.options,i=this.cache,r=this.json;if(i.textures.has(A))return i.textures.get(A);r.textures||(r.textures=[]),A instanceof zp&&(A=K0(A,t.maxTextureSize));let s=A.userData.mimeType;s==="image/webp"&&(s="image/png");const o={sampler:this.processSampler(A),source:this.processImage(A.image,A.format,A.flipY,s)};A.name&&(o.name=A.name),this._invokeAll(function(l){l.writeTexture&&l.writeTexture(A,o)});const a=r.textures.push(o)-1;return i.textures.set(A,a),a}processMaterial(A){const e=this.cache,t=this.json;if(e.materials.has(A))return e.materials.get(A);if(A.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;t.materials||(t.materials=[]);const i={pbrMetallicRoughness:{}};A.isMeshStandardMaterial!==!0&&A.isMeshBasicMaterial!==!0&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");const r=A.color.toArray().concat([A.opacity]);if(fc(r,[1,1,1,1])||(i.pbrMetallicRoughness.baseColorFactor=r),A.isMeshStandardMaterial?(i.pbrMetallicRoughness.metallicFactor=A.metalness,i.pbrMetallicRoughness.roughnessFactor=A.roughness):(i.pbrMetallicRoughness.metallicFactor=.5,i.pbrMetallicRoughness.roughnessFactor=.5),A.metalnessMap||A.roughnessMap){const o=this.buildMetalRoughTexture(A.metalnessMap,A.roughnessMap),a={index:this.processTexture(o),channel:o.channel};this.applyTextureTransform(a,o),i.pbrMetallicRoughness.metallicRoughnessTexture=a}if(A.map){const o={index:this.processTexture(A.map),texCoord:A.map.channel};this.applyTextureTransform(o,A.map),i.pbrMetallicRoughness.baseColorTexture=o}if(A.emissive){const o=A.emissive;if(Math.max(o.r,o.g,o.b)>0&&(i.emissiveFactor=A.emissive.toArray()),A.emissiveMap){const l={index:this.processTexture(A.emissiveMap),texCoord:A.emissiveMap.channel};this.applyTextureTransform(l,A.emissiveMap),i.emissiveTexture=l}}if(A.normalMap){const o={index:this.processTexture(A.normalMap),texCoord:A.normalMap.channel};A.normalScale&&A.normalScale.x!==1&&(o.scale=A.normalScale.x),this.applyTextureTransform(o,A.normalMap),i.normalTexture=o}if(A.aoMap){const o={index:this.processTexture(A.aoMap),texCoord:A.aoMap.channel};A.aoMapIntensity!==1&&(o.strength=A.aoMapIntensity),this.applyTextureTransform(o,A.aoMap),i.occlusionTexture=o}A.transparent?i.alphaMode="BLEND":A.alphaTest>0&&(i.alphaMode="MASK",i.alphaCutoff=A.alphaTest),A.side===ot&&(i.doubleSided=!0),A.name!==""&&(i.name=A.name),this.serializeUserData(A,i),this._invokeAll(function(o){o.writeMaterial&&o.writeMaterial(A,i)});const s=t.materials.push(i)-1;return e.materials.set(A,s),s}processMesh(A){const e=this.cache,t=this.json,i=[A.geometry.uuid];if(Array.isArray(A.material))for(let w=0,C=A.material.length;w<C;w++)i.push(A.material[w].uuid);else i.push(A.material.uuid);const r=i.join(":");if(e.meshes.has(r))return e.meshes.get(r);const s=A.geometry;let o;A.isLineSegments?o=ge.LINES:A.isLineLoop?o=ge.LINE_LOOP:A.isLine?o=ge.LINE_STRIP:A.isPoints?o=ge.POINTS:o=A.material.wireframe?ge.LINES:ge.TRIANGLES;const a={},l={},u=[],c=[],h={uv:"TEXCOORD_0",uv1:"TEXCOORD_1",uv2:"TEXCOORD_2",uv3:"TEXCOORD_3",color:"COLOR_0",skinWeight:"WEIGHTS_0",skinIndex:"JOINTS_0"},f=s.getAttribute("normal");f!==void 0&&!this.isNormalizedNormalAttribute(f)&&(console.warn("THREE.GLTFExporter: Creating normalized normal attribute from the non-normalized one."),s.setAttribute("normal",this.createNormalizedNormalAttribute(f)));let p=null;for(let w in s.attributes){if(w.slice(0,5)==="morph")continue;const C=s.attributes[w];if(w=h[w]||w.toUpperCase(),/^(POSITION|NORMAL|TANGENT|TEXCOORD_\d+|COLOR_\d+|JOINTS_\d+|WEIGHTS_\d+)$/.test(w)||(w="_"+w),e.attributes.has(this.getUID(C))){l[w]=e.attributes.get(this.getUID(C));continue}p=null;const x=C.array;w==="JOINTS_0"&&!(x instanceof Uint16Array)&&!(x instanceof Uint8Array)&&(console.warn('GLTFExporter: Attribute "skinIndex" converted to type UNSIGNED_SHORT.'),p=new ce(new Uint16Array(x),C.itemSize,C.normalized));const S=this.processAccessor(p||C,s);S!==null&&(w.startsWith("_")||this.detectMeshQuantization(w,C),l[w]=S,e.attributes.set(this.getUID(C),S))}if(f!==void 0&&s.setAttribute("normal",f),Object.keys(l).length===0)return null;if(A.morphTargetInfluences!==void 0&&A.morphTargetInfluences.length>0){const w=[],C=[],_={};if(A.morphTargetDictionary!==void 0)for(const x in A.morphTargetDictionary)_[A.morphTargetDictionary[x]]=x;for(let x=0;x<A.morphTargetInfluences.length;++x){const S={};let b=!1;for(const I in s.morphAttributes){if(I!=="position"&&I!=="normal"){b||(console.warn("GLTFExporter: Only POSITION and NORMAL morph are supported."),b=!0);continue}const D=s.morphAttributes[I][x],P=I.toUpperCase(),M=s.attributes[I];if(e.attributes.has(this.getUID(D,!0))){S[P]=e.attributes.get(this.getUID(D,!0));continue}const T=D.clone();if(!s.morphTargetsRelative)for(let q=0,B=D.count;q<B;q++)for(let W=0;W<D.itemSize;W++)W===0&&T.setX(q,D.getX(q)-M.getX(q)),W===1&&T.setY(q,D.getY(q)-M.getY(q)),W===2&&T.setZ(q,D.getZ(q)-M.getZ(q)),W===3&&T.setW(q,D.getW(q)-M.getW(q));S[P]=this.processAccessor(T,s),e.attributes.set(this.getUID(M,!0),S[P])}c.push(S),w.push(A.morphTargetInfluences[x]),A.morphTargetDictionary!==void 0&&C.push(_[x])}a.weights=w,C.length>0&&(a.extras={},a.extras.targetNames=C)}const m=Array.isArray(A.material);if(m&&s.groups.length===0)return null;let d=!1;if(m&&s.index===null){const w=[];for(let C=0,_=s.attributes.position.count;C<_;C++)w[C]=C;s.setIndex(w),d=!0}const g=m?A.material:[A.material],y=m?s.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let w=0,C=y.length;w<C;w++){const _={mode:o,attributes:l};if(this.serializeUserData(s,_),c.length>0&&(_.targets=c),s.index!==null){let S=this.getUID(s.index);(y[w].start!==void 0||y[w].count!==void 0)&&(S+=":"+y[w].start+":"+y[w].count),e.attributes.has(S)?_.indices=e.attributes.get(S):(_.indices=this.processAccessor(s.index,s,y[w].start,y[w].count),e.attributes.set(S,_.indices)),_.indices===null&&delete _.indices}const x=this.processMaterial(g[y[w].materialIndex]);x!==null&&(_.material=x),u.push(_)}d===!0&&s.setIndex(null),a.primitives=u,t.meshes||(t.meshes=[]),this._invokeAll(function(w){w.writeMesh&&w.writeMesh(A,a)});const v=t.meshes.push(a)-1;return e.meshes.set(r,v),v}detectMeshQuantization(A,e){if(this.extensionsUsed[G0])return;let t;switch(e.array.constructor){case Int8Array:t="byte";break;case Uint8Array:t="unsigned byte";break;case Int16Array:t="short";break;case Uint16Array:t="unsigned short";break;default:return}e.normalized&&(t+=" normalized");const i=A.split("_",1)[0];zb[i]&&zb[i].includes(t)&&(this.extensionsUsed[G0]=!0,this.extensionsRequired[G0]=!0)}processCamera(A){const e=this.json;e.cameras||(e.cameras=[]);const t=A.isOrthographicCamera,i={type:t?"orthographic":"perspective"};return t?i.orthographic={xmag:A.right*2,ymag:A.top*2,zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near}:i.perspective={aspectRatio:A.aspect,yfov:lo.degToRad(A.fov),zfar:A.far<=0?.001:A.far,znear:A.near<0?0:A.near},A.name!==""&&(i.name=A.type),e.cameras.push(i)-1}processAnimation(A,e){const t=this.json,i=this.nodeMap;t.animations||(t.animations=[]),A=F0.Utils.mergeMorphTargetTracks(A.clone(),e);const r=A.tracks,s=[],o=[];for(let a=0;a<r.length;++a){const l=r[a],u=xe.parseTrackName(l.name);let c=xe.findNode(e,u.nodeName);const h=Rb[u.propertyName];if(u.objectName==="bones"&&(c.isSkinnedMesh===!0?c=c.skeleton.getBoneByName(u.objectIndex):c=void 0),!c||!h)return console.warn('THREE.GLTFExporter: Could not export animation track "%s".',l.name),null;const f=1;let p=l.values.length/l.times.length;h===Rb.morphTargetInfluences&&(p/=c.morphTargetInfluences.length);let m;l.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline===!0?(m="CUBICSPLINE",p/=3):l.getInterpolation()===ro?m="STEP":m="LINEAR",o.push({input:this.processAccessor(new ce(l.times,f)),output:this.processAccessor(new ce(l.values,p)),interpolation:m}),s.push({sampler:o.length-1,target:{node:i.get(c),path:h}})}return t.animations.push({name:A.name||"clip_"+t.animations.length,samplers:o,channels:s}),t.animations.length-1}processSkin(A){const e=this.json,t=this.nodeMap,i=e.nodes[t.get(A)],r=A.skeleton;if(r===void 0)return null;const s=A.skeleton.bones[0];if(s===void 0)return null;const o=[],a=new Float32Array(r.bones.length*16),l=new zA;for(let c=0;c<r.bones.length;++c)o.push(t.get(r.bones[c])),l.copy(r.boneInverses[c]),l.multiply(A.bindMatrix).toArray(a,c*16);return e.skins===void 0&&(e.skins=[]),e.skins.push({inverseBindMatrices:this.processAccessor(new ce(a,16)),joints:o,skeleton:t.get(s)}),i.skin=e.skins.length-1}processNode(A){const e=this.json,t=this.options,i=this.nodeMap;e.nodes||(e.nodes=[]);const r={};if(t.trs){const o=A.quaternion.toArray(),a=A.position.toArray(),l=A.scale.toArray();fc(o,[0,0,0,1])||(r.rotation=o),fc(a,[0,0,0])||(r.translation=a),fc(l,[1,1,1])||(r.scale=l)}else A.matrixAutoUpdate&&A.updateMatrix(),_R(A.matrix)===!1&&(r.matrix=A.matrix.elements);if(A.name!==""&&(r.name=String(A.name)),this.serializeUserData(A,r),A.isMesh||A.isLine||A.isPoints){const o=this.processMesh(A);o!==null&&(r.mesh=o)}else A.isCamera&&(r.camera=this.processCamera(A));if(A.isSkinnedMesh&&this.skins.push(A),A.children.length>0){const o=[];for(let a=0,l=A.children.length;a<l;a++){const u=A.children[a];if(u.visible||t.onlyVisible===!1){const c=this.processNode(u);c!==null&&o.push(c)}}o.length>0&&(r.children=o)}this._invokeAll(function(o){o.writeNode&&o.writeNode(A,r)});const s=e.nodes.push(r)-1;return i.set(A,s),s}processScene(A){const e=this.json,t=this.options;e.scenes||(e.scenes=[],e.scene=0);const i={};A.name!==""&&(i.name=A.name),e.scenes.push(i);const r=[];for(let s=0,o=A.children.length;s<o;s++){const a=A.children[s];if(a.visible||t.onlyVisible===!1){const l=this.processNode(a);l!==null&&r.push(l)}}r.length>0&&(i.nodes=r),this.serializeUserData(A,i)}processObjects(A){const e=new Eo;e.name="AuxScene";for(let t=0;t<A.length;t++)e.children.push(A[t]);this.processScene(e)}processInput(A){const e=this.options;A=A instanceof Array?A:[A],this._invokeAll(function(i){i.beforeParse&&i.beforeParse(A)});const t=[];for(let i=0;i<A.length;i++)A[i]instanceof Eo?this.processScene(A[i]):t.push(A[i]);t.length>0&&this.processObjects(t);for(let i=0;i<this.skins.length;++i)this.processSkin(this.skins[i]);for(let i=0;i<e.animations.length;++i)this.processAnimation(e.animations[i],A[0]);this._invokeAll(function(i){i.afterParse&&i.afterParse(A)})}_invokeAll(A){for(let e=0,t=this.plugins.length;e<t;e++)A(this.plugins[e])}}class PR{constructor(A){this.writer=A,this.name="KHR_lights_punctual"}writeNode(A,e){if(!A.isLight)return;if(!A.isDirectionalLight&&!A.isPointLight&&!A.isSpotLight){console.warn("THREE.GLTFExporter: Only directional, point, and spot lights are supported.",A);return}const t=this.writer,i=t.json,r=t.extensionsUsed,s={};A.name&&(s.name=A.name),s.color=A.color.toArray(),s.intensity=A.intensity,A.isDirectionalLight?s.type="directional":A.isPointLight?(s.type="point",A.distance>0&&(s.range=A.distance)):A.isSpotLight&&(s.type="spot",A.distance>0&&(s.range=A.distance),s.spot={},s.spot.innerConeAngle=(1-A.penumbra)*A.angle,s.spot.outerConeAngle=A.angle),A.decay!==void 0&&A.decay!==2&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),A.target&&(A.target.parent!==A||A.target.position.x!==0||A.target.position.y!==0||A.target.position.z!==-1)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),r[this.name]||(i.extensions=i.extensions||{},i.extensions[this.name]={lights:[]},r[this.name]=!0);const o=i.extensions[this.name].lights;o.push(s),e.extensions=e.extensions||{},e.extensions[this.name]={light:o.length-1}}}class TR{constructor(A){this.writer=A,this.name="KHR_materials_unlit"}writeMaterial(A,e){if(!A.isMeshBasicMaterial)return;const i=this.writer.extensionsUsed;e.extensions=e.extensions||{},e.extensions[this.name]={},i[this.name]=!0,e.pbrMetallicRoughness.metallicFactor=0,e.pbrMetallicRoughness.roughnessFactor=.9}}class DR{constructor(A){this.writer=A,this.name="KHR_materials_clearcoat"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.clearcoat===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.clearcoatFactor=A.clearcoat,A.clearcoatMap){const s={index:t.processTexture(A.clearcoatMap),texCoord:A.clearcoatMap.channel};t.applyTextureTransform(s,A.clearcoatMap),r.clearcoatTexture=s}if(r.clearcoatRoughnessFactor=A.clearcoatRoughness,A.clearcoatRoughnessMap){const s={index:t.processTexture(A.clearcoatRoughnessMap),texCoord:A.clearcoatRoughnessMap.channel};t.applyTextureTransform(s,A.clearcoatRoughnessMap),r.clearcoatRoughnessTexture=s}if(A.clearcoatNormalMap){const s={index:t.processTexture(A.clearcoatNormalMap),texCoord:A.clearcoatNormalMap.channel};A.clearcoatNormalScale.x!==1&&(s.scale=A.clearcoatNormalScale.x),t.applyTextureTransform(s,A.clearcoatNormalMap),r.clearcoatNormalTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class ER{constructor(A){this.writer=A,this.name="KHR_materials_dispersion"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.dispersion===0)return;const i=this.writer.extensionsUsed,r={};r.dispersion=A.dispersion,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class LR{constructor(A){this.writer=A,this.name="KHR_materials_iridescence"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.iridescence===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.iridescenceFactor=A.iridescence,A.iridescenceMap){const s={index:t.processTexture(A.iridescenceMap),texCoord:A.iridescenceMap.channel};t.applyTextureTransform(s,A.iridescenceMap),r.iridescenceTexture=s}if(r.iridescenceIor=A.iridescenceIOR,r.iridescenceThicknessMinimum=A.iridescenceThicknessRange[0],r.iridescenceThicknessMaximum=A.iridescenceThicknessRange[1],A.iridescenceThicknessMap){const s={index:t.processTexture(A.iridescenceThicknessMap),texCoord:A.iridescenceThicknessMap.channel};t.applyTextureTransform(s,A.iridescenceThicknessMap),r.iridescenceThicknessTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class OR{constructor(A){this.writer=A,this.name="KHR_materials_transmission"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.transmissionFactor=A.transmission,A.transmissionMap){const s={index:t.processTexture(A.transmissionMap),texCoord:A.transmissionMap.channel};t.applyTextureTransform(s,A.transmissionMap),r.transmissionTexture=s}e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class qR{constructor(A){this.writer=A,this.name="KHR_materials_volume"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.transmission===0)return;const t=this.writer,i=t.extensionsUsed,r={};if(r.thicknessFactor=A.thickness,A.thicknessMap){const s={index:t.processTexture(A.thicknessMap),texCoord:A.thicknessMap.channel};t.applyTextureTransform(s,A.thicknessMap),r.thicknessTexture=s}r.attenuationDistance=A.attenuationDistance,r.attenuationColor=A.attenuationColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class NR{constructor(A){this.writer=A,this.name="KHR_materials_ior"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.ior===1.5)return;const i=this.writer.extensionsUsed,r={};r.ior=A.ior,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class BR{constructor(A){this.writer=A,this.name="KHR_materials_specular"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.specularIntensity===1&&A.specularColor.equals(yR)&&!A.specularIntensityMap&&!A.specularColorMap)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.specularIntensityMap){const s={index:t.processTexture(A.specularIntensityMap),texCoord:A.specularIntensityMap.channel};t.applyTextureTransform(s,A.specularIntensityMap),r.specularTexture=s}if(A.specularColorMap){const s={index:t.processTexture(A.specularColorMap),texCoord:A.specularColorMap.channel};t.applyTextureTransform(s,A.specularColorMap),r.specularColorTexture=s}r.specularFactor=A.specularIntensity,r.specularColorFactor=A.specularColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class zR{constructor(A){this.writer=A,this.name="KHR_materials_sheen"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.sheen==0)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.sheenRoughnessMap){const s={index:t.processTexture(A.sheenRoughnessMap),texCoord:A.sheenRoughnessMap.channel};t.applyTextureTransform(s,A.sheenRoughnessMap),r.sheenRoughnessTexture=s}if(A.sheenColorMap){const s={index:t.processTexture(A.sheenColorMap),texCoord:A.sheenColorMap.channel};t.applyTextureTransform(s,A.sheenColorMap),r.sheenColorTexture=s}r.sheenRoughnessFactor=A.sheenRoughness,r.sheenColorFactor=A.sheenColor.toArray(),e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class RR{constructor(A){this.writer=A,this.name="KHR_materials_anisotropy"}writeMaterial(A,e){if(!A.isMeshPhysicalMaterial||A.anisotropy==0)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.anisotropyMap){const s={index:t.processTexture(A.anisotropyMap)};t.applyTextureTransform(s,A.anisotropyMap),r.anisotropyTexture=s}r.anisotropyStrength=A.anisotropy,r.anisotropyRotation=A.anisotropyRotation,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class kR{constructor(A){this.writer=A,this.name="KHR_materials_emissive_strength"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.emissiveIntensity===1)return;const i=this.writer.extensionsUsed,r={};r.emissiveStrength=A.emissiveIntensity,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class jR{constructor(A){this.writer=A,this.name="EXT_materials_bump"}writeMaterial(A,e){if(!A.isMeshStandardMaterial||A.bumpScale===1&&!A.bumpMap)return;const t=this.writer,i=t.extensionsUsed,r={};if(A.bumpMap){const s={index:t.processTexture(A.bumpMap),texCoord:A.bumpMap.channel};t.applyTextureTransform(s,A.bumpMap),r.bumpTexture=s}r.bumpFactor=A.bumpScale,e.extensions=e.extensions||{},e.extensions[this.name]=r,i[this.name]=!0}}class KR{constructor(A){this.writer=A,this.name="EXT_mesh_gpu_instancing"}writeNode(A,e){if(!A.isInstancedMesh)return;const t=this.writer,i=A,r=new Float32Array(i.count*3),s=new Float32Array(i.count*4),o=new Float32Array(i.count*3),a=new zA,l=new O,u=new vi,c=new O;for(let f=0;f<i.count;f++)i.getMatrixAt(f,a),a.decompose(l,u,c),l.toArray(r,f*3),u.toArray(s,f*4),c.toArray(o,f*3);const h={TRANSLATION:t.processAccessor(new ce(r,3)),ROTATION:t.processAccessor(new ce(s,4)),SCALE:t.processAccessor(new ce(o,3))};i.instanceColor&&(h._COLOR_0=t.processAccessor(i.instanceColor)),e.extensions=e.extensions||{},e.extensions[this.name]={attributes:h},t.extensionsUsed[this.name]=!0,t.extensionsRequired[this.name]=!0}}F0.Utils={insertKeyframe:function(n,A){const t=n.getValueSize(),i=new n.TimeBufferType(n.times.length+1),r=new n.ValueBufferType(n.values.length+t),s=n.createInterpolant(new n.ValueBufferType(t));let o;if(n.times.length===0){i[0]=A;for(let a=0;a<t;a++)r[a]=0;o=0}else if(A<n.times[0]){if(Math.abs(n.times[0]-A)<.001)return 0;i[0]=A,i.set(n.times,1),r.set(s.evaluate(A),0),r.set(n.values,t),o=0}else if(A>n.times[n.times.length-1]){if(Math.abs(n.times[n.times.length-1]-A)<.001)return n.times.length-1;i[i.length-1]=A,i.set(n.times,0),r.set(n.values,0),r.set(s.evaluate(A),n.values.length),o=i.length-1}else for(let a=0;a<n.times.length;a++){if(Math.abs(n.times[a]-A)<.001)return a;if(n.times[a]<A&&n.times[a+1]>A){i.set(n.times.slice(0,a+1),0),i[a+1]=A,i.set(n.times.slice(a+1),a+2),r.set(n.values.slice(0,(a+1)*t),0),r.set(s.evaluate(A),(a+1)*t),r.set(n.values.slice((a+1)*t),(a+2)*t),o=a+1;break}}return n.times=i,n.values=r,o},mergeMorphTargetTracks:function(n,A){const e=[],t={},i=n.tracks;for(let r=0;r<i.length;++r){let s=i[r];const o=xe.parseTrackName(s.name),a=xe.findNode(A,o.nodeName);if(o.propertyName!=="morphTargetInfluences"||o.propertyIndex===void 0){e.push(s);continue}if(s.createInterpolant!==s.InterpolantFactoryMethodDiscrete&&s.createInterpolant!==s.InterpolantFactoryMethodLinear){if(s.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline)throw new Error("THREE.GLTFExporter: Cannot merge tracks with glTF CUBICSPLINE interpolation.");console.warn("THREE.GLTFExporter: Morph target interpolation mode not yet supported. Using LINEAR instead."),s=s.clone(),s.setInterpolation(is)}const l=a.morphTargetInfluences.length,u=a.morphTargetDictionary[o.propertyIndex];if(u===void 0)throw new Error("THREE.GLTFExporter: Morph target name not found: "+o.propertyIndex);let c;if(t[a.uuid]===void 0){c=s.clone();const f=new c.ValueBufferType(l*c.times.length);for(let p=0;p<c.times.length;p++)f[p*l+u]=c.values[p];c.name=(o.nodeName||"")+".morphTargetInfluences",c.values=f,t[a.uuid]=c,e.push(c);continue}const h=s.createInterpolant(new s.ValueBufferType(1));c=t[a.uuid];for(let f=0;f<c.times.length;f++)c.values[f*l+u]=h.evaluate(c.times[f]);for(let f=0;f<s.times.length;f++){const p=this.insertKeyframe(c,s.times[f]);c.values[p*l+u]=s.values[f]}}return n.tracks=e,n}};const Hb=new F0,Da=new B9,Of=new mR;window.dracoPath?Of.setDecoderPath(window.dracoPath):Of.setDecoderPath("./draco/"),Of.setDecoderConfig({type:"wasm"}),Da.setDRACOLoader(Of);const FR=new ai,Yb=[115,103,108,98];function GR(n,A,e){const t=JSON.stringify(A),i=new TextEncoder().encode(t),r=new Uint8Array([115,103,108,98]),s=new Uint8Array(2);s[0]=e>>8,s[1]=e&255;const o=new Uint8Array(4);o[0]=i.length>>24,o[1]=i.length>>16&255,o[2]=i.length>>8&255,o[3]=i.length&255;const a=new Uint8Array(n),l=r.length+s.length+o.length+i.length+a.length,u=new Uint8Array(l);let c=0;return u.set(r,c),c+=r.length,u.set(s,c),c+=s.length,u.set(o,c),c+=o.length,u.set(i,c),c+=i.length,u.set(a,c),u.buffer}function HR(n){const A=new Uint8Array(n.slice(0,4));let e=!0;for(let c=0;c<Yb.length;c++)if(A[c]!==Yb[c]){e=!1;break}if(!e)throw new Error("Invalid file format");const i=new DataView(n,4,2).getUint16(0,!1),s=new DataView(n,6,4).getUint32(0,!1),o=new Uint8Array(n.slice(10,10+s)),a=new TextDecoder().decode(o),l=JSON.parse(a),u=n.slice(10+s);return{version:i,jsonDescription:l,glbContent:u}}class dc{constructor(A){this.props=A,this.cache=new Map}load(A,e,t,i){if(this.props.useCache&&this.cache.has(A)){e(this.cache.get(A));return}const r=this;fetch(A).then(s=>{if(!s.ok){i==null||i(new ErrorEvent("NetworkError",{message:"NetworkError for "+A+": "+s.statusText}));return}return s.arrayBuffer()}).then(async s=>{s||i==null||i(new ErrorEvent("Error",{message:"Not a valid sglb file."}));try{const o=r.parse(s);if(!o.glbContent){i==null||i(new ErrorEvent("Error",{message:"No glb content."}));return}const a=L0(o.glbContent,"model/gltf-binary"),l=await Da.loadAsync(a);URL.revokeObjectURL(a),o.glbContent=void 0,o.glb=l.scene,s=void 0,this.cache.set(A,o),e(o)}catch(o){i==null||i(new ErrorEvent("Error",{message:o==null?void 0:o.message}))}}).catch(s=>{i==null||i(new ErrorEvent("Error",{message:s.message}))})}async loadAsync(A){if(this.props.useCache&&this.cache.has(A))return this.cache.get(A);try{const e=await fetch(A);if(!e.ok)throw new Error(`NetworkError for ${A}: ${e.statusText}`);const t=await e.arrayBuffer();if(!t)throw new Error("Not a valid sglb file.");const i=this.parse(t);if(!i.glbContent)throw new Error("No GLB content.");const r=L0(i.glbContent,"model/gltf-binary"),s=await Da.loadAsync(r);return URL.revokeObjectURL(r),i.glbContent=void 0,i.glb=s.scene,this.cache.set(A,i),i}catch(e){throw e}}parse(A){return HR(A)}clear(){[...this.cache.values()]}}/**
9477
9477
  * @license
9478
9478
  * Copyright 2019 Google LLC
9479
9479
  * SPDX-License-Identifier: BSD-3-Clause
@@ -9840,12 +9840,12 @@ if (edgeAlpha == 0.0) {
9840
9840
  `;function oj(n){const A=nv(n,{chained:!0,extensions:{derivatives:!0},uniforms:{uTroikaSDFTexture:{value:null},uTroikaSDFTextureSize:{value:new uA},uTroikaSDFGlyphSize:{value:0},uTroikaSDFExponent:{value:0},uTroikaTotalBounds:{value:new ve(0,0,0,0)},uTroikaClipRect:{value:new ve(0,0,0,0)},uTroikaDistanceOffset:{value:0},uTroikaOutlineOpacity:{value:0},uTroikaFillOpacity:{value:1},uTroikaPositionOffset:{value:new uA},uTroikaCurveRadius:{value:0},uTroikaBlurRadius:{value:0},uTroikaStrokeWidth:{value:0},uTroikaStrokeColor:{value:new KA},uTroikaStrokeOpacity:{value:1},uTroikaOrient:{value:new le},uTroikaUseGlyphColors:{value:!0},uTroikaSDFDebug:{value:!1}},vertexDefs:ij,vertexTransform:nj,fragmentDefs:rj,fragmentColorTransform:sj,customRewriter({vertexShader:e,fragmentShader:t}){let i=/\buniform\s+vec3\s+diffuse\b/;return i.test(t)&&(t=t.replace(i,"varying vec3 vTroikaGlyphColor").replace(/\bdiffuse\b/g,"vTroikaGlyphColor"),i.test(e)||(e=e.replace(p_,`uniform vec3 diffuse;
9841
9841
  $&
9842
9842
  vTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;
9843
- `))),{vertexShader:e,fragmentShader:t}}});return A.transparent=!0,Object.defineProperties(A,{isTroikaTextMaterial:{value:!0},shadowSide:{get(){return this.side},set(){}}}),A}const ov=new ti({color:16777215,side:ot,transparent:!0}),D_=8421504,E_=new zA,Yf=new O,av=new O,Ic=[],aj=new O,lv="+x+y";function L_(n){return Array.isArray(n)?n[0]:n}let O_=()=>{const n=new Te(new Kn(1,1),ov);return O_=()=>n,n},q_=()=>{const n=new Te(new Kn(1,1,32,1),ov);return q_=()=>n,n};const lj={type:"syncstart"},cj={type:"synccomplete"},N_=["font","fontSize","fontStyle","fontWeight","lang","letterSpacing","lineHeight","maxWidth","overflowWrap","text","direction","textAlign","textIndent","whiteSpace","anchorX","anchorY","colorRanges","sdfGlyphSize"],hj=N_.concat("material","color","depthOffset","clipRect","curveRadius","orientation","glyphGeometryDetail");class B_ extends Te{constructor(){const A=new tj;super(A,null),this.text="",this.anchorX=0,this.anchorY=0,this.curveRadius=0,this.direction="auto",this.font=null,this.unicodeFontsURL=null,this.fontSize=.1,this.fontWeight="normal",this.fontStyle="normal",this.lang=null,this.letterSpacing=0,this.lineHeight="normal",this.maxWidth=1/0,this.overflowWrap="normal",this.textAlign="left",this.textIndent=0,this.whiteSpace="normal",this.material=null,this.color=null,this.colorRanges=null,this.outlineWidth=0,this.outlineColor=0,this.outlineOpacity=1,this.outlineBlur=0,this.outlineOffsetX=0,this.outlineOffsetY=0,this.strokeWidth=0,this.strokeColor=D_,this.strokeOpacity=1,this.fillOpacity=1,this.depthOffset=0,this.clipRect=null,this.orientation=lv,this.glyphGeometryDetail=1,this.sdfGlyphSize=null,this.gpuAccelerateSDF=!0,this.debugSDF=!1}sync(A){this._needsSync&&(this._needsSync=!1,this._isSyncing?(this._queuedSyncs||(this._queuedSyncs=[])).push(A):(this._isSyncing=!0,this.dispatchEvent(lj),Zk({text:this.text,font:this.font,lang:this.lang,fontSize:this.fontSize||.1,fontWeight:this.fontWeight||"normal",fontStyle:this.fontStyle||"normal",letterSpacing:this.letterSpacing||0,lineHeight:this.lineHeight||"normal",maxWidth:this.maxWidth,direction:this.direction||"auto",textAlign:this.textAlign,textIndent:this.textIndent,whiteSpace:this.whiteSpace,overflowWrap:this.overflowWrap,anchorX:this.anchorX,anchorY:this.anchorY,colorRanges:this.colorRanges,includeCaretPositions:!0,sdfGlyphSize:this.sdfGlyphSize,gpuAccelerateSDF:this.gpuAccelerateSDF,unicodeFontsURL:this.unicodeFontsURL},e=>{this._isSyncing=!1,this._textRenderInfo=e,this.geometry.updateGlyphs(e.glyphBounds,e.glyphAtlasIndices,e.blockBounds,e.chunkedBounds,e.glyphColors);const t=this._queuedSyncs;t&&(this._queuedSyncs=null,this._needsSync=!0,this.sync(()=>{t.forEach(i=>i&&i())})),this.dispatchEvent(cj),A&&A()})))}onBeforeRender(A,e,t,i,r,s){this.sync(),r.isTroikaTextMaterial&&this._prepareForRender(r),r._hadOwnSide=r.hasOwnProperty("side"),this.geometry.setSide(r._actualSide=r.side),r.side=Bt}onAfterRender(A,e,t,i,r,s){r._hadOwnSide?r.side=r._actualSide:delete r.side}dispose(){this.geometry.dispose()}get textRenderInfo(){return this._textRenderInfo||null}get material(){let A=this._derivedMaterial;const e=this._baseMaterial||this._defaultMaterial||(this._defaultMaterial=ov.clone());if((!A||A.baseMaterial!==e)&&(A=this._derivedMaterial=oj(e),e.addEventListener("dispose",function t(){e.removeEventListener("dispose",t),A.dispose()})),this.outlineWidth||this.outlineBlur||this.outlineOffsetX||this.outlineOffsetY){let t=A._outlineMtl;return t||(t=A._outlineMtl=Object.create(A,{id:{value:A.id+.1}}),t.isTextOutlineMaterial=!0,t.depthWrite=!1,t.map=null,A.addEventListener("dispose",function i(){A.removeEventListener("dispose",i),t.dispose()})),[t,A]}else return A}set material(A){A&&A.isTroikaTextMaterial?(this._derivedMaterial=A,this._baseMaterial=A.baseMaterial):this._baseMaterial=A}get glyphGeometryDetail(){return this.geometry.detail}set glyphGeometryDetail(A){this.geometry.detail=A}get curveRadius(){return this.geometry.curveRadius}set curveRadius(A){this.geometry.curveRadius=A}get customDepthMaterial(){return L_(this.material).getDepthMaterial()}get customDistanceMaterial(){return L_(this.material).getDistanceMaterial()}_prepareForRender(A){const e=A.isTextOutlineMaterial,t=A.uniforms,i=this.textRenderInfo;if(i){const{sdfTexture:o,blockBounds:a}=i;t.uTroikaSDFTexture.value=o,t.uTroikaSDFTextureSize.value.set(o.image.width,o.image.height),t.uTroikaSDFGlyphSize.value=i.sdfGlyphSize,t.uTroikaSDFExponent.value=i.sdfExponent,t.uTroikaTotalBounds.value.fromArray(a),t.uTroikaUseGlyphColors.value=!e&&!!i.glyphColors;let l=0,u=0,c=0,h,f,p,m=0,d=0;if(e){let{outlineWidth:y,outlineOffsetX:v,outlineOffsetY:w,outlineBlur:C,outlineOpacity:_}=this;l=this._parsePercent(y)||0,u=Math.max(0,this._parsePercent(C)||0),h=_,m=this._parsePercent(v)||0,d=this._parsePercent(w)||0}else c=Math.max(0,this._parsePercent(this.strokeWidth)||0),c&&(p=this.strokeColor,t.uTroikaStrokeColor.value.set(p??D_),f=this.strokeOpacity,f==null&&(f=1)),h=this.fillOpacity;t.uTroikaDistanceOffset.value=l,t.uTroikaPositionOffset.value.set(m,d),t.uTroikaBlurRadius.value=u,t.uTroikaStrokeWidth.value=c,t.uTroikaStrokeOpacity.value=f,t.uTroikaFillOpacity.value=h??1,t.uTroikaCurveRadius.value=this.curveRadius||0;let g=this.clipRect;if(g&&Array.isArray(g)&&g.length===4)t.uTroikaClipRect.value.fromArray(g);else{const y=(this.fontSize||.1)*100;t.uTroikaClipRect.value.set(a[0]-y,a[1]-y,a[2]+y,a[3]+y)}this.geometry.applyClipRect(t.uTroikaClipRect.value)}t.uTroikaSDFDebug.value=!!this.debugSDF,A.polygonOffset=!!this.depthOffset,A.polygonOffsetFactor=A.polygonOffsetUnits=this.depthOffset||0;const r=e?this.outlineColor||0:this.color;if(r==null)delete A.color;else{const o=A.hasOwnProperty("color")?A.color:A.color=new KA;(r!==o._input||typeof r=="object")&&o.set(o._input=r)}let s=this.orientation||lv;if(s!==A._orientation){let o=t.uTroikaOrient.value;s=s.replace(/[^-+xyz]/g,"");let a=s!==lv&&s.match(/^([-+])([xyz])([-+])([xyz])$/);if(a){let[,l,u,c,h]=a;Yf.set(0,0,0)[u]=l==="-"?1:-1,av.set(0,0,0)[h]=c==="-"?-1:1,E_.lookAt(aj,Yf.cross(av),av),o.setFromMatrix4(E_)}else o.identity();A._orientation=s}}_parsePercent(A){if(typeof A=="string"){let e=A.match(/^(-?[\d.]+)%$/),t=e?parseFloat(e[1]):NaN;A=(isNaN(t)?0:t/100)*this.fontSize}return A}localPositionToTextCoords(A,e=new uA){e.copy(A);const t=this.curveRadius;return t&&(e.x=Math.atan2(A.x,Math.abs(t)-Math.abs(A.z))*Math.abs(t)),e}worldPositionToTextCoords(A,e=new uA){return Yf.copy(A),this.localPositionToTextCoords(this.worldToLocal(Yf),e)}raycast(A,e){const{textRenderInfo:t,curveRadius:i}=this;if(t){const r=t.blockBounds,s=i?q_():O_(),o=s.geometry,{position:a,uv:l}=o.attributes;for(let u=0;u<l.count;u++){let c=r[0]+l.getX(u)*(r[2]-r[0]);const h=r[1]+l.getY(u)*(r[3]-r[1]);let f=0;i&&(f=i-Math.cos(c/i)*i,c=Math.sin(c/i)*i),a.setXYZ(u,c,h,f)}o.boundingSphere=this.geometry.boundingSphere,o.boundingBox=this.geometry.boundingBox,s.matrixWorld=this.matrixWorld,s.material.side=this.material.side,Ic.length=0,s.raycast(A,Ic);for(let u=0;u<Ic.length;u++)Ic[u].object=this,e.push(Ic[u])}}copy(A){const e=this.geometry;return super.copy(A),this.geometry=e,hj.forEach(t=>{this[t]=A[t]}),this}clone(){return new this.constructor().copy(this)}}N_.forEach(n=>{const A="_private_"+n;Object.defineProperty(B_.prototype,n,{get(){return this[A]},set(e){e!==this[A]&&(this[A]=e,this._needsSync=!0)}})});class Uf extends Ie{constructor(A,e=!0){super(),this._startWith=A,this._showText=e,this._line=new bl(new qe,new q1({color:"#666",scale:1,linewidth:2,dashSize:.03,gapSize:.02})),this._text=new B_,this._textWrapper=new Et,this._line.frustumCulled=!1,this.add(this._line),this._showText&&(this._text.fontSize=.06,this._text.color="#666",this._text.textAlign="justify",this._text.anchorX="center",this._text.anchorY="bottom",this._text.lineHeight=1.8,this.add(this._textWrapper),this._textWrapper.add(this._text))}reset(){var A;(A=this._line.geometry)==null||A.dispose(),this._line.computeLineDistances()}update(A,e){var r;(r=this._line.geometry)==null||r.dispose(),this._line.geometry.setFromPoints([A,e]),this._line.computeLineDistances();const t=A.distanceTo(e);this._startWith?this._text.text=`${this._startWith}${(t*1e3).toFixed(0)} mm`:this._text.text=`${(t*1e3).toFixed(0)} mm`;const i=new O;i.addVectors(A,e).multiplyScalar(.5),this._textWrapper.position.copy(i),this._text.lookAt(e),this._text.rotateY(Math.PI/2),this._text.rotateX(-Math.PI/3),this._text.sync()}updateDirection(A){this._textWrapper.lookAt(A)}updateSize(A){var i;const e=(i=this.parent)==null?void 0:i.position.clone();e==null||e.setY(this.position.y);let t=(e==null?void 0:e.distanceTo(A))||1;t*=1.2,t<5&&(t=5),this._tw&&this._tw.isPlaying()&&this._tw.stop(),this._tw=new xs.Tween(this._text).to({fontSize:t/100}).duration(300).easing(xs.Easing.Quintic.InOut).start()}dispose(){this._tw.stop(),this._text.dispose(),Sn(this)}}class z_ extends Ie{constructor(A,e){super(),this.radius=A,this._text=new uj(""),this._line=new Uf(void 0,!1),this._box=new Te,this._box.geometry=new Xh(A,A+.003,128),this._box.material=new ti({color:"#898989",side:ot}),this.position.y=e,this._box.rotateX(-Math.PI/2),this.add(this._box),this.add(this._line),this.add(this._text)}hide(){this._text.hide(),this._line.visible=!1}show(){this._text.show(),this._line.visible=!0}update(A){var e;this.radius=A,(e=this._box.geometry)==null||e.dispose(),this._box.geometry=new Xh(A,A+.003,128),this._text.update((A*1e3).toFixed(0))}change(A){const e=A.clone();e.setY(0),e.normalize().multiplyScalar(this.radius),this._text.position.set(e.x,e.y,e.z),this._line.update(e,new O)}}class uj extends Rg{constructor(A){const e=document.createElement("div");super(e),this._wrapper=document.createElement("div"),this._wrapper.style.fontSize="10px",this._wrapper.style.color="#898989",this._wrapper.style.whiteSpace="nowrap",this._wrapper.style.position="absolute",this._wrapper.style.transform="translateX(-50%)",this._wrapper.style.bottom="4px";const t=document.createElement("div");t.style.position="relative",t.style.zIndex="10",t.style.width=t.style.height="5px",t.style.borderRadius="50%",t.style.background="#ff6666",e.append(this._wrapper,t),this.update(A)}show(){this.element.style.display="block"}hide(){this.element.style.display="none"}update(A){this._wrapper.innerText="旋转半径:"+A+" mm"}}const cv="data:image/png;base64,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",fj="data:image/png;base64,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";class R_ extends Rg{constructor(A,e){const t=document.createElement("div");super(t),this.props=A,this.amr=e,this._direction=1,this._controllingRotate=!1,this._controlling=!1,this._startAt=0,this._looper=0,this._initial=0,this._canRotate=!1,this._emitter=new br,this.addListener=this._emitter.addListener.bind(this._emitter),this.removeListener=this._emitter.removeListener.bind(this._emitter),this._update=()=>{if(this._looper=requestAnimationFrame(this._update),this._controlling){let s=(Date.now()-this._startAt)/200;s>4&&(s=4);let o=this._initial+.005*s*this._direction;if(o>this.props.max||o<this.props.min){this.mechanism&&(o<this.props.min?(this.mechanism.position.setY(this.props.min),this._emitter.emit("change",this.props.min)):o>this.props.max&&(this.mechanism.position.setY(this.props.max),this._emitter.emit("change",this.props.max)));return}if(this._initial=o,!this.mechanism)return;this.mechanism.position.setY(o),this._emitter.emit("change",o)}},A.userData&&A.userData.target&&(this.name=A.userData.target.name,e.traverse(s=>{s.name===A.userData.target.name&&(this.mechanism=s)})),t.style.fontSize="30px",t.style.color="#0066FF",t.style.cursor="pointer",t.style.pointerEvents="auto";const i=document.createElement("div");i.innerText="↑",i.style.position="absolute",i.style.left="0",i.style.transform="translateX(-50%)",i.style.marginBottom="5px",i.setAttribute("data-direction","up");const r=document.createElement("div");if(r.style.position="absolute",r.style.left="0",r.style.transform="translateX(-50%)",r.innerText="↓",i.style.bottom=r.style.top="8px",r.setAttribute("data-direction","down"),Array.from([i,r]).forEach(s=>{s.addEventListener("mousemove",()=>{s.style.color="#00FF95"}),s.addEventListener("mouseleave",()=>{s.style.color="#0066FF"}),s.addEventListener("pointerdown",()=>{this.mechanism&&(this._controlling=!0,this._startAt=Date.now(),this._initial=this.mechanism.position.y,this._direction=s.getAttribute("data-direction")==="up"?1:-1,this._update())}),s.addEventListener("pointerup",()=>{this._controlling=!1,cancelAnimationFrame(this._looper)}),s.addEventListener("pointerleave",()=>{this._controlling=!1,cancelAnimationFrame(this._looper)})}),A.userData&&(this._canRotate=A.userData.canRotate,this._canRotate)){const{rotateTarget:s,rotateDuration:o,rotateStep:a,rotateMax:l,rotateMin:u}=A.userData;let c;if(s&&(e.traverse(h=>{h.name===s.name&&(c=h)}),c)){const h=document.createElement("div");h.style.background=`url(${cv}) center no-repeat`,h.style.backgroundSize="100% auto",h.style.width=h.style.height="35px",h.style.position="absolute",h.style.top="0",h.style.transform="translateY(-50%) scaleX(-100%) rotateZ(-30deg) rotateX(-40deg)",h.style.marginBottom="5px",h.setAttribute("data-direction","left"),t.append(h);const f=document.createElement("div");f.style.background=`url(${cv}) center no-repeat`,f.style.backgroundSize="100% auto",f.style.width=f.style.height="35px",f.style.position="absolute",h.style.right=f.style.left="10px",f.style.top="0",f.style.transform="translateY(-50%) rotateZ(-30deg) rotateX(-40deg)",f.style.marginBottom="5px",f.setAttribute("data-direction","right"),t.append(f),Array.from([h,f]).forEach(p=>{p.addEventListener("mousemove",()=>{p.style.backgroundImage=`url(${fj})`}),p.addEventListener("mouseleave",()=>{p.style.backgroundImage=`url(${cv})`}),p.addEventListener("pointerdown",()=>{if(this._timer&&this._timer.isPlaying())return;this._controllingRotate=!0,this._startAt=Date.now(),this._direction=p.getAttribute("data-direction")==="left"?-1:1;let m=a/180*Math.PI*this._direction+c.rotation.y;m>l/180*Math.PI?m=l/180*Math.PI:m<u/180*Math.PI&&(m=u/180*Math.PI),this._timer=new bu(c.rotation).to({y:m}).duration(o).start(),this._update()}),p.addEventListener("pointerup",()=>{this._controllingRotate=!1,cancelAnimationFrame(this._looper)}),p.addEventListener("pointerleave",()=>{this._controllingRotate=!1,cancelAnimationFrame(this._looper)})})}}t.append(i,r),this.scale.set(.01,.01,.01),this.matrixAutoUpdate=!1,this.updateMatrix()}hide(){this.element.style.display="none",this.traverse(A=>A.visible=!1),this.visible=!1}show(){this.element.style.display="auto",this.traverse(A=>A.visible=!0),this.visible=!0}dispose(){this._emitter.removeAllListeners(),cancelAnimationFrame(this._looper),this.element.remove()}}new O,new O;class dj extends Ie{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}new zA,new zA;class pj extends dj{constructor(A){const e=document.createElement("div");super(e),this.props=A,this._scale=.01,this._emitter=new br,this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._mouseStart=new uA,this._targetSize=new uA,this._caches=[],this._sizeFlag="width",this._direction=1,this._lines=[],this._pointerdown=a=>{const{pageX:l,pageY:u}=a;this.endNode.setPointerCapture(a.pointerId),this._mouseStart.set(l,u),this._targetSize.setX(parseFloat(this.endNode.parentElement.style.width)),this._targetSize.setY(parseFloat(this.endNode.parentElement.style.height))},this._pointermove=a=>{if(!this._mouseStart.x)return;const{pageX:l,pageY:u}=a;let c=l-this._mouseStart.x,h=c+this._targetSize.x;this._sizeFlag==="height"&&(c=u-this._mouseStart.y,h=c*this._direction+this._targetSize.y);const f=h%10;h=h-f,c=(h-this._targetSize.x)*this._direction,this._sizeFlag==="height"&&(c=(h-this._targetSize.y)*this._direction),this._textNode.innerText=(h/100).toFixed(2)+" m",this.endNode.parentElement.style[this._sizeFlag]=`${h}px`},this._pointercancel=a=>{this.endNode.releasePointerCapture(a.pointerId),this._mouseStart.set(0,0)};const{start:t,end:i}=A,r=i.distanceTo(t);this.props.axios==="z"?this.props.axios="y":this.props.axios==="y"&&(this.props.axios="z"),this.props.axios==="y"&&(this._sizeFlag="height");const s=document.createElement("div");s.style.position="absolute",s.style.left="0",s.style.bottom="0",e.append(s),this._textNode=document.createElement("div"),this._textNode.innerText=r.toFixed(2)+" m",s.append(this._textNode);const o=document.createElement("div");this.endNode=o,o.style.position="absolute",o.style.left="auto",o.style.right="0",o.style.width="4px",o.style.height="4px",o.style.background="#0066FF",o.style.borderRadius="50%",o.style.margin="-2px -2px 0 0",o.style.cursor="pointer",s.append(o),this.scale.set(this._scale,this._scale,this._scale),e.style.fontSize="6px",e.style.color="#fff",s.style[this._sizeFlag]=r*100+"px",s.style.textAlign="center",this._sizeFlag==="height"?(s.style.borderLeft="0.1px dashed #fff",s.style.display="flex",s.style.alignItems="center",s.style.justifyContent="center",s.style.whiteSpace="nowrap",o.style.top="0",o.style.left="0",o.style.right="auto",o.style.margin="-2px 0 0 -2px"):s.style.borderBottom="0.1px dashed #fff",o.addEventListener("pointerdown",this._pointerdown),o.addEventListener("pointermove",this._pointermove),o.addEventListener("pointerup",this._pointercancel),i[this.props.axios]<t[this.props.axios]?this.rotateY(Math.PI):this._direction=-1}_getIndexByAxios(){return this.props.axios==="y"?1:this.props.axios==="z"?2:0}dispose(){this._lines.forEach(A=>A.dispose()),this._emitter.removeAllListeners(),this.endNode.removeEventListener("pointerdown",this._pointerdown),this.endNode.removeEventListener("pointermove",this._pointermove),this.endNode.removeEventListener("pointerup",this._pointercancel),this.element.remove(),this._caches.forEach(A=>A.clear()),this._caches=[]}}const gj="*{box-sizing:border-box}.pointer-container{width:20px;height:20px;pointer-events:auto;cursor:pointer;display:flex;align-items:center;justify-content:center}.pointer-container.active .point{transform:scale(3);background:#06f}.pointer-container:hover .point{transform:scale(4);background:#00ff95}.pointer-container:hover .value{opacity:1;transform:translate3d(-50%,0,0)}.pointer-container .point{width:3px;height:3px;border-radius:50%;background:#898989;transition:all .2s}.pointer-container .value{white-space:nowrap;pointer-events:none;font-size:12px;opacity:0;position:absolute;bottom:80%;left:50%;color:#898989;transform:translate3d(-50%,-14px,0);transition:all .2s}";var mj=Object.defineProperty,vj=Object.getOwnPropertyDescriptor,hv=(n,A,e,t)=>{for(var i=t>1?void 0:t?vj(A,e):A,r=n.length-1,s;r>=0;r--)(s=n[r])&&(i=(t?s(A,e,i):s(i))||i);return t&&i&&mj(A,e,i),i};class yj extends Ie{constructor(){super(),this._box3=new ye,this._line11=new Uf("长:"),this._line12=new Uf("宽:"),this._line13=new Uf("高:"),this._outline=new z_(0,0),this._radius=0,this._hasWidthConfig=!1,this._hasLengthConfig=!1,this._hasHeightConfig=!1,this.follow="",this.followOrigin=0,this.followScale=1,this.originOffset=0,this.translateCache=0,this._changeSize=N9(A=>{this._line11.updateSize(A),this._line12.updateSize(A),this._line13.updateSize(A)},100),this._change=()=>{if(!this._app)return;const A=this._app.camera;A&&(this._outline.change(A.position),this._changeSize(A.position),this._line13.updateDirection(A.position))},this.add(this._outline,this._line11,this._line12,this._line13)}get hasSizeConfig(){return{length:this._hasLengthConfig,width:this._hasWidthConfig,height:this._hasHeightConfig}}get size(){return this._box3.clone()}get radius(){return this._radius}init(A){this._app=A,this._app.controls.addEventListener("change",this._change)}reset(){this.hide()}generate(A,e=0){A&&(this._object=A),this.update(e)}show(){this.visible=!0,this._outline.visible=!0,this._outline.show(),this.traverse(A=>A.visible=!0)}hide(){this.visible=!1,this._outline.visible=!1,this._outline.hide(),this.traverse(A=>A.visible=!1)}dispose(){var A;(A=this._app)==null||A.controls.removeEventListener("change",this._change),this._line11.dispose(),this._line12.dispose(),this._line13.dispose()}update(A=0){if(!this._object)return;const e=this._object,{box:t,maxRadius:i,hasLength:r,hasHeight:s,hasWidth:o}=Mb(e);this._hasWidthConfig=o,this._hasLengthConfig=r,this._hasHeightConfig=s,this._box3.copy(t),this._radius=i,this.follow&&A&&(this.originOffset=(this.followOrigin-A)*this.followScale),this._outline.update(this._radius),this._change();const a=this._box3.min.x,l=this._box3.max.x,u=this._box3.min.z,c=this._box3.max.z,h=this._box3.min.y,f=this._box3.max.y;let p=.3;const m=new O(a,0,u),d=new O(l,0,u);this._line11.update(m.clone().sub(new O(0,0,p/1.8)),d.clone().sub(new O(0,0,p/1.8)));const g=new O(l,0,c);this._line12.update(d.clone().add(new O(p,0,0)),g.clone().add(new O(p,0,0)));const y=new O(a,h,u),v=new O(a,f,u),w=y.clone();w.z-=p/3;const C=v.clone();C.z-=p/3,this._line13.update(w,C)}}let bc=class extends Gr{constructor(n,A=!1){super(),this.text="",this.active=!1,this.text=(n*1e3).toFixed(0),this.active=A}render(){return $i`
9843
+ `))),{vertexShader:e,fragmentShader:t}}});return A.transparent=!0,Object.defineProperties(A,{isTroikaTextMaterial:{value:!0},shadowSide:{get(){return this.side},set(){}}}),A}const ov=new ti({color:16777215,side:ot,transparent:!0}),D_=8421504,E_=new zA,Yf=new O,av=new O,Ic=[],aj=new O,lv="+x+y";function L_(n){return Array.isArray(n)?n[0]:n}let O_=()=>{const n=new Pe(new Kn(1,1),ov);return O_=()=>n,n},q_=()=>{const n=new Pe(new Kn(1,1,32,1),ov);return q_=()=>n,n};const lj={type:"syncstart"},cj={type:"synccomplete"},N_=["font","fontSize","fontStyle","fontWeight","lang","letterSpacing","lineHeight","maxWidth","overflowWrap","text","direction","textAlign","textIndent","whiteSpace","anchorX","anchorY","colorRanges","sdfGlyphSize"],hj=N_.concat("material","color","depthOffset","clipRect","curveRadius","orientation","glyphGeometryDetail");class B_ extends Pe{constructor(){const A=new tj;super(A,null),this.text="",this.anchorX=0,this.anchorY=0,this.curveRadius=0,this.direction="auto",this.font=null,this.unicodeFontsURL=null,this.fontSize=.1,this.fontWeight="normal",this.fontStyle="normal",this.lang=null,this.letterSpacing=0,this.lineHeight="normal",this.maxWidth=1/0,this.overflowWrap="normal",this.textAlign="left",this.textIndent=0,this.whiteSpace="normal",this.material=null,this.color=null,this.colorRanges=null,this.outlineWidth=0,this.outlineColor=0,this.outlineOpacity=1,this.outlineBlur=0,this.outlineOffsetX=0,this.outlineOffsetY=0,this.strokeWidth=0,this.strokeColor=D_,this.strokeOpacity=1,this.fillOpacity=1,this.depthOffset=0,this.clipRect=null,this.orientation=lv,this.glyphGeometryDetail=1,this.sdfGlyphSize=null,this.gpuAccelerateSDF=!0,this.debugSDF=!1}sync(A){this._needsSync&&(this._needsSync=!1,this._isSyncing?(this._queuedSyncs||(this._queuedSyncs=[])).push(A):(this._isSyncing=!0,this.dispatchEvent(lj),Zk({text:this.text,font:this.font,lang:this.lang,fontSize:this.fontSize||.1,fontWeight:this.fontWeight||"normal",fontStyle:this.fontStyle||"normal",letterSpacing:this.letterSpacing||0,lineHeight:this.lineHeight||"normal",maxWidth:this.maxWidth,direction:this.direction||"auto",textAlign:this.textAlign,textIndent:this.textIndent,whiteSpace:this.whiteSpace,overflowWrap:this.overflowWrap,anchorX:this.anchorX,anchorY:this.anchorY,colorRanges:this.colorRanges,includeCaretPositions:!0,sdfGlyphSize:this.sdfGlyphSize,gpuAccelerateSDF:this.gpuAccelerateSDF,unicodeFontsURL:this.unicodeFontsURL},e=>{this._isSyncing=!1,this._textRenderInfo=e,this.geometry.updateGlyphs(e.glyphBounds,e.glyphAtlasIndices,e.blockBounds,e.chunkedBounds,e.glyphColors);const t=this._queuedSyncs;t&&(this._queuedSyncs=null,this._needsSync=!0,this.sync(()=>{t.forEach(i=>i&&i())})),this.dispatchEvent(cj),A&&A()})))}onBeforeRender(A,e,t,i,r,s){this.sync(),r.isTroikaTextMaterial&&this._prepareForRender(r),r._hadOwnSide=r.hasOwnProperty("side"),this.geometry.setSide(r._actualSide=r.side),r.side=Bt}onAfterRender(A,e,t,i,r,s){r._hadOwnSide?r.side=r._actualSide:delete r.side}dispose(){this.geometry.dispose()}get textRenderInfo(){return this._textRenderInfo||null}get material(){let A=this._derivedMaterial;const e=this._baseMaterial||this._defaultMaterial||(this._defaultMaterial=ov.clone());if((!A||A.baseMaterial!==e)&&(A=this._derivedMaterial=oj(e),e.addEventListener("dispose",function t(){e.removeEventListener("dispose",t),A.dispose()})),this.outlineWidth||this.outlineBlur||this.outlineOffsetX||this.outlineOffsetY){let t=A._outlineMtl;return t||(t=A._outlineMtl=Object.create(A,{id:{value:A.id+.1}}),t.isTextOutlineMaterial=!0,t.depthWrite=!1,t.map=null,A.addEventListener("dispose",function i(){A.removeEventListener("dispose",i),t.dispose()})),[t,A]}else return A}set material(A){A&&A.isTroikaTextMaterial?(this._derivedMaterial=A,this._baseMaterial=A.baseMaterial):this._baseMaterial=A}get glyphGeometryDetail(){return this.geometry.detail}set glyphGeometryDetail(A){this.geometry.detail=A}get curveRadius(){return this.geometry.curveRadius}set curveRadius(A){this.geometry.curveRadius=A}get customDepthMaterial(){return L_(this.material).getDepthMaterial()}get customDistanceMaterial(){return L_(this.material).getDistanceMaterial()}_prepareForRender(A){const e=A.isTextOutlineMaterial,t=A.uniforms,i=this.textRenderInfo;if(i){const{sdfTexture:o,blockBounds:a}=i;t.uTroikaSDFTexture.value=o,t.uTroikaSDFTextureSize.value.set(o.image.width,o.image.height),t.uTroikaSDFGlyphSize.value=i.sdfGlyphSize,t.uTroikaSDFExponent.value=i.sdfExponent,t.uTroikaTotalBounds.value.fromArray(a),t.uTroikaUseGlyphColors.value=!e&&!!i.glyphColors;let l=0,u=0,c=0,h,f,p,m=0,d=0;if(e){let{outlineWidth:y,outlineOffsetX:v,outlineOffsetY:w,outlineBlur:C,outlineOpacity:_}=this;l=this._parsePercent(y)||0,u=Math.max(0,this._parsePercent(C)||0),h=_,m=this._parsePercent(v)||0,d=this._parsePercent(w)||0}else c=Math.max(0,this._parsePercent(this.strokeWidth)||0),c&&(p=this.strokeColor,t.uTroikaStrokeColor.value.set(p??D_),f=this.strokeOpacity,f==null&&(f=1)),h=this.fillOpacity;t.uTroikaDistanceOffset.value=l,t.uTroikaPositionOffset.value.set(m,d),t.uTroikaBlurRadius.value=u,t.uTroikaStrokeWidth.value=c,t.uTroikaStrokeOpacity.value=f,t.uTroikaFillOpacity.value=h??1,t.uTroikaCurveRadius.value=this.curveRadius||0;let g=this.clipRect;if(g&&Array.isArray(g)&&g.length===4)t.uTroikaClipRect.value.fromArray(g);else{const y=(this.fontSize||.1)*100;t.uTroikaClipRect.value.set(a[0]-y,a[1]-y,a[2]+y,a[3]+y)}this.geometry.applyClipRect(t.uTroikaClipRect.value)}t.uTroikaSDFDebug.value=!!this.debugSDF,A.polygonOffset=!!this.depthOffset,A.polygonOffsetFactor=A.polygonOffsetUnits=this.depthOffset||0;const r=e?this.outlineColor||0:this.color;if(r==null)delete A.color;else{const o=A.hasOwnProperty("color")?A.color:A.color=new KA;(r!==o._input||typeof r=="object")&&o.set(o._input=r)}let s=this.orientation||lv;if(s!==A._orientation){let o=t.uTroikaOrient.value;s=s.replace(/[^-+xyz]/g,"");let a=s!==lv&&s.match(/^([-+])([xyz])([-+])([xyz])$/);if(a){let[,l,u,c,h]=a;Yf.set(0,0,0)[u]=l==="-"?1:-1,av.set(0,0,0)[h]=c==="-"?-1:1,E_.lookAt(aj,Yf.cross(av),av),o.setFromMatrix4(E_)}else o.identity();A._orientation=s}}_parsePercent(A){if(typeof A=="string"){let e=A.match(/^(-?[\d.]+)%$/),t=e?parseFloat(e[1]):NaN;A=(isNaN(t)?0:t/100)*this.fontSize}return A}localPositionToTextCoords(A,e=new uA){e.copy(A);const t=this.curveRadius;return t&&(e.x=Math.atan2(A.x,Math.abs(t)-Math.abs(A.z))*Math.abs(t)),e}worldPositionToTextCoords(A,e=new uA){return Yf.copy(A),this.localPositionToTextCoords(this.worldToLocal(Yf),e)}raycast(A,e){const{textRenderInfo:t,curveRadius:i}=this;if(t){const r=t.blockBounds,s=i?q_():O_(),o=s.geometry,{position:a,uv:l}=o.attributes;for(let u=0;u<l.count;u++){let c=r[0]+l.getX(u)*(r[2]-r[0]);const h=r[1]+l.getY(u)*(r[3]-r[1]);let f=0;i&&(f=i-Math.cos(c/i)*i,c=Math.sin(c/i)*i),a.setXYZ(u,c,h,f)}o.boundingSphere=this.geometry.boundingSphere,o.boundingBox=this.geometry.boundingBox,s.matrixWorld=this.matrixWorld,s.material.side=this.material.side,Ic.length=0,s.raycast(A,Ic);for(let u=0;u<Ic.length;u++)Ic[u].object=this,e.push(Ic[u])}}copy(A){const e=this.geometry;return super.copy(A),this.geometry=e,hj.forEach(t=>{this[t]=A[t]}),this}clone(){return new this.constructor().copy(this)}}N_.forEach(n=>{const A="_private_"+n;Object.defineProperty(B_.prototype,n,{get(){return this[A]},set(e){e!==this[A]&&(this[A]=e,this._needsSync=!0)}})});class Uf extends Ie{constructor(A,e=!0){super(),this._startWith=A,this._showText=e,this._line=new bl(new qe,new q1({color:"#666",scale:1,linewidth:2,dashSize:.03,gapSize:.02})),this._text=new B_,this._textWrapper=new Et,this._line.frustumCulled=!1,this.add(this._line),this._showText&&(this._text.fontSize=.06,this._text.color="#666",this._text.textAlign="justify",this._text.anchorX="center",this._text.anchorY="bottom",this._text.lineHeight=1.8,this.add(this._textWrapper),this._textWrapper.add(this._text))}reset(){var A;(A=this._line.geometry)==null||A.dispose(),this._line.computeLineDistances()}update(A,e){var r;(r=this._line.geometry)==null||r.dispose(),this._line.geometry.setFromPoints([A,e]),this._line.computeLineDistances();const t=A.distanceTo(e);this._startWith?this._text.text=`${this._startWith}${(t*1e3).toFixed(0)} mm`:this._text.text=`${(t*1e3).toFixed(0)} mm`;const i=new O;i.addVectors(A,e).multiplyScalar(.5),this._textWrapper.position.copy(i),this._text.lookAt(e),this._text.rotateY(Math.PI/2),this._text.rotateX(-Math.PI/3),this._text.sync()}updateDirection(A){this._textWrapper.lookAt(A)}updateSize(A){var i;const e=(i=this.parent)==null?void 0:i.position.clone();e==null||e.setY(this.position.y);let t=(e==null?void 0:e.distanceTo(A))||1;t*=1.2,t<5&&(t=5),this._tw&&this._tw.isPlaying()&&this._tw.stop(),this._tw=new xs.Tween(this._text).to({fontSize:t/100}).duration(300).easing(xs.Easing.Quintic.InOut).start()}dispose(){this._tw.stop(),this._text.dispose(),Sn(this)}}class z_ extends Ie{constructor(A,e){super(),this.radius=A,this._text=new uj(""),this._line=new Uf(void 0,!1),this._box=new Pe,this._box.geometry=new Xh(A,A+.003,128),this._box.material=new ti({color:"#898989",side:ot}),this.position.y=e,this._box.rotateX(-Math.PI/2),this.add(this._box),this.add(this._line),this.add(this._text)}hide(){this._text.hide(),this._line.visible=!1}show(){this._text.show(),this._line.visible=!0}update(A){var e;this.radius=A,(e=this._box.geometry)==null||e.dispose(),this._box.geometry=new Xh(A,A+.003,128),this._text.update((A*1e3).toFixed(0))}change(A){const e=A.clone();e.setY(0),e.normalize().multiplyScalar(this.radius),this._text.position.set(e.x,e.y,e.z),this._line.update(e,new O)}}class uj extends Rg{constructor(A){const e=document.createElement("div");super(e),this._wrapper=document.createElement("div"),this._wrapper.style.fontSize="10px",this._wrapper.style.color="#898989",this._wrapper.style.whiteSpace="nowrap",this._wrapper.style.position="absolute",this._wrapper.style.transform="translateX(-50%)",this._wrapper.style.bottom="4px";const t=document.createElement("div");t.style.position="relative",t.style.zIndex="10",t.style.width=t.style.height="5px",t.style.borderRadius="50%",t.style.background="#ff6666",e.append(this._wrapper,t),this.update(A)}show(){this.element.style.display="block"}hide(){this.element.style.display="none"}update(A){this._wrapper.innerText="旋转半径:"+A+" mm"}}const cv="data:image/png;base64,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",fj="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAADOhJREFUeF7t3WFy3DYSQGHO5mC2r2NXzuDkDFvJdaIcbK2tkWdiWZE0JKcbQBOf/wZsAK8bjyRATU6LfwggMC2B07QzN3EEEFgIQBEgMDEBApg4+aaOAAGoAQQmJkAAEyff1BEgADWAwMQECGDi5Js6AgSgBhCYmAABTJx8U0eAANQAAhMTIICJk2/qCBCAGkBgYgIEMHHyTR0BAlADCExMgAAmTr6pI0AAagCBiQkQwMTJN3UECEANIDAxAQKYOPmmjgABqAEEJiZAABMn39QRIAA1gMDEBAhg4uSbOgIEoAYQmJgAAUycfFNHgADUAAITEyCAiZNv6ggQgBpAYGICBDBx8k0dAQJQAwhMTIAAJk6+qSNAAGoAgYkJEMDEyTd1BAhADSAwMQECmDj5po4AAagBBCYmQAATJ9/UESAANYDAxAQIYOLkmzoCBKAGEJiYAAFMnHxTR4AA1AACExMggImTb+oIEIAaQGBiAgQwcfJNHQECUAMITEyAACZOvqkjQABqAIGJCRDAxMk3dQQIQA0gMDEBApg4+aaOAAGoAQQmJkAAEyff1BEgADWAwMQECGDi5Js6AgSgBm4TePzvx2X5z8d/Gp6+/Hb7Ii0qECCAClnqNcanhf/L12V5/LH4f4zl94UIemUmrF8CCEN5sEDf7/p/vT+r08Ny+vzpYDOfajoEMFW6V0521eK/xiKBlVSHbEYAQ6al86Ae//zrjcf+NwZGAp0ztrt7AtiN7qAXPv5x3uD7umN29gR2QOt9CQH0zsBI/e9f/NdZkMBI+VwxFgJYAWmKJvcv/gumb5+W068PUzA7wCQJ4ABJvHsKmzb91vRGAmsojdCGAEbIQu8xPP7xGDsEm4KxPPOiEUAe2xqRN+/4r50WCawl1bMdAfSk37vvtMX/z8RsCvbO8Y3+CWDwBKUNL2zT7+YISeAmon4NCKAf+349t1v81zmSQL9sv9szAQyamLRhtV/8l6k4GUjL6R2BCeAOeOUuDT/u20qABLYSy25PANmER4nfffGfQTgZGKUcruMggNEykjWe8LP+vQMlgb3kMq4jgAyqo8XMP+7bOmObgluJJbUngCSww4Tttul3kwAJ3ESU34AA8hn362HcxX9lQgL9quOpZwLonIC07sdf/JepOxlIq4EVgQlgBaRyTcos/itZEuhVYwTQi3xWv0Mc922dnJOBrcSi2hNAFMlR4gxz3LcVCAlsJRbRngAiKI4SY7zjvq1kbApuJXZnewK4E+Awl5d773+THAk0LCoCaAg7ravjLP4rIhJIK5afAxNAI9Bp3Rxv8V9QORlIq5lngQmgBeWsPg67+K/ASCCrdK5xCSCbcFb8ksd9O2CcvqjRHdjWXgLuWlKjtSt73LcVpOPBrcS2tCeALbRGaVv/uG8jSRLYCGx1cwJYjWqQhod/73+Ts5OBhBIkgASoaSHnXfxXpCQQXFwEEAw0LZzFf0HrZCCyxgggkmZWLIv/BVkSiCo1AogimRVnluO+rfwcD24l9mp7AgjBmBTE4n8HrJOBiKojgAiKWTGmO+7bCpIEthJ72Z4A7iWYdb3Fv5ask4G1pF5pRwB3wEu71KbfVrQksJXYpT0B7ASXdpnFvxOtk4E94AhgD7Wsayz+O8mSwFaABLCVWFZ7iz+ILAlsAUkAW2hltXXcF0jWycAWmASwhVZW22n+tDcL4L8Otx6W0+dPrXqr3A8B9M6e476sDDgZWEGWAFZASmvivT8N7SUwCdwgTADZJfhWfIu/FXkSeIc0AbQqw+f9WPyNqTsZeAs4ATQuxcXib0380h8JvAaeAFqWo+O+lrRf9OV4kAA6lt9T1477OmeABP51YNo5I/N077hvlFzbFHyWCa8ALcrSe38Lylv6IIELLQLYUjZ72lr8e6g1uMam4BkyAWSXmkf/bMI749sPIICdpbP6Mnf/1aj6NPQU4Akgs/IIIJNuROzp9wIIIKKM3orh8T+TbkRsAoigKMYbBAhg9NIggNEzVHp8vvwbPX0EMHqGyo/PU8CoKZx+8TsFaFWaNgNbkV7bj8V/IWUTcG3JRLT7LoLz5xcfIsL9iPH4MTZe72inh5gRPP79c5xvD8vp16DYMSPsHYUAemcgov/jvWa4Q0fUxYoYBLAC0vBNDrfZ6AOdVjVHAK1IZ/ZDAJl0Dx2bAI6S3iP91sDpi7psVJdANwKd3s2R9gEIIL1crh0QQDPUyR0d5qjRX+klV8pP4QmgJe3Mvg6zD0AAmWXyMjYBtKSd3dcx9gEcAWbXybP4BNAQdnpXx9gHIID0QvnRAQE0hJ3e1SEE4BuA9DrxBNASccO+jrAR6ASgYcH4TcCmsNM7Ky8AG4DpNfKiA68ArYln9ldeAIv3/8z6eCU2ATQGntodAaTiPWJwAjhSVst/C2ADsHU5EkBr4pn9VReADcDM6ng1NgE0R57YYW0BeP9PLI23QhNAB+hpXRJAGtqjBiaAI2W29Cag9/8epUgAPahn9VlZAN7/s6ri3bgE0AV7Uqd1BeD9P6kkboUlgFuEKv33un8LQACd6owAOoFP6baqADz+p5TDmqAEsIZSlTYlfw/A9/89y4sAetKP7rukAHz/H10GW+IRwBZaI7et+g2Ax/+uVUUAXfEHdl7yBMDjf2AF7ApFALuwDXiRx/8BkzL+kAhg/BzdHqHH/9uMtHiVAAEcoTBKPv7b/Buh9AhghCzcO4aa5/8+/rk37wHXE0AAxO4hKr7/2/3vXjbnARDAEGm4YxAe/++A51ICqF4D7v7VM9h1/ATQFf+dnbv73wnQ5QRQuQbc/Stnb4ixE8AQadgxCHf/HdBc8pIAAVStiYp3/8XZ/2jlRgCjZWTNeNz911DSZgUBAlgBabgm7v7DpaTqgAigWubc/atlbOjxEsDQ6XkxuJqLf1l89TdslRHAsKl5ZWAe/Stlq8RYCaBEmpZlcfevkqlS4ySACumquvgd+w1fXQQweoqq/tiHxT96ZT2NjwBGTlPdxb8si//X38ildR0bAYycpZqbfmeifuxj5Lp6NjYCGDVRNX/l5/xQ+bCcPn8aFatx/UyAAEasiLqbfs78R6ynd8ZEAKMlrPLi9+g/WjXdHA8B3ETUsEHZx/4nRt77G5ZKVFcEEEXy3jilF7/3/nvT3+t6AuhF/nm/pRf/ed/vizoaoY52jEHidkALu+TpnP+Xr8vy+DEsZvNAzvubIw/skAACYW4KVfojn39m6r1/U9LHa0wAPXJSe6f/Sszi71E7wX0SQDDQm+Gqv+9/n6DFfzPRNRoQQKs8HeJ93+JvVS6t+iGAFqSP8cjvzt+iVhr3QQCZwI9z17f4M+ukY2wCyIJ/nLu+P+3NqpEB4hJAdBIOddc/PSzL/35fTr8+RGMSbwwCBBCVh0Mt/DMUn/dGlcbIcQggIjuHety30x9RElViEMA9mTriXd8j/z0VUe5aAtiTssMtfHf9PWVwhGsIYEsWD7nwbfRtKYGjtSWANRk95MJ311+T+qO3IYD3Mny8zb3rbH3Lf/SVvXJ+BPAS1HHv9ueZWvgrF8YszQjgmumnu/3pQ+0f53itbM/v+I9/L6cvv81S1Oa5ngABHOOHOV7JuM299ctg3pYEcCgBXBb9uZ59vjvvqt4wcwI4wyq92edOv6HeNX1BgACeA/n+NHD5gc4R9wPOi/3JWH8vy7cHd3nr+V4CBLCG4E9ieHq+/nBZiEm/5ntd6Bb7mvRos58AAexn9+PKJ0Fc/12fINYG/vbjT229t6+Fpl0QAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQAQIIAikMAhUJEEDFrBkzAkEECCAIpDAIVCRAABWzZswIBBEggCCQwiBQkQABVMyaMSMQRIAAgkAKg0BFAgRQMWvGjEAQgf8DKv6MH/R9oFMAAAAASUVORK5CYII=";class R_ extends Rg{constructor(A,e){const t=document.createElement("div");super(t),this.props=A,this.amr=e,this._direction=1,this._controllingRotate=!1,this._controlling=!1,this._startAt=0,this._looper=0,this._initial=0,this._canRotate=!1,this._emitter=new br,this.addListener=this._emitter.addListener.bind(this._emitter),this.removeListener=this._emitter.removeListener.bind(this._emitter),this._update=()=>{if(this._looper=requestAnimationFrame(this._update),this._controlling){let s=(Date.now()-this._startAt)/200;s>4&&(s=4);let o=this._initial+.005*s*this._direction;if(o>this.props.max||o<this.props.min){this.mechanism&&(o<this.props.min?(this.mechanism.position.setY(this.props.min),this._emitter.emit("change",this.props.min)):o>this.props.max&&(this.mechanism.position.setY(this.props.max),this._emitter.emit("change",this.props.max)));return}if(this._initial=o,!this.mechanism)return;this.mechanism.position.setY(o),this._emitter.emit("change",o)}},A.userData&&A.userData.target&&(this.name=A.userData.target.name,e.traverse(s=>{s.name===A.userData.target.name&&(this.mechanism=s)})),t.style.fontSize="30px",t.style.color="#0066FF",t.style.cursor="pointer",t.style.pointerEvents="auto";const i=document.createElement("div");i.innerText="↑",i.style.position="absolute",i.style.left="0",i.style.transform="translateX(-50%)",i.style.marginBottom="5px",i.setAttribute("data-direction","up");const r=document.createElement("div");if(r.style.position="absolute",r.style.left="0",r.style.transform="translateX(-50%)",r.innerText="↓",i.style.bottom=r.style.top="8px",r.setAttribute("data-direction","down"),Array.from([i,r]).forEach(s=>{s.addEventListener("mousemove",()=>{s.style.color="#00FF95"}),s.addEventListener("mouseleave",()=>{s.style.color="#0066FF"}),s.addEventListener("pointerdown",()=>{this.mechanism&&(this._controlling=!0,this._startAt=Date.now(),this._initial=this.mechanism.position.y,this._direction=s.getAttribute("data-direction")==="up"?1:-1,this._update())}),s.addEventListener("pointerup",()=>{this._controlling=!1,cancelAnimationFrame(this._looper)}),s.addEventListener("pointerleave",()=>{this._controlling=!1,cancelAnimationFrame(this._looper)})}),A.userData&&(this._canRotate=A.userData.canRotate,this._canRotate)){const{rotateTarget:s,rotateDuration:o,rotateStep:a,rotateMax:l,rotateMin:u}=A.userData;let c;if(s&&(e.traverse(h=>{h.name===s.name&&(c=h)}),c)){const h=document.createElement("div");h.style.background=`url(${cv}) center no-repeat`,h.style.backgroundSize="100% auto",h.style.width=h.style.height="35px",h.style.position="absolute",h.style.top="0",h.style.transform="translateY(-50%) scaleX(-100%) rotateZ(-30deg) rotateX(-40deg)",h.style.marginBottom="5px",h.setAttribute("data-direction","left"),t.append(h);const f=document.createElement("div");f.style.background=`url(${cv}) center no-repeat`,f.style.backgroundSize="100% auto",f.style.width=f.style.height="35px",f.style.position="absolute",h.style.right=f.style.left="10px",f.style.top="0",f.style.transform="translateY(-50%) rotateZ(-30deg) rotateX(-40deg)",f.style.marginBottom="5px",f.setAttribute("data-direction","right"),t.append(f),Array.from([h,f]).forEach(p=>{p.addEventListener("mousemove",()=>{p.style.backgroundImage=`url(${fj})`}),p.addEventListener("mouseleave",()=>{p.style.backgroundImage=`url(${cv})`}),p.addEventListener("pointerdown",()=>{if(this._timer&&this._timer.isPlaying())return;this._controllingRotate=!0,this._startAt=Date.now(),this._direction=p.getAttribute("data-direction")==="left"?-1:1;let m=a/180*Math.PI*this._direction+c.rotation.y;m>l/180*Math.PI?m=l/180*Math.PI:m<u/180*Math.PI&&(m=u/180*Math.PI),this._timer=new bu(c.rotation).to({y:m}).duration(o).start(),this._update()}),p.addEventListener("pointerup",()=>{this._controllingRotate=!1,cancelAnimationFrame(this._looper)}),p.addEventListener("pointerleave",()=>{this._controllingRotate=!1,cancelAnimationFrame(this._looper)})})}}t.append(i,r),this.scale.set(.01,.01,.01),this.matrixAutoUpdate=!1,this.updateMatrix()}hide(){this.element.style.display="none",this.traverse(A=>A.visible=!1),this.visible=!1}show(){this.element.style.display="auto",this.traverse(A=>A.visible=!0),this.visible=!0}dispose(){this._emitter.removeAllListeners(),cancelAnimationFrame(this._looper),this.element.remove()}}new O,new O;class dj extends Ie{constructor(A=document.createElement("div")){super(),this.isCSS3DObject=!0,this.element=A,this.element.style.position="absolute",this.element.style.pointerEvents="auto",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",function(){this.traverse(function(e){e.element instanceof Element&&e.element.parentNode!==null&&e.element.parentNode.removeChild(e.element)})})}copy(A,e){return super.copy(A,e),this.element=A.element.cloneNode(!0),this}}new zA,new zA;class pj extends dj{constructor(A){const e=document.createElement("div");super(e),this.props=A,this._scale=.01,this._emitter=new br,this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._mouseStart=new uA,this._targetSize=new uA,this._caches=[],this._sizeFlag="width",this._direction=1,this._lines=[],this._pointerdown=a=>{const{pageX:l,pageY:u}=a;this.endNode.setPointerCapture(a.pointerId),this._mouseStart.set(l,u),this._targetSize.setX(parseFloat(this.endNode.parentElement.style.width)),this._targetSize.setY(parseFloat(this.endNode.parentElement.style.height))},this._pointermove=a=>{if(!this._mouseStart.x)return;const{pageX:l,pageY:u}=a;let c=l-this._mouseStart.x,h=c+this._targetSize.x;this._sizeFlag==="height"&&(c=u-this._mouseStart.y,h=c*this._direction+this._targetSize.y);const f=h%10;h=h-f,c=(h-this._targetSize.x)*this._direction,this._sizeFlag==="height"&&(c=(h-this._targetSize.y)*this._direction),this._textNode.innerText=(h/100).toFixed(2)+" m",this.endNode.parentElement.style[this._sizeFlag]=`${h}px`},this._pointercancel=a=>{this.endNode.releasePointerCapture(a.pointerId),this._mouseStart.set(0,0)};const{start:t,end:i}=A,r=i.distanceTo(t);this.props.axios==="z"?this.props.axios="y":this.props.axios==="y"&&(this.props.axios="z"),this.props.axios==="y"&&(this._sizeFlag="height");const s=document.createElement("div");s.style.position="absolute",s.style.left="0",s.style.bottom="0",e.append(s),this._textNode=document.createElement("div"),this._textNode.innerText=r.toFixed(2)+" m",s.append(this._textNode);const o=document.createElement("div");this.endNode=o,o.style.position="absolute",o.style.left="auto",o.style.right="0",o.style.width="4px",o.style.height="4px",o.style.background="#0066FF",o.style.borderRadius="50%",o.style.margin="-2px -2px 0 0",o.style.cursor="pointer",s.append(o),this.scale.set(this._scale,this._scale,this._scale),e.style.fontSize="6px",e.style.color="#fff",s.style[this._sizeFlag]=r*100+"px",s.style.textAlign="center",this._sizeFlag==="height"?(s.style.borderLeft="0.1px dashed #fff",s.style.display="flex",s.style.alignItems="center",s.style.justifyContent="center",s.style.whiteSpace="nowrap",o.style.top="0",o.style.left="0",o.style.right="auto",o.style.margin="-2px 0 0 -2px"):s.style.borderBottom="0.1px dashed #fff",o.addEventListener("pointerdown",this._pointerdown),o.addEventListener("pointermove",this._pointermove),o.addEventListener("pointerup",this._pointercancel),i[this.props.axios]<t[this.props.axios]?this.rotateY(Math.PI):this._direction=-1}_getIndexByAxios(){return this.props.axios==="y"?1:this.props.axios==="z"?2:0}dispose(){this._lines.forEach(A=>A.dispose()),this._emitter.removeAllListeners(),this.endNode.removeEventListener("pointerdown",this._pointerdown),this.endNode.removeEventListener("pointermove",this._pointermove),this.endNode.removeEventListener("pointerup",this._pointercancel),this.element.remove(),this._caches.forEach(A=>A.clear()),this._caches=[]}}const gj="*{box-sizing:border-box}.pointer-container{width:20px;height:20px;pointer-events:auto;cursor:pointer;display:flex;align-items:center;justify-content:center}.pointer-container.active .point{transform:scale(3);background:#06f}.pointer-container:hover .point{transform:scale(4);background:#00ff95}.pointer-container:hover .value{opacity:1;transform:translate3d(-50%,0,0)}.pointer-container .point{width:3px;height:3px;border-radius:50%;background:#898989;transition:all .2s}.pointer-container .value{white-space:nowrap;pointer-events:none;font-size:12px;opacity:0;position:absolute;bottom:80%;left:50%;color:#898989;transform:translate3d(-50%,-14px,0);transition:all .2s}";var mj=Object.defineProperty,vj=Object.getOwnPropertyDescriptor,hv=(n,A,e,t)=>{for(var i=t>1?void 0:t?vj(A,e):A,r=n.length-1,s;r>=0;r--)(s=n[r])&&(i=(t?s(A,e,i):s(i))||i);return t&&i&&mj(A,e,i),i};class yj extends Ie{constructor(){super(),this._box3=new ye,this._line11=new Uf("长:"),this._line12=new Uf("宽:"),this._line13=new Uf("高:"),this._outline=new z_(0,0),this._radius=0,this._hasWidthConfig=!1,this._hasLengthConfig=!1,this._hasHeightConfig=!1,this.follow="",this.followOrigin=0,this.followScale=1,this.originOffset=0,this.translateCache=0,this._changeSize=N9(A=>{this._line11.updateSize(A),this._line12.updateSize(A),this._line13.updateSize(A)},100),this._change=()=>{if(!this._app)return;const A=this._app.camera;A&&(this._outline.change(A.position),this._changeSize(A.position),this._line13.updateDirection(A.position))},this.add(this._outline,this._line11,this._line12,this._line13)}get hasSizeConfig(){return{length:this._hasLengthConfig,width:this._hasWidthConfig,height:this._hasHeightConfig}}get size(){return this._box3.clone()}get radius(){return this._radius}init(A){this._app=A,this._app.controls.addEventListener("change",this._change)}reset(){this.hide()}generate(A,e=0){A&&(this._object=A),this.update(e)}show(){this.visible=!0,this._outline.visible=!0,this._outline.show(),this.traverse(A=>A.visible=!0)}hide(){this.visible=!1,this._outline.visible=!1,this._outline.hide(),this.traverse(A=>A.visible=!1)}dispose(){var A;(A=this._app)==null||A.controls.removeEventListener("change",this._change),this._line11.dispose(),this._line12.dispose(),this._line13.dispose()}update(A=0){if(!this._object)return;const e=this._object,{box:t,maxRadius:i,hasLength:r,hasHeight:s,hasWidth:o}=Mb(e);this._hasWidthConfig=o,this._hasLengthConfig=r,this._hasHeightConfig=s,this._box3.copy(t),this._radius=i,this.follow&&A&&(this.originOffset=(this.followOrigin-A)*this.followScale),this._outline.update(this._radius),this._change();const a=this._box3.min.x,l=this._box3.max.x,u=this._box3.min.z,c=this._box3.max.z,h=this._box3.min.y,f=this._box3.max.y;let p=.3;const m=new O(a,0,u),d=new O(l,0,u);this._line11.update(m.clone().sub(new O(0,0,p/1.8)),d.clone().sub(new O(0,0,p/1.8)));const g=new O(l,0,c);this._line12.update(d.clone().add(new O(p,0,0)),g.clone().add(new O(p,0,0)));const y=new O(a,h,u),v=new O(a,f,u),w=y.clone();w.z-=p/3;const C=v.clone();C.z-=p/3,this._line13.update(w,C)}}let bc=class extends Gr{constructor(n,A=!1){super(),this.text="",this.active=!1,this.text=(n*1e3).toFixed(0),this.active=A}render(){return $i`
9844
9844
  <div class="pointer-container ${this.active&&"active"}">
9845
9845
  <div class="point"></div>
9846
9846
  <div class="value">${this.text} mm</div>
9847
9847
  </div>
9848
- `}};bc.styles=Nf([gj]),hv([qa()],bc.prototype,"text",2),hv([qa()],bc.prototype,"active",2),bc=hv([kf("point-element")],bc);class k_ extends Ie{constructor(A){super(),this._url=A,this._size=new Ef(0,0,0),this._load(A).then()}loaded(A){}get size(){return this._size}async _load(A){if(this._url=A,A){let e;if(A.endsWith(".glb"))e=(await Da.loadAsync(A)).scene,e&&this.loaded(e);else{const i=await new dc({useCache:!0}).loadAsync(A);return i.glb?(e=i.glb,e&&this.loaded(e),e):void 0}}else return;Mb(this)}destroy(){}}const wj="data:model/gltf-binary;base64,Z2xURgIAAADM/gAAWAkAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6Iktocm9ub3MgZ2xURiBCbGVuZGVyIEkvTyB2NC4xLjYzIiwidmVyc2lvbiI6IjIuMCJ9LCJleHRlbnNpb25zVXNlZCI6WyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiIsIktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiLCJLSFJfbWF0ZXJpYWxzX2lvciJdLCJleHRlbnNpb25zUmVxdWlyZWQiOlsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iXSwic2NlbmUiOjAsInNjZW5lcyI6W3sibmFtZSI6IlNjZW5lIiwibm9kZXMiOlswXX1dLCJub2RlcyI6W3sibWVzaCI6MCwibmFtZSI6IkhvcHBlciJ9XSwibWF0ZXJpYWxzIjpbeyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyQ29sb3JGYWN0b3IiOlsyLjAsMi4wLDIuMF19LCJLSFJfbWF0ZXJpYWxzX2lvciI6eyJpb3IiOjEuNDUwMDAwMDQ3NjgzNzE1OH19LCJuYW1lIjoiSXJvbjAxXHU2ZjA2XHU5NzYyXHU5NGEyX1x1NzY3ZCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7Im1ldGFsbGljRmFjdG9yIjowLjgyNTQ1NTAwOTkzNzI4NjQsInJvdWdobmVzc0ZhY3RvciI6MC40MDAwMDAwMDU5NjA0NjQ1fX1dLCJtZXNoZXMiOlt7ImV4dHJhcyI6eyJvcmlnaW5fZ29vZHNXaWR0aCI6MC4xOTkzOTk5OTI4MjM2MDA3Nywib3JpZ2luX2dvb2RzTGVuZ3RoIjowLjIwMDAwMDAwMjk4MDIzMjI0LCJ0YXJnZXROYW1lcyI6WyJnb29kc1dpZHRoIiwiZ29vZHNMZW5ndGgiXX0sIm5hbWUiOiJNZXNoLjAzMiIsInByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6MCwiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjoyLCJtYXRlcmlhbCI6MCwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjMsIk5PUk1BTCI6NH0seyJQT1NJVElPTiI6NSwiTk9STUFMIjo2fV19XSwid2VpZ2h0cyI6WzAsMF19XSwiYWNjZXNzb3JzIjpbeyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTM0OSwibWF4IjpbMC4xMDMwMDA0MTczNTE3MjI3MiwwLjEyODAwMTY4OTkxMDg4ODY3LDAuMTA1MDAwMDE5MDczNDg2MzNdLCJtaW4iOlstMC4xMDMwMDAwMDAxMTkyMDkyOSwxLjE5MjA5Mjg5NTUwNzgxMjVlLTA3LC0wLjEwNDk5OTYwMTg0MDk3MjldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6NDA5OCwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksIm1heCI6WzAuNDk5OTk5NzMxNzc5MDk4NSwwLDBdLCJtaW4iOlstMC41MDAwMDA2NTU2NTEwOTI1LDAsLTQuMDUyOTk5NDI5NDA0NzM1NmUtMDddLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInNwYXJzZSI6eyJjb3VudCI6NjM3LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6M319LCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6NCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksIm1heCI6WzAsMS4xOTIwOTI4OTU1MDc4MTI1ZS0wNywwLjUwMDAwMTMxMTMwMjE4NTFdLCJtaW4iOlswLC01Ljk2MDQ2NDQ3NzUzOTA2M2UtMDgsLTAuNDk5OTk4NDUwMjc5MjM1ODRdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInNwYXJzZSI6eyJjb3VudCI6NjM4LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjUsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6Nn19LCJ0eXBlIjoiVkVDMyJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTI1NzcsImJ5dGVPZmZzZXQiOjB9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNjE4OCwiYnl0ZU9mZnNldCI6MTI1ODAsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxMjc0LCJieXRlT2Zmc2V0IjoyODc2OH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2NDQsImJ5dGVPZmZzZXQiOjMwMDQ0fSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTYxODgsImJ5dGVPZmZzZXQiOjM3Njg4LCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTI3NiwiYnl0ZU9mZnNldCI6NTM4NzZ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3NjU2LCJieXRlT2Zmc2V0Ijo1NTE1Mn1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjo2MjgwOH1dfSAgWPUAAEJJTgBEUkFDTwICAQAAANYKxQoBJgAjAAoACgApACYACwAnACsAKwAgAAsADgALACAAIAANAA4ADwAOAA0ADQATAQ8AGgAWABAAEAAdABoAFgAUABIAEgAQABYAFAAYAAQBBAESABQAFQAXABsAGwAYAdACFQAbANACFQDQAtICGQAVANICDAAfACoAEgEMACoAFgESASoAFgEqAAkBCQAiAAkBCQEqAAkACAEhACQAJAAOAQgBJwAoAAgACAArACcALAAuADAALQGTATsAMgAtATsAMAAyADsALAAwADsAOQA7AJMBkwGYATkAkwDDAN0A3QBNAJMAhwCFAFQAVABWAIcAhQBaAFgAWABUAIUAXgBYAFoAWgBgAF4AXABiAGQAZAA1AFwATwCSAJQATwCUAJYATwCWAJgATwCYAJoAogB8AJ4AoACiAJ4AmgCgAJ4AmgCeAJwAmgCcAIoAgAB+AGEAggCAAGEAYQBfAFkAWQCEAIYAYQBZAIYAggBhAIYAiACCAIYAigCIAIYAmgCKAIYATwCaAIYAhgCMAI4ATwCGAI4ATwCOAJAAUwBXAF0AXQBbANYAXQDWANQAXQDUANIAXQDSALwAuAC0ALYAuwC4ALYAvAC7ALYAvAC2AL4AxQDAAMIAxgDFAMIAwgBRAMgAyADKAMwAwgDIAMwAxgDCAMwAzgDGAMwA0ADOAMwAvgDQAMwAvAC+AMwAXQC8AMwAUwBdAMwAUwDMAFUAegDWAFsA2AB6AFsA2ABbADQA2gDYADQAdADaADQAcAB0ADQAZgBwADQAZgA0ANwAwgDAAN8AwgDfAOEA3ADCAOEA3ADhAOMA3ADjAOUAZgDcAOUAZgDlAOcAZgDnAOkAZgDpAOsAtgC0AGgA6wC2AGgAZgDrAGgAcQPtAO8A7wDxAPMAcQPvAPMAcQPzAPYAMgFxA/YANAA3AAIBAgEwAjQAmAECATcANwA5AJgBAAE9AEAAQAAzAgABQABCAAMBAwEzAkAALgEDAUIAQgBEAC4BPwIuAUQARABGAD8CQgI/AkYARgBIAEICRQJCAkgASABKAEUCKwFFAkoASgDcACsBYQB+AHgAYQB4AHYAYwBhAHYAYwB2ALIAYwCyAHIAYwByAG4ANgFjAG4ATAA2AW4ATABuAGwATABsAGoAngB8AKQAagCeAKQAagCkAKYATABqAKYATACmAKgATACoALAATACwAK4ATACuAKwAqgCUAJIArACqAJIATACsAJIA0QIvAQQBBAEYANECMQG6AwYBBgEPADEBugMqAQcBBwEGAboDKgEmARkBGQEHASoBFwEKARABEAEMARcBHgARABMAEwAFATABHgATADABHgAwAcEDFAEeAMEDGAENAcMDwwPQAhgBJwAcAR0BHQEoACcAIQEfAR0BHQEcASEBGQEaAR8BHwEhARkBGQEiAQcBIQEcASUBJQEkASEBCwAlARwBHAEnAAsAIwEGAQcBBwEiASMBIwEiASQBJAElASMBDwAGASMBIwEOAA8ADgAjASUBJQELAA4AGQEmATIBGQEyAfYAGgEZAfYAKQE5AfgA+AD6APwAKQH4APwAKQH8AP4AKQH+ACcBFAHBAzEBMQEPABMBHAARARUBFQEaAB0ADwElADkBDwE5ASkBDwEpAcIDDwHCAwsBIAEbASYAHgEgASYAKQAeASYArwCxAOYA5gDkAK8AsQCpAOgA6ADmALEAqQCnAOoA6gDoAKkApwClAOwA7ADqAKcApQB9ALcAtwDsAKUAfQCjAL8AvwC3AH0AowChANEA0QC/AKMAoQCbAM8AzwDRAKEAmwCZAMcAxwDPAJsAmQCXAMQAxADHAJkAlwCVAMEAwQDEAJcAlQCrAOAA4ADBAJUAqwCtAOIA4gDgAKsArQCvAOQA5ADiAK0A2wB1AHMAcwCzANsAdQBxAG8AbwBzAHUAcQBnAG0AbQBvAHEAZwBpAGsAawBtAGcAaQC1AJ8AnwBrAGkAtQC5AJ0AnQCfALUAuQC6AIsAiwCdALkAugC9AIkAiQCLALoAvQDTAIMAgwCJAL0A0wDVAIEAgQCDANMA1QDXAH8AfwCBANUA1wB7AHkAeQB/ANcAewDZAHcAdwB5AHsA2QDbALMAswB3ANkAXgBgAGIAYgBcAF4AUABSAMMAwwCTAFAAUgBQAJEAkQDJAFIAyQCRAI8AjwDLAMkAywCPAI0AjQDNAMsAzQCNAIcAhwBWAM0AMAIrAdwA3AA0ADACPgABATUBNQE3AT4AMwFjADYBNgE0ATMBRwBFAEMAPwA4AU4AQQA/AE4AQwBBAE4ARwBDAE4ASQBHAE4ASwBJAE4A3gBLAE4A9QD0APkA+QA7AfUA9ADyAPsA+wD5APQA8gDwAP0A/QD7APIA8ADuAP8A/wD9APAAcgMoAf8A/wDuAHIDJgAbAfcA9wA6ASYAGQEhASQBGQEkASIBMwE8AUQBRAFjADMBQgFAAT4BQgE+AUcBQgFHAUUBiQJCAUUBPQGJAkUBiAIsATMAMwBDAYgCLwAtAEgBSAE/AS8AMQAvAD8BPwFBATEAMwAxAEEBQQFDATMALQA8AEYBRgFIAS0AOAA2AGUAOABlAEYBOABGATwAOgA4ADwA9QOhAqMC9QOjAvMDTgFQAQcATgEHAAUATAFOAQUATAEFAAMASgEBAJ0CSgGdAvEDWwFjAWEBYQFeAVsBZAFpAWcBZwFlAWQBbAFrAWkBaQFkAWwBcAFvAWsBawFsAXABdQFzAXEBcQF3AXUBdwFxAXkBeQF7AXcBewF5AX8BfwF9AXsBLASEAXYBdgF4AXwBLAR2AXwBKwQsBHwBfgErBHwBggGGAWYBZgFoAWoBZgFqAW4BggFmAW4BYAFmAYYBhgFdAWABhQGIAVkBWQFcAYUBZQFnAV8BXwFiAWUBlAGTAS0BlAEtAZEBlAGRAY8BiwGUAY8BiwGPAY0BlgGYAZMBkwGUAZYBnQGaAaEBoQGfAZ0BqAGmAaQBpAGqAagBqgGkAawBrAGuAaoBsgGwAa4BrgGsAbIBtwG0AbsBuwG5AbcBvQHfAd0B3QHbAacBvQHdAacBpwGpAa0BrQGvAbgBpwGtAbgBuAHZAdcBuAHXAdUBpwG4AdUBpwHVAdMBpwHTAdEBzQHLAckBzQHJAccBzQHHAcUBzwHNAcUB0QHPAcUBpwHRAcUBvQGnAcUBvQHFAcMBvQHDAcEBvQHBAb8BvQG/AZwBowGlAQMCAwIBAv8B/wH9AZ4BAwL/AZ4BngH7AfkBngH5AfcBAwKeAfcBAwL3AfUBAwL1AfMBAwLzAfEB7wHtAesB7wHrAekB7wHpAecB8QHvAecBAwLxAecB4QG2AbEB4wHhAbEB5QHjAbEB5wHlAbEBAwLnAbEBowEDArEBowGxAasBHwLtAe8BHwLvAR0CBQIfAh0CBQIdAhsCBQIbAhkCBQIZAhcCEQL7AZ4BEwIRAp4BEwKeAaABFQITAqABFwIVAqABBQIXAqABBQKgAbMBtgHhAQ8CtgEPAg0CswG2AQ0CswENAgsCswELAgkCswEJAgcCBQKzAQcCKgIoAiYCJgIkAiICKgImAiICLAIqAiICIQIsAiICswEwAgIBAgExArMBmAGWATECMQICAZgBAAEzAjcCNwI0AgABNwIzAgMBAwE5AjcCLgE7AjkCOQIDAS4BPwI9AjsCOwIuAT8CQgJAAj0CPQI/AkICRQJDAkACQAJCAkUCKwGgAUMCQwJFAisBnAG/AWMCnAFjAmECmQGcAWECmQFhAl8CmQFfAl0CmQFdAlsCmQFbAlkCVwLLAc0BVwLNAVUCWQJXAlUCmQFZAlUCmQFVAlMCmQFTAlECSQLZAbgBSwJJArgBSwK4AboBTQJLAroBTwJNAroBUQJPAroBUQK6AUYCmQFRAkYCKgR9AX8BfwEHBSoECwVwAWUCZQIKBQsFCgVlAmcCZwJmAgoFZgJnAmgCaAIOBWYCgwFqAooBigGHAYMBCAWAAXoBegFyAXQBCAV6AXQBbAIIBXQBbwFsAnQBhAEsBBMFEwVrAoQBZQFiAW4CbgJtAmUBcAJtAm4CbgJxAnACaAJwAnECcQJzAmgCaAJnAnUCcAJ3AnYCdgJtAnACZAFlAW0CbQJ2AmQBeAJ1AmcCZwJlAngCeAJ2AncCdwJ1AngCcAFsAXgCeAJlAnABbAFkAXYCdgJ4AmwBIQIOBWgCLAIhAmgCcwIsAmgCIAUhBYMCIAWDAoECgQJ/AnwCIAWBAnwCIAV8AnkCbwFwAQsFCwVsAm8BcwF1AYEBgQFtAXMBiQESBSAFiQEgBXkCiQF5AloBiQFpAhIFWwF0AnICWwFyAm8CYwFbAW8CYAIWAhgCGAJeAmACXgIYAhoCGgJcAl4CXAIaAhwCHAJaAlwCWgIcAh4CHgJYAloCWAIeAvAB8AHMAVgCzAHwAfIB8gHKAcwBygHyAfQB9AHIAcoByAH0AfYB9gHGAcgBxgH2AfgB+AHEAcYBxAH4AfoB+gHCAcQBwgH6AfwB/AHAAcIBwAH8ARICEgJkAsABZAISAhQCFAJiAmQCYgIUAhYCFgJgAmICDAJOAlACUAIKAgwCCgJQAlICUgIIAgoCCAJSAlQCVAIGAggCBgJUAlYCVgIgAgYCIAJWAs4BzgHuASAC7gHOAdAB0AHsAe4B7AHQAdIB0gHqAewB6gHSAdQB1AHoAeoB6AHUAdYB1gHmAegB5gHWAdgB2AHkAeYB5AHYAdoB2gHiAeQB4gHaAUoCSgIQAuIBEAJKAkwCTAIOAhACDgJMAk4CTgIMAg4CsgG3AbkBuQGwAbIBvgGdAZ8BnwH+Ab4B/gEAAuAB4AG+Af4BAAICAt4B3gHgAQACAgIEAtwB3AHeAQICBAKmAagBqAHcAQQCMAKzAaABoAErATACNQJHAjUBNQEBATUCMwE0AUYCRgK6ATMBmwFIAjYCmwE2AjgCmwE4AjoCOgI8Aj4CmwE6Aj4CmwE+AkECmwFBAkQCogGbAUQCLQJ6An0CfgIrAi4CKwJ+AoACgAIpAisCKQKAAoICggInAikCJwKCAoQChAIlAicCIwIlAoQChAIiBSMCWwF7Ai8CLwJ0AlsBaAJ3AnACaAJ1AncCMwG6AYUChQI8ATMBkAKNAosCkgKPAooChgKSAooChgKKAokCPQGGAokCiAKMApIBkgEsAYgCjgGRApMCkwKMAY4BkAGOApECkQKOAZABkgGMAo4CjgKQAZIBjAGTAocChwKVAYwBvAG1ATIChwK8ATIClQGHAjIClwGVATICUAGXAlgBUAFYAQcAmwJUAVYBmwJWAZkClQJSAVQBlQJUAZsCQwU5BfgDAAACAAQABAAGAFcBVwFVAVMB/gP8A/oD+gOiAqACoAKeApwCnAIAAAQABABXAVMB/gP6A6ACoAKcAgQABABTAVEBoAIEAFEB/gOgAlEBUQFDBfgDUQH4A/4DlgJPAU0BTQFLAUkBSQHwA/YD9gP0A/ID8gNBBT8FPwU9BToFOgWUApoCmgKYApYClgJNAUkBSQH2A/ID8gM/BToFOgWaApYClgJJAfID8gM6BZYClQI8BUQFlQJEBVIBpgKuAqwCrAKpAqYCrwK0ArICsgKwAq8CtwK2ArQCtAKvArcCuwK6ArYCtgK3ArsCwQK+ArwCvALCAsECwgK8AsQCxALGAsICxgLEAsoCygLIAsYC0ALPAsACwALDAscC0ALAAscC0gLQAscCyQLSAscCzQLUArECsQKzArUCsQK1ArkCzQKxArkCqwKxAtQC1AKoAqsC0wLWAqQCpAKnAtMCsAKyAqoCqgKtArAC5ALjAuIC5ALiAt8C5ALfAt0C2QLkAt0C2QLdAtsC5gLoAuMC4wLkAuYC7QLqAvEC8QLvAu0C+AL2AvQC9AL6AvgC+gL0AvwC/AL+AvoCAgMAA/4C/gL8AgIDBwMEAwsDCwMJAwcDDQMvAy0DLQMrA/cCDQMtA/cC9wL5Av0C/QL/AggD9wL9AggDCAMpAycDCAMnAyUD9wIIAyUD9wIlAyMD9wIjAyEDHQMbAxkDHQMZAxgDHQMYAxUDHwMdAxUDIQMfAxUD9wIhAxUDDQP3AhUDDQMVAxMDDQMTAxEDDQMRAw8DDQMPA+wC8wL1AlMDUwNRA08DTwNNA+4CUwNPA+4C7gJLA0kD7gJJA0cDUwPuAkcDUwNHA0UDUwNFA0MDUwNDA0EDPwM9AzsDPwM7AzkDPwM5AzcDQQM/AzcDUwNBAzcDMQMGAwEDMwMxAwEDNQMzAwEDNwM1AwEDUwM3AwED8wJTAwED8wIBA/sCbwM9Az8DbwM/A20DVQNvA20DVQNtA2sDVQNrA2kDVQNpA2cDYQNLA+4CYwNhA+4CYwPuAvACZQNjA/ACZwNlA/ACVQNnA/ACVQPwAgMDBgMxA18DBgNfA10DAwMGA10DAwNdA1sDAwNbA1kDAwNZA1cDVQMDA1cDeQN3A3UDdQNzA3EDeQN1A3EDewN5A3EDMgF7A3EDAwOAA38DfwOBAwMD6ALmAoEDgQN/A+gChAODA4kDiQOGA4QDiQODA4sDiwOMA4kDkAOOA4wDjAOLA5ADkwORA44DjgOQA5MDlgOUA5EDkQOTA5YDmQOXA5QDlAOWA5kDmgPwApcDlwOZA5oD7AIPA7gD7AK4A7YD6QLsArYD6QK2A7QD6QK0A7ID6QKyA7AD6QKwA64DrAMbAx0DrAMdA6oDrgOsA6oD6QKuA6oD6QKqA6gD6QKoA6YDngMpAwgDoAOeAwgDoAMIAwoDogOgAwoDpAOiAwoDpgOkAwoDpgMKA5sD6QKmA5sD0QLIAsoCygIvAdECMQG7ArsDuwO6AzEBugO7A7wDvAMqAboDKgG8A70DvQMmASoBzgK/A9gC2ALVAs4CMAHLAsUCxQK9Ar8CMAHFAr8CwQMwAb8CugLBA78CzwLQAsMDwwPAA88CsAKtAsUDxQPEA7ACxwPEA8UDxQPIA8cDvQPHA8gDyAPKA70DvQO8A8wDxwPOA80DzQPEA8cDrwKwAsQDxAPNA68CzwPMA7wDvAO7A88DzwPNA84DzgPMA88DuwK3As8DzwO7A7sCtwKvAs0DzQPPA7cCMgEmAb0DewMyAb0DygN7A70DKQEnAdoDKQHaA9gD2APWA9MDKQHYA9MDKQHTA9ADugK7AjEBMQHBA7oCvgLBAswCzAK4Ar4C1wLCAykB1wIpAdAD1wLQA6UC1wK+A8IDpgLLA8kDpgLJA8YDrgKmAsYDtQNmA2gDaAOzA7UDswNoA2oDagOxA7MDsQNqA2wDbAOvA7EDrwNsA24DbgOtA68DrQNuA0ADQAMcA60DHANAA0IDQgMaAxwDGgNCA0QDRAMXAxoDFwNEA0YDRgMWAxcDFgNGA0gDSAMUAxYDFANIA0oDSgMSAxQDEgNKA0wDTAMQAxIDEANMA2IDYgO5AxADuQNiA2QDZAO3A7kDtwNkA2YDZgO1A7cDXAOjA6UDpQNaA1wDWgOlA6cDpwNYA1oDWAOnA6kDqQNWA1gDVgOpA6sDqwNwA1YDcAOrAx4DHgM+A3ADPgMeAyADIAM8Az4DPAMgAyIDIgM6AzwDOgMiAyQDJAM4AzoDOAMkAyYDJgM2AzgDNgMmAygDKAM0AzYDNAMoAyoDKgMyAzQDMgMqA58DnwNgAzIDYAOfA6EDoQNeA2ADXgOhA6MDowNcA14DAgMHAwkDCQMAAwIDDgPtAu8C7wJOAw4DTgNQAzADMAMOA04DUANSAy4DLgMwA1ADUgNUAywDLAMuA1IDVAP2AvgC+AIsA1QDgAMDA/AC8AKaA4ADhwOcA90D3QOFA4cD3gPcA5sDmwMKA94D6wKdA4gD6wKIA4oD6wKKA40DjQOPA5ID6wKNA5ID6wKSA5UD6wKVA5gD8gLrApgDfgPSA9UD1AN6A3wDegPUA9cD1wN4A3oDeAPXA9kD2QN2A3gDdgPZA9sD2wN0A3YDcgN0A9sD2wMoAXIDpgLRA30DfQPLA6YCvQPOA8cDvQPMA84D3gMKA+ED4QPfA94D7APpA+cD7gPrA+YD4gPuA+YD4gPmA+UD4APiA+UD5APoA+AC4ALhAuQD3ALtA+8D7wPaAtwC3gLqA+0D7QPcAt4C4ALoA+oD6gPeAuAC2gLvA+MD4wPlAtoCDAMFA4ID4wMMA4ID5QLjA4ID5wLlAoIDQgXzA6MCQgWjAvsD9wOfAqEC9wOhAvUD8QOdAp8C8QOfAvcDOwU+Bf8DOwX/A/kDAgQKBAcEBwQEBAIECwQQBA8EDwQNBAsEEQQLBA0EDQQTBBEEFAQRBBMEEwQXBBQEHQQbBBoEGgQgBB0EGwQkBCIEIgQaBBsEJAQoBCYEJgQiBCQEJQQcBB4EHgQxBCwEJQQeBCwEJQQsBCsEKQQlBCsEEgQMBA4EFgQSBA4ELgQWBA4ELgQOBDMEBgQJBDMEMwQOBAYEMgQIBAAEAAQ1BDIEEAQDBAUEBQQPBBAEOARABD4E4gLjAjoEPATiAjoEPgQ8BDoEOAQ+BDoEQgQ6BOMC4wLoAkIETQRLBEgESARFBE0EUwRRBE8ETwRVBFMEUQRZBFcEVwRPBFEEWwRXBFkEWQRdBFsEZwRlBGIEYgRfBGcEaARMBIoEaASKBIgEaASIBIYEaASGBIQEgAR+BHwEggSABHwEhASCBHwEhAR8BHoEhAR6BHgEcgRwBGQEdARyBGQEZARcBFgEWARQBFIEZARYBFIEdARkBFIEdgR0BFIEeAR2BFIEhAR4BFIEaASEBFIEUgRuBGwEaARSBGwEaARsBGoETgRWBFoEWgRmBK4EWgSuBKwEWgSsBKoEWgSqBKgEpASiBKAEpgSkBKAEqASmBKAEqASgBJ4ElgSUBEoEmASWBEoESgSSBJAEkASOBIwESgSQBIwEmARKBIwEmgSYBIwEnASaBIwEngScBIwEqASeBIwEWgSoBIwETgRaBIwETgSMBFQEwgSuBGYExATCBGYExARmBF4ExgTEBF4EyATGBF4EygTIBF4EsATKBF4EsAReBEcESgSUBMAESgTABL4ERwRKBL4ERwS+BLwERwS8BLoEsARHBLoEsAS6BLgEsAS4BLYEsAS2BLQEoASiBLIEtASgBLIEsAS0BLIEIgLVBNME0wTRBM8EIgLTBM8EIgLPBM0EIQIiAs0EXgTXBH8DfwOAA14E6AJ/A9cE1wRCBOgChAPbBNkE2QSDA4QD2QTeBIsDiwODA9kEkAOLA94E3gTgBJADkwOQA+AE4ATiBJMDlgOTA+IE4gTkBJYDmQOWA+QE5ATmBJkDmgOZA+YE5gRHBJoDZARwBAIFZAQCBQAFYQRkBAAFYQQABf4EYQT+BPwEYQT8BPoEBAVhBPoERAQEBfoERAT6BPgERAT4BPYEfAR+BPQE9gR8BPQE9gT0BPIERAT2BPIERATyBPAERATwBO4ERATuBOwERATsBOoE6ASKBEwE6gToBEwERATqBEwEKgQHBSYEJgQoBCoECwUKBQkFCQUUBAsFCgVmAgwFDAUJBQoFZgIOBQ0FDQUMBWYCMAQ0BDcENwQQBTAEIQQZBCMEIwQnBAgFIQQjBAgFIQQIBWwCGAQhBGwCMQQRBRMFEwUsBDEEEAQWBRQFFAUDBBAEGQUXBRQFFAUWBRkFDQUaBRcFFwUZBQ0FDQUcBQwFGQUWBR4FHgUdBRkFCwQeBRYFFgUQBAsEHwUJBQwFDAUcBR8FHwUcBR0FHQUeBR8FFAQJBR8FHwURBBQEEQQfBR4FHgULBBEEDQUOBSECDQUhAs0EGgUNBc0EIAUrBSkFKQUnBSUFIAUpBSUFIAUlBSMFIAUjBSEFGARsAgsFCwUUBBcEHwQVBC0ELwQdBCAENgQBBCsFNgQrBSAFNgQgBRIFNgQSBQ8FGAUbBQIEFQUYBQIEBAQVBQIE7QTvBLsEuwS9BO0E7wTxBLkEuQS7BO8E8QTzBLcEtwS5BPEE8wT1BLUEtQS3BPME9QR/BKEEoQS1BPUEfwSBBJ8EnwShBH8EgQSDBJ0EnQSfBIEEgwSFBJsEmwSdBIMEhQSHBJkEmQSbBIUEhwSJBJcElwSZBIcEiQSLBJUElQSXBIkEiwTpBMEEwQSVBIsE6QTrBL8EvwTBBOkE6wTtBL0EvQS/BOsExwTJBP0E/QT/BMcEyQTLBPsE+wT9BMkEywSxBPkE+QT7BMsEsQSzBPcE9wT5BLEEswSjBH0EfQT3BLMEowSlBHsEewR9BKMEpQSnBHkEeQR7BKUEpwSpBHcEdwR5BKcEqQSrBHUEdQR3BKkEqwStBHMEcwR1BKsErQSvBHEEcQRzBK0ErwTDBAMFAwVxBK8EwwTFBAEFAQUDBcMExQTHBP8E/wQBBcUEWwRdBGUEZQRnBFsEaQSTBEsESwRNBGkEkwRpBGsEawSRBJMEkQRrBG0EbQSPBJEEjwRtBG8EbwSNBI8EjQRvBFMEUwRVBI0EgAOaA0cERwReBIAD3ASFA90D3QMFBdwE3gNhBAQFBAXcA94D4wThBN8E3QQGBUYE2gTdBEYE3wTaBEYE4wTfBEYE5QTjBEYE5wTlBEYESQTnBEYEzATQBCoFKgUsBcwE0ATSBCgFKAUqBdAE0gTUBCYFJgUoBdIE1ATWBCQFJAUmBdQEIwIiBSQFJAXWBCMCAgQbBc4EzgQtBQIEDQUZBR0FDQUdBRwF3gPfAy4FLgVhBN4DNwU1BTMFNwUzBTEFNwUxBS8F5QM3BS8F4APlAy8F5APhAj0EPQQ4BeQDQQQ5BDIFMgU0BUEEPwRBBDQFNAU2BT8EPQQ/BDYFNgU4BT0EOQQ7BDAFMAUyBTkE2ARgBGME2ARjBDAF2AQwBTsEQwTYBDsEmQJWAVgBmQJYAZcCQAVCBfsDQAX7A/0DPgVABf0DPgX9A/8DSgFMAQMASgEDAAEAAQIACQMAAAEJAwABAgMAAQEBCYCAAaVWCBgnCAg3CBAfGCDMgBAQMDggIAcYGB9NAW0BtLQHGCAoGBcQEAcIGzAYEAsQCB9AQAgTgGAoODAwLxgQEBA3CBOItAMIMDgLEA+8tG0BZQEPEAgYGFA4DyAYGBgvCBAPEAgXCBsICBchAhkCBxgLCBAQICcoKAgQJygICAgfCANAQGfMrLsYb0BAAwgPEBMQAwgrCCggEA8QRwgDCE+0rAhrCDsYAyBALwg7CBgIbwg3CBh3CAsIfwhnCAgzEAMILwjzEEAQ/28Q///XIIMIEAi7GCgvCLMQCI8gGBcIICAgRwhfCD8IswiHCBcICAcoIP8vCHsQIE8IWyhAAwj/uwifIBDvCP9zCAj//28Y//9jCP8zCAj//48ICP//Cwj//y8ICG8I////oxgQ//9fCAMIGP//ZyA4FwgI/wj///sICK8I/////xMIvxD//ysI/+9IOK8QGAMQ/6sIrwg7CBCPGBj/txAI/0cIMwi7CAggEP////8fEBAHCAj/////////7xAQ/////9sI/////////0cwQO8I//+vCP///58I8wgI////////TxAI//+HEAjPEDsI//9vCI8IEP//ZwgI///HCDsI//9rCBAbCP//RwgY/zMI///3EP9DEP///3useP//axj/Vwj/bxj/YxCjGGsIQxAYCP//8wj/WwhzCP//dyAI/////////z8ICAgI/////y8Im1hAMDj/////////Kwj/////+xgI/////9MQBwj//////////////2MI/////////////////////////////xMQ////ywj/////////////////////////////1yggEAinCBcIpxj/xwizCP9nCGsI/wsQBwj/BxAQAwj/////0wgQ2Qx/nPdxNYEaIyJZagh9mZ1k7nNL2udg6Mv7MlvVLUukkrrgM+gNAigG1bbjSHtQ10ywOu3ZhHicV6OXQDMVjKhucADbT6tz63899M+pxDjO/lNWixrAQPydRNtsr8PfvT/1n6kAI67epgvEtYDDROBER3aMgCs8OZONmVHaWK+KfG6b10rHIvSdwweWRwlBtR02EJEj1P+qVc+5J2mNiPfZ8ghESOsFc/1u1RAL+1o4Z3/D5F1r7xquIRARtO8EMNex/3xFMErG7aInM08q4Ib7Gp3nQpxHkCpOITSIAHD8Kv4c85mRb7yPqcx/l2XegBMhkOD87i0ngRXBKSbXQD8EQf57zr77RQrXWdEx1TsryA13ugVmdpASxfGCC6VknwiFFEuuw/J58ZXPnp45WF+CHUxdZwHq02USjuYo8at83gWYVG+OxvKu8DxflSyPTVueHdHYUDGnjWVWKEB1pln/PhUGM8kpQWATiGkb6d5deby6nGrG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CAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACwAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACA8v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09///PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAmNm09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAmNm09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACAAAAAAAAAAAAAAACA9v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi0CQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACwAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACA8v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAmNm08f//PgAAAAAAmNm08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAmNm08v//PgAAAAAAmNm09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAmNm08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi0AQADAAUABwALAA0ADgAPABAAEgAUABYAGAAaAB0AIAAnACgAKwAtAC8AMQAzADQANgA3ADgAOQA7ADwAQABBAEIAQwBEAEYARwBIAEkASgBLAFAAUgBUAFYAWABaAF4AYABjAGUAZwBpAGsAbQBvAHEAcwB1AHcAeQB7AH0AfwCBAIMAhQCHAIkAiwCNAI8AkQCVAJcAmQCbAJ0AnwChAKMApQCnAKkAqwCtAK8AsQCzALUAtwC5ALoAuwC9AL8AwQDEAMcAyQDLAM0AzwDRANMA1QDXANkA2wDcAN4A4ADiAOQA5gDoAOoA7ADuAPAA8gD0APUA+QD7AP0A/wACAQMBBAEGAQcBCgEMARABEwEXARkBGgEcAR0BHwEhASIBIwEkASUBJgEqASsBLgExATMBOwE8AT8BQQFDAUQBRgFIAUoBTAFOAVABUgFUAVYBWAFiAWQBZQFnAWkBawFsAW8BcAFxAXMBdQF3AXkBewF9AX8BgwGHAYoBjAGOAZABkgGTAZQBlgGYAaABpAGmAagBqgGsAa4BsAGyAbMBugG+AcABwgHEAcYByAHKAcwBzgHQAdIB1AHWAdgB2gHcAd4B4AHiAeQB5gHoAeoB7AHuAfAB8gH0AfYB+AH6AfwB/gEAAgICBAIGAggCCgIMAg4CEAISAhQCFgIYAhoCHAIeAiACJQInAikCKwItAi4CMAIxAjMCNwI5AjsCPAI9Aj8CQAJCAkMCRQJKAkwCTgJQAlICVAJWAlgCWgJcAl4CYAJiAmQCZQJmAmcCaAJqAm0CbgJwAnECcwJ1AnYCdwJ4AnoCfQJ+AoACggKEAoUCjAKOApECkwKVApcCmQKbAp0CnwKhAq0CrwKwArICtAK2ArcCugK7ArwCvgLBAsICxALGAsgCygLOAtUC2ALaAtwC3gLgAuMC5ALlAuYC5wLoAvAC8gL0AvYC+AL6AvwC/gIAAwIDAwMFAwoDDAMOAxADEgMUAxYDFwMaAxwDHgMgAyIDJAMmAygDKgMsAy4DMAMyAzQDNgM4AzoDPAM+A0ADQgNEA0YDSANKA0wDTgNQA1IDVANWA1gDWgNcA14DYANiA2QDZgNoA2oDbANuA3ADdAN2A3gDegN8A34DfwOAA4EDggODA4kDigOLA4wDjQOOA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgOfA6EDowOlA6cDqQOrA60DrwOxA7MDtQO3A7kDugO7A7wDvQO/A8QDxQPHA8gDygPMA80DzgPPA9ID1APVA9cD2QPbA94D3wPhA+MD6APqA+0D7wPxA/UD9wP5A/0D/wMDBAsEDQQPBBAEEQQTBBQEFwQaBBsEHQQgBCIEJAQmBCgEMAQ0BDcEOQQ6BD0EPwRBBEIERwRPBFEEUwRVBFcEWQRbBF0EXgRhBGkEawRtBG8EcQRzBHUEdwR5BHsEfQR/BIEEggSDBIUEhwSJBIsEjQSPBJEEkwSVBJcEmQSbBJ0EnwShBKMEpQSmBKcEqQSrBK0ErwSxBLMEtQS3BLkEuwS9BL8EwQTDBMUExwTJBMsEzATQBNIE1ATWBNcE2QTeBOAE4gTkBOYE6QTrBO0E7wTxBPME9QT3BPkE+wT9BP8E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EgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFAAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFAAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAA0yv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgEAAwAFAAcACwANAA4ADwAQABIAFAAWABgAGgAdACAAJwAoACsALQAvADEAMwA0ADcAOQA7AEAAQgBEAEYASABKAFAAUQBSAFQAVgBYAFoAXgBgAGMAZwBpAGsAbQBvAHEAcwB1AHcAeQB7AH0AfwCBAIMAhACFAIcAiQCLAI0AjwCRAJUAlwCZAJsAnQCfAKEAowClAKcAqQCrAK0ArwCxALMAtQC3ALkAugC7AL0AvwDBAMQAxwDJAMsAzQDPANEA0wDVANcA2QDbANwA4ADiAOQA5gDoAOoA7ADuAPAA8gD0APUA+QD7AP0A/wACAQMBBAEGAQcBCgEMARABEwEXARkBGgEcAR0BHwEhASIBIwEkASUBJgEqASsBLAEuATEBMwE7ATwBPgE/AUEBQgFDAUQBSAFKAUwBTgFQAVIBVAFWAVgBYgFkAWUBZwFpAWsBbAFvAXABcQFzAXUBdwF5AXsBfQF/AYMBhwGKAYwBjgGQAZIBkwGUAZYBmAGgAaQBpgGoAakBqgGsAa4BsAGyAbMBugG+AcABwgHEAcYByAHKAcwBzgHQAdIB1AHWAdcB2AHaAdwB3gHfAeAB4gHjAeQB5gHoAeoB7AHuAfAB8gH0AfYB+AH6AfwB/gEAAgECAgIEAgYCBwIIAgoCDAIOAhACEgIUAhYCGAIaAhwCHgIgAiUCJwIpAisCLQIuAjACMQIzAjcCOQI7Aj0CPwJAAkICQwJFAkkCSgJMAk4CUAJSAlQCVgJYAloCWwJcAl4CYAJiAmQCZQJmAmcCaAJqAm0CbgJwAnECcwJ1AnYCdwJ4AnoCfQJ+AoACggKEAoUCiAKMAo4CjwKRApMClQKXApkCmwKdAp8CoQKtAq8CsAKyArQCtgK3AroCuwK8Ar4CwQLCAsQCxgLIAsoCzgLVAtgC2gLcAt4C4ALjAuQC5gLoAvAC9AL2AvgC+QL6AvsC/AL+AgADAgMDAwoDDgMQAxIDFAMWAxcDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAy8DMAMyAzQDNgM4AzoDPAM+A0ADQgNEA0YDSANKA0wDTgNQA1EDUgNUA1YDWANaA1wDXgNgA2IDZANmA2gDagNsA24DcAN0A3YDeAN6A3wDfgN/A4ADgQODA4kDiwOMA44DkAORA5MDlAOWA5cDmQOaA54DnwOhA6MDpQOnA6kDqwOtA68DsQOzA7UDtwO5A7oDuwO8A70DvwPEA8UDxwPIA8oDzAPNA84DzwPSA9QD1QPXA9kD2wPeA98D4QPoA+oD6wPtA+8D8QP1A/cD+QP9A/8DAwQLBA0EDwQQBBEEEwQUBBcEGgQbBB0EIAQiBCQEJgQoBDAENAQ3BDkEOgQ9BD8EQQRCBEcETwRRBFMEVQRXBFkEWwRcBF0EXgRhBGkEawRtBG8EcQRzBHUEdwR5BHsEfQR/BIEEggSDBIUEhwSJBIsEjQSOBI8EkQSTBJUElwSZBJsEnQSfBKEEowSlBKYEpwSpBKsErQSvBLEEswS1BLcEuQS7BL0EvwTBBMMExQTHBMkEywTMBNAE0gTUBNYE1wTZBN4E4ATiBOQE5gTpBOsE7QTvBPEE8wT1BPcE+QT7BP0E/wQBBQMFCQUKBQsFDAUNBQ4FEAUUBRYFFwUZBRoFHAUdBR4FHwUkBSYFKAUqBSwFLgUyBTMFNAU2BTcFOAU7BT4FQAUAAIC0AAAAAAAAQC8AAKA3AAAAAAAAObcAoLq4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";class Cj extends Ie{constructor(A){super(),this._items=[],this._group=new Et,this._gap=0,this._size=new Ef(0,0,0),this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._gap=A||0,this.add(this._group)}get size(){return this._size}get items(){return this._items}addItem(A){this._items.push(A),this._group.add(A),this.updateLayout(),A.addEventListener("size-change",()=>{this.updateLayout()})}updateLayout(){const A=this._items.reduce((r,s,o)=>{const{width:a,length:l}=s.size;return r+a+(o<this._group.children.length-1?this._gap:0)},0);let e=0,t=0,i=-A/2;this._items.forEach(r=>{const s=r.size.width;r.position.x=i+s/2,i+=s+this._gap,e=r.size.length,t=r.size.height}),this.size.width=A,this.size.length=e,this.size.height=t,this._emitter.emit("size-change",this.size)}destroy(){this._items.forEach(A=>{A.destroy()}),this._items=[],this._emitter.removeAllListeners()}}const xj="data:model/gltf-binary;base64,Z2xURgIAAABQcQEA6CIAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6Iktocm9ub3MgZ2xURiBCbGVuZGVyIEkvTyB2NC4xLjYzIiwidmVyc2lvbiI6IjIuMCJ9LCJleHRlbnNpb25zVXNlZCI6WyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiIsIktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiLCJLSFJfbWF0ZXJpYWxzX2lvciJdLCJleHRlbnNpb25zUmVxdWlyZWQiOlsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iXSwic2NlbmUiOjAsInNjZW5lcyI6W3sibmFtZSI6IlNjZW5lIiwibm9kZXMiOlsxXX1dLCJub2RlcyI6W3siZXh0cmFzIjp7ImlzQ29udGFpbmVyIjp0cnVlfSwibmFtZSI6IkVtcHR5IiwidHJhbnNsYXRpb24iOlswLDAuMDg2Mjc4MTI1NjQzNzMwMTYsMF19LHsiY2hpbGRyZW4iOlswXSwibWVzaCI6MCwibmFtZSI6IlJCXzIifV0sIm1hdGVyaWFscyI6W3siZG91YmxlU2lkZWQiOnRydWUsImV4dGVuc2lvbnMiOnsiS0hSX21hdGVyaWFsc19zcGVjdWxhciI6eyJzcGVjdWxhckZhY3RvciI6MH0sIktIUl9tYXRlcmlhbHNfaW9yIjp7ImlvciI6MS40NTAwMDAwNDc2ODM3MTU4fX0sIm5hbWUiOiJQbGFzdGljXHU3NmFlXHU1ZTI2IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC4wMjAyOTE5NjU0NTQ4MTY4MTgsMC4wMjAyODc2NzAxOTUxMDI2OSwwLjAyMDI4NzA5Mjc3NTEwNjQzLDFdLCJtZXRhbGxpY0ZhY3RvciI6MC41LCJyb3VnaG5lc3NGYWN0b3IiOjAuNDYwMDAwMDA4MzQ0NjUwMjd9fSx7ImRvdWJsZVNpZGVkIjp0cnVlLCJleHRlbnNpb25zIjp7IktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiOnsic3BlY3VsYXJDb2xvckZhY3RvciI6WzIuMCwyLjAsMi4wXX0sIktIUl9tYXRlcmlhbHNfaW9yIjp7ImlvciI6MS40NTAwMDAwNDc2ODM3MTU4fX0sImV4dHJhcyI6eyJuYW1lIjoiXHU1OTE2XHU1OGYzIiwiY2hhbmdlQ29sb3IiOnRydWV9LCJuYW1lIjoiSXJvbjAxXHU2ZjA2XHU5NzYyXHU5NGEyX1x1NzY3ZCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7Im1ldGFsbGljRmFjdG9yIjowLjgyNTQ1NTAwOTkzNzI4NjQsInJvdWdobmVzc0ZhY3RvciI6MC40MDAwMDAwMDU5NjA0NjQ1fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyRmFjdG9yIjowfSwiS0hSX21hdGVyaWFsc19pb3IiOnsiaW9yIjoxLjQ1MDAwMDA0NzY4MzcxNTh9fSwibmFtZSI6IlBsYXN0aWNcdTllZDFcdTc4ZThcdTc4MDIiLCJwYnJNZXRhbGxpY1JvdWdobmVzcyI6eyJiYXNlQ29sb3JGYWN0b3IiOlswLjAyMDI5MTk2NTQ1NDgxNjgxOCwwLjAyMDI4NzY3MDE5NTEwMjY5LDAuMDIwMjg3MDkyNzc1MTA2NDMsMV0sIm1ldGFsbGljRmFjdG9yIjowLjUsInJvdWdobmVzc0ZhY3RvciI6MC4zODE4MTc5OTY1MDE5MjI2fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyQ29sb3JGYWN0b3IiOlsyLjAsMi4wLDIuMF19fSwibmFtZSI6IkFsdW1pbnVtIiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC43MjcwMzkwMzkxMzQ5NzkyLDAuNzI3MDM5MDM5MTM0OTc5MiwwLjcyNzAzOTAzOTEzNDk3OTIsMV0sInJvdWdobmVzc0ZhY3RvciI6MC40OTU2NDM1NTYxMTgwMTE1fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwibmFtZSI6Ik1hdGVyaWFsLjAwMSIsInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvckZhY3RvciI6WzAuNzU0ODAzNzE3MTM2MzgzMSwwLjc1NDgwMzcxNzEzNjM4MzEsMC43NTQ4MDM3MTcxMzYzODMxLDFdLCJtZXRhbGxpY0ZhY3RvciI6MC45ODkwOTA5MTk0OTQ2Mjg5LCJyb3VnaG5lc3NGYWN0b3IiOjAuMTUwMDAwMDA1OTYwNDY0NDh9fV0sIm1lc2hlcyI6W3siZXh0cmFzIjp7Im9yaWdpbl9nb29kc0xlbmd0aCI6MC42OTE5OTk5NzE4NjY2MDc3LCJvcmlnaW5fZ29vZHNXaWR0aCI6MC4zODQ5OTk5OTA0NjMyNTY4NCwidGFyZ2V0TmFtZXMiOlsiZ29vZHNXaWR0aCIsImdvb2RzTGVuZ3RoIl19LCJuYW1lIjoiTWVzaC4wMjkiLCJwcmltaXRpdmVzIjpbeyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjF9LCJleHRlbnNpb25zIjp7IktIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uIjp7ImJ1ZmZlclZpZXciOjAsImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX19fSwiaW5kaWNlcyI6MiwibWF0ZXJpYWwiOjAsIm1vZGUiOjQsInRhcmdldHMiOlt7IlBPU0lUSU9OIjozLCJOT1JNQUwiOjR9LHsiUE9TSVRJT04iOjUsIk5PUk1BTCI6Nn1dfSx7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjcsIk5PUk1BTCI6OH0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6NSwiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjo5LCJtYXRlcmlhbCI6MSwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjEwLCJOT1JNQUwiOjExfSx7IlBPU0lUSU9OIjoxMiwiTk9STUFMIjoxM31dfSx7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjE0LCJOT1JNQUwiOjE1fSwiZXh0ZW5zaW9ucyI6eyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiI6eyJidWZmZXJWaWV3IjoxMywiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjoxNiwibWF0ZXJpYWwiOjIsIm1vZGUiOjQsInRhcmdldHMiOlt7IlBPU0lUSU9OIjoxNywiTk9STUFMIjoxOH0seyJQT1NJVElPTiI6MTksIk5PUk1BTCI6MjB9XX0seyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjoyMSwiTk9STUFMIjoyMn0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6MjEsImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX19fSwiaW5kaWNlcyI6MjMsIm1hdGVyaWFsIjozLCJtb2RlIjo0LCJ0YXJnZXRzIjpbeyJQT1NJVElPTiI6MjQsIk5PUk1BTCI6MjV9LHsiUE9TSVRJT04iOjI2LCJOT1JNQUwiOjI3fV19LHsiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MjgsIk5PUk1BTCI6Mjl9LCJleHRlbnNpb25zIjp7IktIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uIjp7ImJ1ZmZlclZpZXciOjI4LCJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjF9fX0sImluZGljZXMiOjMwLCJtYXRlcmlhbCI6NCwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjMxLCJOT1JNQUwiOjMyfSx7IlBPU0lUSU9OIjozMywiTk9STUFMIjozNH1dfV0sIndlaWdodHMiOlstMC4xOTUyMDU2ODg0NzY1NjI1LDBdfV0sImFjY2Vzc29ycyI6W3siY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwibWF4IjpbMC4xOTAwMDAwNTcyMjA0NTg5OCwwLjA4NjAwMDAzMjcyMjk0OTk4LDAuMzMwNDg5MDM5NDIxMDgxNTRdLCJtaW4iOlstMC4xOTAwMDAwNTcyMjA0NTg5OCwwLjAyNDAwMDA0MTE4NjgwOTU0LC0wLjMzMDU2OTA4ODQ1OTAxNDldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjoxMjAsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjEsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTksIm1heCI6WzAuNSwwLDBdLCJtaW4iOlstMC41LDAsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjoyLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTE5LCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6MywiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwibWF4IjpbMCwwLDAuNV0sIm1pbiI6WzAsMCwtMC41XSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTksInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTE3OCwibWF4IjpbMC4yMjI0OTk5ODE1MjI1NjAxMiwwLjEzNzMwMDEzMzcwNTEzOTE2LDAuMzQ4OTE5OTU3ODc2MjA1NDRdLCJtaW4iOlstMC4yMjI0OTc3NzYxNTA3MDM0MywwLjAwNTAwMDE5NjM5NzMwNDUzNSwtMC4zNDg5OTk5NzcxMTE4MTY0XSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjI4MzIsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJtYXgiOlswLjUsMCwwXSwibWluIjpbLTAuNSwwLDBdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExNzgsInNwYXJzZSI6eyJjb3VudCI6NTEyLCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjcsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6OH19LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExNzgsIm1heCI6WzAsMCwwLjVdLCJtaW4iOlstNy40NTA1ODA1OTY5MjM4MjhlLTA4LDAsLTAuNV0sInNwYXJzZSI6eyJjb3VudCI6ODE2LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjksImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MTB9fSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJzcGFyc2UiOnsiY291bnQiOjUxNywiaW5kaWNlcyI6eyJidWZmZXJWaWV3IjoxMSwiY29tcG9uZW50VHlwZSI6NTEyM30sInZhbHVlcyI6eyJidWZmZXJWaWV3IjoxMn19LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE4MCwibWF4IjpbMC4yMjk1MDAyMTkyMjU4ODM0OCwwLjEwNTMwMDAyNDE1MTgwMjA2LDAuMzIzNzk5NzI5MzQ3MjI5XSwibWluIjpbLTAuMjI5NDk3OTI0NDQ3MDU5NjMsMC4wOTQ1MDAwNDk5NDg2OTIzMiwtMC4zMzM3OTk4MzkwMTk3NzU0XSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6Mjg4LCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxNCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE4MCwibWF4IjpbMC41LDAsMF0sIm1pbiI6Wy0wLjUsMCwwXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsInNwYXJzZSI6eyJjb3VudCI6NTQsImluZGljZXMiOnsiYnVmZmVyVmlldyI6MTUsImNvbXBvbmVudFR5cGUiOjUxMjF9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MTZ9fSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsIm1heCI6WzAsMCwwLjVdLCJtaW4iOlswLDAsLTAuNV0sInNwYXJzZSI6eyJjb3VudCI6MTIwLCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjE3LCJjb21wb25lbnRUeXBlIjo1MTIxfSwidmFsdWVzIjp7ImJ1ZmZlclZpZXciOjE4fX0sInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTgwLCJzcGFyc2UiOnsiY291bnQiOjU0LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjE5LCJjb21wb25lbnRUeXBlIjo1MTIxfSwidmFsdWVzIjp7ImJ1ZmZlclZpZXciOjIwfX0sInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MzI0LCJtYXgiOlswLjIyNTAwMDA2ODU0NTM0MTUsMC4wODUwMDAwOTAzMDEwMzY4MywwLjMyOTU0NDE4NjU5MjEwMjA1XSwibWluIjpbLTAuMjI1MDAwMDY4NTQ1MzQxNSwwLjAyNTAwMDA2NTU2NTEwOTI1MywtMC4zMjk1ODQyNDA5MTMzOTExXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjozMjQsInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6NzU2LCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoyMiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjMyNCwibWF4IjpbMC41LDAsMF0sIm1pbiI6Wy0wLjUsMCwwXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjozMjQsInNwYXJzZSI6eyJjb3VudCI6OTcsImluZGljZXMiOnsiYnVmZmVyVmlldyI6MjMsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MjR9fSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjI1LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MzI0LCJtYXgiOlswLDAsMC41XSwibWluIjpbMCwwLC0wLjVdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjMyNCwic3BhcnNlIjp7ImNvdW50Ijo5NSwiaW5kaWNlcyI6eyJidWZmZXJWaWV3IjoyNiwiY29tcG9uZW50VHlwZSI6NTEyM30sInZhbHVlcyI6eyJidWZmZXJWaWV3IjoyN319LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwibWF4IjpbMC4yMDE1MDAxMDI4Nzc2MTY4OCwwLjA4NTAwMDA1MzA0ODEzMzg1LDAuMzI5NTA1MDI2MzQwNDg0Nl0sIm1pbiI6Wy0wLjIwMTUwMDAyODM3MTgxMDksMC4wMjUwMDAwMjgzMTIyMDYyNywtMC4zMjk1NDc2NDM2NjE0OTldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjoyMTYsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjI5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjE2LCJtYXgiOlswLjUsMCwwXSwibWluIjpbLTAuNSwwLDBdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6MzAsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyMTYsInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozMSwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwibWF4IjpbMCwwLDAuNV0sIm1pbiI6WzAsMCwtMC41XSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjMyLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjE2LCJ0eXBlIjoiVkVDMyJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6NTIwLCJieXRlT2Zmc2V0IjowfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTQyOCwiYnl0ZU9mZnNldCI6NTIwLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTQyOCwiYnl0ZU9mZnNldCI6MTk0OCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjE0MjgsImJ5dGVPZmZzZXQiOjMzNzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNDI4LCJieXRlT2Zmc2V0Ijo0ODA0LCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6ODk0MywiYnl0ZU9mZnNldCI6NjIzMn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjE0MTM2LCJieXRlT2Zmc2V0IjoxNTE3NiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjEwMjQsImJ5dGVPZmZzZXQiOjI5MzEyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6NjE0NCwiYnl0ZU9mZnNldCI6MzAzMzZ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNjMyLCJieXRlT2Zmc2V0IjozNjQ4MH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjk3OTIsImJ5dGVPZmZzZXQiOjM4MTEyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTAzNCwiYnl0ZU9mZnNldCI6NDc5MDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo2MjA0LCJieXRlT2Zmc2V0Ijo0ODk0MH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjg4NCwiYnl0ZU9mZnNldCI6NTUxNDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyMTYwLCJieXRlT2Zmc2V0Ijo1NjAyOCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU0LCJieXRlT2Zmc2V0Ijo1ODE4OH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjY0OCwiYnl0ZU9mZnNldCI6NTgyNDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxMjAsImJ5dGVPZmZzZXQiOjU4ODkyfSx7ImJ1ZmZlciI6MCwi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AAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAA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AAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAA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KgAqAHEASQA7ADIAQABAACYAOwA9ADsAJgAmACgAPQAoACoAIwAjAD0AKAAEASgCLAAsADcABAE5ADcALAAsAEQAOQBEAEIAMAAwADkARAAxADMAPAA8AD4AJAAxADwAJAAkAEoANQAxACQANQAvADEANQAyADAAQgBCAEAAMgA/AEEAQwA/AEMAKwA/ACsAJwI/ACcCRwA/AEcAcgA/AHIAKQA/ACkAJwA/ACcAJQBZAEYATQBNAPQAWQBUAPoA/AD8ALUAVACmAE8AUgCmAFIAswCmALMAmgDvAAIBAAEAAVYA7wBbAGEAXgBeAO4AWwBlAGAAYwBjAGoAZQBoAG0A/gBoAP4AZgBrAGgAZgBnAGkAYgBnAGIAXABnAFwA9wBQAKcAZwBnAPcAUAB4APMAewB7AHYAeAB0AHkAfAB0AHwAowB0AKMAfwCIAJYAgwCDAIUAiACGAN8AiwCLAIkAhgDgAI8AkgCSAIwA4ACOAJQA7QDtAJEAjgCWAJcA0QDRAIMAlgChANUA0wDTAJkAoQCcAIEApQClAKgAnACeALoArgCuAKoAngCwAKwAuAC4ALIAsAAgALEAtAAgALQA+wAaACAA+wASABAAywASAMsAxQA0ABIAxQAuADQAxQCpAK0ArwCvAIIA0gCpAK8A0gCpANIA1ABJAHEA6gDqAOEASQABAQAB5wDnAAACAQH/AAEBAAIAAnAA/wDmADYASwBLAOIA5gDkABMBBQAFAAIA5ACUAM4ABgAGAO0AlACcAJ8AqwCrANYAogCrAKIAgQCcAKsAgQDlAOMAAAAAAM8AkwDlAAAAkwDbABIANAAXANsANAAXADQA5QAdABcA5QDlAJMAjQDlAI0A3gAdAOUA3gAdAN4AhACvAB0AhACvAIQAggB6APIA8QDxAH4AegAWARUB8QDxAPIAFgHwABQBBgIGAmwA8ACgAJgAlQCAAKAAlQB1AIAAlQB1AJUAhwB3AHUAhwB3AIcAigBRAPgA+QD5AFMAUQBdAPUA+QD5APgAXQD6APYATgBOAPwA+gD7AEwAFAAUABoA+wD9AAIB7wDvAGQA/QBkAO8AXwBbAO4AVQBbAFUAVwBbAFcAWQD0AFsAWQBtAAcC6QDpAP4AbQBYAFYAAAEAAQEBWABaAFgAAQEBAf8AWgANAucAAAEAAQIBDQLoAA0CAgECAf0A6AC8AMYAzQDNAAsAvAC8AMAAyADIAMYAvAADAS0AygDKAL4AAwG+AMoA2gDaAMIAvgDCANoA2ADYAMQAwgDEANgAyADIAMAAxADFAMcA1wDXANkAyQDFANcAyQDFAMkALgDrAHMASADrAEgACwFvAOsACwFIAFoA/wD/AAgBCwFIAP8ACwFwAB0CCAEIAf8AcAAOASICFwEOARcB8wAOAfMAeAAOAXgAEQEMAQ8BCQEJAQYBDAEQASYCbgBuAAoBEAEmAhABAwADABIBJgINAQcBHAIcAiECDQEjASABHAEcARkBIwEsASgBJQElAS8BLAExATMBKgEqAS0BMQE1ATgBMwEzATEBNQE5ATYBPgE+ATsBOQE8AT8BQgFCAUUBPAFEAUEBSQFJAUcBRAFKAVEBUAFQAU0BSgFUAVsBWQFZAVYBVAFcAV8BWwFbAVQBXAFfAVwBTQFNAVABXwFnAWoBZgFmAWIBZwFqAWcBbQFtAWwBagFuAWgBYwFjAXEBbgFWAVkBbAFsAW0BVgFYAVoBXgFYAV4BTwFYAU8BUgFYAVIBdwFYAXcBZQFYAWUBaQFYAWkBawF8AX4BeQF5AXUBfAGGAYMBigGKAYgBhgGLAZEBgQGLAYEBhAGLAYQBjgECAggClwGXAZUBAgKYAZYBngGeAZsBmAGdAaABpQGlAaIBnQGoAaMBpgGmAaoBqAGrAZkBnAGcAaEBpwGrAZwBpwGMAY8BqwGrAacBjAG7AbkBwAHAAb0BuwG3AcEBrQG3Aa0BsAG3AbABvgHFAcwBygHKAcgBxQHNAcYB0gHSAc8BzQHQAdMB1gHWAdkB0AHYAdUB3QHdAdsB2AHIAcoB4QHhAd4ByAHgAeMB6AHoAeUB4AGTAY0BrwGvAcMBkwH1AfIB7gHuAesB9QFHAUkB8AHwAfMBRwGCAUgBQAGJAYIBQAE9AYkBQAEQAhICFAIUAg4CBAIQAhQCBAJwARACBALiAckBRgHnAeIBRgHqAecBRgHqAUYB9AFKAeEA6gDqAFEBSgEBAgAC5wDnAAICAQIDAnAAAAIAAgECAwLmAOIATAFMAXQB5gDkABoBHQEdARMB5ADbAd0BHgEeASEB2wHmAekB7AHDAeYB7AGTAcMB7AGTAewB7wHaASIBGAHlANoBGAHlABgB4wByAScBKwErATIBcgFGAckBywHlAHIBOgHlADoBQwHOAeUAQwHLAc4BQwFGAcsBQwG/AbIBtAG0AbwBvwEWAbwBtAG0ARUBFgGzAbUBBgIGAhQBswG6AdEBxAHHAd8B5AHHAeQBwgHHAcIBuAHEAccBuAG6AcQBuAGQAYUBhwGHAawBkAGaAawBhwGHAX8BmgGKAXsBgAGAAYgBigGJAT0BNAE0AXoBiQG2AagBqgGqAQwCtgGkAZcBqQGkAZ8BlwGUAZYBmAEJApQBmAF8AQkCmAF+AXwBmAG2AQwC6QDpAAcCtgECApUBCgIKAgECAgIBAgoCfQF9AQMCAQINAggCAgICAucADQINAugACwILAggCDQILAqkBlwGXAQgCCwL/ASYBKQEpAQUC/wH/AQUCDwIPAv0B/wFgAfcBEQIRAm8BYAH3AfkBEwITAhEC9wH5AfsBFQIVAhMC+QH7Af0BDwIPAhUC+wEYAngBUwEYAlMB6wBvABgC6wAYAhsCAwIYAgMCfQF4ARgCfQFwAAMCGwIbAh0CcAAgAiUCuwEgArsBvQEgAr0BFwEgAhcBIgIeAhkCFgIWAiMCHgIkAhcCbgBuACYCJAImAhIBGwEbASQCJgIfAiECHAIcAhoCHwKnAbUBrgGuAYwBpwGnAKQAbABsAGcApwCzAbEBrgGuAbUBswGkAH0A8ADwAGwApAD+AWEBegF6ASQB/gFyAXABBAIEAicBcgFzAUsBTgFxAXMBTgFOAV0BVQFVAVcBbgFOAVUBbgFxAU4BbgFkAXYBegF6AWEBZAH8AfoB+AH8AfgB9gH8AfYBYQH+AfwBYQHtAfEBSAGSAe0BSAGCAZIBSAEuASQBegEwAS4BegE0ATABegFyATIBNwE3AToBcgHXAdoB5QDlAM4B1wEbAR8B3AHRAboBJALUAdEBJALcAdQBJAIbAdwBJAIQAXcAigAQAYoAkAAQAZAA7ADsAAcAAwAQAewAAwC5AJ0AmwC5AJsAtACxALkAtAAEAb0AwQDBAMMAvwAEAcEAvwAEAb8AuwBMAAQBuwBMALsACQBMAAkADQBMAA0AtgBMALYAFAAvAAUBOAA4ADoAMQAvADgAMQBFACgCBAEEAUwARQAqAvkCMQIxAi0CKgIzAjcCOgI6AvUCMwLgAjwCOAI4AjUC4AI+AgUDPAI8AuACPgIGAz8CRAJEAkECBgNCAkUCSwJLAkgCQgJHAkoC2wLbAtkCRwJyApoCUgJSAkwCcgJkAk4CaAJoAlsCZAJmAlACTgJOAmQCZgJQAmYCTAJMAlICUAItA2ACVAJUAlAELQNiAmwCVAJUAmACYgJsAmICWQJZAmoCbAJeAnMCTQJNAmcCZQJlAlwCWgJNAmUCWgJeAk0CWgJYAl4CWgJbAmgCagJqAlkCWwJpAk8CUQJpAlECUwJpAlMCmwJpApsCcAJpAnACUQRpAlEEVQJpAlUCbQJpAm0CawKCAh8DdwJ3Am8CggJ9At4CJQMlAyMDfQLPAsMC3ALPAtwCewLPAnsCeAIYA38CKQMpAysDGAOEAhcDhwKHAooChAKOApMCjAKMAokCjgInA5YCkQKPAicDkQKUAo8CkQKQAiADhQKQAoUCiwKQAosCkgJ5AiADkAKQAtACeQKhAp8CpAKkAhwDoQKdAqgCzAKdAswCpQKdAqUCogKxAq4CrAKsAr8CsQKvArICtAK0AggDrwIJA7UCuwK7ArgCCQO3AroCFgMWA70CtwK/AqwC+gL6AsACvwLKAsIC/AL8Av4CygLFAtECzgLOAqoCxQLHAtMC1wLXAuMCxwLZAtsC4QLhAtUC2QLdAtoCSQIkA90CSQJDAiQDSQL0AjkCOwLuAvQCOwLuAjsCXQJXAu4CXQLSAv0C+wL7AqsC2ALSAvsC2ALSAtgC1gJyAgoDEwMTA5oCcgIqAykEEAMQAykDKgMoA5kCKQQpBCoDKAMPAwsDdAJ0Al8CDwMNAysCLgIuAjwDDQO9AhYDLwIvAvcCvQLLAv8C1AKqAssC1ALFAqoC1ALFAtQCyAK8AvgCKQIOA7wCKQIOAykCDAPYAqsCrQK2ArwCDgMHA7YCDgNdAjsCBANdAgQDQAIOA10CQAIOA0ACRgIHAw4DRgKtAgcDRgLYAq0CRgKjAqcCGgMaAxsDowI/AxsDGgMaAz4DPwMZA5UCLwQvBD0DGQOgArMCsAK+AsECyQK+AskCqQK+AqkCngKwAr4CngKgArACngJ6AnwCIgMiAyEDegKGAiEDIgMiAx0DhgIjAyUDdgJ2Ah4DIwMkA0MCPQI9AnUCJAMmA40CGAMYAysDJgONAogCGAN+AhcDhAKAAn4ChAKCAoAChAIfA4IChAKWAicDEgMSAzAElgKBAioDKQMpA38CgQKDAigDKgMqA4ECgwI2BCsDKQMpAxADNgQRAyYDKwMrAzYEEQPlAjQC9gL2Au8C5QLlAu8C8QLxAukC5QIsA+cC8wLzAlYCLAPnAusCAwMDA/MC5wLrAu0CAQMBAwMD6wLtAukC8QLxAgED7QLuAlcC8gLyAgIDAAPuAvICAAPuAgAD8AJxApwCFAM0A3ECFAOYAjQDFAM0AzEDKANxAjQDKANxAigDgwKZAigDMQMxA0YEmQI3AzoDoQI3A6ECHAM3AxwDQAM3A0ADSwQ1Ay8DMgMyAzgDNQM5AzMDlwKXAk8EOQNPBDsDLAIsAjkDTwQ2A0oERQRFBDADNgNMA0IDRQNFA0kDTANVA1gDTgNOA1EDVQNaA1YDUwNTA1wDWgNeA1oDXANcA2EDXgNiA2QDZwNnA18DYgNlA24DawNrA2gDZQNtA3ADcgNyA2oDbQNzA3YDeAN4A3oDcwN9A38DgQOBA4MDfQOFA30DgwODA4cDhQOHA3gDdgN2A4UDhwOQA4sDjgOOA5IDkAOSA5QDlgOWA5ADkgOXA5oDjAOMA5EDlwN/A5YDlAOUA4EDfwOCA5UDkwOCA5MDjwOCA48DoAOCA6ADewOCA3sDeQOCA3kDiAOCA4gDhAOlA54DogOiA6cDpQOvA7EDswOzA6wDrwO0A7cDrQO0A60DqgO0A6oDugMrBL4DwAPAAzEEKwTBA8QDxwPHA78DwQPGA8sDzgPOA8kDxgPRA9MDzwPPA8wD0QPQA8oDxQPUA9ADxQPUA8UDwgO1A9AD1APUA7gDtQPkA+YD6QPpA+ID5APgA+cD2QPgA9kD1gPgA9YD6gPuA/ED8wPzA/UD7gP2A/cD+wP7A+8D9gP4AwIE/wP/A/wD+AMBBAQEBgQGBP4DAQTxAwcECgQKBPMD8QMJBA4EEQQRBAwECQS8A+wD2APYA7YDvAMeBBQEFwQXBBsEHgRwAxwEGQQZBHIDcANpA3EDqwNpA6sDsgNmA2kDsgMtBDcEPQQ9BDsEOQQtBD0EOQSZAy0EOQQTBB0EbwNvA/IDCwRvAwsEEAQTBG8DEARzA3oDEwMTAwoDcwMqBCsEEAMQAykEKgQsBCoEKQQpBJkCLAQPA50DdQN1AwsDDwMNAzwDRgNGA0MDDQMEBEoDRwNHAwYEBAS8AxgEFQQVBBIEDwQVBA8E7AO8AxUE7AMOAwwDQQNBA0sDAwQOA0EDAwSbA1sDVANUA1ADmwNjA5sDDgNsA2MDDgNsAw4D+QNsA/kD9ANvA2wD9ANvA/QD8gPoA+UD3QPdA9sD6AM/Az4D3QPdA+UDPwPcAz0DLwQvBN4D3AMNBAgE8APrAw0E8APhA+sD8APhA/AD7QPjA+ED7QPjA+0D+gO5A9UDsAOwA64DuQPDA6gDsAOwA9UDwwOzA7EDqQOpA6QDswOyA6MDXQNdA2YDsgPfAzUE0wPTA9ED3wPNA9IDwAPNA8ADyAPBA78DvQPBA70DMgTBAzIEpQOnA8EDpQPfAzAEEgMSAzUE3wMrBCoEMwQzBL4DKwQqBCwEpgOmAzMEKgQ2BBADKwQrBDEENgQ2BDEENAQ0BBEDNgQ0BDEEwAPAA9IDNAQnBC4EUgNSA08DJwQnBCUEOAQ4BC4EJwSJA5gDOgQ6BB8EiQMfBDoEPAQ8BCIEHwQiBDwEPgQ+BCQEIgQkBD4EOAQ4BCUEJAR8A6EDQQQUA3wDQQSYAhQDQQQsBEQEQQSmAywEQQShA6YDQQSZAkYERAREBCwEmQJJBEsEQANJBEAD5gNJBOYD5ANJBOQDTgRHBEwEPwQ/BEIERwRNBE8ElwKXAkAETQRPBE0ERANEAzsDTwRIBEMERQRFBEoESATQA7UD1wPXA94D0APQApAClQKVAs0C0ALcA94D1wPXA9oD3APNApUCGQMZA6YCzQIoBE0DowOjA4oDKASbA1ADLQQtBJkDmwOXA4ADfgN+A4YDdwOXA34DdwOaA5cDdwN3A3QDnAOaA3cDnAONA4oDowOjA58DjQMhBCMEJgQgBCEEJgSKAyAEJgQoBIoDJgRxAxoEFgRxAxYEuwOrA3EDuwOjA00DVwOjA1cDWQNdA6MDWQObA2MDYANgA1sDmwMABPkDDgMOAwMEAARNBOMD+gNNBPoD/QNNBP0DBQREA00EBQREAwUESAMsAjACFQM5AywCFQM5AxUDuQI5A7kCswI5A7MCoALEAsYC4gLdAsQC4gLaAt0C4gJ1Aj0C3wJ1At8CNgJ1AjYCMgJ1AjIC5ALoAuwC6gLqAuYCLQPoAuoCLQPkAugCLQN1AuQCLQNaAmMCYQJYAloCYQJYAmECLgNuAnUCLQMtA1AEbgJUBFcEbARsBHUEVARjBFoEXARcBF8EYwRYBGQEUgRbBFgEUgRwBFsEUgRzBHAEUgRiBGgEZQRlBFkEYgRtBGoEVQReBG0EVQRVBGcEYQReBFUEYQRgBF0EcgRyBG8EYARmBGkEVgRWBFMEZgRrBG4EcQRxBHQEawR4BHsEkASQBJkEeASHBH4EgASABIMEhwR8BIgEdgR/BHwEdgSUBH8EdgSXBJQEdgSGBIwEiQSJBH0EhgSRBI4EeQSCBJEEeQR5BIsEhQSCBHkEhQSEBIEElgSWBJMEhASKBI0EegR6BHcEigSPBJIElQSVBJgEjwQBAgAJAwAAAQkDAAECAwABAQEIl3npLwQICAwIBA8MIFBMOAwICAgIFwgICAMUFBwwBwgUGBgPBAQIFA8gIAMEBAMEBAgIDwgIBwQEBwQHBAMIBxwUAyQIFEQ8NDCxAZ0BEwgXBAwXDAwwHAcIJwgXNCgUJFsIAwhDCA9AQAgIHwgvCD8IFAizBAivBAQvDAz/bwQEjxwcXwQE7wgDCBQPBARfHBzHBAQEBAQEHwQEFwQENwQHBAgILzAkLyQkjwQECFMEBDcIBxQvHBRXBASvBAQXCD8I/7cgIC8kJH8ICA8EBIsEBwQEBAQnBAS3CP93CHcUFC8ICIMEDwQElwQELwwMCAjvFHscHP//HwgIAwj///+fJBz/////VwjHCP9rFDsI/y8I/////2MICP//Kwj/bwi3CLsI/////18kCP9zCP9vCP9nCMsI/ycIPwi3HCTDCGcE4wg7CDMI////////////2xQU//8nCP+vBP////////8XCP//owj/////rwiDCOcU/2sI//83BP//Lwj//////9sI///7CP////////87FAj///////////////////9fCP///6MICAgI/////2MI////////////////////////////////////////////////////////fwQE//8nBAT//ycMFLsI////nwj//+8I////////HwT/////swT/////////////ZwivCP9zBP///////////////////////////////+8U/28I/78IhgkwoD0D05XGFgWehN4LIEb+jRS/D24YKwEC+ivEa+z1g0v+CsX4pQJIedoc40EEE9kAH/64dBQOfycVCE1/8IhVYd8LTY4G6ivzCQssqW9gnr8O/A/l9IMaS9aWXD/UnmJ/ZXf50p5C7Q/PCAQmM3OCpvdPyLvXVK6qrMbj8kHDq9Q0kCRPYjMjteqO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AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAA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UAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBtwG4AbkBvgG/AcABwQHCAcMB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEEAgUCCQIKAg4CDwIQAhECEgITAhQCFQInAigCMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQCmgKbApwCnQKeAp8CogKjAqQCpQKmAqcCqAKpAqoCwwLEAsUCxgLHAsgCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gIAAwEDAgMDAwQDBQMGAxcDGAMdAx4DHwMgAyEDIgMjAyQDJQMsAy0DLgNNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD4APhA+ID5wPoA+kD6gPrA+wDEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQtBC4EMgQzBDcEOAQ5BDoEOwQ8BD0EPgRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEAAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/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AAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACA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AAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8BCAoLDRAYGRwlKS4xNDc4OTpDR0xPUlVWV1hcYmRlZ2pyc3d/g4iMj5GSk5Sdoaaqra+wsbIAAAAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAgDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAgDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAA5rYAAAAAAADmtgAAYDAAAOA1AABQMQAAkDAAAPA1AABgMQAAkDAAAPA1AABgMQAAkDAAAPA1AABgMQAA5rYAAAAAAADmtgAAkDAAAPA1AABgMQAA5rYAAAAAAADmtgAA5rYAAAAAAADmNgAA5rYAAAAAAADmNgAAsDAAACg2AADAsQAA4DAAADg2AADYsQAAoDAAAAA2AAB4sQAAoDAAAAA2AAB4sQAA5rYAAAAAAADmNgAAgDAAAAA2AAB4sQAA5rYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAAsLAAACg2AADAsQAA5jYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAA4LAAADg2AADYsQAA5jYAAAAAAADmNgAA5jYAAAAAAADmNgAAYLAAAOA1AABQsQAAkLAAAPA1AABgsQAAkLAAAPA1AABgsQAAkLAAAPA1AABgsQAA5jYAAAAAAADmNgAAkLAAAPA1AABgsQAA5jYAAAAAAADmNgAA5jYAAAAAAADmtgAA5jYAAAAAAADmtgAAgLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAA5jYAAAAAAADmtgAAgLAAAAA2AAB4MQAA5jYAAAAAAADmtkRSQUNPAgIBAAAA/AHEAgECAAAABgAGAAQAAgAEAAYACgAKAAgABAAIAAoADgAOAAwACAAMAA4AEgASABAADAAQABIAFgAWABQAEAAUABYAGgAaABgAFAAYABoAHgAeABwAGAAcAB4AIgAiACAAHAAgACIAJgAmACQAIAApACQAJgAmACwAKQAAAAIALwAvAEcAAAAzAEQA2ADYANYAMwDcAN4ANwA3ADUA3ACRAD0AOwA7AI8AkQA5AEEAPwA/ADYAOQADACUAKgAqADAAAwAJAA0AEQARABUAGQAZAB0AIQARABkAIQAhACUAAwARACEAAwAJABEAAwAFAAkAAwA5AI0AlwCXAEEAOQBIAC0AJwAnAAEASAAnACMAHwAfABsAFwAXABMADwAPAAsABwAXAA8ABwAfABcABwAnAB8ABwABACcABwCOADoASQBJAE0AjgA8AJAAngCeAEsAPABMAJ8ATgBOAEoATABGAC4AKAAoACsARgBVAFMAUQBRAE8AVQBTAFkAVwBXAFEAUwBZAF0AWwBbAFcAWQBdAGEAXwBfAFsAXQBhAGUAYwBjAF8AYQBlAGkAZwBnAGMAZQBpAG0AawBrAGcAaQBtAHEAbwBvAGsAbQBxAHUAcwBzAG8AcQB7AHgAcwBzAHUAewBPAIEAfgB+AFUATwCRAI8AlQCVAJMAkQCNAIoAmQCZAJcAjQBWAH8AfAB8AHYAVgBWAHYAcgByAG4AagBqAGYAYgByAGoAYgBWAHIAYgBiAF4AWgBWAGIAWgBUAFYAWgCbAIYALgEuAT8BmwCCAFAAdAB0AHkAggBSAFgAXABcAGAAZABSAFwAZABkAGgAbABSAGQAbABsAHAAdABSAGwAdABQAFIAdAAvAYcAmgCaAD4BLwGOAE0AnACcAJQAjgCSAKAAngCeAJAAkgChAJ0ATgBOAJ8AoQCAAHcAegB6AH0AgACoAKYApACkAKIAqACmAKwAqgCqAKQApgCsALAArgCuAKoArACwALQAsgCyAK4AsAC0ALgAtgC2ALIAtAC4ALwAugC6ALYAuAC8AMAAvgC+ALoAvADAAMQAwgDCAL4AwADEAMgAxgDGAMIAxADOAMsAxgDGAMgAzgCiANQA0QDRAKgAogAyADQA1wDXANsAMgDfADQBjACMADgA3wDkAOIA6ADoAOYA5ADgAN0A7ADsAOoA4ACpANIAzwDPAMkAqQCpAMkAxQDFAMEAvQC9ALkAtQDFAL0AtQCpAMUAtQC1ALEArQCpALUArQCnAKkArQA+AEAA6QDpAOsAPgDsAN0ANgA2AD8A7AA1AeAA6gDqAD0BNQHuANkARQBFAEMA7gDVAKMAxwDHAMwA1QClAKsArwCvALMAtwClAK8AtwC3ALsAvwClALcAvwC/AMMAxwClAL8AxwCjAKUAxwBCADEA2gDaAO0AQgDhAPEA7wDvAOcA4QDlAPUA8wDzAOMA5QD2APAA8gDyAPQA9gDTAMoAzQDNANAA0wD5APcA/QD9APsA+QD7AP0AAQEBAf8A+wD/AAEBBQEFAQMB/wADAQUBCQEJAQcBAwEHAQkBDQENAQsBBwELAQ0BEQERAQ8BCwEPAREBFQEVARMBDwETARUBGQEZARcBEwEXARkBHQEdARsBFwEgARsBHQEdASMBIAH3APkAKQEpASYB9wAtAYUAgwCDACsBLQEsAYQAiACIADABLAExAYkAiwCLADMBMQHkADkBNwE3AeIA5AA1AT0BOwE7ATIBNQH6ABwBIQEhASoB+gAAAQQBCAEIAQwBEAEQARQBGAEIARABGAEYARwB+gAIARgB+gAAAQgB+gD8AAAB+gA8AZYAmACYADoBPAE7AZkAigCKADIBOwHpAEAAlgCWADwB6QAnASQBHgEeAfgAJwEeARoBFgEWARIBDgEOAQoBBgEGAQIB/gAOAQYB/gAWAQ4B/gAeARYB/gD4AB4B/gDhADYBQAFAAfEA4QA4AeMA8wDzAEIBOAFDAfQA8gDyAEEBQwElASgBHwEfASIBJQEBAgAJAwAAAQkDAAECAwABAQEHw3RpLXdEcyAgZyCIQ0T/D0RE/ztk/x9EREREMyCfICATIANkHyAglzQ0k2QDIEcQA1RUG0T///+HVET/OyBHNDTXZNsQEP//BzQ0/y/FAsUCH4g03yAgPxAg////UxB/RET////////bIP//HxBE///////////////nIPNUdP8nRAMgIP///////////////////////////////////////////////////////////98QEP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nEP83EP////9vNDQDEP////////////////8nEBD///////////////////////////////////////////9jEKcCWBxhKTB2MED8ABRV0b0wR3qEdCAmajL7QyDmFVYpitJpSWNev/NKief10wBRkaLAI5Dx8u7NrJfeAnwQkepDa9dtCMZWdsRh0r1mZhlyG8A9ISgjBhvWfaPI+ULMeo6hHGQ2GRdgB6CQYkfwRIdV2dhDju+u3gbrWNSjYODtlu22b2D3awo7XDqR3m0ExzvNVD2j29w6Y4TVEHJkR1szTSP/ojCkVvdUAHAHoiJhdADdwQ3EbCrRaUljXr/zSonn9dMAUZGiwCOQ8fLuzayX3gJ8EF7tfMOJitVd5PxZsSXyJNxfZRyRajp2VEfZ9RBVhrc8QJTmeWe8YG1JZK4GbCkAErPliQyUkR/ADFnXfdGaO+8Tusang5nxYKaK8PL8vo25JNFfkgAAAAD/PwAAAAMBAQb/B2kHgCv5ARs0izQvNBeVATc0O5hkZ5UBXzRjlQGzlQGvlQGzlQHHlQEfNMOVAa+YR5UBK2T1CnEFZCeYMQGvNCtkE2QxAS80r2QxAbs0A2QxAa9kMQGrZDEBBzSjZDEBw2QxAWs0ZG9kMQEXNNtkYQEnNJUBjAPyRpMWh06VfQcKehKimCLTlEiXa5JzuSAT49DriCjIILXDYjwHIW8olnVfh21gK4GfsnX+puL8Cc7PNSne1cb++vnq4Z4O9kRBDf33jC0oTRILZ39hKHA6MCYzeR4LEAJCjrPrAgGHgR+amZEC9QFAT/bKsasCyaFbPbV4F8Lq25GSpC3aCs2RR1M7FoGJXFtTGaBtbJSb953HlJjAzfw71bbAtt0ota2hww76tst/mEraqxhco0Leph4lfUwNYTx+RmhjhAx5u3u8gRiLArnBGYL15fcOjAnEBenI4D+YEWBCj6cR4Ek62uSMTxPVDiozBWSxXXWpW3JrdIyYhMh7bwYhDPAP//Mh0Oars9v1sgfj5wT9hysBfGQhR02rMjGTbGkkdVEj+ird0vPVvlzntservvAMesW7k4QLCznyvqJbM018KyOMeJC1O4sCEoUWpHpSeoNCXo9gjfGi7m2W3NG9JlL7/7+6/djitaXj3Nbrv5X0ApkU81MwboxDJDJfj5NYFHhYGmNU+4v/AwAA/wEAAGtmZr7wzMw8RL+ovqS8KD8OCgAAAAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAA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AAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAA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AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/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AAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAACJtwAAyDYAAAAAAACJtwAAyDYAAAAAAICENwAAwbYAAAAAAACItQAAYDUAAAAAAEBKOADAKbgAABAvAACItQAAYDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAIATNwCAUbgAAAAAAIATNwCAUbgAAAAAAIDCNgAACrgAAAAAAIATtwCAUbgAAAAAAIDCtgAACrgAAAAAAIDCtgAACrgAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAACINQAAYDUAAAAAAEBKuACAeTgAAAAAAEBKuADAKbgAAAAAAACJNwAAyDYAAAAAAICEtwAAwbYAAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAAAAAACJtwAAyDYAAAAAAICENwAAwbYAAAAAAICENwAAwbYAAAAAAACItQAAYDUAAAAAAACItQAAYDUAAAAAAEBKOADAKbgAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAIATNwCAUbgAAAAAAIDCNgAACrgAAAAAAIDCNgAACrgAAAAAAIATtwCAUbgAAAAAAIATtwCAUbgAAAAAAIDCtgAACrgAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAACINQAAYDUAAAAAAACINQAAYDUAAAAAAEBKuADAKbgAAAAAAACJNwAAyDYAAAAAAACJNwAAyDYAAAAAAICEtwAAwbYAAAAAAICEtwAAwbYAAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAACotwAAjTcAAAAAAAAiOAAACLgAAAAAAAAiOAAACLgAAAAAAAA5twAAoDcAAAAAAABrNwCAy7cAAAAAAABrNwCAy7cAAAAAAAA7tgCAhDcAAAAAAABwNAAAsLUAAAAAAABwNAAAsLUAAAAAAAA7NgCAhDcAAAAAAAA7NgCAhDcAAAAAAABwtAAAsLUAAAAAAABrtwCAy7cAAAAAAGC0OACAy7cAAAAAAABrtwCAy7cAAAAAAACoNwAAjTcAAAAAAACoNwAAjTcAQK2xAAAiuAAACLgAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAIAtAAAAtAAAgC4AAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAACoNwAAjTcAAAAAAAAiuAAACLgAAAAAAAAiuAAACLgAAAAAAABrtwCAy7cAAAAAAABrtwCAy7cAAAAAAABrtwCAy7cAAAAAAAA7NgCAhDcAAAAAAABwtAAAsLUAAAAAAABwtAAAsLUAAAAAAAA7tgCAhDcAAAAAAAA7tgCAhDcAAAAAAABwNAAAsLUAAAAAAAA5twAAoDcAAAAAAABrNwCAy7cAAAAAAGC0uACAy7cAAAAAAACotwAAjTcAAAAAAACotwAAjTcAAAAAAAAiOAAACLgAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAIAtAAAANAAAgC4AAAAAAAAANAAAgK4AAAAAAAAANAAAgK4AAIAtAAAANAAAgK4AAAAAAAAANAAAgK4AAAAAAAAANAAAgK4AAIAtAAAANAAAgK4AAAAAAAD6tgAANjYAAAAAAAD6tgAANjYAAAAAAAAmuACAcjcAAAAAAAAmuACAcjcAAAAAAAD6tgAANjYAAAAAAAAmuACAcjcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAACotwAAjbcAAAAAAAAiOAAACDgAAAAAAAAiOAAACDgAAAAAAACotwAAjbcAAAAAAACotwAAjbcAAAAAAAAiOAAACDgAAAAAAAA5twAAoLcAAAAAAABrNwCAyzcAAAAAAABrNwCAyzcAAAAAAAA5twAAoLcAAAAAAAA5twAAoLcAAAAAAABrNwCAyzcAAAAAAAA7tgCAhLcAAAAAAABwNAAAsDUAAAAAAABwNAAAsDUAAAAAAAA7tgCAhLcAAAAAAAA7tgCAhLcAAAAAAABwNAAAsDUAAAAAAAA7NgCAhLcAAAAAAAA7NgCAhLcAAAAAAABwtAAAsDUAAAAAAAA7NgCAhLcAAAAAAABwtAAAsDUAAAAAAABwtAAAsDUAAAAAAABrtwCAyzcAAAAAAGC0OACAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAACoNwAAjbcAAAAAAACoNwAAjbcAAAAAAAAiuAAACDgAAAAAAACoNwAAjbcAAAAAAAAiuAAACDgAAAAAAAAiuAAACDgAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAIAtAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAD6NgAANjYAAAAAAAD6NgAANjYAAAAAAAAmOACAcjcAAAAAAAD6NgAANjYAAAAAAAAmOACAcjcAAAAAAAAmOACAcjcAAAAAAACUNwAAeTcAAAAAAACUNwAAeTcAAAAAAAALNwAA6jYAAAAAAAALNwAA6jYAAAAAAAALNwAA6jYAgB4xAACUNwAAeTcAAAAAABDFuAAALzcAAAAAAADKNgAALzcAAAAAAMCetwDACbgAAAAAAADKNgAALzcAAAAAAMCetwDACbgAAAAAAMCetwDACbgAAAAAAIATNwCAUTgAAAAAAIATNwCAUTgAAAAAAIDCNgAACjgAAAAAAIATNwCAUTgAAAAAAIDCNgAACjgAAAAAAIDCNgAACjgAAAAAAIATtwCAUTgAAAAAAIDCtgAACjgAAAAAAIDCtgAACjgAAAAAAIATtwCAUTgAAAAAAIATtwCAUTgAAAAAAIDCtgAACjgAAAAAAADKtgAALzcAAAAAAMCeNwDACbgAAAAAAMCeNwDACbgAAAAAAADKtgAALzcAAAAAABDFOAAALzcAAAAAAMCeNwDACbgAAAAAAACUtwAAeTcAAAAAAAALtwAA6jYAAAAAAAALtwAA6jYAAAAAAACUtwAAeTcAAAAAAACUtwAAeTcAAAAAAAALtwAA6jY=";class j_ extends k_{constructor(A){super(xj),this._props=A,this._goodsWidthGap=.01,this._goodsLengthGap=.01,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._length=0,this._container=new Et,this._goodsSize=new Ef(0,0,0),this.add(this._container)}get length(){return this._length}loaded(A){this._container.add(A.clone(!0)),this._container.traverse(e=>{e.userData.isContainer&&(this._goodsContainer=e);const t="length";if(Object.keys(e.morphTargetDictionary||{}).includes(t)){const i=e.morphTargetDictionary[t];this._length=e.morphTargetInfluences[i]}}),this.setGoodsSize({length:this.size.length,width:this.size.width,height:this.size.height})}setGoodsSize({length:A,width:e,height:t}){var o;this._goodsSize.length=A,this._goodsSize.width=e,this._goodsSize.height=t,this._goods&&(Sn(this._goods),this._goods.removeFromParent()),this.size.length=A+this._goodsLengthGap*2+.04,this.size.height=t+.115,this.size.width=e+this._goodsWidthGap*2+.07,this.setShapeKey("goodsWidth",e+this._goodsWidthGap*2),this.setShapeKey("goodsLength",A+this._goodsLengthGap*2),this._emitter.emit("size-change",this.size);const i=new ls(this._goodsSize.width,t,this._goodsSize.length);i.translate(0,t/2,0);const r=new M1(i);this._goods=new Te(i,new Dl({color:"#22f",opacity:.2,transparent:!0}));const s=new bl(r,new ti({color:"#22f"}));this._goods.add(s),(o=this._goodsContainer)==null||o.add(this._goods)}setShapeKey(A,e){A==="goodsLength"&&(this._length=e),this._container.traverse(t=>{let i=e;if(t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]),!Object.keys(t.morphTargetDictionary||{}).includes(A))return;const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i)})}destroy(){this._emitter.removeAllListeners(),this._emitter=null,Sn(this)}}class Ij extends k_{constructor(){super(wj),this._container=new Et,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._widthGap=.01,this._lengthGap=.01,this._row=new Cj(this._widthGap),this.add(this._container)}loaded(A){this._container.add(A.clone(!0));const e=this._row;e.addEventListener("size-change",({width:r,length:s,height:o})=>{this.setShapeKey("goodsWidth",r),this.setShapeKey("goodsLength",s),this.size.width=s+this._lengthGap,this.size.length=r+this._widthGap,this.size.height=o,this._emitter.emit("size-change",this.size)});const t=new j_({goodsSize:new O(1,1,1)}),i=new j_({goodsSize:new O(1,1,1)});e.addItem(t),e.addItem(i),this.add(e)}setShapeKey(A,e){["length","width"].includes(A)&&(e-=.2),this._container.traverse(t=>{if(!Object.keys(t.morphTargetDictionary||{}).includes(A))return;let i=e;t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]);const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i)})}setGoodsSize(A){this._row.items.forEach(e=>e.setGoodsSize(A))}destroy(){this._emitter.removeAllListeners(),this._row.destroy(),Sn(this)}}class K_ extends Ie{constructor(A=.6,e=.4,t=.2){super(),this._generate(A,e,t)}updateSize(A=.1,e=.1,t=.1){this._generate(A,e,t)}clearAll(){Sn(this)}hide(){this.traverse(A=>A.visible=!1)}show(){this.traverse(A=>A.visible=!0)}_generate(A,e,t){this.clearAll();const i=new Te(new ls(A,t,e),new ti({color:new KA("#0f5fd5"),transparent:!0,opacity:.4}));i.geometry.translate(0,t/2,0);const r=new M1(i.geometry),s=new q1({color:new KA("#000"),dashSize:.015,gapSize:.015}),o=new bl(r,s);o.computeLineDistances(),this.add(i,o)}}new Zp;class bj extends Ie{constructor(A){super(),this._props=A,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._container=new Et,this.sizeBox=new yj,this._goodsSize=new Ef(0,0,0),this._slots=[],this._logos=[],this._skins=[],this._levels=new Map,this._bodyOpacity=1,this._masts=new Map,this._liftMaxHeight=0,this._jackMaxHeight=0,this._forkMaxHeight=0,this.controllers=[],this.goods=[],this._breathLights=[],this._shelves=new Map,this._shelfMaxLevel=1,this._shelveAnimateTimes=[],this._url="",this._showController=!0,this._shapeKeys=new Map,this._materialsCache=new Map,this.opacityCache=void 0,this._url=A.url||"",this._url&&this.load(this._url).then(),this.add(this._container),this._props.showSizeBox&&this.add(this.sizeBox),this.showController=typeof A.showController=="boolean"?A.showController:!0}get shapeKeys(){return this._shapeKeys}get size(){const A=this.sizeBox.size.getSize(new O);return{width:A.z,length:A.x,height:A.y}}get showController(){return this._showController}set showController(A){this._showController=A,this.controllers.forEach(e=>A?e.show():e.hide())}get slots(){return this._slots}get logos(){return this._logos}get skins(){return this._skins}get bodyOpacity(){return this._bodyOpacity}get fork(){return this._fork}get forkHeight(){var A;return((A=this._fork)==null?void 0:A.position.y)||0}get liftHeight(){var A;return((A=this._lift)==null?void 0:A.position.y)||0}get jack(){return this._jack}get jackHeight(){var A;return((A=this._jack)==null?void 0:A.position.y)||0}get lift(){return this._lift}set bodyOpacity(A){this._bodyOpacity=A,A<1?this._materialsCache.forEach(e=>{e.mat.transparent=!0,e.mat.opacity=A,e.mat.metalness=0,e.mat.roughness=1,e.mat.color=new KA("#3859be"),e.mat.needsUpdate=!0}):this._materialsCache.forEach(e=>{e.mat.transparent=e.transparent,e.mat.opacity=e.opacity,e.mat.metalness=e.metalness,e.mat.roughness=e.roughness,e.mat.color=e.color,e.mat.needsUpdate=!0})}init(A){this._app=A,this.sizeBox.init(A),this.addEventListener("shape-key-changed",(e,t)=>{this._slots.forEach(i=>i.shapeKeyChanged(e,t)),this.sizeBox.follow===e?(this.sizeBox.generate(this._container,t),this.sizeBox.originOffset&&(this._container.traverse(i=>{i instanceof Te&&!i.userData.isDevice&&!i.userData.isBracket&&i.geometry.translate(this.sizeBox.originOffset-this.sizeBox.translateCache,0,0),i instanceof jf&&i.parent&&i.parent.position.add(new O(this.sizeBox.originOffset-this.sizeBox.translateCache,0,0))}),this.sizeBox.translateCache=this.sizeBox.originOffset,this.sizeBox.generate(this._container))):this.sizeBox.generate(this._container)})}async load(A){this._url=A,this.name=A.substring(A.lastIndexOf("/")+1,A.lastIndexOf(".")),!A.startsWith("blob")&&A.endsWith(".sglb");let e;if(A.endsWith(".glb"))e=(await Da.loadAsync(A)).scene;else{const i=await new dc({useCache:!0}).loadAsync(A);if(!i.glb)return;e=i.glb}this._generateAmr(e.clone(!0)),e=null}changeSkin(A,e){A&&(A.change(e),this._app&&this._app.usePathTracing&&(this._app.sampleCount=0,this._app.pathTracer.reset(),this._app.pathTracer.updateMaterials()))}changeLogo(A,e){A.change(e.url,new uA(e.scaleX,e.scaleY),new uA(e.ox,e.oy)),this._app&&this._app.usePathTracing&&(this._app.usePathTracing=!1,setTimeout(()=>{var t;(t=this._app)==null||t.generateBVH().then()},10))}setShapeKey(A,e){this._container.traverse(t=>{if(!Object.keys(t.morphTargetDictionary||{}).includes(A))return;let i=e;t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]);const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i),t instanceof Te&&t.geometry.translate(0,0,1e-5)}),this._emitter.emit("shape-key-changed",A,e)}_generateAmr(A){A.traverse(e=>{e.userData.isShelf&&(this._shelf=e),e.userData.isFork&&(this._fork=e),e.userData.isMast&&e.userData.mastLevel&&this._masts.set(e.userData.mastLevel,e),e.userData.isJack&&(this._jack=e),e.userData.isLift&&(this._lift=e),Object.keys(e.morphTargetDictionary||{}).forEach(t=>{let i=e.morphTargetInfluences[e.morphTargetDictionary[t]];e.userData[`origin_${t}`]&&(i+=e.userData[`origin_${t}`]),this._shapeKeys.has(t)||this._shapeKeys.set(t,i)})}),A.traverse(e=>{if(e instanceof Te){if(e.material)if(Array.isArray(e.material))e.material.forEach(i=>{i.userData.changeColor&&(this.skins.find(r=>r.name===i.userData.name)||this.skins.push(new jv({name:i.userData.name,target:i})))});else{if(e.material.userData.isBreathLight&&e.material.emissiveIntensity){e.material.emissiveIntensity=1.5;const i=new xs.Tween(e.material).to({emissiveIntensity:.1}).easing(xs.Easing.Quintic.InOut).duration(1e3).start().yoyo(!0).repeat(1/0);this._breathLights.push(i)}e.material.userData.changeColor&&(this.skins.find(i=>i.name===e.material.userData.name)||this.skins.push(new jv({name:e.material.userData.name,target:e.material})))}if(e.material)if(Array.isArray(e.material))e.material.forEach(r=>{if(r.userData.isLOGO){e.material.transparent=!0;let s;const o={width:0,height:0};e.material.map&&e.material.map.image&&(o.width=e.material.map.image.width,o.height=e.material.map.image.height,s=O0(e.material.map.image));const a=new kv({name:r.userData.name,target:e,size:Pb(e),imageSize:o,imageUrl:s});this._logos.push(a)}r.userData.isTransparent&&(r.transparent=!0),this._materialsCache.set(r.uuid,{opacity:r.opacity,transparent:r.transparent,roughness:r.roughness,metalness:r.metalness,color:r.color,mat:r})});else{const i=e.material;if(i.userData.isLOGO){e.material.transparent=!0;let r;const s={width:0,height:0};e.material.map&&e.material.map.image&&(s.width=e.material.map.image.width,s.height=e.material.map.image.height,r=O0(e.material.map.image));const o=new kv({name:i.userData.name,target:e,size:Pb(e),imageSize:s,imageUrl:r});this._logos.push(o)}i.userData.isTransparent&&(i.transparent=!0),this._materialsCache.set(i.uuid,{opacity:i.opacity,transparent:i.transparent,roughness:i.roughness,metalness:i.metalness,color:i.color,mat:i})}}this.generateController(e,A),this.generateDimension(e,A);const t=this.generateSlot(e,A);t&&this._slots.push(t),e.userData.isOrigin&&Object.keys(e.userData).forEach(r=>{if(r.startsWith("follow_")){const s=r.replace("follow_","");this.shapeKeys.has(s)&&(this.sizeBox.follow=s,this.sizeBox.followOrigin=this._shapeKeys.get(s)||0,this.sizeBox.followScale=e.userData[r])}})}),A.updateMatrixWorld(!0),this._container.add(A),this.sizeBox.generate(A),this.sizeBox.show()}setHeight(A){this.setShapeKey("height",A)}setWeight(A){this.setShapeKey("width",A)}setLength(A){this.setShapeKey("length",A)}limitValue(A){this.name==="SFL-CDD14"&&(A>1.6?this.setShapeKey("mast",1):this.setShapeKey("mast",0)),this.name==="SFL-CDD15"&&(A>2.43?this.setShapeKey("mast",1):this.setShapeKey("mast",0)),["SFL-CPD20-Y","SFL-CPD30-Y"].includes(this.name)&&(A>3.5?this.setShapeKey("mast",2):A>3?this.setShapeKey("mast",1):this.setShapeKey("mast",0))}setForkHeight(A){if(this._fork&&(A>this._forkMaxHeight&&(A=this._forkMaxHeight),this._fork.position.y=A,this._masts.size===1)){const e=this._masts.get(2),t=(e==null?void 0:e.userData.startHeight)||.1;e&&(e.position.y=(A-t)*.5)}}setForkMaxHeight(A){this._fork&&(this._forkMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("fork")&&(e.props.max=A)}),this._fork&&this.forkHeight>this._forkMaxHeight&&this.setForkHeight(A))}setLiftHeight(A){this._lift&&(A>this._liftMaxHeight&&(A=this._liftMaxHeight),this._lift.position.y=A)}setLiftMaxHeight(A){this._lift&&(this._liftMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("lift")&&(e.props.max=A)}),this.liftHeight>this._liftMaxHeight&&this.setLiftHeight(A),this.setHeight(A+.46))}setJackMaxHeight(A){this._jack&&(this._jackMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("jack")&&(e.props.max=A)}),this.jackHeight>this._jackMaxHeight&&this.setJackHeight(A))}setJackHeight(A){this._jack&&(A>this._jackMaxHeight&&(A=this._jackMaxHeight),this._jack.position.y=A)}setLevel(A){this._levels.forEach(e=>{e.destroy()}),this._levels.clear();for(let e=0;e<A;e++){const t=new Ij;t.position.y=.112+e*.6,t.addEventListener("size-change",i=>{setTimeout(()=>{this.setShapeKey("length",i.length),this.setShapeKey("width",i.width)},20)}),this.lift?this.lift.add(t):this.add(t),this._levels.set(e,t)}setTimeout(()=>{this.setGoodsSize(this._goodsSize)},100)}setGoodsSize(A){this._goodsSize.length=A.length,this._goodsSize.width=A.width,this._goodsSize.height=A.height,this._levels.forEach(e=>{e.setGoodsSize(A)}),this.setShelfLevel(this._shelfMaxLevel)}setShelfLevel(A=3){if(!this._shelf)return;this._shelfMaxLevel=A;const e=this._goodsSize.height+.12;this._shelves.delete(0),this._shelves.forEach(t=>{Sn(t),t.parent&&t.removeFromParent()}),this.goods=[],this._shelves.clear(),this._shelves.set(0,this._shelf),this._shelveAnimateTimes.length&&this._shelveAnimateTimes.forEach(t=>window.clearTimeout(t)),this._shelveAnimateTimes=[];for(let t=1;t<A;t++){const i=window.setTimeout(()=>{var o;if(!this._shelf)return;const r=this._shelf.clone(!0);r.position.y+=e*t,this._shelves.set(t,r),(o=this._shelf.parent)==null||o.add(r);let s;if(r.traverse(a=>{a.userData.isShelfContainer&&(s=a)}),s){const a=new K_(this._goodsSize.length,this._goodsSize.width,this._goodsSize.height);if(s.add(a),this.goods.push(a),t===1){const l=new K_(this._goodsSize.length,this._goodsSize.width,this._goodsSize.height);l.position.y-=e,s.add(l),this.goods.push(l)}}r.scale.set(.5,1,0),new bu(r.scale).to({x:1,y:1,z:1}).duration(100).start()},100+t*90);this._shelveAnimateTimes.push(i)}}generateOuterLine(){this.traverse(A=>{if(A.userData.isOuterObject){const e=this.sizeBox.radius;this._outline?this._outline.update(e):(this._outline=new z_(e,0),this.add(this._outline))}})}generateController(A,e){if(this.showController){if(A.userData.isForkController&&A.userData.target){const t=A.userData.target.name,{min:i,max:r}=A.userData;let s;if(e.traverse(a=>{a.name===t&&(s=a)}),!s)return;const o=new R_({name:"",target:t,default:0,min:i,max:r},s);A.add(o)}else if(A.userData.isController&&A.userData.target){const t=A.userData.target.name,{min:i,max:r}=A.userData;let s;if(e.traverse(a=>{a.name===t&&(s=a)}),!s)return;const o=new R_({name:"",userData:A.userData,target:A.userData.key,default:0,min:i||0,max:r||1},s);A.add(o),this.controllers.push(o),(s.userData.isFork||s.userData.isLift||s.userData.isJack)&&(this._forkMaxHeight=r||1,this._liftMaxHeight=r||1,this._jackMaxHeight=r||1,o.addListener("change",a=>{this.setForkHeight(a),this.setLiftHeight(a),this.setJackHeight(a)}))}}}generateDimension(A,e){if(A.userData.isDimension){const t=A.userData.divider,i=O9(A.userData.startOrigin),r=A.userData.axios;let s,o;if(r==="x"?(s=new O(A.userData.start-A.position.x,0,0),o=s.clone().setX(A.userData.end-A.position.x)):r==="z"?(s=new O(0,A.userData.start-A.position.y,0),o=s.clone().setY(A.userData.end-A.position.y)):(s=new O(0,0,A.userData.start-A.position.z),o=s.clone().setZ(A.userData.end-A.position.z)),!Object.keys(A.userData).flatMap(c=>c.startsWith("target")?A.userData[c].name:[]).length)return;const u=new pj({start:s,end:o,startOrigin:i,axios:r,divider:t});A.add(u)}}generateSlot(A,e){if(A.userData.isSlot){const t=A.userData.name;if(t){const i=A.userData.holeTarget&&A.userData.holeTarget.name;let r;i&&e.traverse(a=>{a.name===i&&(r=a)});const s=new Map;Object.keys(A.userData).forEach(a=>{if(a.startsWith("follow_")){const l=a.split("_")[1];if(l){let u=A.userData[a];s.set(l,{scale:u,origin:this.shapeKeys.get(l)||0})}}});const o=new jf({name:t,follows:s,slot:A});return o.holeTarget=r,o.addEventListener(hi.ON_DROP,a=>{this._app&&this._app.props.useSound&&this._app.sound.play()}),o.addEventListener(hi.ON_BEFORE_SELECTED,a=>{this._slots.forEach(l=>{l.selected&&(l.selected=!1)})}),o.addEventListener(hi.ON_ERROR_STATE_CHANGE,a=>{if(this._app)if(this._app._outlinePassError.selectedObjects=this._app._outlinePassError.selectedObjects.filter(l=>!!l.parent),a){if(o.device){if(this._app._outlinePassError.selectedObjects.find(u=>{var c;return u.parent==((c=o.device)==null?void 0:c.parent)}))return;this._app._outlinePassError.selectedObjects=[o.device,...this._app._outlinePassError.selectedObjects]}}else o.device&&(this._app._outlinePassError.selectedObjects=this._app._outlinePassError.selectedObjects.filter(l=>{var u;return l.parent!=((u=o.device)==null?void 0:u.parent)}))}),o}}}clean(){this._emitter.removeAllListeners(),this._shelveAnimateTimes.length&&this._shelveAnimateTimes.forEach(A=>window.clearTimeout(A)),this._shelveAnimateTimes=[],this.controllers.forEach(A=>A.dispose()),this.controllers=[],Sn(this._container),this._levels.forEach(A=>A.destroy()),this._levels.clear(),this._slots=[],this._logos=[],this._skins=[],this._materialsCache.clear(),this.opacityCache=void 0,this._breathLights.forEach(A=>A.stop()),this._breathLights=[],this.sizeBox.reset()}destroy(){this.clean(),this.sizeBox.dispose()}}const F_=0,_j=1,Sj=2,G_=2,uv=1.25,H_=1,_c=6*4+4+4,Wf=65535,Mj=Math.pow(2,-24),fv=Symbol("SKIP_GENERATION");function Pj(n){return n.index?n.index.count:n.attributes.position.count}function Ra(n){return Pj(n)/3}function Tj(n,A=ArrayBuffer){return n>65535?new Uint32Array(new A(4*n)):new Uint16Array(new A(2*n))}function Y_(n,A){if(!n.index){const e=n.attributes.position.count,t=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Tj(e,t);n.setIndex(new ce(i,1));for(let r=0;r<e;r++)i[r]=r}}function U_(n){const A=Ra(n),e=n.drawRange,t=e.start/3,i=(e.start+e.count)/3,r=Math.max(0,t),s=Math.min(A,i)-r;return[{offset:Math.floor(r),count:Math.floor(s)}]}function W_(n){if(!n.groups||!n.groups.length)return U_(n);const A=[],e=new Set,t=n.drawRange,i=t.start/3,r=(t.start+t.count)/3;for(const o of n.groups){const a=o.start/3,l=(o.start+o.count)/3;e.add(Math.max(i,a)),e.add(Math.min(r,l))}const s=Array.from(e.values()).sort((o,a)=>o-a);for(let o=0;o<s.length-1;o++){const a=s[o],l=s[o+1];A.push({offset:Math.floor(a),count:Math.floor(l-a)})}return A}function Dj(n){if(n.groups.length===0)return!1;const A=Ra(n),e=W_(n).sort((r,s)=>r.offset-s.offset),t=e[e.length-1];t.count=Math.min(A-t.offset,t.count);let i=0;return e.forEach(({count:r})=>i+=r),A!==i}function dv(n,A,e,t,i){let r=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0,c=1/0,h=1/0,f=1/0,p=-1/0,m=-1/0,d=-1/0;for(let g=A*6,y=(A+e)*6;g<y;g+=6){const v=n[g+0],w=n[g+1],C=v-w,_=v+w;C<r&&(r=C),_>a&&(a=_),v<c&&(c=v),v>p&&(p=v);const x=n[g+2],S=n[g+3],b=x-S,I=x+S;b<s&&(s=b),I>l&&(l=I),x<h&&(h=x),x>m&&(m=x);const D=n[g+4],P=n[g+5],M=D-P,T=D+P;M<o&&(o=M),T>u&&(u=T),D<f&&(f=D),D>d&&(d=D)}t[0]=r,t[1]=s,t[2]=o,t[3]=a,t[4]=l,t[5]=u,i[0]=c,i[1]=h,i[2]=f,i[3]=p,i[4]=m,i[5]=d}function Ej(n,A=null,e=null,t=null){const i=n.attributes.position,r=n.index?n.index.array:null,s=Ra(n),o=i.normalized;let a;A===null?(a=new Float32Array(s*6*4),e=0,t=s):(a=A,e=e||0,t=t||s);const l=i.array,u=i.offset||0;let c=3;i.isInterleavedBufferAttribute&&(c=i.data.stride);const h=["getX","getY","getZ"];for(let f=e;f<e+t;f++){const p=f*3,m=f*6;let d=p+0,g=p+1,y=p+2;r&&(d=r[d],g=r[g],y=r[y]),o||(d=d*c+u,g=g*c+u,y=y*c+u);for(let v=0;v<3;v++){let w,C,_;o?(w=i[h[v]](d),C=i[h[v]](g),_=i[h[v]](y)):(w=l[d+v],C=l[g+v],_=l[y+v]);let x=w;C<x&&(x=C),_<x&&(x=_);let S=w;C>S&&(S=C),_>S&&(S=_);const b=(S-x)/2,I=v*2;a[m+I+0]=x+b,a[m+I+1]=b+(Math.abs(x)+b)*Mj}}return a}function Je(n,A,e){return e.min.x=A[n],e.min.y=A[n+1],e.min.z=A[n+2],e.max.x=A[n+3],e.max.y=A[n+4],e.max.z=A[n+5],e}function J_(n){let A=-1,e=-1/0;for(let t=0;t<3;t++){const i=n[t+3]-n[t];i>e&&(e=i,A=t)}return A}function Z_(n,A){A.set(n)}function X_(n,A,e){let t,i;for(let r=0;r<3;r++){const s=r+3;t=n[r],i=A[r],e[r]=t<i?t:i,t=n[s],i=A[s],e[s]=t>i?t:i}}function Jf(n,A,e){for(let t=0;t<3;t++){const i=A[n+2*t],r=A[n+2*t+1],s=i-r,o=i+r;s<e[t]&&(e[t]=s),o>e[t+3]&&(e[t+3]=o)}}function Sc(n){const A=n[3]-n[0],e=n[4]-n[1],t=n[5]-n[2];return 2*(A*e+e*t+t*A)}const nr=32,Lj=(n,A)=>n.candidate-A.candidate,Hr=new Array(nr).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Zf=new Float32Array(6);function Oj(n,A,e,t,i,r){let s=-1,o=0;if(r===F_)s=J_(A),s!==-1&&(o=(A[s]+A[s+3])/2);else if(r===_j)s=J_(n),s!==-1&&(o=qj(e,t,i,s));else if(r===Sj){const a=Sc(n);let l=uv*i;const u=t*6,c=(t+i)*6;for(let h=0;h<3;h++){const f=A[h],d=(A[h+3]-f)/nr;if(i<nr/4){const g=[...Hr];g.length=i;let y=0;for(let w=u;w<c;w+=6,y++){const C=g[y];C.candidate=e[w+2*h],C.count=0;const{bounds:_,leftCacheBounds:x,rightCacheBounds:S}=C;for(let b=0;b<3;b++)S[b]=1/0,S[b+3]=-1/0,x[b]=1/0,x[b+3]=-1/0,_[b]=1/0,_[b+3]=-1/0;Jf(w,e,_)}g.sort(Lj);let v=i;for(let w=0;w<v;w++){const C=g[w];for(;w+1<v&&g[w+1].candidate===C.candidate;)g.splice(w+1,1),v--}for(let w=u;w<c;w+=6){const C=e[w+2*h];for(let _=0;_<v;_++){const x=g[_];C>=x.candidate?Jf(w,e,x.rightCacheBounds):(Jf(w,e,x.leftCacheBounds),x.count++)}}for(let w=0;w<v;w++){const C=g[w],_=C.count,x=i-C.count,S=C.leftCacheBounds,b=C.rightCacheBounds;let I=0;_!==0&&(I=Sc(S)/a);let D=0;x!==0&&(D=Sc(b)/a);const P=H_+uv*(I*_+D*x);P<l&&(s=h,l=P,o=C.candidate)}}else{for(let v=0;v<nr;v++){const w=Hr[v];w.count=0,w.candidate=f+d+v*d;const C=w.bounds;for(let _=0;_<3;_++)C[_]=1/0,C[_+3]=-1/0}for(let v=u;v<c;v+=6){let _=~~((e[v+2*h]-f)/d);_>=nr&&(_=nr-1);const x=Hr[_];x.count++,Jf(v,e,x.bounds)}const g=Hr[nr-1];Z_(g.bounds,g.rightCacheBounds);for(let v=nr-2;v>=0;v--){const w=Hr[v],C=Hr[v+1];X_(w.bounds,C.rightCacheBounds,w.rightCacheBounds)}let y=0;for(let v=0;v<nr-1;v++){const w=Hr[v],C=w.count,_=w.bounds,S=Hr[v+1].rightCacheBounds;C!==0&&(y===0?Z_(_,Zf):X_(_,Zf,Zf)),y+=C;let b=0,I=0;y!==0&&(b=Sc(Zf)/a);const D=i-y;D!==0&&(I=Sc(S)/a);const P=H_+uv*(b*y+I*D);P<l&&(s=h,l=P,o=w.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${r} used.`);return{axis:s,pos:o}}function qj(n,A,e,t){let i=0;for(let r=A,s=A+e;r<s;r++)i+=n[r*6+t*2];return i/e}class pv{constructor(){this.boundingData=new Float32Array(6)}}function Nj(n,A,e,t,i,r){let s=t,o=t+i-1;const a=r.pos,l=r.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){for(let u=0;u<3;u++){let c=A[s*3+u];A[s*3+u]=A[o*3+u],A[o*3+u]=c}for(let u=0;u<6;u++){let c=e[s*6+u];e[s*6+u]=e[o*6+u],e[o*6+u]=c}s++,o--}else return s}}function Bj(n,A,e,t,i,r){let s=t,o=t+i-1;const a=r.pos,l=r.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){let u=n[s];n[s]=n[o],n[o]=u;for(let c=0;c<6;c++){let h=e[s*6+c];e[s*6+c]=e[o*6+c],e[o*6+c]=h}s++,o--}else return s}}function Qt(n,A){return A[n+15]===65535}function ui(n,A){return A[n+6]}function Mi(n,A){return A[n+14]}function Pi(n){return n+8}function Ti(n,A){return A[n+6]}function Q_(n,A){return A[n+7]}function TG(n){return n}let V_,Mc,Xf,$_;const zj=Math.pow(2,32);function gv(n){return"count"in n?1:1+gv(n.left)+gv(n.right)}function Rj(n,A,e){return V_=new Float32Array(e),Mc=new Uint32Array(e),Xf=new Uint16Array(e),$_=new Uint8Array(e),mv(n,A)}function mv(n,A){const e=n/4,t=n/2,i="count"in A,r=A.boundingData;for(let s=0;s<6;s++)V_[e+s]=r[s];if(i)if(A.buffer){const s=A.buffer;$_.set(new Uint8Array(s),n);for(let o=n,a=n+s.byteLength;o<a;o+=_c){const l=o/2;Qt(l,Xf)||(Mc[o/4+6]+=e)}return n+s.byteLength}else{const s=A.offset,o=A.count;return Mc[e+6]=s,Xf[t+14]=o,Xf[t+15]=Wf,n+_c}else{const s=A.left,o=A.right,a=A.splitAxis;let l;if(l=mv(n+_c,s),l/4>zj)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return Mc[e+6]=l/4,l=mv(l,o),Mc[e+7]=a,l}}function kj(n,A){const e=(n.index?n.index.count:n.attributes.position.count)/3,t=e>2**16,i=t?4:2,r=A?new SharedArrayBuffer(e*i):new ArrayBuffer(e*i),s=t?new Uint32Array(r):new Uint16Array(r);for(let o=0,a=s.length;o<a;o++)s[o]=o;return s}function jj(n,A,e,t,i){const{maxDepth:r,verbose:s,maxLeafTris:o,strategy:a,onProgress:l,indirect:u}=i,c=n._indirectBuffer,h=n.geometry,f=h.index?h.index.array:null,p=u?Bj:Nj,m=Ra(h),d=new Float32Array(6);let g=!1;const y=new pv;return dv(A,e,t,y.boundingData,d),w(y,e,t,d),y;function v(C){l&&l(C/m)}function w(C,_,x,S=null,b=0){if(!g&&b>=r&&(g=!0,s&&(console.warn(`MeshBVH: Max depth of ${r} reached when generating BVH. Consider increasing maxDepth.`),console.warn(h))),x<=o||b>=r)return v(_+x),C.offset=_,C.count=x,C;const I=Oj(C.boundingData,S,A,_,x,a);if(I.axis===-1)return v(_+x),C.offset=_,C.count=x,C;const D=p(c,f,A,_,x,I);if(D===_||D===_+x)v(_+x),C.offset=_,C.count=x;else{C.splitAxis=I.axis;const P=new pv,M=_,T=D-_;C.left=P,dv(A,M,T,P.boundingData,d),w(P,M,T,d,b+1);const q=new pv,B=D,W=x-T;C.right=q,dv(A,B,W,q.boundingData,d),w(q,B,W,d,b+1)}return C}}function Kj(n,A){const e=n.geometry;A.indirect&&(n._indirectBuffer=kj(e,A.useSharedArrayBuffer),Dj(e)&&!A.verbose&&console.warn('MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),n._indirectBuffer||Y_(e,A);const t=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Ej(e),r=A.indirect?U_(e):W_(e);n._roots=r.map(s=>{const o=jj(n,i,s.offset,s.count,A),a=gv(o),l=new t(_c*a);return Rj(0,o,l),l})}class rr{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(A,e){let t=1/0,i=-1/0;for(let r=0,s=A.length;r<s;r++){const a=A[r][e];t=a<t?a:t,i=a>i?a:i}this.min=t,this.max=i}setFromPoints(A,e){let t=1/0,i=-1/0;for(let r=0,s=e.length;r<s;r++){const o=e[r],a=A.dot(o);t=a<t?a:t,i=a>i?a:i}this.min=t,this.max=i}isSeparated(A){return this.min>A.max||A.min>this.max}}rr.prototype.setFromBox=function(){const n=new O;return function(e,t){const i=t.min,r=t.max;let s=1/0,o=-1/0;for(let a=0;a<=1;a++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){n.x=i.x*a+r.x*(1-a),n.y=i.y*l+r.y*(1-l),n.z=i.z*u+r.z*(1-u);const c=e.dot(n);s=Math.min(c,s),o=Math.max(c,o)}this.min=s,this.max=o}}();const Fj=function(){const n=new O,A=new O,e=new O;return function(i,r,s){const o=i.start,a=n,l=r.start,u=A;e.subVectors(o,l),n.subVectors(i.end,i.start),A.subVectors(r.end,r.start);const c=e.dot(u),h=u.dot(a),f=u.dot(u),p=e.dot(a),d=a.dot(a)*f-h*h;let g,y;d!==0?g=(c*h-p*f)/d:g=0,y=(c+g*h)/f,s.x=g,s.y=y}}(),vv=function(){const n=new uA,A=new O,e=new O;return function(i,r,s,o){Fj(i,r,n);let a=n.x,l=n.y;if(a>=0&&a<=1&&l>=0&&l<=1){i.at(a,s),r.at(l,o);return}else if(a>=0&&a<=1){l<0?r.at(0,o):r.at(1,o),i.closestPointToPoint(o,!0,s);return}else if(l>=0&&l<=1){a<0?i.at(0,s):i.at(1,s),r.closestPointToPoint(s,!0,o);return}else{let u;a<0?u=i.start:u=i.end;let c;l<0?c=r.start:c=r.end;const h=A,f=e;if(i.closestPointToPoint(c,!0,A),r.closestPointToPoint(u,!0,e),h.distanceToSquared(c)<=f.distanceToSquared(u)){s.copy(h),o.copy(c);return}else{s.copy(u),o.copy(f);return}}}}(),Gj=function(){const n=new O,A=new O,e=new Ut,t=new De;return function(r,s){const{radius:o,center:a}=r,{a:l,b:u,c}=s;if(t.start=l,t.end=u,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o||(t.start=l,t.end=c,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o)||(t.start=u,t.end=c,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o))return!0;const m=s.getPlane(e);if(Math.abs(m.distanceToPoint(a))<=o){const g=m.projectPoint(a,A);if(s.containsPoint(g))return!0}return!1}}(),Hj=1e-15;function yv(n){return Math.abs(n)<Hj}class en extends Ue{constructor(...A){super(...A),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new O),this.satBounds=new Array(4).fill().map(()=>new rr),this.points=[this.a,this.b,this.c],this.sphere=new Ai,this.plane=new Ut,this.needsUpdate=!0}intersectsSphere(A){return Gj(A,this)}update(){const A=this.a,e=this.b,t=this.c,i=this.points,r=this.satAxes,s=this.satBounds,o=r[0],a=s[0];this.getNormal(o),a.setFromPoints(o,i);const l=r[1],u=s[1];l.subVectors(A,e),u.setFromPoints(l,i);const c=r[2],h=s[2];c.subVectors(e,t),h.setFromPoints(c,i);const f=r[3],p=s[3];f.subVectors(t,A),p.setFromPoints(f,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,A),this.needsUpdate=!1}}en.prototype.closestPointToSegment=function(){const n=new O,A=new O,e=new De;return function(i,r=null,s=null){const{start:o,end:a}=i,l=this.points;let u,c=1/0;for(let h=0;h<3;h++){const f=(h+1)%3;e.start.copy(l[h]),e.end.copy(l[f]),vv(e,i,n,A),u=n.distanceToSquared(A),u<c&&(c=u,r&&r.copy(n),s&&s.copy(A))}return this.closestPointToPoint(o,n),u=o.distanceToSquared(n),u<c&&(c=u,r&&r.copy(n),s&&s.copy(o)),this.closestPointToPoint(a,n),u=a.distanceToSquared(n),u<c&&(c=u,r&&r.copy(n),s&&s.copy(a)),Math.sqrt(c)}}(),en.prototype.intersectsTriangle=function(){const n=new en,A=new Array(3),e=new Array(3),t=new rr,i=new rr,r=new O,s=new O,o=new O,a=new O,l=new O,u=new De,c=new De,h=new De,f=new O;function p(m,d,g){const y=m.points;let v=0,w=-1;for(let C=0;C<3;C++){const{start:_,end:x}=u;_.copy(y[C]),x.copy(y[(C+1)%3]),u.delta(s);const S=yv(d.distanceToPoint(_));if(yv(d.normal.dot(s))&&S){g.copy(u),v=2;break}const b=d.intersectLine(u,f);if(!b&&S&&f.copy(_),(b||S)&&!yv(f.distanceTo(x))){if(v<=1)(v===1?g.start:g.end).copy(f),S&&(w=v);else if(v>=2){(w===1?g.start:g.end).copy(f),v=2;break}if(v++,v===2&&w===-1)break}}return v}return function(d,g=null,y=!1){this.needsUpdate&&this.update(),d.isExtendedTriangle?d.needsUpdate&&d.update():(n.copy(d),n.update(),d=n);const v=this.plane,w=d.plane;if(Math.abs(v.normal.dot(w.normal))>1-1e-10){const C=this.satBounds,_=this.satAxes;e[0]=d.a,e[1]=d.b,e[2]=d.c;for(let b=0;b<4;b++){const I=C[b],D=_[b];if(t.setFromPoints(D,e),I.isSeparated(t))return!1}const x=d.satBounds,S=d.satAxes;A[0]=this.a,A[1]=this.b,A[2]=this.c;for(let b=0;b<4;b++){const I=x[b],D=S[b];if(t.setFromPoints(D,A),I.isSeparated(t))return!1}for(let b=0;b<4;b++){const I=_[b];for(let D=0;D<4;D++){const P=S[D];if(r.crossVectors(I,P),t.setFromPoints(r,A),i.setFromPoints(r,e),t.isSeparated(i))return!1}}return g&&(y||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),g.start.set(0,0,0),g.end.set(0,0,0)),!0}else{const C=p(this,w,c);if(C===1&&d.containsPoint(c.end))return g&&(g.start.copy(c.end),g.end.copy(c.end)),!0;if(C!==2)return!1;const _=p(d,v,h);if(_===1&&this.containsPoint(h.end))return g&&(g.start.copy(h.end),g.end.copy(h.end)),!0;if(_!==2)return!1;if(c.delta(o),h.delta(a),o.dot(a)<0){let M=h.start;h.start=h.end,h.end=M}const x=c.start.dot(o),S=c.end.dot(o),b=h.start.dot(o),I=h.end.dot(o),D=S<b,P=x<I;return x!==I&&b!==S&&D===P?!1:(g&&(l.subVectors(c.start,h.start),l.dot(o)>0?g.start.copy(c.start):g.start.copy(h.start),l.subVectors(c.end,h.end),l.dot(o)<0?g.end.copy(c.end):g.end.copy(h.end)),!0)}}}(),en.prototype.distanceToPoint=function(){const n=new O;return function(e){return this.closestPointToPoint(e,n),e.distanceTo(n)}}(),en.prototype.distanceToTriangle=function(){const n=new O,A=new O,e=["a","b","c"],t=new De,i=new De;return function(s,o=null,a=null){const l=o||a?t:null;if(this.intersectsTriangle(s,l))return(o||a)&&(o&&l.getCenter(o),a&&l.getCenter(a)),0;let u=1/0;for(let c=0;c<3;c++){let h;const f=e[c],p=s[f];this.closestPointToPoint(p,n),h=p.distanceToSquared(n),h<u&&(u=h,o&&o.copy(n),a&&a.copy(p));const m=this[f];s.closestPointToPoint(m,n),h=m.distanceToSquared(n),h<u&&(u=h,o&&o.copy(m),a&&a.copy(n))}for(let c=0;c<3;c++){const h=e[c],f=e[(c+1)%3];t.set(this[h],this[f]);for(let p=0;p<3;p++){const m=e[p],d=e[(p+1)%3];i.set(s[m],s[d]),vv(t,i,n,A);const g=n.distanceToSquared(A);g<u&&(u=g,o&&o.copy(n),a&&a.copy(A))}}return Math.sqrt(u)}}();class Ht{constructor(A,e,t){this.isOrientedBox=!0,this.min=new O,this.max=new O,this.matrix=new zA,this.invMatrix=new zA,this.points=new Array(8).fill().map(()=>new O),this.satAxes=new Array(3).fill().map(()=>new O),this.satBounds=new Array(3).fill().map(()=>new rr),this.alignedSatBounds=new Array(3).fill().map(()=>new rr),this.needsUpdate=!1,A&&this.min.copy(A),e&&this.max.copy(e),t&&this.matrix.copy(t)}set(A,e,t){this.min.copy(A),this.max.copy(e),this.matrix.copy(t),this.needsUpdate=!0}copy(A){this.min.copy(A.min),this.max.copy(A.max),this.matrix.copy(A.matrix),this.needsUpdate=!0}}Ht.prototype.update=function(){return function(){const A=this.matrix,e=this.min,t=this.max,i=this.points;for(let l=0;l<=1;l++)for(let u=0;u<=1;u++)for(let c=0;c<=1;c++){const h=1*l|2*u|4*c,f=i[h];f.x=l?t.x:e.x,f.y=u?t.y:e.y,f.z=c?t.z:e.z,f.applyMatrix4(A)}const r=this.satBounds,s=this.satAxes,o=i[0];for(let l=0;l<3;l++){const u=s[l],c=r[l],h=1<<l,f=i[h];u.subVectors(o,f),c.setFromPoints(u,i)}const a=this.alignedSatBounds;a[0].setFromPointsField(i,"x"),a[1].setFromPointsField(i,"y"),a[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}(),Ht.prototype.intersectsBox=function(){const n=new rr;return function(e){this.needsUpdate&&this.update();const t=e.min,i=e.max,r=this.satBounds,s=this.satAxes,o=this.alignedSatBounds;if(n.min=t.x,n.max=i.x,o[0].isSeparated(n)||(n.min=t.y,n.max=i.y,o[1].isSeparated(n))||(n.min=t.z,n.max=i.z,o[2].isSeparated(n)))return!1;for(let a=0;a<3;a++){const l=s[a],u=r[a];if(n.setFromBox(l,e),u.isSeparated(n))return!1}return!0}}(),Ht.prototype.intersectsTriangle=function(){const n=new en,A=new Array(3),e=new rr,t=new rr,i=new O;return function(s){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(n.copy(s),n.update(),s=n);const o=this.satBounds,a=this.satAxes;A[0]=s.a,A[1]=s.b,A[2]=s.c;for(let h=0;h<3;h++){const f=o[h],p=a[h];if(e.setFromPoints(p,A),f.isSeparated(e))return!1}const l=s.satBounds,u=s.satAxes,c=this.points;for(let h=0;h<3;h++){const f=l[h],p=u[h];if(e.setFromPoints(p,c),f.isSeparated(e))return!1}for(let h=0;h<3;h++){const f=a[h];for(let p=0;p<4;p++){const m=u[p];if(i.crossVectors(f,m),e.setFromPoints(i,A),t.setFromPoints(i,c),e.isSeparated(t))return!1}}return!0}}(),Ht.prototype.closestPointToPoint=function(){return function(A,e){return this.needsUpdate&&this.update(),e.copy(A).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}(),Ht.prototype.distanceToPoint=function(){const n=new O;return function(e){return this.closestPointToPoint(e,n),e.distanceTo(n)}}(),Ht.prototype.distanceToBox=function(){const n=["x","y","z"],A=new Array(12).fill().map(()=>new De),e=new Array(12).fill().map(()=>new De),t=new O,i=new O;return function(s,o=0,a=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(a||l)&&(s.getCenter(i),this.closestPointToPoint(i,t),s.closestPointToPoint(t,i),a&&a.copy(t),l&&l.copy(i)),0;const u=o*o,c=s.min,h=s.max,f=this.points;let p=1/0;for(let d=0;d<8;d++){const g=f[d];i.copy(g).clamp(c,h);const y=g.distanceToSquared(i);if(y<p&&(p=y,a&&a.copy(g),l&&l.copy(i),y<u))return Math.sqrt(y)}let m=0;for(let d=0;d<3;d++)for(let g=0;g<=1;g++)for(let y=0;y<=1;y++){const v=(d+1)%3,w=(d+2)%3,C=g<<v|y<<w,_=1<<d|g<<v|y<<w,x=f[C],S=f[_];A[m].set(x,S);const I=n[d],D=n[v],P=n[w],M=e[m],T=M.start,q=M.end;T[I]=c[I],T[D]=g?c[D]:h[D],T[P]=y?c[P]:h[D],q[I]=h[I],q[D]=g?c[D]:h[D],q[P]=y?c[P]:h[D],m++}for(let d=0;d<=1;d++)for(let g=0;g<=1;g++)for(let y=0;y<=1;y++){i.x=d?h.x:c.x,i.y=g?h.y:c.y,i.z=y?h.z:c.z,this.closestPointToPoint(i,t);const v=i.distanceToSquared(t);if(v<p&&(p=v,a&&a.copy(t),l&&l.copy(i),v<u))return Math.sqrt(v)}for(let d=0;d<12;d++){const g=A[d];for(let y=0;y<12;y++){const v=e[y];vv(g,v,t,i);const w=t.distanceToSquared(i);if(w<p&&(p=w,a&&a.copy(t),l&&l.copy(i),w<u))return Math.sqrt(w)}}return Math.sqrt(p)}}();class wv{constructor(A){this._getNewPrimitive=A,this._primitives=[]}getPrimitive(){const A=this._primitives;return A.length===0?this._getNewPrimitive():A.pop()}releasePrimitive(A){this._primitives.push(A)}}class Yj extends wv{constructor(){super(()=>new en)}}const Di=new Yj;class Uj{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const A=[];let e=null;this.setBuffer=t=>{e&&A.push(e),e=t,this.float32Array=new Float32Array(t),this.uint16Array=new Uint16Array(t),this.uint32Array=new Uint32Array(t)},this.clearBuffer=()=>{e=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,A.length!==0&&this.setBuffer(A.pop())}}}const Re=new Uj;let Yr,ka;const ja=[],Qf=new wv(()=>new ye);function Wj(n,A,e,t,i,r){Yr=Qf.getPrimitive(),ka=Qf.getPrimitive(),ja.push(Yr,ka),Re.setBuffer(n._roots[A]);const s=Cv(0,n.geometry,e,t,i,r);Re.clearBuffer(),Qf.releasePrimitive(Yr),Qf.releasePrimitive(ka),ja.pop(),ja.pop();const o=ja.length;return o>0&&(ka=ja[o-1],Yr=ja[o-2]),s}function Cv(n,A,e,t,i=null,r=0,s=0){const{float32Array:o,uint16Array:a,uint32Array:l}=Re;let u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);return Je(n,o,Yr),t(h,f,!1,s,r+n,Yr)}else{let I=function(P){const{uint16Array:M,uint32Array:T}=Re;let q=P*2;for(;!Qt(q,M);)P=Pi(P),q=P*2;return ui(P,T)},D=function(P){const{uint16Array:M,uint32Array:T}=Re;let q=P*2;for(;!Qt(q,M);)P=Ti(P,T),q=P*2;return ui(P,T)+Mi(q,M)};const h=Pi(n),f=Ti(n,l);let p=h,m=f,d,g,y,v;if(i&&(y=Yr,v=ka,Je(p,o,y),Je(m,o,v),d=i(y),g=i(v),g<d)){p=f,m=h;const P=d;d=g,g=P,y=v}y||(y=Yr,Je(p,o,y));const w=Qt(p*2,a),C=e(y,w,d,s+1,r+p);let _;if(C===G_){const P=I(p),T=D(p)-P;_=t(P,T,!0,s+1,r+p,y)}else _=C&&Cv(p,A,e,t,i,r,s+1);if(_)return!0;v=ka,Je(m,o,v);const x=Qt(m*2,a),S=e(v,x,g,s+1,r+m);let b;if(S===G_){const P=I(m),T=D(m)-P;b=t(P,T,!0,s+1,r+m,v)}else b=S&&Cv(m,A,e,t,i,r,s+1);return!!b}}const Pc=new O,xv=new O;function Jj(n,A,e={},t=0,i=1/0){const r=t*t,s=i*i;let o=1/0,a=null;if(n.shapecast({boundsTraverseOrder:u=>(Pc.copy(A).clamp(u.min,u.max),Pc.distanceToSquared(A)),intersectsBounds:(u,c,h)=>h<o&&h<s,intersectsTriangle:(u,c)=>{u.closestPointToPoint(A,Pc);const h=A.distanceToSquared(Pc);return h<o&&(xv.copy(Pc),o=h,a=c),h<r}}),o===1/0)return null;const l=Math.sqrt(o);return e.point?e.point.copy(xv):e.point=xv.clone(),e.distance=l,e.faceIndex=a,e}const Ka=new O,Fa=new O,Ga=new O,Vf=new uA,$f=new uA,Ad=new uA,AS=new O,eS=new O,tS=new O,ed=new O;function Zj(n,A,e,t,i,r,s,o){let a;if(r===dt?a=n.intersectTriangle(t,e,A,!0,i):a=n.intersectTriangle(A,e,t,r!==ot,i),a===null)return null;const l=n.origin.distanceTo(i);return l<s||l>o?null:{distance:l,point:i.clone()}}function Xj(n,A,e,t,i,r,s,o,a,l,u){Ka.fromBufferAttribute(A,r),Fa.fromBufferAttribute(A,s),Ga.fromBufferAttribute(A,o);const c=Zj(n,Ka,Fa,Ga,ed,a,l,u);if(c){t&&(Vf.fromBufferAttribute(t,r),$f.fromBufferAttribute(t,s),Ad.fromBufferAttribute(t,o),c.uv=Ue.getInterpolation(ed,Ka,Fa,Ga,Vf,$f,Ad,new uA)),i&&(Vf.fromBufferAttribute(i,r),$f.fromBufferAttribute(i,s),Ad.fromBufferAttribute(i,o),c.uv1=Ue.getInterpolation(ed,Ka,Fa,Ga,Vf,$f,Ad,new uA)),e&&(AS.fromBufferAttribute(e,r),eS.fromBufferAttribute(e,s),tS.fromBufferAttribute(e,o),c.normal=Ue.getInterpolation(ed,Ka,Fa,Ga,AS,eS,tS,new O),c.normal.dot(n.direction)>0&&c.normal.multiplyScalar(-1));const h={a:r,b:s,c:o,normal:new O,materialIndex:0};Ue.getNormal(Ka,Fa,Ga,h.normal),c.face=h,c.faceIndex=r}return c}function td(n,A,e,t,i,r,s){const o=t*3;let a=o+0,l=o+1,u=o+2;const c=n.index;n.index&&(a=c.getX(a),l=c.getX(l),u=c.getX(u));const{position:h,normal:f,uv:p,uv1:m}=n.attributes,d=Xj(e,h,f,p,m,a,l,u,A,r,s);return d?(d.faceIndex=t,i&&i.push(d),d):null}function rt(n,A,e,t){const i=n.a,r=n.b,s=n.c;let o=A,a=A+1,l=A+2;e&&(o=e.getX(o),a=e.getX(a),l=e.getX(l)),i.x=t.getX(o),i.y=t.getY(o),i.z=t.getZ(o),r.x=t.getX(a),r.y=t.getY(a),r.z=t.getZ(a),s.x=t.getX(l),s.y=t.getY(l),s.z=t.getZ(l)}function Qj(n,A,e,t,i,r,s,o){const{geometry:a,_indirectBuffer:l}=n;for(let u=t,c=t+i;u<c;u++)td(a,A,e,u,r,s,o)}function Vj(n,A,e,t,i,r,s){const{geometry:o,_indirectBuffer:a}=n;let l=1/0,u=null;for(let c=t,h=t+i;c<h;c++){let f;f=td(o,A,e,c,null,r,s),f&&f.distance<l&&(u=f,l=f.distance)}return u}function $j(n,A,e,t,i,r,s){const{geometry:o}=e,{index:a}=o,l=o.attributes.position;for(let u=n,c=A+n;u<c;u++){let h;if(h=u,rt(s,h*3,a,l),s.needsUpdate=!0,t(s,h,i,r))return!0}return!1}function AK(n,A=null){A&&Array.isArray(A)&&(A=new Set(A));const e=n.geometry,t=e.index?e.index.array:null,i=e.attributes.position;let r,s,o,a,l=0;const u=n._roots;for(let h=0,f=u.length;h<f;h++)r=u[h],s=new Uint32Array(r),o=new Uint16Array(r),a=new Float32Array(r),c(0,l),l+=r.byteLength;function c(h,f,p=!1){const m=h*2;if(o[m+15]===Wf){const g=s[h+6],y=o[m+14];let v=1/0,w=1/0,C=1/0,_=-1/0,x=-1/0,S=-1/0;for(let b=3*g,I=3*(g+y);b<I;b++){let D=t[b];const P=i.getX(D),M=i.getY(D),T=i.getZ(D);P<v&&(v=P),P>_&&(_=P),M<w&&(w=M),M>x&&(x=M),T<C&&(C=T),T>S&&(S=T)}return a[h+0]!==v||a[h+1]!==w||a[h+2]!==C||a[h+3]!==_||a[h+4]!==x||a[h+5]!==S?(a[h+0]=v,a[h+1]=w,a[h+2]=C,a[h+3]=_,a[h+4]=x,a[h+5]=S,!0):!1}else{const g=h+8,y=s[h+6],v=g+f,w=y+f;let C=p,_=!1,x=!1;A?C||(_=A.has(v),x=A.has(w),C=!_&&!x):(_=!0,x=!0);const S=C||_,b=C||x;let I=!1;S&&(I=c(g,f,C));let D=!1;b&&(D=c(y,f,C));const P=I||D;if(P)for(let M=0;M<3;M++){const T=g+M,q=y+M,B=a[T],W=a[T+3],K=a[q],U=a[q+3];a[h+M]=B<K?B:K,a[h+M+3]=W>U?W:U}return P}}}function Ur(n,A,e,t,i){let r,s,o,a,l,u;const c=1/e.direction.x,h=1/e.direction.y,f=1/e.direction.z,p=e.origin.x,m=e.origin.y,d=e.origin.z;let g=A[n],y=A[n+3],v=A[n+1],w=A[n+3+1],C=A[n+2],_=A[n+3+2];return c>=0?(r=(g-p)*c,s=(y-p)*c):(r=(y-p)*c,s=(g-p)*c),h>=0?(o=(v-m)*h,a=(w-m)*h):(o=(w-m)*h,a=(v-m)*h),r>a||o>s||((o>r||isNaN(r))&&(r=o),(a<s||isNaN(s))&&(s=a),f>=0?(l=(C-d)*f,u=(_-d)*f):(l=(_-d)*f,u=(C-d)*f),r>u||l>s)?!1:((l>r||r!==r)&&(r=l),(u<s||s!==s)&&(s=u),r<=i&&s>=t)}function eK(n,A,e,t,i,r,s,o){const{geometry:a,_indirectBuffer:l}=n;for(let u=t,c=t+i;u<c;u++){let h=l?l[u]:u;td(a,A,e,h,r,s,o)}}function tK(n,A,e,t,i,r,s){const{geometry:o,_indirectBuffer:a}=n;let l=1/0,u=null;for(let c=t,h=t+i;c<h;c++){let f;f=td(o,A,e,a?a[c]:c,null,r,s),f&&f.distance<l&&(u=f,l=f.distance)}return u}function iK(n,A,e,t,i,r,s){const{geometry:o}=e,{index:a}=o,l=o.attributes.position;for(let u=n,c=A+n;u<c;u++){let h;if(h=e.resolveTriangleIndex(u),rt(s,h*3,a,l),s.needsUpdate=!0,t(s,h,i,r))return!0}return!1}function nK(n,A,e,t,i,r,s){Re.setBuffer(n._roots[A]),Iv(0,n,e,t,i,r,s),Re.clearBuffer()}function Iv(n,A,e,t,i,r,s){const{float32Array:o,uint16Array:a,uint32Array:l}=Re,u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);Qj(A,e,t,h,f,i,r,s)}else{const h=Pi(n);Ur(h,o,t,r,s)&&Iv(h,A,e,t,i,r,s);const f=Ti(n,l);Ur(f,o,t,r,s)&&Iv(f,A,e,t,i,r,s)}}const rK=["x","y","z"];function sK(n,A,e,t,i,r){Re.setBuffer(n._roots[A]);const s=bv(0,n,e,t,i,r);return Re.clearBuffer(),s}function bv(n,A,e,t,i,r){const{float32Array:s,uint16Array:o,uint32Array:a}=Re;let l=n*2;if(Qt(l,o)){const c=ui(n,a),h=Mi(l,o);return Vj(A,e,t,c,h,i,r)}else{const c=Q_(n,a),h=rK[c],p=t.direction[h]>=0;let m,d;p?(m=Pi(n),d=Ti(n,a)):(m=Ti(n,a),d=Pi(n));const y=Ur(m,s,t,i,r)?bv(m,A,e,t,i,r):null;if(y){const C=y.point[h];if(p?C<=s[d+c]:C>=s[d+c+3])return y}const w=Ur(d,s,t,i,r)?bv(d,A,e,t,i,r):null;return y&&w?y.distance<=w.distance?y:w:y||w||null}}const id=new ye,Ha=new en,Ya=new en,Tc=new zA,iS=new Ht,nd=new Ht;function oK(n,A,e,t){Re.setBuffer(n._roots[A]);const i=_v(0,n,e,t);return Re.clearBuffer(),i}function _v(n,A,e,t,i=null){const{float32Array:r,uint16Array:s,uint32Array:o}=Re;let a=n*2;if(i===null&&(e.boundingBox||e.computeBoundingBox(),iS.set(e.boundingBox.min,e.boundingBox.max,t),i=iS),Qt(a,s)){const u=A.geometry,c=u.index,h=u.attributes.position,f=e.index,p=e.attributes.position,m=ui(n,o),d=Mi(a,s);if(Tc.copy(t).invert(),e.boundsTree)return Je(n,r,nd),nd.matrix.copy(Tc),nd.needsUpdate=!0,e.boundsTree.shapecast({intersectsBounds:y=>nd.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(t),y.b.applyMatrix4(t),y.c.applyMatrix4(t),y.needsUpdate=!0;for(let v=m*3,w=(d+m)*3;v<w;v+=3)if(rt(Ya,v,c,h),Ya.needsUpdate=!0,y.intersectsTriangle(Ya))return!0;return!1}});for(let g=m*3,y=(d+m)*3;g<y;g+=3){rt(Ha,g,c,h),Ha.a.applyMatrix4(Tc),Ha.b.applyMatrix4(Tc),Ha.c.applyMatrix4(Tc),Ha.needsUpdate=!0;for(let v=0,w=f.count;v<w;v+=3)if(rt(Ya,v,f,p),Ya.needsUpdate=!0,Ha.intersectsTriangle(Ya))return!0}}else{const u=n+8,c=o[n+6];return Je(u,r,id),!!(i.intersectsBox(id)&&_v(u,A,e,t,i)||(Je(c,r,id),i.intersectsBox(id)&&_v(c,A,e,t,i)))}}const rd=new zA,Sv=new Ht,Dc=new Ht,aK=new O,lK=new O,cK=new O,hK=new O;function uK(n,A,e,t={},i={},r=0,s=1/0){A.boundingBox||A.computeBoundingBox(),Sv.set(A.boundingBox.min,A.boundingBox.max,e),Sv.needsUpdate=!0;const o=n.geometry,a=o.attributes.position,l=o.index,u=A.attributes.position,c=A.index,h=Di.getPrimitive(),f=Di.getPrimitive();let p=aK,m=lK,d=null,g=null;i&&(d=cK,g=hK);let y=1/0,v=null,w=null;return rd.copy(e).invert(),Dc.matrix.copy(rd),n.shapecast({boundsTraverseOrder:C=>Sv.distanceToBox(C),intersectsBounds:(C,_,x)=>x<y&&x<s?(_&&(Dc.min.copy(C.min),Dc.max.copy(C.max),Dc.needsUpdate=!0),!0):!1,intersectsRange:(C,_)=>{if(A.boundsTree)return A.boundsTree.shapecast({boundsTraverseOrder:S=>Dc.distanceToBox(S),intersectsBounds:(S,b,I)=>I<y&&I<s,intersectsRange:(S,b)=>{for(let I=S,D=S+b;I<D;I++){rt(f,3*I,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let P=C,M=C+_;P<M;P++){rt(h,3*P,l,a),h.needsUpdate=!0;const T=h.distanceToTriangle(f,p,d);if(T<y&&(m.copy(p),g&&g.copy(d),y=T,v=P,w=I),T<r)return!0}}}});{const x=Ra(A);for(let S=0,b=x;S<b;S++){rt(f,3*S,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let I=C,D=C+_;I<D;I++){rt(h,3*I,l,a),h.needsUpdate=!0;const P=h.distanceToTriangle(f,p,d);if(P<y&&(m.copy(p),g&&g.copy(d),y=P,v=I,w=S),P<r)return!0}}}}}),Di.releasePrimitive(h),Di.releasePrimitive(f),y===1/0?null:(t.point?t.point.copy(m):t.point=m.clone(),t.distance=y,t.faceIndex=v,i&&(i.point?i.point.copy(g):i.point=g.clone(),i.point.applyMatrix4(rd),m.applyMatrix4(rd),i.distance=m.sub(i.point).length(),i.faceIndex=w),t)}function fK(n,A=null){A&&Array.isArray(A)&&(A=new Set(A));const e=n.geometry,t=e.index?e.index.array:null,i=e.attributes.position;let r,s,o,a,l=0;const u=n._roots;for(let h=0,f=u.length;h<f;h++)r=u[h],s=new Uint32Array(r),o=new Uint16Array(r),a=new Float32Array(r),c(0,l),l+=r.byteLength;function c(h,f,p=!1){const m=h*2;if(o[m+15]===Wf){const g=s[h+6],y=o[m+14];let v=1/0,w=1/0,C=1/0,_=-1/0,x=-1/0,S=-1/0;for(let b=g,I=g+y;b<I;b++){const D=3*n.resolveTriangleIndex(b);for(let P=0;P<3;P++){let M=D+P;M=t?t[M]:M;const T=i.getX(M),q=i.getY(M),B=i.getZ(M);T<v&&(v=T),T>_&&(_=T),q<w&&(w=q),q>x&&(x=q),B<C&&(C=B),B>S&&(S=B)}}return a[h+0]!==v||a[h+1]!==w||a[h+2]!==C||a[h+3]!==_||a[h+4]!==x||a[h+5]!==S?(a[h+0]=v,a[h+1]=w,a[h+2]=C,a[h+3]=_,a[h+4]=x,a[h+5]=S,!0):!1}else{const g=h+8,y=s[h+6],v=g+f,w=y+f;let C=p,_=!1,x=!1;A?C||(_=A.has(v),x=A.has(w),C=!_&&!x):(_=!0,x=!0);const S=C||_,b=C||x;let I=!1;S&&(I=c(g,f,C));let D=!1;b&&(D=c(y,f,C));const P=I||D;if(P)for(let M=0;M<3;M++){const T=g+M,q=y+M,B=a[T],W=a[T+3],K=a[q],U=a[q+3];a[h+M]=B<K?B:K,a[h+M+3]=W>U?W:U}return P}}}function dK(n,A,e,t,i,r,s){Re.setBuffer(n._roots[A]),Mv(0,n,e,t,i,r,s),Re.clearBuffer()}function Mv(n,A,e,t,i,r,s){const{float32Array:o,uint16Array:a,uint32Array:l}=Re,u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);eK(A,e,t,h,f,i,r,s)}else{const h=Pi(n);Ur(h,o,t,r,s)&&Mv(h,A,e,t,i,r,s);const f=Ti(n,l);Ur(f,o,t,r,s)&&Mv(f,A,e,t,i,r,s)}}const pK=["x","y","z"];function gK(n,A,e,t,i,r){Re.setBuffer(n._roots[A]);const s=Pv(0,n,e,t,i,r);return Re.clearBuffer(),s}function Pv(n,A,e,t,i,r){const{float32Array:s,uint16Array:o,uint32Array:a}=Re;let l=n*2;if(Qt(l,o)){const c=ui(n,a),h=Mi(l,o);return tK(A,e,t,c,h,i,r)}else{const c=Q_(n,a),h=pK[c],p=t.direction[h]>=0;let m,d;p?(m=Pi(n),d=Ti(n,a)):(m=Ti(n,a),d=Pi(n));const y=Ur(m,s,t,i,r)?Pv(m,A,e,t,i,r):null;if(y){const C=y.point[h];if(p?C<=s[d+c]:C>=s[d+c+3])return y}const w=Ur(d,s,t,i,r)?Pv(d,A,e,t,i,r):null;return y&&w?y.distance<=w.distance?y:w:y||w||null}}const sd=new ye,Ua=new en,Wa=new en,Ec=new zA,nS=new Ht,od=new Ht;function mK(n,A,e,t){Re.setBuffer(n._roots[A]);const i=Tv(0,n,e,t);return Re.clearBuffer(),i}function Tv(n,A,e,t,i=null){const{float32Array:r,uint16Array:s,uint32Array:o}=Re;let a=n*2;if(i===null&&(e.boundingBox||e.computeBoundingBox(),nS.set(e.boundingBox.min,e.boundingBox.max,t),i=nS),Qt(a,s)){const u=A.geometry,c=u.index,h=u.attributes.position,f=e.index,p=e.attributes.position,m=ui(n,o),d=Mi(a,s);if(Ec.copy(t).invert(),e.boundsTree)return Je(n,r,od),od.matrix.copy(Ec),od.needsUpdate=!0,e.boundsTree.shapecast({intersectsBounds:y=>od.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(t),y.b.applyMatrix4(t),y.c.applyMatrix4(t),y.needsUpdate=!0;for(let v=m,w=d+m;v<w;v++)if(rt(Wa,3*A.resolveTriangleIndex(v),c,h),Wa.needsUpdate=!0,y.intersectsTriangle(Wa))return!0;return!1}});for(let g=m,y=d+m;g<y;g++){const v=A.resolveTriangleIndex(g);rt(Ua,3*v,c,h),Ua.a.applyMatrix4(Ec),Ua.b.applyMatrix4(Ec),Ua.c.applyMatrix4(Ec),Ua.needsUpdate=!0;for(let w=0,C=f.count;w<C;w+=3)if(rt(Wa,w,f,p),Wa.needsUpdate=!0,Ua.intersectsTriangle(Wa))return!0}}else{const u=n+8,c=o[n+6];return Je(u,r,sd),!!(i.intersectsBox(sd)&&Tv(u,A,e,t,i)||(Je(c,r,sd),i.intersectsBox(sd)&&Tv(c,A,e,t,i)))}}const ad=new zA,Dv=new Ht,Lc=new Ht,vK=new O,yK=new O,wK=new O,CK=new O;function xK(n,A,e,t={},i={},r=0,s=1/0){A.boundingBox||A.computeBoundingBox(),Dv.set(A.boundingBox.min,A.boundingBox.max,e),Dv.needsUpdate=!0;const o=n.geometry,a=o.attributes.position,l=o.index,u=A.attributes.position,c=A.index,h=Di.getPrimitive(),f=Di.getPrimitive();let p=vK,m=yK,d=null,g=null;i&&(d=wK,g=CK);let y=1/0,v=null,w=null;return ad.copy(e).invert(),Lc.matrix.copy(ad),n.shapecast({boundsTraverseOrder:C=>Dv.distanceToBox(C),intersectsBounds:(C,_,x)=>x<y&&x<s?(_&&(Lc.min.copy(C.min),Lc.max.copy(C.max),Lc.needsUpdate=!0),!0):!1,intersectsRange:(C,_)=>{if(A.boundsTree){const x=A.boundsTree;return x.shapecast({boundsTraverseOrder:S=>Lc.distanceToBox(S),intersectsBounds:(S,b,I)=>I<y&&I<s,intersectsRange:(S,b)=>{for(let I=S,D=S+b;I<D;I++){const P=x.resolveTriangleIndex(I);rt(f,3*P,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let M=C,T=C+_;M<T;M++){const q=n.resolveTriangleIndex(M);rt(h,3*q,l,a),h.needsUpdate=!0;const B=h.distanceToTriangle(f,p,d);if(B<y&&(m.copy(p),g&&g.copy(d),y=B,v=M,w=I),B<r)return!0}}}})}else{const x=Ra(A);for(let S=0,b=x;S<b;S++){rt(f,3*S,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let I=C,D=C+_;I<D;I++){const P=n.resolveTriangleIndex(I);rt(h,3*P,l,a),h.needsUpdate=!0;const M=h.distanceToTriangle(f,p,d);if(M<y&&(m.copy(p),g&&g.copy(d),y=M,v=I,w=S),M<r)return!0}}}}}),Di.releasePrimitive(h),Di.releasePrimitive(f),y===1/0?null:(t.point?t.point.copy(m):t.point=m.clone(),t.distance=y,t.faceIndex=v,i&&(i.point?i.point.copy(g):i.point=g.clone(),i.point.applyMatrix4(ad),m.applyMatrix4(ad),i.distance=m.sub(i.point).length(),i.faceIndex=w),t)}function Ev(){return typeof SharedArrayBuffer<"u"}function rS(n,A){if(n===null)return n;if(n.buffer){const e=n.buffer;if(e.constructor===A)return n;const t=n.constructor,i=new t(new A(e.byteLength));return i.set(n),i}else{if(n.constructor===A)return n;const e=new A(n.byteLength);return new Uint8Array(e).set(new Uint8Array(n)),e}}const Oc=new Re.constructor,ld=new Re.constructor,Wr=new wv(()=>new ye),Ja=new ye,Za=new ye,Lv=new ye,Ov=new ye;let qv=!1;function IK(n,A,e,t){if(qv)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");qv=!0;const i=n._roots,r=A._roots;let s,o=0,a=0;const l=new zA().copy(e).invert();for(let u=0,c=i.length;u<c;u++){Oc.setBuffer(i[u]),a=0;const h=Wr.getPrimitive();Je(0,Oc.float32Array,h),h.applyMatrix4(l);for(let f=0,p=r.length;f<p&&(ld.setBuffer(r[u]),s=tn(0,0,e,l,t,o,a,0,0,h),ld.clearBuffer(),a+=r[f].length,!s);f++);if(Wr.releasePrimitive(h),Oc.clearBuffer(),o+=i[u].length,s)break}return qv=!1,s}function tn(n,A,e,t,i,r=0,s=0,o=0,a=0,l=null,u=!1){let c,h;u?(c=ld,h=Oc):(c=Oc,h=ld);const f=c.float32Array,p=c.uint32Array,m=c.uint16Array,d=h.float32Array,g=h.uint32Array,y=h.uint16Array,v=n*2,w=A*2,C=Qt(v,m),_=Qt(w,y);let x=!1;if(_&&C)u?x=i(ui(A,g),Mi(A*2,y),ui(n,p),Mi(n*2,m),a,s+A,o,r+n):x=i(ui(n,p),Mi(n*2,m),ui(A,g),Mi(A*2,y),o,r+n,a,s+A);else if(_){const S=Wr.getPrimitive();Je(A,d,S),S.applyMatrix4(e);const b=Pi(n),I=Ti(n,p);Je(b,f,Ja),Je(I,f,Za);const D=S.intersectsBox(Ja),P=S.intersectsBox(Za);x=D&&tn(A,b,t,e,i,s,r,a,o+1,S,!u)||P&&tn(A,I,t,e,i,s,r,a,o+1,S,!u),Wr.releasePrimitive(S)}else{const S=Pi(A),b=Ti(A,g);Je(S,d,Lv),Je(b,d,Ov);const I=l.intersectsBox(Lv),D=l.intersectsBox(Ov);if(I&&D)x=tn(n,S,e,t,i,r,s,o,a+1,l,u)||tn(n,b,e,t,i,r,s,o,a+1,l,u);else if(I)if(C)x=tn(n,S,e,t,i,r,s,o,a+1,l,u);else{const P=Wr.getPrimitive();P.copy(Lv).applyMatrix4(e);const M=Pi(n),T=Ti(n,p);Je(M,f,Ja),Je(T,f,Za);const q=P.intersectsBox(Ja),B=P.intersectsBox(Za);x=q&&tn(S,M,t,e,i,s,r,a,o+1,P,!u)||B&&tn(S,T,t,e,i,s,r,a,o+1,P,!u),Wr.releasePrimitive(P)}else if(D)if(C)x=tn(n,b,e,t,i,r,s,o,a+1,l,u);else{const P=Wr.getPrimitive();P.copy(Ov).applyMatrix4(e);const M=Pi(n),T=Ti(n,p);Je(M,f,Ja),Je(T,f,Za);const q=P.intersectsBox(Ja),B=P.intersectsBox(Za);x=q&&tn(b,M,t,e,i,s,r,a,o+1,P,!u)||B&&tn(b,T,t,e,i,s,r,a,o+1,P,!u),Wr.releasePrimitive(P)}}return x}const cd=new Ht,sS=new ye,bK={strategy:F_,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0};class hd{static serialize(A,e={}){e={cloneBuffers:!0,...e};const t=A.geometry,i=A._roots,r=A._indirectBuffer,s=t.getIndex();let o;return e.cloneBuffers?o={roots:i.map(a=>a.slice()),index:s?s.array.slice():null,indirectBuffer:r?r.slice():null}:o={roots:i,index:s?s.array:null,indirectBuffer:r},o}static deserialize(A,e,t={}){t={setIndex:!0,indirect:!!A.indirectBuffer,...t};const{index:i,roots:r,indirectBuffer:s}=A,o=new hd(e,{...t,[fv]:!0});if(o._roots=r,o._indirectBuffer=s||null,t.setIndex){const a=e.getIndex();if(a===null){const l=new ce(A.index,1,!1);e.setIndex(l)}else a.array!==i&&(a.array.set(i),a.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(A,e={}){if(A.isBufferGeometry){if(A.index&&A.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({...bK,[fv]:!1},e),e.useSharedArrayBuffer&&!Ev())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=A,this._roots=null,this._indirectBuffer=null,e[fv]||(Kj(this,e),!A.boundingBox&&e.setBoundingBox&&(A.boundingBox=this.getBoundingBox(new ye))),this.resolveTriangleIndex=e.indirect?t=>this._indirectBuffer[t]:t=>t}refit(A=null){return(this.indirect?fK:AK)(this,A)}traverse(A,e=0){const t=this._roots[e],i=new Uint32Array(t),r=new Uint16Array(t);s(0);function s(o,a=0){const l=o*2,u=r[l+15]===Wf;if(u){const c=i[o+6],h=r[l+14];A(a,u,new Float32Array(t,o*4,6),c,h)}else{const c=o+_c/4,h=i[o+6],f=i[o+7];A(a,u,new Float32Array(t,o*4,6),f)||(s(c,a+1),s(h,a+1))}}}raycast(A,e=Bt,t=0,i=1/0){const r=this._roots,s=this.geometry,o=[],a=e.isMaterial,l=Array.isArray(e),u=s.groups,c=a?e.side:e,h=this.indirect?dK:nK;for(let f=0,p=r.length;f<p;f++){const m=l?e[u[f].materialIndex].side:c,d=o.length;if(h(this,f,m,A,o,t,i),l){const g=u[f].materialIndex;for(let y=d,v=o.length;y<v;y++)o[y].face.materialIndex=g}}return o}raycastFirst(A,e=Bt,t=0,i=1/0){const r=this._roots,s=this.geometry,o=e.isMaterial,a=Array.isArray(e);let l=null;const u=s.groups,c=o?e.side:e,h=this.indirect?gK:sK;for(let f=0,p=r.length;f<p;f++){const m=a?e[u[f].materialIndex].side:c,d=h(this,f,m,A,t,i);d!=null&&(l==null||d.distance<l.distance)&&(l=d,a&&(d.face.materialIndex=u[f].materialIndex))}return l}intersectsGeometry(A,e){let t=!1;const i=this._roots,r=this.indirect?mK:oK;for(let s=0,o=i.length;s<o&&(t=r(this,s,A,e),!t);s++);return t}shapecast(A){const e=Di.getPrimitive(),t=this.indirect?iK:$j;let{boundsTraverseOrder:i,intersectsBounds:r,intersectsRange:s,intersectsTriangle:o}=A;if(s&&o){const c=s;s=(h,f,p,m,d)=>c(h,f,p,m,d)?!0:t(h,f,this,o,p,m,e)}else s||(o?s=(c,h,f,p)=>t(c,h,this,o,f,p,e):s=(c,h,f)=>f);let a=!1,l=0;const u=this._roots;for(let c=0,h=u.length;c<h;c++){const f=u[c];if(a=Wj(this,c,r,s,i,l),a)break;l+=f.byteLength}return Di.releasePrimitive(e),a}bvhcast(A,e,t){let{intersectsRanges:i,intersectsTriangles:r}=t;const s=Di.getPrimitive(),o=this.geometry.index,a=this.geometry.attributes.position,l=this.indirect?p=>{const m=this.resolveTriangleIndex(p);rt(s,m*3,o,a)}:p=>{rt(s,p*3,o,a)},u=Di.getPrimitive(),c=A.geometry.index,h=A.geometry.attributes.position,f=A.indirect?p=>{const m=A.resolveTriangleIndex(p);rt(u,m*3,c,h)}:p=>{rt(u,p*3,c,h)};if(r){const p=(m,d,g,y,v,w,C,_)=>{for(let x=g,S=g+y;x<S;x++){f(x),u.a.applyMatrix4(e),u.b.applyMatrix4(e),u.c.applyMatrix4(e),u.needsUpdate=!0;for(let b=m,I=m+d;b<I;b++)if(l(b),s.needsUpdate=!0,r(s,u,b,x,v,w,C,_))return!0}return!1};if(i){const m=i;i=function(d,g,y,v,w,C,_,x){return m(d,g,y,v,w,C,_,x)?!0:p(d,g,y,v,w,C,_,x)}}else i=p}return IK(this,A,e,i)}intersectsBox(A,e){return cd.set(A.min,A.max,e),cd.needsUpdate=!0,this.shapecast({intersectsBounds:t=>cd.intersectsBox(t),intersectsTriangle:t=>cd.intersectsTriangle(t)})}intersectsSphere(A){return this.shapecast({intersectsBounds:e=>A.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(A)})}closestPointToGeometry(A,e,t={},i={},r=0,s=1/0){return(this.indirect?xK:uK)(this,A,e,t,i,r,s)}closestPointToPoint(A,e={},t=0,i=1/0){return Jj(this,A,e,t,i)}getBoundingBox(A){return A.makeEmpty(),this._roots.forEach(t=>{Je(0,new Float32Array(t),sS),A.union(sS)}),A}}class oS{constructor(A){this.name="WorkerBase",this.running=!1,this.worker=A,this.worker.onerror=e=>{throw e.message?new Error(`${this.name}: Could not create Web Worker with error "${e.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...A){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const e=this.runTask(this.worker,...A);return e.finally(()=>{this.running=!1}),e}dispose(){this.worker.terminate(),this.worker=null}}class _K extends oS{constructor(){const A=new Worker(new URL(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/generateMeshBVH.worker-NFSCTTDt.js").href:new URL("assets/generateMeshBVH.worker-NFSCTTDt.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:lr&&lr.src||new URL("shop-components.umd.js",document.baseURI).href),{type:"module"});super(A),this.name="GenerateMeshBVHWorker"}runTask(A,e,t={}){return new Promise((i,r)=>{if(e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");A.onerror=l=>{r(new Error(`GenerateMeshBVHWorker: ${l.message}`))},A.onmessage=l=>{const{data:u}=l;if(u.error)r(new Error(u.error)),A.onmessage=null;else if(u.serialized){const{serialized:c,position:h}=u,f=hd.deserialize(c,e,{setIndex:!1}),p=Object.assign({setBoundingBox:!0},t);if(e.attributes.position.array=h,c.index)if(e.index)e.index.array=c.index;else{const m=new ce(c.index,1,!1);e.setIndex(m)}p.setBoundingBox&&(e.boundingBox=f.getBoundingBox(new ye)),t.onProgress&&t.onProgress(u.progress),i(f),A.onmessage=null}else t.onProgress&&t.onProgress(u.progress)};const s=e.index?e.index.array:null,o=e.attributes.position.array,a=[o];s&&a.push(s),A.postMessage({index:s,position:o,options:{...t,onProgress:null,includedProgressCallback:!!t.onProgress,groups:[...e.groups]}},a.map(l=>l.buffer).filter(l=>typeof SharedArrayBuffer>"u"||!(l instanceof SharedArrayBuffer)))})}}const aS=typeof navigator<"u"?navigator.hardwareConcurrency:4;class SK extends oS{constructor(){const A=new Worker(new URL(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/parallelMeshBVH.worker-TP6qJGKX.js").href:new URL("assets/parallelMeshBVH.worker-TP6qJGKX.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:lr&&lr.src||new URL("shop-components.umd.js",document.baseURI).href),{type:"module"});if(super(A),this.name="ParallelMeshBVHWorker",this.maxWorkerCount=Math.max(aS,4),!Ev())throw new Error("ParallelMeshBVHWorker: Shared Array Buffers are not supported.")}runTask(A,e,t={}){return new Promise((i,r)=>{if(!e.index&&!t.indirect&&Y_(e,t),e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("ParallelMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");A.onerror=a=>{r(new Error(`ParallelMeshBVHWorker: ${a.message}`))},A.onmessage=a=>{const{data:l}=a;if(l.error)r(new Error(l.error)),A.onmessage=null;else if(l.serialized){const{serialized:u,position:c}=l,h=hd.deserialize(u,e,{setIndex:!1}),f={setBoundingBox:!0,...t};if(e.attributes.position.array=c,u.index)if(e.index)e.index.array=u.index;else{const p=new ce(u.index,1,!1);e.setIndex(p)}f.setBoundingBox&&(e.boundingBox=h.getBoundingBox(new ye)),t.onProgress&&t.onProgress(l.progress),i(h),A.onmessage=null}else t.onProgress&&t.onProgress(l.progress)};const s=e.index?e.index.array:null,o=e.attributes.position.array;A.postMessage({operation:"BUILD_BVH",maxWorkerCount:this.maxWorkerCount,index:rS(s,SharedArrayBuffer),position:rS(o,SharedArrayBuffer),options:{...t,onProgress:null,includedProgressCallback:!!t.onProgress,groups:[...e.groups]}})})}}class MK{constructor(){if(Ev())return new SK;{console.warn("ParallelMeshBVHWorker: SharedArrayBuffers not supported. Falling back to single-threaded GenerateMeshBVHWorker.");const A=new _K;return A.maxWorkerCount=aS,A}}}const ud=1e-16,lS=new O(0,1,0),cS=new O;function PK(n){return n.delta(cS).normalize(),Math.abs(cS.dot(lS))>=1-ud}function hS(n){return n.needsUpdate&&n.update(),Math.abs(n.plane.normal.dot(lS))<=ud}function Nv(n,A){const{start:e,end:t}=A,i=n.points;let r=!1,s=!1;for(let o=0;o<3;o++){const a=i[o];if(!r&&e.distanceToSquared(a)<=ud&&(r=!0),!s&&t.distanceToSquared(a)<=ud&&(s=!0),r&&s)return!0}return r&&s}const uS=1e-16,TK=new O(0,1,0),fS=new O,dS=new O,fd=new O,dd=new Ue;function DK(n,A=TK,e=1){const t=[],r=Math.pow(10,4),s=Math.cos(lo.DEG2RAD*e),o=n.getIndex(),a=n.getAttribute("position"),l=o?o.count:a.count,u=[0,0,0],c=["a","b","c"],h=new Array(3),f={};for(let p=0;p<l;p+=3){o?(u[0]=o.getX(p),u[1]=o.getX(p+1),u[2]=o.getX(p+2)):(u[0]=p,u[1]=p+1,u[2]=p+2);const{a:m,b:d,c:g}=dd;if(m.fromBufferAttribute(a,u[0]),d.fromBufferAttribute(a,u[1]),g.fromBufferAttribute(a,u[2]),dd.getNormal(fd),h[0]=`${Math.round(m.x*r)},${Math.round(m.y*r)},${Math.round(m.z*r)}`,h[1]=`${Math.round(d.x*r)},${Math.round(d.y*r)},${Math.round(d.z*r)}`,h[2]=`${Math.round(g.x*r)},${Math.round(g.y*r)},${Math.round(g.z*r)}`,!(h[0]===h[1]||h[1]===h[2]||h[2]===h[0]))for(let y=0;y<3;y++){const v=(y+1)%3,w=h[y],C=h[v],_=dd[c[y]],x=dd[c[v]],S=`${w}_${C}`,b=`${C}_${w}`;if(b in f&&f[b]){const I=f[b].normal,D=fd.dot(I)<=s;let P=A.dot(fd);P=Math.abs(P)<uS?0:P;let M=A.dot(I);M=Math.abs(M)<uS?0:M;const T=Math.sign(P)!==Math.sign(M);if(D||T){const q=new De;q.start.copy(_),q.end.copy(x),t.push(q)}f[b]=null}else S in f||(f[S]={index0:u[y],index1:u[v],normal:fd.clone()})}}for(const p in f)if(f[p]){const{index0:m,index1:d}=f[p];fS.fromBufferAttribute(a,m),dS.fromBufferAttribute(a,d);const g=new De;g.start.copy(fS),g.end.copy(dS),t.push(g)}return t}const Jr=new De;function pS(n){n.sort((A,e)=>A[0]-e[0]);for(let A=1;A<n.length;A++){const e=n[A],t=n[A-1];t[1]>=e[0]&&(t[1]=Math.max(t[1],e[1]),n.splice(A,1),A--)}}function EK(n,A,e=[]){pS(A);const t=[[0,1]];for(let i=0,r=A.length;i<r;i++){const s=t[i],o=A[i];s[1]=o[0],t.push(new Float32Array([o[1],1]))}for(let i=0,r=t.length;i<r;i++){const{start:s,end:o}=n;Jr.start.lerpVectors(s,o,t[i][0]),Jr.end.lerpVectors(s,o,t[i][1]),e.push(new Float32Array([Jr.start.x,Jr.start.y,Jr.start.z,Jr.end.x,Jr.end.y,Jr.end.z]))}return e}const Bv=1e-16,LK=new O(0,1,0),Zr=new Ut,qc=new O,gS=new O;function OK(n,A,e){if(hS(n))return!1;n.needsUpdate&&n.update(),Zr.copy(n.plane),Zr.normal.dot(LK)<0&&(Zr.normal.multiplyScalar(-1),Zr.constant*=-1);const t=Zr.distanceToPoint(A.start),i=Zr.distanceToPoint(A.end),r=Math.abs(t)<Bv,s=Math.abs(i)<Bv,o=t<0,a=i<0;if(A.delta(gS).normalize(),Math.abs(Zr.normal.dot(gS))<Bv)return r||!o?!1:(e.copy(A),!0);if(o&&a)return e.copy(A),!0;if(!o&&!a)return!1;{let l=Zr.intersectLine(A,qc);if(l||(r&&(qc.copy(A.start),l=!0),s&&(qc.copy(A.end),l=!0)),l){if(o)return e.start.copy(A.start),e.end.copy(qc),!0;if(a)return e.end.copy(A.end),e.start.copy(qc),!0}}return!1}const qK=1e-16,mS=1e-16,pd=new Ut,Xa=new De,gd=new O,zv=new O,Xr=new oi,Ei=new De,sr=new De,Qr=new O,vS=new O;function NK(n,A,e=new De){if(Xr.copy(A),Xr.a.y=0,Xr.b.y=0,Xr.c.y=0,Xr.update(),Ei.copy(n),Ei.start.y=0,Ei.end.y=0,Xr.getArea()<=qK)return null;Ei.delta(Qr).normalize(),Qr.cross(Xr.plane.normal).normalize(),pd.setFromNormalAndCoplanarPoint(Qr,Ei.start);let t=0;const{points:i}=Xr;for(let r=0;r<3;r++){const s=i[r],o=i[(r+1)%3];Xa.start.copy(s),Xa.end.copy(o);const a=Math.abs(pd.distanceToPoint(Xa.start))<mS,l=Math.abs(pd.distanceToPoint(Xa.end))<mS,u=pd.intersectLine(Xa,gd);if((u&&!l||a)&&(a&&!u&&gd.copy(Xa.start),t===0?sr.start.copy(gd):sr.end.copy(gd),t++,t===2))break}if(t===2){if(Ei.delta(Qr).normalize(),sr.delta(vS).normalize(),Qr.dot(vS)<0){let c=sr.start;sr.start=sr.end,sr.end=c}const r=0,s=zv.subVectors(Ei.end,Ei.start).dot(Qr),o=zv.subVectors(sr.start,Ei.start).dot(Qr),a=zv.subVectors(sr.end,Ei.start).dot(Qr),l=s<=o,u=a<=r;return l||u?null:(n.at(Math.max(r,o)/Ei.distance(),e.start),n.at(Math.min(s,a)/Ei.distance(),e.end),e)}return null}const BK=1e-16,yS=new O,wS=new O,CS=new O;function zK(n,A,e){n.delta(yS),wS.subVectors(A.start,n.start),CS.subVectors(A.end,n.start);const t=yS.length();let i=wS.length()/t,r=CS.length()/t;return i=Math.min(Math.max(i,0),1),r=Math.min(Math.max(r,0),1),Math.abs(i-r)<=BK?!1:(e.push(new Float32Array([i,r])),!0)}const xS=1e-6,Vr=new oi,Qa=new De;function*RK(n,A=30){const e=[],t=n.geometry,i=t.index,r=t.attributes.position,s=i?i.count:r;let o=performance.now();for(let a=0;a<s;a+=3){let l=a+0,u=a+1,c=a+2;i&&(l=i.getX(l),u=i.getX(u),c=i.getX(c));const{a:h,b:f,c:p}=Vr;h.fromBufferAttribute(r,l),f.fromBufferAttribute(r,u),p.fromBufferAttribute(r,c),Vr.needsUpdate=!0,Vr.update(),n.shapecast({intersectsBounds:d=>d.intersectsTriangle(Vr),intersectsTriangle:d=>{if(Vr.equals(d)||(d.needsUpdate&&d.update(),Math.abs(Vr.plane.normal.dot(d.plane.normal))>1-1e-6))return!1;Vr.intersectsTriangle(d,Qa,!0)&&!Nv(Vr,Qa)&&!Nv(d,Qa)&&(Qa.start.y+=xS,Qa.end.y+=xS,e.push(Qa.clone()))}}),performance.now()-o>A&&(yield,o=performance.now())}return e}const kK=1e-10,jK=new O(0,1,0),md=new De,IS=new os,bS=new O,_S=new De;class KK{constructor(){this.edges=[]}getLineGeometry(A=0){const e=this.edges,t=new Float32Array(e.length*6);let i=0;for(let o=0,a=e.length;o<a;o++){const l=e[o];t[i++]=l[0],t[i++]=A,t[i++]=l[2],t[i++]=l[3],t[i++]=A,t[i++]=l[5]}const r=new qe,s=new ce(t,3,!0);return r.setAttribute("position",s),r}}class FK{constructor(){this.sortEdges=!0,this.iterationTime=30,this.angleThreshold=50,this.includeIntersectionEdges=!0}generateAsync(A,e={}){return new Promise((t,i)=>{const{signal:r}=e,s=this.generate(A,e);o();function o(){if(r&&r.aborted){i(new Error("ProjectionGenerator: Process aborted via AbortSignal."));return}const a=s.next();a.done?t(a.value):requestAnimationFrame(o)}})}*generate(A,e={}){const{onProgress:t}=e,{sortEdges:i,iterationTime:r,angleThreshold:s,includeIntersectionEdges:o}=this;A instanceof qe&&(A=new mC(A,{maxLeafTris:1}));const a=A.geometry;let l=DK(a,jK,s);if(o){const h=yield*RK(A,r);l=l.concat(h)}i&&l.sort((h,f)=>Math.min(h.start.y,h.end.y)-Math.min(f.start.y,f.end.y)),yield;const u=new KK;let c=performance.now();for(let h=0,f=l.length;h<f;h++){const p=l[h];if(PK(p))continue;const m=Math.min(p.start.y,p.end.y),d=Math.max(p.start.y,p.end.y),g=[];if(A.shapecast({intersectsBounds:v=>{v.min.y=Math.min(m-1e-6,v.min.y);const{origin:w,direction:C}=IS;return w.copy(p.start),p.delta(C).normalize(),v.containsPoint(w)?!0:IS.intersectBox(v,bS)?w.distanceToSquared(bS)<p.distanceSq():!1},intersectsTriangle:v=>{if(Math.max(v.a.y,v.b.y,v.c.y)<=m||hS(v)||Nv(v,p))return!1;const C=Math.min(v.a.y,v.b.y,v.c.y);if(d<C)md.copy(p);else if(!OK(v,p,md))return!1;if(md.distance()<kK)return!1;if(NK(md,v,_S)&&zK(p,_S,g)&&pS(g),g.length!==0){const[_,x]=g[g.length-1];return _===0&&x===1}return!1}}),EK(p,g,u.edges),performance.now()-c>r){if(t){const v=h/l.length;t(v,u)}yield,c=performance.now()}}return u.getLineGeometry(0)}}const GK=new FK,HK=new Zp;let Rv;HK.loadAsync(cO).then(n=>{Rv=n});const YK=new sO(lO);class kv{constructor(A){this._props=A,this.name="",this._timer=0,this._offscreen=new OffscreenCanvas(0,0),this._defaults={...A},this.target=A.target,this.reset()}get imageSize(){return this._props.imageSize}get size(){return this._props.size}clear(){this.change()}change(A,e=new uA(1,1),t=new uA){this.imageUrl=A;let i;if(A){const r=new Image;r.crossOrigin="anonymous",r.src=A,r.onload=async()=>{var l;let s=window.devicePixelRatio*2;this._offscreen.width=r.width+s,this._offscreen.height=r.height+s;const o=this._offscreen.getContext("2d");o==null||o.clearRect(0,0,this._offscreen.width,this._offscreen.height),o==null||o.drawImage(r,s/2,s/2,r.width,r.height),i=new lt(this._offscreen),i.minFilter=1003,i.colorSpace=je,i.wrapS=i.wrapT=et,i.repeat.set(1/e.x,1/e.y),i.offset.set(t.x,t.y),i.flipY=!1,i.needsUpdate=!0;const a=this._props.target;a.material&&((l=a.material.map)==null||l.dispose(),i?(a.material.map=i,a.material.opacity=1):(a.material.map=Rv,a.material.opacity=0))}}else{const r=this._props.target;r.material&&(r.material.map=Rv)}}reset(){this._props=this._defaults,this.name=this._props.name,this.imageUrl=this._props.imageUrl,this.target=this._props.target,this.change(this.imageUrl||"")}dispose(){this._offscreen=null}}class jv{constructor(A){var e;this._props=A,this.name="",this._defaults={color:""},this.color="",this.name=this._props.name,this.color=this._defaults.color="#"+((e=A.target.color)==null?void 0:e.getHexString())}change(A){var e;this.color=A,(e=this._props.target.color)==null||e.set(A)}reset(){this.change(this._defaults.color)}}var SS=(n=>(n[n.DEFAULT=0]="DEFAULT",n[n.CAN_INSTALL=1]="CAN_INSTALL",n))(SS||{});const MS=.15;let Va,vd=0,Kv=0;const UK=()=>{Va=void 0,vd=0,Kv=0},WK=new ti({colorWrite:!1});class JK{constructor(A){this.props=A,this.stats=new Hl,this.scene=new Eo,this.overlayScene=new Eo,this.renderer=new n1({antialias:!0,alpha:!0,logarithmicDepthBuffer:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),this.css2dRenderer=new rO,this.mousePos=new uA,this.mouseCoord=new uA,this.offset=new uA,this.size=new uA,this.amr=new bj({showSizeBox:!0,showController:!0}),this.camera=new gt(60,window.innerWidth/window.innerHeight,.1,1e4),this._container=new Et,this._raycaster=new eE,this._selected=[],this._pointerDownTimeout=0,this.lines=new ue.DeviceLines(new uA(-108,0)),this._dragging=!1,this.maxSample=1024*2,this.sampleCount=0,this._usePathTracing=!1,this._fpsCache=[],this._fpsCacheMax=20,this._emitter=new br,this.sound=new L9,this._ground=new Te(new Kn(100,100),new Dl({color:new KA("#aaa"),metalness:.6,roughness:.3})),this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._drag=t=>{this._dragging=!0,this._pointermove(t)},this._dragend=t=>{this._dragging=!1},this._pointermove=t=>{if(this._pointerDownTimeout)return clearTimeout(this._pointerDownTimeout),this._pointerDownTimeout=0;const{top:i,left:r}=this.renderer.domElement.getBoundingClientRect();this.offset.set(r,i),this.mousePos.set(t.clientX-r,t.clientY-i),this.mouseCoord.set((t.clientX-r)/this.size.x*2-1,-((t.clientY-i)/this.size.y)*2+1),this._raycaster.setFromCamera(this.mouseCoord,this.camera)},this._pointerdown=t=>{const i=()=>{let r=[...this._outlinePass.selectedObjects];this._outlinePass.selectedObjects=[],this.amr.slots.forEach(a=>a.selected=!1);const o=this._raycaster.intersectObjects(this.amr.slots,!0)[0];o&&this.amr.slots.forEach(a=>{a.traverse(l=>{l==o.object?r!=null&&r.includes(a)?(r=void 0,a.deviceSelected=!1):(this._outlinePass.selectedObjects=[a],a.deviceSelected=!0):a.deviceSelected=!1})}),this._pointerDownTimeout=0};this._pointerDownTimeout=window.setTimeout(i,200)},this._detectTrackpad=()=>{Va||typeof Va<"u"||(vd===0&&(Kv=performance.now()),vd++,performance.now()-Kv>66&&(vd>5?Va=!0:Va=!1,Va?this.controls.zoomSpeed=.2:this.controls.zoomSpeed=1,setTimeout(UK,2e3)))},this.fit=()=>{new ye().setFromObject(this._container);const i=this.amr.sizeBox.size.getSize(new O),r=i.clone().multiplyScalar(.5),s=Math.max(i.x,i.y,i.z)+Math.max(i.x,i.y),o=Math.min(i.x,i.y,i.z)+.5,l=this.camera.position.clone().normalize().multiplyScalar(s);l.setY(r.y*1.6),this._fitAnimation=new bu(this.camera.position).to(l,600).easing(xs.Easing.Quintic.InOut).onStart(()=>{this.controls.enabled=!1}).onComplete(()=>{this.controls.enabled=!0}).start(),this.controls.minDistance=o,this.controls.maxDistance=s*2.5,!r.equals(new O)&&(r.setZ(0),this.controls.target.setY(r.y))},this.resize=()=>{var a;const t=this.renderer.domElement.parentElement;if(!t)return;t.style.display="flex",this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.renderer.domElement.style.flexGrow="1";const i=t.clientWidth,r=t.clientHeight;this.size.set(i,r),this.camera.aspect=i/r,this.camera.updateProjectionMatrix(),this.css2dRenderer.setSize(i,r);const s=this.renderer.getPixelRatio();(a=this.pathTracer)==null||a.updateCamera(),this.sampleCount=0,this.renderer.setSize(i,r),this._composer.setSize(i,r),this._composer.passes.forEach(l=>l.setSize(i,r));const o=this._fxaaPass.material.uniforms;o.resolution.value.x=1/(i*s),o.resolution.value.y=1/(r*s)},this.ticker=()=>{this.stats.begin();const t=this.stats.fps();if(this.usePathTracing||(this._fpsCache.length>this._fpsCacheMax&&this._fpsCache.shift(),this._fpsCache.push(t)),this.renderer.domElement.dispatchEvent(new CustomEvent("ticker")),requestAnimationFrame(this.ticker),this.renderer.autoClear=!1,this.renderer.clear(),this.usePathTracing){this.sampleCount<this.maxSample?this.sampleCount++:this.pathTracer.pausePathTracing=!0,this.pathTracer.renderSample();const i=this.renderer.autoClear;this.renderer.autoClear=!1,this.scene.overrideMaterial=WK,this.renderer.clearDepth(),this.renderer.render(this.scene,this.camera),this.scene.overrideMaterial=null,this.renderer.render(this.overlayScene,this.camera),this.renderer.autoClear=i}else this.amr.slots.forEach(i=>{this._dragging?i.getCanInstall()&&i.render(this):i.render(this)}),xs.update(),this.controls.update(),this.css2dRenderer.render(this.scene,this.camera),this.updatePosition(),this.scene.overrideMaterial=null,this.renderer.render(this.scene,this.camera),this.renderer.render(this.overlayScene,this.camera);this.stats.end()},this.stats.showPanel(0),this.hideState(),A.fov&&(this.camera.fov=A.fov),this._ground.visible=!1,this.controls=new cE(this.camera,this.renderer.domElement),this.controls.enablePan=!1,this.controls.rotateSpeed=.5,this.controls.dampingFactor=MS,this.controls.enableDamping=!0,this.controls.maxDistance=5,this.controls.minDistance=1,this.controls.zoomSpeed=_b()?.2:1,this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.autoClear=!0,this.renderer.toneMapping=Bd,this.renderer.toneMappingExposure=1.2,this.renderer.outputColorSpace=je,this.renderer.localClippingEnabled=!0,this.css2dRenderer.domElement.style.pointerEvents="none",this.css2dRenderer.domElement.style.position="absolute",this.css2dRenderer.domElement.style.top="0px",oe.tonemapping_pars_fragment=oe.tonemapping_pars_fragment.replace("vec3 CustomToneMapping( vec3 color ) { return color; }",`
9848
+ `}};bc.styles=Nf([gj]),hv([qa()],bc.prototype,"text",2),hv([qa()],bc.prototype,"active",2),bc=hv([kf("point-element")],bc);class k_ extends Ie{constructor(A){super(),this._url=A,this._size=new Ef(0,0,0),this._load(A).then()}loaded(A){}get size(){return this._size}async _load(A){if(this._url=A,A){let e;if(A.endsWith(".glb"))e=(await Da.loadAsync(A)).scene,e&&this.loaded(e);else{const i=await new dc({useCache:!0}).loadAsync(A);return i.glb?(e=i.glb,e&&this.loaded(e),e):void 0}}else return;Mb(this)}destroy(){}}const wj="data:model/gltf-binary;base64,Z2xURgIAAADM/gAAWAkAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6Iktocm9ub3MgZ2xURiBCbGVuZGVyIEkvTyB2NC4xLjYzIiwidmVyc2lvbiI6IjIuMCJ9LCJleHRlbnNpb25zVXNlZCI6WyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiIsIktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiLCJLSFJfbWF0ZXJpYWxzX2lvciJdLCJleHRlbnNpb25zUmVxdWlyZWQiOlsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iXSwic2NlbmUiOjAsInNjZW5lcyI6W3sibmFtZSI6IlNjZW5lIiwibm9kZXMiOlswXX1dLCJub2RlcyI6W3sibWVzaCI6MCwibmFtZSI6IkhvcHBlciJ9XSwibWF0ZXJpYWxzIjpbeyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyQ29sb3JGYWN0b3IiOlsyLjAsMi4wLDIuMF19LCJLSFJfbWF0ZXJpYWxzX2lvciI6eyJpb3IiOjEuNDUwMDAwMDQ3NjgzNzE1OH19LCJuYW1lIjoiSXJvbjAxXHU2ZjA2XHU5NzYyXHU5NGEyX1x1NzY3ZCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7Im1ldGFsbGljRmFjdG9yIjowLjgyNTQ1NTAwOTkzNzI4NjQsInJvdWdobmVzc0ZhY3RvciI6MC40MDAwMDAwMDU5NjA0NjQ1fX1dLCJtZXNoZXMiOlt7ImV4dHJhcyI6eyJvcmlnaW5fZ29vZHNXaWR0aCI6MC4xOTkzOTk5OTI4MjM2MDA3Nywib3JpZ2luX2dvb2RzTGVuZ3RoIjowLjIwMDAwMDAwMjk4MDIzMjI0LCJ0YXJnZXROYW1lcyI6WyJnb29kc1dpZHRoIiwiZ29vZHNMZW5ndGgiXX0sIm5hbWUiOiJNZXNoLjAzMiIsInByaW1pdGl2ZXMiOlt7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6MCwiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjoyLCJtYXRlcmlhbCI6MCwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjMsIk5PUk1BTCI6NH0seyJQT1NJVElPTiI6NSwiTk9STUFMIjo2fV19XSwid2VpZ2h0cyI6WzAsMF19XSwiYWNjZXNzb3JzIjpbeyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTM0OSwibWF4IjpbMC4xMDMwMDA0MTczNTE3MjI3MiwwLjEyODAwMTY4OTkxMDg4ODY3LDAuMTA1MDAwMDE5MDczNDg2MzNdLCJtaW4iOlstMC4xMDMwMDAwMDAxMTkyMDkyOSwxLjE5MjA5Mjg5NTUwNzgxMjVlLTA3LC0wLjEwNDk5OTYwMTg0MDk3MjldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6NDA5OCwidHlwZSI6IlNDQUxBUiJ9LHsiYnVmZmVyVmlldyI6MSwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksIm1heCI6WzAuNDk5OTk5NzMxNzc5MDk4NSwwLDBdLCJtaW4iOlstMC41MDAwMDA2NTU2NTEwOTI1LDAsLTQuMDUyOTk5NDI5NDA0NzM1NmUtMDddLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInNwYXJzZSI6eyJjb3VudCI6NjM3LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjIsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6M319LCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6NCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksIm1heCI6WzAsMS4xOTIwOTI4OTU1MDc4MTI1ZS0wNywwLjUwMDAwMTMxMTMwMjE4NTFdLCJtaW4iOlswLC01Ljk2MDQ2NDQ3NzUzOTA2M2UtMDgsLTAuNDk5OTk4NDUwMjc5MjM1ODRdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjEzNDksInNwYXJzZSI6eyJjb3VudCI6NjM4LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjUsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6Nn19LCJ0eXBlIjoiVkVDMyJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTI1NzcsImJ5dGVPZmZzZXQiOjB9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNjE4OCwiYnl0ZU9mZnNldCI6MTI1ODAsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxMjc0LCJieXRlT2Zmc2V0IjoyODc2OH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjc2NDQsImJ5dGVPZmZzZXQiOjMwMDQ0fSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTYxODgsImJ5dGVPZmZzZXQiOjM3Njg4LCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTI3NiwiYnl0ZU9mZnNldCI6NTM4NzZ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo3NjU2LCJieXRlT2Zmc2V0Ijo1NTE1Mn1dLCJidWZmZXJzIjpbeyJieXRlTGVuZ3RoIjo2MjgwOH1dfSAgWPUAAEJJTgBEUkFDTwICAQAAANYKxQoBJgAjAAoACgApACYACwAnACsAKwAgAAsADgALACAAIAANAA4ADwAOAA0ADQATAQ8AGgAWABAAEAAdABoAFgAUABIAEgAQABYAFAAYAAQBBAESABQAFQAXABsAGwAYAdACFQAbANACFQDQAtICGQAVANICDAAfACoAEgEMACoAFgESASoAFgEqAAkBCQAiAAkBCQEqAAkACAEhACQAJAAOAQgBJwAoAAgACAArACcALAAuADAALQGTATsAMgAtATsAMAAyADsALAAwADsAOQA7AJMBkwGYATkAkwDDAN0A3QBNAJMAhwCFAFQAVABWAIcAhQBaAFgAWABUAIUAXgBYAFoAWgBgAF4AXABiAGQAZAA1AFwATwCSAJQATwCUAJYATwCWAJgATwCYAJoAogB8AJ4AoACiAJ4AmgCgAJ4AmgCeAJwAmgCcAIoAgAB+AGEAggCAAGEAYQBfAFkAWQCEAIYAYQBZAIYAggBhAIYAiACCAIYAigCIAIYAmgCKAIYATwCaAIYAhgCMAI4ATwCGAI4ATwCOAJAAUwBXAF0AXQBbANYAXQDWANQAXQDUANIAXQDSALwAuAC0ALYAuwC4ALYAvAC7ALYAvAC2AL4AxQDAAMIAxgDFAMIAwgBRAMgAyADKAMwAwgDIAMwAxgDCAMwAzgDGAMwA0ADOAMwAvgDQAMwAvAC+AMwAXQC8AMwAUwBdAMwAUwDMAFUAegDWAFsA2AB6AFsA2ABbADQA2gDYADQAdADaADQAcAB0ADQAZgBwADQAZgA0ANwAwgDAAN8AwgDfAOEA3ADCAOEA3ADhAOMA3ADjAOUAZgDcAOUAZgDlAOcAZgDnAOkAZgDpAOsAtgC0AGgA6wC2AGgAZgDrAGgAcQPtAO8A7wDxAPMAcQPvAPMAcQPzAPYAMgFxA/YANAA3AAIBAgEwAjQAmAECATcANwA5AJgBAAE9AEAAQAAzAgABQABCAAMBAwEzAkAALgEDAUIAQgBEAC4BPwIuAUQARABGAD8CQgI/AkYARgBIAEICRQJCAkgASABKAEUCKwFFAkoASgDcACsBYQB+AHgAYQB4AHYAYwBhAHYAYwB2ALIAYwCyAHIAYwByAG4ANgFjAG4ATAA2AW4ATABuAGwATABsAGoAngB8AKQAagCeAKQAagCkAKYATABqAKYATACmAKgATACoALAATACwAK4ATACuAKwAqgCUAJIArACqAJIATACsAJIA0QIvAQQBBAEYANECMQG6AwYBBgEPADEBugMqAQcBBwEGAboDKgEmARkBGQEHASoBFwEKARABEAEMARcBHgARABMAEwAFATABHgATADABHgAwAcEDFAEeAMEDGAENAcMDwwPQAhgBJwAcAR0BHQEoACcAIQEfAR0BHQEcASEBGQEaAR8BHwEhARkBGQEiAQcBIQEcASUBJQEkASEBCwAlARwBHAEnAAsAIwEGAQcBBwEiASMBIwEiASQBJAElASMBDwAGASMBIwEOAA8ADgAjASUBJQELAA4AGQEmATIBGQEyAfYAGgEZAfYAKQE5AfgA+AD6APwAKQH4APwAKQH8AP4AKQH+ACcBFAHBAzEBMQEPABMBHAARARUBFQEaAB0ADwElADkBDwE5ASkBDwEpAcIDDwHCAwsBIAEbASYAHgEgASYAKQAeASYArwCxAOYA5gDkAK8AsQCpAOgA6ADmALEAqQCnAOoA6gDoAKkApwClAOwA7ADqAKcApQB9ALcAtwDsAKUAfQCjAL8AvwC3AH0AowChANEA0QC/AKMAoQCbAM8AzwDRAKEAmwCZAMcAxwDPAJsAmQCXAMQAxADHAJkAlwCVAMEAwQDEAJcAlQCrAOAA4ADBAJUAqwCtAOIA4gDgAKsArQCvAOQA5ADiAK0A2wB1AHMAcwCzANsAdQBxAG8AbwBzAHUAcQBnAG0AbQBvAHEAZwBpAGsAawBtAGcAaQC1AJ8AnwBrAGkAtQC5AJ0AnQCfALUAuQC6AIsAiwCdALkAugC9AIkAiQCLALoAvQDTAIMAgwCJAL0A0wDVAIEAgQCDANMA1QDXAH8AfwCBANUA1wB7AHkAeQB/ANcAewDZAHcAdwB5AHsA2QDbALMAswB3ANkAXgBgAGIAYgBcAF4AUABSAMMAwwCTAFAAUgBQAJEAkQDJAFIAyQCRAI8AjwDLAMkAywCPAI0AjQDNAMsAzQCNAIcAhwBWAM0AMAIrAdwA3AA0ADACPgABATUBNQE3AT4AMwFjADYBNgE0ATMBRwBFAEMAPwA4AU4AQQA/AE4AQwBBAE4ARwBDAE4ASQBHAE4ASwBJAE4A3gBLAE4A9QD0APkA+QA7AfUA9ADyAPsA+wD5APQA8gDwAP0A/QD7APIA8ADuAP8A/wD9APAAcgMoAf8A/wDuAHIDJgAbAfcA9wA6ASYAGQEhASQBGQEkASIBMwE8AUQBRAFjADMBQgFAAT4BQgE+AUcBQgFHAUUBiQJCAUUBPQGJAkUBiAIsATMAMwBDAYgCLwAtAEgBSAE/AS8AMQAvAD8BPwFBATEAMwAxAEEBQQFDATMALQA8AEYBRgFIAS0AOAA2AGUAOABlAEYBOABGATwAOgA4ADwA9QOhAqMC9QOjAvMDTgFQAQcATgEHAAUATAFOAQUATAEFAAMASgEBAJ0CSgGdAvEDWwFjAWEBYQFeAVsBZAFpAWcBZwFlAWQBbAFrAWkBaQFkAWwBcAFvAWsBawFsAXABdQFzAXEBcQF3AXUBdwFxAXkBeQF7AXcBewF5AX8BfwF9AXsBLASEAXYBdgF4AXwBLAR2AXwBKwQsBHwBfgErBHwBggGGAWYBZgFoAWoBZgFqAW4BggFmAW4BYAFmAYYBhgFdAWABhQGIAVkBWQFcAYUBZQFnAV8BXwFiAWUBlAGTAS0BlAEtAZEBlAGRAY8BiwGUAY8BiwGPAY0BlgGYAZMBkwGUAZYBnQGaAaEBoQGfAZ0BqAGmAaQBpAGqAagBqgGkAawBrAGuAaoBsgGwAa4BrgGsAbIBtwG0AbsBuwG5AbcBvQHfAd0B3QHbAacBvQHdAacBpwGpAa0BrQGvAbgBpwGtAbgBuAHZAdcBuAHXAdUBpwG4AdUBpwHVAdMBpwHTAdEBzQHLAckBzQHJAccBzQHHAcUBzwHNAcUB0QHPAcUBpwHRAcUBvQGnAcUBvQHFAcMBvQHDAcEBvQHBAb8BvQG/AZwBowGlAQMCAwIBAv8B/wH9AZ4BAwL/AZ4BngH7AfkBngH5AfcBAwKeAfcBAwL3AfUBAwL1AfMBAwLzAfEB7wHtAesB7wHrAekB7wHpAecB8QHvAecBAwLxAecB4QG2AbEB4wHhAbEB5QHjAbEB5wHlAbEBAwLnAbEBowEDArEBowGxAasBHwLtAe8BHwLvAR0CBQIfAh0CBQIdAhsCBQIbAhkCBQIZAhcCEQL7AZ4BEwIRAp4BEwKeAaABFQITAqABFwIVAqABBQIXAqABBQKgAbMBtgHhAQ8CtgEPAg0CswG2AQ0CswENAgsCswELAgkCswEJAgcCBQKzAQcCKgIoAiYCJgIkAiICKgImAiICLAIqAiICIQIsAiICswEwAgIBAgExArMBmAGWATECMQICAZgBAAEzAjcCNwI0AgABNwIzAgMBAwE5AjcCLgE7AjkCOQIDAS4BPwI9AjsCOwIuAT8CQgJAAj0CPQI/AkICRQJDAkACQAJCAkUCKwGgAUMCQwJFAisBnAG/AWMCnAFjAmECmQGcAWECmQFhAl8CmQFfAl0CmQFdAlsCmQFbAlkCVwLLAc0BVwLNAVUCWQJXAlUCmQFZAlUCmQFVAlMCmQFTAlECSQLZAbgBSwJJArgBSwK4AboBTQJLAroBTwJNAroBUQJPAroBUQK6AUYCmQFRAkYCKgR9AX8BfwEHBSoECwVwAWUCZQIKBQsFCgVlAmcCZwJmAgoFZgJnAmgCaAIOBWYCgwFqAooBigGHAYMBCAWAAXoBegFyAXQBCAV6AXQBbAIIBXQBbwFsAnQBhAEsBBMFEwVrAoQBZQFiAW4CbgJtAmUBcAJtAm4CbgJxAnACaAJwAnECcQJzAmgCaAJnAnUCcAJ3AnYCdgJtAnACZAFlAW0CbQJ2AmQBeAJ1AmcCZwJlAngCeAJ2AncCdwJ1AngCcAFsAXgCeAJlAnABbAFkAXYCdgJ4AmwBIQIOBWgCLAIhAmgCcwIsAmgCIAUhBYMCIAWDAoECgQJ/AnwCIAWBAnwCIAV8AnkCbwFwAQsFCwVsAm8BcwF1AYEBgQFtAXMBiQESBSAFiQEgBXkCiQF5AloBiQFpAhIFWwF0AnICWwFyAm8CYwFbAW8CYAIWAhgCGAJeAmACXgIYAhoCGgJcAl4CXAIaAhwCHAJaAlwCWgIcAh4CHgJYAloCWAIeAvAB8AHMAVgCzAHwAfIB8gHKAcwBygHyAfQB9AHIAcoByAH0AfYB9gHGAcgBxgH2AfgB+AHEAcYBxAH4AfoB+gHCAcQBwgH6AfwB/AHAAcIBwAH8ARICEgJkAsABZAISAhQCFAJiAmQCYgIUAhYCFgJgAmICDAJOAlACUAIKAgwCCgJQAlICUgIIAgoCCAJSAlQCVAIGAggCBgJUAlYCVgIgAgYCIAJWAs4BzgHuASAC7gHOAdAB0AHsAe4B7AHQAdIB0gHqAewB6gHSAdQB1AHoAeoB6AHUAdYB1gHmAegB5gHWAdgB2AHkAeYB5AHYAdoB2gHiAeQB4gHaAUoCSgIQAuIBEAJKAkwCTAIOAhACDgJMAk4CTgIMAg4CsgG3AbkBuQGwAbIBvgGdAZ8BnwH+Ab4B/gEAAuAB4AG+Af4BAAICAt4B3gHgAQACAgIEAtwB3AHeAQICBAKmAagBqAHcAQQCMAKzAaABoAErATACNQJHAjUBNQEBATUCMwE0AUYCRgK6ATMBmwFIAjYCmwE2AjgCmwE4AjoCOgI8Aj4CmwE6Aj4CmwE+AkECmwFBAkQCogGbAUQCLQJ6An0CfgIrAi4CKwJ+AoACgAIpAisCKQKAAoICggInAikCJwKCAoQChAIlAicCIwIlAoQChAIiBSMCWwF7Ai8CLwJ0AlsBaAJ3AnACaAJ1AncCMwG6AYUChQI8ATMBkAKNAosCkgKPAooChgKSAooChgKKAokCPQGGAokCiAKMApIBkgEsAYgCjgGRApMCkwKMAY4BkAGOApECkQKOAZABkgGMAo4CjgKQAZIBjAGTAocChwKVAYwBvAG1ATIChwK8ATIClQGHAjIClwGVATICUAGXAlgBUAFYAQcAmwJUAVYBmwJWAZkClQJSAVQBlQJUAZsCQwU5BfgDAAACAAQABAAGAFcBVwFVAVMB/gP8A/oD+gOiAqACoAKeApwCnAIAAAQABABXAVMB/gP6A6ACoAKcAgQABABTAVEBoAIEAFEB/gOgAlEBUQFDBfgDUQH4A/4DlgJPAU0BTQFLAUkBSQHwA/YD9gP0A/ID8gNBBT8FPwU9BToFOgWUApoCmgKYApYClgJNAUkBSQH2A/ID8gM/BToFOgWaApYClgJJAfID8gM6BZYClQI8BUQFlQJEBVIBpgKuAqwCrAKpAqYCrwK0ArICsgKwAq8CtwK2ArQCtAKvArcCuwK6ArYCtgK3ArsCwQK+ArwCvALCAsECwgK8AsQCxALGAsICxgLEAsoCygLIAsYC0ALPAsACwALDAscC0ALAAscC0gLQAscCyQLSAscCzQLUArECsQKzArUCsQK1ArkCzQKxArkCqwKxAtQC1AKoAqsC0wLWAqQCpAKnAtMCsAKyAqoCqgKtArAC5ALjAuIC5ALiAt8C5ALfAt0C2QLkAt0C2QLdAtsC5gLoAuMC4wLkAuYC7QLqAvEC8QLvAu0C+AL2AvQC9AL6AvgC+gL0AvwC/AL+AvoCAgMAA/4C/gL8AgIDBwMEAwsDCwMJAwcDDQMvAy0DLQMrA/cCDQMtA/cC9wL5Av0C/QL/AggD9wL9AggDCAMpAycDCAMnAyUD9wIIAyUD9wIlAyMD9wIjAyEDHQMbAxkDHQMZAxgDHQMYAxUDHwMdAxUDIQMfAxUD9wIhAxUDDQP3AhUDDQMVAxMDDQMTAxEDDQMRAw8DDQMPA+wC8wL1AlMDUwNRA08DTwNNA+4CUwNPA+4C7gJLA0kD7gJJA0cDUwPuAkcDUwNHA0UDUwNFA0MDUwNDA0EDPwM9AzsDPwM7AzkDPwM5AzcDQQM/AzcDUwNBAzcDMQMGAwEDMwMxAwEDNQMzAwEDNwM1AwEDUwM3AwED8wJTAwED8wIBA/sCbwM9Az8DbwM/A20DVQNvA20DVQNtA2sDVQNrA2kDVQNpA2cDYQNLA+4CYwNhA+4CYwPuAvACZQNjA/ACZwNlA/ACVQNnA/ACVQPwAgMDBgMxA18DBgNfA10DAwMGA10DAwNdA1sDAwNbA1kDAwNZA1cDVQMDA1cDeQN3A3UDdQNzA3EDeQN1A3EDewN5A3EDMgF7A3EDAwOAA38DfwOBAwMD6ALmAoEDgQN/A+gChAODA4kDiQOGA4QDiQODA4sDiwOMA4kDkAOOA4wDjAOLA5ADkwORA44DjgOQA5MDlgOUA5EDkQOTA5YDmQOXA5QDlAOWA5kDmgPwApcDlwOZA5oD7AIPA7gD7AK4A7YD6QLsArYD6QK2A7QD6QK0A7ID6QKyA7AD6QKwA64DrAMbAx0DrAMdA6oDrgOsA6oD6QKuA6oD6QKqA6gD6QKoA6YDngMpAwgDoAOeAwgDoAMIAwoDogOgAwoDpAOiAwoDpgOkAwoDpgMKA5sD6QKmA5sD0QLIAsoCygIvAdECMQG7ArsDuwO6AzEBugO7A7wDvAMqAboDKgG8A70DvQMmASoBzgK/A9gC2ALVAs4CMAHLAsUCxQK9Ar8CMAHFAr8CwQMwAb8CugLBA78CzwLQAsMDwwPAA88CsAKtAsUDxQPEA7ACxwPEA8UDxQPIA8cDvQPHA8gDyAPKA70DvQO8A8wDxwPOA80DzQPEA8cDrwKwAsQDxAPNA68CzwPMA7wDvAO7A88DzwPNA84DzgPMA88DuwK3As8DzwO7A7sCtwKvAs0DzQPPA7cCMgEmAb0DewMyAb0DygN7A70DKQEnAdoDKQHaA9gD2APWA9MDKQHYA9MDKQHTA9ADugK7AjEBMQHBA7oCvgLBAswCzAK4Ar4C1wLCAykB1wIpAdAD1wLQA6UC1wK+A8IDpgLLA8kDpgLJA8YDrgKmAsYDtQNmA2gDaAOzA7UDswNoA2oDagOxA7MDsQNqA2wDbAOvA7EDrwNsA24DbgOtA68DrQNuA0ADQAMcA60DHANAA0IDQgMaAxwDGgNCA0QDRAMXAxoDFwNEA0YDRgMWAxcDFgNGA0gDSAMUAxYDFANIA0oDSgMSAxQDEgNKA0wDTAMQAxIDEANMA2IDYgO5AxADuQNiA2QDZAO3A7kDtwNkA2YDZgO1A7cDXAOjA6UDpQNaA1wDWgOlA6cDpwNYA1oDWAOnA6kDqQNWA1gDVgOpA6sDqwNwA1YDcAOrAx4DHgM+A3ADPgMeAyADIAM8Az4DPAMgAyIDIgM6AzwDOgMiAyQDJAM4AzoDOAMkAyYDJgM2AzgDNgMmAygDKAM0AzYDNAMoAyoDKgMyAzQDMgMqA58DnwNgAzIDYAOfA6EDoQNeA2ADXgOhA6MDowNcA14DAgMHAwkDCQMAAwIDDgPtAu8C7wJOAw4DTgNQAzADMAMOA04DUANSAy4DLgMwA1ADUgNUAywDLAMuA1IDVAP2AvgC+AIsA1QDgAMDA/AC8AKaA4ADhwOcA90D3QOFA4cD3gPcA5sDmwMKA94D6wKdA4gD6wKIA4oD6wKKA40DjQOPA5ID6wKNA5ID6wKSA5UD6wKVA5gD8gLrApgDfgPSA9UD1AN6A3wDegPUA9cD1wN4A3oDeAPXA9kD2QN2A3gDdgPZA9sD2wN0A3YDcgN0A9sD2wMoAXIDpgLRA30DfQPLA6YCvQPOA8cDvQPMA84D3gMKA+ED4QPfA94D7APpA+cD7gPrA+YD4gPuA+YD4gPmA+UD4APiA+UD5APoA+AC4ALhAuQD3ALtA+8D7wPaAtwC3gLqA+0D7QPcAt4C4ALoA+oD6gPeAuAC2gLvA+MD4wPlAtoCDAMFA4ID4wMMA4ID5QLjA4ID5wLlAoIDQgXzA6MCQgWjAvsD9wOfAqEC9wOhAvUD8QOdAp8C8QOfAvcDOwU+Bf8DOwX/A/kDAgQKBAcEBwQEBAIECwQQBA8EDwQNBAsEEQQLBA0EDQQTBBEEFAQRBBMEEwQXBBQEHQQbBBoEGgQgBB0EGwQkBCIEIgQaBBsEJAQoBCYEJgQiBCQEJQQcBB4EHgQxBCwEJQQeBCwEJQQsBCsEKQQlBCsEEgQMBA4EFgQSBA4ELgQWBA4ELgQOBDMEBgQJBDMEMwQOBAYEMgQIBAAEAAQ1BDIEEAQDBAUEBQQPBBAEOARABD4E4gLjAjoEPATiAjoEPgQ8BDoEOAQ+BDoEQgQ6BOMC4wLoAkIETQRLBEgESARFBE0EUwRRBE8ETwRVBFMEUQRZBFcEVwRPBFEEWwRXBFkEWQRdBFsEZwRlBGIEYgRfBGcEaARMBIoEaASKBIgEaASIBIYEaASGBIQEgAR+BHwEggSABHwEhASCBHwEhAR8BHoEhAR6BHgEcgRwBGQEdARyBGQEZARcBFgEWARQBFIEZARYBFIEdARkBFIEdgR0BFIEeAR2BFIEhAR4BFIEaASEBFIEUgRuBGwEaARSBGwEaARsBGoETgRWBFoEWgRmBK4EWgSuBKwEWgSsBKoEWgSqBKgEpASiBKAEpgSkBKAEqASmBKAEqASgBJ4ElgSUBEoEmASWBEoESgSSBJAEkASOBIwESgSQBIwEmARKBIwEmgSYBIwEnASaBIwEngScBIwEqASeBIwEWgSoBIwETgRaBIwETgSMBFQEwgSuBGYExATCBGYExARmBF4ExgTEBF4EyATGBF4EygTIBF4EsATKBF4EsAReBEcESgSUBMAESgTABL4ERwRKBL4ERwS+BLwERwS8BLoEsARHBLoEsAS6BLgEsAS4BLYEsAS2BLQEoASiBLIEtASgBLIEsAS0BLIEIgLVBNME0wTRBM8EIgLTBM8EIgLPBM0EIQIiAs0EXgTXBH8DfwOAA14E6AJ/A9cE1wRCBOgChAPbBNkE2QSDA4QD2QTeBIsDiwODA9kEkAOLA94E3gTgBJADkwOQA+AE4ATiBJMDlgOTA+IE4gTkBJYDmQOWA+QE5ATmBJkDmgOZA+YE5gRHBJoDZARwBAIFZAQCBQAFYQRkBAAFYQQABf4EYQT+BPwEYQT8BPoEBAVhBPoERAQEBfoERAT6BPgERAT4BPYEfAR+BPQE9gR8BPQE9gT0BPIERAT2BPIERATyBPAERATwBO4ERATuBOwERATsBOoE6ASKBEwE6gToBEwERATqBEwEKgQHBSYEJgQoBCoECwUKBQkFCQUUBAsFCgVmAgwFDAUJBQoFZgIOBQ0FDQUMBWYCMAQ0BDcENwQQBTAEIQQZBCMEIwQnBAgFIQQjBAgFIQQIBWwCGAQhBGwCMQQRBRMFEwUsBDEEEAQWBRQFFAUDBBAEGQUXBRQFFAUWBRkFDQUaBRcFFwUZBQ0FDQUcBQwFGQUWBR4FHgUdBRkFCwQeBRYFFgUQBAsEHwUJBQwFDAUcBR8FHwUcBR0FHQUeBR8FFAQJBR8FHwURBBQEEQQfBR4FHgULBBEEDQUOBSECDQUhAs0EGgUNBc0EIAUrBSkFKQUnBSUFIAUpBSUFIAUlBSMFIAUjBSEFGARsAgsFCwUUBBcEHwQVBC0ELwQdBCAENgQBBCsFNgQrBSAFNgQgBRIFNgQSBQ8FGAUbBQIEFQUYBQIEBAQVBQIE7QTvBLsEuwS9BO0E7wTxBLkEuQS7BO8E8QTzBLcEtwS5BPEE8wT1BLUEtQS3BPME9QR/BKEEoQS1BPUEfwSBBJ8EnwShBH8EgQSDBJ0EnQSfBIEEgwSFBJsEmwSdBIMEhQSHBJkEmQSbBIUEhwSJBJcElwSZBIcEiQSLBJUElQSXBIkEiwTpBMEEwQSVBIsE6QTrBL8EvwTBBOkE6wTtBL0EvQS/BOsExwTJBP0E/QT/BMcEyQTLBPsE+wT9BMkEywSxBPkE+QT7BMsEsQSzBPcE9wT5BLEEswSjBH0EfQT3BLMEowSlBHsEewR9BKMEpQSnBHkEeQR7BKUEpwSpBHcEdwR5BKcEqQSrBHUEdQR3BKkEqwStBHMEcwR1BKsErQSvBHEEcQRzBK0ErwTDBAMFAwVxBK8EwwTFBAEFAQUDBcMExQTHBP8E/wQBBcUEWwRdBGUEZQRnBFsEaQSTBEsESwRNBGkEkwRpBGsEawSRBJMEkQRrBG0EbQSPBJEEjwRtBG8EbwSNBI8EjQRvBFMEUwRVBI0EgAOaA0cERwReBIAD3ASFA90D3QMFBdwE3gNhBAQFBAXcA94D4wThBN8E3QQGBUYE2gTdBEYE3wTaBEYE4wTfBEYE5QTjBEYE5wTlBEYESQTnBEYEzATQBCoFKgUsBcwE0ATSBCgFKAUqBdAE0gTUBCYFJgUoBdIE1ATWBCQFJAUmBdQEIwIiBSQFJAXWBCMCAgQbBc4EzgQtBQIEDQUZBR0FDQUdBRwF3gPfAy4FLgVhBN4DNwU1BTMFNwUzBTEFNwUxBS8F5QM3BS8F4APlAy8F5APhAj0EPQQ4BeQDQQQ5BDIFMgU0BUEEPwRBBDQFNAU2BT8EPQQ/BDYFNgU4BT0EOQQ7BDAFMAUyBTkE2ARgBGME2ARjBDAF2AQwBTsEQwTYBDsEmQJWAVgBmQJYAZcCQAVCBfsDQAX7A/0DPgVABf0DPgX9A/8DSgFMAQMASgEDAAEAAQIACQMAAAEJAwABAgMAAQEBCYCAAaVWCBgnCAg3CBAfGCDMgBAQMDggIAcYGB9NAW0BtLQHGCAoGBcQEAcIGzAYEAsQCB9AQAgTgGAoODAwLxgQEBA3CBOItAMIMDgLEA+8tG0BZQEPEAgYGFA4DyAYGBgvCBAPEAgXCBsICBchAhkCBxgLCBAQICcoKAgQJygICAgfCANAQGfMrLsYb0BAAwgPEBMQAwgrCCggEA8QRwgDCE+0rAhrCDsYAyBALwg7CBgIbwg3CBh3CAsIfwhnCAgzEAMILwjzEEAQ/28Q///XIIMIEAi7GCgvCLMQCI8gGBcIICAgRwhfCD8IswiHCBcICAcoIP8vCHsQIE8IWyhAAwj/uwifIBDvCP9zCAj//28Y//9jCP8zCAj//48ICP//Cwj//y8ICG8I////oxgQ//9fCAMIGP//ZyA4FwgI/wj///sICK8I/////xMIvxD//ysI/+9IOK8QGAMQ/6sIrwg7CBCPGBj/txAI/0cIMwi7CAggEP////8fEBAHCAj/////////7xAQ/////9sI/////////0cwQO8I//+vCP///58I8wgI////////TxAI//+HEAjPEDsI//9vCI8IEP//ZwgI///HCDsI//9rCBAbCP//RwgY/zMI///3EP9DEP///3useP//axj/Vwj/bxj/YxCjGGsIQxAYCP//8wj/WwhzCP//dyAI/////////z8ICAgI/////y8Im1hAMDj/////////Kwj/////+xgI/////9MQBwj//////////////2MI/////////////////////////////xMQ////ywj/////////////////////////////1yggEAinCBcIpxj/xwizCP9nCGsI/wsQBwj/BxAQAwj/////0wgQ2Qx/nPdxNYEaIyJZagh9mZ1k7nNL2udg6Mv7MlvVLUukkrrgM+gNAigG1bbjSHtQ10ywOu3ZhHicV6OXQDMVjKhucADbT6tz63899M+pxDjO/lNWixrAQPydRNtsr8PfvT/1n6kAI67epgvEtYDDROBER3aMgCs8OZONmVHaWK+KfG6b10rHIvSdwweWRwlBtR02EJEj1P+qVc+5J2mNiPfZ8ghESOsFc/1u1RAL+1o4Z3/D5F1r7xquIRARtO8EMNex/3xFMErG7aInM08q4Ib7Gp3nQpxHkCpOITSIAHD8Kv4c85mRb7yPqcx/l2XegBMhkOD87i0ngRXBKSbXQD8EQf57zr77RQrXWdEx1TsryA13ugVmdpASxfGCC6VknwiFFEuuw/J58ZXPnp45WF+CHUxdZwHq02USjuYo8at83gWYVG+OxvKu8DxflSyPTVueHdHYUDGnjWVWKEB1pln/PhUGM8kpQWATiGkb6d5deby6nGrG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CAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACwAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACA8v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09///PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACA8///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAmNm09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAmNm09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi0AAAAAAAAAAAAAACAAAAAAAAAAAAAAACA9v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi0CQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACABwAAvwAAAAAAAACABwAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACwAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACAAAAAAAAAAAAAAACAAAAAAAAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACQAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACACAAAvwAAAAAAAACACAAAvwAAAAAAAACACgAAvwAAAAAAAACACgAAvwAAAAAAAACA8v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAmNm08f//PgAAAAAAmNm08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi09f//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAmNm08v//PgAAAAAAmNm09P//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAmNm08f//PgAAAAAAmNm08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi09v//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAmNm08v//PgAAAAAAANi08v//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi09P//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08///PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi09v//PgAAAAAAANi09v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi08f//PgAAAAAAANi08f//PgAAAAAAANi08v//PgAAAAAAANi08v//PgAAAAAAANi0AQADAAUABwALAA0ADgAPABAAEgAUABYAGAAaAB0AIAAnACgAKwAtAC8AMQAzADQANgA3ADgAOQA7ADwAQABBAEIAQwBEAEYARwBIAEkASgBLAFAAUgBUAFYAWABaAF4AYABjAGUAZwBpAGsAbQBvAHEAcwB1AHcAeQB7AH0AfwCBAIMAhQCHAIkAiwCNAI8AkQCVAJcAmQCbAJ0AnwChAKMApQCnAKkAqwCtAK8AsQCzALUAtwC5ALoAuwC9AL8AwQDEAMcAyQDLAM0AzwDRANMA1QDXANkA2wDcAN4A4ADiAOQA5gDoAOoA7ADuAPAA8gD0APUA+QD7AP0A/wACAQMBBAEGAQcBCgEMARABEwEXARkBGgEcAR0BHwEhASIBIwEkASUBJgEqASsBLgExATMBOwE8AT8BQQFDAUQBRgFIAUoBTAFOAVABUgFUAVYBWAFiAWQBZQFnAWkBawFsAW8BcAFxAXMBdQF3AXkBewF9AX8BgwGHAYoBjAGOAZABkgGTAZQBlgGYAaABpAGmAagBqgGsAa4BsAGyAbMBugG+AcABwgHEAcYByAHKAcwBzgHQAdIB1AHWAdgB2gHcAd4B4AHiAeQB5gHoAeoB7AHuAfAB8gH0AfYB+AH6AfwB/gEAAgICBAIGAggCCgIMAg4CEAISAhQCFgIYAhoCHAIeAiACJQInAikCKwItAi4CMAIxAjMCNwI5AjsCPAI9Aj8CQAJCAkMCRQJKAkwCTgJQAlICVAJWAlgCWgJcAl4CYAJiAmQCZQJmAmcCaAJqAm0CbgJwAnECcwJ1AnYCdwJ4AnoCfQJ+AoACggKEAoUCjAKOApECkwKVApcCmQKbAp0CnwKhAq0CrwKwArICtAK2ArcCugK7ArwCvgLBAsICxALGAsgCygLOAtUC2ALaAtwC3gLgAuMC5ALlAuYC5wLoAvAC8gL0AvYC+AL6AvwC/gIAAwIDAwMFAwoDDAMOAxADEgMUAxYDFwMaAxwDHgMgAyIDJAMmAygDKgMsAy4DMAMyAzQDNgM4AzoDPAM+A0ADQgNEA0YDSANKA0wDTgNQA1IDVANWA1gDWgNcA14DYANiA2QDZgNoA2oDbANuA3ADdAN2A3gDegN8A34DfwOAA4EDggODA4kDigOLA4wDjQOOA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgOfA6EDowOlA6cDqQOrA60DrwOxA7MDtQO3A7kDugO7A7wDvQO/A8QDxQPHA8gDygPMA80DzgPPA9ID1APVA9cD2QPbA94D3wPhA+MD6APqA+0D7wPxA/UD9wP5A/0D/wMDBAsEDQQPBBAEEQQTBBQEFwQaBBsEHQQgBCIEJAQmBCgEMAQ0BDcEOQQ6BD0EPwRBBEIERwRPBFEEUwRVBFcEWQRbBF0EXgRhBGkEawRtBG8EcQRzBHUEdwR5BHsEfQR/BIEEggSDBIUEhwSJBIsEjQSPBJEEkwSVBJcEmQSbBJ0EnwShBKMEpQSmBKcEqQSrBK0ErwSxBLMEtQS3BLkEuwS9BL8EwQTDBMUExwTJBMsEzATQBNIE1ATWBNcE2QTeBOAE4gTkBOYE6QTrBO0E7wTxBPME9QT3BPkE+wT9BP8E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EgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFAAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAICzFgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAAAAAgAAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFAAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAICzFgAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAAAAEAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAICzFAAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAFgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAEgAAPwAAAAAAAAAAFAAAPwAAAAAAAAAAFAAAPwAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAA0yv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzzP//vgAAAAAAAIAzzP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAAA0yv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAAA0zP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyP//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgAAAAAAAIAzyv//vgEAAwAFAAcACwANAA4ADwAQABIAFAAWABgAGgAdACAAJwAoACsALQAvADEAMwA0ADcAOQA7AEAAQgBEAEYASABKAFAAUQBSAFQAVgBYAFoAXgBgAGMAZwBpAGsAbQBvAHEAcwB1AHcAeQB7AH0AfwCBAIMAhACFAIcAiQCLAI0AjwCRAJUAlwCZAJsAnQCfAKEAowClAKcAqQCrAK0ArwCxALMAtQC3ALkAugC7AL0AvwDBAMQAxwDJAMsAzQDPANEA0wDVANcA2QDbANwA4ADiAOQA5gDoAOoA7ADuAPAA8gD0APUA+QD7AP0A/wACAQMBBAEGAQcBCgEMARABEwEXARkBGgEcAR0BHwEhASIBIwEkASUBJgEqASsBLAEuATEBMwE7ATwBPgE/AUEBQgFDAUQBSAFKAUwBTgFQAVIBVAFWAVgBYgFkAWUBZwFpAWsBbAFvAXABcQFzAXUBdwF5AXsBfQF/AYMBhwGKAYwBjgGQAZIBkwGUAZYBmAGgAaQBpgGoAakBqgGsAa4BsAGyAbMBugG+AcABwgHEAcYByAHKAcwBzgHQAdIB1AHWAdcB2AHaAdwB3gHfAeAB4gHjAeQB5gHoAeoB7AHuAfAB8gH0AfYB+AH6AfwB/gEAAgECAgIEAgYCBwIIAgoCDAIOAhACEgIUAhYCGAIaAhwCHgIgAiUCJwIpAisCLQIuAjACMQIzAjcCOQI7Aj0CPwJAAkICQwJFAkkCSgJMAk4CUAJSAlQCVgJYAloCWwJcAl4CYAJiAmQCZQJmAmcCaAJqAm0CbgJwAnECcwJ1AnYCdwJ4AnoCfQJ+AoACggKEAoUCiAKMAo4CjwKRApMClQKXApkCmwKdAp8CoQKtAq8CsAKyArQCtgK3AroCuwK8Ar4CwQLCAsQCxgLIAsoCzgLVAtgC2gLcAt4C4ALjAuQC5gLoAvAC9AL2AvgC+QL6AvsC/AL+AgADAgMDAwoDDgMQAxIDFAMWAxcDGgMcAx4DIAMiAyQDJgMoAyoDLAMuAy8DMAMyAzQDNgM4AzoDPAM+A0ADQgNEA0YDSANKA0wDTgNQA1EDUgNUA1YDWANaA1wDXgNgA2IDZANmA2gDagNsA24DcAN0A3YDeAN6A3wDfgN/A4ADgQODA4kDiwOMA44DkAORA5MDlAOWA5cDmQOaA54DnwOhA6MDpQOnA6kDqwOtA68DsQOzA7UDtwO5A7oDuwO8A70DvwPEA8UDxwPIA8oDzAPNA84DzwPSA9QD1QPXA9kD2wPeA98D4QPoA+oD6wPtA+8D8QP1A/cD+QP9A/8DAwQLBA0EDwQQBBEEEwQUBBcEGgQbBB0EIAQiBCQEJgQoBDAENAQ3BDkEOgQ9BD8EQQRCBEcETwRRBFMEVQRXBFkEWwRcBF0EXgRhBGkEawRtBG8EcQRzBHUEdwR5BHsEfQR/BIEEggSDBIUEhwSJBIsEjQSOBI8EkQSTBJUElwSZBJsEnQSfBKEEowSlBKYEpwSpBKsErQSvBLEEswS1BLcEuQS7BL0EvwTBBMMExQTHBMkEywTMBNAE0gTUBNYE1wTZBN4E4ATiBOQE5gTpBOsE7QTvBPEE8wT1BPcE+QT7BP0E/wQBBQMFCQUKBQsFDAUNBQ4FEAUUBRYFFwUZBRoFHAUdBR4FHwUkBSYFKAUqBSwFLgUyBTMFNAU2BTcFOAU7BT4FQAUAAIC0AAAAAAAAQC8AAKA3AAAAAAAAObcAoLq4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";class Cj extends Ie{constructor(A){super(),this._items=[],this._group=new Et,this._gap=0,this._size=new Ef(0,0,0),this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._gap=A||0,this.add(this._group)}get size(){return this._size}get items(){return this._items}addItem(A){this._items.push(A),this._group.add(A),this.updateLayout(),A.addEventListener("size-change",()=>{this.updateLayout()})}updateLayout(){const A=this._items.reduce((r,s,o)=>{const{width:a,length:l}=s.size;return r+a+(o<this._group.children.length-1?this._gap:0)},0);let e=0,t=0,i=-A/2;this._items.forEach(r=>{const s=r.size.width;r.position.x=i+s/2,i+=s+this._gap,e=r.size.length,t=r.size.height}),this.size.width=A,this.size.length=e,this.size.height=t,this._emitter.emit("size-change",this.size)}destroy(){this._items.forEach(A=>{A.destroy()}),this._items=[],this._emitter.removeAllListeners()}}const xj="data:model/gltf-binary;base64,Z2xURgIAAABQcQEA6CIAAEpTT057ImFzc2V0Ijp7ImdlbmVyYXRvciI6Iktocm9ub3MgZ2xURiBCbGVuZGVyIEkvTyB2NC4xLjYzIiwidmVyc2lvbiI6IjIuMCJ9LCJleHRlbnNpb25zVXNlZCI6WyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiIsIktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiLCJLSFJfbWF0ZXJpYWxzX2lvciJdLCJleHRlbnNpb25zUmVxdWlyZWQiOlsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iXSwic2NlbmUiOjAsInNjZW5lcyI6W3sibmFtZSI6IlNjZW5lIiwibm9kZXMiOlsxXX1dLCJub2RlcyI6W3siZXh0cmFzIjp7ImlzQ29udGFpbmVyIjp0cnVlfSwibmFtZSI6IkVtcHR5IiwidHJhbnNsYXRpb24iOlswLDAuMDg2Mjc4MTI1NjQzNzMwMTYsMF19LHsiY2hpbGRyZW4iOlswXSwibWVzaCI6MCwibmFtZSI6IlJCXzIifV0sIm1hdGVyaWFscyI6W3siZG91YmxlU2lkZWQiOnRydWUsImV4dGVuc2lvbnMiOnsiS0hSX21hdGVyaWFsc19zcGVjdWxhciI6eyJzcGVjdWxhckZhY3RvciI6MH0sIktIUl9tYXRlcmlhbHNfaW9yIjp7ImlvciI6MS40NTAwMDAwNDc2ODM3MTU4fX0sIm5hbWUiOiJQbGFzdGljXHU3NmFlXHU1ZTI2IiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC4wMjAyOTE5NjU0NTQ4MTY4MTgsMC4wMjAyODc2NzAxOTUxMDI2OSwwLjAyMDI4NzA5Mjc3NTEwNjQzLDFdLCJtZXRhbGxpY0ZhY3RvciI6MC41LCJyb3VnaG5lc3NGYWN0b3IiOjAuNDYwMDAwMDA4MzQ0NjUwMjd9fSx7ImRvdWJsZVNpZGVkIjp0cnVlLCJleHRlbnNpb25zIjp7IktIUl9tYXRlcmlhbHNfc3BlY3VsYXIiOnsic3BlY3VsYXJDb2xvckZhY3RvciI6WzIuMCwyLjAsMi4wXX0sIktIUl9tYXRlcmlhbHNfaW9yIjp7ImlvciI6MS40NTAwMDAwNDc2ODM3MTU4fX0sImV4dHJhcyI6eyJuYW1lIjoiXHU1OTE2XHU1OGYzIiwiY2hhbmdlQ29sb3IiOnRydWV9LCJuYW1lIjoiSXJvbjAxXHU2ZjA2XHU5NzYyXHU5NGEyX1x1NzY3ZCIsInBick1ldGFsbGljUm91Z2huZXNzIjp7Im1ldGFsbGljRmFjdG9yIjowLjgyNTQ1NTAwOTkzNzI4NjQsInJvdWdobmVzc0ZhY3RvciI6MC40MDAwMDAwMDU5NjA0NjQ1fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyRmFjdG9yIjowfSwiS0hSX21hdGVyaWFsc19pb3IiOnsiaW9yIjoxLjQ1MDAwMDA0NzY4MzcxNTh9fSwibmFtZSI6IlBsYXN0aWNcdTllZDFcdTc4ZThcdTc4MDIiLCJwYnJNZXRhbGxpY1JvdWdobmVzcyI6eyJiYXNlQ29sb3JGYWN0b3IiOlswLjAyMDI5MTk2NTQ1NDgxNjgxOCwwLjAyMDI4NzY3MDE5NTEwMjY5LDAuMDIwMjg3MDkyNzc1MTA2NDMsMV0sIm1ldGFsbGljRmFjdG9yIjowLjUsInJvdWdobmVzc0ZhY3RvciI6MC4zODE4MTc5OTY1MDE5MjI2fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwiZXh0ZW5zaW9ucyI6eyJLSFJfbWF0ZXJpYWxzX3NwZWN1bGFyIjp7InNwZWN1bGFyQ29sb3JGYWN0b3IiOlsyLjAsMi4wLDIuMF19fSwibmFtZSI6IkFsdW1pbnVtIiwicGJyTWV0YWxsaWNSb3VnaG5lc3MiOnsiYmFzZUNvbG9yRmFjdG9yIjpbMC43MjcwMzkwMzkxMzQ5NzkyLDAuNzI3MDM5MDM5MTM0OTc5MiwwLjcyNzAzOTAzOTEzNDk3OTIsMV0sInJvdWdobmVzc0ZhY3RvciI6MC40OTU2NDM1NTYxMTgwMTE1fX0seyJkb3VibGVTaWRlZCI6dHJ1ZSwibmFtZSI6Ik1hdGVyaWFsLjAwMSIsInBick1ldGFsbGljUm91Z2huZXNzIjp7ImJhc2VDb2xvckZhY3RvciI6WzAuNzU0ODAzNzE3MTM2MzgzMSwwLjc1NDgwMzcxNzEzNjM4MzEsMC43NTQ4MDM3MTcxMzYzODMxLDFdLCJtZXRhbGxpY0ZhY3RvciI6MC45ODkwOTA5MTk0OTQ2Mjg5LCJyb3VnaG5lc3NGYWN0b3IiOjAuMTUwMDAwMDA1OTYwNDY0NDh9fV0sIm1lc2hlcyI6W3siZXh0cmFzIjp7Im9yaWdpbl9nb29kc0xlbmd0aCI6MC42OTE5OTk5NzE4NjY2MDc3LCJvcmlnaW5fZ29vZHNXaWR0aCI6MC4zODQ5OTk5OTA0NjMyNTY4NCwidGFyZ2V0TmFtZXMiOlsiZ29vZHNXaWR0aCIsImdvb2RzTGVuZ3RoIl19LCJuYW1lIjoiTWVzaC4wMjkiLCJwcmltaXRpdmVzIjpbeyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjF9LCJleHRlbnNpb25zIjp7IktIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uIjp7ImJ1ZmZlclZpZXciOjAsImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX19fSwiaW5kaWNlcyI6MiwibWF0ZXJpYWwiOjAsIm1vZGUiOjQsInRhcmdldHMiOlt7IlBPU0lUSU9OIjozLCJOT1JNQUwiOjR9LHsiUE9TSVRJT04iOjUsIk5PUk1BTCI6Nn1dfSx7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjcsIk5PUk1BTCI6OH0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6NSwiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjo5LCJtYXRlcmlhbCI6MSwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjEwLCJOT1JNQUwiOjExfSx7IlBPU0lUSU9OIjoxMiwiTk9STUFMIjoxM31dfSx7ImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjE0LCJOT1JNQUwiOjE1fSwiZXh0ZW5zaW9ucyI6eyJLSFJfZHJhY29fbWVzaF9jb21wcmVzc2lvbiI6eyJidWZmZXJWaWV3IjoxMywiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MCwiTk9STUFMIjoxfX19LCJpbmRpY2VzIjoxNiwibWF0ZXJpYWwiOjIsIm1vZGUiOjQsInRhcmdldHMiOlt7IlBPU0lUSU9OIjoxNywiTk9STUFMIjoxOH0seyJQT1NJVElPTiI6MTksIk5PUk1BTCI6MjB9XX0seyJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjoyMSwiTk9STUFMIjoyMn0sImV4dGVuc2lvbnMiOnsiS0hSX2RyYWNvX21lc2hfY29tcHJlc3Npb24iOnsiYnVmZmVyVmlldyI6MjEsImF0dHJpYnV0ZXMiOnsiUE9TSVRJT04iOjAsIk5PUk1BTCI6MX19fSwiaW5kaWNlcyI6MjMsIm1hdGVyaWFsIjozLCJtb2RlIjo0LCJ0YXJnZXRzIjpbeyJQT1NJVElPTiI6MjQsIk5PUk1BTCI6MjV9LHsiUE9TSVRJT04iOjI2LCJOT1JNQUwiOjI3fV19LHsiYXR0cmlidXRlcyI6eyJQT1NJVElPTiI6MjgsIk5PUk1BTCI6Mjl9LCJleHRlbnNpb25zIjp7IktIUl9kcmFjb19tZXNoX2NvbXByZXNzaW9uIjp7ImJ1ZmZlclZpZXciOjI4LCJhdHRyaWJ1dGVzIjp7IlBPU0lUSU9OIjowLCJOT1JNQUwiOjF9fX0sImluZGljZXMiOjMwLCJtYXRlcmlhbCI6NCwibW9kZSI6NCwidGFyZ2V0cyI6W3siUE9TSVRJT04iOjMxLCJOT1JNQUwiOjMyfSx7IlBPU0lUSU9OIjozMywiTk9STUFMIjozNH1dfV0sIndlaWdodHMiOlstMC4xOTUyMDU2ODg0NzY1NjI1LDBdfV0sImFjY2Vzc29ycyI6W3siY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwibWF4IjpbMC4xOTAwMDAwNTcyMjA0NTg5OCwwLjA4NjAwMDAzMjcyMjk0OTk4LDAuMzMwNDg5MDM5NDIxMDgxNTRdLCJtaW4iOlstMC4xOTAwMDAwNTcyMjA0NTg5OCwwLjAyNDAwMDA0MTE4NjgwOTU0LC0wLjMzMDU2OTA4ODQ1OTAxNDldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjoxMjAsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjEsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTksIm1heCI6WzAuNSwwLDBdLCJtaW4iOlstMC41LDAsMF0sInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjoyLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTE5LCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6MywiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExOSwibWF4IjpbMCwwLDAuNV0sIm1pbiI6WzAsMCwtMC41XSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjQsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTksInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTE3OCwibWF4IjpbMC4yMjI0OTk5ODE1MjI1NjAxMiwwLjEzNzMwMDEzMzcwNTEzOTE2LDAuMzQ4OTE5OTU3ODc2MjA1NDRdLCJtaW4iOlstMC4yMjI0OTc3NzYxNTA3MDM0MywwLjAwNTAwMDE5NjM5NzMwNDUzNSwtMC4zNDg5OTk5NzcxMTE4MTY0XSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyMywiY291bnQiOjI4MzIsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjYsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJtYXgiOlswLjUsMCwwXSwibWluIjpbLTAuNSwwLDBdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExNzgsInNwYXJzZSI6eyJjb3VudCI6NTEyLCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjcsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6OH19LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjExNzgsIm1heCI6WzAsMCwwLjVdLCJtaW4iOlstNy40NTA1ODA1OTY5MjM4MjhlLTA4LDAsLTAuNV0sInNwYXJzZSI6eyJjb3VudCI6ODE2LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjksImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MTB9fSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxMTc4LCJzcGFyc2UiOnsiY291bnQiOjUxNywiaW5kaWNlcyI6eyJidWZmZXJWaWV3IjoxMSwiY29tcG9uZW50VHlwZSI6NTEyM30sInZhbHVlcyI6eyJidWZmZXJWaWV3IjoxMn19LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE4MCwibWF4IjpbMC4yMjk1MDAyMTkyMjU4ODM0OCwwLjEwNTMwMDAyNDE1MTgwMjA2LDAuMzIzNzk5NzI5MzQ3MjI5XSwibWluIjpbLTAuMjI5NDk3OTI0NDQ3MDU5NjMsMC4wOTQ1MDAwNDk5NDg2OTIzMiwtMC4zMzM3OTk4MzkwMTk3NzU0XSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6Mjg4LCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoxNCwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjE4MCwibWF4IjpbMC41LDAsMF0sIm1pbiI6Wy0wLjUsMCwwXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsInNwYXJzZSI6eyJjb3VudCI6NTQsImluZGljZXMiOnsiYnVmZmVyVmlldyI6MTUsImNvbXBvbmVudFR5cGUiOjUxMjF9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MTZ9fSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoxODAsIm1heCI6WzAsMCwwLjVdLCJtaW4iOlswLDAsLTAuNV0sInNwYXJzZSI6eyJjb3VudCI6MTIwLCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjE3LCJjb21wb25lbnRUeXBlIjo1MTIxfSwidmFsdWVzIjp7ImJ1ZmZlclZpZXciOjE4fX0sInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MTgwLCJzcGFyc2UiOnsiY291bnQiOjU0LCJpbmRpY2VzIjp7ImJ1ZmZlclZpZXciOjE5LCJjb21wb25lbnRUeXBlIjo1MTIxfSwidmFsdWVzIjp7ImJ1ZmZlclZpZXciOjIwfX0sInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MzI0LCJtYXgiOlswLjIyNTAwMDA2ODU0NTM0MTUsMC4wODUwMDAwOTAzMDEwMzY4MywwLjMyOTU0NDE4NjU5MjEwMjA1XSwibWluIjpbLTAuMjI1MDAwMDY4NTQ1MzQxNSwwLjAyNTAwMDA2NTU2NTEwOTI1MywtMC4zMjk1ODQyNDA5MTMzOTExXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjozMjQsInR5cGUiOiJWRUMzIn0seyJjb21wb25lbnRUeXBlIjo1MTIzLCJjb3VudCI6NzU2LCJ0eXBlIjoiU0NBTEFSIn0seyJidWZmZXJWaWV3IjoyMiwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjMyNCwibWF4IjpbMC41LDAsMF0sIm1pbiI6Wy0wLjUsMCwwXSwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjozMjQsInNwYXJzZSI6eyJjb3VudCI6OTcsImluZGljZXMiOnsiYnVmZmVyVmlldyI6MjMsImNvbXBvbmVudFR5cGUiOjUxMjN9LCJ2YWx1ZXMiOnsiYnVmZmVyVmlldyI6MjR9fSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjI1LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MzI0LCJtYXgiOlswLDAsMC41XSwibWluIjpbMCwwLC0wLjVdLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjMyNCwic3BhcnNlIjp7ImNvdW50Ijo5NSwiaW5kaWNlcyI6eyJidWZmZXJWaWV3IjoyNiwiY29tcG9uZW50VHlwZSI6NTEyM30sInZhbHVlcyI6eyJidWZmZXJWaWV3IjoyN319LCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwibWF4IjpbMC4yMDE1MDAxMDI4Nzc2MTY4OCwwLjA4NTAwMDA1MzA0ODEzMzg1LDAuMzI5NTA1MDI2MzQwNDg0Nl0sIm1pbiI6Wy0wLjIwMTUwMDAyODM3MTgxMDksMC4wMjUwMDAwMjgzMTIyMDYyNywtMC4zMjk1NDc2NDM2NjE0OTldLCJ0eXBlIjoiVkVDMyJ9LHsiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwidHlwZSI6IlZFQzMifSx7ImNvbXBvbmVudFR5cGUiOjUxMjMsImNvdW50IjoyMTYsInR5cGUiOiJTQ0FMQVIifSx7ImJ1ZmZlclZpZXciOjI5LCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjE2LCJtYXgiOlswLjUsMCwwXSwibWluIjpbLTAuNSwwLDBdLCJ0eXBlIjoiVkVDMyJ9LHsiYnVmZmVyVmlldyI6MzAsImNvbXBvbmVudFR5cGUiOjUxMjYsImNvdW50IjoyMTYsInR5cGUiOiJWRUMzIn0seyJidWZmZXJWaWV3IjozMSwiY29tcG9uZW50VHlwZSI6NTEyNiwiY291bnQiOjIxNiwibWF4IjpbMCwwLDAuNV0sIm1pbiI6WzAsMCwtMC41XSwidHlwZSI6IlZFQzMifSx7ImJ1ZmZlclZpZXciOjMyLCJjb21wb25lbnRUeXBlIjo1MTI2LCJjb3VudCI6MjE2LCJ0eXBlIjoiVkVDMyJ9XSwiYnVmZmVyVmlld3MiOlt7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6NTIwLCJieXRlT2Zmc2V0IjowfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTQyOCwiYnl0ZU9mZnNldCI6NTIwLCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTQyOCwiYnl0ZU9mZnNldCI6MTk0OCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjE0MjgsImJ5dGVPZmZzZXQiOjMzNzYsInRhcmdldCI6MzQ5NjJ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNDI4LCJieXRlT2Zmc2V0Ijo0ODA0LCJ0YXJnZXQiOjM0OTYyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6ODk0MywiYnl0ZU9mZnNldCI6NjIzMn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjE0MTM2LCJieXRlT2Zmc2V0IjoxNTE3NiwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjEwMjQsImJ5dGVPZmZzZXQiOjI5MzEyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6NjE0NCwiYnl0ZU9mZnNldCI6MzAzMzZ9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxNjMyLCJieXRlT2Zmc2V0IjozNjQ4MH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjk3OTIsImJ5dGVPZmZzZXQiOjM4MTEyfSx7ImJ1ZmZlciI6MCwiYnl0ZUxlbmd0aCI6MTAzNCwiYnl0ZU9mZnNldCI6NDc5MDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjo2MjA0LCJieXRlT2Zmc2V0Ijo0ODk0MH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjg4NCwiYnl0ZU9mZnNldCI6NTUxNDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoyMTYwLCJieXRlT2Zmc2V0Ijo1NjAyOCwidGFyZ2V0IjozNDk2Mn0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjU0LCJieXRlT2Zmc2V0Ijo1ODE4OH0seyJidWZmZXIiOjAsImJ5dGVMZW5ndGgiOjY0OCwiYnl0ZU9mZnNldCI6NTgyNDR9LHsiYnVmZmVyIjowLCJieXRlTGVuZ3RoIjoxMjAsImJ5dGVPZmZzZXQiOjU4ODkyfSx7ImJ1ZmZlciI6MCwi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AAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAA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AAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAvwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAAAAAAPwAAAAAAAAAA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KgAqAHEASQA7ADIAQABAACYAOwA9ADsAJgAmACgAPQAoACoAIwAjAD0AKAAEASgCLAAsADcABAE5ADcALAAsAEQAOQBEAEIAMAAwADkARAAxADMAPAA8AD4AJAAxADwAJAAkAEoANQAxACQANQAvADEANQAyADAAQgBCAEAAMgA/AEEAQwA/AEMAKwA/ACsAJwI/ACcCRwA/AEcAcgA/AHIAKQA/ACkAJwA/ACcAJQBZAEYATQBNAPQAWQBUAPoA/AD8ALUAVACmAE8AUgCmAFIAswCmALMAmgDvAAIBAAEAAVYA7wBbAGEAXgBeAO4AWwBlAGAAYwBjAGoAZQBoAG0A/gBoAP4AZgBrAGgAZgBnAGkAYgBnAGIAXABnAFwA9wBQAKcAZwBnAPcAUAB4APMAewB7AHYAeAB0AHkAfAB0AHwAowB0AKMAfwCIAJYAgwCDAIUAiACGAN8AiwCLAIkAhgDgAI8AkgCSAIwA4ACOAJQA7QDtAJEAjgCWAJcA0QDRAIMAlgChANUA0wDTAJkAoQCcAIEApQClAKgAnACeALoArgCuAKoAngCwAKwAuAC4ALIAsAAgALEAtAAgALQA+wAaACAA+wASABAAywASAMsAxQA0ABIAxQAuADQAxQCpAK0ArwCvAIIA0gCpAK8A0gCpANIA1ABJAHEA6gDqAOEASQABAQAB5wDnAAACAQH/AAEBAAIAAnAA/wDmADYASwBLAOIA5gDkABMBBQAFAAIA5ACUAM4ABgAGAO0AlACcAJ8AqwCrANYAogCrAKIAgQCcAKsAgQDlAOMAAAAAAM8AkwDlAAAAkwDbABIANAAXANsANAAXADQA5QAdABcA5QDlAJMAjQDlAI0A3gAdAOUA3gAdAN4AhACvAB0AhACvAIQAggB6APIA8QDxAH4AegAWARUB8QDxAPIAFgHwABQBBgIGAmwA8ACgAJgAlQCAAKAAlQB1AIAAlQB1AJUAhwB3AHUAhwB3AIcAigBRAPgA+QD5AFMAUQBdAPUA+QD5APgAXQD6APYATgBOAPwA+gD7AEwAFAAUABoA+wD9AAIB7wDvAGQA/QBkAO8AXwBbAO4AVQBbAFUAVwBbAFcAWQD0AFsAWQBtAAcC6QDpAP4AbQBYAFYAAAEAAQEBWABaAFgAAQEBAf8AWgANAucAAAEAAQIBDQLoAA0CAgECAf0A6AC8AMYAzQDNAAsAvAC8AMAAyADIAMYAvAADAS0AygDKAL4AAwG+AMoA2gDaAMIAvgDCANoA2ADYAMQAwgDEANgAyADIAMAAxADFAMcA1wDXANkAyQDFANcAyQDFAMkALgDrAHMASADrAEgACwFvAOsACwFIAFoA/wD/AAgBCwFIAP8ACwFwAB0CCAEIAf8AcAAOASICFwEOARcB8wAOAfMAeAAOAXgAEQEMAQ8BCQEJAQYBDAEQASYCbgBuAAoBEAEmAhABAwADABIBJgINAQcBHAIcAiECDQEjASABHAEcARkBIwEsASgBJQElAS8BLAExATMBKgEqAS0BMQE1ATgBMwEzATEBNQE5ATYBPgE+ATsBOQE8AT8BQgFCAUUBPAFEAUEBSQFJAUcBRAFKAVEBUAFQAU0BSgFUAVsBWQFZAVYBVAFcAV8BWwFbAVQBXAFfAVwBTQFNAVABXwFnAWoBZgFmAWIBZwFqAWcBbQFtAWwBagFuAWgBYwFjAXEBbgFWAVkBbAFsAW0BVgFYAVoBXgFYAV4BTwFYAU8BUgFYAVIBdwFYAXcBZQFYAWUBaQFYAWkBawF8AX4BeQF5AXUBfAGGAYMBigGKAYgBhgGLAZEBgQGLAYEBhAGLAYQBjgECAggClwGXAZUBAgKYAZYBngGeAZsBmAGdAaABpQGlAaIBnQGoAaMBpgGmAaoBqAGrAZkBnAGcAaEBpwGrAZwBpwGMAY8BqwGrAacBjAG7AbkBwAHAAb0BuwG3AcEBrQG3Aa0BsAG3AbABvgHFAcwBygHKAcgBxQHNAcYB0gHSAc8BzQHQAdMB1gHWAdkB0AHYAdUB3QHdAdsB2AHIAcoB4QHhAd4ByAHgAeMB6AHoAeUB4AGTAY0BrwGvAcMBkwH1AfIB7gHuAesB9QFHAUkB8AHwAfMBRwGCAUgBQAGJAYIBQAE9AYkBQAEQAhICFAIUAg4CBAIQAhQCBAJwARACBALiAckBRgHnAeIBRgHqAecBRgHqAUYB9AFKAeEA6gDqAFEBSgEBAgAC5wDnAAICAQIDAnAAAAIAAgECAwLmAOIATAFMAXQB5gDkABoBHQEdARMB5ADbAd0BHgEeASEB2wHmAekB7AHDAeYB7AGTAcMB7AGTAewB7wHaASIBGAHlANoBGAHlABgB4wByAScBKwErATIBcgFGAckBywHlAHIBOgHlADoBQwHOAeUAQwHLAc4BQwFGAcsBQwG/AbIBtAG0AbwBvwEWAbwBtAG0ARUBFgGzAbUBBgIGAhQBswG6AdEBxAHHAd8B5AHHAeQBwgHHAcIBuAHEAccBuAG6AcQBuAGQAYUBhwGHAawBkAGaAawBhwGHAX8BmgGKAXsBgAGAAYgBigGJAT0BNAE0AXoBiQG2AagBqgGqAQwCtgGkAZcBqQGkAZ8BlwGUAZYBmAEJApQBmAF8AQkCmAF+AXwBmAG2AQwC6QDpAAcCtgECApUBCgIKAgECAgIBAgoCfQF9AQMCAQINAggCAgICAucADQINAugACwILAggCDQILAqkBlwGXAQgCCwL/ASYBKQEpAQUC/wH/AQUCDwIPAv0B/wFgAfcBEQIRAm8BYAH3AfkBEwITAhEC9wH5AfsBFQIVAhMC+QH7Af0BDwIPAhUC+wEYAngBUwEYAlMB6wBvABgC6wAYAhsCAwIYAgMCfQF4ARgCfQFwAAMCGwIbAh0CcAAgAiUCuwEgArsBvQEgAr0BFwEgAhcBIgIeAhkCFgIWAiMCHgIkAhcCbgBuACYCJAImAhIBGwEbASQCJgIfAiECHAIcAhoCHwKnAbUBrgGuAYwBpwGnAKQAbABsAGcApwCzAbEBrgGuAbUBswGkAH0A8ADwAGwApAD+AWEBegF6ASQB/gFyAXABBAIEAicBcgFzAUsBTgFxAXMBTgFOAV0BVQFVAVcBbgFOAVUBbgFxAU4BbgFkAXYBegF6AWEBZAH8AfoB+AH8AfgB9gH8AfYBYQH+AfwBYQHtAfEBSAGSAe0BSAGCAZIBSAEuASQBegEwAS4BegE0ATABegFyATIBNwE3AToBcgHXAdoB5QDlAM4B1wEbAR8B3AHRAboBJALUAdEBJALcAdQBJAIbAdwBJAIQAXcAigAQAYoAkAAQAZAA7ADsAAcAAwAQAewAAwC5AJ0AmwC5AJsAtACxALkAtAAEAb0AwQDBAMMAvwAEAcEAvwAEAb8AuwBMAAQBuwBMALsACQBMAAkADQBMAA0AtgBMALYAFAAvAAUBOAA4ADoAMQAvADgAMQBFACgCBAEEAUwARQAqAvkCMQIxAi0CKgIzAjcCOgI6AvUCMwLgAjwCOAI4AjUC4AI+AgUDPAI8AuACPgIGAz8CRAJEAkECBgNCAkUCSwJLAkgCQgJHAkoC2wLbAtkCRwJyApoCUgJSAkwCcgJkAk4CaAJoAlsCZAJmAlACTgJOAmQCZgJQAmYCTAJMAlICUAItA2ACVAJUAlAELQNiAmwCVAJUAmACYgJsAmICWQJZAmoCbAJeAnMCTQJNAmcCZQJlAlwCWgJNAmUCWgJeAk0CWgJYAl4CWgJbAmgCagJqAlkCWwJpAk8CUQJpAlECUwJpAlMCmwJpApsCcAJpAnACUQRpAlEEVQJpAlUCbQJpAm0CawKCAh8DdwJ3Am8CggJ9At4CJQMlAyMDfQLPAsMC3ALPAtwCewLPAnsCeAIYA38CKQMpAysDGAOEAhcDhwKHAooChAKOApMCjAKMAokCjgInA5YCkQKPAicDkQKUAo8CkQKQAiADhQKQAoUCiwKQAosCkgJ5AiADkAKQAtACeQKhAp8CpAKkAhwDoQKdAqgCzAKdAswCpQKdAqUCogKxAq4CrAKsAr8CsQKvArICtAK0AggDrwIJA7UCuwK7ArgCCQO3AroCFgMWA70CtwK/AqwC+gL6AsACvwLKAsIC/AL8Av4CygLFAtECzgLOAqoCxQLHAtMC1wLXAuMCxwLZAtsC4QLhAtUC2QLdAtoCSQIkA90CSQJDAiQDSQL0AjkCOwLuAvQCOwLuAjsCXQJXAu4CXQLSAv0C+wL7AqsC2ALSAvsC2ALSAtgC1gJyAgoDEwMTA5oCcgIqAykEEAMQAykDKgMoA5kCKQQpBCoDKAMPAwsDdAJ0Al8CDwMNAysCLgIuAjwDDQO9AhYDLwIvAvcCvQLLAv8C1AKqAssC1ALFAqoC1ALFAtQCyAK8AvgCKQIOA7wCKQIOAykCDAPYAqsCrQK2ArwCDgMHA7YCDgNdAjsCBANdAgQDQAIOA10CQAIOA0ACRgIHAw4DRgKtAgcDRgLYAq0CRgKjAqcCGgMaAxsDowI/AxsDGgMaAz4DPwMZA5UCLwQvBD0DGQOgArMCsAK+AsECyQK+AskCqQK+AqkCngKwAr4CngKgArACngJ6AnwCIgMiAyEDegKGAiEDIgMiAx0DhgIjAyUDdgJ2Ah4DIwMkA0MCPQI9AnUCJAMmA40CGAMYAysDJgONAogCGAN+AhcDhAKAAn4ChAKCAoAChAIfA4IChAKWAicDEgMSAzAElgKBAioDKQMpA38CgQKDAigDKgMqA4ECgwI2BCsDKQMpAxADNgQRAyYDKwMrAzYEEQPlAjQC9gL2Au8C5QLlAu8C8QLxAukC5QIsA+cC8wLzAlYCLAPnAusCAwMDA/MC5wLrAu0CAQMBAwMD6wLtAukC8QLxAgED7QLuAlcC8gLyAgIDAAPuAvICAAPuAgAD8AJxApwCFAM0A3ECFAOYAjQDFAM0AzEDKANxAjQDKANxAigDgwKZAigDMQMxA0YEmQI3AzoDoQI3A6ECHAM3AxwDQAM3A0ADSwQ1Ay8DMgMyAzgDNQM5AzMDlwKXAk8EOQNPBDsDLAIsAjkDTwQ2A0oERQRFBDADNgNMA0IDRQNFA0kDTANVA1gDTgNOA1EDVQNaA1YDUwNTA1wDWgNeA1oDXANcA2EDXgNiA2QDZwNnA18DYgNlA24DawNrA2gDZQNtA3ADcgNyA2oDbQNzA3YDeAN4A3oDcwN9A38DgQOBA4MDfQOFA30DgwODA4cDhQOHA3gDdgN2A4UDhwOQA4sDjgOOA5IDkAOSA5QDlgOWA5ADkgOXA5oDjAOMA5EDlwN/A5YDlAOUA4EDfwOCA5UDkwOCA5MDjwOCA48DoAOCA6ADewOCA3sDeQOCA3kDiAOCA4gDhAOlA54DogOiA6cDpQOvA7EDswOzA6wDrwO0A7cDrQO0A60DqgO0A6oDugMrBL4DwAPAAzEEKwTBA8QDxwPHA78DwQPGA8sDzgPOA8kDxgPRA9MDzwPPA8wD0QPQA8oDxQPUA9ADxQPUA8UDwgO1A9AD1APUA7gDtQPkA+YD6QPpA+ID5APgA+cD2QPgA9kD1gPgA9YD6gPuA/ED8wPzA/UD7gP2A/cD+wP7A+8D9gP4AwIE/wP/A/wD+AMBBAQEBgQGBP4DAQTxAwcECgQKBPMD8QMJBA4EEQQRBAwECQS8A+wD2APYA7YDvAMeBBQEFwQXBBsEHgRwAxwEGQQZBHIDcANpA3EDqwNpA6sDsgNmA2kDsgMtBDcEPQQ9BDsEOQQtBD0EOQSZAy0EOQQTBB0EbwNvA/IDCwRvAwsEEAQTBG8DEARzA3oDEwMTAwoDcwMqBCsEEAMQAykEKgQsBCoEKQQpBJkCLAQPA50DdQN1AwsDDwMNAzwDRgNGA0MDDQMEBEoDRwNHAwYEBAS8AxgEFQQVBBIEDwQVBA8E7AO8AxUE7AMOAwwDQQNBA0sDAwQOA0EDAwSbA1sDVANUA1ADmwNjA5sDDgNsA2MDDgNsAw4D+QNsA/kD9ANvA2wD9ANvA/QD8gPoA+UD3QPdA9sD6AM/Az4D3QPdA+UDPwPcAz0DLwQvBN4D3AMNBAgE8APrAw0E8APhA+sD8APhA/AD7QPjA+ED7QPjA+0D+gO5A9UDsAOwA64DuQPDA6gDsAOwA9UDwwOzA7EDqQOpA6QDswOyA6MDXQNdA2YDsgPfAzUE0wPTA9ED3wPNA9IDwAPNA8ADyAPBA78DvQPBA70DMgTBAzIEpQOnA8EDpQPfAzAEEgMSAzUE3wMrBCoEMwQzBL4DKwQqBCwEpgOmAzMEKgQ2BBADKwQrBDEENgQ2BDEENAQ0BBEDNgQ0BDEEwAPAA9IDNAQnBC4EUgNSA08DJwQnBCUEOAQ4BC4EJwSJA5gDOgQ6BB8EiQMfBDoEPAQ8BCIEHwQiBDwEPgQ+BCQEIgQkBD4EOAQ4BCUEJAR8A6EDQQQUA3wDQQSYAhQDQQQsBEQEQQSmAywEQQShA6YDQQSZAkYERAREBCwEmQJJBEsEQANJBEAD5gNJBOYD5ANJBOQDTgRHBEwEPwQ/BEIERwRNBE8ElwKXAkAETQRPBE0ERANEAzsDTwRIBEMERQRFBEoESATQA7UD1wPXA94D0APQApAClQKVAs0C0ALcA94D1wPXA9oD3APNApUCGQMZA6YCzQIoBE0DowOjA4oDKASbA1ADLQQtBJkDmwOXA4ADfgN+A4YDdwOXA34DdwOaA5cDdwN3A3QDnAOaA3cDnAONA4oDowOjA58DjQMhBCMEJgQgBCEEJgSKAyAEJgQoBIoDJgRxAxoEFgRxAxYEuwOrA3EDuwOjA00DVwOjA1cDWQNdA6MDWQObA2MDYANgA1sDmwMABPkDDgMOAwMEAARNBOMD+gNNBPoD/QNNBP0DBQREA00EBQREAwUESAMsAjACFQM5AywCFQM5AxUDuQI5A7kCswI5A7MCoALEAsYC4gLdAsQC4gLaAt0C4gJ1Aj0C3wJ1At8CNgJ1AjYCMgJ1AjIC5ALoAuwC6gLqAuYCLQPoAuoCLQPkAugCLQN1AuQCLQNaAmMCYQJYAloCYQJYAmECLgNuAnUCLQMtA1AEbgJUBFcEbARsBHUEVARjBFoEXARcBF8EYwRYBGQEUgRbBFgEUgRwBFsEUgRzBHAEUgRiBGgEZQRlBFkEYgRtBGoEVQReBG0EVQRVBGcEYQReBFUEYQRgBF0EcgRyBG8EYARmBGkEVgRWBFMEZgRrBG4EcQRxBHQEawR4BHsEkASQBJkEeASHBH4EgASABIMEhwR8BIgEdgR/BHwEdgSUBH8EdgSXBJQEdgSGBIwEiQSJBH0EhgSRBI4EeQSCBJEEeQR5BIsEhQSCBHkEhQSEBIEElgSWBJMEhASKBI0EegR6BHcEigSPBJIElQSVBJgEjwQBAgAJAwAAAQkDAAECAwABAQEIl3npLwQICAwIBA8MIFBMOAwICAgIFwgICAMUFBwwBwgUGBgPBAQIFA8gIAMEBAMEBAgIDwgIBwQEBwQHBAMIBxwUAyQIFEQ8NDCxAZ0BEwgXBAwXDAwwHAcIJwgXNCgUJFsIAwhDCA9AQAgIHwgvCD8IFAizBAivBAQvDAz/bwQEjxwcXwQE7wgDCBQPBARfHBzHBAQEBAQEHwQEFwQENwQHBAgILzAkLyQkjwQECFMEBDcIBxQvHBRXBASvBAQXCD8I/7cgIC8kJH8ICA8EBIsEBwQEBAQnBAS3CP93CHcUFC8ICIMEDwQElwQELwwMCAjvFHscHP//HwgIAwj///+fJBz/////VwjHCP9rFDsI/y8I/////2MICP//Kwj/bwi3CLsI/////18kCP9zCP9vCP9nCMsI/ycIPwi3HCTDCGcE4wg7CDMI////////////2xQU//8nCP+vBP////////8XCP//owj/////rwiDCOcU/2sI//83BP//Lwj//////9sI///7CP////////87FAj///////////////////9fCP///6MICAgI/////2MI////////////////////////////////////////////////////////fwQE//8nBAT//ycMFLsI////nwj//+8I////////HwT/////swT/////////////ZwivCP9zBP///////////////////////////////+8U/28I/78IhgkwoD0D05XGFgWehN4LIEb+jRS/D24YKwEC+ivEa+z1g0v+CsX4pQJIedoc40EEE9kAH/64dBQOfycVCE1/8IhVYd8LTY4G6ivzCQssqW9gnr8O/A/l9IMaS9aWXD/UnmJ/ZXf50p5C7Q/PCAQmM3OCpvdPyLvXVK6qrMbj8kHDq9Q0kCRPYjMjteqOlmMlPdYDpjr0BW6Fg1esFrE2Ts5rsUuFdPlcW5LE1fH/OWXe+snPGw9sTUxKUYAlFXL4GTqrw6rMfjrCrpKRbh+4KwMTLrE4rw79pJyJCukexe4hjhSApXRWV/eteDYB+PaNyg7Oo6k5kE7yHtq+zKRf8U2YDLGrVek92qPwnKFBUJ5hLluFY2CPRPvXWUMmeHjPCSzQHj7LIogxgbBdEu3ONZrkB3gkcy/NKzHYtmzhdvNi8oeSkTT0ZUdC7t3++5XldpD2eVfc48i/03HAwCJeUR++usglBtk/3B/Tixp2PDh0aOBDrFXiTtcBMj/efzV/6WPS+t0XUpXjxjIllKwvWY9IKDo/ya8CzxEPHsAJtN0lwe/JEH2OSiFFcmCaHw3nppM+ZiizhoNPeb6f4pIs4Ft8WM2xNAsszrb2XmPWNMWF1pmGw+QRrJmp1A/Gs33f5lyhZH29cJCaCrNJFBlAVYKJN8MerMiZ6HWW3rHuqiRQFamz1Yb//EcFaKXsBgpa5fv4BPtM7n+2vfsvjbu+PEufv6PjmqcW//fgI74fgrSopUah4zaZA+Ffxh+ywO5O5x2mvB9CUkuIr+sgUSx0yMY6glcMON4LJUG1Y5rwkkmEX36/0VO001mSXANAufMpEj+7K3TACVOb/eXsgR1K15YcZNSPzn4RyED72C7z7dATDQMIdHxOSfvIfntMsbtoFKN9AbnDx93YfSK4oCZ9tl6IsV7qMpA/T5dT0nKDPnBIjo7nsbmarm4CJ5Jllc++Mb2QGJWDFcF/Rx03lbsSUZis43iuuEBPdqrM/nnDBAfcb7qOVYZsrZ8lrVNJpMKVEjHy6kMhPhdo6wOOWPZ63nOY+PaNzLyvq6k6WtHrsNrF3CFe9Y2VDFF5Ve1U4KLo9QG6k+57AuwIuBlgRExlLNuxz6LdnNBt+GPLHuSWM5ltmXhWDf0EomnRcx/NLSiSs5T0jD2RfS0R0FX1axyg793+EpaAdf75wdjcj8fP0g02+zG6VCOSk2kmY9mN3Z/VooB2Pq0daDFBXHjiDuAKMj/VfzV/6mPnCn/Efa/G0RoukT7s1zQpltcmOwzJfXpVG5Eh9e3CA3FyXs+CJTnVX0x/YmbnEsErZys8WYMfC8Z/oJnnHLN55NqTeqwtomtFA0ly9RmGhUU/v7QhVp3vjTdUsyET6GD5kXnEJBh2aE9KbNMwHc5QYs0UvCeYBHV5kLH0gjgp+ayzINgGM/sEBKXonSFZ5Z3pN/oNTNLbscQ6o527v7WkoKT89KavFodpsSQYKNmnpWyP5DkvYeBczKu3w2VSTuufPLxCn6EdSJpDSy/J9DFVRIwTYYwPmfyGYenZ9rRavrcAAAAA/z8AAAADAQEI/wdRDSQIKAwMCBNcDAxrVEcIBzgHHAskD0BoFB8cYwwHCG8IOwxxARs4PzkBIwxLCAsIHwwvDBswAwwDLQLdAgMMTwwnCBwHJBMMEyhDxC8MGxQLcENM/wMMLxQIKwkBf1QfcA8MBxygkRCRCBwcDAwDFAgMBwwXDAh7ODhXDEQwIwgcJAcM/w84OBsICygLCAwXHCgPDC8MDwgIBwwHJCcIQwgoF7xUTQEDCCMMCwwIDC8MDANECwxLCB8UFB8MDBcUFxwUYwgbKH8MG0QLCAsMFCQcVxwoCBsMCHMUCwwDCAMMKBzk4Ak5X3TmUNa1vqVZ20SBImNQfEVJ1+LAOXhffhNGKn9qm0eMMUIutBi9gSfCatfYvoTb4/bXw4LfeK+tanjjEf76qilqnVyXRR9Jevv04J0HYbSuL9RiKGe4SPx78urDkiqQlmv+O4FAdZtMF7WBrJUPTC3xLFfkzEHtK5EHOPyVv9fV4Cu3neuHE1tGxu8/WDKGTL+67Wfgj5FMoCj+GkjKhDkmRgDylYLzFJXvlrMDDfEsE8IGs/VQkGNmdCPDmfZF/xA5AtPcTjeBgSD1du1WpWlC4LR9nlM5WwM7sFbrU2nx6nqT9g1mDfUAng8TNX92c73FxBViQzKvKekvG8Yy5Sb5aTQ6zgQ1yjhZEioga/6vZocaGHMWap4kLxApiGjqep1S7zjvMI3PsXmwTL6ROLk8Lm8UJDMdep5R9GiPrQaVhBTjfepCNqyoHZYUa8QpC557rHqmCjF5J9xcSkrB/lZv1zbK8fOsp5qbeLJPXg50aPaUvDdjpQCbGyoDpLJZ8fga+GEeIMedY2RoS7y19UBDqj+RGaYxKSQ8KVj2BLf0oUPtMLB5ZBiZnqX9Jdj06zmR+24og+i8zFu+Zkv9/IY5JEzg5ebWYrstkJ/e7+KXKZ6NiJXtBU7G2SJvhn+S2eAbLJrpG+SwmD9xOFyxsB6kTQsCdkGCj8bZti9wsmNqjYhfv1RMMToA37w68Pm5I8NAvRoor9ptyFGNkDkK4xIvJnGsbXQfA3ADqQ7TPFbOlWFIlF+ZZZbFKvLOpRt/3BZ1rBoZgA6L/PXNPWRmQKLQMMo7Yf9vXSJvR5jwSEwytUQfrSzIDUewEkv+033Xya0l2a6qSKgAfC9jQx2bJLIZsWmwv8aN/gqwdP1iVUXeQiOpLkJjyb8a9xIRs7nL/2/6KcGxdhg9HmrjXIeTkhQWmov/sw4E6aCQjeDPmpYKSOTAEvQQ1uqFemCR7Ot/+4K8SECXfCZZS7z/yu/ONYQpDS/DOanFd+7WS5EIPdfJm7Zn9HbMseze2KCC9q/P8It3mPxLJISWPPZIpiFGEUaTypU6Th3RmNrQdjy2KhR6Z2VyfRIxyO66kNFRWVCtKFjr2AXvDKwA9A0QGK/HEuHudSa7oqRzL0NxjOwqGQ0/ET02Ov5f+uk90lf9L09srWt1Buztdh55DmKYIQy5xtZYM5/Q9ue1SSSrXJW9QQPHBbodu76T1SIr1TBMByyukCqrUWwutgTpJoIOEEfdtWKxMWXFx1j5O+n1zUJPKGv/hPNIh815A+kV5aIli5v7u1ytj53HDA7XLa+BnWIzQ663MnPNQ9H+EhxQtrXnkF7XeRNLiZJqITYXFaQPobKoXPeVARhY85VZhoEdBkITN6QkYejsPO5MPsRBgeYnSusvmYdBvVifauqQ5KvO9hNB56q4D6HK5efFjYvGLq7j+lGlAX14Bgwch+Te9ubuyEzmiJgA/BG5zbfX0CoUwZ0/lyg9vrj9d7vSTcTtZ7c0TJo42jEHFmBs2s2DxcSuekvrKlGyMKYuSTEfJXGeq2hxD2wQ9Abi5dE8V86l5mBJoV+WX68w16zgwG3iInitInIeeIN/3GV+Z0GKREzKO19wWSZvbsFs9Vx5TMc0aOTfjrXhUSYwVyvWrpQPKsyPokBGRRq6H52IhZCJC0RIioD/AwAA/wEAAHXWY76w2KM7ILCyvuKqMj8OCgAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAID///++AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAA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UAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBtwG4AbkBvgG/AcABwQHCAcMB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wEEAgUCCQIKAg4CDwIQAhECEgITAhQCFQInAigCMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUCVgJXAlgCWQJaAlsCXAJdAl4CXwJgAmECYgJjAmQCZQJmAmcCaAJpAmoCawJsAm0CbgJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQCmgKbApwCnQKeAp8CogKjAqQCpQKmAqcCqAKpAqoCwwLEAsUCxgLHAsgCzALNAs4CzwLQAtEC0gLTAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoAukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gIAAwEDAgMDAwQDBQMGAxcDGAMdAx4DHwMgAyEDIgMjAyQDJQMsAy0DLgNNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD4APhA+ID5wPoA+kD6gPrA+wDEwQUBBUEFgQXBBgEGQQaBBsEHAQdBB4EHwQgBCEEIgQjBCQEJQQmBCcEKAQtBC4EMgQzBDcEOAQ5BDoEOwQ8BD0EPgRQBFEEUgRTBFQEVQRWBFcEWARZBFoEWwRcBF0EXgRfBGAEYQRiBGMEZARlBGYEZwRoBGkEagRrBGwEbQRuBG8EcARxBHIEcwR0BHUEdgR3BHgEeQR6BHsEfAR9BH4EfwSABIEEggSDBIQEhQSGBIcEiASJBIoEiwSMBI0EjgSPBJAEkQSSBJMElASVBJYElwSYBJkEAAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAD///8+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAAABAIA+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAAABAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAAAAAIA+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAAD//38+AAAAAAAAAADLzMw+AAAAAAAAAADLzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAADNzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAADMzMw+AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAD///++AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAD//3++AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAAAAAIC+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAADMzMy+AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAA/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AAAAAAAAAAAAAAC/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAD///8+AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/AACgswAAAAAAAAA/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AAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAPwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAAAAvwAAAAAAAACAAQgKCw0QGBkcJSkuMTQ3ODk6Q0dMT1JVVldYXGJkZWdqcnN3f4OIjI+RkpOUnaGmqq2vsLGyAAAAAKAwAAAANgAAeDEAAOa2AAAAAAAA5rYAAKAwAAAANgAAeDEAAOa2AAAAAAAA5rYAAIAwAAAANgAAeDEAAOa2AAAAAAAA5rYAAIAwAAAANgAAeDEAAOa2AAAAAAAA5rYAAKAwAAAANgAAeDEAAOa2AAAAAAAA5rYAAOa2AAAAAAAA5rYAAGAwAADgNQAAUDEAAJAwAADwNQAAYDEAAJAwAADwNQAAYDEAAJAwAADwNQAAYDEAAOa2AAAAAAAA5rYAAJAwAADwNQAAYDEAAOa2AAAAAAAA5rYAAOa2AAAAAAAA5jYAAOa2AAAAAAAA5jYAALAwAAAoNgAAwLEAAOAwAAA4NgAA2LEAAKAwAAAANgAAeLEAAKAwAAAANgAAeLEAAOa2AAAAAAAA5jYAAIAwAAAANgAAeLEAAOa2AAAAAAAA5jYAAKCwAAAANgAAeLEAAOY2AAAAAAAA5jYAAKCwAAAANgAAeLEAAOY2AAAAAAAA5jYAALCwAAAoNgAAwLEAAOY2AAAAAAAA5jYAAKCwAAAANgAAeLEAAOY2AAAAAAAA5jYAAOCwAAA4NgAA2LEAAOY2AAAAAAAA5jYAAOY2AAAAAAAA5jYAAGCwAADgNQAAULEAAJCwAADwNQAAYLEAAJCwAADwNQAAYLEAAJCwAADwNQAAYLEAAOY2AAAAAAAA5jYAAJCwAADwNQAAYLEAAOY2AAAAAAAA5jYAAOY2AAAAAAAA5rYAAOY2AAAAAAAA5rYAAICwAAAANgAAeDEAAKCwAAAANgAAeDEAAKCwAAAANgAAeDEAAKCwAAAANgAAeDEAAOY2AAAAAAAA5rYAAICwAAAANgAAeDEAAOY2AAAAAAAA5rYAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB08PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dneWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrMAAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8BCAoLDRAYGRwlKS4xNDc4OTpDR0xPUlVWV1hcYmRlZ2pyc3d/g4iMj5GSk5Sdoaaqra+wsbIAAAAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAgDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAgDAAAAA2AAB4MQAA5rYAAAAAAADmtgAAoDAAAAA2AAB4MQAA5rYAAAAAAADmtgAA5rYAAAAAAADmtgAAYDAAAOA1AABQMQAAkDAAAPA1AABgMQAAkDAAAPA1AABgMQAAkDAAAPA1AABgMQAA5rYAAAAAAADmtgAAkDAAAPA1AABgMQAA5rYAAAAAAADmtgAA5rYAAAAAAADmNgAA5rYAAAAAAADmNgAAsDAAACg2AADAsQAA4DAAADg2AADYsQAAoDAAAAA2AAB4sQAAoDAAAAA2AAB4sQAA5rYAAAAAAADmNgAAgDAAAAA2AAB4sQAA5rYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAAsLAAACg2AADAsQAA5jYAAAAAAADmNgAAoLAAAAA2AAB4sQAA5jYAAAAAAADmNgAA4LAAADg2AADYsQAA5jYAAAAAAADmNgAA5jYAAAAAAADmNgAAYLAAAOA1AABQsQAAkLAAAPA1AABgsQAAkLAAAPA1AABgsQAAkLAAAPA1AABgsQAA5jYAAAAAAADmNgAAkLAAAPA1AABgsQAA5jYAAAAAAADmNgAA5jYAAAAAAADmtgAA5jYAAAAAAADmtgAAgLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAAoLAAAAA2AAB4MQAA5jYAAAAAAADmtgAAgLAAAAA2AAB4MQAA5jYAAAAAAADmtkRSQUNPAgIBAAAA/AHEAgECAAAABgAGAAQAAgAEAAYACgAKAAgABAAIAAoADgAOAAwACAAMAA4AEgASABAADAAQABIAFgAWABQAEAAUABYAGgAaABgAFAAYABoAHgAeABwAGAAcAB4AIgAiACAAHAAgACIAJgAmACQAIAApACQAJgAmACwAKQAAAAIALwAvAEcAAAAzAEQA2ADYANYAMwDcAN4ANwA3ADUA3ACRAD0AOwA7AI8AkQA5AEEAPwA/ADYAOQADACUAKgAqADAAAwAJAA0AEQARABUAGQAZAB0AIQARABkAIQAhACUAAwARACEAAwAJABEAAwAFAAkAAwA5AI0AlwCXAEEAOQBIAC0AJwAnAAEASAAnACMAHwAfABsAFwAXABMADwAPAAsABwAXAA8ABwAfABcABwAnAB8ABwABACcABwCOADoASQBJAE0AjgA8AJAAngCeAEsAPABMAJ8ATgBOAEoATABGAC4AKAAoACsARgBVAFMAUQBRAE8AVQBTAFkAVwBXAFEAUwBZAF0AWwBbAFcAWQBdAGEAXwBfAFsAXQBhAGUAYwBjAF8AYQBlAGkAZwBnAGMAZQBpAG0AawBrAGcAaQBtAHEAbwBvAGsAbQBxAHUAcwBzAG8AcQB7AHgAcwBzAHUAewBPAIEAfgB+AFUATwCRAI8AlQCVAJMAkQCNAIoAmQCZAJcAjQBWAH8AfAB8AHYAVgBWAHYAcgByAG4AagBqAGYAYgByAGoAYgBWAHIAYgBiAF4AWgBWAGIAWgBUAFYAWgCbAIYALgEuAT8BmwCCAFAAdAB0AHkAggBSAFgAXABcAGAAZABSAFwAZABkAGgAbABSAGQAbABsAHAAdABSAGwAdABQAFIAdAAvAYcAmgCaAD4BLwGOAE0AnACcAJQAjgCSAKAAngCeAJAAkgChAJ0ATgBOAJ8AoQCAAHcAegB6AH0AgACoAKYApACkAKIAqACmAKwAqgCqAKQApgCsALAArgCuAKoArACwALQAsgCyAK4AsAC0ALgAtgC2ALIAtAC4ALwAugC6ALYAuAC8AMAAvgC+ALoAvADAAMQAwgDCAL4AwADEAMgAxgDGAMIAxADOAMsAxgDGAMgAzgCiANQA0QDRAKgAogAyADQA1wDXANsAMgDfADQBjACMADgA3wDkAOIA6ADoAOYA5ADgAN0A7ADsAOoA4ACpANIAzwDPAMkAqQCpAMkAxQDFAMEAvQC9ALkAtQDFAL0AtQCpAMUAtQC1ALEArQCpALUArQCnAKkArQA+AEAA6QDpAOsAPgDsAN0ANgA2AD8A7AA1AeAA6gDqAD0BNQHuANkARQBFAEMA7gDVAKMAxwDHAMwA1QClAKsArwCvALMAtwClAK8AtwC3ALsAvwClALcAvwC/AMMAxwClAL8AxwCjAKUAxwBCADEA2gDaAO0AQgDhAPEA7wDvAOcA4QDlAPUA8wDzAOMA5QD2APAA8gDyAPQA9gDTAMoAzQDNANAA0wD5APcA/QD9APsA+QD7AP0AAQEBAf8A+wD/AAEBBQEFAQMB/wADAQUBCQEJAQcBAwEHAQkBDQENAQsBBwELAQ0BEQERAQ8BCwEPAREBFQEVARMBDwETARUBGQEZARcBEwEXARkBHQEdARsBFwEgARsBHQEdASMBIAH3APkAKQEpASYB9wAtAYUAgwCDACsBLQEsAYQAiACIADABLAExAYkAiwCLADMBMQHkADkBNwE3AeIA5AA1AT0BOwE7ATIBNQH6ABwBIQEhASoB+gAAAQQBCAEIAQwBEAEQARQBGAEIARABGAEYARwB+gAIARgB+gAAAQgB+gD8AAAB+gA8AZYAmACYADoBPAE7AZkAigCKADIBOwHpAEAAlgCWADwB6QAnASQBHgEeAfgAJwEeARoBFgEWARIBDgEOAQoBBgEGAQIB/gAOAQYB/gAWAQ4B/gAeARYB/gD4AB4B/gDhADYBQAFAAfEA4QA4AeMA8wDzAEIBOAFDAfQA8gDyAEEBQwElASgBHwEfASIBJQEBAgAJAwAAAQkDAAECAwABAQEHw3RpLXdEcyAgZyCIQ0T/D0RE/ztk/x9EREREMyCfICATIANkHyAglzQ0k2QDIEcQA1RUG0T///+HVET/OyBHNDTXZNsQEP//BzQ0/y/FAsUCH4g03yAgPxAg////UxB/RET////////bIP//HxBE///////////////nIPNUdP8nRAMgIP///////////////////////////////////////////////////////////98QEP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8nEP83EP////9vNDQDEP////////////////8nEBD///////////////////////////////////////////9jEKcCWBxhKTB2MED8ABRV0b0wR3qEdCAmajL7QyDmFVYpitJpSWNev/NKief10wBRkaLAI5Dx8u7NrJfeAnwQkepDa9dtCMZWdsRh0r1mZhlyG8A9ISgjBhvWfaPI+ULMeo6hHGQ2GRdgB6CQYkfwRIdV2dhDju+u3gbrWNSjYODtlu22b2D3awo7XDqR3m0ExzvNVD2j29w6Y4TVEHJkR1szTSP/ojCkVvdUAHAHoiJhdADdwQ3EbCrRaUljXr/zSonn9dMAUZGiwCOQ8fLuzayX3gJ8EF7tfMOJitVd5PxZsSXyJNxfZRyRajp2VEfZ9RBVhrc8QJTmeWe8YG1JZK4GbCkAErPliQyUkR/ADFnXfdGaO+8Tusang5nxYKaK8PL8vo25JNFfkgAAAAD/PwAAAAMBAQb/B2kHgCv5ARs0izQvNBeVATc0O5hkZ5UBXzRjlQGzlQGvlQGzlQHHlQEfNMOVAa+YR5UBK2T1CnEFZCeYMQGvNCtkE2QxAS80r2QxAbs0A2QxAa9kMQGrZDEBBzSjZDEBw2QxAWs0ZG9kMQEXNNtkYQEnNJUBjAPyRpMWh06VfQcKehKimCLTlEiXa5JzuSAT49DriCjIILXDYjwHIW8olnVfh21gK4GfsnX+puL8Cc7PNSne1cb++vnq4Z4O9kRBDf33jC0oTRILZ39hKHA6MCYzeR4LEAJCjrPrAgGHgR+amZEC9QFAT/bKsasCyaFbPbV4F8Lq25GSpC3aCs2RR1M7FoGJXFtTGaBtbJSb953HlJjAzfw71bbAtt0ota2hww76tst/mEraqxhco0Leph4lfUwNYTx+RmhjhAx5u3u8gRiLArnBGYL15fcOjAnEBenI4D+YEWBCj6cR4Ek62uSMTxPVDiozBWSxXXWpW3JrdIyYhMh7bwYhDPAP//Mh0Oars9v1sgfj5wT9hysBfGQhR02rMjGTbGkkdVEj+ird0vPVvlzntservvAMesW7k4QLCznyvqJbM018KyOMeJC1O4sCEoUWpHpSeoNCXo9gjfGi7m2W3NG9JlL7/7+6/djitaXj3Nbrv5X0ApkU81MwboxDJDJfj5NYFHhYGmNU+4v/AwAA/wEAAGtmZr7wzMw8RL+ovqS8KD8OCgAAAAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAD8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAAAAAAgAAAAL8AAAAA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AAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAP///z4AAAAAAAAAAP///z4AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAP///74AAAAAAAAAAP///74AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAA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AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAA/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/AAAAAAAAAIAAAAC/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AAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAD8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAAAAAAAAAL8AAAAAAACJtwAAyDYAAAAAAACJtwAAyDYAAAAAAICENwAAwbYAAAAAAACItQAAYDUAAAAAAEBKOADAKbgAABAvAACItQAAYDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAIATNwCAUbgAAAAAAIATNwCAUbgAAAAAAIDCNgAACrgAAAAAAIATtwCAUbgAAAAAAIDCtgAACrgAAAAAAIDCtgAACrgAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAACINQAAYDUAAAAAAEBKuACAeTgAAAAAAEBKuADAKbgAAAAAAACJNwAAyDYAAAAAAICEtwAAwbYAAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAAAAAACJtwAAyDYAAAAAAICENwAAwbYAAAAAAICENwAAwbYAAAAAAACItQAAYDUAAAAAAACItQAAYDUAAAAAAEBKOADAKbgAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAAAgtQAAiDUAAAAAAIATNwCAUbgAAAAAAIDCNgAACrgAAAAAAIDCNgAACrgAAAAAAIATtwCAUbgAAAAAAIATtwCAUbgAAAAAAIDCtgAACrgAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAAAgNQAAiDUAAAAAAACINQAAYDUAAAAAAACINQAAYDUAAAAAAEBKuADAKbgAAAAAAACJNwAAyDYAAAAAAACJNwAAyDYAAAAAAICEtwAAwbYAAAAAAICEtwAAwbYAAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAACotwAAjTcAAAAAAAAiOAAACLgAAAAAAAAiOAAACLgAAAAAAAA5twAAoDcAAAAAAABrNwCAy7cAAAAAAABrNwCAy7cAAAAAAAA7tgCAhDcAAAAAAABwNAAAsLUAAAAAAABwNAAAsLUAAAAAAAA7NgCAhDcAAAAAAAA7NgCAhDcAAAAAAABwtAAAsLUAAAAAAABrtwCAy7cAAAAAAGC0OACAy7cAAAAAAABrtwCAy7cAAAAAAACoNwAAjTcAAAAAAACoNwAAjTcAQK2xAAAiuAAACLgAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAAAAAAAAtAAAgC4AAIAtAAAAtAAAgC4AAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAADKtwAAE7cAAAAAAACoNwAAjTcAAAAAAAAiuAAACLgAAAAAAAAiuAAACLgAAAAAAABrtwCAy7cAAAAAAABrtwCAy7cAAAAAAABrtwCAy7cAAAAAAAA7NgCAhDcAAAAAAABwtAAAsLUAAAAAAABwtAAAsLUAAAAAAAA7tgCAhDcAAAAAAAA7tgCAhDcAAAAAAABwNAAAsLUAAAAAAAA5twAAoDcAAAAAAABrNwCAy7cAAAAAAGC0uACAy7cAAAAAAACotwAAjTcAAAAAAACotwAAjTcAAAAAAAAiOAAACLgAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAADKNwAAE7cAAAAAAAAANAAAgC4AAAAAAAAANAAAgC4AAIAtAAAANAAAgC4AAAAAAAAANAAAgK4AAAAAAAAANAAAgK4AAIAtAAAANAAAgK4AAAAAAAAANAAAgK4AAAAAAAAANAAAgK4AAIAtAAAANAAAgK4AAAAAAAD6tgAANjYAAAAAAAD6tgAANjYAAAAAAAAmuACAcjcAAAAAAAAmuACAcjcAAAAAAAD6tgAANjYAAAAAAAAmuACAcjcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAADKNwAAEzcAAAAAAACotwAAjbcAAAAAAAAiOAAACDgAAAAAAAAiOAAACDgAAAAAAACotwAAjbcAAAAAAACotwAAjbcAAAAAAAAiOAAACDgAAAAAAAA5twAAoLcAAAAAAABrNwCAyzcAAAAAAABrNwCAyzcAAAAAAAA5twAAoLcAAAAAAAA5twAAoLcAAAAAAABrNwCAyzcAAAAAAAA7tgCAhLcAAAAAAABwNAAAsDUAAAAAAABwNAAAsDUAAAAAAAA7tgCAhLcAAAAAAAA7tgCAhLcAAAAAAABwNAAAsDUAAAAAAAA7NgCAhLcAAAAAAAA7NgCAhLcAAAAAAABwtAAAsDUAAAAAAAA7NgCAhLcAAAAAAABwtAAAsDUAAAAAAABwtAAAsDUAAAAAAABrtwCAyzcAAAAAAGC0OACAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAABrtwCAyzcAAAAAAACoNwAAjbcAAAAAAACoNwAAjbcAAAAAAAAiuAAACDgAAAAAAACoNwAAjbcAAAAAAAAiuAAACDgAAAAAAAAiuAAACDgAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAADKtwAAEzcAAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAIAtAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAAAtAAAgK4AAAAAAAD6NgAANjYAAAAAAAD6NgAANjYAAAAAAAAmOACAcjcAAAAAAAD6NgAANjYAAAAAAAAmOACAcjcAAAAAAAAmOACAcjcAAAAAAACUNwAAeTcAAAAAAACUNwAAeTcAAAAAAAALNwAA6jYAAAAAAAALNwAA6jYAAAAAAAALNwAA6jYAgB4xAACUNwAAeTcAAAAAABDFuAAALzcAAAAAAADKNgAALzcAAAAAAMCetwDACbgAAAAAAADKNgAALzcAAAAAAMCetwDACbgAAAAAAMCetwDACbgAAAAAAIATNwCAUTgAAAAAAIATNwCAUTgAAAAAAIDCNgAACjgAAAAAAIATNwCAUTgAAAAAAIDCNgAACjgAAAAAAIDCNgAACjgAAAAAAIATtwCAUTgAAAAAAIDCtgAACjgAAAAAAIDCtgAACjgAAAAAAIATtwCAUTgAAAAAAIATtwCAUTgAAAAAAIDCtgAACjgAAAAAAADKtgAALzcAAAAAAMCeNwDACbgAAAAAAMCeNwDACbgAAAAAAADKtgAALzcAAAAAABDFOAAALzcAAAAAAMCeNwDACbgAAAAAAACUtwAAeTcAAAAAAAALtwAA6jYAAAAAAAALtwAA6jYAAAAAAACUtwAAeTcAAAAAAACUtwAAeTcAAAAAAAALtwAA6jY=";class j_ extends k_{constructor(A){super(xj),this._props=A,this._goodsWidthGap=.01,this._goodsLengthGap=.01,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._length=0,this._container=new Et,this._goodsSize=new Ef(0,0,0),this.add(this._container)}get length(){return this._length}loaded(A){this._container.add(A.clone(!0)),this._container.traverse(e=>{e.userData.isContainer&&(this._goodsContainer=e);const t="length";if(Object.keys(e.morphTargetDictionary||{}).includes(t)){const i=e.morphTargetDictionary[t];this._length=e.morphTargetInfluences[i]}}),this.setGoodsSize({length:this.size.length,width:this.size.width,height:this.size.height})}setGoodsSize({length:A,width:e,height:t}){var o;this._goodsSize.length=A,this._goodsSize.width=e,this._goodsSize.height=t,this._goods&&(Sn(this._goods),this._goods.removeFromParent()),this.size.length=A+this._goodsLengthGap*2+.04,this.size.height=t+.115,this.size.width=e+this._goodsWidthGap*2+.07,this.setShapeKey("goodsWidth",e+this._goodsWidthGap*2),this.setShapeKey("goodsLength",A+this._goodsLengthGap*2),this._emitter.emit("size-change",this.size);const i=new ls(this._goodsSize.width,t,this._goodsSize.length);i.translate(0,t/2,0);const r=new M1(i);this._goods=new Pe(i,new Dl({color:"#22f",opacity:.2,transparent:!0}));const s=new bl(r,new ti({color:"#22f"}));this._goods.add(s),(o=this._goodsContainer)==null||o.add(this._goods)}setShapeKey(A,e){A==="goodsLength"&&(this._length=e),this._container.traverse(t=>{let i=e;if(t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]),!Object.keys(t.morphTargetDictionary||{}).includes(A))return;const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i)})}destroy(){this._emitter.removeAllListeners(),this._emitter=null,Sn(this)}}class Ij extends k_{constructor(){super(wj),this._container=new Et,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._widthGap=.01,this._lengthGap=.01,this._row=new Cj(this._widthGap),this.add(this._container)}loaded(A){this._container.add(A.clone(!0));const e=this._row;e.addEventListener("size-change",({width:r,length:s,height:o})=>{this.setShapeKey("goodsWidth",r),this.setShapeKey("goodsLength",s),this.size.width=s+this._lengthGap,this.size.length=r+this._widthGap,this.size.height=o,this._emitter.emit("size-change",this.size)});const t=new j_({goodsSize:new O(1,1,1)}),i=new j_({goodsSize:new O(1,1,1)});e.addItem(t),e.addItem(i),this.add(e)}setShapeKey(A,e){["length","width"].includes(A)&&(e-=.2),this._container.traverse(t=>{if(!Object.keys(t.morphTargetDictionary||{}).includes(A))return;let i=e;t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]);const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i)})}setGoodsSize(A){this._row.items.forEach(e=>e.setGoodsSize(A))}destroy(){this._emitter.removeAllListeners(),this._row.destroy(),Sn(this)}}class K_ extends Ie{constructor(A=.6,e=.4,t=.2){super(),this._generate(A,e,t)}updateSize(A=.1,e=.1,t=.1){this._generate(A,e,t)}clearAll(){Sn(this)}hide(){this.traverse(A=>A.visible=!1)}show(){this.traverse(A=>A.visible=!0)}_generate(A,e,t){this.clearAll();const i=new Pe(new ls(A,t,e),new ti({color:new KA("#0f5fd5"),transparent:!0,opacity:.4}));i.geometry.translate(0,t/2,0);const r=new M1(i.geometry),s=new q1({color:new KA("#000"),dashSize:.015,gapSize:.015}),o=new bl(r,s);o.computeLineDistances(),this.add(i,o)}}new Zp;class bj extends Ie{constructor(A){super(),this._props=A,this._emitter=new br,this.addEventListener=this._emitter.addListener.bind(this._emitter),this._container=new Et,this.sizeBox=new yj,this._goodsSize=new Ef(0,0,0),this._slots=[],this._logos=[],this._skins=[],this._levels=new Map,this._bodyOpacity=1,this._masts=new Map,this._liftMaxHeight=0,this._jackMaxHeight=0,this._forkMaxHeight=0,this.controllers=[],this.goods=[],this._breathLights=[],this._shelves=new Map,this._shelfMaxLevel=1,this._shelveAnimateTimes=[],this._url="",this._showController=!0,this._shapeKeys=new Map,this._materialsCache=new Map,this.opacityCache=void 0,this._url=A.url||"",this._url&&this.load(this._url).then(),this.add(this._container),this._props.showSizeBox&&this.add(this.sizeBox),this.showController=typeof A.showController=="boolean"?A.showController:!0}get shapeKeys(){return this._shapeKeys}get size(){const A=this.sizeBox.size.getSize(new O);return{width:A.z,length:A.x,height:A.y}}get showController(){return this._showController}set showController(A){this._showController=A,this.controllers.forEach(e=>A?e.show():e.hide())}get slots(){return this._slots}get logos(){return this._logos}get skins(){return this._skins}get bodyOpacity(){return this._bodyOpacity}get fork(){return this._fork}get forkHeight(){var A;return((A=this._fork)==null?void 0:A.position.y)||0}get liftHeight(){var A;return((A=this._lift)==null?void 0:A.position.y)||0}get jack(){return this._jack}get jackHeight(){var A;return((A=this._jack)==null?void 0:A.position.y)||0}get lift(){return this._lift}set bodyOpacity(A){this._bodyOpacity=A,A<1?this._materialsCache.forEach(e=>{e.mat.transparent=!0,e.mat.opacity=A,e.mat.metalness=0,e.mat.roughness=1,e.mat.color=new KA("#3859be"),e.mat.needsUpdate=!0}):this._materialsCache.forEach(e=>{e.mat.transparent=e.transparent,e.mat.opacity=e.opacity,e.mat.metalness=e.metalness,e.mat.roughness=e.roughness,e.mat.color=e.color,e.mat.needsUpdate=!0})}init(A){this._app=A,this.sizeBox.init(A),this.addEventListener("shape-key-changed",(e,t)=>{this._slots.forEach(i=>i.shapeKeyChanged(e,t)),this.sizeBox.follow===e?(this.sizeBox.generate(this._container,t),this.sizeBox.originOffset&&(this._container.traverse(i=>{i instanceof Pe&&!i.userData.isDevice&&!i.userData.isBracket&&i.geometry.translate(this.sizeBox.originOffset-this.sizeBox.translateCache,0,0),i instanceof jf&&i.parent&&i.parent.position.add(new O(this.sizeBox.originOffset-this.sizeBox.translateCache,0,0))}),this.sizeBox.translateCache=this.sizeBox.originOffset,this.sizeBox.generate(this._container))):this.sizeBox.generate(this._container)})}async load(A){this._url=A,this.name=A.substring(A.lastIndexOf("/")+1,A.lastIndexOf(".")),!A.startsWith("blob")&&A.endsWith(".sglb");let e;if(A.endsWith(".glb"))e=(await Da.loadAsync(A)).scene;else{const i=await new dc({useCache:!0}).loadAsync(A);if(!i.glb)return;e=i.glb}this._generateAmr(e.clone(!0)),e=null}changeSkin(A,e){A&&(A.change(e),this._app&&this._app.usePathTracing&&(this._app.sampleCount=0,this._app.pathTracer.reset(),this._app.pathTracer.updateMaterials()))}changeLogo(A,e){A.change(e.url,new uA(e.scaleX,e.scaleY),new uA(e.ox,e.oy)),this._app&&this._app.usePathTracing&&(this._app.usePathTracing=!1,setTimeout(()=>{var t;(t=this._app)==null||t.generateBVH().then()},10))}setShapeKey(A,e){this._container.traverse(t=>{if(!Object.keys(t.morphTargetDictionary||{}).includes(A))return;let i=e;t.userData[`origin_${A}`]&&(i-=t.userData[`origin_${A}`]);const r=t.morphTargetDictionary[A];t.morphTargetInfluences&&(t.morphTargetInfluences[r]=i),t instanceof Pe&&t.geometry.translate(0,0,1e-5)}),this._emitter.emit("shape-key-changed",A,e)}_generateAmr(A){A.traverse(e=>{e.userData.isShelf&&(this._shelf=e),e.userData.isFork&&(this._fork=e),e.userData.isMast&&e.userData.mastLevel&&this._masts.set(e.userData.mastLevel,e),e.userData.isJack&&(this._jack=e),e.userData.isLift&&(this._lift=e),Object.keys(e.morphTargetDictionary||{}).forEach(t=>{let i=e.morphTargetInfluences[e.morphTargetDictionary[t]];e.userData[`origin_${t}`]&&(i+=e.userData[`origin_${t}`]),this._shapeKeys.has(t)||this._shapeKeys.set(t,i)})}),A.traverse(e=>{if(e instanceof Pe){if(e.material)if(Array.isArray(e.material))e.material.forEach(i=>{i.userData.changeColor&&(this.skins.find(r=>r.name===i.userData.name)||this.skins.push(new jv({name:i.userData.name,target:i})))});else{if(e.material.userData.isBreathLight&&e.material.emissiveIntensity){e.material.emissiveIntensity=1.5;const i=new xs.Tween(e.material).to({emissiveIntensity:.1}).easing(xs.Easing.Quintic.InOut).duration(1e3).start().yoyo(!0).repeat(1/0);this._breathLights.push(i)}e.material.userData.changeColor&&(this.skins.find(i=>i.name===e.material.userData.name)||this.skins.push(new jv({name:e.material.userData.name,target:e.material})))}if(e.material)if(Array.isArray(e.material))e.material.forEach(r=>{if(r.userData.isLOGO){e.material.transparent=!0;let s;const o={width:0,height:0};e.material.map&&e.material.map.image&&(o.width=e.material.map.image.width,o.height=e.material.map.image.height,s=O0(e.material.map.image));const a=new kv({name:r.userData.name,target:e,size:Pb(e),imageSize:o,imageUrl:s});this._logos.push(a)}r.userData.isTransparent&&(r.transparent=!0),this._materialsCache.set(r.uuid,{opacity:r.opacity,transparent:r.transparent,roughness:r.roughness,metalness:r.metalness,color:r.color,mat:r})});else{const i=e.material;if(i.userData.isLOGO){e.material.transparent=!0;let r;const s={width:0,height:0};e.material.map&&e.material.map.image&&(s.width=e.material.map.image.width,s.height=e.material.map.image.height,r=O0(e.material.map.image));const o=new kv({name:i.userData.name,target:e,size:Pb(e),imageSize:s,imageUrl:r});this._logos.push(o)}i.userData.isTransparent&&(i.transparent=!0),this._materialsCache.set(i.uuid,{opacity:i.opacity,transparent:i.transparent,roughness:i.roughness,metalness:i.metalness,color:i.color,mat:i})}}this.generateController(e,A),this.generateDimension(e,A);const t=this.generateSlot(e,A);t&&this._slots.push(t),e.userData.isOrigin&&Object.keys(e.userData).forEach(r=>{if(r.startsWith("follow_")){const s=r.replace("follow_","");this.shapeKeys.has(s)&&(this.sizeBox.follow=s,this.sizeBox.followOrigin=this._shapeKeys.get(s)||0,this.sizeBox.followScale=e.userData[r])}})}),A.updateMatrixWorld(!0),this._container.add(A),this.sizeBox.generate(A),this.sizeBox.show()}setHeight(A){this.setShapeKey("height",A)}setWeight(A){this.setShapeKey("width",A)}setLength(A){this.setShapeKey("length",A)}limitValue(A){this.name==="SFL-CDD14"&&(A>1.6?this.setShapeKey("mast",1):this.setShapeKey("mast",0)),this.name==="SFL-CDD15"&&(A>2.43?this.setShapeKey("mast",1):this.setShapeKey("mast",0)),["SFL-CPD20-Y","SFL-CPD30-Y"].includes(this.name)&&(A>3.5?this.setShapeKey("mast",2):A>3?this.setShapeKey("mast",1):this.setShapeKey("mast",0))}setForkHeight(A){if(this._fork&&(A>this._forkMaxHeight&&(A=this._forkMaxHeight),this._fork.position.y=A,this._masts.size===1)){const e=this._masts.get(2),t=(e==null?void 0:e.userData.startHeight)||.1;e&&(e.position.y=(A-t)*.5)}}setForkMaxHeight(A){this._fork&&(this._forkMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("fork")&&(e.props.max=A)}),this._fork&&this.forkHeight>this._forkMaxHeight&&this.setForkHeight(A))}setLiftHeight(A){this._lift&&(A>this._liftMaxHeight&&(A=this._liftMaxHeight),this._lift.position.y=A)}setLiftMaxHeight(A){this._lift&&(this._liftMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("lift")&&(e.props.max=A)}),this.liftHeight>this._liftMaxHeight&&this.setLiftHeight(A),this.setHeight(A+.46))}setJackMaxHeight(A){this._jack&&(this._jackMaxHeight=A,this.limitValue(A),this.controllers.forEach(e=>{e.name.toLowerCase().includes("jack")&&(e.props.max=A)}),this.jackHeight>this._jackMaxHeight&&this.setJackHeight(A))}setJackHeight(A){this._jack&&(A>this._jackMaxHeight&&(A=this._jackMaxHeight),this._jack.position.y=A)}setLevel(A){this._levels.forEach(e=>{e.destroy()}),this._levels.clear();for(let e=0;e<A;e++){const t=new Ij;t.position.y=.112+e*.6,t.addEventListener("size-change",i=>{setTimeout(()=>{this.setShapeKey("length",i.length),this.setShapeKey("width",i.width)},20)}),this.lift?this.lift.add(t):this.add(t),this._levels.set(e,t)}setTimeout(()=>{this.setGoodsSize(this._goodsSize)},100)}setGoodsSize(A){this._goodsSize.length=A.length,this._goodsSize.width=A.width,this._goodsSize.height=A.height,this._levels.forEach(e=>{e.setGoodsSize(A)}),this.setShelfLevel(this._shelfMaxLevel)}setShelfLevel(A=3){if(!this._shelf)return;this._shelfMaxLevel=A;const e=this._goodsSize.height+.12;this._shelves.delete(0),this._shelves.forEach(t=>{Sn(t),t.parent&&t.removeFromParent()}),this.goods=[],this._shelves.clear(),this._shelves.set(0,this._shelf),this._shelveAnimateTimes.length&&this._shelveAnimateTimes.forEach(t=>window.clearTimeout(t)),this._shelveAnimateTimes=[];for(let t=1;t<A;t++){const i=window.setTimeout(()=>{var o;if(!this._shelf)return;const r=this._shelf.clone(!0);r.position.y+=e*t,this._shelves.set(t,r),(o=this._shelf.parent)==null||o.add(r);let s;if(r.traverse(a=>{a.userData.isShelfContainer&&(s=a)}),s){const a=new K_(this._goodsSize.length,this._goodsSize.width,this._goodsSize.height);if(s.add(a),this.goods.push(a),t===1){const l=new K_(this._goodsSize.length,this._goodsSize.width,this._goodsSize.height);l.position.y-=e,s.add(l),this.goods.push(l)}}r.scale.set(.5,1,0),new bu(r.scale).to({x:1,y:1,z:1}).duration(100).start()},100+t*90);this._shelveAnimateTimes.push(i)}}generateOuterLine(){this.traverse(A=>{if(A.userData.isOuterObject){const e=this.sizeBox.radius;this._outline?this._outline.update(e):(this._outline=new z_(e,0),this.add(this._outline))}})}generateController(A,e){if(this.showController){if(A.userData.isForkController&&A.userData.target){const t=A.userData.target.name,{min:i,max:r}=A.userData;let s;if(e.traverse(a=>{a.name===t&&(s=a)}),!s)return;const o=new R_({name:"",target:t,default:0,min:i,max:r},s);A.add(o)}else if(A.userData.isController&&A.userData.target){const t=A.userData.target.name,{min:i,max:r}=A.userData;let s;if(e.traverse(a=>{a.name===t&&(s=a)}),!s)return;const o=new R_({name:"",userData:A.userData,target:A.userData.key,default:0,min:i||0,max:r||1},s);A.add(o),this.controllers.push(o),(s.userData.isFork||s.userData.isLift||s.userData.isJack)&&(this._forkMaxHeight=r||1,this._liftMaxHeight=r||1,this._jackMaxHeight=r||1,o.addListener("change",a=>{this.setForkHeight(a),this.setLiftHeight(a),this.setJackHeight(a)}))}}}generateDimension(A,e){if(A.userData.isDimension){const t=A.userData.divider,i=O9(A.userData.startOrigin),r=A.userData.axios;let s,o;if(r==="x"?(s=new O(A.userData.start-A.position.x,0,0),o=s.clone().setX(A.userData.end-A.position.x)):r==="z"?(s=new O(0,A.userData.start-A.position.y,0),o=s.clone().setY(A.userData.end-A.position.y)):(s=new O(0,0,A.userData.start-A.position.z),o=s.clone().setZ(A.userData.end-A.position.z)),!Object.keys(A.userData).flatMap(c=>c.startsWith("target")?A.userData[c].name:[]).length)return;const u=new pj({start:s,end:o,startOrigin:i,axios:r,divider:t});A.add(u)}}generateSlot(A,e){if(A.userData.isSlot){const t=A.userData.name;if(t){const i=A.userData.holeTarget&&A.userData.holeTarget.name;let r;i&&e.traverse(a=>{a.name===i&&(r=a)});const s=new Map;Object.keys(A.userData).forEach(a=>{if(a.startsWith("follow_")){const l=a.split("_")[1];if(l){let u=A.userData[a];s.set(l,{scale:u,origin:this.shapeKeys.get(l)||0})}}});const o=new jf({name:t,follows:s,slot:A});return o.holeTarget=r,o.addEventListener(hi.ON_DROP,a=>{this._app&&this._app.props.useSound&&this._app.sound.play()}),o.addEventListener(hi.ON_BEFORE_SELECTED,a=>{this._slots.forEach(l=>{l.selected&&(l.selected=!1)})}),o.addEventListener(hi.ON_ERROR_STATE_CHANGE,a=>{if(this._app)if(this._app._outlinePassError.selectedObjects=this._app._outlinePassError.selectedObjects.filter(l=>!!l.parent),a){if(o.device){if(this._app._outlinePassError.selectedObjects.find(u=>{var c;return u.parent==((c=o.device)==null?void 0:c.parent)}))return;this._app._outlinePassError.selectedObjects=[o.device,...this._app._outlinePassError.selectedObjects]}}else o.device&&(this._app._outlinePassError.selectedObjects=this._app._outlinePassError.selectedObjects.filter(l=>{var u;return l.parent!=((u=o.device)==null?void 0:u.parent)}))}),o}}}clean(){this._emitter.removeAllListeners(),this._shelveAnimateTimes.length&&this._shelveAnimateTimes.forEach(A=>window.clearTimeout(A)),this._shelveAnimateTimes=[],this.controllers.forEach(A=>A.dispose()),this.controllers=[],Sn(this._container),this._levels.forEach(A=>A.destroy()),this._levels.clear(),this._slots=[],this._logos=[],this._skins=[],this._materialsCache.clear(),this.opacityCache=void 0,this._breathLights.forEach(A=>A.stop()),this._breathLights=[],this.sizeBox.reset()}destroy(){this.clean(),this.sizeBox.dispose()}}const F_=0,_j=1,Sj=2,G_=2,uv=1.25,H_=1,_c=6*4+4+4,Wf=65535,Mj=Math.pow(2,-24),fv=Symbol("SKIP_GENERATION");function Pj(n){return n.index?n.index.count:n.attributes.position.count}function Ra(n){return Pj(n)/3}function Tj(n,A=ArrayBuffer){return n>65535?new Uint32Array(new A(4*n)):new Uint16Array(new A(2*n))}function Y_(n,A){if(!n.index){const e=n.attributes.position.count,t=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Tj(e,t);n.setIndex(new ce(i,1));for(let r=0;r<e;r++)i[r]=r}}function U_(n){const A=Ra(n),e=n.drawRange,t=e.start/3,i=(e.start+e.count)/3,r=Math.max(0,t),s=Math.min(A,i)-r;return[{offset:Math.floor(r),count:Math.floor(s)}]}function W_(n){if(!n.groups||!n.groups.length)return U_(n);const A=[],e=new Set,t=n.drawRange,i=t.start/3,r=(t.start+t.count)/3;for(const o of n.groups){const a=o.start/3,l=(o.start+o.count)/3;e.add(Math.max(i,a)),e.add(Math.min(r,l))}const s=Array.from(e.values()).sort((o,a)=>o-a);for(let o=0;o<s.length-1;o++){const a=s[o],l=s[o+1];A.push({offset:Math.floor(a),count:Math.floor(l-a)})}return A}function Dj(n){if(n.groups.length===0)return!1;const A=Ra(n),e=W_(n).sort((r,s)=>r.offset-s.offset),t=e[e.length-1];t.count=Math.min(A-t.offset,t.count);let i=0;return e.forEach(({count:r})=>i+=r),A!==i}function dv(n,A,e,t,i){let r=1/0,s=1/0,o=1/0,a=-1/0,l=-1/0,u=-1/0,c=1/0,h=1/0,f=1/0,p=-1/0,m=-1/0,d=-1/0;for(let g=A*6,y=(A+e)*6;g<y;g+=6){const v=n[g+0],w=n[g+1],C=v-w,_=v+w;C<r&&(r=C),_>a&&(a=_),v<c&&(c=v),v>p&&(p=v);const x=n[g+2],S=n[g+3],b=x-S,I=x+S;b<s&&(s=b),I>l&&(l=I),x<h&&(h=x),x>m&&(m=x);const D=n[g+4],P=n[g+5],M=D-P,T=D+P;M<o&&(o=M),T>u&&(u=T),D<f&&(f=D),D>d&&(d=D)}t[0]=r,t[1]=s,t[2]=o,t[3]=a,t[4]=l,t[5]=u,i[0]=c,i[1]=h,i[2]=f,i[3]=p,i[4]=m,i[5]=d}function Ej(n,A=null,e=null,t=null){const i=n.attributes.position,r=n.index?n.index.array:null,s=Ra(n),o=i.normalized;let a;A===null?(a=new Float32Array(s*6*4),e=0,t=s):(a=A,e=e||0,t=t||s);const l=i.array,u=i.offset||0;let c=3;i.isInterleavedBufferAttribute&&(c=i.data.stride);const h=["getX","getY","getZ"];for(let f=e;f<e+t;f++){const p=f*3,m=f*6;let d=p+0,g=p+1,y=p+2;r&&(d=r[d],g=r[g],y=r[y]),o||(d=d*c+u,g=g*c+u,y=y*c+u);for(let v=0;v<3;v++){let w,C,_;o?(w=i[h[v]](d),C=i[h[v]](g),_=i[h[v]](y)):(w=l[d+v],C=l[g+v],_=l[y+v]);let x=w;C<x&&(x=C),_<x&&(x=_);let S=w;C>S&&(S=C),_>S&&(S=_);const b=(S-x)/2,I=v*2;a[m+I+0]=x+b,a[m+I+1]=b+(Math.abs(x)+b)*Mj}}return a}function Je(n,A,e){return e.min.x=A[n],e.min.y=A[n+1],e.min.z=A[n+2],e.max.x=A[n+3],e.max.y=A[n+4],e.max.z=A[n+5],e}function J_(n){let A=-1,e=-1/0;for(let t=0;t<3;t++){const i=n[t+3]-n[t];i>e&&(e=i,A=t)}return A}function Z_(n,A){A.set(n)}function X_(n,A,e){let t,i;for(let r=0;r<3;r++){const s=r+3;t=n[r],i=A[r],e[r]=t<i?t:i,t=n[s],i=A[s],e[s]=t>i?t:i}}function Jf(n,A,e){for(let t=0;t<3;t++){const i=A[n+2*t],r=A[n+2*t+1],s=i-r,o=i+r;s<e[t]&&(e[t]=s),o>e[t+3]&&(e[t+3]=o)}}function Sc(n){const A=n[3]-n[0],e=n[4]-n[1],t=n[5]-n[2];return 2*(A*e+e*t+t*A)}const nr=32,Lj=(n,A)=>n.candidate-A.candidate,Hr=new Array(nr).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Zf=new Float32Array(6);function Oj(n,A,e,t,i,r){let s=-1,o=0;if(r===F_)s=J_(A),s!==-1&&(o=(A[s]+A[s+3])/2);else if(r===_j)s=J_(n),s!==-1&&(o=qj(e,t,i,s));else if(r===Sj){const a=Sc(n);let l=uv*i;const u=t*6,c=(t+i)*6;for(let h=0;h<3;h++){const f=A[h],d=(A[h+3]-f)/nr;if(i<nr/4){const g=[...Hr];g.length=i;let y=0;for(let w=u;w<c;w+=6,y++){const C=g[y];C.candidate=e[w+2*h],C.count=0;const{bounds:_,leftCacheBounds:x,rightCacheBounds:S}=C;for(let b=0;b<3;b++)S[b]=1/0,S[b+3]=-1/0,x[b]=1/0,x[b+3]=-1/0,_[b]=1/0,_[b+3]=-1/0;Jf(w,e,_)}g.sort(Lj);let v=i;for(let w=0;w<v;w++){const C=g[w];for(;w+1<v&&g[w+1].candidate===C.candidate;)g.splice(w+1,1),v--}for(let w=u;w<c;w+=6){const C=e[w+2*h];for(let _=0;_<v;_++){const x=g[_];C>=x.candidate?Jf(w,e,x.rightCacheBounds):(Jf(w,e,x.leftCacheBounds),x.count++)}}for(let w=0;w<v;w++){const C=g[w],_=C.count,x=i-C.count,S=C.leftCacheBounds,b=C.rightCacheBounds;let I=0;_!==0&&(I=Sc(S)/a);let D=0;x!==0&&(D=Sc(b)/a);const P=H_+uv*(I*_+D*x);P<l&&(s=h,l=P,o=C.candidate)}}else{for(let v=0;v<nr;v++){const w=Hr[v];w.count=0,w.candidate=f+d+v*d;const C=w.bounds;for(let _=0;_<3;_++)C[_]=1/0,C[_+3]=-1/0}for(let v=u;v<c;v+=6){let _=~~((e[v+2*h]-f)/d);_>=nr&&(_=nr-1);const x=Hr[_];x.count++,Jf(v,e,x.bounds)}const g=Hr[nr-1];Z_(g.bounds,g.rightCacheBounds);for(let v=nr-2;v>=0;v--){const w=Hr[v],C=Hr[v+1];X_(w.bounds,C.rightCacheBounds,w.rightCacheBounds)}let y=0;for(let v=0;v<nr-1;v++){const w=Hr[v],C=w.count,_=w.bounds,S=Hr[v+1].rightCacheBounds;C!==0&&(y===0?Z_(_,Zf):X_(_,Zf,Zf)),y+=C;let b=0,I=0;y!==0&&(b=Sc(Zf)/a);const D=i-y;D!==0&&(I=Sc(S)/a);const P=H_+uv*(b*y+I*D);P<l&&(s=h,l=P,o=w.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${r} used.`);return{axis:s,pos:o}}function qj(n,A,e,t){let i=0;for(let r=A,s=A+e;r<s;r++)i+=n[r*6+t*2];return i/e}class pv{constructor(){this.boundingData=new Float32Array(6)}}function Nj(n,A,e,t,i,r){let s=t,o=t+i-1;const a=r.pos,l=r.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){for(let u=0;u<3;u++){let c=A[s*3+u];A[s*3+u]=A[o*3+u],A[o*3+u]=c}for(let u=0;u<6;u++){let c=e[s*6+u];e[s*6+u]=e[o*6+u],e[o*6+u]=c}s++,o--}else return s}}function Bj(n,A,e,t,i,r){let s=t,o=t+i-1;const a=r.pos,l=r.axis*2;for(;;){for(;s<=o&&e[s*6+l]<a;)s++;for(;s<=o&&e[o*6+l]>=a;)o--;if(s<o){let u=n[s];n[s]=n[o],n[o]=u;for(let c=0;c<6;c++){let h=e[s*6+c];e[s*6+c]=e[o*6+c],e[o*6+c]=h}s++,o--}else return s}}function Qt(n,A){return A[n+15]===65535}function ui(n,A){return A[n+6]}function Mi(n,A){return A[n+14]}function Pi(n){return n+8}function Ti(n,A){return A[n+6]}function Q_(n,A){return A[n+7]}function TG(n){return n}let V_,Mc,Xf,$_;const zj=Math.pow(2,32);function gv(n){return"count"in n?1:1+gv(n.left)+gv(n.right)}function Rj(n,A,e){return V_=new Float32Array(e),Mc=new Uint32Array(e),Xf=new Uint16Array(e),$_=new Uint8Array(e),mv(n,A)}function mv(n,A){const e=n/4,t=n/2,i="count"in A,r=A.boundingData;for(let s=0;s<6;s++)V_[e+s]=r[s];if(i)if(A.buffer){const s=A.buffer;$_.set(new Uint8Array(s),n);for(let o=n,a=n+s.byteLength;o<a;o+=_c){const l=o/2;Qt(l,Xf)||(Mc[o/4+6]+=e)}return n+s.byteLength}else{const s=A.offset,o=A.count;return Mc[e+6]=s,Xf[t+14]=o,Xf[t+15]=Wf,n+_c}else{const s=A.left,o=A.right,a=A.splitAxis;let l;if(l=mv(n+_c,s),l/4>zj)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return Mc[e+6]=l/4,l=mv(l,o),Mc[e+7]=a,l}}function kj(n,A){const e=(n.index?n.index.count:n.attributes.position.count)/3,t=e>2**16,i=t?4:2,r=A?new SharedArrayBuffer(e*i):new ArrayBuffer(e*i),s=t?new Uint32Array(r):new Uint16Array(r);for(let o=0,a=s.length;o<a;o++)s[o]=o;return s}function jj(n,A,e,t,i){const{maxDepth:r,verbose:s,maxLeafTris:o,strategy:a,onProgress:l,indirect:u}=i,c=n._indirectBuffer,h=n.geometry,f=h.index?h.index.array:null,p=u?Bj:Nj,m=Ra(h),d=new Float32Array(6);let g=!1;const y=new pv;return dv(A,e,t,y.boundingData,d),w(y,e,t,d),y;function v(C){l&&l(C/m)}function w(C,_,x,S=null,b=0){if(!g&&b>=r&&(g=!0,s&&(console.warn(`MeshBVH: Max depth of ${r} reached when generating BVH. Consider increasing maxDepth.`),console.warn(h))),x<=o||b>=r)return v(_+x),C.offset=_,C.count=x,C;const I=Oj(C.boundingData,S,A,_,x,a);if(I.axis===-1)return v(_+x),C.offset=_,C.count=x,C;const D=p(c,f,A,_,x,I);if(D===_||D===_+x)v(_+x),C.offset=_,C.count=x;else{C.splitAxis=I.axis;const P=new pv,M=_,T=D-_;C.left=P,dv(A,M,T,P.boundingData,d),w(P,M,T,d,b+1);const q=new pv,B=D,W=x-T;C.right=q,dv(A,B,W,q.boundingData,d),w(q,B,W,d,b+1)}return C}}function Kj(n,A){const e=n.geometry;A.indirect&&(n._indirectBuffer=kj(e,A.useSharedArrayBuffer),Dj(e)&&!A.verbose&&console.warn('MeshBVH: Provided geometry contains groups that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),n._indirectBuffer||Y_(e,A);const t=A.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Ej(e),r=A.indirect?U_(e):W_(e);n._roots=r.map(s=>{const o=jj(n,i,s.offset,s.count,A),a=gv(o),l=new t(_c*a);return Rj(0,o,l),l})}class rr{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(A,e){let t=1/0,i=-1/0;for(let r=0,s=A.length;r<s;r++){const a=A[r][e];t=a<t?a:t,i=a>i?a:i}this.min=t,this.max=i}setFromPoints(A,e){let t=1/0,i=-1/0;for(let r=0,s=e.length;r<s;r++){const o=e[r],a=A.dot(o);t=a<t?a:t,i=a>i?a:i}this.min=t,this.max=i}isSeparated(A){return this.min>A.max||A.min>this.max}}rr.prototype.setFromBox=function(){const n=new O;return function(e,t){const i=t.min,r=t.max;let s=1/0,o=-1/0;for(let a=0;a<=1;a++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){n.x=i.x*a+r.x*(1-a),n.y=i.y*l+r.y*(1-l),n.z=i.z*u+r.z*(1-u);const c=e.dot(n);s=Math.min(c,s),o=Math.max(c,o)}this.min=s,this.max=o}}();const Fj=function(){const n=new O,A=new O,e=new O;return function(i,r,s){const o=i.start,a=n,l=r.start,u=A;e.subVectors(o,l),n.subVectors(i.end,i.start),A.subVectors(r.end,r.start);const c=e.dot(u),h=u.dot(a),f=u.dot(u),p=e.dot(a),d=a.dot(a)*f-h*h;let g,y;d!==0?g=(c*h-p*f)/d:g=0,y=(c+g*h)/f,s.x=g,s.y=y}}(),vv=function(){const n=new uA,A=new O,e=new O;return function(i,r,s,o){Fj(i,r,n);let a=n.x,l=n.y;if(a>=0&&a<=1&&l>=0&&l<=1){i.at(a,s),r.at(l,o);return}else if(a>=0&&a<=1){l<0?r.at(0,o):r.at(1,o),i.closestPointToPoint(o,!0,s);return}else if(l>=0&&l<=1){a<0?i.at(0,s):i.at(1,s),r.closestPointToPoint(s,!0,o);return}else{let u;a<0?u=i.start:u=i.end;let c;l<0?c=r.start:c=r.end;const h=A,f=e;if(i.closestPointToPoint(c,!0,A),r.closestPointToPoint(u,!0,e),h.distanceToSquared(c)<=f.distanceToSquared(u)){s.copy(h),o.copy(c);return}else{s.copy(u),o.copy(f);return}}}}(),Gj=function(){const n=new O,A=new O,e=new Ut,t=new De;return function(r,s){const{radius:o,center:a}=r,{a:l,b:u,c}=s;if(t.start=l,t.end=u,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o||(t.start=l,t.end=c,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o)||(t.start=u,t.end=c,t.closestPointToPoint(a,!0,n).distanceTo(a)<=o))return!0;const m=s.getPlane(e);if(Math.abs(m.distanceToPoint(a))<=o){const g=m.projectPoint(a,A);if(s.containsPoint(g))return!0}return!1}}(),Hj=1e-15;function yv(n){return Math.abs(n)<Hj}class en extends Ue{constructor(...A){super(...A),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new O),this.satBounds=new Array(4).fill().map(()=>new rr),this.points=[this.a,this.b,this.c],this.sphere=new Ai,this.plane=new Ut,this.needsUpdate=!0}intersectsSphere(A){return Gj(A,this)}update(){const A=this.a,e=this.b,t=this.c,i=this.points,r=this.satAxes,s=this.satBounds,o=r[0],a=s[0];this.getNormal(o),a.setFromPoints(o,i);const l=r[1],u=s[1];l.subVectors(A,e),u.setFromPoints(l,i);const c=r[2],h=s[2];c.subVectors(e,t),h.setFromPoints(c,i);const f=r[3],p=s[3];f.subVectors(t,A),p.setFromPoints(f,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,A),this.needsUpdate=!1}}en.prototype.closestPointToSegment=function(){const n=new O,A=new O,e=new De;return function(i,r=null,s=null){const{start:o,end:a}=i,l=this.points;let u,c=1/0;for(let h=0;h<3;h++){const f=(h+1)%3;e.start.copy(l[h]),e.end.copy(l[f]),vv(e,i,n,A),u=n.distanceToSquared(A),u<c&&(c=u,r&&r.copy(n),s&&s.copy(A))}return this.closestPointToPoint(o,n),u=o.distanceToSquared(n),u<c&&(c=u,r&&r.copy(n),s&&s.copy(o)),this.closestPointToPoint(a,n),u=a.distanceToSquared(n),u<c&&(c=u,r&&r.copy(n),s&&s.copy(a)),Math.sqrt(c)}}(),en.prototype.intersectsTriangle=function(){const n=new en,A=new Array(3),e=new Array(3),t=new rr,i=new rr,r=new O,s=new O,o=new O,a=new O,l=new O,u=new De,c=new De,h=new De,f=new O;function p(m,d,g){const y=m.points;let v=0,w=-1;for(let C=0;C<3;C++){const{start:_,end:x}=u;_.copy(y[C]),x.copy(y[(C+1)%3]),u.delta(s);const S=yv(d.distanceToPoint(_));if(yv(d.normal.dot(s))&&S){g.copy(u),v=2;break}const b=d.intersectLine(u,f);if(!b&&S&&f.copy(_),(b||S)&&!yv(f.distanceTo(x))){if(v<=1)(v===1?g.start:g.end).copy(f),S&&(w=v);else if(v>=2){(w===1?g.start:g.end).copy(f),v=2;break}if(v++,v===2&&w===-1)break}}return v}return function(d,g=null,y=!1){this.needsUpdate&&this.update(),d.isExtendedTriangle?d.needsUpdate&&d.update():(n.copy(d),n.update(),d=n);const v=this.plane,w=d.plane;if(Math.abs(v.normal.dot(w.normal))>1-1e-10){const C=this.satBounds,_=this.satAxes;e[0]=d.a,e[1]=d.b,e[2]=d.c;for(let b=0;b<4;b++){const I=C[b],D=_[b];if(t.setFromPoints(D,e),I.isSeparated(t))return!1}const x=d.satBounds,S=d.satAxes;A[0]=this.a,A[1]=this.b,A[2]=this.c;for(let b=0;b<4;b++){const I=x[b],D=S[b];if(t.setFromPoints(D,A),I.isSeparated(t))return!1}for(let b=0;b<4;b++){const I=_[b];for(let D=0;D<4;D++){const P=S[D];if(r.crossVectors(I,P),t.setFromPoints(r,A),i.setFromPoints(r,e),t.isSeparated(i))return!1}}return g&&(y||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),g.start.set(0,0,0),g.end.set(0,0,0)),!0}else{const C=p(this,w,c);if(C===1&&d.containsPoint(c.end))return g&&(g.start.copy(c.end),g.end.copy(c.end)),!0;if(C!==2)return!1;const _=p(d,v,h);if(_===1&&this.containsPoint(h.end))return g&&(g.start.copy(h.end),g.end.copy(h.end)),!0;if(_!==2)return!1;if(c.delta(o),h.delta(a),o.dot(a)<0){let M=h.start;h.start=h.end,h.end=M}const x=c.start.dot(o),S=c.end.dot(o),b=h.start.dot(o),I=h.end.dot(o),D=S<b,P=x<I;return x!==I&&b!==S&&D===P?!1:(g&&(l.subVectors(c.start,h.start),l.dot(o)>0?g.start.copy(c.start):g.start.copy(h.start),l.subVectors(c.end,h.end),l.dot(o)<0?g.end.copy(c.end):g.end.copy(h.end)),!0)}}}(),en.prototype.distanceToPoint=function(){const n=new O;return function(e){return this.closestPointToPoint(e,n),e.distanceTo(n)}}(),en.prototype.distanceToTriangle=function(){const n=new O,A=new O,e=["a","b","c"],t=new De,i=new De;return function(s,o=null,a=null){const l=o||a?t:null;if(this.intersectsTriangle(s,l))return(o||a)&&(o&&l.getCenter(o),a&&l.getCenter(a)),0;let u=1/0;for(let c=0;c<3;c++){let h;const f=e[c],p=s[f];this.closestPointToPoint(p,n),h=p.distanceToSquared(n),h<u&&(u=h,o&&o.copy(n),a&&a.copy(p));const m=this[f];s.closestPointToPoint(m,n),h=m.distanceToSquared(n),h<u&&(u=h,o&&o.copy(m),a&&a.copy(n))}for(let c=0;c<3;c++){const h=e[c],f=e[(c+1)%3];t.set(this[h],this[f]);for(let p=0;p<3;p++){const m=e[p],d=e[(p+1)%3];i.set(s[m],s[d]),vv(t,i,n,A);const g=n.distanceToSquared(A);g<u&&(u=g,o&&o.copy(n),a&&a.copy(A))}}return Math.sqrt(u)}}();class Ht{constructor(A,e,t){this.isOrientedBox=!0,this.min=new O,this.max=new O,this.matrix=new zA,this.invMatrix=new zA,this.points=new Array(8).fill().map(()=>new O),this.satAxes=new Array(3).fill().map(()=>new O),this.satBounds=new Array(3).fill().map(()=>new rr),this.alignedSatBounds=new Array(3).fill().map(()=>new rr),this.needsUpdate=!1,A&&this.min.copy(A),e&&this.max.copy(e),t&&this.matrix.copy(t)}set(A,e,t){this.min.copy(A),this.max.copy(e),this.matrix.copy(t),this.needsUpdate=!0}copy(A){this.min.copy(A.min),this.max.copy(A.max),this.matrix.copy(A.matrix),this.needsUpdate=!0}}Ht.prototype.update=function(){return function(){const A=this.matrix,e=this.min,t=this.max,i=this.points;for(let l=0;l<=1;l++)for(let u=0;u<=1;u++)for(let c=0;c<=1;c++){const h=1*l|2*u|4*c,f=i[h];f.x=l?t.x:e.x,f.y=u?t.y:e.y,f.z=c?t.z:e.z,f.applyMatrix4(A)}const r=this.satBounds,s=this.satAxes,o=i[0];for(let l=0;l<3;l++){const u=s[l],c=r[l],h=1<<l,f=i[h];u.subVectors(o,f),c.setFromPoints(u,i)}const a=this.alignedSatBounds;a[0].setFromPointsField(i,"x"),a[1].setFromPointsField(i,"y"),a[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}(),Ht.prototype.intersectsBox=function(){const n=new rr;return function(e){this.needsUpdate&&this.update();const t=e.min,i=e.max,r=this.satBounds,s=this.satAxes,o=this.alignedSatBounds;if(n.min=t.x,n.max=i.x,o[0].isSeparated(n)||(n.min=t.y,n.max=i.y,o[1].isSeparated(n))||(n.min=t.z,n.max=i.z,o[2].isSeparated(n)))return!1;for(let a=0;a<3;a++){const l=s[a],u=r[a];if(n.setFromBox(l,e),u.isSeparated(n))return!1}return!0}}(),Ht.prototype.intersectsTriangle=function(){const n=new en,A=new Array(3),e=new rr,t=new rr,i=new O;return function(s){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(n.copy(s),n.update(),s=n);const o=this.satBounds,a=this.satAxes;A[0]=s.a,A[1]=s.b,A[2]=s.c;for(let h=0;h<3;h++){const f=o[h],p=a[h];if(e.setFromPoints(p,A),f.isSeparated(e))return!1}const l=s.satBounds,u=s.satAxes,c=this.points;for(let h=0;h<3;h++){const f=l[h],p=u[h];if(e.setFromPoints(p,c),f.isSeparated(e))return!1}for(let h=0;h<3;h++){const f=a[h];for(let p=0;p<4;p++){const m=u[p];if(i.crossVectors(f,m),e.setFromPoints(i,A),t.setFromPoints(i,c),e.isSeparated(t))return!1}}return!0}}(),Ht.prototype.closestPointToPoint=function(){return function(A,e){return this.needsUpdate&&this.update(),e.copy(A).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}(),Ht.prototype.distanceToPoint=function(){const n=new O;return function(e){return this.closestPointToPoint(e,n),e.distanceTo(n)}}(),Ht.prototype.distanceToBox=function(){const n=["x","y","z"],A=new Array(12).fill().map(()=>new De),e=new Array(12).fill().map(()=>new De),t=new O,i=new O;return function(s,o=0,a=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(a||l)&&(s.getCenter(i),this.closestPointToPoint(i,t),s.closestPointToPoint(t,i),a&&a.copy(t),l&&l.copy(i)),0;const u=o*o,c=s.min,h=s.max,f=this.points;let p=1/0;for(let d=0;d<8;d++){const g=f[d];i.copy(g).clamp(c,h);const y=g.distanceToSquared(i);if(y<p&&(p=y,a&&a.copy(g),l&&l.copy(i),y<u))return Math.sqrt(y)}let m=0;for(let d=0;d<3;d++)for(let g=0;g<=1;g++)for(let y=0;y<=1;y++){const v=(d+1)%3,w=(d+2)%3,C=g<<v|y<<w,_=1<<d|g<<v|y<<w,x=f[C],S=f[_];A[m].set(x,S);const I=n[d],D=n[v],P=n[w],M=e[m],T=M.start,q=M.end;T[I]=c[I],T[D]=g?c[D]:h[D],T[P]=y?c[P]:h[D],q[I]=h[I],q[D]=g?c[D]:h[D],q[P]=y?c[P]:h[D],m++}for(let d=0;d<=1;d++)for(let g=0;g<=1;g++)for(let y=0;y<=1;y++){i.x=d?h.x:c.x,i.y=g?h.y:c.y,i.z=y?h.z:c.z,this.closestPointToPoint(i,t);const v=i.distanceToSquared(t);if(v<p&&(p=v,a&&a.copy(t),l&&l.copy(i),v<u))return Math.sqrt(v)}for(let d=0;d<12;d++){const g=A[d];for(let y=0;y<12;y++){const v=e[y];vv(g,v,t,i);const w=t.distanceToSquared(i);if(w<p&&(p=w,a&&a.copy(t),l&&l.copy(i),w<u))return Math.sqrt(w)}}return Math.sqrt(p)}}();class wv{constructor(A){this._getNewPrimitive=A,this._primitives=[]}getPrimitive(){const A=this._primitives;return A.length===0?this._getNewPrimitive():A.pop()}releasePrimitive(A){this._primitives.push(A)}}class Yj extends wv{constructor(){super(()=>new en)}}const Di=new Yj;class Uj{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const A=[];let e=null;this.setBuffer=t=>{e&&A.push(e),e=t,this.float32Array=new Float32Array(t),this.uint16Array=new Uint16Array(t),this.uint32Array=new Uint32Array(t)},this.clearBuffer=()=>{e=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,A.length!==0&&this.setBuffer(A.pop())}}}const Re=new Uj;let Yr,ka;const ja=[],Qf=new wv(()=>new ye);function Wj(n,A,e,t,i,r){Yr=Qf.getPrimitive(),ka=Qf.getPrimitive(),ja.push(Yr,ka),Re.setBuffer(n._roots[A]);const s=Cv(0,n.geometry,e,t,i,r);Re.clearBuffer(),Qf.releasePrimitive(Yr),Qf.releasePrimitive(ka),ja.pop(),ja.pop();const o=ja.length;return o>0&&(ka=ja[o-1],Yr=ja[o-2]),s}function Cv(n,A,e,t,i=null,r=0,s=0){const{float32Array:o,uint16Array:a,uint32Array:l}=Re;let u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);return Je(n,o,Yr),t(h,f,!1,s,r+n,Yr)}else{let I=function(P){const{uint16Array:M,uint32Array:T}=Re;let q=P*2;for(;!Qt(q,M);)P=Pi(P),q=P*2;return ui(P,T)},D=function(P){const{uint16Array:M,uint32Array:T}=Re;let q=P*2;for(;!Qt(q,M);)P=Ti(P,T),q=P*2;return ui(P,T)+Mi(q,M)};const h=Pi(n),f=Ti(n,l);let p=h,m=f,d,g,y,v;if(i&&(y=Yr,v=ka,Je(p,o,y),Je(m,o,v),d=i(y),g=i(v),g<d)){p=f,m=h;const P=d;d=g,g=P,y=v}y||(y=Yr,Je(p,o,y));const w=Qt(p*2,a),C=e(y,w,d,s+1,r+p);let _;if(C===G_){const P=I(p),T=D(p)-P;_=t(P,T,!0,s+1,r+p,y)}else _=C&&Cv(p,A,e,t,i,r,s+1);if(_)return!0;v=ka,Je(m,o,v);const x=Qt(m*2,a),S=e(v,x,g,s+1,r+m);let b;if(S===G_){const P=I(m),T=D(m)-P;b=t(P,T,!0,s+1,r+m,v)}else b=S&&Cv(m,A,e,t,i,r,s+1);return!!b}}const Pc=new O,xv=new O;function Jj(n,A,e={},t=0,i=1/0){const r=t*t,s=i*i;let o=1/0,a=null;if(n.shapecast({boundsTraverseOrder:u=>(Pc.copy(A).clamp(u.min,u.max),Pc.distanceToSquared(A)),intersectsBounds:(u,c,h)=>h<o&&h<s,intersectsTriangle:(u,c)=>{u.closestPointToPoint(A,Pc);const h=A.distanceToSquared(Pc);return h<o&&(xv.copy(Pc),o=h,a=c),h<r}}),o===1/0)return null;const l=Math.sqrt(o);return e.point?e.point.copy(xv):e.point=xv.clone(),e.distance=l,e.faceIndex=a,e}const Ka=new O,Fa=new O,Ga=new O,Vf=new uA,$f=new uA,Ad=new uA,AS=new O,eS=new O,tS=new O,ed=new O;function Zj(n,A,e,t,i,r,s,o){let a;if(r===dt?a=n.intersectTriangle(t,e,A,!0,i):a=n.intersectTriangle(A,e,t,r!==ot,i),a===null)return null;const l=n.origin.distanceTo(i);return l<s||l>o?null:{distance:l,point:i.clone()}}function Xj(n,A,e,t,i,r,s,o,a,l,u){Ka.fromBufferAttribute(A,r),Fa.fromBufferAttribute(A,s),Ga.fromBufferAttribute(A,o);const c=Zj(n,Ka,Fa,Ga,ed,a,l,u);if(c){t&&(Vf.fromBufferAttribute(t,r),$f.fromBufferAttribute(t,s),Ad.fromBufferAttribute(t,o),c.uv=Ue.getInterpolation(ed,Ka,Fa,Ga,Vf,$f,Ad,new uA)),i&&(Vf.fromBufferAttribute(i,r),$f.fromBufferAttribute(i,s),Ad.fromBufferAttribute(i,o),c.uv1=Ue.getInterpolation(ed,Ka,Fa,Ga,Vf,$f,Ad,new uA)),e&&(AS.fromBufferAttribute(e,r),eS.fromBufferAttribute(e,s),tS.fromBufferAttribute(e,o),c.normal=Ue.getInterpolation(ed,Ka,Fa,Ga,AS,eS,tS,new O),c.normal.dot(n.direction)>0&&c.normal.multiplyScalar(-1));const h={a:r,b:s,c:o,normal:new O,materialIndex:0};Ue.getNormal(Ka,Fa,Ga,h.normal),c.face=h,c.faceIndex=r}return c}function td(n,A,e,t,i,r,s){const o=t*3;let a=o+0,l=o+1,u=o+2;const c=n.index;n.index&&(a=c.getX(a),l=c.getX(l),u=c.getX(u));const{position:h,normal:f,uv:p,uv1:m}=n.attributes,d=Xj(e,h,f,p,m,a,l,u,A,r,s);return d?(d.faceIndex=t,i&&i.push(d),d):null}function rt(n,A,e,t){const i=n.a,r=n.b,s=n.c;let o=A,a=A+1,l=A+2;e&&(o=e.getX(o),a=e.getX(a),l=e.getX(l)),i.x=t.getX(o),i.y=t.getY(o),i.z=t.getZ(o),r.x=t.getX(a),r.y=t.getY(a),r.z=t.getZ(a),s.x=t.getX(l),s.y=t.getY(l),s.z=t.getZ(l)}function Qj(n,A,e,t,i,r,s,o){const{geometry:a,_indirectBuffer:l}=n;for(let u=t,c=t+i;u<c;u++)td(a,A,e,u,r,s,o)}function Vj(n,A,e,t,i,r,s){const{geometry:o,_indirectBuffer:a}=n;let l=1/0,u=null;for(let c=t,h=t+i;c<h;c++){let f;f=td(o,A,e,c,null,r,s),f&&f.distance<l&&(u=f,l=f.distance)}return u}function $j(n,A,e,t,i,r,s){const{geometry:o}=e,{index:a}=o,l=o.attributes.position;for(let u=n,c=A+n;u<c;u++){let h;if(h=u,rt(s,h*3,a,l),s.needsUpdate=!0,t(s,h,i,r))return!0}return!1}function AK(n,A=null){A&&Array.isArray(A)&&(A=new Set(A));const e=n.geometry,t=e.index?e.index.array:null,i=e.attributes.position;let r,s,o,a,l=0;const u=n._roots;for(let h=0,f=u.length;h<f;h++)r=u[h],s=new Uint32Array(r),o=new Uint16Array(r),a=new Float32Array(r),c(0,l),l+=r.byteLength;function c(h,f,p=!1){const m=h*2;if(o[m+15]===Wf){const g=s[h+6],y=o[m+14];let v=1/0,w=1/0,C=1/0,_=-1/0,x=-1/0,S=-1/0;for(let b=3*g,I=3*(g+y);b<I;b++){let D=t[b];const P=i.getX(D),M=i.getY(D),T=i.getZ(D);P<v&&(v=P),P>_&&(_=P),M<w&&(w=M),M>x&&(x=M),T<C&&(C=T),T>S&&(S=T)}return a[h+0]!==v||a[h+1]!==w||a[h+2]!==C||a[h+3]!==_||a[h+4]!==x||a[h+5]!==S?(a[h+0]=v,a[h+1]=w,a[h+2]=C,a[h+3]=_,a[h+4]=x,a[h+5]=S,!0):!1}else{const g=h+8,y=s[h+6],v=g+f,w=y+f;let C=p,_=!1,x=!1;A?C||(_=A.has(v),x=A.has(w),C=!_&&!x):(_=!0,x=!0);const S=C||_,b=C||x;let I=!1;S&&(I=c(g,f,C));let D=!1;b&&(D=c(y,f,C));const P=I||D;if(P)for(let M=0;M<3;M++){const T=g+M,q=y+M,B=a[T],W=a[T+3],K=a[q],U=a[q+3];a[h+M]=B<K?B:K,a[h+M+3]=W>U?W:U}return P}}}function Ur(n,A,e,t,i){let r,s,o,a,l,u;const c=1/e.direction.x,h=1/e.direction.y,f=1/e.direction.z,p=e.origin.x,m=e.origin.y,d=e.origin.z;let g=A[n],y=A[n+3],v=A[n+1],w=A[n+3+1],C=A[n+2],_=A[n+3+2];return c>=0?(r=(g-p)*c,s=(y-p)*c):(r=(y-p)*c,s=(g-p)*c),h>=0?(o=(v-m)*h,a=(w-m)*h):(o=(w-m)*h,a=(v-m)*h),r>a||o>s||((o>r||isNaN(r))&&(r=o),(a<s||isNaN(s))&&(s=a),f>=0?(l=(C-d)*f,u=(_-d)*f):(l=(_-d)*f,u=(C-d)*f),r>u||l>s)?!1:((l>r||r!==r)&&(r=l),(u<s||s!==s)&&(s=u),r<=i&&s>=t)}function eK(n,A,e,t,i,r,s,o){const{geometry:a,_indirectBuffer:l}=n;for(let u=t,c=t+i;u<c;u++){let h=l?l[u]:u;td(a,A,e,h,r,s,o)}}function tK(n,A,e,t,i,r,s){const{geometry:o,_indirectBuffer:a}=n;let l=1/0,u=null;for(let c=t,h=t+i;c<h;c++){let f;f=td(o,A,e,a?a[c]:c,null,r,s),f&&f.distance<l&&(u=f,l=f.distance)}return u}function iK(n,A,e,t,i,r,s){const{geometry:o}=e,{index:a}=o,l=o.attributes.position;for(let u=n,c=A+n;u<c;u++){let h;if(h=e.resolveTriangleIndex(u),rt(s,h*3,a,l),s.needsUpdate=!0,t(s,h,i,r))return!0}return!1}function nK(n,A,e,t,i,r,s){Re.setBuffer(n._roots[A]),Iv(0,n,e,t,i,r,s),Re.clearBuffer()}function Iv(n,A,e,t,i,r,s){const{float32Array:o,uint16Array:a,uint32Array:l}=Re,u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);Qj(A,e,t,h,f,i,r,s)}else{const h=Pi(n);Ur(h,o,t,r,s)&&Iv(h,A,e,t,i,r,s);const f=Ti(n,l);Ur(f,o,t,r,s)&&Iv(f,A,e,t,i,r,s)}}const rK=["x","y","z"];function sK(n,A,e,t,i,r){Re.setBuffer(n._roots[A]);const s=bv(0,n,e,t,i,r);return Re.clearBuffer(),s}function bv(n,A,e,t,i,r){const{float32Array:s,uint16Array:o,uint32Array:a}=Re;let l=n*2;if(Qt(l,o)){const c=ui(n,a),h=Mi(l,o);return Vj(A,e,t,c,h,i,r)}else{const c=Q_(n,a),h=rK[c],p=t.direction[h]>=0;let m,d;p?(m=Pi(n),d=Ti(n,a)):(m=Ti(n,a),d=Pi(n));const y=Ur(m,s,t,i,r)?bv(m,A,e,t,i,r):null;if(y){const C=y.point[h];if(p?C<=s[d+c]:C>=s[d+c+3])return y}const w=Ur(d,s,t,i,r)?bv(d,A,e,t,i,r):null;return y&&w?y.distance<=w.distance?y:w:y||w||null}}const id=new ye,Ha=new en,Ya=new en,Tc=new zA,iS=new Ht,nd=new Ht;function oK(n,A,e,t){Re.setBuffer(n._roots[A]);const i=_v(0,n,e,t);return Re.clearBuffer(),i}function _v(n,A,e,t,i=null){const{float32Array:r,uint16Array:s,uint32Array:o}=Re;let a=n*2;if(i===null&&(e.boundingBox||e.computeBoundingBox(),iS.set(e.boundingBox.min,e.boundingBox.max,t),i=iS),Qt(a,s)){const u=A.geometry,c=u.index,h=u.attributes.position,f=e.index,p=e.attributes.position,m=ui(n,o),d=Mi(a,s);if(Tc.copy(t).invert(),e.boundsTree)return Je(n,r,nd),nd.matrix.copy(Tc),nd.needsUpdate=!0,e.boundsTree.shapecast({intersectsBounds:y=>nd.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(t),y.b.applyMatrix4(t),y.c.applyMatrix4(t),y.needsUpdate=!0;for(let v=m*3,w=(d+m)*3;v<w;v+=3)if(rt(Ya,v,c,h),Ya.needsUpdate=!0,y.intersectsTriangle(Ya))return!0;return!1}});for(let g=m*3,y=(d+m)*3;g<y;g+=3){rt(Ha,g,c,h),Ha.a.applyMatrix4(Tc),Ha.b.applyMatrix4(Tc),Ha.c.applyMatrix4(Tc),Ha.needsUpdate=!0;for(let v=0,w=f.count;v<w;v+=3)if(rt(Ya,v,f,p),Ya.needsUpdate=!0,Ha.intersectsTriangle(Ya))return!0}}else{const u=n+8,c=o[n+6];return Je(u,r,id),!!(i.intersectsBox(id)&&_v(u,A,e,t,i)||(Je(c,r,id),i.intersectsBox(id)&&_v(c,A,e,t,i)))}}const rd=new zA,Sv=new Ht,Dc=new Ht,aK=new O,lK=new O,cK=new O,hK=new O;function uK(n,A,e,t={},i={},r=0,s=1/0){A.boundingBox||A.computeBoundingBox(),Sv.set(A.boundingBox.min,A.boundingBox.max,e),Sv.needsUpdate=!0;const o=n.geometry,a=o.attributes.position,l=o.index,u=A.attributes.position,c=A.index,h=Di.getPrimitive(),f=Di.getPrimitive();let p=aK,m=lK,d=null,g=null;i&&(d=cK,g=hK);let y=1/0,v=null,w=null;return rd.copy(e).invert(),Dc.matrix.copy(rd),n.shapecast({boundsTraverseOrder:C=>Sv.distanceToBox(C),intersectsBounds:(C,_,x)=>x<y&&x<s?(_&&(Dc.min.copy(C.min),Dc.max.copy(C.max),Dc.needsUpdate=!0),!0):!1,intersectsRange:(C,_)=>{if(A.boundsTree)return A.boundsTree.shapecast({boundsTraverseOrder:S=>Dc.distanceToBox(S),intersectsBounds:(S,b,I)=>I<y&&I<s,intersectsRange:(S,b)=>{for(let I=S,D=S+b;I<D;I++){rt(f,3*I,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let P=C,M=C+_;P<M;P++){rt(h,3*P,l,a),h.needsUpdate=!0;const T=h.distanceToTriangle(f,p,d);if(T<y&&(m.copy(p),g&&g.copy(d),y=T,v=P,w=I),T<r)return!0}}}});{const x=Ra(A);for(let S=0,b=x;S<b;S++){rt(f,3*S,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let I=C,D=C+_;I<D;I++){rt(h,3*I,l,a),h.needsUpdate=!0;const P=h.distanceToTriangle(f,p,d);if(P<y&&(m.copy(p),g&&g.copy(d),y=P,v=I,w=S),P<r)return!0}}}}}),Di.releasePrimitive(h),Di.releasePrimitive(f),y===1/0?null:(t.point?t.point.copy(m):t.point=m.clone(),t.distance=y,t.faceIndex=v,i&&(i.point?i.point.copy(g):i.point=g.clone(),i.point.applyMatrix4(rd),m.applyMatrix4(rd),i.distance=m.sub(i.point).length(),i.faceIndex=w),t)}function fK(n,A=null){A&&Array.isArray(A)&&(A=new Set(A));const e=n.geometry,t=e.index?e.index.array:null,i=e.attributes.position;let r,s,o,a,l=0;const u=n._roots;for(let h=0,f=u.length;h<f;h++)r=u[h],s=new Uint32Array(r),o=new Uint16Array(r),a=new Float32Array(r),c(0,l),l+=r.byteLength;function c(h,f,p=!1){const m=h*2;if(o[m+15]===Wf){const g=s[h+6],y=o[m+14];let v=1/0,w=1/0,C=1/0,_=-1/0,x=-1/0,S=-1/0;for(let b=g,I=g+y;b<I;b++){const D=3*n.resolveTriangleIndex(b);for(let P=0;P<3;P++){let M=D+P;M=t?t[M]:M;const T=i.getX(M),q=i.getY(M),B=i.getZ(M);T<v&&(v=T),T>_&&(_=T),q<w&&(w=q),q>x&&(x=q),B<C&&(C=B),B>S&&(S=B)}}return a[h+0]!==v||a[h+1]!==w||a[h+2]!==C||a[h+3]!==_||a[h+4]!==x||a[h+5]!==S?(a[h+0]=v,a[h+1]=w,a[h+2]=C,a[h+3]=_,a[h+4]=x,a[h+5]=S,!0):!1}else{const g=h+8,y=s[h+6],v=g+f,w=y+f;let C=p,_=!1,x=!1;A?C||(_=A.has(v),x=A.has(w),C=!_&&!x):(_=!0,x=!0);const S=C||_,b=C||x;let I=!1;S&&(I=c(g,f,C));let D=!1;b&&(D=c(y,f,C));const P=I||D;if(P)for(let M=0;M<3;M++){const T=g+M,q=y+M,B=a[T],W=a[T+3],K=a[q],U=a[q+3];a[h+M]=B<K?B:K,a[h+M+3]=W>U?W:U}return P}}}function dK(n,A,e,t,i,r,s){Re.setBuffer(n._roots[A]),Mv(0,n,e,t,i,r,s),Re.clearBuffer()}function Mv(n,A,e,t,i,r,s){const{float32Array:o,uint16Array:a,uint32Array:l}=Re,u=n*2;if(Qt(u,a)){const h=ui(n,l),f=Mi(u,a);eK(A,e,t,h,f,i,r,s)}else{const h=Pi(n);Ur(h,o,t,r,s)&&Mv(h,A,e,t,i,r,s);const f=Ti(n,l);Ur(f,o,t,r,s)&&Mv(f,A,e,t,i,r,s)}}const pK=["x","y","z"];function gK(n,A,e,t,i,r){Re.setBuffer(n._roots[A]);const s=Pv(0,n,e,t,i,r);return Re.clearBuffer(),s}function Pv(n,A,e,t,i,r){const{float32Array:s,uint16Array:o,uint32Array:a}=Re;let l=n*2;if(Qt(l,o)){const c=ui(n,a),h=Mi(l,o);return tK(A,e,t,c,h,i,r)}else{const c=Q_(n,a),h=pK[c],p=t.direction[h]>=0;let m,d;p?(m=Pi(n),d=Ti(n,a)):(m=Ti(n,a),d=Pi(n));const y=Ur(m,s,t,i,r)?Pv(m,A,e,t,i,r):null;if(y){const C=y.point[h];if(p?C<=s[d+c]:C>=s[d+c+3])return y}const w=Ur(d,s,t,i,r)?Pv(d,A,e,t,i,r):null;return y&&w?y.distance<=w.distance?y:w:y||w||null}}const sd=new ye,Ua=new en,Wa=new en,Ec=new zA,nS=new Ht,od=new Ht;function mK(n,A,e,t){Re.setBuffer(n._roots[A]);const i=Tv(0,n,e,t);return Re.clearBuffer(),i}function Tv(n,A,e,t,i=null){const{float32Array:r,uint16Array:s,uint32Array:o}=Re;let a=n*2;if(i===null&&(e.boundingBox||e.computeBoundingBox(),nS.set(e.boundingBox.min,e.boundingBox.max,t),i=nS),Qt(a,s)){const u=A.geometry,c=u.index,h=u.attributes.position,f=e.index,p=e.attributes.position,m=ui(n,o),d=Mi(a,s);if(Ec.copy(t).invert(),e.boundsTree)return Je(n,r,od),od.matrix.copy(Ec),od.needsUpdate=!0,e.boundsTree.shapecast({intersectsBounds:y=>od.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(t),y.b.applyMatrix4(t),y.c.applyMatrix4(t),y.needsUpdate=!0;for(let v=m,w=d+m;v<w;v++)if(rt(Wa,3*A.resolveTriangleIndex(v),c,h),Wa.needsUpdate=!0,y.intersectsTriangle(Wa))return!0;return!1}});for(let g=m,y=d+m;g<y;g++){const v=A.resolveTriangleIndex(g);rt(Ua,3*v,c,h),Ua.a.applyMatrix4(Ec),Ua.b.applyMatrix4(Ec),Ua.c.applyMatrix4(Ec),Ua.needsUpdate=!0;for(let w=0,C=f.count;w<C;w+=3)if(rt(Wa,w,f,p),Wa.needsUpdate=!0,Ua.intersectsTriangle(Wa))return!0}}else{const u=n+8,c=o[n+6];return Je(u,r,sd),!!(i.intersectsBox(sd)&&Tv(u,A,e,t,i)||(Je(c,r,sd),i.intersectsBox(sd)&&Tv(c,A,e,t,i)))}}const ad=new zA,Dv=new Ht,Lc=new Ht,vK=new O,yK=new O,wK=new O,CK=new O;function xK(n,A,e,t={},i={},r=0,s=1/0){A.boundingBox||A.computeBoundingBox(),Dv.set(A.boundingBox.min,A.boundingBox.max,e),Dv.needsUpdate=!0;const o=n.geometry,a=o.attributes.position,l=o.index,u=A.attributes.position,c=A.index,h=Di.getPrimitive(),f=Di.getPrimitive();let p=vK,m=yK,d=null,g=null;i&&(d=wK,g=CK);let y=1/0,v=null,w=null;return ad.copy(e).invert(),Lc.matrix.copy(ad),n.shapecast({boundsTraverseOrder:C=>Dv.distanceToBox(C),intersectsBounds:(C,_,x)=>x<y&&x<s?(_&&(Lc.min.copy(C.min),Lc.max.copy(C.max),Lc.needsUpdate=!0),!0):!1,intersectsRange:(C,_)=>{if(A.boundsTree){const x=A.boundsTree;return x.shapecast({boundsTraverseOrder:S=>Lc.distanceToBox(S),intersectsBounds:(S,b,I)=>I<y&&I<s,intersectsRange:(S,b)=>{for(let I=S,D=S+b;I<D;I++){const P=x.resolveTriangleIndex(I);rt(f,3*P,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let M=C,T=C+_;M<T;M++){const q=n.resolveTriangleIndex(M);rt(h,3*q,l,a),h.needsUpdate=!0;const B=h.distanceToTriangle(f,p,d);if(B<y&&(m.copy(p),g&&g.copy(d),y=B,v=M,w=I),B<r)return!0}}}})}else{const x=Ra(A);for(let S=0,b=x;S<b;S++){rt(f,3*S,c,u),f.a.applyMatrix4(e),f.b.applyMatrix4(e),f.c.applyMatrix4(e),f.needsUpdate=!0;for(let I=C,D=C+_;I<D;I++){const P=n.resolveTriangleIndex(I);rt(h,3*P,l,a),h.needsUpdate=!0;const M=h.distanceToTriangle(f,p,d);if(M<y&&(m.copy(p),g&&g.copy(d),y=M,v=I,w=S),M<r)return!0}}}}}),Di.releasePrimitive(h),Di.releasePrimitive(f),y===1/0?null:(t.point?t.point.copy(m):t.point=m.clone(),t.distance=y,t.faceIndex=v,i&&(i.point?i.point.copy(g):i.point=g.clone(),i.point.applyMatrix4(ad),m.applyMatrix4(ad),i.distance=m.sub(i.point).length(),i.faceIndex=w),t)}function Ev(){return typeof SharedArrayBuffer<"u"}function rS(n,A){if(n===null)return n;if(n.buffer){const e=n.buffer;if(e.constructor===A)return n;const t=n.constructor,i=new t(new A(e.byteLength));return i.set(n),i}else{if(n.constructor===A)return n;const e=new A(n.byteLength);return new Uint8Array(e).set(new Uint8Array(n)),e}}const Oc=new Re.constructor,ld=new Re.constructor,Wr=new wv(()=>new ye),Ja=new ye,Za=new ye,Lv=new ye,Ov=new ye;let qv=!1;function IK(n,A,e,t){if(qv)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");qv=!0;const i=n._roots,r=A._roots;let s,o=0,a=0;const l=new zA().copy(e).invert();for(let u=0,c=i.length;u<c;u++){Oc.setBuffer(i[u]),a=0;const h=Wr.getPrimitive();Je(0,Oc.float32Array,h),h.applyMatrix4(l);for(let f=0,p=r.length;f<p&&(ld.setBuffer(r[u]),s=tn(0,0,e,l,t,o,a,0,0,h),ld.clearBuffer(),a+=r[f].length,!s);f++);if(Wr.releasePrimitive(h),Oc.clearBuffer(),o+=i[u].length,s)break}return qv=!1,s}function tn(n,A,e,t,i,r=0,s=0,o=0,a=0,l=null,u=!1){let c,h;u?(c=ld,h=Oc):(c=Oc,h=ld);const f=c.float32Array,p=c.uint32Array,m=c.uint16Array,d=h.float32Array,g=h.uint32Array,y=h.uint16Array,v=n*2,w=A*2,C=Qt(v,m),_=Qt(w,y);let x=!1;if(_&&C)u?x=i(ui(A,g),Mi(A*2,y),ui(n,p),Mi(n*2,m),a,s+A,o,r+n):x=i(ui(n,p),Mi(n*2,m),ui(A,g),Mi(A*2,y),o,r+n,a,s+A);else if(_){const S=Wr.getPrimitive();Je(A,d,S),S.applyMatrix4(e);const b=Pi(n),I=Ti(n,p);Je(b,f,Ja),Je(I,f,Za);const D=S.intersectsBox(Ja),P=S.intersectsBox(Za);x=D&&tn(A,b,t,e,i,s,r,a,o+1,S,!u)||P&&tn(A,I,t,e,i,s,r,a,o+1,S,!u),Wr.releasePrimitive(S)}else{const S=Pi(A),b=Ti(A,g);Je(S,d,Lv),Je(b,d,Ov);const I=l.intersectsBox(Lv),D=l.intersectsBox(Ov);if(I&&D)x=tn(n,S,e,t,i,r,s,o,a+1,l,u)||tn(n,b,e,t,i,r,s,o,a+1,l,u);else if(I)if(C)x=tn(n,S,e,t,i,r,s,o,a+1,l,u);else{const P=Wr.getPrimitive();P.copy(Lv).applyMatrix4(e);const M=Pi(n),T=Ti(n,p);Je(M,f,Ja),Je(T,f,Za);const q=P.intersectsBox(Ja),B=P.intersectsBox(Za);x=q&&tn(S,M,t,e,i,s,r,a,o+1,P,!u)||B&&tn(S,T,t,e,i,s,r,a,o+1,P,!u),Wr.releasePrimitive(P)}else if(D)if(C)x=tn(n,b,e,t,i,r,s,o,a+1,l,u);else{const P=Wr.getPrimitive();P.copy(Ov).applyMatrix4(e);const M=Pi(n),T=Ti(n,p);Je(M,f,Ja),Je(T,f,Za);const q=P.intersectsBox(Ja),B=P.intersectsBox(Za);x=q&&tn(b,M,t,e,i,s,r,a,o+1,P,!u)||B&&tn(b,T,t,e,i,s,r,a,o+1,P,!u),Wr.releasePrimitive(P)}}return x}const cd=new Ht,sS=new ye,bK={strategy:F_,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0};class hd{static serialize(A,e={}){e={cloneBuffers:!0,...e};const t=A.geometry,i=A._roots,r=A._indirectBuffer,s=t.getIndex();let o;return e.cloneBuffers?o={roots:i.map(a=>a.slice()),index:s?s.array.slice():null,indirectBuffer:r?r.slice():null}:o={roots:i,index:s?s.array:null,indirectBuffer:r},o}static deserialize(A,e,t={}){t={setIndex:!0,indirect:!!A.indirectBuffer,...t};const{index:i,roots:r,indirectBuffer:s}=A,o=new hd(e,{...t,[fv]:!0});if(o._roots=r,o._indirectBuffer=s||null,t.setIndex){const a=e.getIndex();if(a===null){const l=new ce(A.index,1,!1);e.setIndex(l)}else a.array!==i&&(a.array.set(i),a.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(A,e={}){if(A.isBufferGeometry){if(A.index&&A.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({...bK,[fv]:!1},e),e.useSharedArrayBuffer&&!Ev())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=A,this._roots=null,this._indirectBuffer=null,e[fv]||(Kj(this,e),!A.boundingBox&&e.setBoundingBox&&(A.boundingBox=this.getBoundingBox(new ye))),this.resolveTriangleIndex=e.indirect?t=>this._indirectBuffer[t]:t=>t}refit(A=null){return(this.indirect?fK:AK)(this,A)}traverse(A,e=0){const t=this._roots[e],i=new Uint32Array(t),r=new Uint16Array(t);s(0);function s(o,a=0){const l=o*2,u=r[l+15]===Wf;if(u){const c=i[o+6],h=r[l+14];A(a,u,new Float32Array(t,o*4,6),c,h)}else{const c=o+_c/4,h=i[o+6],f=i[o+7];A(a,u,new Float32Array(t,o*4,6),f)||(s(c,a+1),s(h,a+1))}}}raycast(A,e=Bt,t=0,i=1/0){const r=this._roots,s=this.geometry,o=[],a=e.isMaterial,l=Array.isArray(e),u=s.groups,c=a?e.side:e,h=this.indirect?dK:nK;for(let f=0,p=r.length;f<p;f++){const m=l?e[u[f].materialIndex].side:c,d=o.length;if(h(this,f,m,A,o,t,i),l){const g=u[f].materialIndex;for(let y=d,v=o.length;y<v;y++)o[y].face.materialIndex=g}}return o}raycastFirst(A,e=Bt,t=0,i=1/0){const r=this._roots,s=this.geometry,o=e.isMaterial,a=Array.isArray(e);let l=null;const u=s.groups,c=o?e.side:e,h=this.indirect?gK:sK;for(let f=0,p=r.length;f<p;f++){const m=a?e[u[f].materialIndex].side:c,d=h(this,f,m,A,t,i);d!=null&&(l==null||d.distance<l.distance)&&(l=d,a&&(d.face.materialIndex=u[f].materialIndex))}return l}intersectsGeometry(A,e){let t=!1;const i=this._roots,r=this.indirect?mK:oK;for(let s=0,o=i.length;s<o&&(t=r(this,s,A,e),!t);s++);return t}shapecast(A){const e=Di.getPrimitive(),t=this.indirect?iK:$j;let{boundsTraverseOrder:i,intersectsBounds:r,intersectsRange:s,intersectsTriangle:o}=A;if(s&&o){const c=s;s=(h,f,p,m,d)=>c(h,f,p,m,d)?!0:t(h,f,this,o,p,m,e)}else s||(o?s=(c,h,f,p)=>t(c,h,this,o,f,p,e):s=(c,h,f)=>f);let a=!1,l=0;const u=this._roots;for(let c=0,h=u.length;c<h;c++){const f=u[c];if(a=Wj(this,c,r,s,i,l),a)break;l+=f.byteLength}return Di.releasePrimitive(e),a}bvhcast(A,e,t){let{intersectsRanges:i,intersectsTriangles:r}=t;const s=Di.getPrimitive(),o=this.geometry.index,a=this.geometry.attributes.position,l=this.indirect?p=>{const m=this.resolveTriangleIndex(p);rt(s,m*3,o,a)}:p=>{rt(s,p*3,o,a)},u=Di.getPrimitive(),c=A.geometry.index,h=A.geometry.attributes.position,f=A.indirect?p=>{const m=A.resolveTriangleIndex(p);rt(u,m*3,c,h)}:p=>{rt(u,p*3,c,h)};if(r){const p=(m,d,g,y,v,w,C,_)=>{for(let x=g,S=g+y;x<S;x++){f(x),u.a.applyMatrix4(e),u.b.applyMatrix4(e),u.c.applyMatrix4(e),u.needsUpdate=!0;for(let b=m,I=m+d;b<I;b++)if(l(b),s.needsUpdate=!0,r(s,u,b,x,v,w,C,_))return!0}return!1};if(i){const m=i;i=function(d,g,y,v,w,C,_,x){return m(d,g,y,v,w,C,_,x)?!0:p(d,g,y,v,w,C,_,x)}}else i=p}return IK(this,A,e,i)}intersectsBox(A,e){return cd.set(A.min,A.max,e),cd.needsUpdate=!0,this.shapecast({intersectsBounds:t=>cd.intersectsBox(t),intersectsTriangle:t=>cd.intersectsTriangle(t)})}intersectsSphere(A){return this.shapecast({intersectsBounds:e=>A.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(A)})}closestPointToGeometry(A,e,t={},i={},r=0,s=1/0){return(this.indirect?xK:uK)(this,A,e,t,i,r,s)}closestPointToPoint(A,e={},t=0,i=1/0){return Jj(this,A,e,t,i)}getBoundingBox(A){return A.makeEmpty(),this._roots.forEach(t=>{Je(0,new Float32Array(t),sS),A.union(sS)}),A}}class oS{constructor(A){this.name="WorkerBase",this.running=!1,this.worker=A,this.worker.onerror=e=>{throw e.message?new Error(`${this.name}: Could not create Web Worker with error "${e.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...A){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const e=this.runTask(this.worker,...A);return e.finally(()=>{this.running=!1}),e}dispose(){this.worker.terminate(),this.worker=null}}class _K extends oS{constructor(){const A=new Worker(new URL(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/generateMeshBVH.worker-NFSCTTDt.js").href:new URL("assets/generateMeshBVH.worker-NFSCTTDt.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:lr&&lr.src||new URL("shop-components.umd.js",document.baseURI).href),{type:"module"});super(A),this.name="GenerateMeshBVHWorker"}runTask(A,e,t={}){return new Promise((i,r)=>{if(e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("GenerateMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");A.onerror=l=>{r(new Error(`GenerateMeshBVHWorker: ${l.message}`))},A.onmessage=l=>{const{data:u}=l;if(u.error)r(new Error(u.error)),A.onmessage=null;else if(u.serialized){const{serialized:c,position:h}=u,f=hd.deserialize(c,e,{setIndex:!1}),p=Object.assign({setBoundingBox:!0},t);if(e.attributes.position.array=h,c.index)if(e.index)e.index.array=c.index;else{const m=new ce(c.index,1,!1);e.setIndex(m)}p.setBoundingBox&&(e.boundingBox=f.getBoundingBox(new ye)),t.onProgress&&t.onProgress(u.progress),i(f),A.onmessage=null}else t.onProgress&&t.onProgress(u.progress)};const s=e.index?e.index.array:null,o=e.attributes.position.array,a=[o];s&&a.push(s),A.postMessage({index:s,position:o,options:{...t,onProgress:null,includedProgressCallback:!!t.onProgress,groups:[...e.groups]}},a.map(l=>l.buffer).filter(l=>typeof SharedArrayBuffer>"u"||!(l instanceof SharedArrayBuffer)))})}}const aS=typeof navigator<"u"?navigator.hardwareConcurrency:4;class SK extends oS{constructor(){const A=new Worker(new URL(""+(typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__dirname+"/assets/parallelMeshBVH.worker-TP6qJGKX.js").href:new URL("assets/parallelMeshBVH.worker-TP6qJGKX.js",typeof document>"u"?location.href:document.currentScript&&document.currentScript.src||document.baseURI).href),typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:lr&&lr.src||new URL("shop-components.umd.js",document.baseURI).href),{type:"module"});if(super(A),this.name="ParallelMeshBVHWorker",this.maxWorkerCount=Math.max(aS,4),!Ev())throw new Error("ParallelMeshBVHWorker: Shared Array Buffers are not supported.")}runTask(A,e,t={}){return new Promise((i,r)=>{if(!e.index&&!t.indirect&&Y_(e,t),e.getAttribute("position").isInterleavedBufferAttribute||e.index&&e.index.isInterleavedBufferAttribute)throw new Error("ParallelMeshBVHWorker: InterleavedBufferAttribute are not supported for the geometry attributes.");A.onerror=a=>{r(new Error(`ParallelMeshBVHWorker: ${a.message}`))},A.onmessage=a=>{const{data:l}=a;if(l.error)r(new Error(l.error)),A.onmessage=null;else if(l.serialized){const{serialized:u,position:c}=l,h=hd.deserialize(u,e,{setIndex:!1}),f={setBoundingBox:!0,...t};if(e.attributes.position.array=c,u.index)if(e.index)e.index.array=u.index;else{const p=new ce(u.index,1,!1);e.setIndex(p)}f.setBoundingBox&&(e.boundingBox=h.getBoundingBox(new ye)),t.onProgress&&t.onProgress(l.progress),i(h),A.onmessage=null}else t.onProgress&&t.onProgress(l.progress)};const s=e.index?e.index.array:null,o=e.attributes.position.array;A.postMessage({operation:"BUILD_BVH",maxWorkerCount:this.maxWorkerCount,index:rS(s,SharedArrayBuffer),position:rS(o,SharedArrayBuffer),options:{...t,onProgress:null,includedProgressCallback:!!t.onProgress,groups:[...e.groups]}})})}}class MK{constructor(){if(Ev())return new SK;{console.warn("ParallelMeshBVHWorker: SharedArrayBuffers not supported. Falling back to single-threaded GenerateMeshBVHWorker.");const A=new _K;return A.maxWorkerCount=aS,A}}}const ud=1e-16,lS=new O(0,1,0),cS=new O;function PK(n){return n.delta(cS).normalize(),Math.abs(cS.dot(lS))>=1-ud}function hS(n){return n.needsUpdate&&n.update(),Math.abs(n.plane.normal.dot(lS))<=ud}function Nv(n,A){const{start:e,end:t}=A,i=n.points;let r=!1,s=!1;for(let o=0;o<3;o++){const a=i[o];if(!r&&e.distanceToSquared(a)<=ud&&(r=!0),!s&&t.distanceToSquared(a)<=ud&&(s=!0),r&&s)return!0}return r&&s}const uS=1e-16,TK=new O(0,1,0),fS=new O,dS=new O,fd=new O,dd=new Ue;function DK(n,A=TK,e=1){const t=[],r=Math.pow(10,4),s=Math.cos(lo.DEG2RAD*e),o=n.getIndex(),a=n.getAttribute("position"),l=o?o.count:a.count,u=[0,0,0],c=["a","b","c"],h=new Array(3),f={};for(let p=0;p<l;p+=3){o?(u[0]=o.getX(p),u[1]=o.getX(p+1),u[2]=o.getX(p+2)):(u[0]=p,u[1]=p+1,u[2]=p+2);const{a:m,b:d,c:g}=dd;if(m.fromBufferAttribute(a,u[0]),d.fromBufferAttribute(a,u[1]),g.fromBufferAttribute(a,u[2]),dd.getNormal(fd),h[0]=`${Math.round(m.x*r)},${Math.round(m.y*r)},${Math.round(m.z*r)}`,h[1]=`${Math.round(d.x*r)},${Math.round(d.y*r)},${Math.round(d.z*r)}`,h[2]=`${Math.round(g.x*r)},${Math.round(g.y*r)},${Math.round(g.z*r)}`,!(h[0]===h[1]||h[1]===h[2]||h[2]===h[0]))for(let y=0;y<3;y++){const v=(y+1)%3,w=h[y],C=h[v],_=dd[c[y]],x=dd[c[v]],S=`${w}_${C}`,b=`${C}_${w}`;if(b in f&&f[b]){const I=f[b].normal,D=fd.dot(I)<=s;let P=A.dot(fd);P=Math.abs(P)<uS?0:P;let M=A.dot(I);M=Math.abs(M)<uS?0:M;const T=Math.sign(P)!==Math.sign(M);if(D||T){const q=new De;q.start.copy(_),q.end.copy(x),t.push(q)}f[b]=null}else S in f||(f[S]={index0:u[y],index1:u[v],normal:fd.clone()})}}for(const p in f)if(f[p]){const{index0:m,index1:d}=f[p];fS.fromBufferAttribute(a,m),dS.fromBufferAttribute(a,d);const g=new De;g.start.copy(fS),g.end.copy(dS),t.push(g)}return t}const Jr=new De;function pS(n){n.sort((A,e)=>A[0]-e[0]);for(let A=1;A<n.length;A++){const e=n[A],t=n[A-1];t[1]>=e[0]&&(t[1]=Math.max(t[1],e[1]),n.splice(A,1),A--)}}function EK(n,A,e=[]){pS(A);const t=[[0,1]];for(let i=0,r=A.length;i<r;i++){const s=t[i],o=A[i];s[1]=o[0],t.push(new Float32Array([o[1],1]))}for(let i=0,r=t.length;i<r;i++){const{start:s,end:o}=n;Jr.start.lerpVectors(s,o,t[i][0]),Jr.end.lerpVectors(s,o,t[i][1]),e.push(new Float32Array([Jr.start.x,Jr.start.y,Jr.start.z,Jr.end.x,Jr.end.y,Jr.end.z]))}return e}const Bv=1e-16,LK=new O(0,1,0),Zr=new Ut,qc=new O,gS=new O;function OK(n,A,e){if(hS(n))return!1;n.needsUpdate&&n.update(),Zr.copy(n.plane),Zr.normal.dot(LK)<0&&(Zr.normal.multiplyScalar(-1),Zr.constant*=-1);const t=Zr.distanceToPoint(A.start),i=Zr.distanceToPoint(A.end),r=Math.abs(t)<Bv,s=Math.abs(i)<Bv,o=t<0,a=i<0;if(A.delta(gS).normalize(),Math.abs(Zr.normal.dot(gS))<Bv)return r||!o?!1:(e.copy(A),!0);if(o&&a)return e.copy(A),!0;if(!o&&!a)return!1;{let l=Zr.intersectLine(A,qc);if(l||(r&&(qc.copy(A.start),l=!0),s&&(qc.copy(A.end),l=!0)),l){if(o)return e.start.copy(A.start),e.end.copy(qc),!0;if(a)return e.end.copy(A.end),e.start.copy(qc),!0}}return!1}const qK=1e-16,mS=1e-16,pd=new Ut,Xa=new De,gd=new O,zv=new O,Xr=new oi,Ei=new De,sr=new De,Qr=new O,vS=new O;function NK(n,A,e=new De){if(Xr.copy(A),Xr.a.y=0,Xr.b.y=0,Xr.c.y=0,Xr.update(),Ei.copy(n),Ei.start.y=0,Ei.end.y=0,Xr.getArea()<=qK)return null;Ei.delta(Qr).normalize(),Qr.cross(Xr.plane.normal).normalize(),pd.setFromNormalAndCoplanarPoint(Qr,Ei.start);let t=0;const{points:i}=Xr;for(let r=0;r<3;r++){const s=i[r],o=i[(r+1)%3];Xa.start.copy(s),Xa.end.copy(o);const a=Math.abs(pd.distanceToPoint(Xa.start))<mS,l=Math.abs(pd.distanceToPoint(Xa.end))<mS,u=pd.intersectLine(Xa,gd);if((u&&!l||a)&&(a&&!u&&gd.copy(Xa.start),t===0?sr.start.copy(gd):sr.end.copy(gd),t++,t===2))break}if(t===2){if(Ei.delta(Qr).normalize(),sr.delta(vS).normalize(),Qr.dot(vS)<0){let c=sr.start;sr.start=sr.end,sr.end=c}const r=0,s=zv.subVectors(Ei.end,Ei.start).dot(Qr),o=zv.subVectors(sr.start,Ei.start).dot(Qr),a=zv.subVectors(sr.end,Ei.start).dot(Qr),l=s<=o,u=a<=r;return l||u?null:(n.at(Math.max(r,o)/Ei.distance(),e.start),n.at(Math.min(s,a)/Ei.distance(),e.end),e)}return null}const BK=1e-16,yS=new O,wS=new O,CS=new O;function zK(n,A,e){n.delta(yS),wS.subVectors(A.start,n.start),CS.subVectors(A.end,n.start);const t=yS.length();let i=wS.length()/t,r=CS.length()/t;return i=Math.min(Math.max(i,0),1),r=Math.min(Math.max(r,0),1),Math.abs(i-r)<=BK?!1:(e.push(new Float32Array([i,r])),!0)}const xS=1e-6,Vr=new oi,Qa=new De;function*RK(n,A=30){const e=[],t=n.geometry,i=t.index,r=t.attributes.position,s=i?i.count:r;let o=performance.now();for(let a=0;a<s;a+=3){let l=a+0,u=a+1,c=a+2;i&&(l=i.getX(l),u=i.getX(u),c=i.getX(c));const{a:h,b:f,c:p}=Vr;h.fromBufferAttribute(r,l),f.fromBufferAttribute(r,u),p.fromBufferAttribute(r,c),Vr.needsUpdate=!0,Vr.update(),n.shapecast({intersectsBounds:d=>d.intersectsTriangle(Vr),intersectsTriangle:d=>{if(Vr.equals(d)||(d.needsUpdate&&d.update(),Math.abs(Vr.plane.normal.dot(d.plane.normal))>1-1e-6))return!1;Vr.intersectsTriangle(d,Qa,!0)&&!Nv(Vr,Qa)&&!Nv(d,Qa)&&(Qa.start.y+=xS,Qa.end.y+=xS,e.push(Qa.clone()))}}),performance.now()-o>A&&(yield,o=performance.now())}return e}const kK=1e-10,jK=new O(0,1,0),md=new De,IS=new os,bS=new O,_S=new De;class KK{constructor(){this.edges=[]}getLineGeometry(A=0){const e=this.edges,t=new Float32Array(e.length*6);let i=0;for(let o=0,a=e.length;o<a;o++){const l=e[o];t[i++]=l[0],t[i++]=A,t[i++]=l[2],t[i++]=l[3],t[i++]=A,t[i++]=l[5]}const r=new qe,s=new ce(t,3,!0);return r.setAttribute("position",s),r}}class FK{constructor(){this.sortEdges=!0,this.iterationTime=30,this.angleThreshold=50,this.includeIntersectionEdges=!0}generateAsync(A,e={}){return new Promise((t,i)=>{const{signal:r}=e,s=this.generate(A,e);o();function o(){if(r&&r.aborted){i(new Error("ProjectionGenerator: Process aborted via AbortSignal."));return}const a=s.next();a.done?t(a.value):requestAnimationFrame(o)}})}*generate(A,e={}){const{onProgress:t}=e,{sortEdges:i,iterationTime:r,angleThreshold:s,includeIntersectionEdges:o}=this;A instanceof qe&&(A=new mC(A,{maxLeafTris:1}));const a=A.geometry;let l=DK(a,jK,s);if(o){const h=yield*RK(A,r);l=l.concat(h)}i&&l.sort((h,f)=>Math.min(h.start.y,h.end.y)-Math.min(f.start.y,f.end.y)),yield;const u=new KK;let c=performance.now();for(let h=0,f=l.length;h<f;h++){const p=l[h];if(PK(p))continue;const m=Math.min(p.start.y,p.end.y),d=Math.max(p.start.y,p.end.y),g=[];if(A.shapecast({intersectsBounds:v=>{v.min.y=Math.min(m-1e-6,v.min.y);const{origin:w,direction:C}=IS;return w.copy(p.start),p.delta(C).normalize(),v.containsPoint(w)?!0:IS.intersectBox(v,bS)?w.distanceToSquared(bS)<p.distanceSq():!1},intersectsTriangle:v=>{if(Math.max(v.a.y,v.b.y,v.c.y)<=m||hS(v)||Nv(v,p))return!1;const C=Math.min(v.a.y,v.b.y,v.c.y);if(d<C)md.copy(p);else if(!OK(v,p,md))return!1;if(md.distance()<kK)return!1;if(NK(md,v,_S)&&zK(p,_S,g)&&pS(g),g.length!==0){const[_,x]=g[g.length-1];return _===0&&x===1}return!1}}),EK(p,g,u.edges),performance.now()-c>r){if(t){const v=h/l.length;t(v,u)}yield,c=performance.now()}}return u.getLineGeometry(0)}}const GK=new FK,HK=new Zp;let Rv;HK.loadAsync(cO).then(n=>{Rv=n});const YK=new sO(lO);class kv{constructor(A){this._props=A,this.name="",this._timer=0,this._offscreen=new OffscreenCanvas(0,0),this._defaults={...A},this.target=A.target,this.reset()}get imageSize(){return this._props.imageSize}get size(){return this._props.size}clear(){this.change()}change(A,e=new uA(1,1),t=new uA){this.imageUrl=A;let i;if(A){const r=new Image;r.crossOrigin="anonymous",r.src=A,r.onload=async()=>{var l;let s=window.devicePixelRatio*2;this._offscreen.width=r.width+s,this._offscreen.height=r.height+s;const o=this._offscreen.getContext("2d");o==null||o.clearRect(0,0,this._offscreen.width,this._offscreen.height),o==null||o.drawImage(r,s/2,s/2,r.width,r.height),i=new lt(this._offscreen),i.minFilter=1003,i.colorSpace=je,i.wrapS=i.wrapT=et,i.repeat.set(1/e.x,1/e.y),i.offset.set(t.x,t.y),i.flipY=!1,i.needsUpdate=!0;const a=this._props.target;a.material&&((l=a.material.map)==null||l.dispose(),i?(a.material.map=i,a.material.opacity=1):(a.material.map=Rv,a.material.opacity=0))}}else{const r=this._props.target;r.material&&(r.material.map=Rv)}}reset(){this._props=this._defaults,this.name=this._props.name,this.imageUrl=this._props.imageUrl,this.target=this._props.target,this.change(this.imageUrl||"")}dispose(){this._offscreen=null}}class jv{constructor(A){var e;this._props=A,this.name="",this._defaults={color:""},this.color="",this.name=this._props.name,this.color=this._defaults.color="#"+((e=A.target.color)==null?void 0:e.getHexString())}change(A){var e;this.color=A,(e=this._props.target.color)==null||e.set(A)}reset(){this.change(this._defaults.color)}}var SS=(n=>(n[n.DEFAULT=0]="DEFAULT",n[n.CAN_INSTALL=1]="CAN_INSTALL",n))(SS||{});const MS=.15;let Va,vd=0,Kv=0;const UK=()=>{Va=void 0,vd=0,Kv=0},WK=new ti({colorWrite:!1});class JK{constructor(A){this.props=A,this.stats=new Hl,this.scene=new Eo,this.overlayScene=new Eo,this.renderer=new n1({antialias:!0,alpha:!0,logarithmicDepthBuffer:!0,powerPreference:"high-performance",preserveDrawingBuffer:!0}),this.css2dRenderer=new rO,this.mousePos=new uA,this.mouseCoord=new uA,this.offset=new uA,this.size=new uA,this.amr=new bj({showSizeBox:!0,showController:!0}),this.camera=new gt(60,window.innerWidth/window.innerHeight,.1,1e4),this._container=new Et,this._raycaster=new eE,this._selected=[],this._pointerDownTimeout=0,this.lines=new ue.DeviceLines(new uA(-108,0)),this._dragging=!1,this.maxSample=1024*2,this.sampleCount=0,this._usePathTracing=!1,this._fpsCache=[],this._fpsCacheMax=20,this._emitter=new br,this.sound=new L9,this._ground=new Pe(new Kn(100,100),new Dl({color:new KA("#aaa"),metalness:.6,roughness:.3})),this.addEventListener=this._emitter.on.bind(this._emitter),this.removeEventListener=this._emitter.on.bind(this._emitter),this._drag=t=>{this._dragging=!0,this._pointermove(t)},this._dragend=t=>{this._dragging=!1},this._pointermove=t=>{if(this._pointerDownTimeout)return clearTimeout(this._pointerDownTimeout),this._pointerDownTimeout=0;const{top:i,left:r}=this.renderer.domElement.getBoundingClientRect();this.offset.set(r,i),this.mousePos.set(t.clientX-r,t.clientY-i),this.mouseCoord.set((t.clientX-r)/this.size.x*2-1,-((t.clientY-i)/this.size.y)*2+1),this._raycaster.setFromCamera(this.mouseCoord,this.camera)},this._pointerdown=t=>{const i=()=>{let r=[...this._outlinePass.selectedObjects];this._outlinePass.selectedObjects=[],this.amr.slots.forEach(a=>a.selected=!1);const o=this._raycaster.intersectObjects(this.amr.slots,!0)[0];o&&this.amr.slots.forEach(a=>{a.traverse(l=>{l==o.object?r!=null&&r.includes(a)?(r=void 0,a.deviceSelected=!1):(this._outlinePass.selectedObjects=[a],a.deviceSelected=!0):a.deviceSelected=!1})}),this._pointerDownTimeout=0};this._pointerDownTimeout=window.setTimeout(i,200)},this._detectTrackpad=()=>{Va||typeof Va<"u"||(vd===0&&(Kv=performance.now()),vd++,performance.now()-Kv>66&&(vd>5?Va=!0:Va=!1,Va?this.controls.zoomSpeed=.2:this.controls.zoomSpeed=1,setTimeout(UK,2e3)))},this.fit=()=>{new ye().setFromObject(this._container);const i=this.amr.sizeBox.size.getSize(new O),r=i.clone().multiplyScalar(.5),s=Math.max(i.x,i.y,i.z)+Math.max(i.x,i.y),o=Math.min(i.x,i.y,i.z)+.5,l=this.camera.position.clone().normalize().multiplyScalar(s);l.setY(s*Math.sin(30/180*Math.PI)),this._fitAnimation=new bu(this.camera.position).to(l,600).easing(xs.Easing.Quintic.InOut).onStart(()=>{this.controls.enabled=!1}).onComplete(()=>{this.controls.enabled=!0}).start(),this.controls.minDistance=o,this.controls.maxDistance=s*2.5,!r.equals(new O)&&(r.setZ(0),this.controls.target.setY(r.y))},this.resize=()=>{var a;const t=this.renderer.domElement.parentElement;if(!t)return;t.style.display="flex",this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.renderer.domElement.style.flexGrow="1";const i=t.clientWidth,r=t.clientHeight;this.size.set(i,r),this.camera.aspect=i/r,this.camera.updateProjectionMatrix(),this.css2dRenderer.setSize(i,r);const s=this.renderer.getPixelRatio();(a=this.pathTracer)==null||a.updateCamera(),this.sampleCount=0,this.renderer.setSize(i,r),this._composer.setSize(i,r),this._composer.passes.forEach(l=>l.setSize(i,r));const o=this._fxaaPass.material.uniforms;o.resolution.value.x=1/(i*s),o.resolution.value.y=1/(r*s)},this.ticker=()=>{this.stats.begin();const t=this.stats.fps();if(this.usePathTracing||(this._fpsCache.length>this._fpsCacheMax&&this._fpsCache.shift(),this._fpsCache.push(t)),this.renderer.domElement.dispatchEvent(new CustomEvent("ticker")),requestAnimationFrame(this.ticker),this.renderer.autoClear=!1,this.renderer.clear(),this.usePathTracing){this.sampleCount<this.maxSample?this.sampleCount++:this.pathTracer.pausePathTracing=!0,this.pathTracer.renderSample();const i=this.renderer.autoClear;this.renderer.autoClear=!1,this.scene.overrideMaterial=WK,this.renderer.clearDepth(),this.renderer.render(this.scene,this.camera),this.scene.overrideMaterial=null,this.renderer.render(this.overlayScene,this.camera),this.renderer.autoClear=i}else this.amr.slots.forEach(i=>{this._dragging?i.getCanInstall()&&i.render(this):i.render(this)}),xs.update(),this.controls.update(),this.css2dRenderer.render(this.scene,this.camera),this.updatePosition(),this.scene.overrideMaterial=null,this.renderer.render(this.scene,this.camera),this.renderer.render(this.overlayScene,this.camera);this.stats.end()},this.stats.showPanel(0),this.hideState(),A.fov&&(this.camera.fov=A.fov),this._ground.visible=!1,this.controls=new cE(this.camera,this.renderer.domElement),this.controls.enablePan=!1,this.controls.rotateSpeed=.5,this.controls.dampingFactor=MS,this.controls.enableDamping=!0,this.controls.maxDistance=5,this.controls.minDistance=1,this.controls.zoomSpeed=_b()?.2:1,this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.autoClear=!0,this.renderer.toneMapping=Bd,this.renderer.toneMappingExposure=1.2,this.renderer.outputColorSpace=je,this.renderer.localClippingEnabled=!0,this.css2dRenderer.domElement.style.pointerEvents="none",this.css2dRenderer.domElement.style.position="absolute",this.css2dRenderer.domElement.style.top="0px",oe.tonemapping_pars_fragment=oe.tonemapping_pars_fragment.replace("vec3 CustomToneMapping( vec3 color ) { return color; }",`
9849
9849
  float startCompression = 0.8;
9850
9850
  float desaturation = 0.5;
9851
9851
  vec3 CustomToneMapping( vec3 color ) {
@@ -9864,7 +9864,7 @@ vTroikaGlyphColor = uTroikaUseGlyphColors ? aTroikaGlyphColor / 255.0 : diffuse;
9864
9864
  color *= newPeak * invPeak;
9865
9865
  float g = 1. - 3. / (desaturation * extraBrightness + 3.);
9866
9866
  return mix(color, vec3(1, 1, 1), g);
9867
- }`),this.camera.position.set(10,6,-10),this.camera.lookAt(new O);const{tiles:e}=q9();this.pathTracer=new tO(this.renderer),this.pathTracer.filterGlossyFactor=.6,this.pathTracer.renderScale=window.devicePixelRatio,this.pathTracer.bounces=10,this.pathTracer.transmissiveBounces=8,this.pathTracer.tiles.set(e,e),this.pathTracer.fadeDuration=0,this.pathTracer.setBVHWorker(new MK),this.controls.addEventListener("change",()=>{var t;this.sampleCount=0,(t=this.pathTracer)==null||t.updateCamera()}),this._composer=new nO(this.renderer),this._composer.setPixelRatio(window.devicePixelRatio),this._composer.addPass(new oE(this.scene,this.camera)),this._composer.addPass(new uE),this._outlinePass=new Hn(new uA(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePass.visibleEdgeColor.set(26367),this._outlinePass.edgeThickness=.5,this._outlinePass.hiddenEdgeColor.set(26367),this._outlinePass.edgeStrength=3,this._outlinePass.edgeGlow=0,this._composer.addPass(this._outlinePass),this._outlinePassError=new Hn(new uA(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePassError.visibleEdgeColor.set(16711680),this._outlinePassError.edgeThickness=.5,this._outlinePassError.hiddenEdgeColor.set(16711680),this._outlinePassError.edgeStrength=3,this._outlinePassError.edgeGlow=0,this._composer.addPass(this._outlinePassError),this._composer.renderTarget1.texture.colorSpace=je,this._composer.renderTarget2.texture.colorSpace=je,this._fxaaPass=new J1(aE),this._composer.addPass(this._fxaaPass),this._container.add(this.amr),this.scene.add(this._container),this.ticker(),this._loadEnv(),this._initEvents(),this._ground.rotateX(-Math.PI/2),this.scene.add(this._ground)}get usePathTracing(){return this._usePathTracing}set usePathTracing(A){A?(this.amr&&(this.amr.bodyOpacity=1),this.amr.slots.forEach(e=>e.hide()),this.amr.controllers.forEach(e=>e.hide()),this.lines.hide(),this.amr.sizeBox.hide(),this.amr.goods.forEach(e=>e.hide()),this.pathTracer.renderToCanvas=!0):(this.amr.sizeBox.show(),this.amr.goods.forEach(e=>e.show()),this.amr.slots.forEach(e=>e.show()),this.amr.controllers.forEach(e=>e.show()),this.lines.show(),this.amr&&this.amr.opacityCache!==void 0?(this.amr.bodyOpacity=this.amr.opacityCache,this.amr.opacityCache=void 0):this.amr&&(this.amr.bodyOpacity=1),this.pathTracer.reset(),this._ground.visible=!1,this.scene.background=null),this._usePathTracing=A,this.controls.dampingFactor=A?1:MS,this.sampleCount=0}get fpsAverage(){return bb(this._fpsCache)}showState(){this.stats.dom.style.display="block"}hideState(){this.stats.dom.style.display="none"}_loadEnv(){new iE(new R1).load(mk,e=>{e.mapping=eo,e.minFilter=we,e.magFilter=we,e.colorSpace=je,e.format=_e,e.needsUpdate=!0,this._usePathTracing||(this.scene.environment=e,this.overlayScene.environment=e,this.scene.environmentRotation.y=Math.PI*.1,this.scene.environmentIntensity=1,this.overlayScene.environmentIntensity=1),this.pathTracer.updateEnvironment()},()=>{},()=>{})}_initEvents(){window.addEventListener("drag",this._drag),window.addEventListener("dragend",this._dragend),document.addEventListener("wheel",this._detectTrackpad),window.addEventListener("pointermove",this._pointermove),this.renderer.domElement.addEventListener("pointerdown",this._pointerdown)}async generateBVH(){this.pathTracer.pausePathTracing=!1,this.amr.slots.forEach(A=>A.hide()),this.lines.hide(),this.amr&&(this.amr.opacityCache=this.amr.bodyOpacity,this.amr.bodyOpacity=1),this.usePathTracing=!0,this.pathTracer.setScene(this.scene,this.camera)}download(){return this.renderer.domElement.toDataURL("image/png")}clearAMR(){this.amr.clean(),this.usePathTracing=!1,this.lines.clear()}async exportAMR(){const A=this._container.clone(!0);return A.traverse(e=>{e.dispose&&(e.dispose(),e.removeFromParent())}),await Hb.parseAsync(A,{onlyVisible:!0,binary:!0})}async addAMR(A){this.amr.init(this),await this.amr.load(A),this.amr.addEventListener("shape-key-changed",()=>{this.pathTracer.reset(),this.sampleCount=0,this.pathTracer.setScene(this.scene,this.camera)}),this.amr.logos.forEach(e=>{this.overlayScene.add(e.target)})}generateEdges(){this._container.traverse(A=>{if(A instanceof Te){const e=A.geometry.clone(),t=GK.generate(e);let i=t.next();for(;!i.done;)i=t.next();const r=new bl(i.value,new Bh({color:3355443}));r.position.z=-1.4,this.add(r),e.dispose()}})}select(A){typeof A=="string"||(Array.isArray(A)?this._outlinePass.selectedObjects=[...A]:this._outlinePass.selectedObjects=[A])}appendTo(A){A.append(this.renderer.domElement),A.append(this.stats.dom),A.append(this.lines),A.append(this.css2dRenderer.domElement),this.stats.dom.style.bottom="0",this.stats.dom.style.top="auto",this.resize(),this._resizeObserver=new ResizeObserver(this.resize.bind(this)),this._resizeObserver.observe(A)}add(A){this._container.add(A)}updatePosition(){this.lines.forceUpdate()}destroy(){var e,t;this.amr.destroy(),xs.removeAll(),this.stats.dom.remove(),this._emitter.removeAllListeners(),(e=this._fitAnimation)==null||e.stop(),window.removeEventListener("drag",this._drag),document.removeEventListener("wheel",this._detectTrackpad),window.removeEventListener("pointermove",this._pointermove),this.renderer.domElement.removeEventListener("pointerdown",this._pointerdown);const A=this.renderer.domElement.parentElement;A&&((t=this._resizeObserver)==null||t.unobserve(A)),this.controls.dispose(),this.renderer.dispose(),this._composer.dispose(),this.scene.traverse(i=>{var r;i instanceof Te?(i.geometry.dispose(),Array.isArray(i.material)?i.material.forEach(s=>s.dispose()):i.material&&i.material.dispose()):i instanceof jf?i.dispose():(r=i.dispose)==null||r.call(i),i.removeFromParent()})}}var ZK=Object.defineProperty,XK=(n,A,e)=>A in n?ZK(n,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[A]=e,pA=(n,A,e)=>(XK(n,typeof A!="symbol"?A+"":A,e),e);class Li{constructor(A){pA(this,"parent"),pA(this,"paused"),this.parent=A,this.paused=!1}destroy(){}down(A){return!1}move(A){return!1}up(A){return!1}wheel(A){return!1}update(A){}resize(){}reset(){}pause(){this.paused=!0}resume(){this.paused=!1}}var QK=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},PS={exports:{}};(function(n,A){(function(){var e,t;t=function(i){return n.exports=i},e={linear:function(i,r,s,o){return s*i/o+r},easeInQuad:function(i,r,s,o){return s*(i/=o)*i+r},easeOutQuad:function(i,r,s,o){return-s*(i/=o)*(i-2)+r},easeInOutQuad:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i+r:-s/2*(--i*(i-2)-1)+r},easeInCubic:function(i,r,s,o){return s*(i/=o)*i*i+r},easeOutCubic:function(i,r,s,o){return s*((i=i/o-1)*i*i+1)+r},easeInOutCubic:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i+r:s/2*((i-=2)*i*i+2)+r},easeInQuart:function(i,r,s,o){return s*(i/=o)*i*i*i+r},easeOutQuart:function(i,r,s,o){return-s*((i=i/o-1)*i*i*i-1)+r},easeInOutQuart:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i*i+r:-s/2*((i-=2)*i*i*i-2)+r},easeInQuint:function(i,r,s,o){return s*(i/=o)*i*i*i*i+r},easeOutQuint:function(i,r,s,o){return s*((i=i/o-1)*i*i*i*i+1)+r},easeInOutQuint:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i*i*i+r:s/2*((i-=2)*i*i*i*i+2)+r},easeInSine:function(i,r,s,o){return-s*Math.cos(i/o*(Math.PI/2))+s+r},easeOutSine:function(i,r,s,o){return s*Math.sin(i/o*(Math.PI/2))+r},easeInOutSine:function(i,r,s,o){return-s/2*(Math.cos(Math.PI*i/o)-1)+r},easeInExpo:function(i,r,s,o){return i===0?r:s*Math.pow(2,10*(i/o-1))+r},easeOutExpo:function(i,r,s,o){return i===o?r+s:s*(-Math.pow(2,-10*i/o)+1)+r},easeInOutExpo:function(i,r,s,o){return(i/=o/2)<1?s/2*Math.pow(2,10*(i-1))+r:s/2*(-Math.pow(2,-10*--i)+2)+r},easeInCirc:function(i,r,s,o){return-s*(Math.sqrt(1-(i/=o)*i)-1)+r},easeOutCirc:function(i,r,s,o){return s*Math.sqrt(1-(i=i/o-1)*i)+r},easeInOutCirc:function(i,r,s,o){return(i/=o/2)<1?-s/2*(Math.sqrt(1-i*i)-1)+r:s/2*(Math.sqrt(1-(i-=2)*i)+1)+r},easeInElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o),l||(l=o*.3),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),-(a*Math.pow(2,10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l))+r},easeOutElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o),l||(l=o*.3),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),a*Math.pow(2,-10*i)*Math.sin((i*o-u)*(2*Math.PI)/l)+s+r},easeInOutElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o/2),l||(l=o*(.3*1.5)),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),i<1?-.5*(a*Math.pow(2,10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l))+r:a*Math.pow(2,-10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l)*.5+s+r},easeInBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),s*(i/=o)*i*((a+1)*i-a)+r},easeOutBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),s*((i=i/o-1)*i*((a+1)*i+a)+1)+r},easeInOutBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),(i/=o/2)<1?s/2*(i*i*(((a*=1.525)+1)*i-a))+r:s/2*((i-=2)*i*(((a*=1.525)+1)*i+a)+2)+r},easeInBounce:function(i,r,s,o){var a;return a=e.easeOutBounce(o-i,0,s,o),s-a+r},easeOutBounce:function(i,r,s,o){return(i/=o)<1/2.75?s*(7.5625*i*i)+r:i<2/2.75?s*(7.5625*(i-=1.5/2.75)*i+.75)+r:i<2.5/2.75?s*(7.5625*(i-=2.25/2.75)*i+.9375)+r:s*(7.5625*(i-=2.625/2.75)*i+.984375)+r},easeInOutBounce:function(i,r,s,o){var a;return i<o/2?(a=e.easeInBounce(i*2,0,s,o),a*.5+r):(a=e.easeOutBounce(i*2-o,0,s,o),a*.5+s*.5+r)}},t(e)}).call(QK)})(PS);const TS=PS.exports;function yd(n,A){if(n){if(typeof n=="function")return n;if(typeof n=="string")return TS[n]}else return TS[A]}const VK={removeOnInterrupt:!1,ease:"linear",time:1e3};class $K extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"startX"),pA(this,"startY"),pA(this,"deltaX"),pA(this,"deltaY"),pA(this,"keepCenter"),pA(this,"startWidth",null),pA(this,"startHeight",null),pA(this,"deltaWidth",null),pA(this,"deltaHeight",null),pA(this,"width",null),pA(this,"height",null),pA(this,"time",0),this.options=Object.assign({},VK,e),this.options.ease=yd(this.options.ease),this.setupPosition(),this.setupZoom(),this.time=0}setupPosition(){typeof this.options.position<"u"?(this.startX=this.parent.center.x,this.startY=this.parent.center.y,this.deltaX=this.options.position.x-this.parent.center.x,this.deltaY=this.options.position.y-this.parent.center.y,this.keepCenter=!1):this.keepCenter=!0}setupZoom(){this.width=null,this.height=null,typeof this.options.scale<"u"?this.width=this.parent.screenWidth/this.options.scale:typeof this.options.scaleX<"u"||typeof this.options.scaleY<"u"?(typeof this.options.scaleX<"u"&&(this.width=this.parent.screenWidth/this.options.scaleX),typeof this.options.scaleY<"u"&&(this.height=this.parent.screenHeight/this.options.scaleY)):(typeof this.options.width<"u"&&(this.width=this.options.width),typeof this.options.height<"u"&&(this.height=this.options.height)),this.width!==null&&(this.startWidth=this.parent.screenWidthInWorldPixels,this.deltaWidth=this.width-this.startWidth),this.height!==null&&(this.startHeight=this.parent.screenHeightInWorldPixels,this.deltaHeight=this.height-this.startHeight)}down(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("animate"),!1}complete(){this.parent.plugins.remove("animate"),this.width!==null&&this.parent.fitWidth(this.width,this.keepCenter,this.height===null),this.height!==null&&this.parent.fitHeight(this.height,this.keepCenter,this.width===null),!this.keepCenter&&this.options.position&&this.parent.moveCenter(this.options.position),this.parent.emit("animate-end",this.parent),this.options.callbackOnComplete&&this.options.callbackOnComplete(this.parent)}update(A){if(this.paused)return;this.time+=A;const e=new VA(this.parent.scale.x,this.parent.scale.y);if(this.time>=this.options.time){const t=this.parent.width,i=this.parent.height;this.complete(),(t!==this.parent.width||i!==this.parent.height)&&this.parent.emit("zoomed",{viewport:this.parent,original:e,type:"animate"})}else{const t=this.options.ease(this.time,0,1,this.options.time);if(this.width!==null){const i=this.startWidth,r=this.deltaWidth;this.parent.fitWidth(i+r*t,this.keepCenter,this.height===null)}if(this.height!==null){const i=this.startHeight,r=this.deltaHeight;this.parent.fitHeight(i+r*t,this.keepCenter,this.width===null)}if(this.width===null?this.parent.scale.x=this.parent.scale.y:this.height===null&&(this.parent.scale.y=this.parent.scale.x),!this.keepCenter){const i=this.startX,r=this.startY,s=this.deltaX,o=this.deltaY,a=new VA(this.parent.x,this.parent.y);this.parent.moveCenter(i+s*t,r+o*t),this.parent.emit("moved",{viewport:this.parent,original:a,type:"animate"})}(this.width||this.height)&&this.parent.emit("zoomed",{viewport:this.parent,original:e,type:"animate"})}}}const AF={sides:"all",friction:.5,time:150,ease:"easeInOutSine",underflow:"center",bounceBox:null};class eF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"left"),pA(this,"top"),pA(this,"right"),pA(this,"bottom"),pA(this,"underflowX"),pA(this,"underflowY"),pA(this,"ease"),pA(this,"toX"),pA(this,"toY"),this.options=Object.assign({},AF,e),this.ease=yd(this.options.ease,"easeInOutSine"),this.options.sides?this.options.sides==="all"?this.top=this.bottom=this.left=this.right=!0:this.options.sides==="horizontal"?(this.right=this.left=!0,this.top=this.bottom=!1):this.options.sides==="vertical"?(this.left=this.right=!1,this.top=this.bottom=!0):(this.top=this.options.sides.indexOf("top")!==-1,this.bottom=this.options.sides.indexOf("bottom")!==-1,this.left=this.options.sides.indexOf("left")!==-1,this.right=this.options.sides.indexOf("right")!==-1):this.left=this.top=this.right=this.bottom=!1;const t=this.options.underflow.toLowerCase();t==="center"?(this.underflowX=0,this.underflowY=0):(this.underflowX=t.indexOf("left")!==-1?-1:t.indexOf("right")!==-1?1:0,this.underflowY=t.indexOf("top")!==-1?-1:t.indexOf("bottom")!==-1?1:0),this.reset()}isActive(){return this.toX!==null||this.toY!==null}down(){return this.toX=this.toY=null,!1}up(){return this.bounce(),!1}update(A){if(!this.paused){if(this.bounce(),this.toX){const e=this.toX;e.time+=A,this.parent.emit("moved",{viewport:this.parent,type:"bounce-x"}),e.time>=this.options.time?(this.parent.x=e.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(e.time,e.start,e.delta,this.options.time)}if(this.toY){const e=this.toY;e.time+=A,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),e.time>=this.options.time?(this.parent.y=e.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(e.time,e.start,e.delta,this.options.time)}}}calcUnderflowX(){let A;switch(this.underflowX){case-1:A=0;break;case 1:A=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:A=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return A}calcUnderflowY(){let A;switch(this.underflowY){case-1:A=0;break;case 1:A=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:A=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return A}oob(){const A=this.options.bounceBox;if(A){const e=typeof A.x>"u"?0:A.x,t=typeof A.y>"u"?0:A.y,i=typeof A.width>"u"?this.parent.worldWidth:A.width,r=typeof A.height>"u"?this.parent.worldHeight:A.height;return{left:this.parent.left<e,right:this.parent.right>i,top:this.parent.top<t,bottom:this.parent.bottom>r,topLeft:new VA(e*this.parent.scale.x,t*this.parent.scale.y),bottomRight:new VA(i*this.parent.scale.x-this.parent.screenWidth,r*this.parent.scale.y-this.parent.screenHeight)}}return{left:this.parent.left<0,right:this.parent.right>this.parent.worldWidth,top:this.parent.top<0,bottom:this.parent.bottom>this.parent.worldHeight,topLeft:new VA(0,0),bottomRight:new VA(this.parent.worldWidth*this.parent.scale.x-this.parent.screenWidth,this.parent.worldHeight*this.parent.scale.y-this.parent.screenHeight)}}bounce(){var A,e;if(this.paused)return;let t,i=this.parent.plugins.get("decelerate",!0);i&&(i.x||i.y)&&(i.x&&i.percentChangeX===((A=i.options)==null?void 0:A.friction)||i.y&&i.percentChangeY===((e=i.options)==null?void 0:e.friction))&&(t=this.oob(),(t.left&&this.left||t.right&&this.right)&&(i.percentChangeX=this.options.friction),(t.top&&this.top||t.bottom&&this.bottom)&&(i.percentChangeY=this.options.friction));const r=this.parent.plugins.get("drag",!0)||{},s=this.parent.plugins.get("pinch",!0)||{};if(i=i||{},!(r!=null&&r.active)&&!(s!=null&&s.active)&&(!this.toX||!this.toY)&&(!i.x||!i.y)){t=t||this.oob();const o=t.topLeft,a=t.bottomRight;if(!this.toX&&!i.x){let l=null;t.left&&this.left?l=this.parent.screenWorldWidth<this.parent.screenWidth?this.calcUnderflowX():-o.x:t.right&&this.right&&(l=this.parent.screenWorldWidth<this.parent.screenWidth?this.calcUnderflowX():-a.x),l!==null&&this.parent.x!==l&&(this.toX={time:0,start:this.parent.x,delta:l-this.parent.x,end:l},this.parent.emit("bounce-x-start",this.parent))}if(!this.toY&&!i.y){let l=null;t.top&&this.top?l=this.parent.screenWorldHeight<this.parent.screenHeight?this.calcUnderflowY():-o.y:t.bottom&&this.bottom&&(l=this.parent.screenWorldHeight<this.parent.screenHeight?this.calcUnderflowY():-a.y),l!==null&&this.parent.y!==l&&(this.toY={time:0,start:this.parent.y,delta:l-this.parent.y,end:l},this.parent.emit("bounce-y-start",this.parent))}}}reset(){this.toX=this.toY=null,this.bounce()}}const tF={left:!1,right:!1,top:!1,bottom:!1,direction:null,underflow:"center"};class iF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"last"),pA(this,"noUnderflow"),pA(this,"underflowX"),pA(this,"underflowY"),this.options=Object.assign({},tF,e),this.options.direction&&(this.options.left=this.options.direction==="x"||this.options.direction==="all"?!0:null,this.options.right=this.options.direction==="x"||this.options.direction==="all"?!0:null,this.options.top=this.options.direction==="y"||this.options.direction==="all"?!0:null,this.options.bottom=this.options.direction==="y"||this.options.direction==="all"?!0:null),this.parseUnderflow(),this.last={x:null,y:null,scaleX:null,scaleY:null},this.update()}parseUnderflow(){const A=this.options.underflow.toLowerCase();A==="none"?this.noUnderflow=!0:A==="center"?(this.underflowX=this.underflowY=0,this.noUnderflow=!1):(this.underflowX=A.indexOf("left")!==-1?-1:A.indexOf("right")!==-1?1:0,this.underflowY=A.indexOf("top")!==-1?-1:A.indexOf("bottom")!==-1?1:0,this.noUnderflow=!1)}move(){return this.update(),!1}update(){if(this.paused||this.parent.x===this.last.x&&this.parent.y===this.last.y&&this.parent.scale.x===this.last.scaleX&&this.parent.scale.y===this.last.scaleY)return;const A=new VA(this.parent.x,this.parent.y),e=this.parent.plugins.decelerate||{};if(this.options.left!==null||this.options.right!==null){let t=!1;if(!this.noUnderflow&&this.parent.screenWorldWidth<this.parent.screenWidth)switch(this.underflowX){case-1:this.parent.x!==0&&(this.parent.x=0,t=!0);break;case 1:this.parent.x!==this.parent.screenWidth-this.parent.screenWorldWidth&&(this.parent.x=this.parent.screenWidth-this.parent.screenWorldWidth,t=!0);break;default:this.parent.x!==(this.parent.screenWidth-this.parent.screenWorldWidth)/2&&(this.parent.x=(this.parent.screenWidth-this.parent.screenWorldWidth)/2,t=!0)}else this.options.left!==null&&this.parent.left<(this.options.left===!0?0:this.options.left)&&(this.parent.x=-(this.options.left===!0?0:this.options.left)*this.parent.scale.x,e.x=0,t=!0),this.options.right!==null&&this.parent.right>(this.options.right===!0?this.parent.worldWidth:this.options.right)&&(this.parent.x=-(this.options.right===!0?this.parent.worldWidth:this.options.right)*this.parent.scale.x+this.parent.screenWidth,e.x=0,t=!0);t&&this.parent.emit("moved",{viewport:this.parent,original:A,type:"clamp-x"})}if(this.options.top!==null||this.options.bottom!==null){let t=!1;if(!this.noUnderflow&&this.parent.screenWorldHeight<this.parent.screenHeight)switch(this.underflowY){case-1:this.parent.y!==0&&(this.parent.y=0,t=!0);break;case 1:this.parent.y!==this.parent.screenHeight-this.parent.screenWorldHeight&&(this.parent.y=this.parent.screenHeight-this.parent.screenWorldHeight,t=!0);break;default:this.parent.y!==(this.parent.screenHeight-this.parent.screenWorldHeight)/2&&(this.parent.y=(this.parent.screenHeight-this.parent.screenWorldHeight)/2,t=!0)}else this.options.top!==null&&this.parent.top<(this.options.top===!0?0:this.options.top)&&(this.parent.y=-(this.options.top===!0?0:this.options.top)*this.parent.scale.y,e.y=0,t=!0),this.options.bottom!==null&&this.parent.bottom>(this.options.bottom===!0?this.parent.worldHeight:this.options.bottom)&&(this.parent.y=-(this.options.bottom===!0?this.parent.worldHeight:this.options.bottom)*this.parent.scale.y+this.parent.screenHeight,e.y=0,t=!0);t&&this.parent.emit("moved",{viewport:this.parent,original:A,type:"clamp-y"})}this.last.x=this.parent.x,this.last.y=this.parent.y,this.last.scaleX=this.parent.scale.x,this.last.scaleY=this.parent.scale.y}reset(){this.update()}}const nF={minWidth:null,minHeight:null,maxWidth:null,maxHeight:null,minScale:null,maxScale:null};class rF extends Li{constructor(A,e={}){super(A),pA(this,"options"),this.options=Object.assign({},nF,e),this.clamp()}resize(){this.clamp()}clamp(){if(!this.paused){if(this.options.minWidth||this.options.minHeight||this.options.maxWidth||this.options.maxHeight){let A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight;if(this.options.minWidth!==null&&A<this.options.minWidth){const t=this.parent.scale.x;this.parent.fitWidth(this.options.minWidth,!1,!1,!0),this.parent.scale.y*=this.parent.scale.x/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.maxWidth!==null&&A>this.options.maxWidth){const t=this.parent.scale.x;this.parent.fitWidth(this.options.maxWidth,!1,!1,!0),this.parent.scale.y*=this.parent.scale.x/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.minHeight!==null&&e<this.options.minHeight){const t=this.parent.scale.y;this.parent.fitHeight(this.options.minHeight,!1,!1,!0),this.parent.scale.x*=this.parent.scale.y/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.maxHeight!==null&&e>this.options.maxHeight){const t=this.parent.scale.y;this.parent.fitHeight(this.options.maxHeight,!1,!1,!0),this.parent.scale.x*=this.parent.scale.y/t,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}}else if(this.options.minScale||this.options.maxScale){const A={x:null,y:null},e={x:null,y:null};if(typeof this.options.minScale=="number")A.x=this.options.minScale,A.y=this.options.minScale;else if(this.options.minScale!==null){const r=this.options.minScale;A.x=typeof r.x>"u"?null:r.x,A.y=typeof r.y>"u"?null:r.y}if(typeof this.options.maxScale=="number")e.x=this.options.maxScale,e.y=this.options.maxScale;else if(this.options.maxScale!==null){const r=this.options.maxScale;e.x=typeof r.x>"u"?null:r.x,e.y=typeof r.y>"u"?null:r.y}let t=this.parent.scale.x,i=this.parent.scale.y;A.x!==null&&t<A.x&&(t=A.x),e.x!==null&&t>e.x&&(t=e.x),A.y!==null&&i<A.y&&(i=A.y),e.y!==null&&i>e.y&&(i=e.y),(t!==this.parent.scale.x||i!==this.parent.scale.y)&&(this.parent.scale.set(t,i),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}reset(){this.clamp()}}const sF={friction:.98,bounce:.8,minSpeed:.01},$r=16;class oF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"x"),pA(this,"y"),pA(this,"percentChangeX"),pA(this,"percentChangeY"),pA(this,"saved"),pA(this,"timeSinceRelease"),this.options=Object.assign({},sF,e),this.saved=[],this.timeSinceRelease=0,this.reset(),this.parent.on("moved",t=>this.handleMoved(t))}down(){return this.saved=[],this.x=this.y=null,!1}isActive(){return!!(this.x||this.y)}move(){if(this.paused)return!1;const A=this.parent.input.count();return(A===1||A>1&&!this.parent.plugins.get("pinch",!0))&&(this.saved.push({x:this.parent.x,y:this.parent.y,time:performance.now()}),this.saved.length>60&&this.saved.splice(0,30)),!1}handleMoved(A){if(this.saved.length){const e=this.saved[this.saved.length-1];A.type==="clamp-x"&&A.original?e.x===A.original.x&&(e.x=this.parent.x):A.type==="clamp-y"&&A.original&&e.y===A.original.y&&(e.y=this.parent.y)}}up(){if(this.parent.input.count()===0&&this.saved.length){const A=performance.now();for(const e of this.saved)if(e.time>=A-100){const t=A-e.time;this.x=(this.parent.x-e.x)/t,this.y=(this.parent.y-e.y)/t,this.percentChangeX=this.percentChangeY=this.options.friction,this.timeSinceRelease=0;break}}return!1}activate(A){A=A||{},typeof A.x<"u"&&(this.x=A.x,this.percentChangeX=this.options.friction),typeof A.y<"u"&&(this.y=A.y,this.percentChangeY=this.options.friction)}update(A){if(this.paused)return;const e=this.x||this.y,t=this.timeSinceRelease,i=this.timeSinceRelease+A;if(this.x){const r=this.percentChangeX,s=Math.log(r);this.parent.x+=this.x*$r/s*(Math.pow(r,i/$r)-Math.pow(r,t/$r)),this.x*=Math.pow(this.percentChangeX,A/$r)}if(this.y){const r=this.percentChangeY,s=Math.log(r);this.parent.y+=this.y*$r/s*(Math.pow(r,i/$r)-Math.pow(r,t/$r)),this.y*=Math.pow(this.percentChangeY,A/$r)}this.timeSinceRelease+=A,this.x&&this.y?Math.abs(this.x)<this.options.minSpeed&&Math.abs(this.y)<this.options.minSpeed&&(this.x=0,this.y=0):(Math.abs(this.x||0)<this.options.minSpeed&&(this.x=0),Math.abs(this.y||0)<this.options.minSpeed&&(this.y=0)),e&&this.parent.emit("moved",{viewport:this.parent,type:"decelerate"})}reset(){this.x=this.y=null}}const aF={direction:"all",pressDrag:!0,wheel:!0,wheelScroll:1,reverse:!1,clampWheel:!1,underflow:"center",factor:1,mouseButtons:"all",keyToPress:null,ignoreKeyToPressOnTouch:!1,lineHeight:20,wheelSwapAxes:!1};class lF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"moved"),pA(this,"reverse"),pA(this,"xDirection"),pA(this,"yDirection"),pA(this,"keyIsPressed"),pA(this,"mouse"),pA(this,"underflowX"),pA(this,"underflowY"),pA(this,"last"),pA(this,"current"),pA(this,"windowEventHandlers",[]),this.options=Object.assign({},aF,e),this.moved=!1,this.reverse=this.options.reverse?1:-1,this.xDirection=!this.options.direction||this.options.direction==="all"||this.options.direction==="x",this.yDirection=!this.options.direction||this.options.direction==="all"||this.options.direction==="y",this.keyIsPressed=!1,this.parseUnderflow(),this.mouseButtons(this.options.mouseButtons),this.options.keyToPress&&this.handleKeyPresses(this.options.keyToPress)}handleKeyPresses(A){const e=i=>{A.includes(i.code)&&(this.keyIsPressed=!0)},t=i=>{A.includes(i.code)&&(this.keyIsPressed=!1)};this.addWindowEventHandler("keyup",t),this.addWindowEventHandler("keydown",e)}addWindowEventHandler(A,e){window.addEventListener(A,e),this.windowEventHandlers.push({event:A,handler:e})}destroy(){this.windowEventHandlers.forEach(({event:A,handler:e})=>{window.removeEventListener(A,e)})}mouseButtons(A){!A||A==="all"?this.mouse=[!0,!0,!0]:this.mouse=[A.indexOf("left")!==-1,A.indexOf("middle")!==-1,A.indexOf("right")!==-1]}parseUnderflow(){const A=this.options.underflow.toLowerCase();A==="center"?(this.underflowX=0,this.underflowY=0):(A.includes("left")?this.underflowX=-1:A.includes("right")?this.underflowX=1:this.underflowX=0,A.includes("top")?this.underflowY=-1:A.includes("bottom")?this.underflowY=1:this.underflowY=0)}checkButtons(A){const e=A.pointerType==="mouse",t=this.parent.input.count();return!!((t===1||t>1&&!this.parent.plugins.get("pinch",!0))&&(!e||this.mouse[A.button]))}checkKeyPress(A){return!this.options.keyToPress||this.keyIsPressed||this.options.ignoreKeyToPressOnTouch&&A.data.pointerType==="touch"}down(A){return this.paused||!this.options.pressDrag?!1:this.checkButtons(A)&&this.checkKeyPress(A)?(this.last={x:A.global.x,y:A.global.y},this.current=A.pointerId,!0):(this.last=null,!1)}get active(){return this.moved}move(A){if(this.paused||!this.options.pressDrag)return!1;if(this.last&&this.current===A.data.pointerId){const e=A.global.x,t=A.global.y,i=this.parent.input.count();if(i===1||i>1&&!this.parent.plugins.get("pinch",!0)){const r=e-this.last.x,s=t-this.last.y;if(this.moved||this.xDirection&&this.parent.input.checkThreshold(r)||this.yDirection&&this.parent.input.checkThreshold(s)){const o={x:e,y:t};return this.xDirection&&(this.parent.x+=(o.x-this.last.x)*this.options.factor),this.yDirection&&(this.parent.y+=(o.y-this.last.y)*this.options.factor),this.last=o,this.moved||this.parent.emit("drag-start",{event:A,screen:new VA(this.last.x,this.last.y),world:this.parent.toWorld(new VA(this.last.x,this.last.y)),viewport:this.parent}),this.moved=!0,this.parent.emit("moved",{viewport:this.parent,type:"drag"}),!0}}else this.moved=!1}return!1}up(A){if(this.paused)return!1;const e=this.parent.input.touches;if(e.length===1){const t=e[0];return t.last&&(this.last={x:t.last.x,y:t.last.y},this.current=t.id),this.moved=!1,!0}else if(this.last&&this.moved){const t=new VA(this.last.x,this.last.y);return this.parent.emit("drag-end",{event:A,screen:t,world:this.parent.toWorld(t),viewport:this.parent}),this.last=null,this.moved=!1,!0}return!1}wheel(A){if(this.paused)return!1;if(this.options.wheel){const e=this.parent.plugins.get("wheel",!0);if(!e||!e.options.wheelZoom&&!A.ctrlKey){const t=A.deltaMode?this.options.lineHeight:1,i=[A.deltaX,A.deltaY],[r,s]=this.options.wheelSwapAxes?i.reverse():i;return this.xDirection&&(this.parent.x+=r*t*this.options.wheelScroll*this.reverse),this.yDirection&&(this.parent.y+=s*t*this.options.wheelScroll*this.reverse),this.options.clampWheel&&this.clamp(),this.parent.emit("wheel-scroll",this.parent),this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.options.passiveWheel||A.preventDefault(),this.parent.options.stopPropagation&&A.stopPropagation(),!0}}return!1}resume(){this.last=null,this.paused=!1}clamp(){const A=this.parent.plugins.get("decelerate",!0)||{};if(this.options.clampWheel!=="y")if(this.parent.screenWorldWidth<this.parent.screenWidth)switch(this.underflowX){case-1:this.parent.x=0;break;case 1:this.parent.x=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:this.parent.x=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}else this.parent.left<0?(this.parent.x=0,A.x=0):this.parent.right>this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,A.x=0);if(this.options.clampWheel!=="x")if(this.parent.screenWorldHeight<this.parent.screenHeight)switch(this.underflowY){case-1:this.parent.y=0;break;case 1:this.parent.y=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:this.parent.y=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}else this.parent.top<0&&(this.parent.y=0,A.y=0),this.parent.bottom>this.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,A.y=0)}}const cF={speed:0,acceleration:null,radius:null};class hF extends Li{constructor(A,e,t={}){super(A),pA(this,"options"),pA(this,"target"),pA(this,"velocity"),this.target=e,this.options=Object.assign({},cF,t),this.velocity={x:0,y:0}}update(A){if(this.paused)return;const e=this.parent.center;let t=this.target.x,i=this.target.y;if(this.options.radius)if(Math.sqrt(Math.pow(this.target.y-e.y,2)+Math.pow(this.target.x-e.x,2))>this.options.radius){const o=Math.atan2(this.target.y-e.y,this.target.x-e.x);t=this.target.x-Math.cos(o)*this.options.radius,i=this.target.y-Math.sin(o)*this.options.radius}else return;const r=t-e.x,s=i-e.y;if(r||s)if(this.options.speed)if(this.options.acceleration){const o=Math.atan2(i-e.y,t-e.x),a=Math.sqrt(Math.pow(r,2)+Math.pow(s,2));if(a){const l=(Math.pow(this.velocity.x,2)+Math.pow(this.velocity.y,2))/(2*this.options.acceleration);a>l?this.velocity={x:Math.min(this.velocity.x+(this.options.acceleration*A,this.options.speed)),y:Math.min(this.velocity.y+(this.options.acceleration*A,this.options.speed))}:this.velocity={x:Math.max(this.velocity.x-this.options.acceleration*this.options.speed,0),y:Math.max(this.velocity.y-this.options.acceleration*this.options.speed,0)};const u=Math.cos(o)*this.velocity.x,c=Math.sin(o)*this.velocity.y,h=Math.abs(u)>Math.abs(r)?t:e.x+u,f=Math.abs(c)>Math.abs(s)?i:e.y+c;this.parent.moveCenter(h,f),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else{const o=Math.atan2(i-e.y,t-e.x),a=Math.cos(o)*this.options.speed,l=Math.sin(o)*this.options.speed,u=Math.abs(a)>Math.abs(r)?t:e.x+a,c=Math.abs(l)>Math.abs(s)?i:e.y+l;this.parent.moveCenter(u,c),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}else this.parent.moveCenter(t,i),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}const uF={radius:null,distance:null,top:null,bottom:null,left:null,right:null,speed:8,reverse:!1,noDecelerate:!1,linear:!1,allowButtons:!1};class fF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"reverse"),pA(this,"radiusSquared"),pA(this,"left"),pA(this,"top"),pA(this,"right"),pA(this,"bottom"),pA(this,"horizontal"),pA(this,"vertical"),this.options=Object.assign({},uF,e),this.reverse=this.options.reverse?1:-1,this.radiusSquared=typeof this.options.radius=="number"?Math.pow(this.options.radius,2):null,this.resize()}resize(){const A=this.options.distance;A!==null?(this.left=A,this.top=A,this.right=this.parent.screenWidth-A,this.bottom=this.parent.screenHeight-A):this.options.radius||(this.left=this.options.left,this.top=this.options.top,this.right=this.options.right===null?null:this.parent.screenWidth-this.options.right,this.bottom=this.options.bottom===null?null:this.parent.screenHeight-this.options.bottom)}down(){return this.paused||this.options.allowButtons||(this.horizontal=this.vertical=null),!1}move(A){if(this.paused||A.pointerType!=="mouse"&&A.pointerId!==1||!this.options.allowButtons&&A.buttons!==0)return!1;const e=A.global.x,t=A.global.y;if(this.radiusSquared){const i=this.parent.toScreen(this.parent.center);if(Math.pow(i.x-e,2)+Math.pow(i.y-t,2)>=this.radiusSquared){const r=Math.atan2(i.y-t,i.x-e);this.options.linear?(this.horizontal=Math.round(Math.cos(r))*this.options.speed*this.reverse*(60/1e3),this.vertical=Math.round(Math.sin(r))*this.options.speed*this.reverse*(60/1e3)):(this.horizontal=Math.cos(r)*this.options.speed*this.reverse*(60/1e3),this.vertical=Math.sin(r)*this.options.speed*this.reverse*(60/1e3))}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else this.left!==null&&e<this.left?this.horizontal=Number(this.reverse)*this.options.speed*(60/1e3):this.right!==null&&e>this.right?this.horizontal=-1*this.reverse*this.options.speed*(60/1e3):(this.decelerateHorizontal(),this.horizontal=0),this.top!==null&&t<this.top?this.vertical=Number(this.reverse)*this.options.speed*(60/1e3):this.bottom!==null&&t>this.bottom?this.vertical=-1*this.reverse*this.options.speed*(60/1e3):(this.decelerateVertical(),this.vertical=0);return!1}decelerateHorizontal(){const A=this.parent.plugins.get("decelerate",!0);this.horizontal&&A&&!this.options.noDecelerate&&A.activate({x:this.horizontal*this.options.speed*this.reverse/(1e3/60)})}decelerateVertical(){const A=this.parent.plugins.get("decelerate",!0);this.vertical&&A&&!this.options.noDecelerate&&A.activate({y:this.vertical*this.options.speed*this.reverse/(1e3/60)})}up(){return this.paused||(this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null),!1}update(){if(!this.paused&&(this.horizontal||this.vertical)){const A=this.parent.center;this.horizontal&&(A.x+=this.horizontal*this.options.speed),this.vertical&&(A.y+=this.vertical*this.options.speed),this.parent.moveCenter(A),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}const dF={noDrag:!1,percent:1,center:null,factor:1,axis:"all"};class pF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"active",!1),pA(this,"pinching",!1),pA(this,"moved",!1),pA(this,"lastCenter"),this.options=Object.assign({},dF,e)}down(){return this.parent.input.count()>=2?(this.active=!0,!0):!1}isAxisX(){return["all","x"].includes(this.options.axis)}isAxisY(){return["all","y"].includes(this.options.axis)}move(A){if(this.paused||!this.active)return!1;const e=A.global.x,t=A.global.y,i=this.parent.input.touches;if(i.length>=2){const r=i[0],s=i[1],o=r.last&&s.last?Math.sqrt(Math.pow(s.last.x-r.last.x,2)+Math.pow(s.last.y-r.last.y,2)):null;if(r.id===A.pointerId?r.last={x:e,y:t,data:A}:s.id===A.pointerId&&(s.last={x:e,y:t,data:A}),o){let a;const l=new VA(r.last.x+(s.last.x-r.last.x)/2,r.last.y+(s.last.y-r.last.y)/2);this.options.center||(a=this.parent.toLocal(l));let u=Math.sqrt(Math.pow(s.last.x-r.last.x,2)+Math.pow(s.last.y-r.last.y,2));u=u===0?u=1e-10:u;const c=(1-o/u)*this.options.percent*(this.isAxisX()?this.parent.scale.x:this.parent.scale.y);this.isAxisX()&&(this.parent.scale.x+=c),this.isAxisY()&&(this.parent.scale.y+=c),this.parent.emit("zoomed",{viewport:this.parent,type:"pinch",center:l});const h=this.parent.plugins.get("clamp-zoom",!0);if(h&&h.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const f=this.parent.toGlobal(a);this.parent.x+=(l.x-f.x)*this.options.factor,this.parent.y+=(l.y-f.y)*this.options.factor,this.parent.emit("moved",{viewport:this.parent,type:"pinch"})}!this.options.noDrag&&this.lastCenter&&(this.parent.x+=(l.x-this.lastCenter.x)*this.options.factor,this.parent.y+=(l.y-this.lastCenter.y)*this.options.factor,this.parent.emit("moved",{viewport:this.parent,type:"pinch"})),this.lastCenter=l,this.moved=!0}else this.pinching||(this.parent.emit("pinch-start",this.parent),this.pinching=!0);return!0}return!1}up(){return this.pinching&&this.parent.input.touches.length<=1?(this.active=!1,this.lastCenter=null,this.pinching=!1,this.moved=!1,this.parent.emit("pinch-end",this.parent),!0):!1}}const gF={topLeft:!1,friction:.8,time:1e3,ease:"easeInOutSine",interrupt:!0,removeOnComplete:!1,removeOnInterrupt:!1,forceStart:!1};class mF extends Li{constructor(A,e,t,i={}){super(A),pA(this,"options"),pA(this,"ease"),pA(this,"x"),pA(this,"y"),pA(this,"percent"),pA(this,"snapping"),pA(this,"deltaX"),pA(this,"deltaY"),pA(this,"startX"),pA(this,"startY"),this.options=Object.assign({},gF,i),this.ease=yd(i.ease,"easeInOutSine"),this.x=e,this.y=t,this.options.forceStart&&this.snapStart()}snapStart(){this.percent=0,this.snapping={time:0};const A=this.options.topLeft?this.parent.corner:this.parent.center;this.deltaX=this.x-A.x,this.deltaY=this.y-A.y,this.startX=A.x,this.startY=A.y,this.parent.emit("snap-start",this.parent)}wheel(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("snap"),!1}down(){return this.options.removeOnInterrupt?this.parent.plugins.remove("snap"):this.options.interrupt&&(this.snapping=null),!1}up(){if(this.parent.input.count()===0){const A=this.parent.plugins.get("decelerate",!0);A&&(A.x||A.y)&&(A.percentChangeX=A.percentChangeY=this.options.friction)}return!1}update(A){if(!this.paused&&!(this.options.interrupt&&this.parent.input.count()!==0))if(this.snapping){const e=this.snapping;e.time+=A;let t,i,r;const s=this.startX,o=this.startY,a=this.deltaX,l=this.deltaY;if(e.time>this.options.time)t=!0,i=s+a,r=o+l;else{const u=this.ease(e.time,0,1,this.options.time);i=s+a*u,r=o+l*u}this.options.topLeft?this.parent.moveCorner(i,r):this.parent.moveCenter(i,r),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),t&&(this.options.removeOnComplete&&this.parent.plugins.remove("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{const e=this.options.topLeft?this.parent.corner:this.parent.center;(e.x!==this.x||e.y!==this.y)&&this.snapStart()}}}const vF={width:0,height:0,time:1e3,ease:"easeInOutSine",center:null,interrupt:!0,removeOnComplete:!1,removeOnInterrupt:!1,forceStart:!1,noMove:!1};class yF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"ease"),pA(this,"xScale"),pA(this,"yScale"),pA(this,"xIndependent"),pA(this,"yIndependent"),pA(this,"snapping"),this.options=Object.assign({},vF,e),this.ease=yd(this.options.ease),this.xIndependent=!1,this.yIndependent=!1,this.xScale=0,this.yScale=0,this.options.width>0&&(this.xScale=A.screenWidth/this.options.width,this.xIndependent=!0),this.options.height>0&&(this.yScale=A.screenHeight/this.options.height,this.yIndependent=!0),this.xScale=this.xIndependent?this.xScale:this.yScale,this.yScale=this.yIndependent?this.yScale:this.xScale,this.options.time===0?(A.container.scale.x=this.xScale,A.container.scale.y=this.yScale,this.options.removeOnComplete&&this.parent.plugins.remove("snap-zoom")):e.forceStart&&this.createSnapping()}createSnapping(){const A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,t=this.parent.screenWidth/this.xScale,i=this.parent.screenHeight/this.yScale;this.snapping={time:0,startX:A,startY:e,deltaX:t-A,deltaY:i-e},this.parent.emit("snap-zoom-start",this.parent)}resize(){this.snapping=null,this.options.width>0&&(this.xScale=this.parent.screenWidth/this.options.width),this.options.height>0&&(this.yScale=this.parent.screenHeight/this.options.height),this.xScale=this.xIndependent?this.xScale:this.yScale,this.yScale=this.yIndependent?this.yScale:this.xScale}wheel(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("snap-zoom"),!1}down(){return this.options.removeOnInterrupt?this.parent.plugins.remove("snap-zoom"):this.options.interrupt&&(this.snapping=null),!1}update(A){if(this.paused||this.options.interrupt&&this.parent.input.count()!==0)return;let e;if(!this.options.center&&!this.options.noMove&&(e=this.parent.center),!this.snapping)(this.parent.scale.x!==this.xScale||this.parent.scale.y!==this.yScale)&&this.createSnapping();else if(this.snapping){const t=this.snapping;if(t.time+=A,t.time>=this.options.time)this.parent.scale.set(this.xScale,this.yScale),this.options.removeOnComplete&&this.parent.plugins.remove("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{const r=this.snapping,s=this.ease(r.time,r.startX,r.deltaX,this.options.time),o=this.ease(r.time,r.startY,r.deltaY,this.options.time);this.parent.scale.x=this.parent.screenWidth/s,this.parent.scale.y=this.parent.screenHeight/o}const i=this.parent.plugins.get("clamp-zoom",!0);i&&i.clamp(),this.options.noMove||(this.options.center?this.parent.moveCenter(this.options.center):this.parent.moveCenter(e))}}resume(){this.snapping=null,super.resume()}}const wF={percent:.1,smooth:!1,interrupt:!0,reverse:!1,center:null,lineHeight:20,axis:"all",keyToPress:null,trackpadPinch:!1,wheelZoom:!0};class CF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"smoothing"),pA(this,"smoothingCenter"),pA(this,"smoothingCount"),pA(this,"keyIsPressed"),this.options=Object.assign({},wF,e),this.keyIsPressed=!1,this.options.keyToPress&&this.handleKeyPresses(this.options.keyToPress)}handleKeyPresses(A){window.addEventListener("keydown",e=>{A.includes(e.code)&&(this.keyIsPressed=!0)}),window.addEventListener("keyup",e=>{A.includes(e.code)&&(this.keyIsPressed=!1)})}checkKeyPress(){return!this.options.keyToPress||this.keyIsPressed}down(){return this.options.interrupt&&(this.smoothing=null),!1}isAxisX(){return["all","x"].includes(this.options.axis)}isAxisY(){return["all","y"].includes(this.options.axis)}update(){if(this.smoothing){const A=this.smoothingCenter,e=this.smoothing;let t;this.options.center||(t=this.parent.toLocal(A)),this.isAxisX()&&(this.parent.scale.x+=e.x),this.isAxisY()&&(this.parent.scale.y+=e.y),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const i=this.parent.plugins.get("clamp-zoom",!0);if(i&&i.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const r=this.parent.toGlobal(t);this.parent.x+=A.x-r.x,this.parent.y+=A.y-r.y}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.smoothingCount++,this.smoothingCount>=this.options.smooth&&(this.smoothing=null)}}pinch(A){if(this.paused)return;const e=this.parent.input.getPointerPosition(A),t=-A.deltaY*(A.deltaMode?this.options.lineHeight:1)/200,i=Math.pow(2,(1+this.options.percent)*t);let r;this.options.center||(r=this.parent.toLocal(e)),this.isAxisX()&&(this.parent.scale.x*=i),this.isAxisY()&&(this.parent.scale.y*=i),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const s=this.parent.plugins.get("clamp-zoom",!0);if(s&&s.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const o=this.parent.toGlobal(r);this.parent.x+=e.x-o.x,this.parent.y+=e.y-o.y}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.emit("wheel-start",{event:A,viewport:this.parent})}wheel(A){if(this.paused||!this.checkKeyPress())return!1;if(A.ctrlKey&&this.options.trackpadPinch)this.pinch(A);else if(this.options.wheelZoom){const e=this.parent.input.getPointerPosition(A),t=(this.options.reverse?-1:1)*-A.deltaY*(A.deltaMode?this.options.lineHeight:1)/500,i=Math.pow(2,(1+this.options.percent)*t);if(this.options.smooth){const r={x:this.smoothing?this.smoothing.x*(this.options.smooth-this.smoothingCount):0,y:this.smoothing?this.smoothing.y*(this.options.smooth-this.smoothingCount):0};this.smoothing={x:((this.parent.scale.x+r.x)*i-this.parent.scale.x)/this.options.smooth,y:((this.parent.scale.y+r.y)*i-this.parent.scale.y)/this.options.smooth},this.smoothingCount=0,this.smoothingCenter=e}else{let r;this.options.center||(r=this.parent.toLocal(e)),this.isAxisX()&&(this.parent.scale.x*=i),this.isAxisY()&&(this.parent.scale.y*=i),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const s=this.parent.plugins.get("clamp-zoom",!0);if(s&&s.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const o=this.parent.toGlobal(r);this.parent.x+=e.x-o.x,this.parent.y+=e.y-o.y}}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.emit("wheel-start",{event:A,viewport:this.parent})}return!this.parent.options.passiveWheel}}class xF{constructor(A){pA(this,"viewport"),pA(this,"clickedAvailable"),pA(this,"isMouseDown"),pA(this,"last"),pA(this,"wheelFunction"),pA(this,"touches"),this.viewport=A,this.touches=[],this.addListeners()}addListeners(){this.viewport.eventMode="static",this.viewport.forceHitArea||(this.viewport.hitArea=new ee(0,0,this.viewport.worldWidth,this.viewport.worldHeight)),this.viewport.on("pointerdown",this.down,this),this.viewport.options.allowPreserveDragOutside?this.viewport.on("globalpointermove",this.move,this):this.viewport.on("pointermove",this.move,this),this.viewport.on("pointerup",this.up,this),this.viewport.on("pointerupoutside",this.up,this),this.viewport.on("pointercancel",this.up,this),this.viewport.options.allowPreserveDragOutside||this.viewport.on("pointerleave",this.up,this),this.wheelFunction=A=>this.handleWheel(A),this.viewport.options.events.domElement.addEventListener("wheel",this.wheelFunction,{passive:this.viewport.options.passiveWheel}),this.isMouseDown=!1}destroy(){this.viewport.options.events.domElement.removeEventListener("wheel",this.wheelFunction)}down(A){if(!(this.viewport.pause||!this.viewport.worldVisible)){if(A.pointerType==="mouse"?this.isMouseDown=!0:this.get(A.pointerId)||this.touches.push({id:A.pointerId,last:null}),this.count()===1){this.last=A.global.clone();const e=this.viewport.plugins.get("decelerate",!0),t=this.viewport.plugins.get("bounce",!0);(!e||!e.isActive())&&(!t||!t.isActive())?this.clickedAvailable=!0:this.clickedAvailable=!1}else this.clickedAvailable=!1;this.viewport.plugins.down(A)&&this.viewport.options.stopPropagation&&A.stopPropagation()}}clear(){this.isMouseDown=!1,this.touches=[],this.last=null}checkThreshold(A){return Math.abs(A)>=this.viewport.threshold}move(A){if(this.viewport.pause||!this.viewport.worldVisible)return;const e=this.viewport.plugins.move(A);if(this.clickedAvailable&&this.last){const t=A.global.x-this.last.x,i=A.global.y-this.last.y;(this.checkThreshold(t)||this.checkThreshold(i))&&(this.clickedAvailable=!1)}e&&this.viewport.options.stopPropagation&&A.stopPropagation()}up(A){if(this.viewport.pause||!this.viewport.worldVisible)return;A.pointerType==="mouse"&&(this.isMouseDown=!1),A.pointerType!=="mouse"&&this.remove(A.pointerId);const e=this.viewport.plugins.up(A);this.clickedAvailable&&this.count()===0&&this.last&&(this.viewport.emit("clicked",{event:A,screen:this.last,world:this.viewport.toWorld(this.last),viewport:this.viewport}),this.clickedAvailable=!1),e&&this.viewport.options.stopPropagation&&A.stopPropagation()}getPointerPosition(A){const e=new VA;return this.viewport.options.events.mapPositionToPoint(e,A.clientX,A.clientY),e}handleWheel(A){if(this.viewport.pause||!this.viewport.worldVisible)return;const e=this.viewport.toLocal(this.getPointerPosition(A));this.viewport.left<=e.x&&e.x<=this.viewport.right&&this.viewport.top<=e.y&&e.y<=this.viewport.bottom&&this.viewport.plugins.wheel(A)&&!this.viewport.options.passiveWheel&&A.preventDefault()}pause(){this.touches=[],this.isMouseDown=!1}get(A){for(const e of this.touches)if(e.id===A)return e;return null}remove(A){for(let e=0;e<this.touches.length;e++)if(this.touches[e].id===A){this.touches.splice(e,1);return}}count(){return(this.isMouseDown?1:0)+this.touches.length}}const Nc=["drag","pinch","wheel","follow","mouse-edges","decelerate","animate","bounce","snap-zoom","clamp-zoom","snap","clamp"];class IF{constructor(A){pA(this,"plugins"),pA(this,"list"),pA(this,"viewport"),this.viewport=A,this.list=[],this.plugins={}}add(A,e,t=Nc.length){const i=this.plugins[A];i&&i.destroy(),this.plugins[A]=e;const r=Nc.indexOf(A);r!==-1&&Nc.splice(r,1),Nc.splice(t,0,A),this.sort()}get(A,e){var t;return e&&(t=this.plugins[A])!=null&&t.paused?null:this.plugins[A]}update(A){for(const e of this.list)e.update(A)}resize(){for(const A of this.list)A.resize()}reset(){for(const A of this.list)A.reset()}removeAll(){this.list.forEach(A=>{A.destroy()}),this.plugins={},this.sort()}remove(A){var e;this.plugins[A]&&((e=this.plugins[A])==null||e.destroy(),delete this.plugins[A],this.viewport.emit("plugin-remove",A),this.sort())}pause(A){var e;(e=this.plugins[A])==null||e.pause()}resume(A){var e;(e=this.plugins[A])==null||e.resume()}sort(){this.list=[];for(const A of Nc)this.plugins[A]&&this.list.push(this.plugins[A])}down(A){let e=!1;for(const t of this.list)t.down(A)&&(e=!0);return e}move(A){let e=!1;for(const t of this.viewport.plugins.list)t.move(A)&&(e=!0);return e}up(A){let e=!1;for(const t of this.list)t.up(A)&&(e=!0);return e}wheel(A){let e=!1;for(const t of this.list)t.wheel(A)&&(e=!0);return e}}const bF={screenWidth:window.innerWidth,screenHeight:window.innerHeight,worldWidth:null,worldHeight:null,threshold:5,passiveWheel:!0,stopPropagation:!1,forceHitArea:null,noTicker:!1,disableOnContextMenu:!1,ticker:Xt.shared,allowPreserveDragOutside:!1};class _F extends bi{constructor(A){super(),pA(this,"moving"),pA(this,"screenWidth"),pA(this,"screenHeight"),pA(this,"threshold"),pA(this,"input"),pA(this,"plugins"),pA(this,"zooming"),pA(this,"lastViewport"),pA(this,"options"),pA(this,"_dirty"),pA(this,"_forceHitArea"),pA(this,"_hitAreaDefault"),pA(this,"_pause"),pA(this,"tickerFunction"),pA(this,"_worldWidth"),pA(this,"_worldHeight"),pA(this,"_disableOnContextMenu",e=>e.preventDefault()),this.options={...bF,...A},this.screenWidth=this.options.screenWidth,this.screenHeight=this.options.screenHeight,this._worldWidth=this.options.worldWidth,this._worldHeight=this.options.worldHeight,this.forceHitArea=this.options.forceHitArea,this.threshold=this.options.threshold,this.options.disableOnContextMenu&&this.options.events.domElement.addEventListener("contextmenu",this._disableOnContextMenu),this.options.noTicker||(this.tickerFunction=()=>this.update(this.options.ticker.elapsedMS),this.options.ticker.add(this.tickerFunction)),this.input=new xF(this),this.plugins=new IF(this)}destroy(A){!this.options.noTicker&&this.tickerFunction&&this.options.ticker.remove(this.tickerFunction),this.options.disableOnContextMenu&&this.options.events.domElement.removeEventListener("contextmenu",this._disableOnContextMenu),this.input.destroy(),super.destroy(A)}update(A){this.pause||(this.plugins.update(A),this.lastViewport&&(this.lastViewport.x!==this.x||this.lastViewport.y!==this.y?this.moving=!0:this.moving&&(this.emit("moved-end",this),this.moving=!1),this.lastViewport.scaleX!==this.scale.x||this.lastViewport.scaleY!==this.scale.y?this.zooming=!0:this.zooming&&(this.emit("zoomed-end",this),this.zooming=!1)),this.forceHitArea||(this._hitAreaDefault=new ee(this.left,this.top,this.worldScreenWidth,this.worldScreenHeight),this.hitArea=this._hitAreaDefault),this._dirty=this._dirty||!this.lastViewport||this.lastViewport.x!==this.x||this.lastViewport.y!==this.y||this.lastViewport.scaleX!==this.scale.x||this.lastViewport.scaleY!==this.scale.y,this.lastViewport={x:this.x,y:this.y,scaleX:this.scale.x,scaleY:this.scale.y},this.emit("frame-end",this))}resize(A=window.innerWidth,e=window.innerHeight,t,i){this.screenWidth=A,this.screenHeight=e,typeof t<"u"&&(this._worldWidth=t),typeof i<"u"&&(this._worldHeight=i),this.plugins.resize(),this.dirty=!0}get worldWidth(){return this._worldWidth?this._worldWidth:this.width/this.scale.x}set worldWidth(A){this._worldWidth=A,this.plugins.resize()}get worldHeight(){return this._worldHeight?this._worldHeight:this.height/this.scale.y}set worldHeight(A){this._worldHeight=A,this.plugins.resize()}getVisibleBounds(){return new ee(this.left,this.top,this.worldScreenWidth,this.worldScreenHeight)}toWorld(A,e){return arguments.length===2?this.toLocal(new VA(A,e)):this.toLocal(A)}toScreen(A,e){return arguments.length===2?this.toGlobal(new VA(A,e)):this.toGlobal(A)}get worldScreenWidth(){return this.screenWidth/this.scale.x}get worldScreenHeight(){return this.screenHeight/this.scale.y}get screenWorldWidth(){return this.worldWidth*this.scale.x}get screenWorldHeight(){return this.worldHeight*this.scale.y}get center(){return new VA(this.worldScreenWidth/2-this.x/this.scale.x,this.worldScreenHeight/2-this.y/this.scale.y)}set center(A){this.moveCenter(A)}moveCenter(...A){let e,t;typeof A[0]=="number"?(e=A[0],t=A[1]):(e=A[0].x,t=A[0].y);const i=(this.worldScreenWidth/2-e)*this.scale.x,r=(this.worldScreenHeight/2-t)*this.scale.y;return(this.x!==i||this.y!==r)&&(this.position.set(i,r),this.plugins.reset(),this.dirty=!0),this}get corner(){return new VA(-this.x/this.scale.x,-this.y/this.scale.y)}set corner(A){this.moveCorner(A)}moveCorner(...A){let e,t;return A.length===1?(e=-A[0].x*this.scale.x,t=-A[0].y*this.scale.y):(e=-A[0]*this.scale.x,t=-A[1]*this.scale.y),(e!==this.x||t!==this.y)&&(this.position.set(e,t),this.plugins.reset(),this.dirty=!0),this}get screenWidthInWorldPixels(){return this.screenWidth/this.scale.x}get screenHeightInWorldPixels(){return this.screenHeight/this.scale.y}findFitWidth(A){return this.screenWidth/A}findFitHeight(A){return this.screenHeight/A}findFit(A,e){const t=this.screenWidth/A,i=this.screenHeight/e;return Math.min(t,i)}findCover(A,e){const t=this.screenWidth/A,i=this.screenHeight/e;return Math.max(t,i)}fitWidth(A=this.worldWidth,e,t=!0,i){let r;e&&(r=this.center),this.scale.x=this.screenWidth/A,t&&(this.scale.y=this.scale.x);const s=this.plugins.get("clamp-zoom",!0);return!i&&s&&s.clamp(),e&&r&&this.moveCenter(r),this}fitHeight(A=this.worldHeight,e,t=!0,i){let r;e&&(r=this.center),this.scale.y=this.screenHeight/A,t&&(this.scale.x=this.scale.y);const s=this.plugins.get("clamp-zoom",!0);return!i&&s&&s.clamp(),e&&r&&this.moveCenter(r),this}fitWorld(A){let e;A&&(e=this.center),this.scale.x=this.screenWidth/this.worldWidth,this.scale.y=this.screenHeight/this.worldHeight,this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y;const t=this.plugins.get("clamp-zoom",!0);return t&&t.clamp(),A&&e&&this.moveCenter(e),this}fit(A,e=this.worldWidth,t=this.worldHeight){let i;A&&(i=this.center),this.scale.x=this.screenWidth/e,this.scale.y=this.screenHeight/t,this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y;const r=this.plugins.get("clamp-zoom",!0);return r&&r.clamp(),A&&i&&this.moveCenter(i),this}setZoom(A,e){let t;e&&(t=this.center),this.scale.set(A);const i=this.plugins.get("clamp-zoom",!0);return i&&i.clamp(),e&&t&&this.moveCenter(t),this}zoomPercent(A,e){return this.setZoom(this.scale.x+this.scale.x*A,e)}zoom(A,e){return this.fitWidth(A+this.worldScreenWidth,e),this}get scaled(){return this.scale.x}set scaled(A){this.setZoom(A,!0)}snapZoom(A){return this.plugins.add("snap-zoom",new yF(this,A)),this}OOB(){return{left:this.left<0,right:this.right>this.worldWidth,top:this.top<0,bottom:this.bottom>this.worldHeight,cornerPoint:new VA(this.worldWidth*this.scale.x-this.screenWidth,this.worldHeight*this.scale.y-this.screenHeight)}}get right(){return-this.x/this.scale.x+this.worldScreenWidth}set right(A){this.x=-A*this.scale.x+this.screenWidth,this.plugins.reset()}get left(){return-this.x/this.scale.x}set left(A){this.x=-A*this.scale.x,this.plugins.reset()}get top(){return-this.y/this.scale.y}set top(A){this.y=-A*this.scale.y,this.plugins.reset()}get bottom(){return-this.y/this.scale.y+this.worldScreenHeight}set bottom(A){this.y=-A*this.scale.y+this.screenHeight,this.plugins.reset()}get dirty(){return!!this._dirty}set dirty(A){this._dirty=A}get forceHitArea(){return this._forceHitArea}set forceHitArea(A){A?(this._forceHitArea=A,this.hitArea=A):(this._forceHitArea=null,this.hitArea=new ee(0,0,this.worldWidth,this.worldHeight))}drag(A){return this.plugins.add("drag",new lF(this,A)),this}clamp(A){return this.plugins.add("clamp",new iF(this,A)),this}decelerate(A){return this.plugins.add("decelerate",new oF(this,A)),this}bounce(A){return this.plugins.add("bounce",new eF(this,A)),this}pinch(A){return this.plugins.add("pinch",new pF(this,A)),this}snap(A,e,t){return this.plugins.add("snap",new mF(this,A,e,t)),this}follow(A,e){return this.plugins.add("follow",new hF(this,A,e)),this}wheel(A){return this.plugins.add("wheel",new CF(this,A)),this}animate(A){return this.plugins.add("animate",new $K(this,A)),this}clampZoom(A){return this.plugins.add("clamp-zoom",new rF(this,A)),this}mouseEdges(A){return this.plugins.add("mouse-edges",new fF(this,A)),this}get pause(){return!!this._pause}set pause(A){this._pause=A,this.lastViewport=null,this.moving=!1,this.zooming=!1,A&&this.input.pause()}ensureVisible(A,e,t,i,r){r&&(t>this.worldScreenWidth||i>this.worldScreenHeight)&&(this.fit(!0,t,i),this.emit("zoomed",{viewport:this,type:"ensureVisible"}));let s=!1;A<this.left?(this.left=A,s=!0):A+t>this.right&&(this.right=A+t,s=!0),e<this.top?(this.top=e,s=!0):e+i>this.bottom&&(this.bottom=e+i,s=!0),s&&this.emit("moved",{viewport:this,type:"ensureVisible"})}}const SF="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAIrSURBVHic7dWhEcQwAAPBJEW4//bsJvzwg446YLcCkRvdc8598RljjNMTeHlOD4AvEwgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUC499779Aj+1lqnJ/DiQSAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIPwAhCgMRcz+Nz0AAAAASUVORK5CYII=";var MF=Object.defineProperty,PF=Object.getOwnPropertyDescriptor,$a=(n,A,e,t)=>{for(var i=t>1?void 0:t?PF(A,e):A,r=n.length-1,s;r>=0;r--)(s=n[r])&&(i=(t?s(A,e,i):s(i))||i);return t&&i&&MF(A,e,i),i};ue.Cropper=class extends Gr{constructor(){super(),this._domBoundingRect={x:0,y:0,width:0,height:0},this.app=new N2({backgroundAlpha:0,autoDensity:!0,resolution:2}),this.viewport=new _F({events:this.app.renderer.events,worldWidth:250,worldHeight:250}),this.imageSize={width:0,height:0},this.logoSize={width:0,height:0},this._imageUrl="",this._canvasScale=1,this.texture=new lt(this.app.view),this._timer=0,this._loading=!1,this.pathD="",this.getConfigs=()=>{const{screenWidth:A,screenHeight:e}=this.viewport;if(!this._sprite)return{canvasWidth:A,canvasHeight:e,scaleX:1,scaleY:1,ox:0,oy:0,x:0,y:0,url:this._imageUrl};const t=A/this._sprite.width,i=e/this._sprite.height,r=this.viewport.scale.x/t,s=this.viewport.scale.x/i,o=this._sprite.toGlobal(new uA(-this._sprite.width/2,-this._sprite.height/2)),a=-o.x/(this._sprite.width*this.viewport.scale.x),l=-o.y/(this._sprite.height*this.viewport.scale.y);return{canvasWidth:A,canvasHeight:e,scaleX:r,scaleY:s,ox:a,oy:l,x:this.viewport.position.x,y:this.viewport.position.y,url:this._imageUrl}},this._onChanged=async()=>{if(!this.imageSize.width||!this.imageSize.height||!this.app.view.toDataURL)return;const A=this.app.view.toDataURL("image/png",.75),e=this.app.renderer.gl,{screenWidth:t,screenHeight:i}=this.viewport;if(this._timer&&clearTimeout(this._timer),e){const r=this.app.renderer.width,s=this.app.renderer.height,o=new Uint8Array(r*s*4);e.readPixels(0,0,r,s,e.RGBA,e.UNSIGNED_BYTE,o);let a=r,l=0,u=s,c=0;for(let g=0;g<s;g++)for(let y=0;y<r;y++){const v=(g*r+y)*4;o[v+3]>0&&(a=Math.min(a,y),l=Math.max(l,y),u=Math.min(u,g),c=Math.max(c,g))}const h=this.app.renderer.view.getBoundingClientRect(),f={x:a,y:u,width:l-a+1,height:c-u+1};(a>l||u>c)&&console.log("没有非透明区域"),this.axiosX&&(this.axiosX.style.display="none"),this.axiosY&&(this.axiosY.style.display="none");const p=2,m=t/2,d=i/2;if(h){const g={x:f.x*(h.width/this.app.renderer.width),y:(this.app.renderer.height-f.y-f.height)*(h.height/this.app.renderer.height),width:f.width*(h.width/this.app.renderer.width),height:f.height*(h.height/this.app.renderer.height)};this._domBoundingRect=g,this.boundRect&&(this.boundRect.style.left=`${g.x}px`,this.boundRect.style.top=`${g.y}px`,this.boundRect.style.width=`${g.width}px`,this.boundRect.style.height=`${g.height}px`);const y=g.x+g.width/2,v=g.y+g.height/2,w=m-y,C=d-v;Math.abs(w)<p&&(this.viewport.position.x+=w,this.axiosY&&(this.axiosY.style.display="block")),Math.abs(C)<p&&(this.viewport.position.y+=C,this.axiosX&&(this.axiosX.style.display="block"))}else Math.abs(this.viewport.position.x-m)<p&&(this.viewport.position.x=m,this.axiosY&&(this.axiosY.style.display="block")),Math.abs(this.viewport.position.y-d)<p&&(this.viewport.position.y=d,this.axiosX&&(this.axiosX.style.display="block"));this._timer=window.setTimeout(()=>{this.axiosX&&(this.axiosX.style.display="none"),this.axiosY&&(this.axiosY.style.display="none")},600)}this.dispatchEvent(new CustomEvent("image-change",{detail:{image:A},bubbles:!0,composed:!0}))},this._wheelEvent=A=>{A.preventDefault()},this.updateConfigs=async({canvasWidth:A,x:e,y:t,scaleX:i,url:r})=>{var a;const{screenWidth:s}=this.viewport;this._canvasScale=s/A,await this.add(r,this.logoSize);const o=i*s/(((a=this._sprite)==null?void 0:a.width)||1);this.viewport.scale.set(o*this._canvasScale),this.viewport.position.set(e*this._canvasScale,t*this._canvasScale)},this.app.stage.addChild(this.viewport),this.viewport.drag({}).pinch().wheel().decelerate({friction:0,bounce:1}).on("zoomed-end",this._onChanged).on("moved-end",this._onChanged),this.app.view.addEventListener("wheel",this._wheelEvent,{passive:!1})}get supports(){return["png","jpg","jpeg","svg","webp"]}get loading(){return this._loading}get canvas(){return this.app.view}get imageScale(){if(!this._sprite)return{x:0,y:0};const{screenWidth:A,screenHeight:e}=this.viewport,t=this.viewport.scale.x,i=this._sprite.width*t/2,r=this._sprite.height*t/2,s=this._domBoundingRect.width/i*(i/A),o=this._domBoundingRect.height/r*(r/e);return{x:s,y:o}}get imageRealSize(){const{x:A,y:e}=this.imageScale;let{width:t,height:i}=this.logoSize;const r=Math.max(t,i);return t=r*A,i=r*e,{width:t,height:i}}resize(A,e){this.app.renderer.resize(A,e),this.viewport.resize(A,e)}firstUpdated(A){var e;super.firstUpdated(A),this.container&&((e=this.container)==null||e.append(this.app.view),this.app.resizeTo=this.container)}setUV(A){const{screenWidth:e,screenHeight:t}=this.viewport,i=A.attributes.uv,r=A.index;if(!r){this.pathD="";return}let s=[];for(let a=0;a<r.count;a+=3){const l=r.getX(a),u=r.getX(a+1),c=r.getX(a+2),h=[i.getX(l)*e,i.getY(l)*t],f=[i.getX(u)*e,i.getY(u)*t],p=[i.getX(c)*e,i.getY(c)*t];s.push(h,f,p)}let o="";s.forEach((a,l)=>{l%3===0?o+=`M${a[0]},${a[1]} `:o+=`L${a[0]},${a[1]} `,l%3===2&&(o+="Z ")}),s=[],this.pathD=o}async add(A,e){this.clear(),this._imageUrl=A,this.logoSize=e,this._loading=!0;const t=await GA.fromURL(A);this._sprite=new js(t),this.viewport.addChild(this._sprite),this.imageSize.width=this._sprite.texture.width,this.imageSize.height=this._sprite.texture.height,this.fit(),this._loading=!1}clear(){var A,e;(A=this._sprite)==null||A.texture.destroy(!0),(e=this._sprite)==null||e.removeFromParent(),this.boundRect&&(this.boundRect.style.left="0px",this.boundRect.style.top="0px",this.boundRect.style.width="0px",this.boundRect.style.height="0px")}fit(){if(!this._sprite)return;this.viewport.scale.set(1,1),this._sprite.anchor.set(.5,.5),this.viewport.moveCenter(this._sprite.position.x,this._sprite.position.y);const A=this.viewport.screenWidth,e=this.viewport.screenHeight,t=this._sprite.width/A,i=this._sprite.height/e,r=Math.max(t,i);this.viewport.scale.set(1/r,1/r)}disconnectedCallback(){super.disconnectedCallback(),this.clear(),this.viewport.destroy({children:!0,texture:!0,baseTexture:!0}),this.viewport.off("zoomed"),this.viewport.off("moved"),this.viewport.off("moved-end"),this.app.view.removeEventListener("wheel",this._wheelEvent),this.app.destroy(!0)}render(){const{screenWidth:A,screenHeight:e}=this.viewport;return $i`
9867
+ }`),this.camera.position.set(10,6,-10),this.camera.lookAt(new O);const{tiles:e}=q9();this.pathTracer=new tO(this.renderer),this.pathTracer.filterGlossyFactor=.6,this.pathTracer.renderScale=window.devicePixelRatio,this.pathTracer.bounces=10,this.pathTracer.transmissiveBounces=8,this.pathTracer.tiles.set(e,e),this.pathTracer.fadeDuration=0,this.pathTracer.setBVHWorker(new MK),this.controls.addEventListener("change",()=>{var t;this.sampleCount=0,(t=this.pathTracer)==null||t.updateCamera()}),this._composer=new nO(this.renderer),this._composer.setPixelRatio(window.devicePixelRatio),this._composer.addPass(new oE(this.scene,this.camera)),this._composer.addPass(new uE),this._outlinePass=new Hn(new uA(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePass.visibleEdgeColor.set(26367),this._outlinePass.edgeThickness=.5,this._outlinePass.hiddenEdgeColor.set(26367),this._outlinePass.edgeStrength=3,this._outlinePass.edgeGlow=0,this._composer.addPass(this._outlinePass),this._outlinePassError=new Hn(new uA(window.innerWidth,window.innerHeight),this.scene,this.camera),this._outlinePassError.visibleEdgeColor.set(16711680),this._outlinePassError.edgeThickness=.5,this._outlinePassError.hiddenEdgeColor.set(16711680),this._outlinePassError.edgeStrength=3,this._outlinePassError.edgeGlow=0,this._composer.addPass(this._outlinePassError),this._composer.renderTarget1.texture.colorSpace=je,this._composer.renderTarget2.texture.colorSpace=je,this._fxaaPass=new J1(aE),this._composer.addPass(this._fxaaPass),this._container.add(this.amr),this.scene.add(this._container),this.ticker(),this._loadEnv(),this._initEvents(),this._ground.rotateX(-Math.PI/2),this.scene.add(this._ground)}get usePathTracing(){return this._usePathTracing}set usePathTracing(A){A?(this.amr&&(this.amr.bodyOpacity=1),this.amr.slots.forEach(e=>e.hide()),this.amr.controllers.forEach(e=>e.hide()),this.lines.hide(),this.amr.sizeBox.hide(),this.amr.goods.forEach(e=>e.hide()),this.pathTracer.renderToCanvas=!0):(this.amr.sizeBox.show(),this.amr.goods.forEach(e=>e.show()),this.amr.slots.forEach(e=>e.show()),this.amr.controllers.forEach(e=>e.show()),this.lines.show(),this.amr&&this.amr.opacityCache!==void 0?(this.amr.bodyOpacity=this.amr.opacityCache,this.amr.opacityCache=void 0):this.amr&&(this.amr.bodyOpacity=1),this.pathTracer.reset(),this._ground.visible=!1,this.scene.background=null),this._usePathTracing=A,this.controls.dampingFactor=A?1:MS,this.sampleCount=0}get fpsAverage(){return bb(this._fpsCache)}showState(){this.stats.dom.style.display="block"}hideState(){this.stats.dom.style.display="none"}_loadEnv(){new iE(new R1).load(mk,e=>{e.mapping=eo,e.minFilter=we,e.magFilter=we,e.colorSpace=je,e.format=_e,e.needsUpdate=!0,this._usePathTracing||(this.scene.environment=e,this.overlayScene.environment=e,this.scene.environmentRotation.y=Math.PI*.1,this.scene.environmentIntensity=1,this.overlayScene.environmentIntensity=1),this.pathTracer.updateEnvironment()},()=>{},()=>{})}_initEvents(){window.addEventListener("drag",this._drag),window.addEventListener("dragend",this._dragend),document.addEventListener("wheel",this._detectTrackpad),window.addEventListener("pointermove",this._pointermove),this.renderer.domElement.addEventListener("pointerdown",this._pointerdown)}async generateBVH(){this.pathTracer.pausePathTracing=!1,this.amr.slots.forEach(A=>A.hide()),this.lines.hide(),this.amr&&(this.amr.opacityCache=this.amr.bodyOpacity,this.amr.bodyOpacity=1),this.usePathTracing=!0,this.pathTracer.setScene(this.scene,this.camera)}download(){return this.renderer.domElement.toDataURL("image/png")}clearAMR(){this.amr.clean(),this.usePathTracing=!1,this.lines.clear()}async exportAMR(){const A=this._container.clone(!0);return A.traverse(e=>{e.dispose&&(e.dispose(),e.removeFromParent())}),await Hb.parseAsync(A,{onlyVisible:!0,binary:!0})}async addAMR(A){this.amr.init(this),await this.amr.load(A),this.amr.addEventListener("shape-key-changed",(e,t)=>{this.pathTracer.reset(),this.sampleCount=0,this.pathTracer.setScene(this.scene,this.camera),this.overlayScene.traverse(i=>{if(!Object.keys(i.morphTargetDictionary||{}).includes(e))return;let r=t;i.userData[`origin_${e}`]&&(r-=i.userData[`origin_${e}`]);const s=i.morphTargetDictionary[e];i.morphTargetInfluences&&(i.morphTargetInfluences[s]=r),i instanceof Pe&&i.geometry.translate(0,0,1e-5)})}),this.amr.logos.forEach(e=>{this.overlayScene.add(e.target)})}generateEdges(){this._container.traverse(A=>{if(A instanceof Pe){const e=A.geometry.clone(),t=GK.generate(e);let i=t.next();for(;!i.done;)i=t.next();const r=new bl(i.value,new Bh({color:3355443}));r.position.z=-1.4,this.add(r),e.dispose()}})}select(A){typeof A=="string"||(Array.isArray(A)?this._outlinePass.selectedObjects=[...A]:this._outlinePass.selectedObjects=[A])}appendTo(A){A.append(this.renderer.domElement),A.append(this.stats.dom),A.append(this.lines),A.append(this.css2dRenderer.domElement),this.stats.dom.style.bottom="0",this.stats.dom.style.top="auto",this.resize(),this._resizeObserver=new ResizeObserver(this.resize.bind(this)),this._resizeObserver.observe(A)}add(A){this._container.add(A)}updatePosition(){this.lines.forceUpdate()}destroy(){var e,t;this.amr.destroy(),xs.removeAll(),this.stats.dom.remove(),this._emitter.removeAllListeners(),(e=this._fitAnimation)==null||e.stop(),window.removeEventListener("drag",this._drag),document.removeEventListener("wheel",this._detectTrackpad),window.removeEventListener("pointermove",this._pointermove),this.renderer.domElement.removeEventListener("pointerdown",this._pointerdown);const A=this.renderer.domElement.parentElement;A&&((t=this._resizeObserver)==null||t.unobserve(A)),this.controls.dispose(),this.renderer.dispose(),this._composer.dispose(),this.scene.traverse(i=>{var r;i instanceof Pe?(i.geometry.dispose(),Array.isArray(i.material)?i.material.forEach(s=>s.dispose()):i.material&&i.material.dispose()):i instanceof jf?i.dispose():(r=i.dispose)==null||r.call(i),i.removeFromParent()})}}var ZK=Object.defineProperty,XK=(n,A,e)=>A in n?ZK(n,A,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[A]=e,pA=(n,A,e)=>(XK(n,typeof A!="symbol"?A+"":A,e),e);class Li{constructor(A){pA(this,"parent"),pA(this,"paused"),this.parent=A,this.paused=!1}destroy(){}down(A){return!1}move(A){return!1}up(A){return!1}wheel(A){return!1}update(A){}resize(){}reset(){}pause(){this.paused=!0}resume(){this.paused=!1}}var QK=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},PS={exports:{}};(function(n,A){(function(){var e,t;t=function(i){return n.exports=i},e={linear:function(i,r,s,o){return s*i/o+r},easeInQuad:function(i,r,s,o){return s*(i/=o)*i+r},easeOutQuad:function(i,r,s,o){return-s*(i/=o)*(i-2)+r},easeInOutQuad:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i+r:-s/2*(--i*(i-2)-1)+r},easeInCubic:function(i,r,s,o){return s*(i/=o)*i*i+r},easeOutCubic:function(i,r,s,o){return s*((i=i/o-1)*i*i+1)+r},easeInOutCubic:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i+r:s/2*((i-=2)*i*i+2)+r},easeInQuart:function(i,r,s,o){return s*(i/=o)*i*i*i+r},easeOutQuart:function(i,r,s,o){return-s*((i=i/o-1)*i*i*i-1)+r},easeInOutQuart:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i*i+r:-s/2*((i-=2)*i*i*i-2)+r},easeInQuint:function(i,r,s,o){return s*(i/=o)*i*i*i*i+r},easeOutQuint:function(i,r,s,o){return s*((i=i/o-1)*i*i*i*i+1)+r},easeInOutQuint:function(i,r,s,o){return(i/=o/2)<1?s/2*i*i*i*i*i+r:s/2*((i-=2)*i*i*i*i+2)+r},easeInSine:function(i,r,s,o){return-s*Math.cos(i/o*(Math.PI/2))+s+r},easeOutSine:function(i,r,s,o){return s*Math.sin(i/o*(Math.PI/2))+r},easeInOutSine:function(i,r,s,o){return-s/2*(Math.cos(Math.PI*i/o)-1)+r},easeInExpo:function(i,r,s,o){return i===0?r:s*Math.pow(2,10*(i/o-1))+r},easeOutExpo:function(i,r,s,o){return i===o?r+s:s*(-Math.pow(2,-10*i/o)+1)+r},easeInOutExpo:function(i,r,s,o){return(i/=o/2)<1?s/2*Math.pow(2,10*(i-1))+r:s/2*(-Math.pow(2,-10*--i)+2)+r},easeInCirc:function(i,r,s,o){return-s*(Math.sqrt(1-(i/=o)*i)-1)+r},easeOutCirc:function(i,r,s,o){return s*Math.sqrt(1-(i=i/o-1)*i)+r},easeInOutCirc:function(i,r,s,o){return(i/=o/2)<1?-s/2*(Math.sqrt(1-i*i)-1)+r:s/2*(Math.sqrt(1-(i-=2)*i)+1)+r},easeInElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o),l||(l=o*.3),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),-(a*Math.pow(2,10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l))+r},easeOutElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o),l||(l=o*.3),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),a*Math.pow(2,-10*i)*Math.sin((i*o-u)*(2*Math.PI)/l)+s+r},easeInOutElastic:function(i,r,s,o){var a,l,u;return u=1.70158,l=0,a=s,i===0||(i/=o/2),l||(l=o*(.3*1.5)),a<Math.abs(s)?(a=s,u=l/4):u=l/(2*Math.PI)*Math.asin(s/a),i<1?-.5*(a*Math.pow(2,10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l))+r:a*Math.pow(2,-10*(i-=1))*Math.sin((i*o-u)*(2*Math.PI)/l)*.5+s+r},easeInBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),s*(i/=o)*i*((a+1)*i-a)+r},easeOutBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),s*((i=i/o-1)*i*((a+1)*i+a)+1)+r},easeInOutBack:function(i,r,s,o,a){return a===void 0&&(a=1.70158),(i/=o/2)<1?s/2*(i*i*(((a*=1.525)+1)*i-a))+r:s/2*((i-=2)*i*(((a*=1.525)+1)*i+a)+2)+r},easeInBounce:function(i,r,s,o){var a;return a=e.easeOutBounce(o-i,0,s,o),s-a+r},easeOutBounce:function(i,r,s,o){return(i/=o)<1/2.75?s*(7.5625*i*i)+r:i<2/2.75?s*(7.5625*(i-=1.5/2.75)*i+.75)+r:i<2.5/2.75?s*(7.5625*(i-=2.25/2.75)*i+.9375)+r:s*(7.5625*(i-=2.625/2.75)*i+.984375)+r},easeInOutBounce:function(i,r,s,o){var a;return i<o/2?(a=e.easeInBounce(i*2,0,s,o),a*.5+r):(a=e.easeOutBounce(i*2-o,0,s,o),a*.5+s*.5+r)}},t(e)}).call(QK)})(PS);const TS=PS.exports;function yd(n,A){if(n){if(typeof n=="function")return n;if(typeof n=="string")return TS[n]}else return TS[A]}const VK={removeOnInterrupt:!1,ease:"linear",time:1e3};class $K extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"startX"),pA(this,"startY"),pA(this,"deltaX"),pA(this,"deltaY"),pA(this,"keepCenter"),pA(this,"startWidth",null),pA(this,"startHeight",null),pA(this,"deltaWidth",null),pA(this,"deltaHeight",null),pA(this,"width",null),pA(this,"height",null),pA(this,"time",0),this.options=Object.assign({},VK,e),this.options.ease=yd(this.options.ease),this.setupPosition(),this.setupZoom(),this.time=0}setupPosition(){typeof this.options.position<"u"?(this.startX=this.parent.center.x,this.startY=this.parent.center.y,this.deltaX=this.options.position.x-this.parent.center.x,this.deltaY=this.options.position.y-this.parent.center.y,this.keepCenter=!1):this.keepCenter=!0}setupZoom(){this.width=null,this.height=null,typeof this.options.scale<"u"?this.width=this.parent.screenWidth/this.options.scale:typeof this.options.scaleX<"u"||typeof this.options.scaleY<"u"?(typeof this.options.scaleX<"u"&&(this.width=this.parent.screenWidth/this.options.scaleX),typeof this.options.scaleY<"u"&&(this.height=this.parent.screenHeight/this.options.scaleY)):(typeof this.options.width<"u"&&(this.width=this.options.width),typeof this.options.height<"u"&&(this.height=this.options.height)),this.width!==null&&(this.startWidth=this.parent.screenWidthInWorldPixels,this.deltaWidth=this.width-this.startWidth),this.height!==null&&(this.startHeight=this.parent.screenHeightInWorldPixels,this.deltaHeight=this.height-this.startHeight)}down(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("animate"),!1}complete(){this.parent.plugins.remove("animate"),this.width!==null&&this.parent.fitWidth(this.width,this.keepCenter,this.height===null),this.height!==null&&this.parent.fitHeight(this.height,this.keepCenter,this.width===null),!this.keepCenter&&this.options.position&&this.parent.moveCenter(this.options.position),this.parent.emit("animate-end",this.parent),this.options.callbackOnComplete&&this.options.callbackOnComplete(this.parent)}update(A){if(this.paused)return;this.time+=A;const e=new VA(this.parent.scale.x,this.parent.scale.y);if(this.time>=this.options.time){const t=this.parent.width,i=this.parent.height;this.complete(),(t!==this.parent.width||i!==this.parent.height)&&this.parent.emit("zoomed",{viewport:this.parent,original:e,type:"animate"})}else{const t=this.options.ease(this.time,0,1,this.options.time);if(this.width!==null){const i=this.startWidth,r=this.deltaWidth;this.parent.fitWidth(i+r*t,this.keepCenter,this.height===null)}if(this.height!==null){const i=this.startHeight,r=this.deltaHeight;this.parent.fitHeight(i+r*t,this.keepCenter,this.width===null)}if(this.width===null?this.parent.scale.x=this.parent.scale.y:this.height===null&&(this.parent.scale.y=this.parent.scale.x),!this.keepCenter){const i=this.startX,r=this.startY,s=this.deltaX,o=this.deltaY,a=new VA(this.parent.x,this.parent.y);this.parent.moveCenter(i+s*t,r+o*t),this.parent.emit("moved",{viewport:this.parent,original:a,type:"animate"})}(this.width||this.height)&&this.parent.emit("zoomed",{viewport:this.parent,original:e,type:"animate"})}}}const AF={sides:"all",friction:.5,time:150,ease:"easeInOutSine",underflow:"center",bounceBox:null};class eF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"left"),pA(this,"top"),pA(this,"right"),pA(this,"bottom"),pA(this,"underflowX"),pA(this,"underflowY"),pA(this,"ease"),pA(this,"toX"),pA(this,"toY"),this.options=Object.assign({},AF,e),this.ease=yd(this.options.ease,"easeInOutSine"),this.options.sides?this.options.sides==="all"?this.top=this.bottom=this.left=this.right=!0:this.options.sides==="horizontal"?(this.right=this.left=!0,this.top=this.bottom=!1):this.options.sides==="vertical"?(this.left=this.right=!1,this.top=this.bottom=!0):(this.top=this.options.sides.indexOf("top")!==-1,this.bottom=this.options.sides.indexOf("bottom")!==-1,this.left=this.options.sides.indexOf("left")!==-1,this.right=this.options.sides.indexOf("right")!==-1):this.left=this.top=this.right=this.bottom=!1;const t=this.options.underflow.toLowerCase();t==="center"?(this.underflowX=0,this.underflowY=0):(this.underflowX=t.indexOf("left")!==-1?-1:t.indexOf("right")!==-1?1:0,this.underflowY=t.indexOf("top")!==-1?-1:t.indexOf("bottom")!==-1?1:0),this.reset()}isActive(){return this.toX!==null||this.toY!==null}down(){return this.toX=this.toY=null,!1}up(){return this.bounce(),!1}update(A){if(!this.paused){if(this.bounce(),this.toX){const e=this.toX;e.time+=A,this.parent.emit("moved",{viewport:this.parent,type:"bounce-x"}),e.time>=this.options.time?(this.parent.x=e.end,this.toX=null,this.parent.emit("bounce-x-end",this.parent)):this.parent.x=this.ease(e.time,e.start,e.delta,this.options.time)}if(this.toY){const e=this.toY;e.time+=A,this.parent.emit("moved",{viewport:this.parent,type:"bounce-y"}),e.time>=this.options.time?(this.parent.y=e.end,this.toY=null,this.parent.emit("bounce-y-end",this.parent)):this.parent.y=this.ease(e.time,e.start,e.delta,this.options.time)}}}calcUnderflowX(){let A;switch(this.underflowX){case-1:A=0;break;case 1:A=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:A=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}return A}calcUnderflowY(){let A;switch(this.underflowY){case-1:A=0;break;case 1:A=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:A=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}return A}oob(){const A=this.options.bounceBox;if(A){const e=typeof A.x>"u"?0:A.x,t=typeof A.y>"u"?0:A.y,i=typeof A.width>"u"?this.parent.worldWidth:A.width,r=typeof A.height>"u"?this.parent.worldHeight:A.height;return{left:this.parent.left<e,right:this.parent.right>i,top:this.parent.top<t,bottom:this.parent.bottom>r,topLeft:new VA(e*this.parent.scale.x,t*this.parent.scale.y),bottomRight:new VA(i*this.parent.scale.x-this.parent.screenWidth,r*this.parent.scale.y-this.parent.screenHeight)}}return{left:this.parent.left<0,right:this.parent.right>this.parent.worldWidth,top:this.parent.top<0,bottom:this.parent.bottom>this.parent.worldHeight,topLeft:new VA(0,0),bottomRight:new VA(this.parent.worldWidth*this.parent.scale.x-this.parent.screenWidth,this.parent.worldHeight*this.parent.scale.y-this.parent.screenHeight)}}bounce(){var A,e;if(this.paused)return;let t,i=this.parent.plugins.get("decelerate",!0);i&&(i.x||i.y)&&(i.x&&i.percentChangeX===((A=i.options)==null?void 0:A.friction)||i.y&&i.percentChangeY===((e=i.options)==null?void 0:e.friction))&&(t=this.oob(),(t.left&&this.left||t.right&&this.right)&&(i.percentChangeX=this.options.friction),(t.top&&this.top||t.bottom&&this.bottom)&&(i.percentChangeY=this.options.friction));const r=this.parent.plugins.get("drag",!0)||{},s=this.parent.plugins.get("pinch",!0)||{};if(i=i||{},!(r!=null&&r.active)&&!(s!=null&&s.active)&&(!this.toX||!this.toY)&&(!i.x||!i.y)){t=t||this.oob();const o=t.topLeft,a=t.bottomRight;if(!this.toX&&!i.x){let l=null;t.left&&this.left?l=this.parent.screenWorldWidth<this.parent.screenWidth?this.calcUnderflowX():-o.x:t.right&&this.right&&(l=this.parent.screenWorldWidth<this.parent.screenWidth?this.calcUnderflowX():-a.x),l!==null&&this.parent.x!==l&&(this.toX={time:0,start:this.parent.x,delta:l-this.parent.x,end:l},this.parent.emit("bounce-x-start",this.parent))}if(!this.toY&&!i.y){let l=null;t.top&&this.top?l=this.parent.screenWorldHeight<this.parent.screenHeight?this.calcUnderflowY():-o.y:t.bottom&&this.bottom&&(l=this.parent.screenWorldHeight<this.parent.screenHeight?this.calcUnderflowY():-a.y),l!==null&&this.parent.y!==l&&(this.toY={time:0,start:this.parent.y,delta:l-this.parent.y,end:l},this.parent.emit("bounce-y-start",this.parent))}}}reset(){this.toX=this.toY=null,this.bounce()}}const tF={left:!1,right:!1,top:!1,bottom:!1,direction:null,underflow:"center"};class iF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"last"),pA(this,"noUnderflow"),pA(this,"underflowX"),pA(this,"underflowY"),this.options=Object.assign({},tF,e),this.options.direction&&(this.options.left=this.options.direction==="x"||this.options.direction==="all"?!0:null,this.options.right=this.options.direction==="x"||this.options.direction==="all"?!0:null,this.options.top=this.options.direction==="y"||this.options.direction==="all"?!0:null,this.options.bottom=this.options.direction==="y"||this.options.direction==="all"?!0:null),this.parseUnderflow(),this.last={x:null,y:null,scaleX:null,scaleY:null},this.update()}parseUnderflow(){const A=this.options.underflow.toLowerCase();A==="none"?this.noUnderflow=!0:A==="center"?(this.underflowX=this.underflowY=0,this.noUnderflow=!1):(this.underflowX=A.indexOf("left")!==-1?-1:A.indexOf("right")!==-1?1:0,this.underflowY=A.indexOf("top")!==-1?-1:A.indexOf("bottom")!==-1?1:0,this.noUnderflow=!1)}move(){return this.update(),!1}update(){if(this.paused||this.parent.x===this.last.x&&this.parent.y===this.last.y&&this.parent.scale.x===this.last.scaleX&&this.parent.scale.y===this.last.scaleY)return;const A=new VA(this.parent.x,this.parent.y),e=this.parent.plugins.decelerate||{};if(this.options.left!==null||this.options.right!==null){let t=!1;if(!this.noUnderflow&&this.parent.screenWorldWidth<this.parent.screenWidth)switch(this.underflowX){case-1:this.parent.x!==0&&(this.parent.x=0,t=!0);break;case 1:this.parent.x!==this.parent.screenWidth-this.parent.screenWorldWidth&&(this.parent.x=this.parent.screenWidth-this.parent.screenWorldWidth,t=!0);break;default:this.parent.x!==(this.parent.screenWidth-this.parent.screenWorldWidth)/2&&(this.parent.x=(this.parent.screenWidth-this.parent.screenWorldWidth)/2,t=!0)}else this.options.left!==null&&this.parent.left<(this.options.left===!0?0:this.options.left)&&(this.parent.x=-(this.options.left===!0?0:this.options.left)*this.parent.scale.x,e.x=0,t=!0),this.options.right!==null&&this.parent.right>(this.options.right===!0?this.parent.worldWidth:this.options.right)&&(this.parent.x=-(this.options.right===!0?this.parent.worldWidth:this.options.right)*this.parent.scale.x+this.parent.screenWidth,e.x=0,t=!0);t&&this.parent.emit("moved",{viewport:this.parent,original:A,type:"clamp-x"})}if(this.options.top!==null||this.options.bottom!==null){let t=!1;if(!this.noUnderflow&&this.parent.screenWorldHeight<this.parent.screenHeight)switch(this.underflowY){case-1:this.parent.y!==0&&(this.parent.y=0,t=!0);break;case 1:this.parent.y!==this.parent.screenHeight-this.parent.screenWorldHeight&&(this.parent.y=this.parent.screenHeight-this.parent.screenWorldHeight,t=!0);break;default:this.parent.y!==(this.parent.screenHeight-this.parent.screenWorldHeight)/2&&(this.parent.y=(this.parent.screenHeight-this.parent.screenWorldHeight)/2,t=!0)}else this.options.top!==null&&this.parent.top<(this.options.top===!0?0:this.options.top)&&(this.parent.y=-(this.options.top===!0?0:this.options.top)*this.parent.scale.y,e.y=0,t=!0),this.options.bottom!==null&&this.parent.bottom>(this.options.bottom===!0?this.parent.worldHeight:this.options.bottom)&&(this.parent.y=-(this.options.bottom===!0?this.parent.worldHeight:this.options.bottom)*this.parent.scale.y+this.parent.screenHeight,e.y=0,t=!0);t&&this.parent.emit("moved",{viewport:this.parent,original:A,type:"clamp-y"})}this.last.x=this.parent.x,this.last.y=this.parent.y,this.last.scaleX=this.parent.scale.x,this.last.scaleY=this.parent.scale.y}reset(){this.update()}}const nF={minWidth:null,minHeight:null,maxWidth:null,maxHeight:null,minScale:null,maxScale:null};class rF extends Li{constructor(A,e={}){super(A),pA(this,"options"),this.options=Object.assign({},nF,e),this.clamp()}resize(){this.clamp()}clamp(){if(!this.paused){if(this.options.minWidth||this.options.minHeight||this.options.maxWidth||this.options.maxHeight){let A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight;if(this.options.minWidth!==null&&A<this.options.minWidth){const t=this.parent.scale.x;this.parent.fitWidth(this.options.minWidth,!1,!1,!0),this.parent.scale.y*=this.parent.scale.x/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.maxWidth!==null&&A>this.options.maxWidth){const t=this.parent.scale.x;this.parent.fitWidth(this.options.maxWidth,!1,!1,!0),this.parent.scale.y*=this.parent.scale.x/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.minHeight!==null&&e<this.options.minHeight){const t=this.parent.scale.y;this.parent.fitHeight(this.options.minHeight,!1,!1,!0),this.parent.scale.x*=this.parent.scale.y/t,A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}if(this.options.maxHeight!==null&&e>this.options.maxHeight){const t=this.parent.scale.y;this.parent.fitHeight(this.options.maxHeight,!1,!1,!0),this.parent.scale.x*=this.parent.scale.y/t,this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"})}}else if(this.options.minScale||this.options.maxScale){const A={x:null,y:null},e={x:null,y:null};if(typeof this.options.minScale=="number")A.x=this.options.minScale,A.y=this.options.minScale;else if(this.options.minScale!==null){const r=this.options.minScale;A.x=typeof r.x>"u"?null:r.x,A.y=typeof r.y>"u"?null:r.y}if(typeof this.options.maxScale=="number")e.x=this.options.maxScale,e.y=this.options.maxScale;else if(this.options.maxScale!==null){const r=this.options.maxScale;e.x=typeof r.x>"u"?null:r.x,e.y=typeof r.y>"u"?null:r.y}let t=this.parent.scale.x,i=this.parent.scale.y;A.x!==null&&t<A.x&&(t=A.x),e.x!==null&&t>e.x&&(t=e.x),A.y!==null&&i<A.y&&(i=A.y),e.y!==null&&i>e.y&&(i=e.y),(t!==this.parent.scale.x||i!==this.parent.scale.y)&&(this.parent.scale.set(t,i),this.parent.emit("zoomed",{viewport:this.parent,type:"clamp-zoom"}))}}}reset(){this.clamp()}}const sF={friction:.98,bounce:.8,minSpeed:.01},$r=16;class oF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"x"),pA(this,"y"),pA(this,"percentChangeX"),pA(this,"percentChangeY"),pA(this,"saved"),pA(this,"timeSinceRelease"),this.options=Object.assign({},sF,e),this.saved=[],this.timeSinceRelease=0,this.reset(),this.parent.on("moved",t=>this.handleMoved(t))}down(){return this.saved=[],this.x=this.y=null,!1}isActive(){return!!(this.x||this.y)}move(){if(this.paused)return!1;const A=this.parent.input.count();return(A===1||A>1&&!this.parent.plugins.get("pinch",!0))&&(this.saved.push({x:this.parent.x,y:this.parent.y,time:performance.now()}),this.saved.length>60&&this.saved.splice(0,30)),!1}handleMoved(A){if(this.saved.length){const e=this.saved[this.saved.length-1];A.type==="clamp-x"&&A.original?e.x===A.original.x&&(e.x=this.parent.x):A.type==="clamp-y"&&A.original&&e.y===A.original.y&&(e.y=this.parent.y)}}up(){if(this.parent.input.count()===0&&this.saved.length){const A=performance.now();for(const e of this.saved)if(e.time>=A-100){const t=A-e.time;this.x=(this.parent.x-e.x)/t,this.y=(this.parent.y-e.y)/t,this.percentChangeX=this.percentChangeY=this.options.friction,this.timeSinceRelease=0;break}}return!1}activate(A){A=A||{},typeof A.x<"u"&&(this.x=A.x,this.percentChangeX=this.options.friction),typeof A.y<"u"&&(this.y=A.y,this.percentChangeY=this.options.friction)}update(A){if(this.paused)return;const e=this.x||this.y,t=this.timeSinceRelease,i=this.timeSinceRelease+A;if(this.x){const r=this.percentChangeX,s=Math.log(r);this.parent.x+=this.x*$r/s*(Math.pow(r,i/$r)-Math.pow(r,t/$r)),this.x*=Math.pow(this.percentChangeX,A/$r)}if(this.y){const r=this.percentChangeY,s=Math.log(r);this.parent.y+=this.y*$r/s*(Math.pow(r,i/$r)-Math.pow(r,t/$r)),this.y*=Math.pow(this.percentChangeY,A/$r)}this.timeSinceRelease+=A,this.x&&this.y?Math.abs(this.x)<this.options.minSpeed&&Math.abs(this.y)<this.options.minSpeed&&(this.x=0,this.y=0):(Math.abs(this.x||0)<this.options.minSpeed&&(this.x=0),Math.abs(this.y||0)<this.options.minSpeed&&(this.y=0)),e&&this.parent.emit("moved",{viewport:this.parent,type:"decelerate"})}reset(){this.x=this.y=null}}const aF={direction:"all",pressDrag:!0,wheel:!0,wheelScroll:1,reverse:!1,clampWheel:!1,underflow:"center",factor:1,mouseButtons:"all",keyToPress:null,ignoreKeyToPressOnTouch:!1,lineHeight:20,wheelSwapAxes:!1};class lF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"moved"),pA(this,"reverse"),pA(this,"xDirection"),pA(this,"yDirection"),pA(this,"keyIsPressed"),pA(this,"mouse"),pA(this,"underflowX"),pA(this,"underflowY"),pA(this,"last"),pA(this,"current"),pA(this,"windowEventHandlers",[]),this.options=Object.assign({},aF,e),this.moved=!1,this.reverse=this.options.reverse?1:-1,this.xDirection=!this.options.direction||this.options.direction==="all"||this.options.direction==="x",this.yDirection=!this.options.direction||this.options.direction==="all"||this.options.direction==="y",this.keyIsPressed=!1,this.parseUnderflow(),this.mouseButtons(this.options.mouseButtons),this.options.keyToPress&&this.handleKeyPresses(this.options.keyToPress)}handleKeyPresses(A){const e=i=>{A.includes(i.code)&&(this.keyIsPressed=!0)},t=i=>{A.includes(i.code)&&(this.keyIsPressed=!1)};this.addWindowEventHandler("keyup",t),this.addWindowEventHandler("keydown",e)}addWindowEventHandler(A,e){window.addEventListener(A,e),this.windowEventHandlers.push({event:A,handler:e})}destroy(){this.windowEventHandlers.forEach(({event:A,handler:e})=>{window.removeEventListener(A,e)})}mouseButtons(A){!A||A==="all"?this.mouse=[!0,!0,!0]:this.mouse=[A.indexOf("left")!==-1,A.indexOf("middle")!==-1,A.indexOf("right")!==-1]}parseUnderflow(){const A=this.options.underflow.toLowerCase();A==="center"?(this.underflowX=0,this.underflowY=0):(A.includes("left")?this.underflowX=-1:A.includes("right")?this.underflowX=1:this.underflowX=0,A.includes("top")?this.underflowY=-1:A.includes("bottom")?this.underflowY=1:this.underflowY=0)}checkButtons(A){const e=A.pointerType==="mouse",t=this.parent.input.count();return!!((t===1||t>1&&!this.parent.plugins.get("pinch",!0))&&(!e||this.mouse[A.button]))}checkKeyPress(A){return!this.options.keyToPress||this.keyIsPressed||this.options.ignoreKeyToPressOnTouch&&A.data.pointerType==="touch"}down(A){return this.paused||!this.options.pressDrag?!1:this.checkButtons(A)&&this.checkKeyPress(A)?(this.last={x:A.global.x,y:A.global.y},this.current=A.pointerId,!0):(this.last=null,!1)}get active(){return this.moved}move(A){if(this.paused||!this.options.pressDrag)return!1;if(this.last&&this.current===A.data.pointerId){const e=A.global.x,t=A.global.y,i=this.parent.input.count();if(i===1||i>1&&!this.parent.plugins.get("pinch",!0)){const r=e-this.last.x,s=t-this.last.y;if(this.moved||this.xDirection&&this.parent.input.checkThreshold(r)||this.yDirection&&this.parent.input.checkThreshold(s)){const o={x:e,y:t};return this.xDirection&&(this.parent.x+=(o.x-this.last.x)*this.options.factor),this.yDirection&&(this.parent.y+=(o.y-this.last.y)*this.options.factor),this.last=o,this.moved||this.parent.emit("drag-start",{event:A,screen:new VA(this.last.x,this.last.y),world:this.parent.toWorld(new VA(this.last.x,this.last.y)),viewport:this.parent}),this.moved=!0,this.parent.emit("moved",{viewport:this.parent,type:"drag"}),!0}}else this.moved=!1}return!1}up(A){if(this.paused)return!1;const e=this.parent.input.touches;if(e.length===1){const t=e[0];return t.last&&(this.last={x:t.last.x,y:t.last.y},this.current=t.id),this.moved=!1,!0}else if(this.last&&this.moved){const t=new VA(this.last.x,this.last.y);return this.parent.emit("drag-end",{event:A,screen:t,world:this.parent.toWorld(t),viewport:this.parent}),this.last=null,this.moved=!1,!0}return!1}wheel(A){if(this.paused)return!1;if(this.options.wheel){const e=this.parent.plugins.get("wheel",!0);if(!e||!e.options.wheelZoom&&!A.ctrlKey){const t=A.deltaMode?this.options.lineHeight:1,i=[A.deltaX,A.deltaY],[r,s]=this.options.wheelSwapAxes?i.reverse():i;return this.xDirection&&(this.parent.x+=r*t*this.options.wheelScroll*this.reverse),this.yDirection&&(this.parent.y+=s*t*this.options.wheelScroll*this.reverse),this.options.clampWheel&&this.clamp(),this.parent.emit("wheel-scroll",this.parent),this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.options.passiveWheel||A.preventDefault(),this.parent.options.stopPropagation&&A.stopPropagation(),!0}}return!1}resume(){this.last=null,this.paused=!1}clamp(){const A=this.parent.plugins.get("decelerate",!0)||{};if(this.options.clampWheel!=="y")if(this.parent.screenWorldWidth<this.parent.screenWidth)switch(this.underflowX){case-1:this.parent.x=0;break;case 1:this.parent.x=this.parent.screenWidth-this.parent.screenWorldWidth;break;default:this.parent.x=(this.parent.screenWidth-this.parent.screenWorldWidth)/2}else this.parent.left<0?(this.parent.x=0,A.x=0):this.parent.right>this.parent.worldWidth&&(this.parent.x=-this.parent.worldWidth*this.parent.scale.x+this.parent.screenWidth,A.x=0);if(this.options.clampWheel!=="x")if(this.parent.screenWorldHeight<this.parent.screenHeight)switch(this.underflowY){case-1:this.parent.y=0;break;case 1:this.parent.y=this.parent.screenHeight-this.parent.screenWorldHeight;break;default:this.parent.y=(this.parent.screenHeight-this.parent.screenWorldHeight)/2}else this.parent.top<0&&(this.parent.y=0,A.y=0),this.parent.bottom>this.parent.worldHeight&&(this.parent.y=-this.parent.worldHeight*this.parent.scale.y+this.parent.screenHeight,A.y=0)}}const cF={speed:0,acceleration:null,radius:null};class hF extends Li{constructor(A,e,t={}){super(A),pA(this,"options"),pA(this,"target"),pA(this,"velocity"),this.target=e,this.options=Object.assign({},cF,t),this.velocity={x:0,y:0}}update(A){if(this.paused)return;const e=this.parent.center;let t=this.target.x,i=this.target.y;if(this.options.radius)if(Math.sqrt(Math.pow(this.target.y-e.y,2)+Math.pow(this.target.x-e.x,2))>this.options.radius){const o=Math.atan2(this.target.y-e.y,this.target.x-e.x);t=this.target.x-Math.cos(o)*this.options.radius,i=this.target.y-Math.sin(o)*this.options.radius}else return;const r=t-e.x,s=i-e.y;if(r||s)if(this.options.speed)if(this.options.acceleration){const o=Math.atan2(i-e.y,t-e.x),a=Math.sqrt(Math.pow(r,2)+Math.pow(s,2));if(a){const l=(Math.pow(this.velocity.x,2)+Math.pow(this.velocity.y,2))/(2*this.options.acceleration);a>l?this.velocity={x:Math.min(this.velocity.x+(this.options.acceleration*A,this.options.speed)),y:Math.min(this.velocity.y+(this.options.acceleration*A,this.options.speed))}:this.velocity={x:Math.max(this.velocity.x-this.options.acceleration*this.options.speed,0),y:Math.max(this.velocity.y-this.options.acceleration*this.options.speed,0)};const u=Math.cos(o)*this.velocity.x,c=Math.sin(o)*this.velocity.y,h=Math.abs(u)>Math.abs(r)?t:e.x+u,f=Math.abs(c)>Math.abs(s)?i:e.y+c;this.parent.moveCenter(h,f),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}else{const o=Math.atan2(i-e.y,t-e.x),a=Math.cos(o)*this.options.speed,l=Math.sin(o)*this.options.speed,u=Math.abs(a)>Math.abs(r)?t:e.x+a,c=Math.abs(l)>Math.abs(s)?i:e.y+l;this.parent.moveCenter(u,c),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}else this.parent.moveCenter(t,i),this.parent.emit("moved",{viewport:this.parent,type:"follow"})}}const uF={radius:null,distance:null,top:null,bottom:null,left:null,right:null,speed:8,reverse:!1,noDecelerate:!1,linear:!1,allowButtons:!1};class fF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"reverse"),pA(this,"radiusSquared"),pA(this,"left"),pA(this,"top"),pA(this,"right"),pA(this,"bottom"),pA(this,"horizontal"),pA(this,"vertical"),this.options=Object.assign({},uF,e),this.reverse=this.options.reverse?1:-1,this.radiusSquared=typeof this.options.radius=="number"?Math.pow(this.options.radius,2):null,this.resize()}resize(){const A=this.options.distance;A!==null?(this.left=A,this.top=A,this.right=this.parent.screenWidth-A,this.bottom=this.parent.screenHeight-A):this.options.radius||(this.left=this.options.left,this.top=this.options.top,this.right=this.options.right===null?null:this.parent.screenWidth-this.options.right,this.bottom=this.options.bottom===null?null:this.parent.screenHeight-this.options.bottom)}down(){return this.paused||this.options.allowButtons||(this.horizontal=this.vertical=null),!1}move(A){if(this.paused||A.pointerType!=="mouse"&&A.pointerId!==1||!this.options.allowButtons&&A.buttons!==0)return!1;const e=A.global.x,t=A.global.y;if(this.radiusSquared){const i=this.parent.toScreen(this.parent.center);if(Math.pow(i.x-e,2)+Math.pow(i.y-t,2)>=this.radiusSquared){const r=Math.atan2(i.y-t,i.x-e);this.options.linear?(this.horizontal=Math.round(Math.cos(r))*this.options.speed*this.reverse*(60/1e3),this.vertical=Math.round(Math.sin(r))*this.options.speed*this.reverse*(60/1e3)):(this.horizontal=Math.cos(r)*this.options.speed*this.reverse*(60/1e3),this.vertical=Math.sin(r)*this.options.speed*this.reverse*(60/1e3))}else this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=0}else this.left!==null&&e<this.left?this.horizontal=Number(this.reverse)*this.options.speed*(60/1e3):this.right!==null&&e>this.right?this.horizontal=-1*this.reverse*this.options.speed*(60/1e3):(this.decelerateHorizontal(),this.horizontal=0),this.top!==null&&t<this.top?this.vertical=Number(this.reverse)*this.options.speed*(60/1e3):this.bottom!==null&&t>this.bottom?this.vertical=-1*this.reverse*this.options.speed*(60/1e3):(this.decelerateVertical(),this.vertical=0);return!1}decelerateHorizontal(){const A=this.parent.plugins.get("decelerate",!0);this.horizontal&&A&&!this.options.noDecelerate&&A.activate({x:this.horizontal*this.options.speed*this.reverse/(1e3/60)})}decelerateVertical(){const A=this.parent.plugins.get("decelerate",!0);this.vertical&&A&&!this.options.noDecelerate&&A.activate({y:this.vertical*this.options.speed*this.reverse/(1e3/60)})}up(){return this.paused||(this.horizontal&&this.decelerateHorizontal(),this.vertical&&this.decelerateVertical(),this.horizontal=this.vertical=null),!1}update(){if(!this.paused&&(this.horizontal||this.vertical)){const A=this.parent.center;this.horizontal&&(A.x+=this.horizontal*this.options.speed),this.vertical&&(A.y+=this.vertical*this.options.speed),this.parent.moveCenter(A),this.parent.emit("moved",{viewport:this.parent,type:"mouse-edges"})}}}const dF={noDrag:!1,percent:1,center:null,factor:1,axis:"all"};class pF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"active",!1),pA(this,"pinching",!1),pA(this,"moved",!1),pA(this,"lastCenter"),this.options=Object.assign({},dF,e)}down(){return this.parent.input.count()>=2?(this.active=!0,!0):!1}isAxisX(){return["all","x"].includes(this.options.axis)}isAxisY(){return["all","y"].includes(this.options.axis)}move(A){if(this.paused||!this.active)return!1;const e=A.global.x,t=A.global.y,i=this.parent.input.touches;if(i.length>=2){const r=i[0],s=i[1],o=r.last&&s.last?Math.sqrt(Math.pow(s.last.x-r.last.x,2)+Math.pow(s.last.y-r.last.y,2)):null;if(r.id===A.pointerId?r.last={x:e,y:t,data:A}:s.id===A.pointerId&&(s.last={x:e,y:t,data:A}),o){let a;const l=new VA(r.last.x+(s.last.x-r.last.x)/2,r.last.y+(s.last.y-r.last.y)/2);this.options.center||(a=this.parent.toLocal(l));let u=Math.sqrt(Math.pow(s.last.x-r.last.x,2)+Math.pow(s.last.y-r.last.y,2));u=u===0?u=1e-10:u;const c=(1-o/u)*this.options.percent*(this.isAxisX()?this.parent.scale.x:this.parent.scale.y);this.isAxisX()&&(this.parent.scale.x+=c),this.isAxisY()&&(this.parent.scale.y+=c),this.parent.emit("zoomed",{viewport:this.parent,type:"pinch",center:l});const h=this.parent.plugins.get("clamp-zoom",!0);if(h&&h.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const f=this.parent.toGlobal(a);this.parent.x+=(l.x-f.x)*this.options.factor,this.parent.y+=(l.y-f.y)*this.options.factor,this.parent.emit("moved",{viewport:this.parent,type:"pinch"})}!this.options.noDrag&&this.lastCenter&&(this.parent.x+=(l.x-this.lastCenter.x)*this.options.factor,this.parent.y+=(l.y-this.lastCenter.y)*this.options.factor,this.parent.emit("moved",{viewport:this.parent,type:"pinch"})),this.lastCenter=l,this.moved=!0}else this.pinching||(this.parent.emit("pinch-start",this.parent),this.pinching=!0);return!0}return!1}up(){return this.pinching&&this.parent.input.touches.length<=1?(this.active=!1,this.lastCenter=null,this.pinching=!1,this.moved=!1,this.parent.emit("pinch-end",this.parent),!0):!1}}const gF={topLeft:!1,friction:.8,time:1e3,ease:"easeInOutSine",interrupt:!0,removeOnComplete:!1,removeOnInterrupt:!1,forceStart:!1};class mF extends Li{constructor(A,e,t,i={}){super(A),pA(this,"options"),pA(this,"ease"),pA(this,"x"),pA(this,"y"),pA(this,"percent"),pA(this,"snapping"),pA(this,"deltaX"),pA(this,"deltaY"),pA(this,"startX"),pA(this,"startY"),this.options=Object.assign({},gF,i),this.ease=yd(i.ease,"easeInOutSine"),this.x=e,this.y=t,this.options.forceStart&&this.snapStart()}snapStart(){this.percent=0,this.snapping={time:0};const A=this.options.topLeft?this.parent.corner:this.parent.center;this.deltaX=this.x-A.x,this.deltaY=this.y-A.y,this.startX=A.x,this.startY=A.y,this.parent.emit("snap-start",this.parent)}wheel(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("snap"),!1}down(){return this.options.removeOnInterrupt?this.parent.plugins.remove("snap"):this.options.interrupt&&(this.snapping=null),!1}up(){if(this.parent.input.count()===0){const A=this.parent.plugins.get("decelerate",!0);A&&(A.x||A.y)&&(A.percentChangeX=A.percentChangeY=this.options.friction)}return!1}update(A){if(!this.paused&&!(this.options.interrupt&&this.parent.input.count()!==0))if(this.snapping){const e=this.snapping;e.time+=A;let t,i,r;const s=this.startX,o=this.startY,a=this.deltaX,l=this.deltaY;if(e.time>this.options.time)t=!0,i=s+a,r=o+l;else{const u=this.ease(e.time,0,1,this.options.time);i=s+a*u,r=o+l*u}this.options.topLeft?this.parent.moveCorner(i,r):this.parent.moveCenter(i,r),this.parent.emit("moved",{viewport:this.parent,type:"snap"}),t&&(this.options.removeOnComplete&&this.parent.plugins.remove("snap"),this.parent.emit("snap-end",this.parent),this.snapping=null)}else{const e=this.options.topLeft?this.parent.corner:this.parent.center;(e.x!==this.x||e.y!==this.y)&&this.snapStart()}}}const vF={width:0,height:0,time:1e3,ease:"easeInOutSine",center:null,interrupt:!0,removeOnComplete:!1,removeOnInterrupt:!1,forceStart:!1,noMove:!1};class yF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"ease"),pA(this,"xScale"),pA(this,"yScale"),pA(this,"xIndependent"),pA(this,"yIndependent"),pA(this,"snapping"),this.options=Object.assign({},vF,e),this.ease=yd(this.options.ease),this.xIndependent=!1,this.yIndependent=!1,this.xScale=0,this.yScale=0,this.options.width>0&&(this.xScale=A.screenWidth/this.options.width,this.xIndependent=!0),this.options.height>0&&(this.yScale=A.screenHeight/this.options.height,this.yIndependent=!0),this.xScale=this.xIndependent?this.xScale:this.yScale,this.yScale=this.yIndependent?this.yScale:this.xScale,this.options.time===0?(A.container.scale.x=this.xScale,A.container.scale.y=this.yScale,this.options.removeOnComplete&&this.parent.plugins.remove("snap-zoom")):e.forceStart&&this.createSnapping()}createSnapping(){const A=this.parent.worldScreenWidth,e=this.parent.worldScreenHeight,t=this.parent.screenWidth/this.xScale,i=this.parent.screenHeight/this.yScale;this.snapping={time:0,startX:A,startY:e,deltaX:t-A,deltaY:i-e},this.parent.emit("snap-zoom-start",this.parent)}resize(){this.snapping=null,this.options.width>0&&(this.xScale=this.parent.screenWidth/this.options.width),this.options.height>0&&(this.yScale=this.parent.screenHeight/this.options.height),this.xScale=this.xIndependent?this.xScale:this.yScale,this.yScale=this.yIndependent?this.yScale:this.xScale}wheel(){return this.options.removeOnInterrupt&&this.parent.plugins.remove("snap-zoom"),!1}down(){return this.options.removeOnInterrupt?this.parent.plugins.remove("snap-zoom"):this.options.interrupt&&(this.snapping=null),!1}update(A){if(this.paused||this.options.interrupt&&this.parent.input.count()!==0)return;let e;if(!this.options.center&&!this.options.noMove&&(e=this.parent.center),!this.snapping)(this.parent.scale.x!==this.xScale||this.parent.scale.y!==this.yScale)&&this.createSnapping();else if(this.snapping){const t=this.snapping;if(t.time+=A,t.time>=this.options.time)this.parent.scale.set(this.xScale,this.yScale),this.options.removeOnComplete&&this.parent.plugins.remove("snap-zoom"),this.parent.emit("snap-zoom-end",this.parent),this.snapping=null;else{const r=this.snapping,s=this.ease(r.time,r.startX,r.deltaX,this.options.time),o=this.ease(r.time,r.startY,r.deltaY,this.options.time);this.parent.scale.x=this.parent.screenWidth/s,this.parent.scale.y=this.parent.screenHeight/o}const i=this.parent.plugins.get("clamp-zoom",!0);i&&i.clamp(),this.options.noMove||(this.options.center?this.parent.moveCenter(this.options.center):this.parent.moveCenter(e))}}resume(){this.snapping=null,super.resume()}}const wF={percent:.1,smooth:!1,interrupt:!0,reverse:!1,center:null,lineHeight:20,axis:"all",keyToPress:null,trackpadPinch:!1,wheelZoom:!0};class CF extends Li{constructor(A,e={}){super(A),pA(this,"options"),pA(this,"smoothing"),pA(this,"smoothingCenter"),pA(this,"smoothingCount"),pA(this,"keyIsPressed"),this.options=Object.assign({},wF,e),this.keyIsPressed=!1,this.options.keyToPress&&this.handleKeyPresses(this.options.keyToPress)}handleKeyPresses(A){window.addEventListener("keydown",e=>{A.includes(e.code)&&(this.keyIsPressed=!0)}),window.addEventListener("keyup",e=>{A.includes(e.code)&&(this.keyIsPressed=!1)})}checkKeyPress(){return!this.options.keyToPress||this.keyIsPressed}down(){return this.options.interrupt&&(this.smoothing=null),!1}isAxisX(){return["all","x"].includes(this.options.axis)}isAxisY(){return["all","y"].includes(this.options.axis)}update(){if(this.smoothing){const A=this.smoothingCenter,e=this.smoothing;let t;this.options.center||(t=this.parent.toLocal(A)),this.isAxisX()&&(this.parent.scale.x+=e.x),this.isAxisY()&&(this.parent.scale.y+=e.y),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const i=this.parent.plugins.get("clamp-zoom",!0);if(i&&i.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const r=this.parent.toGlobal(t);this.parent.x+=A.x-r.x,this.parent.y+=A.y-r.y}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.smoothingCount++,this.smoothingCount>=this.options.smooth&&(this.smoothing=null)}}pinch(A){if(this.paused)return;const e=this.parent.input.getPointerPosition(A),t=-A.deltaY*(A.deltaMode?this.options.lineHeight:1)/200,i=Math.pow(2,(1+this.options.percent)*t);let r;this.options.center||(r=this.parent.toLocal(e)),this.isAxisX()&&(this.parent.scale.x*=i),this.isAxisY()&&(this.parent.scale.y*=i),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const s=this.parent.plugins.get("clamp-zoom",!0);if(s&&s.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const o=this.parent.toGlobal(r);this.parent.x+=e.x-o.x,this.parent.y+=e.y-o.y}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.emit("wheel-start",{event:A,viewport:this.parent})}wheel(A){if(this.paused||!this.checkKeyPress())return!1;if(A.ctrlKey&&this.options.trackpadPinch)this.pinch(A);else if(this.options.wheelZoom){const e=this.parent.input.getPointerPosition(A),t=(this.options.reverse?-1:1)*-A.deltaY*(A.deltaMode?this.options.lineHeight:1)/500,i=Math.pow(2,(1+this.options.percent)*t);if(this.options.smooth){const r={x:this.smoothing?this.smoothing.x*(this.options.smooth-this.smoothingCount):0,y:this.smoothing?this.smoothing.y*(this.options.smooth-this.smoothingCount):0};this.smoothing={x:((this.parent.scale.x+r.x)*i-this.parent.scale.x)/this.options.smooth,y:((this.parent.scale.y+r.y)*i-this.parent.scale.y)/this.options.smooth},this.smoothingCount=0,this.smoothingCenter=e}else{let r;this.options.center||(r=this.parent.toLocal(e)),this.isAxisX()&&(this.parent.scale.x*=i),this.isAxisY()&&(this.parent.scale.y*=i),this.parent.emit("zoomed",{viewport:this.parent,type:"wheel"});const s=this.parent.plugins.get("clamp-zoom",!0);if(s&&s.clamp(),this.options.center)this.parent.moveCenter(this.options.center);else{const o=this.parent.toGlobal(r);this.parent.x+=e.x-o.x,this.parent.y+=e.y-o.y}}this.parent.emit("moved",{viewport:this.parent,type:"wheel"}),this.parent.emit("wheel-start",{event:A,viewport:this.parent})}return!this.parent.options.passiveWheel}}class xF{constructor(A){pA(this,"viewport"),pA(this,"clickedAvailable"),pA(this,"isMouseDown"),pA(this,"last"),pA(this,"wheelFunction"),pA(this,"touches"),this.viewport=A,this.touches=[],this.addListeners()}addListeners(){this.viewport.eventMode="static",this.viewport.forceHitArea||(this.viewport.hitArea=new ee(0,0,this.viewport.worldWidth,this.viewport.worldHeight)),this.viewport.on("pointerdown",this.down,this),this.viewport.options.allowPreserveDragOutside?this.viewport.on("globalpointermove",this.move,this):this.viewport.on("pointermove",this.move,this),this.viewport.on("pointerup",this.up,this),this.viewport.on("pointerupoutside",this.up,this),this.viewport.on("pointercancel",this.up,this),this.viewport.options.allowPreserveDragOutside||this.viewport.on("pointerleave",this.up,this),this.wheelFunction=A=>this.handleWheel(A),this.viewport.options.events.domElement.addEventListener("wheel",this.wheelFunction,{passive:this.viewport.options.passiveWheel}),this.isMouseDown=!1}destroy(){this.viewport.options.events.domElement.removeEventListener("wheel",this.wheelFunction)}down(A){if(!(this.viewport.pause||!this.viewport.worldVisible)){if(A.pointerType==="mouse"?this.isMouseDown=!0:this.get(A.pointerId)||this.touches.push({id:A.pointerId,last:null}),this.count()===1){this.last=A.global.clone();const e=this.viewport.plugins.get("decelerate",!0),t=this.viewport.plugins.get("bounce",!0);(!e||!e.isActive())&&(!t||!t.isActive())?this.clickedAvailable=!0:this.clickedAvailable=!1}else this.clickedAvailable=!1;this.viewport.plugins.down(A)&&this.viewport.options.stopPropagation&&A.stopPropagation()}}clear(){this.isMouseDown=!1,this.touches=[],this.last=null}checkThreshold(A){return Math.abs(A)>=this.viewport.threshold}move(A){if(this.viewport.pause||!this.viewport.worldVisible)return;const e=this.viewport.plugins.move(A);if(this.clickedAvailable&&this.last){const t=A.global.x-this.last.x,i=A.global.y-this.last.y;(this.checkThreshold(t)||this.checkThreshold(i))&&(this.clickedAvailable=!1)}e&&this.viewport.options.stopPropagation&&A.stopPropagation()}up(A){if(this.viewport.pause||!this.viewport.worldVisible)return;A.pointerType==="mouse"&&(this.isMouseDown=!1),A.pointerType!=="mouse"&&this.remove(A.pointerId);const e=this.viewport.plugins.up(A);this.clickedAvailable&&this.count()===0&&this.last&&(this.viewport.emit("clicked",{event:A,screen:this.last,world:this.viewport.toWorld(this.last),viewport:this.viewport}),this.clickedAvailable=!1),e&&this.viewport.options.stopPropagation&&A.stopPropagation()}getPointerPosition(A){const e=new VA;return this.viewport.options.events.mapPositionToPoint(e,A.clientX,A.clientY),e}handleWheel(A){if(this.viewport.pause||!this.viewport.worldVisible)return;const e=this.viewport.toLocal(this.getPointerPosition(A));this.viewport.left<=e.x&&e.x<=this.viewport.right&&this.viewport.top<=e.y&&e.y<=this.viewport.bottom&&this.viewport.plugins.wheel(A)&&!this.viewport.options.passiveWheel&&A.preventDefault()}pause(){this.touches=[],this.isMouseDown=!1}get(A){for(const e of this.touches)if(e.id===A)return e;return null}remove(A){for(let e=0;e<this.touches.length;e++)if(this.touches[e].id===A){this.touches.splice(e,1);return}}count(){return(this.isMouseDown?1:0)+this.touches.length}}const Nc=["drag","pinch","wheel","follow","mouse-edges","decelerate","animate","bounce","snap-zoom","clamp-zoom","snap","clamp"];class IF{constructor(A){pA(this,"plugins"),pA(this,"list"),pA(this,"viewport"),this.viewport=A,this.list=[],this.plugins={}}add(A,e,t=Nc.length){const i=this.plugins[A];i&&i.destroy(),this.plugins[A]=e;const r=Nc.indexOf(A);r!==-1&&Nc.splice(r,1),Nc.splice(t,0,A),this.sort()}get(A,e){var t;return e&&(t=this.plugins[A])!=null&&t.paused?null:this.plugins[A]}update(A){for(const e of this.list)e.update(A)}resize(){for(const A of this.list)A.resize()}reset(){for(const A of this.list)A.reset()}removeAll(){this.list.forEach(A=>{A.destroy()}),this.plugins={},this.sort()}remove(A){var e;this.plugins[A]&&((e=this.plugins[A])==null||e.destroy(),delete this.plugins[A],this.viewport.emit("plugin-remove",A),this.sort())}pause(A){var e;(e=this.plugins[A])==null||e.pause()}resume(A){var e;(e=this.plugins[A])==null||e.resume()}sort(){this.list=[];for(const A of Nc)this.plugins[A]&&this.list.push(this.plugins[A])}down(A){let e=!1;for(const t of this.list)t.down(A)&&(e=!0);return e}move(A){let e=!1;for(const t of this.viewport.plugins.list)t.move(A)&&(e=!0);return e}up(A){let e=!1;for(const t of this.list)t.up(A)&&(e=!0);return e}wheel(A){let e=!1;for(const t of this.list)t.wheel(A)&&(e=!0);return e}}const bF={screenWidth:window.innerWidth,screenHeight:window.innerHeight,worldWidth:null,worldHeight:null,threshold:5,passiveWheel:!0,stopPropagation:!1,forceHitArea:null,noTicker:!1,disableOnContextMenu:!1,ticker:Xt.shared,allowPreserveDragOutside:!1};class _F extends bi{constructor(A){super(),pA(this,"moving"),pA(this,"screenWidth"),pA(this,"screenHeight"),pA(this,"threshold"),pA(this,"input"),pA(this,"plugins"),pA(this,"zooming"),pA(this,"lastViewport"),pA(this,"options"),pA(this,"_dirty"),pA(this,"_forceHitArea"),pA(this,"_hitAreaDefault"),pA(this,"_pause"),pA(this,"tickerFunction"),pA(this,"_worldWidth"),pA(this,"_worldHeight"),pA(this,"_disableOnContextMenu",e=>e.preventDefault()),this.options={...bF,...A},this.screenWidth=this.options.screenWidth,this.screenHeight=this.options.screenHeight,this._worldWidth=this.options.worldWidth,this._worldHeight=this.options.worldHeight,this.forceHitArea=this.options.forceHitArea,this.threshold=this.options.threshold,this.options.disableOnContextMenu&&this.options.events.domElement.addEventListener("contextmenu",this._disableOnContextMenu),this.options.noTicker||(this.tickerFunction=()=>this.update(this.options.ticker.elapsedMS),this.options.ticker.add(this.tickerFunction)),this.input=new xF(this),this.plugins=new IF(this)}destroy(A){!this.options.noTicker&&this.tickerFunction&&this.options.ticker.remove(this.tickerFunction),this.options.disableOnContextMenu&&this.options.events.domElement.removeEventListener("contextmenu",this._disableOnContextMenu),this.input.destroy(),super.destroy(A)}update(A){this.pause||(this.plugins.update(A),this.lastViewport&&(this.lastViewport.x!==this.x||this.lastViewport.y!==this.y?this.moving=!0:this.moving&&(this.emit("moved-end",this),this.moving=!1),this.lastViewport.scaleX!==this.scale.x||this.lastViewport.scaleY!==this.scale.y?this.zooming=!0:this.zooming&&(this.emit("zoomed-end",this),this.zooming=!1)),this.forceHitArea||(this._hitAreaDefault=new ee(this.left,this.top,this.worldScreenWidth,this.worldScreenHeight),this.hitArea=this._hitAreaDefault),this._dirty=this._dirty||!this.lastViewport||this.lastViewport.x!==this.x||this.lastViewport.y!==this.y||this.lastViewport.scaleX!==this.scale.x||this.lastViewport.scaleY!==this.scale.y,this.lastViewport={x:this.x,y:this.y,scaleX:this.scale.x,scaleY:this.scale.y},this.emit("frame-end",this))}resize(A=window.innerWidth,e=window.innerHeight,t,i){this.screenWidth=A,this.screenHeight=e,typeof t<"u"&&(this._worldWidth=t),typeof i<"u"&&(this._worldHeight=i),this.plugins.resize(),this.dirty=!0}get worldWidth(){return this._worldWidth?this._worldWidth:this.width/this.scale.x}set worldWidth(A){this._worldWidth=A,this.plugins.resize()}get worldHeight(){return this._worldHeight?this._worldHeight:this.height/this.scale.y}set worldHeight(A){this._worldHeight=A,this.plugins.resize()}getVisibleBounds(){return new ee(this.left,this.top,this.worldScreenWidth,this.worldScreenHeight)}toWorld(A,e){return arguments.length===2?this.toLocal(new VA(A,e)):this.toLocal(A)}toScreen(A,e){return arguments.length===2?this.toGlobal(new VA(A,e)):this.toGlobal(A)}get worldScreenWidth(){return this.screenWidth/this.scale.x}get worldScreenHeight(){return this.screenHeight/this.scale.y}get screenWorldWidth(){return this.worldWidth*this.scale.x}get screenWorldHeight(){return this.worldHeight*this.scale.y}get center(){return new VA(this.worldScreenWidth/2-this.x/this.scale.x,this.worldScreenHeight/2-this.y/this.scale.y)}set center(A){this.moveCenter(A)}moveCenter(...A){let e,t;typeof A[0]=="number"?(e=A[0],t=A[1]):(e=A[0].x,t=A[0].y);const i=(this.worldScreenWidth/2-e)*this.scale.x,r=(this.worldScreenHeight/2-t)*this.scale.y;return(this.x!==i||this.y!==r)&&(this.position.set(i,r),this.plugins.reset(),this.dirty=!0),this}get corner(){return new VA(-this.x/this.scale.x,-this.y/this.scale.y)}set corner(A){this.moveCorner(A)}moveCorner(...A){let e,t;return A.length===1?(e=-A[0].x*this.scale.x,t=-A[0].y*this.scale.y):(e=-A[0]*this.scale.x,t=-A[1]*this.scale.y),(e!==this.x||t!==this.y)&&(this.position.set(e,t),this.plugins.reset(),this.dirty=!0),this}get screenWidthInWorldPixels(){return this.screenWidth/this.scale.x}get screenHeightInWorldPixels(){return this.screenHeight/this.scale.y}findFitWidth(A){return this.screenWidth/A}findFitHeight(A){return this.screenHeight/A}findFit(A,e){const t=this.screenWidth/A,i=this.screenHeight/e;return Math.min(t,i)}findCover(A,e){const t=this.screenWidth/A,i=this.screenHeight/e;return Math.max(t,i)}fitWidth(A=this.worldWidth,e,t=!0,i){let r;e&&(r=this.center),this.scale.x=this.screenWidth/A,t&&(this.scale.y=this.scale.x);const s=this.plugins.get("clamp-zoom",!0);return!i&&s&&s.clamp(),e&&r&&this.moveCenter(r),this}fitHeight(A=this.worldHeight,e,t=!0,i){let r;e&&(r=this.center),this.scale.y=this.screenHeight/A,t&&(this.scale.x=this.scale.y);const s=this.plugins.get("clamp-zoom",!0);return!i&&s&&s.clamp(),e&&r&&this.moveCenter(r),this}fitWorld(A){let e;A&&(e=this.center),this.scale.x=this.screenWidth/this.worldWidth,this.scale.y=this.screenHeight/this.worldHeight,this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y;const t=this.plugins.get("clamp-zoom",!0);return t&&t.clamp(),A&&e&&this.moveCenter(e),this}fit(A,e=this.worldWidth,t=this.worldHeight){let i;A&&(i=this.center),this.scale.x=this.screenWidth/e,this.scale.y=this.screenHeight/t,this.scale.x<this.scale.y?this.scale.y=this.scale.x:this.scale.x=this.scale.y;const r=this.plugins.get("clamp-zoom",!0);return r&&r.clamp(),A&&i&&this.moveCenter(i),this}setZoom(A,e){let t;e&&(t=this.center),this.scale.set(A);const i=this.plugins.get("clamp-zoom",!0);return i&&i.clamp(),e&&t&&this.moveCenter(t),this}zoomPercent(A,e){return this.setZoom(this.scale.x+this.scale.x*A,e)}zoom(A,e){return this.fitWidth(A+this.worldScreenWidth,e),this}get scaled(){return this.scale.x}set scaled(A){this.setZoom(A,!0)}snapZoom(A){return this.plugins.add("snap-zoom",new yF(this,A)),this}OOB(){return{left:this.left<0,right:this.right>this.worldWidth,top:this.top<0,bottom:this.bottom>this.worldHeight,cornerPoint:new VA(this.worldWidth*this.scale.x-this.screenWidth,this.worldHeight*this.scale.y-this.screenHeight)}}get right(){return-this.x/this.scale.x+this.worldScreenWidth}set right(A){this.x=-A*this.scale.x+this.screenWidth,this.plugins.reset()}get left(){return-this.x/this.scale.x}set left(A){this.x=-A*this.scale.x,this.plugins.reset()}get top(){return-this.y/this.scale.y}set top(A){this.y=-A*this.scale.y,this.plugins.reset()}get bottom(){return-this.y/this.scale.y+this.worldScreenHeight}set bottom(A){this.y=-A*this.scale.y+this.screenHeight,this.plugins.reset()}get dirty(){return!!this._dirty}set dirty(A){this._dirty=A}get forceHitArea(){return this._forceHitArea}set forceHitArea(A){A?(this._forceHitArea=A,this.hitArea=A):(this._forceHitArea=null,this.hitArea=new ee(0,0,this.worldWidth,this.worldHeight))}drag(A){return this.plugins.add("drag",new lF(this,A)),this}clamp(A){return this.plugins.add("clamp",new iF(this,A)),this}decelerate(A){return this.plugins.add("decelerate",new oF(this,A)),this}bounce(A){return this.plugins.add("bounce",new eF(this,A)),this}pinch(A){return this.plugins.add("pinch",new pF(this,A)),this}snap(A,e,t){return this.plugins.add("snap",new mF(this,A,e,t)),this}follow(A,e){return this.plugins.add("follow",new hF(this,A,e)),this}wheel(A){return this.plugins.add("wheel",new CF(this,A)),this}animate(A){return this.plugins.add("animate",new $K(this,A)),this}clampZoom(A){return this.plugins.add("clamp-zoom",new rF(this,A)),this}mouseEdges(A){return this.plugins.add("mouse-edges",new fF(this,A)),this}get pause(){return!!this._pause}set pause(A){this._pause=A,this.lastViewport=null,this.moving=!1,this.zooming=!1,A&&this.input.pause()}ensureVisible(A,e,t,i,r){r&&(t>this.worldScreenWidth||i>this.worldScreenHeight)&&(this.fit(!0,t,i),this.emit("zoomed",{viewport:this,type:"ensureVisible"}));let s=!1;A<this.left?(this.left=A,s=!0):A+t>this.right&&(this.right=A+t,s=!0),e<this.top?(this.top=e,s=!0):e+i>this.bottom&&(this.bottom=e+i,s=!0),s&&this.emit("moved",{viewport:this,type:"ensureVisible"})}}const SF="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAIrSURBVHic7dWhEcQwAAPBJEW4//bsJvzwg446YLcCkRvdc8598RljjNMTeHlOD4AvEwgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUAQCASBQBAIBIFAEAgEgUC499779Aj+1lqnJ/DiQSAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIAgEgkAgCASCQCAIBIJAIPwAhCgMRcz+Nz0AAAAASUVORK5CYII=";var MF=Object.defineProperty,PF=Object.getOwnPropertyDescriptor,$a=(n,A,e,t)=>{for(var i=t>1?void 0:t?PF(A,e):A,r=n.length-1,s;r>=0;r--)(s=n[r])&&(i=(t?s(A,e,i):s(i))||i);return t&&i&&MF(A,e,i),i};ue.Cropper=class extends Gr{constructor(){super(),this._domBoundingRect={x:0,y:0,width:0,height:0},this.app=new N2({backgroundAlpha:0,autoDensity:!0,resolution:2}),this.viewport=new _F({events:this.app.renderer.events,worldWidth:250,worldHeight:250}),this.imageSize={width:0,height:0},this.logoSize={width:0,height:0},this._imageUrl="",this._canvasScale=1,this.texture=new lt(this.app.view),this._timer=0,this._loading=!1,this.pathD="",this.getConfigs=()=>{const{screenWidth:A,screenHeight:e}=this.viewport;if(!this._sprite)return{canvasWidth:A,canvasHeight:e,scaleX:1,scaleY:1,ox:0,oy:0,x:0,y:0,url:this._imageUrl};const t=A/this._sprite.width,i=e/this._sprite.height,r=this.viewport.scale.x/t,s=this.viewport.scale.x/i,o=this._sprite.toGlobal(new uA(-this._sprite.width/2,-this._sprite.height/2)),a=-o.x/(this._sprite.width*this.viewport.scale.x),l=-o.y/(this._sprite.height*this.viewport.scale.y);return{canvasWidth:A,canvasHeight:e,scaleX:r,scaleY:s,ox:a,oy:l,x:this.viewport.position.x,y:this.viewport.position.y,url:this._imageUrl}},this._onChanged=async()=>{if(!this.imageSize.width||!this.imageSize.height||!this.app.view.toDataURL)return;const A=this.app.view.toDataURL("image/png",.75),e=this.app.renderer.gl,{screenWidth:t,screenHeight:i}=this.viewport;if(this._timer&&clearTimeout(this._timer),e){const r=this.app.renderer.width,s=this.app.renderer.height,o=new Uint8Array(r*s*4);e.readPixels(0,0,r,s,e.RGBA,e.UNSIGNED_BYTE,o);let a=r,l=0,u=s,c=0;for(let g=0;g<s;g++)for(let y=0;y<r;y++){const v=(g*r+y)*4;o[v+3]>0&&(a=Math.min(a,y),l=Math.max(l,y),u=Math.min(u,g),c=Math.max(c,g))}const h=this.app.renderer.view.getBoundingClientRect(),f={x:a,y:u,width:l-a+1,height:c-u+1};(a>l||u>c)&&console.log("没有非透明区域"),this.axiosX&&(this.axiosX.style.display="none"),this.axiosY&&(this.axiosY.style.display="none");const p=2,m=t/2,d=i/2;if(h){const g={x:f.x*(h.width/this.app.renderer.width),y:(this.app.renderer.height-f.y-f.height)*(h.height/this.app.renderer.height),width:f.width*(h.width/this.app.renderer.width),height:f.height*(h.height/this.app.renderer.height)};this._domBoundingRect=g,this.boundRect&&(this.boundRect.style.left=`${g.x}px`,this.boundRect.style.top=`${g.y}px`,this.boundRect.style.width=`${g.width}px`,this.boundRect.style.height=`${g.height}px`);const y=g.x+g.width/2,v=g.y+g.height/2,w=m-y,C=d-v;Math.abs(w)<p&&(this.viewport.position.x+=w,this.axiosY&&(this.axiosY.style.display="block")),Math.abs(C)<p&&(this.viewport.position.y+=C,this.axiosX&&(this.axiosX.style.display="block"))}else Math.abs(this.viewport.position.x-m)<p&&(this.viewport.position.x=m,this.axiosY&&(this.axiosY.style.display="block")),Math.abs(this.viewport.position.y-d)<p&&(this.viewport.position.y=d,this.axiosX&&(this.axiosX.style.display="block"));this._timer=window.setTimeout(()=>{this.axiosX&&(this.axiosX.style.display="none"),this.axiosY&&(this.axiosY.style.display="none")},600)}this.dispatchEvent(new CustomEvent("image-change",{detail:{image:A},bubbles:!0,composed:!0}))},this._wheelEvent=A=>{A.preventDefault()},this.updateConfigs=async({canvasWidth:A,x:e,y:t,scaleX:i,url:r})=>{var a;const{screenWidth:s}=this.viewport;this._canvasScale=s/A,await this.add(r,this.logoSize);const o=i*s/(((a=this._sprite)==null?void 0:a.width)||1);this.viewport.scale.set(o*this._canvasScale),this.viewport.position.set(e*this._canvasScale,t*this._canvasScale)},this.app.stage.addChild(this.viewport),this.viewport.drag({}).pinch().wheel().decelerate({friction:0,bounce:1}).on("zoomed-end",this._onChanged).on("moved-end",this._onChanged),this.app.view.addEventListener("wheel",this._wheelEvent,{passive:!1})}get supports(){return["png","jpg","jpeg","svg","webp"]}get loading(){return this._loading}get canvas(){return this.app.view}get imageScale(){if(!this._sprite)return{x:0,y:0};const{screenWidth:A,screenHeight:e}=this.viewport,t=this.viewport.scale.x,i=this._sprite.width*t/2,r=this._sprite.height*t/2,s=this._domBoundingRect.width/i*(i/A),o=this._domBoundingRect.height/r*(r/e);return{x:s,y:o}}get imageRealSize(){const{x:A,y:e}=this.imageScale;let{width:t,height:i}=this.logoSize;const r=Math.max(t,i);return t=r*A,i=r*e,{width:t,height:i}}resize(A,e){this.app.renderer.resize(A,e),this.viewport.resize(A,e)}firstUpdated(A){var e;super.firstUpdated(A),this.container&&((e=this.container)==null||e.append(this.app.view),this.app.resizeTo=this.container)}setUV(A){const{screenWidth:e,screenHeight:t}=this.viewport,i=A.attributes.uv,r=A.index;if(!r){this.pathD="";return}let s=[];for(let a=0;a<r.count;a+=3){const l=r.getX(a),u=r.getX(a+1),c=r.getX(a+2),h=[i.getX(l)*e,i.getY(l)*t],f=[i.getX(u)*e,i.getY(u)*t],p=[i.getX(c)*e,i.getY(c)*t];s.push(h,f,p)}let o="";s.forEach((a,l)=>{l%3===0?o+=`M${a[0]},${a[1]} `:o+=`L${a[0]},${a[1]} `,l%3===2&&(o+="Z ")}),s=[],this.pathD=o}async add(A,e){this.clear(),this._imageUrl=A,this.logoSize=e,this._loading=!0;const t=await GA.fromURL(A);this._sprite=new js(t),this.viewport.addChild(this._sprite),this.imageSize.width=this._sprite.texture.width,this.imageSize.height=this._sprite.texture.height,this.fit(),this._loading=!1}clear(){var A,e;(A=this._sprite)==null||A.texture.destroy(!0),(e=this._sprite)==null||e.removeFromParent(),this.boundRect&&(this.boundRect.style.left="0px",this.boundRect.style.top="0px",this.boundRect.style.width="0px",this.boundRect.style.height="0px")}fit(){if(!this._sprite)return;this.viewport.scale.set(1,1),this._sprite.anchor.set(.5,.5),this.viewport.moveCenter(this._sprite.position.x,this._sprite.position.y);const A=this.viewport.screenWidth,e=this.viewport.screenHeight,t=this._sprite.width/A,i=this._sprite.height/e,r=Math.max(t,i);this.viewport.scale.set(1/r,1/r)}disconnectedCallback(){super.disconnectedCallback(),this.clear(),this.viewport.destroy({children:!0,texture:!0,baseTexture:!0}),this.viewport.off("zoomed"),this.viewport.off("moved"),this.viewport.off("moved-end"),this.app.view.removeEventListener("wheel",this._wheelEvent),this.app.destroy(!0)}render(){const{screenWidth:A,screenHeight:e}=this.viewport;return $i`
9868
9868
  <div class="cropper-container">
9869
9869
  <div class="rect"></div>
9870
9870
  <div class="axios-x"></div>