/** * @license * Copyright 2010-2022 Three.js Authors * SPDX-License-Identifier: MIT */ class EventDispatcher$1{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});const i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;const i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;const i=this._listeners[e];if(void 0!==i){const e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;const t=this._listeners[e.type];if(void 0!==t){e.target=this;const i=t.slice(0);for(let t=0,n=i.length;t>8&255]+e[t>>16&255]+e[t>>24&255]+"-"+e[255&i]+e[i>>8&255]+"-"+e[i>>16&15|64]+e[i>>24&255]+"-"+e[63&n|128]+e[n>>8&255]+"-"+e[n>>16&255]+e[n>>24&255]+e[255&r]+e[r>>8&255]+e[r>>16&255]+e[r>>24&255]).toLowerCase()}function clamp(e,t,i){return Math.max(t,Math.min(i,e))}function euclideanModulo(e,t){return(e%t+t)%t}function lerp(e,t,i){return(1-i)*e+i*t}function isPowerOfTwo(e){return 0==(e&e-1)&&0!==e}function ceilPowerOfTwo(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function floorPowerOfTwo(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}var r=Object.freeze({__proto__:null,DEG2RAD:i,RAD2DEG:n,generateUUID,clamp,euclideanModulo,mapLinear:function mapLinear(e,t,i,n,r){return n+(e-t)*(r-n)/(i-t)},inverseLerp:function inverseLerp(e,t,i){return e!==t?(i-e)/(t-e):0},lerp,damp:function damp(e,t,i,n){return lerp(e,t,1-Math.exp(-i*n))},pingpong:function pingpong(e,t=1){return t-Math.abs(euclideanModulo(e,2*t)-t)},smoothstep:function smoothstep(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*(3-2*e)},smootherstep:function smootherstep(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)},randInt:function randInt(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function randFloat(e,t){return e+Math.random()*(t-e)},randFloatSpread:function randFloatSpread(e){return e*(.5-Math.random())},seededRandom:function seededRandom(e){void 0!==e&&(t=e);let i=t+=1831565813;return i=Math.imul(i^i>>>15,1|i),i^=i+Math.imul(i^i>>>7,61|i),((i^i>>>14)>>>0)/4294967296},degToRad:function degToRad(e){return e*i},radToDeg:function radToDeg(e){return e*n},isPowerOfTwo,ceilPowerOfTwo,floorPowerOfTwo,setQuaternionFromProperEuler:function setQuaternionFromProperEuler(e,t,i,n,r){const s=Math.cos,a=Math.sin,o=s(i/2),l=a(i/2),c=s((t+n)/2),h=a((t+n)/2),d=s((t-n)/2),u=a((t-n)/2),p=s((n-t)/2),m=a((n-t)/2);switch(r){case"XYX":e.set(o*h,l*d,l*u,o*c);break;case"YZY":e.set(l*u,o*h,l*d,o*c);break;case"ZXZ":e.set(l*d,l*u,o*h,o*c);break;case"XZX":e.set(o*h,l*m,l*p,o*c);break;case"YXY":e.set(l*p,o*h,l*m,o*c);break;case"ZYZ":e.set(l*m,l*p,o*h,o*c);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:function normalize(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}},denormalize:function denormalize$1(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}});class Vector2{constructor(e=0,t=0){Vector2.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,i=this.y,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6],this.y=n[1]*t+n[4]*i+n[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.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}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){const i=Math.cos(t),n=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*i-s*n+e.x,this.y=r*n+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Matrix3{constructor(){Matrix3.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,n,r,s,a,o,l){const c=this.elements;return c[0]=e,c[1]=n,c[2]=a,c[3]=t,c[4]=r,c[5]=o,c[6]=i,c[7]=s,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],c=i[4],h=i[7],d=i[2],u=i[5],p=i[8],m=n[0],f=n[3],g=n[6],v=n[1],y=n[4],x=n[7],b=n[2],_=n[5],S=n[8];return r[0]=s*m+a*v+o*b,r[3]=s*f+a*y+o*_,r[6]=s*g+a*x+o*S,r[1]=l*m+c*v+h*b,r[4]=l*f+c*y+h*_,r[7]=l*g+c*x+h*S,r[2]=d*m+u*v+p*b,r[5]=d*f+u*y+p*_,r[8]=d*g+u*x+p*S,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8];return t*s*c-t*a*l-i*r*c+i*a*o+n*r*l-n*s*o}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],h=c*s-a*l,d=a*o-c*r,u=l*r-s*o,p=t*h+i*d+n*u;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const m=1/p;return e[0]=h*m,e[1]=(n*l-c*i)*m,e[2]=(a*i-n*s)*m,e[3]=d*m,e[4]=(c*t-n*o)*m,e[5]=(n*r-a*t)*m,e[6]=u*m,e[7]=(i*o-l*t)*m,e[8]=(s*t-i*r)*m,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,n,r,s,a){const o=Math.cos(r),l=Math.sin(r);return this.set(i*o,i*l,-i*(o*s+l*a)+s+e,-n*l,n*o,-n*(-l*s+o*a)+a+t,0,0,1),this}scale(e,t){const i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=t,i[4]*=t,i[7]*=t,this}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.elements,r=n[0],s=n[3],a=n[6],o=n[1],l=n[4],c=n[7];return n[0]=t*r+i*o,n[3]=t*s+i*l,n[6]=t*a+i*c,n[1]=-i*r+t*o,n[4]=-i*s+t*l,n[7]=-i*a+t*c,this}translate(e,t){const i=this.elements;return i[0]+=e*i[2],i[3]+=e*i[5],i[6]+=e*i[8],i[1]+=t*i[2],i[4]+=t*i[5],i[7]+=t*i[8],this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return(new this.constructor).fromArray(this.elements)}}function arrayNeedsUint32(e){for(let t=e.length-1;t>=0;--t)if(e[t]>65535)return!0;return!1}const s={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function getTypedArray(e,t){return new s[e](t)}function createElementNS(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function SRGBToLinear(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function LinearToSRGB(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}const a={srgb:{"srgb-linear":SRGBToLinear},"srgb-linear":{srgb:LinearToSRGB}},o={legacyMode:!0,get workingColorSpace(){return"srgb-linear"},set workingColorSpace(e){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(e,t,i){if(this.legacyMode||t===i||!t||!i)return e;if(a[t]&&void 0!==a[t][i]){const n=a[t][i];return e.r=n(e.r),e.g=n(e.g),e.b=n(e.b),e}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},l={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},c={r:0,g:0,b:0},h={h:0,s:0,l:0},d={h:0,s:0,l:0};function hue2rgb(e,t,i){return i<0&&(i+=1),i>1&&(i-=1),i<1/6?e+6*(t-e)*i:i<.5?t:i<2/3?e+6*(t-e)*(2/3-i):e}function toComponents(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}class Color$1{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===i?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t="srgb"){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,o.toWorkingColorSpace(this,t),this}setRGB(e,t,i,n="srgb-linear"){return this.r=e,this.g=t,this.b=i,o.toWorkingColorSpace(this,n),this}setHSL(e,t,i,n="srgb-linear"){if(e=euclideanModulo(e,1),t=clamp(t,0,1),i=clamp(i,0,1),0===t)this.r=this.g=this.b=i;else{const n=i<=.5?i*(1+t):i+t-i*t,r=2*i-n;this.r=hue2rgb(r,n,e+1/3),this.g=hue2rgb(r,n,e),this.b=hue2rgb(r,n,e-1/3)}return o.toWorkingColorSpace(this,n),this}setStyle(e,t="srgb"){function handleAlpha(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let e;const n=i[1],r=i[2];switch(n){case"rgb":case"rgba":if(e=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,o.toWorkingColorSpace(this,t),handleAlpha(e[4]),this;if(e=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,o.toWorkingColorSpace(this,t),handleAlpha(e[4]),this;break;case"hsl":case"hsla":if(e=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(r)){const i=parseFloat(e[1])/360,n=parseInt(e[2],10)/100,r=parseInt(e[3],10)/100;return handleAlpha(e[4]),this.setHSL(i,n,r,t)}}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){const e=i[1],n=e.length;if(3===n)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,o.toWorkingColorSpace(this,t),this;if(6===n)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,o.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t="srgb"){const i=l[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=SRGBToLinear(e.r),this.g=SRGBToLinear(e.g),this.b=SRGBToLinear(e.b),this}copyLinearToSRGB(e){return this.r=LinearToSRGB(e.r),this.g=LinearToSRGB(e.g),this.b=LinearToSRGB(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e="srgb"){return o.fromWorkingColorSpace(toComponents(this,c),e),clamp(255*c.r,0,255)<<16^clamp(255*c.g,0,255)<<8^clamp(255*c.b,0,255)<<0}getHexString(e="srgb"){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t="srgb-linear"){o.fromWorkingColorSpace(toComponents(this,c),t);const i=c.r,n=c.g,r=c.b,s=Math.max(i,n,r),a=Math.min(i,n,r);let l,h;const d=(a+s)/2;if(a===s)l=0,h=0;else{const e=s-a;switch(h=d<=.5?e/(s+a):e/(2-s-a),s){case i:l=(n-r)/e+(n2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const t=createElementNS("canvas");t.width=e.width,t.height=e.height;const i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);const n=i.getImageData(0,0,e.width,e.height),r=n.data;for(let e=0;e1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}}Texture.DEFAULT_IMAGE=null,Texture.DEFAULT_MAPPING=300;class Vector4{constructor(e=0,t=0,i=0,n=1){Vector4.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=n}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){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: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*n+s[12]*r,this.y=s[1]*t+s[5]*i+s[9]*n+s[13]*r,this.z=s[2]*t+s[6]*i+s[10]*n+s[14]*r,this.w=s[3]*t+s[7]*i+s[11]*n+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,n,r;const s=.01,a=.1,o=e.elements,l=o[0],c=o[4],h=o[8],d=o[1],u=o[5],p=o[9],m=o[2],f=o[6],g=o[10];if(Math.abs(c-d)o&&e>v?ev?o=0?1:-1,n=1-t*t;if(n>Number.EPSILON){const r=Math.sqrt(n),s=Math.atan2(r,t*i);e=Math.sin(e*s)/r,a=Math.sin(a*s)/r}const r=a*i;if(o=o*e+d*r,l=l*e+u*r,c=c*e+p*r,h=h*e+m*r,e===1-a){const e=1/Math.sqrt(o*o+l*l+c*c+h*h);o*=e,l*=e,c*=e,h*=e}}e[t]=o,e[t+1]=l,e[t+2]=c,e[t+3]=h}static multiplyQuaternionsFlat(e,t,i,n,r,s){const a=i[n],o=i[n+1],l=i[n+2],c=i[n+3],h=r[s],d=r[s+1],u=r[s+2],p=r[s+3];return e[t]=a*p+c*h+o*u-l*d,e[t+1]=o*p+c*d+l*h-a*u,e[t+2]=l*p+c*u+a*d-o*h,e[t+3]=c*p-a*h-o*d-l*u,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,n){return this._x=e,this._y=t,this._z=i,this._w=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");const i=e._x,n=e._y,r=e._z,s=e._order,a=Math.cos,o=Math.sin,l=a(i/2),c=a(n/2),h=a(r/2),d=o(i/2),u=o(n/2),p=o(r/2);switch(s){case"XYZ":this._x=d*c*h+l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h-d*u*p;break;case"YXZ":this._x=d*c*h+l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h+d*u*p;break;case"ZXY":this._x=d*c*h-l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h-d*u*p;break;case"ZYX":this._x=d*c*h-l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h+d*u*p;break;case"YZX":this._x=d*c*h+l*u*p,this._y=l*u*h+d*c*p,this._z=l*c*p-d*u*h,this._w=l*c*h-d*u*p;break;case"XZY":this._x=d*c*h-l*u*p,this._y=l*u*h-d*c*p,this._z=l*c*p+d*u*h,this._w=l*c*h+d*u*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const i=t/2,n=Math.sin(i);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,i=t[0],n=t[4],r=t[8],s=t[1],a=t[5],o=t[9],l=t[2],c=t[6],h=t[10],d=i+a+h;if(d>0){const e=.5/Math.sqrt(d+1);this._w=.25/e,this._x=(c-o)*e,this._y=(r-l)*e,this._z=(s-n)*e}else if(i>a&&i>h){const e=2*Math.sqrt(1+i-a-h);this._w=(c-o)/e,this._x=.25*e,this._y=(n+s)/e,this._z=(r+l)/e}else if(a>h){const e=2*Math.sqrt(1+a-i-h);this._w=(r-l)/e,this._x=(n+s)/e,this._y=.25*e,this._z=(o+c)/e}else{const e=2*Math.sqrt(1+h-i-a);this._w=(s-n)/e,this._x=(r+l)/e,this._y=(o+c)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(clamp(this.dot(e),-1,1)))}rotateTowards(e,t){const i=this.angleTo(e);if(0===i)return this;const n=Math.min(1,t/i);return this.slerp(e,n),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(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._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 e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const i=e._x,n=e._y,r=e._z,s=e._w,a=t._x,o=t._y,l=t._z,c=t._w;return this._x=i*c+s*a+n*l-r*o,this._y=n*c+s*o+r*a-i*l,this._z=r*c+s*l+i*o-n*a,this._w=s*c-i*a-n*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);const i=this._x,n=this._y,r=this._z,s=this._w;let a=s*e._w+i*e._x+n*e._y+r*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=n,this._z=r,this;const o=1-a*a;if(o<=Number.EPSILON){const e=1-t;return this._w=e*s+t*this._w,this._x=e*i+t*this._x,this._y=e*n+t*this._y,this._z=e*r+t*this._z,this.normalize(),this._onChangeCallback(),this}const l=Math.sqrt(o),c=Math.atan2(l,a),h=Math.sin((1-t)*c)/l,d=Math.sin(t*c)/l;return this._w=s*h+this._w*d,this._x=i*h+this._x*d,this._y=n*h+this._y*d,this._z=r*h+this._z*d,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){const e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),n=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(n),i*Math.sin(r),i*Math.cos(r),t*Math.sin(n))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Vector3{constructor(e=0,t=0,i=0){Vector3.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(f.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(f.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*n,this.y=r[1]*t+r[4]*i+r[7]*n,this.z=r[2]*t+r[5]*i+r[8]*n,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,i=this.y,n=this.z,r=e.elements,s=1/(r[3]*t+r[7]*i+r[11]*n+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*n+r[12])*s,this.y=(r[1]*t+r[5]*i+r[9]*n+r[13])*s,this.z=(r[2]*t+r[6]*i+r[10]*n+r[14])*s,this}applyQuaternion(e){const t=this.x,i=this.y,n=this.z,r=e.x,s=e.y,a=e.z,o=e.w,l=o*t+s*n-a*i,c=o*i+a*t-r*n,h=o*n+r*i-s*t,d=-r*t-s*i-a*n;return this.x=l*o+d*-r+c*-a-h*-s,this.y=c*o+d*-s+h*-r-l*-a,this.z=h*o+d*-a+l*-s-c*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const t=this.x,i=this.y,n=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*n,this.y=r[1]*t+r[5]*i+r[9]*n,this.z=r[2]*t+r[6]*i+r[10]*n,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}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=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.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(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const i=e.x,n=e.y,r=e.z,s=t.x,a=t.y,o=t.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this}projectOnVector(e){const t=e.lengthSq();if(0===t)return this.set(0,0,0);const i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return m.copy(this).projectOnVector(e),this.sub(m)}reflect(e){return this.sub(m.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;const i=this.dot(e)/t;return Math.acos(clamp(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){const n=Math.sin(t)*e;return this.x=n*Math.sin(i),this.y=Math.cos(t)*e,this.z=n*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),n=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=n,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const m=new Vector3,f=new Quaternion$1;class Box3{constructor(e=new Vector3(1/0,1/0,1/0),t=new Vector3(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.length;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(t,i,n),this.max.set(r,s,a),this}setFromBufferAttribute(e){let t=1/0,i=1/0,n=1/0,r=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.count;or&&(r=l),c>s&&(s=c),h>a&&(a=h)}return this.min.set(t,i,n),this.max.set(r,s,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,v),v.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(T),E.subVectors(this.max,T),x.subVectors(e.a,T),b.subVectors(e.b,T),_.subVectors(e.c,T),S.subVectors(b,x),w.subVectors(_,b),M.subVectors(x,_);let t=[0,-S.z,S.y,0,-w.z,w.y,0,-M.z,M.y,S.z,0,-S.x,w.z,0,-w.x,M.z,0,-M.x,-S.y,S.x,0,-w.y,w.x,0,-M.y,M.x,0];return!!satForAxes(t,x,b,_,E)&&(t=[1,0,0,0,1,0,0,0,1],!!satForAxes(t,x,b,_,E)&&(C.crossVectors(S,w),t=[C.x,C.y,C.z],satForAxes(t,x,b,_,E)))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return v.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(v).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(g[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),g[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),g[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),g[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),g[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),g[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),g[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),g[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(g)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const g=[new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3,new Vector3],v=new Vector3,y=new Box3,x=new Vector3,b=new Vector3,_=new Vector3,S=new Vector3,w=new Vector3,M=new Vector3,T=new Vector3,E=new Vector3,C=new Vector3,A=new Vector3;function satForAxes(e,t,i,n,r){for(let s=0,a=e.length-3;s<=a;s+=3){A.fromArray(e,s);const a=r.x*Math.abs(A.x)+r.y*Math.abs(A.y)+r.z*Math.abs(A.z),o=t.dot(A),l=i.dot(A),c=n.dot(A);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>a)return!1}return!0}const P=new Box3,D=new Vector3,L=new Vector3,I=new Vector3;class Sphere{constructor(e=new Vector3,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){const i=this.center;void 0!==t?i.copy(t):P.setFromPoints(e).getCenter(i);let n=0;for(let t=0,r=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){I.subVectors(e,this.center);const t=I.lengthSq();if(t>this.radius*this.radius){const e=Math.sqrt(t),i=.5*(e-this.radius);this.center.add(I.multiplyScalar(i/e)),this.radius+=i}return this}union(e){return!0===this.center.equals(e.center)?L.set(0,0,1).multiplyScalar(e.radius):L.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(D.copy(e.center).add(L)),this.expandByPoint(D.copy(e.center).sub(L)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const R=new Vector3,O=new Vector3,N=new Vector3,z=new Vector3,B=new Vector3,U=new Vector3,V=new Vector3;class Ray{constructor(e=new Vector3,t=new Vector3(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,R)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);const i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const t=R.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(R.copy(this.direction).multiplyScalar(t).add(this.origin),R.distanceToSquared(e))}distanceSqToSegment(e,t,i,n){O.copy(e).add(t).multiplyScalar(.5),N.copy(t).sub(e).normalize(),z.copy(this.origin).sub(O);const r=.5*e.distanceTo(t),s=-this.direction.dot(N),a=z.dot(this.direction),o=-z.dot(N),l=z.lengthSq(),c=Math.abs(1-s*s);let h,d,u,p;if(c>0)if(h=s*o-a,d=s*a-o,p=r*c,h>=0)if(d>=-p)if(d<=p){const e=1/c;h*=e,d*=e,u=h*(h+s*d+2*a)+d*(s*h+d+2*o)+l}else d=r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;else d=-r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;else d<=-p?(h=Math.max(0,-(-s*r+a)),d=h>0?-r:Math.min(Math.max(-r,-o),r),u=-h*h+d*(d+2*o)+l):d<=p?(h=0,d=Math.min(Math.max(-r,-o),r),u=d*(d+2*o)+l):(h=Math.max(0,-(s*r+a)),d=h>0?r:Math.min(Math.max(-r,-o),r),u=-h*h+d*(d+2*o)+l);else d=s>0?-r:r,h=Math.max(0,-(s*d+a)),u=-h*h+d*(d+2*o)+l;return i&&i.copy(this.direction).multiplyScalar(h).add(this.origin),n&&n.copy(N).multiplyScalar(d).add(O),u}intersectSphere(e,t){R.subVectors(e.center,this.origin);const i=R.dot(this.direction),n=R.dot(R)-i*i,r=e.radius*e.radius;if(n>r)return null;const s=Math.sqrt(r-n),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;const i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){const i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){const t=e.distanceToPoint(this.origin);if(0===t)return!0;return e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,n,r,s,a,o;const l=1/this.direction.x,c=1/this.direction.y,h=1/this.direction.z,d=this.origin;return l>=0?(i=(e.min.x-d.x)*l,n=(e.max.x-d.x)*l):(i=(e.max.x-d.x)*l,n=(e.min.x-d.x)*l),c>=0?(r=(e.min.y-d.y)*c,s=(e.max.y-d.y)*c):(r=(e.max.y-d.y)*c,s=(e.min.y-d.y)*c),i>s||r>n?null:((r>i||i!=i)&&(i=r),(s=0?(a=(e.min.z-d.z)*h,o=(e.max.z-d.z)*h):(a=(e.max.z-d.z)*h,o=(e.min.z-d.z)*h),i>o||a>n?null:((a>i||i!=i)&&(i=a),(o=0?i:n,t)))}intersectsBox(e){return null!==this.intersectBox(e,R)}intersectTriangle(e,t,i,n,r){B.subVectors(t,e),U.subVectors(i,e),V.crossVectors(B,U);let s,a=this.direction.dot(V);if(a>0){if(n)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}z.subVectors(this.origin,e);const o=s*this.direction.dot(U.crossVectors(z,U));if(o<0)return null;const l=s*this.direction.dot(B.cross(z));if(l<0)return null;if(o+l>a)return null;const c=-s*z.dot(V);return c<0?null:this.at(c/a,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Matrix4{constructor(){Matrix4.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,n,r,s,a,o,l,c,h,d,u,p,m,f){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=n,g[1]=r,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=c,g[10]=h,g[14]=d,g[3]=u,g[7]=p,g[11]=m,g[15]=f,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 Matrix4).fromArray(this.elements)}copy(e){const t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){const t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,i=e.elements,n=1/k.setFromMatrixColumn(e,0).length(),r=1/k.setFromMatrixColumn(e,1).length(),s=1/k.setFromMatrixColumn(e,2).length();return t[0]=i[0]*n,t[1]=i[1]*n,t[2]=i[2]*n,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,i=e.x,n=e.y,r=e.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(n),l=Math.sin(n),c=Math.cos(r),h=Math.sin(r);if("XYZ"===e.order){const e=s*c,i=s*h,n=a*c,r=a*h;t[0]=o*c,t[4]=-o*h,t[8]=l,t[1]=i+n*l,t[5]=e-r*l,t[9]=-a*o,t[2]=r-e*l,t[6]=n+i*l,t[10]=s*o}else if("YXZ"===e.order){const e=o*c,i=o*h,n=l*c,r=l*h;t[0]=e+r*a,t[4]=n*a-i,t[8]=s*l,t[1]=s*h,t[5]=s*c,t[9]=-a,t[2]=i*a-n,t[6]=r+e*a,t[10]=s*o}else if("ZXY"===e.order){const e=o*c,i=o*h,n=l*c,r=l*h;t[0]=e-r*a,t[4]=-s*h,t[8]=n+i*a,t[1]=i+n*a,t[5]=s*c,t[9]=r-e*a,t[2]=-s*l,t[6]=a,t[10]=s*o}else if("ZYX"===e.order){const e=s*c,i=s*h,n=a*c,r=a*h;t[0]=o*c,t[4]=n*l-i,t[8]=e*l+r,t[1]=o*h,t[5]=r*l+e,t[9]=i*l-n,t[2]=-l,t[6]=a*o,t[10]=s*o}else if("YZX"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=r-e*h,t[8]=n*h+i,t[1]=h,t[5]=s*c,t[9]=-a*c,t[2]=-l*c,t[6]=i*h+n,t[10]=e-r*h}else if("XZY"===e.order){const e=s*o,i=s*l,n=a*o,r=a*l;t[0]=o*c,t[4]=-h,t[8]=l*c,t[1]=e*h+r,t[5]=s*c,t[9]=i*h-n,t[2]=n*h-i,t[6]=a*c,t[10]=r*h+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(H,e,W)}lookAt(e,t,i){const n=this.elements;return q.subVectors(e,t),0===q.lengthSq()&&(q.z=1),q.normalize(),j.crossVectors(i,q),0===j.lengthSq()&&(1===Math.abs(i.z)?q.x+=1e-4:q.z+=1e-4,q.normalize(),j.crossVectors(i,q)),j.normalize(),X.crossVectors(q,j),n[0]=j.x,n[4]=X.x,n[8]=q.x,n[1]=j.y,n[5]=X.y,n[9]=q.y,n[2]=j.z,n[6]=X.z,n[10]=q.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const i=e.elements,n=t.elements,r=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],c=i[1],h=i[5],d=i[9],u=i[13],p=i[2],m=i[6],f=i[10],g=i[14],v=i[3],y=i[7],x=i[11],b=i[15],_=n[0],S=n[4],w=n[8],M=n[12],T=n[1],E=n[5],C=n[9],A=n[13],P=n[2],D=n[6],L=n[10],I=n[14],R=n[3],O=n[7],N=n[11],z=n[15];return r[0]=s*_+a*T+o*P+l*R,r[4]=s*S+a*E+o*D+l*O,r[8]=s*w+a*C+o*L+l*N,r[12]=s*M+a*A+o*I+l*z,r[1]=c*_+h*T+d*P+u*R,r[5]=c*S+h*E+d*D+u*O,r[9]=c*w+h*C+d*L+u*N,r[13]=c*M+h*A+d*I+u*z,r[2]=p*_+m*T+f*P+g*R,r[6]=p*S+m*E+f*D+g*O,r[10]=p*w+m*C+f*L+g*N,r[14]=p*M+m*A+f*I+g*z,r[3]=v*_+y*T+x*P+b*R,r[7]=v*S+y*E+x*D+b*O,r[11]=v*w+y*C+x*L+b*N,r[15]=v*M+y*A+x*I+b*z,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],i=e[4],n=e[8],r=e[12],s=e[1],a=e[5],o=e[9],l=e[13],c=e[2],h=e[6],d=e[10],u=e[14];return e[3]*(+r*o*h-n*l*h-r*a*d+i*l*d+n*a*u-i*o*u)+e[7]*(+t*o*u-t*l*d+r*s*d-n*s*u+n*l*c-r*o*c)+e[11]*(+t*l*h-t*a*u-r*s*h+i*s*u+r*a*c-i*l*c)+e[15]*(-n*a*c-t*o*h+t*a*d+n*s*h-i*s*d+i*o*c)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){const n=this.elements;return e.isVector3?(n[12]=e.x,n[13]=e.y,n[14]=e.z):(n[12]=e,n[13]=t,n[14]=i),this}invert(){const e=this.elements,t=e[0],i=e[1],n=e[2],r=e[3],s=e[4],a=e[5],o=e[6],l=e[7],c=e[8],h=e[9],d=e[10],u=e[11],p=e[12],m=e[13],f=e[14],g=e[15],v=h*f*l-m*d*l+m*o*u-a*f*u-h*o*g+a*d*g,y=p*d*l-c*f*l-p*o*u+s*f*u+c*o*g-s*d*g,x=c*m*l-p*h*l+p*a*u-s*m*u-c*a*g+s*h*g,b=p*h*o-c*m*o-p*a*d+s*m*d+c*a*f-s*h*f,_=t*v+i*y+n*x+r*b;if(0===_)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/_;return e[0]=v*S,e[1]=(m*d*r-h*f*r-m*n*u+i*f*u+h*n*g-i*d*g)*S,e[2]=(a*f*r-m*o*r+m*n*l-i*f*l-a*n*g+i*o*g)*S,e[3]=(h*o*r-a*d*r-h*n*l+i*d*l+a*n*u-i*o*u)*S,e[4]=y*S,e[5]=(c*f*r-p*d*r+p*n*u-t*f*u-c*n*g+t*d*g)*S,e[6]=(p*o*r-s*f*r-p*n*l+t*f*l+s*n*g-t*o*g)*S,e[7]=(s*d*r-c*o*r+c*n*l-t*d*l-s*n*u+t*o*u)*S,e[8]=x*S,e[9]=(p*h*r-c*m*r-p*i*u+t*m*u+c*i*g-t*h*g)*S,e[10]=(s*m*r-p*a*r+p*i*l-t*m*l-s*i*g+t*a*g)*S,e[11]=(c*a*r-s*h*r-c*i*l+t*h*l+s*i*u-t*a*u)*S,e[12]=b*S,e[13]=(c*m*n-p*h*n+p*i*d-t*m*d-c*i*f+t*h*f)*S,e[14]=(p*a*n-s*m*n-p*i*o+t*m*o+s*i*f-t*a*f)*S,e[15]=(s*h*n-c*a*n+c*i*o-t*h*o-s*i*d+t*a*d)*S,this}scale(e){const t=this.elements,i=e.x,n=e.y,r=e.z;return t[0]*=i,t[4]*=n,t[8]*=r,t[1]*=i,t[5]*=n,t[9]*=r,t[2]*=i,t[6]*=n,t[10]*=r,t[3]*=i,t[7]*=n,t[11]*=r,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],n=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,n))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const i=Math.cos(t),n=Math.sin(t),r=1-i,s=e.x,a=e.y,o=e.z,l=r*s,c=r*a;return this.set(l*s+i,l*a-n*o,l*o+n*a,0,l*a+n*o,c*a+i,c*o-n*s,0,l*o-n*a,c*o+n*s,r*o*o+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,n,r,s){return this.set(1,i,r,0,e,1,s,0,t,n,1,0,0,0,0,1),this}compose(e,t,i){const n=this.elements,r=t._x,s=t._y,a=t._z,o=t._w,l=r+r,c=s+s,h=a+a,d=r*l,u=r*c,p=r*h,m=s*c,f=s*h,g=a*h,v=o*l,y=o*c,x=o*h,b=i.x,_=i.y,S=i.z;return n[0]=(1-(m+g))*b,n[1]=(u+x)*b,n[2]=(p-y)*b,n[3]=0,n[4]=(u-x)*_,n[5]=(1-(d+g))*_,n[6]=(f+v)*_,n[7]=0,n[8]=(p+y)*S,n[9]=(f-v)*S,n[10]=(1-(d+m))*S,n[11]=0,n[12]=e.x,n[13]=e.y,n[14]=e.z,n[15]=1,this}decompose(e,t,i){const n=this.elements;let r=k.set(n[0],n[1],n[2]).length();const s=k.set(n[4],n[5],n[6]).length(),a=k.set(n[8],n[9],n[10]).length();this.determinant()<0&&(r=-r),e.x=n[12],e.y=n[13],e.z=n[14],G.copy(this);const o=1/r,l=1/s,c=1/a;return G.elements[0]*=o,G.elements[1]*=o,G.elements[2]*=o,G.elements[4]*=l,G.elements[5]*=l,G.elements[6]*=l,G.elements[8]*=c,G.elements[9]*=c,G.elements[10]*=c,t.setFromRotationMatrix(G),i.x=r,i.y=s,i.z=a,this}makePerspective(e,t,i,n,r,s){const a=this.elements,o=2*r/(t-e),l=2*r/(i-n),c=(t+e)/(t-e),h=(i+n)/(i-n),d=-(s+r)/(s-r),u=-2*s*r/(s-r);return a[0]=o,a[4]=0,a[8]=c,a[12]=0,a[1]=0,a[5]=l,a[9]=h,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=u,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,n,r,s){const a=this.elements,o=1/(t-e),l=1/(i-n),c=1/(s-r),h=(t+e)*o,d=(i+n)*l,u=(s+r)*c;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-h,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*c,a[14]=-u,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){const t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){const i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}}const k=new Vector3,G=new Matrix4,H=new Vector3(0,0,0),W=new Vector3(1,1,1),j=new Vector3,X=new Vector3,q=new Vector3,Y=new Matrix4,Z=new Quaternion$1;class Euler{constructor(e=0,t=0,i=0,n=Euler.DefaultOrder){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=n}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,n=this._order){return this._x=e,this._y=t,this._z=i,this._order=n,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){const n=e.elements,r=n[0],s=n[4],a=n[8],o=n[1],l=n[5],c=n[9],h=n[2],d=n[6],u=n[10];switch(t){case"XYZ":this._y=Math.asin(clamp(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-c,u),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(d,l),this._z=0);break;case"YXZ":this._x=Math.asin(-clamp(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(a,u),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-h,r),this._z=0);break;case"ZXY":this._x=Math.asin(clamp(d,-1,1)),Math.abs(d)<.9999999?(this._y=Math.atan2(-h,u),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-clamp(h,-1,1)),Math.abs(h)<.9999999?(this._x=Math.atan2(d,u),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(clamp(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-h,r)):(this._x=0,this._y=Math.atan2(a,u));break;case"XZY":this._z=Math.asin(-clamp(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(d,l),this._y=Math.atan2(a,r)):(this._x=Math.atan2(-c,u),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return Y.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Y,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Z.setFromEuler(this),this.setFromQuaternion(Z,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}toVector3(){console.error("THREE.Euler: .toVector3() has been removed. Use Vector3.setFromEuler() instead")}}Euler.DefaultOrder="XYZ",Euler.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];class Layers{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0){n.children=[];for(let t=0;t0){n.animations=[];for(let t=0;t0&&(i.geometries=t),n.length>0&&(i.materials=n),r.length>0&&(i.textures=r),s.length>0&&(i.images=s),a.length>0&&(i.shapes=a),o.length>0&&(i.skeletons=o),l.length>0&&(i.animations=l),c.length>0&&(i.nodes=c)}return i.object=n,i;function extractFromCache(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?n.multiplyScalar(1/Math.sqrt(r)):n.set(0,0,0)}static getBarycoord(e,t,i,n,r){he.subVectors(n,t),de.subVectors(i,t),ue.subVectors(e,t);const s=he.dot(he),a=he.dot(de),o=he.dot(ue),l=de.dot(de),c=de.dot(ue),h=s*l-a*a;if(0===h)return r.set(-2,-1,-1);const d=1/h,u=(l*o-a*c)*d,p=(s*c-a*o)*d;return r.set(1-u-p,p,u)}static containsPoint(e,t,i,n){return this.getBarycoord(e,t,i,n,pe),pe.x>=0&&pe.y>=0&&pe.x+pe.y<=1}static getUV(e,t,i,n,r,s,a,o){return this.getBarycoord(e,t,i,n,pe),o.set(0,0),o.addScaledVector(r,pe.x),o.addScaledVector(s,pe.y),o.addScaledVector(a,pe.z),o}static isFrontFacing(e,t,i,n){return he.subVectors(i,t),de.subVectors(e,t),he.cross(de).dot(n)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,n){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[n]),this}setFromAttributeAndIndices(e,t,i,n){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,n),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return he.subVectors(this.c,this.b),de.subVectors(this.a,this.b),.5*he.cross(de).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return Triangle.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return Triangle.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,n,r){return Triangle.getUV(e,this.a,this.b,this.c,t,i,n,r)}containsPoint(e){return Triangle.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Triangle.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){const i=this.a,n=this.b,r=this.c;let s,a;me.subVectors(n,i),fe.subVectors(r,i),ve.subVectors(e,i);const o=me.dot(ve),l=fe.dot(ve);if(o<=0&&l<=0)return t.copy(i);ye.subVectors(e,n);const c=me.dot(ye),h=fe.dot(ye);if(c>=0&&h<=c)return t.copy(n);const d=o*h-c*l;if(d<=0&&o>=0&&c<=0)return s=o/(o-c),t.copy(i).addScaledVector(me,s);xe.subVectors(e,r);const u=me.dot(xe),p=fe.dot(xe);if(p>=0&&u<=p)return t.copy(r);const m=u*l-o*p;if(m<=0&&l>=0&&p<=0)return a=l/(l-p),t.copy(i).addScaledVector(fe,a);const f=c*p-u*h;if(f<=0&&h-c>=0&&u-p>=0)return ge.subVectors(r,n),a=(h-c)/(h-c+(u-p)),t.copy(n).addScaledVector(ge,a);const g=1/(f+m+d);return s=m*g,a=d*g,t.copy(i).addScaledVector(me,s).addScaledVector(fe,a)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let be=0;class Material extends EventDispatcher$1{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:be++}),this.uuid=generateUUID(),this.name="",this.type="Material",this.blending=1,this.side=0,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=204,this.blendDst=205,this.blendEquation=100,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=3,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,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.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(const t in e){const i=e[t];if(void 0===i){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if("shading"===t){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===i;continue}const n=this[t];void 0!==n?n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i:console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.")}}toJSON(e){const t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});const i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function extractFromCache(e){const t=[];for(const i in e){const n=e[i];delete n.metadata,t.push(n)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(i.blending=this.blending),0!==this.side&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),"{}"!==JSON.stringify(this.userData)&&(i.userData=this.userData),t){const t=extractFromCache(e.textures),n=extractFromCache(e.images);t.length>0&&(i.textures=t),n.length>0&&(i.images=n)}return i}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const t=e.clippingPlanes;let i=null;if(null!==t){const e=t.length;i=new Array(e);for(let n=0;n!==e;++n)i[n]=t[n].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}}class MeshBasicMaterial extends Material{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Color$1(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.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const _e=new Vector3,Se=new Vector2;class BufferAttribute{constructor(e,t,i){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===i,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let n=0,r=this.itemSize;n0&&(e.userData=this.userData),void 0!==this.parameters){const t=this.parameters;for(const i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};const t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const i=this.attributes;for(const t in i){const n=i[t];e.data.attributes[t]=n.toJSON(e.data)}const n={};let r=!1;for(const t in this.morphAttributes){const i=this.morphAttributes[t],s=[];for(let t=0,n=i.length;t0&&(n[t]=s,r=!0)}r&&(e.data.morphAttributes=n,e.data.morphTargetsRelative=this.morphTargetsRelative);const s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));const a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=e.name;const i=e.index;null!==i&&this.setIndex(i.clone(t));const n=e.attributes;for(const e in n){const i=n[e];this.setAttribute(e,i.clone(t))}const r=e.morphAttributes;for(const e in r){const i=[],n=r[e];for(let e=0,r=n.length;e0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;ei.far?null:{distance:c,point:Xe.clone(),object:e}}(e,t,i,n,Re,Fe,Oe,je);if(p){o&&(Ge.fromBufferAttribute(o,c),He.fromBufferAttribute(o,h),We.fromBufferAttribute(o,d),p.uv=Triangle.getUV(je,Re,Fe,Oe,Ge,He,We,new Vector2)),l&&(Ge.fromBufferAttribute(l,c),He.fromBufferAttribute(l,h),We.fromBufferAttribute(l,d),p.uv2=Triangle.getUV(je,Re,Fe,Oe,Ge,He,We,new Vector2));const e={a:c,b:h,c:d,normal:new Vector3,materialIndex:0};Triangle.getNormal(Re,Fe,Oe,e.normal),p.face=e}return p}class BoxGeometry extends BufferGeometry{constructor(e=1,t=1,i=1,n=1,r=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:n,heightSegments:r,depthSegments:s};const a=this;n=Math.floor(n),r=Math.floor(r),s=Math.floor(s);const o=[],l=[],c=[],h=[];let d=0,u=0;function buildPlane(e,t,i,n,r,s,p,m,f,g,v){const y=s/f,x=p/g,b=s/2,_=p/2,S=m/2,w=f+1,M=g+1;let T=0,E=0;const C=new Vector3;for(let s=0;s0?1:-1,c.push(C.x,C.y,C.z),h.push(o/f),h.push(1-s/g),T+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;const i={};for(const e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}}class Camera extends Object3D{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Matrix4,this.projectionMatrix=new Matrix4,this.projectionMatrixInverse=new Matrix4}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class PerspectiveCamera extends Camera{constructor(e=50,t=1,i=.1,n=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=n,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const t=.5*this.getFilmHeight()/e;this.fov=2*n*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan(.5*i*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*n*Math.atan(Math.tan(.5*i*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,n,r,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let t=e*Math.tan(.5*i*this.fov)/this.zoom,n=2*t,r=this.aspect*n,s=-.5*r;const a=this.view;if(null!==this.view&&this.view.enabled){const e=a.fullWidth,i=a.fullHeight;s+=a.offsetX*r/e,t-=a.offsetY*n/i,r*=a.width/e,n*=a.height/i}const o=this.filmOffset;0!==o&&(s+=e*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+r,t,t-n,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class CubeCamera extends Object3D{constructor(e,t,i){if(super(),this.type="CubeCamera",!0!==i.isWebGLCubeRenderTarget)return void console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.");this.renderTarget=i;const n=new PerspectiveCamera(90,1,e,t);n.layers=this.layers,n.up.set(0,-1,0),n.lookAt(new Vector3(1,0,0)),this.add(n);const r=new PerspectiveCamera(90,1,e,t);r.layers=this.layers,r.up.set(0,-1,0),r.lookAt(new Vector3(-1,0,0)),this.add(r);const s=new PerspectiveCamera(90,1,e,t);s.layers=this.layers,s.up.set(0,0,1),s.lookAt(new Vector3(0,1,0)),this.add(s);const a=new PerspectiveCamera(90,1,e,t);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(new Vector3(0,-1,0)),this.add(a);const o=new PerspectiveCamera(90,1,e,t);o.layers=this.layers,o.up.set(0,-1,0),o.lookAt(new Vector3(0,0,1)),this.add(o);const l=new PerspectiveCamera(90,1,e,t);l.layers=this.layers,l.up.set(0,-1,0),l.lookAt(new Vector3(0,0,-1)),this.add(l)}update(e,t){null===this.parent&&this.updateMatrixWorld();const i=this.renderTarget,[n,r,s,a,o,l]=this.children,c=e.getRenderTarget(),h=e.toneMapping,d=e.xr.enabled;e.toneMapping=0,e.xr.enabled=!1;const u=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,n),e.setRenderTarget(i,1),e.render(t,r),e.setRenderTarget(i,2),e.render(t,s),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,o),i.texture.generateMipmaps=u,e.setRenderTarget(i,5),e.render(t,l),e.setRenderTarget(c),e.toneMapping=h,e.xr.enabled=d,i.texture.needsPMREMUpdate=!0}}class CubeTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l,c){super(e=void 0!==e?e:[],t=void 0!==t?t:301,i,n,r,s,a,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class WebGLCubeRenderTarget extends WebGLRenderTarget{constructor(e,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const i={width:e,height:e,depth:1},n=[i,i,i,i,i,i];this.texture=new CubeTexture(n,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:1006}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const i={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},n=new BoxGeometry(5,5,5),r=new ShaderMaterial({name:"CubemapFromEquirect",uniforms:cloneUniforms(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;const s=new Mesh(n,r),a=t.minFilter;1008===t.minFilter&&(t.minFilter=1006);return new CubeCamera(1,10,this).update(e,s),t.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,i,n){const r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,i,n);e.setRenderTarget(r)}}const Ye=new Vector3,Ze=new Vector3,Ke=new Matrix3;class Plane{constructor(e=new Vector3(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,n){return this.normal.set(e,t,i),this.constant=n,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){const n=Ye.subVectors(i,t).cross(Ze.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){const i=e.delta(Ye),n=this.normal.dot(i);if(0===n)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;const r=-(e.start.dot(this.normal)+this.constant)/n;return r<0||r>1?null:t.copy(i).multiplyScalar(r).add(e.start)}intersectsLine(e){const t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){const i=t||Ke.getNormalMatrix(e),n=this.coplanarPoint(Ye).applyMatrix4(e),r=this.normal.applyMatrix3(i).normalize();return this.constant=-n.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const Qe=new Sphere,Je=new Vector3;class Frustum{constructor(e=new Plane,t=new Plane,i=new Plane,n=new Plane,r=new Plane,s=new Plane){this.planes=[e,t,i,n,r,s]}set(e,t,i,n,r,s){const a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(n),a[4].copy(r),a[5].copy(s),this}copy(e){const t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){const t=this.planes,i=e.elements,n=i[0],r=i[1],s=i[2],a=i[3],o=i[4],l=i[5],c=i[6],h=i[7],d=i[8],u=i[9],p=i[10],m=i[11],f=i[12],g=i[13],v=i[14],y=i[15];return t[0].setComponents(a-n,h-o,m-d,y-f).normalize(),t[1].setComponents(a+n,h+o,m+d,y+f).normalize(),t[2].setComponents(a+r,h+l,m+u,y+g).normalize(),t[3].setComponents(a-r,h-l,m-u,y-g).normalize(),t[4].setComponents(a-s,h-c,m-p,y-v).normalize(),t[5].setComponents(a+s,h+c,m+p,y+v).normalize(),this}intersectsObject(e){const t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Qe.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Qe)}intersectsSprite(e){return Qe.center.set(0,0,0),Qe.radius=.7071067811865476,Qe.applyMatrix4(e.matrixWorld),this.intersectsSphere(Qe)}intersectsSphere(e){const t=this.planes,i=e.center,n=-e.radius;for(let e=0;e<6;e++){if(t[e].distanceToPoint(i)0?e.max.x:e.min.x,Je.y=n.normal.y>0?e.max.y:e.min.y,Je.z=n.normal.z>0?e.max.z:e.min.z,n.distanceToPoint(Je)<0)return!1}return!0}containsPoint(e){const t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function WebGLAnimation(){let e=null,t=!1,i=null,n=null;function onAnimationFrame(t,r){i(t,r),n=e.requestAnimationFrame(onAnimationFrame)}return{start:function(){!0!==t&&null!==i&&(n=e.requestAnimationFrame(onAnimationFrame),t=!0)},stop:function(){e.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function WebGLAttributes(e,t){const i=t.isWebGL2,n=new WeakMap;return{get:function get(e){return e.isInterleavedBufferAttribute&&(e=e.data),n.get(e)},remove:function remove(t){t.isInterleavedBufferAttribute&&(t=t.data);const i=n.get(t);i&&(e.deleteBuffer(i.buffer),n.delete(t))},update:function update(t,r){if(t.isGLBufferAttribute){const e=n.get(t);return void((!e||e.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry.normal );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry.normal );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointLightInfo( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotLightInfo( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalLightInfo( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( - dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry.normal );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( ior - 1.0 ) / ( ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif",output_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tfloat transmissionAlpha = 1.0;\n\tfloat transmissionFactor = transmission;\n\tfloat thicknessFactor = thickness;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\ttransmissionFactor *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tthicknessFactor *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,\n\t\tattenuationColor, attenuationDistance );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );\n\ttransmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( attenuationDistance == 0.0 ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tgl_FragColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tgl_FragColor = vec4( mix( pow( gl_FragColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), gl_FragColor.rgb * 0.0773993808, vec3( lessThanEqual( gl_FragColor.rgb, vec3( 0.04045 ) ) ) ), gl_FragColor.w );\n\t#endif\n\t#include \n\t#include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}",cube_frag:"#include \nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include \n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},et={common:{diffuse:{value:new Color$1(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new Matrix3},uv2Transform:{value:new Matrix3},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Vector2(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Color$1(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:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{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 Color$1(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Matrix3}},sprite:{diffuse:{value:new Color$1(16777215)},opacity:{value:1},center:{value:new Vector2(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new Matrix3}}},tt={basic:{uniforms:mergeUniforms([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:$e.meshbasic_vert,fragmentShader:$e.meshbasic_frag},lambert:{uniforms:mergeUniforms([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.fog,et.lights,{emissive:{value:new Color$1(0)}}]),vertexShader:$e.meshlambert_vert,fragmentShader:$e.meshlambert_frag},phong:{uniforms:mergeUniforms([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Color$1(0)},specular:{value:new Color$1(1118481)},shininess:{value:30}}]),vertexShader:$e.meshphong_vert,fragmentShader:$e.meshphong_frag},standard:{uniforms:mergeUniforms([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Color$1(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:$e.meshphysical_vert,fragmentShader:$e.meshphysical_frag},toon:{uniforms:mergeUniforms([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Color$1(0)}}]),vertexShader:$e.meshtoon_vert,fragmentShader:$e.meshtoon_frag},matcap:{uniforms:mergeUniforms([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:$e.meshmatcap_vert,fragmentShader:$e.meshmatcap_frag},points:{uniforms:mergeUniforms([et.points,et.fog]),vertexShader:$e.points_vert,fragmentShader:$e.points_frag},dashed:{uniforms:mergeUniforms([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:$e.linedashed_vert,fragmentShader:$e.linedashed_frag},depth:{uniforms:mergeUniforms([et.common,et.displacementmap]),vertexShader:$e.depth_vert,fragmentShader:$e.depth_frag},normal:{uniforms:mergeUniforms([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:$e.meshnormal_vert,fragmentShader:$e.meshnormal_frag},sprite:{uniforms:mergeUniforms([et.sprite,et.fog]),vertexShader:$e.sprite_vert,fragmentShader:$e.sprite_frag},background:{uniforms:{uvTransform:{value:new Matrix3},t2D:{value:null}},vertexShader:$e.background_vert,fragmentShader:$e.background_frag},cube:{uniforms:mergeUniforms([et.envmap,{opacity:{value:1}}]),vertexShader:$e.cube_vert,fragmentShader:$e.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:$e.equirect_vert,fragmentShader:$e.equirect_frag},distanceRGBA:{uniforms:mergeUniforms([et.common,et.displacementmap,{referencePosition:{value:new Vector3},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:$e.distanceRGBA_vert,fragmentShader:$e.distanceRGBA_frag},shadow:{uniforms:mergeUniforms([et.lights,et.fog,{color:{value:new Color$1(0)},opacity:{value:1}}]),vertexShader:$e.shadow_vert,fragmentShader:$e.shadow_frag}};function WebGLBackground(e,t,i,n,r,s){const a=new Color$1(0);let o,l,c=!0===r?0:1,h=null,d=0,u=null;function setClear(e,t){i.buffers.color.setClear(e.r,e.g,e.b,t,s)}return{getClearColor:function(){return a},setClearColor:function(e,t=1){a.set(e),c=t,setClear(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(e){c=e,setClear(a,c)},render:function render(i,r){let s=!1,p=!0===r.isScene?r.background:null;p&&p.isTexture&&(p=t.get(p));const m=e.xr,f=m.getSession&&m.getSession();f&&"additive"===f.environmentBlendMode&&(p=null),null===p?setClear(a,c):p&&p.isColor&&(setClear(p,1),s=!0),(e.autoClear||s)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),p&&(p.isCubeTexture||306===p.mapping)?(void 0===l&&(l=new Mesh(new BoxGeometry(1,1,1),new ShaderMaterial({name:"BackgroundCubeMaterial",uniforms:cloneUniforms(tt.cube.uniforms),vertexShader:tt.cube.vertexShader,fragmentShader:tt.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(l)),l.material.uniforms.envMap.value=p,l.material.uniforms.flipEnvMap.value=p.isCubeTexture&&!1===p.isRenderTargetTexture?-1:1,h===p&&d===p.version&&u===e.toneMapping||(l.material.needsUpdate=!0,h=p,d=p.version,u=e.toneMapping),l.layers.enableAll(),i.unshift(l,l.geometry,l.material,0,0,null)):p&&p.isTexture&&(void 0===o&&(o=new Mesh(new PlaneGeometry(2,2),new ShaderMaterial({name:"BackgroundMaterial",uniforms:cloneUniforms(tt.background.uniforms),vertexShader:tt.background.vertexShader,fragmentShader:tt.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(o)),o.material.uniforms.t2D.value=p,!0===p.matrixAutoUpdate&&p.updateMatrix(),o.material.uniforms.uvTransform.value.copy(p.matrix),h===p&&d===p.version&&u===e.toneMapping||(o.material.needsUpdate=!0,h=p,d=p.version,u=e.toneMapping),o.layers.enableAll(),i.unshift(o,o.geometry,o.material,0,0,null))}}}function WebGLBindingStates(e,t,i,n){const r=e.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||null!==s,o={},l=createBindingState(null);let c=l,h=!1;function bindVertexArrayObject(t){return n.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function deleteVertexArrayObject(t){return n.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function createBindingState(e){const t=[],i=[],n=[];for(let e=0;e=0){const i=r[t];let n=s[t];if(void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor)),void 0===i)return!0;if(i.attribute!==n)return!0;if(n&&i.data!==n.data)return!0;a++}}return c.attributesNum!==a||c.index!==n}(r,u,d,p),m&&function saveCache(e,t,i,n){const r={},s=t.attributes;let a=0;const o=i.getAttributes();for(const t in o){if(o[t].location>=0){let i=s[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));const n={};n.attribute=i,i&&i.data&&(n.data=i.data),r[t]=n,a++}}c.attributes=r,c.attributesNum=a,c.index=n}(r,u,d,p)}else{const e=!0===l.wireframe;c.geometry===u.id&&c.program===d.id&&c.wireframe===e||(c.geometry=u.id,c.program=d.id,c.wireframe=e,m=!0)}null!==p&&i.update(p,34963),(m||h)&&(h=!1,function setupVertexAttributes(r,s,a,o){if(!1===n.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;initAttributes();const l=o.attributes,c=a.getAttributes(),h=s.defaultAttributeValues;for(const t in c){const n=c[t];if(n.location>=0){let s=l[t];if(void 0===s&&("instanceMatrix"===t&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===t&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const t=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;const c=l.buffer,h=l.type,d=l.bytesPerElement;if(s.isInterleavedBufferAttribute){const i=s.data,l=i.stride,u=s.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}const r="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&e instanceof WebGL2ComputeRenderingContext;let s=void 0!==i.precision?i.precision:"highp";const a=getMaxPrecision(s);a!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",a,"instead."),s=a);const o=r||t.has("WEBGL_draw_buffers"),l=!0===i.logarithmicDepthBuffer,c=e.getParameter(34930),h=e.getParameter(35660),d=e.getParameter(3379),u=e.getParameter(34076),p=e.getParameter(34921),m=e.getParameter(36347),f=e.getParameter(36348),g=e.getParameter(36349),v=h>0,y=r||t.has("OES_texture_float");return{isWebGL2:r,drawBuffers:o,getMaxAnisotropy:function getMaxAnisotropy(){if(void 0!==n)return n;if(!0===t.has("EXT_texture_filter_anisotropic")){const i=t.get("EXT_texture_filter_anisotropic");n=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else n=0;return n},getMaxPrecision,precision:s,logarithmicDepthBuffer:l,maxTextures:c,maxVertexTextures:h,maxTextureSize:d,maxCubemapSize:u,maxAttributes:p,maxVertexUniforms:m,maxVaryings:f,maxFragmentUniforms:g,vertexTextures:v,floatFragmentTextures:y,floatVertexTextures:v&&y,maxSamples:r?e.getParameter(36183):0}}function WebGLClipping(e){const t=this;let i=null,n=0,r=!1,s=!1;const a=new Plane,o=new Matrix3,l={value:null,needsUpdate:!1};function resetGlobalState(){l.value!==i&&(l.value=i,l.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function projectPlanes(e,i,n,r){const s=null!==e?e.length:0;let c=null;if(0!==s){if(c=l.value,!0!==r||null===c){const t=n+4*s,r=i.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0){const r=new WebGLCubeRenderTarget(n.height/2);return r.fromEquirectangularTexture(e,i),t.set(i,r),i.addEventListener("dispose",onTextureDispose),mapTextureMapping(r.texture,i.mapping)}return null}}}return i},dispose:function dispose(){t=new WeakMap}}}tt.physical={uniforms:mergeUniforms([tt.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Vector2(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Color$1(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Vector2},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Color$1(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Color$1(1,1,1)},specularColorMap:{value:null}}]),vertexShader:$e.meshphysical_vert,fragmentShader:$e.meshphysical_frag};class OrthographicCamera extends Camera{constructor(e=-1,t=1,i=1,n=-1,r=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=n,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,n,r,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=n,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,n=(this.top+this.bottom)/2;let r=i-e,s=i+e,a=n+t,o=n-t;if(null!==this.view&&this.view.enabled){const e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=e*this.view.offsetX,s=r+e*this.view.width,a-=t*this.view.offsetY,o=a-t*this.view.height}this.projectionMatrix.makeOrthographic(r,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}}const it=[.125,.215,.35,.446,.526,.582],nt=new OrthographicCamera,rt=new Color$1;let st=null;const at=(1+Math.sqrt(5))/2,ot=1/at,lt=[new Vector3(1,1,1),new Vector3(-1,1,1),new Vector3(1,1,-1),new Vector3(-1,1,-1),new Vector3(0,at,ot),new Vector3(0,at,-ot),new Vector3(ot,0,at),new Vector3(-ot,0,at),new Vector3(at,ot,0),new Vector3(-at,ot,0)];class PMREMGenerator{constructor(e){this._renderer=e,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(e,t=0,i=.1,n=100){st=this._renderer.getRenderTarget(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,i,n,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=_getCubemapMaterial(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=_getEquirectMaterial(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?o=it[a-e+4-1]:0===a&&(o=0),n.push(o);const l=1/(s-2),c=-l,h=1+l,d=[c,c,h,c,h,h,c,c,h,h,c,h],u=6,p=6,m=3,f=2,g=1,v=new Float32Array(m*p*u),y=new Float32Array(f*p*u),x=new Float32Array(g*p*u);for(let e=0;e2?0:-1,n=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];v.set(n,m*p*e),y.set(d,f*p*e);const r=[e,e,e,e,e,e];x.set(r,g*p*e)}const b=new BufferGeometry;b.setAttribute("position",new BufferAttribute(v,m)),b.setAttribute("uv",new BufferAttribute(y,f)),b.setAttribute("faceIndex",new BufferAttribute(x,g)),t.push(b),r>4&&r--}return{lodPlanes:t,sizeLods:i,sigmas:n}}(n)),this._blurMaterial=function _getBlurShader(e,t,i){const n=new Float32Array(20),r=new Vector3(0,1,0);return new ShaderMaterial({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/i,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}(n,e,t)}return n}_compileMaterial(e){const t=new Mesh(this._lodPlanes[0],e);this._renderer.compile(t,nt)}_sceneToCubeUV(e,t,i,n){const r=new PerspectiveCamera(90,1,t,i),s=[1,-1,1,1,1,1],a=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,c=o.toneMapping;o.getClearColor(rt),o.toneMapping=0,o.autoClear=!1;const h=new MeshBasicMaterial({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),d=new Mesh(new BoxGeometry,h);let u=!1;const p=e.background;p?p.isColor&&(h.color.copy(p),e.background=null,u=!0):(h.color.copy(rt),u=!0);for(let t=0;t<6;t++){const i=t%3;0===i?(r.up.set(0,s[t],0),r.lookAt(a[t],0,0)):1===i?(r.up.set(0,0,s[t]),r.lookAt(0,a[t],0)):(r.up.set(0,s[t],0),r.lookAt(0,0,a[t]));const l=this._cubeSize;_setViewport(n,i*l,t>2?l:0,l,l),o.setRenderTarget(n),u&&o.render(d,r),o.render(e,r)}d.geometry.dispose(),d.material.dispose(),o.toneMapping=c,o.autoClear=l,e.background=p}_textureToCubeUV(e,t){const i=this._renderer,n=301===e.mapping||302===e.mapping;n?(null===this._cubemapMaterial&&(this._cubemapMaterial=_getCubemapMaterial()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=_getEquirectMaterial());const r=n?this._cubemapMaterial:this._equirectMaterial,s=new Mesh(this._lodPlanes[0],r);r.uniforms.envMap.value=e;const a=this._cubeSize;_setViewport(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(s,nt)}_applyPMREM(e){const t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;t20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${m} samples when the maximum is set to 20`);const f=[];let g=0;for(let e=0;e<20;++e){const t=e/p,i=Math.exp(-t*t/2);f.push(i),0===e?g+=i:ev-4?n-v+4:0),4*(this._cubeSize-y),3*y,2*y),o.setRenderTarget(t),o.render(c,nt)}}function _createRenderTarget(e,t,i){const n=new WebGLRenderTarget(e,t,i);return n.texture.mapping=306,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function _setViewport(e,t,i,n,r){e.viewport.set(t,i,n,r),e.scissor.set(t,i,n,r)}function _getEquirectMaterial(){return new ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function _getCubemapMaterial(){return new ShaderMaterial({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:_getCommonVertexShader(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:0,depthTest:!1,depthWrite:!1})}function _getCommonVertexShader(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function WebGLCubeUVMaps(e){let t=new WeakMap,i=null;function onTextureDispose(e){const i=e.target;i.removeEventListener("dispose",onTextureDispose);const n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function get(n){if(n&&n.isTexture){const r=n.mapping,s=303===r||304===r,a=301===r||302===r;if(s||a){if(n.isRenderTargetTexture&&!0===n.needsPMREMUpdate){n.needsPMREMUpdate=!1;let r=t.get(n);return null===i&&(i=new PMREMGenerator(e)),r=s?i.fromEquirectangular(n,r):i.fromCubemap(n,r),t.set(n,r),r.texture}if(t.has(n))return t.get(n).texture;{const r=n.image;if(s&&r&&r.height>0||a&&r&&function isCubeTextureComplete(e){let t=0;const i=6;for(let n=0;nt.maxTextureSize&&(m=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);const f=new Float32Array(p*m*4*r),g=new DataArrayTexture(f,p,m,r);g.type=1015,g.needsUpdate=!0;const v=4*u;for(let t=0;t0)return e;const r=t*i;let s=pt[r];if(void 0===s&&(s=new Float32Array(r),pt[r]=s),0!==t){n.toArray(s,0);for(let n=1,r=0;n!==t;++n)r+=i,e[n].toArray(s,r)}return s}function arraysEqual(e,t){if(e.length!==t.length)return!1;for(let i=0,n=e.length;i":" "} ${r}: ${i[e]}`)}return n.join("\n")}(e.getShaderSource(t),n)}return r}function getTexelEncodingFunction(e,t){const i=function getEncodingComponents(e){switch(e){case 3e3:return["Linear","( value )"];case 3001:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}(t);return"vec4 "+e+"( vec4 value ) { return LinearTo"+i[0]+i[1]+"; }"}function getToneMappingFunction(e,t){let i;switch(t){case 1:i="Linear";break;case 2:i="Reinhard";break;case 3:i="OptimizedCineon";break;case 4:i="ACESFilmic";break;case 5:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}function filterEmptyLine(e){return""!==e}function replaceLightNums(e,t){return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function replaceClippingPlaneNums(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}const bt=/^[ \t]*#include +<([\w\d./]+)>/gm;function resolveIncludes(e){return e.replace(bt,includeReplacer)}function includeReplacer(e,t){const i=$e[t];if(void 0===i)throw new Error("Can not resolve #include <"+t+">");return resolveIncludes(i)}const _t=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,St=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function unrollLoops(e){return e.replace(St,loopReplacer).replace(_t,deprecatedLoopReplacer)}function deprecatedLoopReplacer(e,t,i,n){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),loopReplacer(e,t,i,n)}function loopReplacer(e,t,i,n){let r="";for(let e=parseInt(t);e0&&(g+="\n"),v=[p,m].filter(filterEmptyLine).join("\n"),v.length>0&&(v+="\n")):(g=[generatePrecision(i),"#define SHADER_NAME "+i.shaderName,m,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+h:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.morphColors&&i.isWebGL2?"#define USE_MORPHCOLORS":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+i.morphTextureStride:"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_COUNT "+i.morphTargetsCount:"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(filterEmptyLine).join("\n"),v=[p,generatePrecision(i),"#define SHADER_NAME "+i.shaderName,m,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+h:"",i.envMap?"#define "+d:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescence?"#define USE_IRIDESCENCE":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheen?"#define USE_SHEEN":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==i.toneMapping?"#define TONE_MAPPING":"",0!==i.toneMapping?$e.tonemapping_pars_fragment:"",0!==i.toneMapping?getToneMappingFunction("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.opaque?"#define OPAQUE":"",$e.encodings_pars_fragment,getTexelEncodingFunction("linearToOutputTexel",i.outputEncoding),i.useDepthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(filterEmptyLine).join("\n")),a=resolveIncludes(a),a=replaceLightNums(a,i),a=replaceClippingPlaneNums(a,i),o=resolveIncludes(o),o=replaceLightNums(o,i),o=replaceClippingPlaneNums(o,i),a=unrollLoops(a),o=unrollLoops(o),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(y="#version 300 es\n",g=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+g,v=["#define varying in","300 es"===i.glslVersion?"":"layout(location = 0) out highp vec4 pc_fragColor;","300 es"===i.glslVersion?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+v);const x=y+v+o,b=WebGLShader(r,35633,y+g+a),_=WebGLShader(r,35632,x);if(r.attachShader(f,b),r.attachShader(f,_),void 0!==i.index0AttributeName?r.bindAttribLocation(f,0,i.index0AttributeName):!0===i.morphTargets&&r.bindAttribLocation(f,0,"position"),r.linkProgram(f),e.debug.checkShaderErrors){const e=r.getProgramInfoLog(f).trim(),t=r.getShaderInfoLog(b).trim(),i=r.getShaderInfoLog(_).trim();let n=!0,s=!0;if(!1===r.getProgramParameter(f,35714)){n=!1;const t=getShaderErrors(r,b,"vertex"),i=getShaderErrors(r,_,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(f,35715)+"\n\nProgram Info Log: "+e+"\n"+t+"\n"+i)}else""!==e?console.warn("THREE.WebGLProgram: Program Info Log:",e):""!==t&&""!==i||(s=!1);s&&(this.diagnostics={runnable:n,programLog:e,vertexShader:{log:t,prefix:g},fragmentShader:{log:i,prefix:v}})}let S,w;return r.deleteShader(b),r.deleteShader(_),this.getUniforms=function(){return void 0===S&&(S=new WebGLUniforms(r,f)),S},this.getAttributes=function(){return void 0===w&&(w=function fetchAttributeLocations(e,t){const i={},n=e.getProgramParameter(t,35721);for(let r=0;r0,I=s.clearcoat>0,R=s.iridescence>0;return{isWebGL2:h,shaderID:S,shaderName:s.type,vertexShader:T,fragmentShader:E,defines:s.defines,customVertexShaderID:C,customFragmentShaderID:A,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:p,instancing:!0===g.isInstancedMesh,instancingColor:!0===g.isInstancedMesh&&null!==g.instanceColor,supportsVertexTextures:u,outputEncoding:null===D?e.outputEncoding:!0===D.isXRRenderTarget?D.texture.encoding:3e3,map:!!s.map,matcap:!!s.matcap,envMap:!!b,envMapMode:b&&b.mapping,envMapCubeUVHeight:_,lightMap:!!s.lightMap,aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:1===s.normalMapType,tangentSpaceNormalMap:0===s.normalMapType,decodeVideoTexture:!!s.map&&!0===s.map.isVideoTexture&&3001===s.map.encoding,clearcoat:I,clearcoatMap:I&&!!s.clearcoatMap,clearcoatRoughnessMap:I&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:I&&!!s.clearcoatNormalMap,iridescence:R,iridescenceMap:R&&!!s.iridescenceMap,iridescenceThicknessMap:R&&!!s.iridescenceThicknessMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,opaque:!1===s.transparent&&1===s.blending,alphaMap:!!s.alphaMap,alphaTest:L,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!y.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!y.attributes.color&&4===y.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheenColorMap||s.sheenRoughnessMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!v,useFog:!0===s.fog,fogExp2:v&&v.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:d,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==y.morphAttributes.position,morphNormals:void 0!==y.morphAttributes.normal,morphColors:void 0!==y.morphAttributes.color,morphTargetsCount:M,morphTextureStride:P,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:s.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:s.toneMapped?e.toneMapping:0,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:2===s.side,flipSided:1===s.side,useDepthPacking:!!s.depthPacking,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function getProgramCacheKey(t){const i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(const e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(!function getProgramCacheKeyParameters(e,t){e.push(t.precision),e.push(t.outputEncoding),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.combine),e.push(t.vertexUvs),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(i,t),function getProgramCacheKeyBooleans(e,t){o.disableAll(),t.isWebGL2&&o.enable(0);t.supportsVertexTextures&&o.enable(1);t.instancing&&o.enable(2);t.instancingColor&&o.enable(3);t.map&&o.enable(4);t.matcap&&o.enable(5);t.envMap&&o.enable(6);t.lightMap&&o.enable(7);t.aoMap&&o.enable(8);t.emissiveMap&&o.enable(9);t.bumpMap&&o.enable(10);t.normalMap&&o.enable(11);t.objectSpaceNormalMap&&o.enable(12);t.tangentSpaceNormalMap&&o.enable(13);t.clearcoat&&o.enable(14);t.clearcoatMap&&o.enable(15);t.clearcoatRoughnessMap&&o.enable(16);t.clearcoatNormalMap&&o.enable(17);t.iridescence&&o.enable(18);t.iridescenceMap&&o.enable(19);t.iridescenceThicknessMap&&o.enable(20);t.displacementMap&&o.enable(21);t.specularMap&&o.enable(22);t.roughnessMap&&o.enable(23);t.metalnessMap&&o.enable(24);t.gradientMap&&o.enable(25);t.alphaMap&&o.enable(26);t.alphaTest&&o.enable(27);t.vertexColors&&o.enable(28);t.vertexAlphas&&o.enable(29);t.vertexUvs&&o.enable(30);t.vertexTangents&&o.enable(31);t.uvsVertexOnly&&o.enable(32);t.fog&&o.enable(33);e.push(o.mask),o.disableAll(),t.useFog&&o.enable(0);t.flatShading&&o.enable(1);t.logarithmicDepthBuffer&&o.enable(2);t.skinning&&o.enable(3);t.morphTargets&&o.enable(4);t.morphNormals&&o.enable(5);t.morphColors&&o.enable(6);t.premultipliedAlpha&&o.enable(7);t.shadowMapEnabled&&o.enable(8);t.physicallyCorrectLights&&o.enable(9);t.doubleSided&&o.enable(10);t.flipSided&&o.enable(11);t.useDepthPacking&&o.enable(12);t.dithering&&o.enable(13);t.specularIntensityMap&&o.enable(14);t.specularColorMap&&o.enable(15);t.transmission&&o.enable(16);t.transmissionMap&&o.enable(17);t.thicknessMap&&o.enable(18);t.sheen&&o.enable(19);t.sheenColorMap&&o.enable(20);t.sheenRoughnessMap&&o.enable(21);t.decodeVideoTexture&&o.enable(22);t.opaque&&o.enable(23);e.push(o.mask)}(i,t),i.push(e.outputEncoding)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function getUniforms(e){const t=m[e.type];let i;if(t){const e=tt[t];i=qe.clone(e.uniforms)}else i=e.uniforms;return i},acquireProgram:function acquireProgram(t,i){let n;for(let e=0,t=c.length;e0?n.push(c):!0===s.transparent?r.push(c):i.push(c)},unshift:function unshift(e,t,s,a,o,l){const c=getNextRenderItem(e,t,s,a,o,l);s.transmission>0?n.unshift(c):!0===s.transparent?r.unshift(c):i.unshift(c)},finish:function finish(){for(let i=t,n=e.length;i1&&i.sort(e||painterSortStable),n.length>1&&n.sort(t||reversePainterSortStable),r.length>1&&r.sort(t||reversePainterSortStable)}}}function WebGLRenderLists(){let e=new WeakMap;return{get:function get(t,i){let n;return!1===e.has(t)?(n=new WebGLRenderList,e.set(t,[n])):i>=e.get(t).length?(n=new WebGLRenderList,e.get(t).push(n)):n=e.get(t)[i],n},dispose:function dispose(){e=new WeakMap}}}function UniformsCache(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":i={direction:new Vector3,color:new Color$1};break;case"SpotLight":i={position:new Vector3,direction:new Vector3,color:new Color$1,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new Vector3,color:new Color$1,distance:0,decay:0};break;case"HemisphereLight":i={direction:new Vector3,skyColor:new Color$1,groundColor:new Color$1};break;case"RectAreaLight":i={color:new Color$1,position:new Vector3,halfWidth:new Vector3,halfHeight:new Vector3}}return e[t.id]=i,i}}}let Mt=0;function shadowCastingLightsFirst(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function WebGLLights(e,t){const i=new UniformsCache,n=function ShadowUniformsCache(){const e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Vector2,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=i,i}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let e=0;e<9;e++)r.probe.push(new Vector3);const s=new Vector3,a=new Matrix4,o=new Matrix4;return{setup:function setup(s,a){let o=0,l=0,c=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let h=0,d=0,u=0,p=0,m=0,f=0,g=0,v=0;s.sort(shadowCastingLightsFirst);const y=!0!==a?Math.PI:1;for(let e=0,t=s.length;e0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=et.LTC_FLOAT_1,r.rectAreaLTC2=et.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=et.LTC_HALF_1,r.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),r.ambient[0]=o,r.ambient[1]=l,r.ambient[2]=c;const x=r.hash;x.directionalLength===h&&x.pointLength===d&&x.spotLength===u&&x.rectAreaLength===p&&x.hemiLength===m&&x.numDirectionalShadows===f&&x.numPointShadows===g&&x.numSpotShadows===v||(r.directional.length=h,r.spot.length=u,r.rectArea.length=p,r.point.length=d,r.hemi.length=m,r.directionalShadow.length=f,r.directionalShadowMap.length=f,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=v,r.spotShadowMap.length=v,r.directionalShadowMatrix.length=f,r.pointShadowMatrix.length=g,r.spotShadowMatrix.length=v,x.directionalLength=h,x.pointLength=d,x.spotLength=u,x.rectAreaLength=p,x.hemiLength=m,x.numDirectionalShadows=f,x.numPointShadows=g,x.numSpotShadows=v,r.version=Mt++)},setupView:function setupView(e,t){let i=0,n=0,l=0,c=0,h=0;const d=t.matrixWorldInverse;for(let t=0,u=e.length;t=i.get(n).length?(s=new WebGLRenderState(e,t),i.get(n).push(s)):s=i.get(n)[r],s},dispose:function dispose(){i=new WeakMap}}}class MeshDepthMaterial extends Material{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class MeshDistanceMaterial extends Material{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new Vector3,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}function WebGLShadowMap(e,t,i){let n=new Frustum;const r=new Vector2,s=new Vector2,a=new Vector4,o=new MeshDepthMaterial({depthPacking:3201}),l=new MeshDistanceMaterial,c={},h=i.maxTextureSize,d={0:1,1:0,2:2},u=new ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Vector2},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=u.clone();p.defines.HORIZONTAL_PASS=1;const m=new BufferGeometry;m.setAttribute("position",new BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const f=new Mesh(m,u),g=this;function VSMPass(i,n){const s=t.update(f);u.defines.VSM_SAMPLES!==i.blurSamples&&(u.defines.VSM_SAMPLES=i.blurSamples,p.defines.VSM_SAMPLES=i.blurSamples,u.needsUpdate=!0,p.needsUpdate=!0),null===i.mapPass&&(i.mapPass=new WebGLRenderTarget(r.x,r.y)),u.uniforms.shadow_pass.value=i.map.texture,u.uniforms.resolution.value=i.mapSize,u.uniforms.radius.value=i.radius,e.setRenderTarget(i.mapPass),e.clear(),e.renderBufferDirect(n,null,s,u,f,null),p.uniforms.shadow_pass.value=i.mapPass.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,e.setRenderTarget(i.map),e.clear(),e.renderBufferDirect(n,null,s,p,f,null)}function getDepthMaterial(t,i,n,r,s,a){let h=null;const u=!0===n.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(h=void 0!==u?u:!0===n.isPointLight?l:o,e.localClippingEnabled&&!0===i.clipShadows&&Array.isArray(i.clippingPlanes)&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0){const e=h.uuid,t=i.uuid;let n=c[e];void 0===n&&(n={},c[e]=n);let r=n[t];void 0===r&&(r=h.clone(),n[t]=r),h=r}return h.visible=i.visible,h.wireframe=i.wireframe,h.side=3===a?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:d[i.side],h.alphaMap=i.alphaMap,h.alphaTest=i.alphaTest,h.clipShadows=i.clipShadows,h.clippingPlanes=i.clippingPlanes,h.clipIntersection=i.clipIntersection,h.displacementMap=i.displacementMap,h.displacementScale=i.displacementScale,h.displacementBias=i.displacementBias,h.wireframeLinewidth=i.wireframeLinewidth,h.linewidth=i.linewidth,!0===n.isPointLight&&!0===h.isMeshDistanceMaterial&&(h.referencePosition.setFromMatrixPosition(n.matrixWorld),h.nearDistance=r,h.farDistance=s),h}function renderObject(i,r,s,a,o){if(!1===i.visible)return;if(i.layers.test(r.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&3===o)&&(!i.frustumCulled||n.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);const n=t.update(i),r=i.material;if(Array.isArray(r)){const t=n.groups;for(let l=0,c=t.length;lh||r.y>h)&&(r.x>h&&(s.x=Math.floor(h/p.x),r.x=s.x*p.x,d.mapSize.x=s.x),r.y>h&&(s.y=Math.floor(h/p.y),r.y=s.y*p.y,d.mapSize.y=s.y)),null===d.map){const e=3!==this.type?{minFilter:1003,magFilter:1003}:{};d.map=new WebGLRenderTarget(r.x,r.y,e),d.map.texture.name=c.name+".shadowMap",d.camera.updateProjectionMatrix()}e.setRenderTarget(d.map),e.clear();const m=d.getViewportCount();for(let e=0;e=1):-1!==L.indexOf("OpenGL ES")&&(D=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),P=D>=2);let I=null,R={};const O=e.getParameter(3088),N=e.getParameter(2978),z=(new Vector4).fromArray(O),B=(new Vector4).fromArray(N);function createTexture(t,i,n){const r=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;tn||e.height>n)&&(r=n/Math.max(e.width,e.height)),r<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){const n=t?floorPowerOfTwo:Math.floor,s=n(r*e.width),a=n(r*e.height);void 0===f&&(f=createCanvas(s,a));const o=i?createCanvas(s,a):f;o.width=s,o.height=a;return o.getContext("2d").drawImage(e,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+s+"x"+a+")."),o}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function isPowerOfTwo$1(e){return isPowerOfTwo(e.width)&&isPowerOfTwo(e.height)}function textureNeedsGenerateMipmaps(e,t){return e.generateMipmaps&&t&&1003!==e.minFilter&&1006!==e.minFilter}function generateMipmap(t){e.generateMipmap(t)}function getInternalFormat(i,n,r,s,a=!1){if(!1===o)return n;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let l=n;return 6403===n&&(5126===r&&(l=33326),5131===r&&(l=33325),5121===r&&(l=33321)),33319===n&&(5126===r&&(l=33328),5131===r&&(l=33327),5121===r&&(l=33323)),6408===n&&(5126===r&&(l=34836),5131===r&&(l=34842),5121===r&&(l=3001===s&&!1===a?35907:32856),32819===r&&(l=32854),32820===r&&(l=32855)),33325!==l&&33326!==l&&33327!==l&&33328!==l&&34842!==l&&34836!==l||t.get("EXT_color_buffer_float"),l}function getMipLevels(e,t,i){return!0===textureNeedsGenerateMipmaps(e,i)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function filterFallback(e){return 1003===e||1004===e||1005===e?9728:9729}function onTextureDispose(e){const t=e.target;t.removeEventListener("dispose",onTextureDispose),function deallocateTexture(e){const t=n.get(e);if(void 0===t.__webglInit)return;const i=e.source,r=g.get(i);if(r){const n=r[t.__cacheKey];n.usedTimes--,0===n.usedTimes&&deleteTexture(e),0===Object.keys(r).length&&g.delete(i)}n.remove(e)}(t),t.isVideoTexture&&m.delete(t)}function onRenderTargetDispose(t){const i=t.target;i.removeEventListener("dispose",onRenderTargetDispose),function deallocateRenderTarget(t){const i=t.texture,r=n.get(t),s=n.get(i);void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),a.memory.textures--);t.depthTexture&&t.depthTexture.dispose();if(t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(r.__webglFramebuffer[t]),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(r.__webglFramebuffer),r.__webglDepthbuffer&&e.deleteRenderbuffer(r.__webglDepthbuffer),r.__webglMultisampledFramebuffer&&e.deleteFramebuffer(r.__webglMultisampledFramebuffer),r.__webglColorRenderbuffer)for(let t=0;t0&&r.__version!==e.version){const i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==i.complete)return void uploadTexture(r,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.activeTexture(33984+t),i.bindTexture(3553,r.__webglTexture)}const x={1e3:10497,1001:33071,1002:33648},b={1003:9728,1004:9984,1005:9986,1006:9729,1007:9985,1008:9987};function setTextureParameters(i,s,a){if(a?(e.texParameteri(i,10242,x[s.wrapS]),e.texParameteri(i,10243,x[s.wrapT]),32879!==i&&35866!==i||e.texParameteri(i,32882,x[s.wrapR]),e.texParameteri(i,10240,b[s.magFilter]),e.texParameteri(i,10241,b[s.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),32879!==i&&35866!==i||e.texParameteri(i,32882,33071),1001===s.wrapS&&1001===s.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,filterFallback(s.magFilter)),e.texParameteri(i,10241,filterFallback(s.minFilter)),1003!==s.minFilter&&1006!==s.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),!0===t.has("EXT_texture_filter_anisotropic")){const a=t.get("EXT_texture_filter_anisotropic");if(1015===s.type&&!1===t.has("OES_texture_float_linear"))return;if(!1===o&&1016===s.type&&!1===t.has("OES_texture_half_float_linear"))return;(s.anisotropy>1||n.get(s).__currentAnisotropy)&&(e.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,r.getMaxAnisotropy())),n.get(s).__currentAnisotropy=s.anisotropy)}}function initTexture(t,i){let n=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",onTextureDispose));const r=i.source;let s=g.get(r);void 0===s&&(s={},g.set(r,s));const o=function getTextureCacheKey(e){const t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.encoding),t.join()}(i);if(o!==t.__cacheKey){void 0===s[o]&&(s[o]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,n=!0),s[o].usedTimes++;const r=s[t.__cacheKey];void 0!==r&&(s[t.__cacheKey].usedTimes--,0===r.usedTimes&&deleteTexture(i)),t.__cacheKey=o,t.__webglTexture=s[o].texture}return n}function uploadTexture(t,n,r){let a=3553;n.isDataArrayTexture&&(a=35866),n.isData3DTexture&&(a=32879);const l=initTexture(t,n),c=n.source;if(i.activeTexture(33984+r),i.bindTexture(a,t.__webglTexture),c.version!==c.__currentVersion||!0===l){e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);const t=function textureNeedsPowerOfTwo(e){return!o&&(1001!==e.wrapS||1001!==e.wrapT||1003!==e.minFilter&&1006!==e.minFilter)}(n)&&!1===isPowerOfTwo$1(n.image);let r=resizeImage(n.image,t,!1,h);r=verifyColorSpace(n,r);const d=isPowerOfTwo$1(r)||o,u=s.convert(n.format,n.encoding);let p,m=s.convert(n.type),f=getInternalFormat(n.internalFormat,u,m,n.encoding,n.isVideoTexture);setTextureParameters(a,n,d);const g=n.mipmaps,v=o&&!0!==n.isVideoTexture,y=void 0===c.__currentVersion||!0===l,x=getMipLevels(n,r,d);if(n.isDepthTexture)f=6402,o?f=1015===n.type?36012:1014===n.type?33190:1020===n.type?35056:33189:1015===n.type&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),1026===n.format&&6402===f&&1012!==n.type&&1014!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=1014,m=s.convert(n.type)),1027===n.format&&6402===f&&(f=34041,1020!==n.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=1020,m=s.convert(n.type))),y&&(v?i.texStorage2D(3553,1,f,r.width,r.height):i.texImage2D(3553,0,f,r.width,r.height,0,u,m,null));else if(n.isDataTexture)if(g.length>0&&d){v&&y&&i.texStorage2D(3553,x,f,g[0].width,g[0].height);for(let e=0,t=g.length;e>=1,t>>=1}}else if(g.length>0&&d){v&&y&&i.texStorage2D(3553,x,f,g[0].width,g[0].height);for(let e=0,t=g.length;e0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function verifyColorSpace(e,i){const n=e.encoding,r=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||1035===e.format||3e3!==n&&(3001===n?!1===o?!0===t.has("EXT_sRGB")&&1023===r?(e.format=1035,e.minFilter=1006,e.generateMipmaps=!1):i=ImageUtils.sRGBToLinear(i):1023===r&&1009===s||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",n)),i}this.allocateTextureUnit=function allocateTextureUnit(){const e=y;return e>=l&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+l),y+=1,e},this.resetTextureUnits=function resetTextureUnits(){y=0},this.setTexture2D=setTexture2D,this.setTexture2DArray=function setTexture2DArray(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?uploadTexture(r,e,t):(i.activeTexture(33984+t),i.bindTexture(35866,r.__webglTexture))},this.setTexture3D=function setTexture3D(e,t){const r=n.get(e);e.version>0&&r.__version!==e.version?uploadTexture(r,e,t):(i.activeTexture(33984+t),i.bindTexture(32879,r.__webglTexture))},this.setTextureCube=function setTextureCube(t,r){const a=n.get(t);t.version>0&&a.__version!==t.version?function uploadCubeTexture(t,n,r){if(6!==n.image.length)return;const a=initTexture(t,n),l=n.source;if(i.activeTexture(33984+r),i.bindTexture(34067,t.__webglTexture),l.version!==l.__currentVersion||!0===a){e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);const t=n.isCompressedTexture||n.image[0].isCompressedTexture,r=n.image[0]&&n.image[0].isDataTexture,h=[];for(let e=0;e<6;e++)h[e]=t||r?r?n.image[e].image:n.image[e]:resizeImage(n.image[e],!1,!0,c),h[e]=verifyColorSpace(n,h[e]);const d=h[0],u=isPowerOfTwo$1(d)||o,p=s.convert(n.format,n.encoding),m=s.convert(n.type),f=getInternalFormat(n.internalFormat,p,m,n.encoding),g=o&&!0!==n.isVideoTexture,v=void 0===l.__currentVersion||!0===a;let y,x=getMipLevels(n,d,u);if(setTextureParameters(34067,n,u),t){g&&v&&i.texStorage2D(34067,x,f,d.width,d.height);for(let e=0;e<6;e++){y=h[e].mipmaps;for(let t=0;t0&&x++,i.texStorage2D(34067,x,f,h[0].width,h[0].height));for(let e=0;e<6;e++)if(r){g?i.texSubImage2D(34069+e,0,0,0,h[e].width,h[e].height,p,m,h[e].data):i.texImage2D(34069+e,0,f,h[e].width,h[e].height,0,p,m,h[e].data);for(let t=0;t0&&!1===useMultisampledRTT(t)){const n=u?l:[l];c.__webglMultisampledFramebuffer=e.createFramebuffer(),c.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,c.__webglMultisampledFramebuffer);for(let i=0;i0&&!1===useMultisampledRTT(t)){const r=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,a=t.height;let o=16384;const l=[],c=t.stencilBuffer?33306:36096,h=n.get(t),d=!0===t.isWebGLMultipleRenderTargets;if(d)for(let t=0;to+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&a<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(n=t.getPose(e.targetRaySpace,i),null===n&&null!==r&&(n=r),null!==n&&(a.matrix.fromArray(n.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),n.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(n.linearVelocity)):a.hasLinearVelocity=!1,n.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(n.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Tt)))}return null!==a&&(a.visible=null!==n),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==s),this}}class DepthTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l,c){if(1026!==(c=void 0!==c?c:1026)&&1027!==c)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&1026===c&&(i=1014),void 0===i&&1027===c&&(i=1020),super(null,n,r,s,a,o,c,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==a?a:1003,this.minFilter=void 0!==o?o:1003,this.flipY=!1,this.generateMipmaps=!1}}class WebXRManager extends EventDispatcher$1{constructor(e,t){super();const i=this;let n=null,r=1,s=null,a="local-floor",o=null,l=null,c=null,h=null,d=null,u=null;const p=t.getContextAttributes();let m=null,f=null;const g=[],v=[],y=new PerspectiveCamera;y.layers.enable(1),y.viewport=new Vector4;const x=new PerspectiveCamera;x.layers.enable(2),x.viewport=new Vector4;const b=[y,x],_=new ArrayCamera;_.layers.enable(1),_.layers.enable(2);let S=null,w=null;function onSessionEvent(e){const t=v.indexOf(e.inputSource);if(-1===t)return;const i=g[t];void 0!==i&&i.dispatchEvent({type:e.type,data:e.inputSource})}function onSessionEnd(){n.removeEventListener("select",onSessionEvent),n.removeEventListener("selectstart",onSessionEvent),n.removeEventListener("selectend",onSessionEvent),n.removeEventListener("squeeze",onSessionEvent),n.removeEventListener("squeezestart",onSessionEvent),n.removeEventListener("squeezeend",onSessionEvent),n.removeEventListener("end",onSessionEnd),n.removeEventListener("inputsourceschange",onInputSourcesChange);for(let e=0;e=0&&(v[n]=null,g[n].dispatchEvent({type:"disconnected",data:i}))}for(let t=0;t=v.length){v.push(i),n=e;break}if(null===v[e]){v[e]=i,n=e;break}}if(-1===n)break}const r=g[n];r&&r.dispatchEvent({type:"connected",data:i})}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=g[e];return void 0===t&&(t=new WebXRController,g[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=g[e];return void 0===t&&(t=new WebXRController,g[e]=t),t.getGripSpace()},this.getHand=function(e){let t=g[e];return void 0===t&&(t=new WebXRController,g[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return o||s},this.setReferenceSpace=function(e){o=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return c},this.getFrame=function(){return u},this.getSession=function(){return n},this.setSession=async function(l){if(n=l,null!==n){if(m=e.getRenderTarget(),n.addEventListener("select",onSessionEvent),n.addEventListener("selectstart",onSessionEvent),n.addEventListener("selectend",onSessionEvent),n.addEventListener("squeeze",onSessionEvent),n.addEventListener("squeezestart",onSessionEvent),n.addEventListener("squeezeend",onSessionEvent),n.addEventListener("end",onSessionEnd),n.addEventListener("inputsourceschange",onInputSourcesChange),!0!==p.xrCompatible&&await t.makeXRCompatible(),void 0===n.renderState.layers||!1===e.capabilities.isWebGL2){const i={antialias:void 0!==n.renderState.layers||p.antialias,alpha:p.alpha,depth:p.depth,stencil:p.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(n,t,i),n.updateRenderState({baseLayer:d}),f=new WebGLRenderTarget(d.framebufferWidth,d.framebufferHeight,{format:1023,type:1009,encoding:e.outputEncoding})}else{let i=null,s=null,a=null;p.depth&&(a=p.stencil?35056:33190,i=p.stencil?1027:1026,s=p.stencil?1020:1014);const o={colorFormat:32856,depthFormat:a,scaleFactor:r};c=new XRWebGLBinding(n,t),h=c.createProjectionLayer(o),n.updateRenderState({layers:[h]}),f=new WebGLRenderTarget(h.textureWidth,h.textureHeight,{format:1023,type:1009,depthTexture:new DepthTexture(h.textureWidth,h.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:p.stencil,encoding:e.outputEncoding,samples:p.antialias?4:0});e.properties.get(f).__ignoreDepthValues=h.ignoreDepthValues}f.isXRRenderTarget=!0,this.setFoveation(1),o=null,s=await n.requestReferenceSpace(a),C.setContext(n),C.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};const M=new Vector3,T=new Vector3;function updateCamera(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===n)return;_.near=x.near=y.near=e.near,_.far=x.far=y.far=e.far,S===_.near&&w===_.far||(n.updateRenderState({depthNear:_.near,depthFar:_.far}),S=_.near,w=_.far);const t=e.parent,i=_.cameras;updateCamera(_,t);for(let e=0;e0&&(i.alphaTest.value=n.alphaTest);const r=t.get(n).envMap;if(r&&(i.envMap.value=r,i.flipEnvMap.value=r.isCubeTexture&&!1===r.isRenderTargetTexture?-1:1,i.reflectivity.value=n.reflectivity,i.ior.value=n.ior,i.refractionRatio.value=n.refractionRatio),n.lightMap){i.lightMap.value=n.lightMap;const t=!0!==e.physicallyCorrectLights?Math.PI:1;i.lightMapIntensity.value=n.lightMapIntensity*t}let s,a;n.aoMap&&(i.aoMap.value=n.aoMap,i.aoMapIntensity.value=n.aoMapIntensity),n.map?s=n.map:n.specularMap?s=n.specularMap:n.displacementMap?s=n.displacementMap:n.normalMap?s=n.normalMap:n.bumpMap?s=n.bumpMap:n.roughnessMap?s=n.roughnessMap:n.metalnessMap?s=n.metalnessMap:n.alphaMap?s=n.alphaMap:n.emissiveMap?s=n.emissiveMap:n.clearcoatMap?s=n.clearcoatMap:n.clearcoatNormalMap?s=n.clearcoatNormalMap:n.clearcoatRoughnessMap?s=n.clearcoatRoughnessMap:n.iridescenceMap?s=n.iridescenceMap:n.iridescenceThicknessMap?s=n.iridescenceThicknessMap:n.specularIntensityMap?s=n.specularIntensityMap:n.specularColorMap?s=n.specularColorMap:n.transmissionMap?s=n.transmissionMap:n.thicknessMap?s=n.thicknessMap:n.sheenColorMap?s=n.sheenColorMap:n.sheenRoughnessMap&&(s=n.sheenRoughnessMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),i.uvTransform.value.copy(s.matrix)),n.aoMap?a=n.aoMap:n.lightMap&&(a=n.lightMap),void 0!==a&&(a.isWebGLRenderTarget&&(a=a.texture),!0===a.matrixAutoUpdate&&a.updateMatrix(),i.uv2Transform.value.copy(a.matrix))}return{refreshFogUniforms:function refreshFogUniforms(e,t){e.fogColor.value.copy(t.color),t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)},refreshMaterialUniforms:function refreshMaterialUniforms(e,i,n,r,s){i.isMeshBasicMaterial||i.isMeshLambertMaterial?refreshUniformsCommon(e,i):i.isMeshToonMaterial?(refreshUniformsCommon(e,i),function refreshUniformsToon(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,i)):i.isMeshPhongMaterial?(refreshUniformsCommon(e,i),function refreshUniformsPhong(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,i)):i.isMeshStandardMaterial?(refreshUniformsCommon(e,i),function refreshUniformsStandard(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap);i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap);t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}(e,i),i.isMeshPhysicalMaterial&&function refreshUniformsPhysical(e,t,i){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap));t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,1===t.side&&e.clearcoatNormalScale.value.negate()));t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap));t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=i.texture,e.transmissionSamplerSize.value.set(i.width,i.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor));e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap);t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap)}(e,i,s)):i.isMeshMatcapMaterial?(refreshUniformsCommon(e,i),function refreshUniformsMatcap(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,i)):i.isMeshDepthMaterial?refreshUniformsCommon(e,i):i.isMeshDistanceMaterial?(refreshUniformsCommon(e,i),function refreshUniformsDistance(e,t){e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(e,i)):i.isMeshNormalMaterial?refreshUniformsCommon(e,i):i.isLineBasicMaterial?(!function refreshUniformsLine(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(e,i),i.isLineDashedMaterial&&function refreshUniformsDash(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,i)):i.isPointsMaterial?function refreshUniformsPoints(e,t,i,n){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*i,e.scale.value=.5*n,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let r;t.map?r=t.map:t.alphaMap&&(r=t.alphaMap);void 0!==r&&(!0===r.matrixAutoUpdate&&r.updateMatrix(),e.uvTransform.value.copy(r.matrix))}(e,i,n,r):i.isSpriteMaterial?function refreshUniformsSprites(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map);t.alphaMap&&(e.alphaMap.value=t.alphaMap);t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i;t.map?i=t.map:t.alphaMap&&(i=t.alphaMap);void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uvTransform.value.copy(i.matrix))}(e,i):i.isShadowMaterial?(e.color.value.copy(i.color),e.opacity.value=i.opacity):i.isShaderMaterial&&(i.uniformsNeedUpdate=!1)}}}function WebGLUniformsGroups(e,t,i,n){let r={},s={},a=[];const o=i.isWebGL2?e.getParameter(35375):0;function hasUniformChanged(e,t,i){const n=e.value;if(void 0===i[t])return i[t]="number"==typeof n?n:n.clone(),!0;if("number"==typeof n){if(i[t]!==n)return i[t]=n,!0}else{const e=i[t];if(!1===e.equals(n))return e.copy(n),!0}return!1}function getUniformSize(e){const t=e.value,i={boundary:0,storage:0};return"number"==typeof t?(i.boundary=4,i.storage=4):t.isVector2?(i.boundary=8,i.storage=8):t.isVector3||t.isColor?(i.boundary=16,i.storage=12):t.isVector4?(i.boundary=16,i.storage=16):t.isMatrix3?(i.boundary=48,i.storage=48):t.isMatrix4?(i.boundary=64,i.storage=64):t.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",t),i}function onUniformsGroupsDispose(t){const i=t.target;i.removeEventListener("dispose",onUniformsGroupsDispose);const n=a.indexOf(i.__bindingPointIndex);a.splice(n,1),e.deleteBuffer(r[i.id]),delete r[i.id],delete s[i.id]}return{bind:function bind(e,t){const i=t.program;n.uniformBlockBinding(e,i)},update:function update(i,l){let c=r[i.id];void 0===c&&(!function prepareUniformsGroup(e){const t=e.uniforms;let i=0;const n=16;let r=0;for(let e=0,s=t.length;e0){r=i%n;const e=n-r;0!==r&&e-a.boundary<0&&(i+=n-r,s.__offset=i)}i+=a.storage}r=i%n,r>0&&(i+=n-r);return e.__size=i,e.__cache={},this}(i),c=function createBuffer(t){const i=function allocateBindingPointIndex(){for(let e=0;e0&&function renderTransmissionPass(e,t,i){const n=H.isWebGL2;null===z&&(z=new WebGLRenderTarget(1,1,{generateMipmaps:!0,type:G.has("EXT_color_buffer_half_float")?1016:1009,minFilter:1008,samples:n&&!0===s?4:0}));f.getDrawingBufferSize(U),n?z.setSize(U.x,U.y):z.setSize(floorPowerOfTwo(U.x),floorPowerOfTwo(U.y));const r=f.getRenderTarget();f.setRenderTarget(z),f.clear();const a=f.toneMapping;f.toneMapping=0,renderObjects(e,t,i),f.toneMapping=a,q.updateMultisampleRenderTarget(z),q.updateRenderTargetMipmap(z),f.setRenderTarget(r)}(r,t,i),n&&W.viewport(S.copy(n)),r.length>0&&renderObjects(r,t,i),a.length>0&&renderObjects(a,t,i),o.length>0&&renderObjects(o,t,i),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function renderObjects(e,t,i){const n=!0===t.isScene?t.overrideMaterial:null;for(let r=0,s=e.length;r0?m[m.length-1]:null,p.pop(),d=p.length>0?p[p.length-1]:null},this.getActiveCubeFace=function(){return v},this.getActiveMipmapLevel=function(){return y},this.getRenderTarget=function(){return x},this.setRenderTargetTextures=function(e,t,i){X.get(e.texture).__webglTexture=t,X.get(e.depthTexture).__webglTexture=i;const n=X.get(e);n.__hasExternalTextures=!0,n.__hasExternalTextures&&(n.__autoAllocateDepthBuffer=void 0===i,n.__autoAllocateDepthBuffer||!0===G.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),n.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){const i=X.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,i=0){x=e,v=t,y=i;let n=!0;if(e){const t=X.get(e);void 0!==t.__useDefaultFramebuffer?(W.bindFramebuffer(36160,null),n=!1):void 0===t.__webglFramebuffer?q.setupRenderTarget(e):t.__hasExternalTextures&&q.rebindTextures(e,X.get(e.texture).__webglTexture,X.get(e.depthTexture).__webglTexture)}let r=null,s=!1,a=!1;if(e){const i=e.texture;(i.isData3DTexture||i.isDataArrayTexture)&&(a=!0);const n=X.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=n[t],s=!0):r=H.isWebGL2&&e.samples>0&&!1===q.useMultisampledRTT(e)?X.get(e).__webglMultisampledFramebuffer:n,S.copy(e.viewport),w.copy(e.scissor),M=e.scissorTest}else S.copy(D).multiplyScalar(C).floor(),w.copy(L).multiplyScalar(C).floor(),M=I;if(W.bindFramebuffer(36160,r)&&H.drawBuffers&&n&&W.drawBuffers(e,r),W.viewport(S),W.scissor(w),W.setScissorTest(M),s){const n=X.get(e.texture);ue.framebufferTexture2D(36160,36064,34069+t,n.__webglTexture,i)}else if(a){const n=X.get(e.texture),r=t||0;ue.framebufferTextureLayer(36160,36064,n.__webglTexture,i||0,r)}b=-1},this.readRenderTargetPixels=function(e,t,i,n,r,s,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=X.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){W.bindFramebuffer(36160,o);try{const a=e.texture,o=a.format,l=a.type;if(1023!==o&&ce.convert(o)!==ue.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=1016===l&&(G.has("EXT_color_buffer_half_float")||H.isWebGL2&&G.has("EXT_color_buffer_float"));if(!(1009===l||ce.convert(l)===ue.getParameter(35738)||1015===l&&(H.isWebGL2||G.has("OES_texture_float")||G.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-n&&i>=0&&i<=e.height-r&&ue.readPixels(t,i,n,r,ce.convert(o),ce.convert(l),s)}finally{const e=null!==x?X.get(x).__webglFramebuffer:null;W.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,i=0){const n=Math.pow(2,-i),r=Math.floor(t.image.width*n),s=Math.floor(t.image.height*n);q.setTexture2D(t,0),ue.copyTexSubImage2D(3553,i,0,0,e.x,e.y,r,s),W.unbindTexture()},this.copyTextureToTexture=function(e,t,i,n=0){const r=t.image.width,s=t.image.height,a=ce.convert(i.format),o=ce.convert(i.type);q.setTexture2D(i,0),ue.pixelStorei(37440,i.flipY),ue.pixelStorei(37441,i.premultiplyAlpha),ue.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?ue.texSubImage2D(3553,n,e.x,e.y,r,s,a,o,t.image.data):t.isCompressedTexture?ue.compressedTexSubImage2D(3553,n,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):ue.texSubImage2D(3553,n,e.x,e.y,a,o,t.image),0===n&&i.generateMipmaps&&ue.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,n,r=0){if(f.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const s=e.max.x-e.min.x+1,a=e.max.y-e.min.y+1,o=e.max.z-e.min.z+1,l=ce.convert(n.format),c=ce.convert(n.type);let h;if(n.isData3DTexture)q.setTexture3D(n,0),h=32879;else{if(!n.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");q.setTexture2DArray(n,0),h=35866}ue.pixelStorei(37440,n.flipY),ue.pixelStorei(37441,n.premultiplyAlpha),ue.pixelStorei(3317,n.unpackAlignment);const d=ue.getParameter(3314),u=ue.getParameter(32878),p=ue.getParameter(3316),m=ue.getParameter(3315),g=ue.getParameter(32877),v=i.isCompressedTexture?i.mipmaps[0]:i.image;ue.pixelStorei(3314,v.width),ue.pixelStorei(32878,v.height),ue.pixelStorei(3316,e.min.x),ue.pixelStorei(3315,e.min.y),ue.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?ue.texSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,c,v.data):i.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),ue.compressedTexSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,v.data)):ue.texSubImage3D(h,r,t.x,t.y,t.z,s,a,o,l,c,v),ue.pixelStorei(3314,d),ue.pixelStorei(32878,u),ue.pixelStorei(3316,p),ue.pixelStorei(3315,m),ue.pixelStorei(32877,g),0===r&&n.generateMipmaps&&ue.generateMipmap(h),W.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?q.setTextureCube(e,0):e.isData3DTexture?q.setTexture3D(e,0):e.isDataArrayTexture?q.setTexture2DArray(e,0):q.setTexture2D(e,0),W.unbindTexture()},this.resetState=function(){v=0,y=0,x=null,W.reset(),he.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}(class WebGL1Renderer extends WebGLRenderer{}).prototype.isWebGL1Renderer=!0;class Scene extends Object3D{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),t}}class InterleavedBuffer{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=generateUUID()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let n=0,r=this.stride;ne.far||t.push({distance:o,point:At.clone(),uv:Triangle.getUV(At,Ft,Ot,Nt,zt,Bt,Ut,new Vector2),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function transformVertex(e,t,i,n,r,s){Lt.subVectors(e,i).addScalar(.5).multiply(n),void 0!==r?(It.x=s*Lt.x-r*Lt.y,It.y=r*Lt.x+s*Lt.y):It.copy(Lt),e.copy(t),e.x+=It.x,e.y+=It.y,e.applyMatrix4(Rt)}const Vt=new Vector3,kt=new Vector4,Gt=new Vector4,Ht=new Vector3,Wt=new Matrix4;class SkinnedMesh extends Mesh{constructor(e,t){super(e,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new Matrix4,this.bindMatrixInverse=new Matrix4}copy(e,t){return super.copy(e,t),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this}bind(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new Vector4,t=this.geometry.attributes.skinWeight;for(let i=0,n=t.count;io)continue;d.applyMatrix4(this.matrixWorld);const s=e.ray.origin.distanceTo(d);se.far||t.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(let i=Math.max(0,s.start),n=Math.min(m.count,s.start+s.count)-1;io)continue;d.applyMatrix4(this.matrixWorld);const n=e.ray.origin.distanceTo(d);ne.far||t.push({distance:n,point:h.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){const e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e0){const i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;er.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:t,face:null,object:a})}}class CanvasTexture extends Texture{constructor(e,t,i,n,r,s,a,o,l){super(e,t,i,n,r,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}function CubicPoly(){let e=0,t=0,i=0,n=0;function init(r,s,a,o){e=r,t=a,i=-3*r+3*s-2*a-o,n=2*r-2*s+a+o}return{initCatmullRom:function(e,t,i,n,r){init(t,i,r*(i-e),r*(n-t))},initNonuniformCatmullRom:function(e,t,i,n,r,s,a){let o=(t-e)/r-(i-e)/(r+s)+(i-t)/s,l=(i-t)/s-(n-t)/(s+a)+(n-i)/a;o*=s,l*=s,init(t,i,o,l)},calc:function(r){const s=r*r;return e+t*r+i*s+n*(s*r)}}}const ri=new Vector3,si=new CubicPoly,ai=new CubicPoly,oi=new CubicPoly;class CatmullRomCurve3 extends class Curve{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){const i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){const t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let i,n=this.getPoint(0),r=0;t.push(0);for(let s=1;s<=e;s++)i=this.getPoint(s/e),r+=i.distanceTo(n),t.push(r),n=i;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){const i=this.getLengths();let n=0;const r=i.length;let s;s=t||e*i[r-1];let a,o=0,l=r-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=i[n]-s,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,i[n]===s)return n/(r-1);const c=i[n];return(n+(s-c)/(i[n+1]-c))/(r-1)}getTangent(e,t){const i=1e-4;let n=e-i,r=e+i;n<0&&(n=0),r>1&&(r=1);const s=this.getPoint(n),a=this.getPoint(r),o=t||(s.isVector2?new Vector2:new Vector3);return o.copy(a).sub(s).normalize(),o}getTangentAt(e,t){const i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){const i=new Vector3,n=[],r=[],s=[],a=new Vector3,o=new Matrix4;for(let t=0;t<=e;t++){const i=t/e;n[t]=this.getTangentAt(i,new Vector3)}r[0]=new Vector3,s[0]=new Vector3;let l=Number.MAX_VALUE;const c=Math.abs(n[0].x),h=Math.abs(n[0].y),d=Math.abs(n[0].z);c<=l&&(l=c,i.set(1,0,0)),h<=l&&(l=h,i.set(0,1,0)),d<=l&&i.set(0,0,1),a.crossVectors(n[0],i).normalize(),r[0].crossVectors(n[0],a),s[0].crossVectors(n[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),s[t]=s[t-1].clone(),a.crossVectors(n[t-1],n[t]),a.length()>Number.EPSILON){a.normalize();const e=Math.acos(clamp(n[t-1].dot(n[t]),-1,1));r[t].applyMatrix4(o.makeRotationAxis(a,e))}s[t].crossVectors(n[t],r[t])}if(!0===t){let t=Math.acos(clamp(r[0].dot(r[e]),-1,1));t/=e,n[0].dot(a.crossVectors(r[0],r[e]))>0&&(t=-t);for(let i=1;i<=e;i++)r[i].applyMatrix4(o.makeRotationAxis(n[i],t*i)),s[i].crossVectors(n[i],r[i])}return{tangents:n,normals:r,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}{constructor(e=[],t=!1,i="centripetal",n=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=i,this.tension=n}getPoint(e,t=new Vector3){const i=t,n=this.points,r=n.length,s=(r-(this.closed?0:1))*e;let a,o,l=Math.floor(s),c=s-l;this.closed?l+=l>0?0:(Math.floor(Math.abs(l)/r)+1)*r:0===c&&l===r-1&&(l=r-2,c=1),this.closed||l>0?a=n[(l-1)%r]:(ri.subVectors(n[0],n[1]).add(n[0]),a=ri);const h=n[l%r],d=n[(l+1)%r];if(this.closed||l+2.9&&a<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),n<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new Float32BufferAttribute(r,3)),this.setAttribute("normal",new Float32BufferAttribute(r.slice(),3)),this.setAttribute("uv",new Float32BufferAttribute(s,2)),0===n?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new PolyhedronGeometry(e.vertices,e.indices,e.radius,e.details)}}class OctahedronGeometry extends PolyhedronGeometry{constructor(e=1,t=0){super([1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t),this.type="OctahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new OctahedronGeometry(e.radius,e.detail)}}class SphereGeometry extends BufferGeometry{constructor(e=1,t=32,i=16,n=0,r=2*Math.PI,s=0,a=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:t,heightSegments:i,phiStart:n,phiLength:r,thetaStart:s,thetaLength:a},t=Math.max(3,Math.floor(t)),i=Math.max(2,Math.floor(i));const o=Math.min(s+a,Math.PI);let l=0;const c=[],h=new Vector3,d=new Vector3,u=[],p=[],m=[],f=[];for(let u=0;u<=i;u++){const g=[],v=u/i;let y=0;0==u&&0==s?y=.5/t:u==i&&o==Math.PI&&(y=-.5/t);for(let i=0;i<=t;i++){const o=i/t;h.x=-e*Math.cos(n+o*r)*Math.sin(s+v*a),h.y=e*Math.cos(s+v*a),h.z=e*Math.sin(n+o*r)*Math.sin(s+v*a),p.push(h.x,h.y,h.z),d.copy(h).normalize(),m.push(d.x,d.y,d.z),f.push(o+y,1-v),g.push(l++)}c.push(g)}for(let e=0;e0)&&u.push(t,r,l),(e!==i-1||o0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class MeshPhongMaterial extends Material{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new Color$1(16777215),this.specular=new Color$1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Vector2(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class MeshLambertMaterial extends Material{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new Color$1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Color$1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}function arraySlice(e,t,i){return isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==i?i:e.length)):e.slice(t,i)}function convertArray(e,t,i){return!e||!i&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function isTypedArray(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function getKeyframeOrder(e){const t=e.length,i=new Array(t);for(let e=0;e!==t;++e)i[e]=e;return i.sort((function compareTime(t,i){return e[t]-e[i]})),i}function sortedArray(e,t,i){const n=e.length,r=new e.constructor(n);for(let s=0,a=0;a!==n;++s){const n=i[s]*t;for(let i=0;i!==t;++i)r[a++]=e[n+i]}return r}function flattenJSON(e,t,i,n){let r=1,s=e[0];for(;void 0!==s&&void 0===s[n];)s=e[r++];if(void 0===s)return;let a=s[n];if(void 0!==a)if(Array.isArray(a))do{a=s[n],void 0!==a&&(t.push(s.time),i.push.apply(i,a)),s=e[r++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[n],void 0!==a&&(t.push(s.time),a.toArray(i,i.length)),s=e[r++]}while(void 0!==s);else do{a=s[n],void 0!==a&&(t.push(s.time),i.push(a)),s=e[r++]}while(void 0!==s)}class Interpolant{constructor(e,t,i,n){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==n?n:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){const t=this.parameterPositions;let i=this._cachedIndex,n=t[i],r=t[i-1];e:{t:{let s;i:{n:if(!(e=r)break e;{const a=t[1];e=r)break t}s=i,i=0}}for(;i>>1;et;)--s;if(++s,0!==r||s!==n){r>=s&&(s=Math.max(s,1),r=s-1);const e=this.getValueSize();this.times=arraySlice(i,r,s),this.values=arraySlice(this.values,r*e,s*e)}return this}validate(){let e=!0;const t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const i=this.times,n=this.values,r=i.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let t=0;t!==r;t++){const n=i[t];if("number"==typeof n&&isNaN(n)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,n),e=!1;break}if(null!==s&&s>n){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,n,s),e=!1;break}s=n}if(void 0!==n&&isTypedArray(n))for(let t=0,i=n.length;t!==i;++t){const i=n[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){const e=arraySlice(this.times),t=arraySlice(this.values),i=this.getValueSize(),n=2302===this.getInterpolation(),r=e.length-1;let s=1;for(let a=1;a0){e[s]=e[r];for(let e=r*i,n=s*i,a=0;a!==i;++a)t[n+a]=t[e+a];++s}return s!==e.length?(this.times=arraySlice(e,0,s),this.values=arraySlice(t,0,s*i)):(this.times=e,this.values=t),this}clone(){const e=arraySlice(this.times,0),t=arraySlice(this.values,0),i=new(0,this.constructor)(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}}KeyframeTrack.prototype.TimeBufferType=Float32Array,KeyframeTrack.prototype.ValueBufferType=Float32Array,KeyframeTrack.prototype.DefaultInterpolation=2301;class BooleanKeyframeTrack extends KeyframeTrack{}BooleanKeyframeTrack.prototype.ValueTypeName="bool",BooleanKeyframeTrack.prototype.ValueBufferType=Array,BooleanKeyframeTrack.prototype.DefaultInterpolation=2300,BooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0,BooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class ColorKeyframeTrack extends KeyframeTrack{}ColorKeyframeTrack.prototype.ValueTypeName="color";class NumberKeyframeTrack extends KeyframeTrack{}NumberKeyframeTrack.prototype.ValueTypeName="number";class QuaternionLinearInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-t)/(n-t);let l=e*a;for(let e=l+a;l!==e;l+=4)Quaternion$1.slerpFlat(r,0,s,l-a,s,l,o);return r}}class QuaternionKeyframeTrack extends KeyframeTrack{InterpolantFactoryMethodLinear(e){return new QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),e)}}QuaternionKeyframeTrack.prototype.ValueTypeName="quaternion",QuaternionKeyframeTrack.prototype.DefaultInterpolation=2301,QuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class StringKeyframeTrack extends KeyframeTrack{}StringKeyframeTrack.prototype.ValueTypeName="string",StringKeyframeTrack.prototype.ValueBufferType=Array,StringKeyframeTrack.prototype.DefaultInterpolation=2300,StringKeyframeTrack.prototype.InterpolantFactoryMethodLinear=void 0,StringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth=void 0;class VectorKeyframeTrack extends KeyframeTrack{}VectorKeyframeTrack.prototype.ValueTypeName="vector";class AnimationClip{constructor(e,t=-1,i,n=2500){this.name=e,this.tracks=i,this.duration=t,this.blendMode=n,this.uuid=generateUUID(),this.duration<0&&this.resetDuration()}static parse(e){const t=[],i=e.tracks,n=1/(e.fps||1);for(let e=0,r=i.length;e!==r;++e)t.push(parseKeyframeTrack(i[e]).scale(n));const r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){const t=[],i=e.tracks,n={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,n=i.length;e!==n;++e)t.push(KeyframeTrack.toJSON(i[e]));return n}static CreateFromMorphTargetSequence(e,t,i,n){const r=t.length,s=[];for(let e=0;e1){const e=s[1];let t=n[e];t||(n[e]=t=[]),t.push(i)}}const s=[];for(const e in n)s.push(this.CreateFromMorphTargetSequence(e,n[e],t,i));return s}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const addNonemptyTrack=function(e,t,i,n,r){if(0!==i.length){const s=[],a=[];flattenJSON(i,s,a,n),0!==s.length&&r.push(new e(t,s,a))}},i=[],n=e.name||"default",r=e.fps||30,s=e.blendMode;let a=e.length||-1;const o=e.hierarchy||[];for(let e=0;e{t&&t(r),this.manager.itemEnd(e)}),0),r;if(void 0!==hi[e])return void hi[e].push({onLoad:t,onProgress:i,onError:n});hi[e]=[],hi[e].push({onLoad:t,onProgress:i,onError:n});const s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(s).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;const i=hi[e],n=t.body.getReader(),r=t.headers.get("Content-Length"),s=r?parseInt(r):0,a=0!==s;let o=0;const l=new ReadableStream({start(e){!function readData(){n.read().then((({done:t,value:n})=>{if(t)e.close();else{o+=n.byteLength;const t=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let e=0,n=i.length;e{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((e=>(new DOMParser).parseFromString(e,a)));case"json":return e.json();default:if(void 0===a)return e.text();{const t=/charset="?([^;"\s]*)"?/i.exec(a),i=t&&t[1]?t[1].toLowerCase():void 0,n=new TextDecoder(i);return e.arrayBuffer().then((e=>n.decode(e)))}}})).then((t=>{li.add(e,t);const i=hi[e];delete hi[e];for(let e=0,n=i.length;e{const i=hi[e];if(void 0===i)throw this.manager.itemError(e),t;delete hi[e];for(let e=0,n=i.length;e{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class ImageLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){void 0!==this.path&&(e=this.path+e),e=this.manager.resolveURL(e);const r=this,s=li.get(e);if(void 0!==s)return r.manager.itemStart(e),setTimeout((function(){t&&t(s),r.manager.itemEnd(e)}),0),s;const a=createElementNS("img");function onImageLoad(){removeEventListeners(),li.add(e,this),t&&t(this),r.manager.itemEnd(e)}function onImageError(t){removeEventListeners(),n&&n(t),r.manager.itemError(e),r.manager.itemEnd(e)}function removeEventListeners(){a.removeEventListener("load",onImageLoad,!1),a.removeEventListener("error",onImageError,!1)}return a.addEventListener("load",onImageLoad,!1),a.addEventListener("error",onImageError,!1),"data:"!==e.slice(0,5)&&void 0!==this.crossOrigin&&(a.crossOrigin=this.crossOrigin),r.manager.itemStart(e),a.src=e,a}}class CubeTextureLoader extends Loader{constructor(e){super(e)}load(e,t,i,n){const r=new CubeTexture,s=new ImageLoader(this.manager);s.setCrossOrigin(this.crossOrigin),s.setPath(this.path);let a=0;function loadTexture(i){s.load(e[i],(function(e){r.images[i]=e,a++,6===a&&(r.needsUpdate=!0,t&&t(r))}),void 0,n)}for(let t=0;t0&&this._mixBufferRegionAdditive(i,n,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(i[e]!==i[e+t]){a.setValue(i,n);break}}saveOriginalState(){const e=this.binding,t=this.buffer,i=this.valueSize,n=i*this._origIndex;e.getValue(t,n);for(let e=i,r=n;e!==r;++e)t[e]=t[n+e%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let n=0;n!==r;++n)e[t+n]=e[i+n]}_slerp(e,t,i,n){Quaternion$1.slerpFlat(e,t,e,t,e,i,n)}_slerpAdditive(e,t,i,n,r){const s=this._workIndex*r;Quaternion$1.multiplyQuaternionsFlat(e,s,e,t,e,i),Quaternion$1.slerpFlat(e,t,e,t,e,s,n)}_lerp(e,t,i,n,r){const s=1-n;for(let a=0;a!==r;++a){const r=t+a;e[r]=e[r]*s+e[i+a]*n}}_lerpAdditive(e,t,i,n,r){for(let s=0;s!==r;++s){const r=t+s;e[r]=e[r]+e[i+s]*n}}}const yi=new RegExp("[\\[\\]\\.:\\/]","g"),xi="[^"+"\\[\\]\\.:\\/".replace("\\.","")+"]",bi=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC","[^\\[\\]\\.:\\/]")+/(WCOD+)?/.source.replace("WCOD",xi)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC","[^\\[\\]\\.:\\/]")+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC","[^\\[\\]\\.:\\/]")+"$"),_i=["material","materials","bones"];class PropertyBinding{constructor(e,t,i){this.path=t,this.parsedPath=i||PropertyBinding.parseTrackName(t),this.node=PropertyBinding.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new PropertyBinding.Composite(e,t,i):new PropertyBinding(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(yi,"")}static parseTrackName(e){const t=bi.exec(e);if(null===t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},n=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==n&&-1!==n){const e=i.nodeName.substring(n+1);-1!==_i.indexOf(e)&&(i.nodeName=i.nodeName.substring(0,n),i.objectName=e)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){const i=e.skeleton.getBoneByName(t);if(void 0!==i)return i}if(e.children){const searchNodeSubtree=function(e){for(let i=0;i0){const e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let i=0,n=e.length;i!==n;++i)e[i].evaluate(s),t[i].accumulateAdditive(a);else for(let i=0,r=e.length;i!==r;++i)e[i].evaluate(s),t[i].accumulate(n,a)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;const i=this._weightInterpolant;if(null!==i){const n=i.evaluate(e)[0];t*=n,e>i.parameterPositions[1]&&(this.stopFading(),0===n&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;const i=this._timeScaleInterpolant;if(null!==i){t*=i.evaluate(e)[0],e>i.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){const t=this._clip.duration,i=this.loop;let n=this.time+e,r=this._loopCount;const s=2202===i;if(0===e)return-1===r?n:s&&1==(1&r)?t-n:n;if(2200===i){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n>=t)n=t;else{if(!(n<0)){this.time=n;break e}n=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),n>=t||n<0){const i=Math.floor(n/t);n-=t*i,r+=Math.abs(i);const a=this.repetitions-r;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,n=e>0?t:0,this.time=n,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===a){const t=e<0;this._setEndings(t,!t,s)}else this._setEndings(!1,!1,s);this._loopCount=r,this.time=n,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=n;if(s&&1==(1&r))return t-n}return n}_setEndings(e,t,i){const n=this._interpolantSettings;i?(n.endingStart=2401,n.endingEnd=2401):(n.endingStart=e?this.zeroSlopeAtStart?2401:2400:2402,n.endingEnd=t?this.zeroSlopeAtEnd?2401:2400:2402)}_scheduleFading(e,t,i){const n=this._mixer,r=n.time;let s=this._weightInterpolant;null===s&&(s=n._lendControlInterpolant(),this._weightInterpolant=s);const a=s.parameterPositions,o=s.sampleValues;return a[0]=r,o[0]=t,a[1]=r+e,o[1]=i,this}}const Si=new Float32Array(1);class AnimationMixer extends EventDispatcher$1{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){const i=e._localRoot||this._root,n=e._clip.tracks,r=n.length,s=e._propertyBindings,a=e._interpolants,o=i.uuid,l=this._bindingsByRootAndName;let c=l[o];void 0===c&&(c={},l[o]=c);for(let e=0;e!==r;++e){const r=n[e],l=r.name;let h=c[l];if(void 0!==h)++h.referenceCount,s[e]=h;else{if(h=s[e],void 0!==h){null===h._cacheIndex&&(++h.referenceCount,this._addInactiveBinding(h,o,l));continue}const n=t&&t._propertyBindings[e].binding.parsedPath;h=new PropertyMixer(PropertyBinding.create(i,l,n),r.ValueTypeName,r.getValueSize()),++h.referenceCount,this._addInactiveBinding(h,o,l),s[e]=h}a[e].resultBuffer=h.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){const t=(e._localRoot||this._root).uuid,i=e._clip.uuid,n=this._actionsByClip[i];this._bindAction(e,n&&n.knownActions[0]),this._addInactiveAction(e,i,t)}const t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){const i=t[e];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){const i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const t=e._cacheIndex;return null!==t&&t=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;const t=this._actions,i=this._nActiveActions,n=this.time+=e,r=Math.sign(e),s=this._accuIndex^=1;for(let a=0;a!==i;++a){t[a]._update(n,e,r,s)}const a=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)a[e].apply(s);return this}setTime(e){this.time=0;for(let e=0;e>-t-14,n[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(n[e]=t+15<<10,n[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(n[e]=31744,n[256|e]=64512,r[e]=24,r[256|e]=24):(n[e]=31744,n[256|e]=64512,r[e]=13,r[256|e]=13)}const s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,i=0;for(;0==(8388608&t);)t<<=1,i-=8388608;t&=-8388609,i+=947912704,s[e]=t|i}for(let e=1024;e<2048;++e)s[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)a[e]=e<<23;a[31]=1199570944,a[32]=2147483648;for(let e=33;e<63;++e)a[e]=2147483648+(e-32<<23);a[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:i,baseTable:n,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}var Mi=Object.freeze({__proto__:null,toHalfFloat:function toHalfFloat(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=clamp(e,-65504,65504),wi.floatView[0]=e;const t=wi.uint32View[0],i=t>>23&511;return wi.baseTable[i]+((8388607&t)>>wi.shiftTable[i])},fromHalfFloat:function fromHalfFloat(e){const t=e>>10;return wi.uint32View[0]=wi.mantissaTable[wi.offsetTable[t]+(1023&e)]+wi.exponentTable[t],wi.floatView[0]}});"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"143"}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="143");class ThinFilmFresnelMap extends DataTexture{constructor(e=380,t=1.5,i=3,n=64){const r=new Uint8Array(n*n*4);super(r,n,n,1023,1009,300,1e3,1e3,1006,1008),this._filmThickness=e,this._refractiveIndexFilm=t,this._refractiveIndexBase=i,this._size=n,this._data=r,this._updateData(),this.generateMipmaps=!0,this.needsUpdate=!0}get filmThickness(){return this._filmThickness}set filmThickness(e){this._filmThickness=e,this.updateSettings(this._filmThickness,this._refractiveIndexFilm,this._refractiveIndexBase)}get refractiveIndexFilm(){return this._refractiveIndexFilm}set refractiveIndexFilm(e){this._refractiveIndexFilm=e,this.updateSettings(this._filmThickness,this._refractiveIndexFilm,this._refractiveIndexBase)}get refractiveIndexBase(){return this._refractiveIndexBase}set refractiveIndexBase(e){this._refractiveIndexBase=e,this.updateSettings(this._filmThickness,this._refractiveIndexFilm,this._refractiveIndexBase)}updateSettings(e,t,i){this._filmThickness=e||380,this._refractiveIndexFilm=t||2,this._refractiveIndexBase=i||3,this._updateData()}_fresnelRefl(e,t,i,n,r,s){var a=1-i*i,o=e/t;if(o*o*a>1){r.x=1,r.y=1;var l=o*o;s.x=2*Math.atan(-l*Math.sqrt(a-1/l)/i),s.y=2*Math.atan(-Math.sqrt(a-1/l)/i)}else{var c=(t*i-e*n)/(t*i+e*n),h=(e*i-t*n)/(e*i+t*n);s.x=c<0?Math.PI:0,s.y=h<0?Math.PI:0,r.x=c*c,r.y=h*h}}_updateData(){this._filmThickness;var e=this._refractiveIndexFilm,t=this._refractiveIndexBase,i=this._size;function yFit_1931(e){var t=(e-568.8)*(e<568.8?.0213:.0247),i=(e-530.9)*(e<530.9?.0613:.0322);return.821*Math.exp(-.5*t*t)+.286*Math.exp(-.5*i*i)}function zFit_1931(e){var t=(e-437)*(e<437?.0845:.0278),i=(e-459)*(e<459?.0385:.0725);return 1.217*Math.exp(-.5*t*t)+.681*Math.exp(-.5*i*i)}for(var n,s,a,o,l=this._data,c=new Vector2,h=new Vector2,d=new Vector2,u=new Vector2,p=new Vector2,m=new Vector2,f=new Vector2,g=new Vector2,v=new Vector2,y=new Vector2,x=new Vector2,b=new Vector2,_=1/(e*e),S=e*e/(t*t),w=0;w","#include \n\t\t\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor);\n\t\t\tfloat grey = (material.diffuseColor.r + material.diffuseColor.g + material.diffuseColor.b) / 3.0;\n\t\t\ttransmissionAlpha = mix( transmissionAlpha, 1.0-grey, transmissionFactor );")}static selectiveBloomShaderFragment(e){e.uniforms.globalBloom=game.dice3d.uniforms.globalBloom,e.fragmentShader=`\n\t\t\tuniform float globalBloom;\n\t\t\t${e.fragmentShader}\n\t\t`.replace("#include ","#include \n\t\t\tif (globalBloom > 0.5) {\n\t\t\t\t#ifdef USE_EMISSIVEMAP\n\t\t\t\t\tgl_FragColor.rgb = texture2D( emissiveMap, vUv ).rgb * emissive;\n\t\t\t\t#else\n\t\t\t\t\tgl_FragColor.rgb = vec3(0.0);\n\t\t\t\t#endif\n\t\t\t}\n\t\t")}static iridescentShaderFragment(e){e.uniforms.iridescenceLookUp=game.dice3d.uniforms.iridescenceLookUp,e.uniforms.iridescenceNoise=game.dice3d.uniforms.iridescenceNoise,e.uniforms.boost=game.dice3d.uniforms.boost,e.vertexShader=`\n\t\t\tvarying vec3 viWorldPosition;\n\t\t\tvarying vec3 viWorldNormal;\n\t\t\t${e.vertexShader}\n\t\t`.replace("#include ","#include \n\t\t\tviWorldPosition = worldPosition.xyz;\n\t\t\tviWorldNormal = mat3(modelMatrix) * normalize(normal);\n\t\t\t"),e.fragmentShader=`\n\t\t\tvarying vec3 viWorldPosition;\n\t\t\tvarying vec3 viWorldNormal;\n\t\t\t\n\t\t\tuniform sampler2D iridescenceLookUp;\n\t\t\tuniform sampler2D iridescenceNoise;\n\t\t\tuniform float boost;\n\t\t\t${e.fragmentShader}\n\t\t`.replace("#include ","vec3 viewWorldDir = normalize(viWorldPosition - cameraPosition);\n\t\t\tvec3 iNormal = normalize(viWorldNormal); \n\t\t\tfloat NdotV = max(-dot(viewWorldDir, iNormal), 0.0);\n\t\t\tfloat fresnelFactor = pow(1.0 - NdotV, 5.0);\n\t\t\tfloat noise = texture2D(iridescenceNoise, vUv/2.0).r;\n\t\t\tvec3 airy = texture2D(iridescenceLookUp, vec2(NdotV * .99, noise)).xyz;\n\t\t\ttotalSpecular = totalSpecular * airy * boost;\n\n\t\t\t#include ")}}class DicePreset{constructor(e,t=""){t=t||e,this.type=e,this.term="Die",this.shape=t||e,this.scale=1,this.labels=[],this.valueMap=null,this.values=[],this.bumps=[],this.emissiveMaps=[],this.emissive=0,this.mass=300,this.inertia=13,this.geometry=null,this.model=null,this.system="standard",this.modelLoaded=!1,this.modelLoading=!1,this.modelFile=null,this.internalAdd=!1,this.appearance={labelColor:"#FFFFFF",diceColor:"#000000",outlineColor:"#000000",edgeColor:"#000000",texture:"none",material:"auto",font:"auto",colorset:"custom"}}setValues(e=1,t=20,i=1){this.values=this.range(e,t,i),e<1&&this.setValueMap(e,t,i)}setValueMap(e,t,i){let n={},r=1;for(let s=e;s<=t;s+=i)n[s]=r,r++;this.valueMap=n}registerFaces(e,t="labels"){let i=[];if(i.push(""),["d2","d10"].includes(this.shape)||i.push(""),"d4"==this.shape){let t=e[0],n=e[1],r=e[2],s=e[3];i=[[[],[0,0,0],[n,s,r],[t,r,s],[n,t,s],[t,n,r]],[[],[0,0,0],[n,r,s],[r,t,s],[n,s,t],[r,n,t]],[[],[0,0,0],[s,r,n],[r,s,t],[s,n,t],[r,t,n]],[[],[0,0,0],[s,n,r],[t,s,r],[s,t,n],[t,r,n]]]}else Array.prototype.push.apply(i,e);switch(t){case"labels":this.labels=i;break;case"bumps":this.bumps=i;break;case"emissive":this.emissiveMaps=i}}setLabels(e){this.labels=e,this.modelLoaded=!1,this.modelLoading=!1}setBumpMaps(e){this.bumps=e,this.modelLoaded=!1,this.modelLoading=!1}setEmissiveMaps(e){this.emissiveMaps=e,this.modelLoaded=!1,this.modelLoading=!1}loadTextures(){return this.modelLoaded||!1!==this.modelLoading||(this.modelLoading=new Promise(((e,t)=>{let i,n,r=0;for(let t=0;t<3;t++){switch(t){case 0:i=this.labels,n="labels";break;case 1:i=this.bumps,n="bumps";break;case 2:i=this.emissiveMaps,n="emissive"}let s=0,a=i.length,o=/\.(PNG|JPG|GIF|WEBP)$/i,l=Array(i.length),c=!1;for(let t=0;t=a&&(this.registerFaces(l,l.textureType),r<2?r++:(e(),this.modelLoaded=!0))}.bind(this),l[t].onerror=function(t){console.error("[Dice So Nice] Error loading texture:"+t),++s>=a&&(r<2?r++:(e(),this.modelLoaded=!0))}.bind(this,i[t]),l[t].src=i[t]):(l[t]=i[t],++s);c||(this.registerFaces(l,n),r<2?r++:(e(),this.modelLoaded=!0))}}))),this.modelLoading}range(e,t,i=1){for(var n=[e],r=e;r{e.load(this.modelFile,(e=>{e.scene.traverse((function(e){e.isMesh&&(e.castShadow=!0,e.material.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader,null!==e.material.map&&(e.material.map.anisotropy=8),null!==e.material.normalMap&&(e.material.normalMap.anisotropy=8),null!==e.material.emissiveMap&&(e.material.emissiveMap.anisotropy=8),null!==e.material.roughnessMap&&(e.material.roughnessMap.anisotropy=8),null!==e.material.metalnessMap&&(e.material.metalnessMap.anisotropy=8))})),this.model=e,this.modelLoaded=!0,Hooks.callAll("diceSoNiceModelLoaded",this),t(e)}))}))),this.modelLoading}}const Ti=[],Ei=[];let Ci;Ci=new DicePreset("d2"),Ci.setLabels(["1","2"]),Ci.setValues(1,2),Ci.inertia=8,Ci.mass=400,Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("dc","d2"),Ci.term="Coin",Ci.setLabels(["modules/dice-so-nice/textures/coin/tail.webp","modules/dice-so-nice/textures/coin/heads.webp"]),Ci.setBumpMaps(["modules/dice-so-nice/textures/coin/tail_bump.webp","modules/dice-so-nice/textures/coin/heads_bump.webp"]),Ci.setValues(0,1),Ci.inertia=8,Ci.scale=.9,Ci.colorset="coin_default",Ti.push(Ci),Ci=new DicePreset("d4"),Ci.setLabels(["1","2","3","4"]),Ci.setValues(1,4),Ci.inertia=5,Ci.scale=1.2,Ti.push(Ci),Ci=new DicePreset("d6"),Ci.setLabels(["1","2","3","4","5","6"]),Ci.setValues(1,6),Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d3","d6"),Ci.setLabels(["1","2","3"]),Ci.setValues(1,3),Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("df","d6"),Ci.term="FateDie",Ci.setLabels(["−"," ","+"]),Ci.setValues(-1,1),Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d8"),Ci.setLabels(["1","2","3","4","5","6","7","8"]),Ci.setValues(1,8),Ti.push(Ci),Ci=new DicePreset("d10"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","0"]),Ci.setValues(1,10),Ci.mass=450,Ci.inertia=9,Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d5","d10"),Ci.setLabels(["1","2","3","4","5"]),Ci.setValues(1,5),Ci.mass=450,Ci.inertia=9,Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d100","d10"),Ci.setLabels(["10","20","30","40","50","60","70","80","90","00"]),Ci.setValues(10,100,10),Ci.mass=450,Ci.inertia=9,Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d12"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12"]),Ci.setValues(1,12),Ci.mass=450,Ci.inertia=8,Ci.scale=.9,Ti.push(Ci),Ci=new DicePreset("d14"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14"]),Ci.setValues(1,14),Ci.mass=450,Ci.inertia=8,Ci.scale=1,Ti.push(Ci),Ci=new DicePreset("d7","d14"),Ci.setLabels(["1","2","3","4","5","6","7"]),Ci.setValues(1,7),Ci.mass=450,Ci.inertia=8,Ci.scale=1,Ti.push(Ci),Ci=new DicePreset("d16"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16"]),Ci.setValues(1,16),Ci.mass=450,Ci.inertia=8,Ci.scale=1,Ti.push(Ci),Ci=new DicePreset("d20"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"]),Ci.setValues(1,20),Ci.mass=500,Ci.scale=1,Ci.inertia=6,Ti.push(Ci),Ci=new DicePreset("d24"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24"]),Ci.setValues(1,24),Ci.mass=500,Ci.scale=1,Ci.inertia=10,Ti.push(Ci),Ci=new DicePreset("d30"),Ci.setLabels(["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"]),Ci.setValues(1,30),Ci.mass=500,Ci.scale=1,Ci.inertia=10,Ti.push(Ci),Ei.push({type:"d6",labels:["modules/dice-so-nice/textures/dot/d6-1.webp","modules/dice-so-nice/textures/dot/d6-2.webp","modules/dice-so-nice/textures/dot/d6-3.webp","modules/dice-so-nice/textures/dot/d6-4.webp","modules/dice-so-nice/textures/dot/d6-5.webp","modules/dice-so-nice/textures/dot/d6-6.webp"],bumpMaps:["modules/dice-so-nice/textures/dot/d6-1-b.webp","modules/dice-so-nice/textures/dot/d6-2-b.webp","modules/dice-so-nice/textures/dot/d6-3-b.webp","modules/dice-so-nice/textures/dot/d6-4-b.webp","modules/dice-so-nice/textures/dot/d6-5-b.webp","modules/dice-so-nice/textures/dot/d6-6-b.webp"],system:"dot"}),Ei.push({type:"d6",labels:["modules/dice-so-nice/textures/dot/d6-1-black.webp","modules/dice-so-nice/textures/dot/d6-2-black.webp","modules/dice-so-nice/textures/dot/d6-3-black.webp","modules/dice-so-nice/textures/dot/d6-4-black.webp","modules/dice-so-nice/textures/dot/d6-5-black.webp","modules/dice-so-nice/textures/dot/d6-6-black.webp"],bumpMaps:["modules/dice-so-nice/textures/dot/d6-1-b.webp","modules/dice-so-nice/textures/dot/d6-2-b.webp","modules/dice-so-nice/textures/dot/d6-3-b.webp","modules/dice-so-nice/textures/dot/d6-4-b.webp","modules/dice-so-nice/textures/dot/d6-5-b.webp","modules/dice-so-nice/textures/dot/d6-6-b.webp"],system:"dot_b"}),Ei.push({type:"d2",labels:["1","F"],font:"FoundryVTT",system:"foundry_vtt",fontScale:1.2}),Ei.push({type:"d4",labels:["1","2","3","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.8}),Ei.push({type:"d6",labels:["1","2","3","4","5","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"df",labels:["−"," ","+"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d3",labels:["1","2","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d8",labels:["1","2","3","4","5","6","7","F"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d10",labels:["1","2","3","4","5","6","7","8","9","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.9}),Ei.push({type:"d5",labels:["1","2","3","4","E"],font:"FoundryVTT",system:"foundry_vtt",fontScale:.9}),Ei.push({type:"d100",labels:["10","20","30","40","50","60","70","80","90","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d12",labels:["1","2","3","4","5","6","7","8","9","10","11","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d14",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d7",labels:["1","2","3","4","5","6","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d16",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d20",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","F"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d24",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","F"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"d30",labels:["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","E"],font:"FoundryVTT",system:"foundry_vtt"}),Ei.push({type:"df",labels:["modules/dice-so-nice/textures/spectrumdice/df-m.webp","modules/dice-so-nice/textures/spectrumdice/df-0.webp","modules/dice-so-nice/textures/spectrumdice/df-p.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/df-m.webp","modules/dice-so-nice/textures/spectrumdice/df-0.webp","modules/dice-so-nice/textures/spectrumdice/df-p.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d2",labels:["modules/dice-so-nice/textures/spectrumdice/d2-1.webp","modules/dice-so-nice/textures/spectrumdice/d2-2.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d2-1.webp","modules/dice-so-nice/textures/spectrumdice/d2-2.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"dc",labels:["modules/dice-so-nice/textures/spectrumdice/dc-h.webp","modules/dice-so-nice/textures/spectrumdice/dc-t.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/dc-h.webp","modules/dice-so-nice/textures/spectrumdice/dc-t.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d4",labels:["modules/dice-so-nice/textures/spectrumdice/d4-1.webp","modules/dice-so-nice/textures/spectrumdice/d4-2.webp","modules/dice-so-nice/textures/spectrumdice/d4-3.webp","modules/dice-so-nice/textures/spectrumdice/d4-4.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d4-1.webp","modules/dice-so-nice/textures/spectrumdice/d4-2.webp","modules/dice-so-nice/textures/spectrumdice/d4-3.webp","modules/dice-so-nice/textures/spectrumdice/d4-4.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d6",labels:["modules/dice-so-nice/textures/spectrumdice/d6-1.webp","modules/dice-so-nice/textures/spectrumdice/d6-2.webp","modules/dice-so-nice/textures/spectrumdice/d6-3.webp","modules/dice-so-nice/textures/spectrumdice/d6-4.webp","modules/dice-so-nice/textures/spectrumdice/d6-5.webp","modules/dice-so-nice/textures/spectrumdice/d6-6.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d6-1.webp","modules/dice-so-nice/textures/spectrumdice/d6-2.webp","modules/dice-so-nice/textures/spectrumdice/d6-3.webp","modules/dice-so-nice/textures/spectrumdice/d6-4.webp","modules/dice-so-nice/textures/spectrumdice/d6-5.webp","modules/dice-so-nice/textures/spectrumdice/d6-6.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d8",labels:["modules/dice-so-nice/textures/spectrumdice/d8-1.webp","modules/dice-so-nice/textures/spectrumdice/d8-2.webp","modules/dice-so-nice/textures/spectrumdice/d8-3.webp","modules/dice-so-nice/textures/spectrumdice/d8-4.webp","modules/dice-so-nice/textures/spectrumdice/d8-5.webp","modules/dice-so-nice/textures/spectrumdice/d8-6.webp","modules/dice-so-nice/textures/spectrumdice/d8-7.webp","modules/dice-so-nice/textures/spectrumdice/d8-8.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d8-1.webp","modules/dice-so-nice/textures/spectrumdice/d8-2.webp","modules/dice-so-nice/textures/spectrumdice/d8-3.webp","modules/dice-so-nice/textures/spectrumdice/d8-4.webp","modules/dice-so-nice/textures/spectrumdice/d8-5.webp","modules/dice-so-nice/textures/spectrumdice/d8-6.webp","modules/dice-so-nice/textures/spectrumdice/d8-7.webp","modules/dice-so-nice/textures/spectrumdice/d8-8.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d10",labels:["modules/dice-so-nice/textures/spectrumdice/d10-1.webp","modules/dice-so-nice/textures/spectrumdice/d10-2.webp","modules/dice-so-nice/textures/spectrumdice/d10-3.webp","modules/dice-so-nice/textures/spectrumdice/d10-4.webp","modules/dice-so-nice/textures/spectrumdice/d10-5.webp","modules/dice-so-nice/textures/spectrumdice/d10-6.webp","modules/dice-so-nice/textures/spectrumdice/d10-7.webp","modules/dice-so-nice/textures/spectrumdice/d10-8.webp","modules/dice-so-nice/textures/spectrumdice/d10-9.webp","modules/dice-so-nice/textures/spectrumdice/d10-0.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d10-1.webp","modules/dice-so-nice/textures/spectrumdice/d10-2.webp","modules/dice-so-nice/textures/spectrumdice/d10-3.webp","modules/dice-so-nice/textures/spectrumdice/d10-4.webp","modules/dice-so-nice/textures/spectrumdice/d10-5.webp","modules/dice-so-nice/textures/spectrumdice/d10-6.webp","modules/dice-so-nice/textures/spectrumdice/d10-7.webp","modules/dice-so-nice/textures/spectrumdice/d10-8.webp","modules/dice-so-nice/textures/spectrumdice/d10-9.webp","modules/dice-so-nice/textures/spectrumdice/d10-0.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d12",labels:["modules/dice-so-nice/textures/spectrumdice/d12-1.webp","modules/dice-so-nice/textures/spectrumdice/d12-2.webp","modules/dice-so-nice/textures/spectrumdice/d12-3.webp","modules/dice-so-nice/textures/spectrumdice/d12-4.webp","modules/dice-so-nice/textures/spectrumdice/d12-5.webp","modules/dice-so-nice/textures/spectrumdice/d12-6.webp","modules/dice-so-nice/textures/spectrumdice/d12-7.webp","modules/dice-so-nice/textures/spectrumdice/d12-8.webp","modules/dice-so-nice/textures/spectrumdice/d12-9.webp","modules/dice-so-nice/textures/spectrumdice/d12-10.webp","modules/dice-so-nice/textures/spectrumdice/d12-11.webp","modules/dice-so-nice/textures/spectrumdice/d12-12.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d12-1.webp","modules/dice-so-nice/textures/spectrumdice/d12-2.webp","modules/dice-so-nice/textures/spectrumdice/d12-3.webp","modules/dice-so-nice/textures/spectrumdice/d12-4.webp","modules/dice-so-nice/textures/spectrumdice/d12-5.webp","modules/dice-so-nice/textures/spectrumdice/d12-6.webp","modules/dice-so-nice/textures/spectrumdice/d12-7.webp","modules/dice-so-nice/textures/spectrumdice/d12-8.webp","modules/dice-so-nice/textures/spectrumdice/d12-9.webp","modules/dice-so-nice/textures/spectrumdice/d12-10.webp","modules/dice-so-nice/textures/spectrumdice/d12-11.webp","modules/dice-so-nice/textures/spectrumdice/d12-12.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d100",labels:["modules/dice-so-nice/textures/spectrumdice/d100-10.webp","modules/dice-so-nice/textures/spectrumdice/d100-20.webp","modules/dice-so-nice/textures/spectrumdice/d100-30.webp","modules/dice-so-nice/textures/spectrumdice/d100-40.webp","modules/dice-so-nice/textures/spectrumdice/d100-50.webp","modules/dice-so-nice/textures/spectrumdice/d100-60.webp","modules/dice-so-nice/textures/spectrumdice/d100-70.webp","modules/dice-so-nice/textures/spectrumdice/d100-80.webp","modules/dice-so-nice/textures/spectrumdice/d100-90.webp","modules/dice-so-nice/textures/spectrumdice/d100-00.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d100-10.webp","modules/dice-so-nice/textures/spectrumdice/d100-20.webp","modules/dice-so-nice/textures/spectrumdice/d100-30.webp","modules/dice-so-nice/textures/spectrumdice/d100-40.webp","modules/dice-so-nice/textures/spectrumdice/d100-50.webp","modules/dice-so-nice/textures/spectrumdice/d100-60.webp","modules/dice-so-nice/textures/spectrumdice/d100-70.webp","modules/dice-so-nice/textures/spectrumdice/d100-80.webp","modules/dice-so-nice/textures/spectrumdice/d100-90.webp","modules/dice-so-nice/textures/spectrumdice/d100-00.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"}),Ei.push({type:"d20",labels:["modules/dice-so-nice/textures/spectrumdice/d20-1.webp","modules/dice-so-nice/textures/spectrumdice/d20-2.webp","modules/dice-so-nice/textures/spectrumdice/d20-3.webp","modules/dice-so-nice/textures/spectrumdice/d20-4.webp","modules/dice-so-nice/textures/spectrumdice/d20-5.webp","modules/dice-so-nice/textures/spectrumdice/d20-6.webp","modules/dice-so-nice/textures/spectrumdice/d20-7.webp","modules/dice-so-nice/textures/spectrumdice/d20-8.webp","modules/dice-so-nice/textures/spectrumdice/d20-9.webp","modules/dice-so-nice/textures/spectrumdice/d20-10.webp","modules/dice-so-nice/textures/spectrumdice/d20-11.webp","modules/dice-so-nice/textures/spectrumdice/d20-12.webp","modules/dice-so-nice/textures/spectrumdice/d20-13.webp","modules/dice-so-nice/textures/spectrumdice/d20-14.webp","modules/dice-so-nice/textures/spectrumdice/d20-15.webp","modules/dice-so-nice/textures/spectrumdice/d20-16.webp","modules/dice-so-nice/textures/spectrumdice/d20-17.webp","modules/dice-so-nice/textures/spectrumdice/d20-18.webp","modules/dice-so-nice/textures/spectrumdice/d20-19.webp","modules/dice-so-nice/textures/spectrumdice/d20-20.webp"],emissiveMaps:["modules/dice-so-nice/textures/spectrumdice/d20-1.webp","modules/dice-so-nice/textures/spectrumdice/d20-2.webp","modules/dice-so-nice/textures/spectrumdice/d20-3.webp","modules/dice-so-nice/textures/spectrumdice/d20-4.webp","modules/dice-so-nice/textures/spectrumdice/d20-5.webp","modules/dice-so-nice/textures/spectrumdice/d20-6.webp","modules/dice-so-nice/textures/spectrumdice/d20-7.webp","modules/dice-so-nice/textures/spectrumdice/d20-8.webp","modules/dice-so-nice/textures/spectrumdice/d20-9.webp","modules/dice-so-nice/textures/spectrumdice/d20-10.webp","modules/dice-so-nice/textures/spectrumdice/d20-11.webp","modules/dice-so-nice/textures/spectrumdice/d20-12.webp","modules/dice-so-nice/textures/spectrumdice/d20-13.webp","modules/dice-so-nice/textures/spectrumdice/d20-14.webp","modules/dice-so-nice/textures/spectrumdice/d20-15.webp","modules/dice-so-nice/textures/spectrumdice/d20-16.webp","modules/dice-so-nice/textures/spectrumdice/d20-17.webp","modules/dice-so-nice/textures/spectrumdice/d20-18.webp","modules/dice-so-nice/textures/spectrumdice/d20-19.webp","modules/dice-so-nice/textures/spectrumdice/d20-20.webp"],emissive:16777215,colorset:"spectrum_default",system:"spectrum"});const Ai={none:{name:"DICESONICE.TextureNone",composite:"source-over",source:"",bump:""},cloudy:{name:"DICESONICE.TextureCloudsTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/cloudy.webp",bump:"modules/dice-so-nice/textures/cloudy.alt.webp"},cloudy_2:{name:"DICESONICE.TextureClouds",composite:"multiply",source:"modules/dice-so-nice/textures/cloudy.alt.webp",bump:"modules/dice-so-nice/textures/cloudy.alt.webp"},fire:{name:"DICESONICE.TextureFire",composite:"multiply",source:"modules/dice-so-nice/textures/fire.webp",bump:"modules/dice-so-nice/textures/fire.webp"},marble:{name:"DICESONICE.TextureMarble",composite:"multiply",source:"modules/dice-so-nice/textures/marble.webp",bump:"",material:"glass"},water:{name:"DICESONICE.TextureWaterTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/water.webp",bump:"modules/dice-so-nice/textures/water.webp",material:"glass"},water_2:{name:"DICESONICE.TextureWater",composite:"multiply",source:"modules/dice-so-nice/textures/water.webp",bump:"modules/dice-so-nice/textures/water.webp",material:"glass"},ice:{name:"DICESONICE.TextureIceTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/ice.webp",bump:"modules/dice-so-nice/textures/ice.webp",material:"glass"},ice_2:{name:"DICESONICE.TextureIce",composite:"multiply",source:"modules/dice-so-nice/textures/ice.webp",bump:"modules/dice-so-nice/textures/ice.webp",material:"glass"},paper:{name:"DICESONICE.TexturePaper",composite:"multiply",source:"modules/dice-so-nice/textures/paper.webp",bump:"modules/dice-so-nice/textures/paper-bump.webp",material:"wood"},speckles:{name:"DICESONICE.TextureSpeckles",composite:"multiply",source:"modules/dice-so-nice/textures/speckles.webp",bump:"modules/dice-so-nice/textures/speckles.webp"},glitter:{name:"DICESONICE.TextureGlitter",composite:"multiply",source:"modules/dice-so-nice/textures/glitter.webp",bump:"modules/dice-so-nice/textures/glitter-bump.webp"},glitter_2:{name:"DICESONICE.TextureGlitterTransparent",composite:"destination-in",source:"modules/dice-so-nice/textures/glitter-alpha.webp",bump:""},stars:{name:"DICESONICE.TextureStars",composite:"multiply",source:"modules/dice-so-nice/textures/stars.webp",bump:"modules/dice-so-nice/textures/stars.webp"},stainedglass:{name:"DICESONICE.TextureStainedGlass",composite:"multiply",source:"modules/dice-so-nice/textures/stainedglass.webp",bump:"modules/dice-so-nice/textures/stainedglass-bump.webp",material:"iridescent"},skulls:{name:"DICESONICE.TextureSkulls",composite:"multiply",source:"modules/dice-so-nice/textures/skulls.webp",bump:"modules/dice-so-nice/textures/skulls.webp"},leopard:{name:"DICESONICE.TextureLeopard",composite:"multiply",source:"modules/dice-so-nice/textures/leopard.webp",bump:"modules/dice-so-nice/textures/leopard.webp",material:"wood"},tiger:{name:"DICESONICE.TextureTiger",composite:"multiply",source:"modules/dice-so-nice/textures/tiger.webp",bump:"modules/dice-so-nice/textures/tiger.webp",material:"wood"},cheetah:{name:"DICESONICE.TextureCheetah",composite:"multiply",source:"modules/dice-so-nice/textures/cheetah.webp",bump:"modules/dice-so-nice/textures/cheetah.webp",material:"wood"},dragon:{name:"Dragon",composite:"multiply",source:"modules/dice-so-nice/textures/dragon.webp",bump:"modules/dice-so-nice/textures/dragon-bump.webp"},lizard:{name:"Lizard",composite:"multiply",source:"modules/dice-so-nice/textures/lizard.webp",bump:"modules/dice-so-nice/textures/lizard-bump.webp"},bird:{name:"Bird",composite:"multiply",source:"modules/dice-so-nice/textures/feather.webp",bump:"modules/dice-so-nice/textures/feather-bump.webp"},astral:{name:"DICESONICE.TextureAstralSea",composite:"multiply",source:"modules/dice-so-nice/textures/astral.webp",bump:"modules/dice-so-nice/textures/stars.webp"},wood:{name:"DICESONICE.TextureWood",composite:"multiply",source:"modules/dice-so-nice/textures/wood.webp",bump:"modules/dice-so-nice/textures/wood.webp",material:"wood"},metal:{name:"DICESONICE.TextureMetal",composite:"multiply",source:"modules/dice-so-nice/textures/metal.webp",bump:"",material:"metal"},stone:{name:"DICESONICE.TextureStone",composite:"soft-light",source:"modules/dice-so-nice/textures/stone.webp",bump:"modules/dice-so-nice/textures/stone.webp",material:"stone"},radial:{name:"DICESONICE.TextureRadial",composite:"source-over",source:"modules/dice-so-nice/textures/radial.webp",bump:""},bronze01:{name:"DICESONICE.TextureBronze1",composite:"difference",source:"modules/dice-so-nice/textures/bronze01.webp",material:"metal",bump:""},bronze02:{name:"DICESONICE.TextureBronze2",composite:"difference",source:"modules/dice-so-nice/textures/bronze02.webp",material:"metal",bump:""},bronze03:{name:"DICESONICE.TextureBronze3",composite:"difference",source:"modules/dice-so-nice/textures/bronze03.webp",material:"metal",bump:""},bronze03a:{name:"DICESONICE.TextureBronze3a",composite:"difference",source:"modules/dice-so-nice/textures/bronze03a.webp",material:"metal",bump:""},bronze03b:{name:"DICESONICE.TextureBronze3b",composite:"difference",source:"modules/dice-so-nice/textures/bronze03b.webp",material:"metal",bump:""},bronze04:{name:"DICESONICE.TextureBronze4",composite:"difference",source:"modules/dice-so-nice/textures/bronze04.webp",material:"metal",bump:""}},Pi={coin_default:{name:"coin_default",description:"DICESONICE.ColorCoinDefault",category:"DICESONICE.AcquiredTaste",foreground:"#f6c928",background:"#f6c928",outline:"none",edge:"#f6c928",texture:"metal",visibility:"hidden"},spectrum_default:{name:"spectrum_default",description:"DICESONICE.ColorSpectrumDefault",category:"DICESONICE.AcquiredTaste",foreground:"#ffffff",background:"#000000",outline:"#ffffff",edge:"#000000",texture:"none",visibility:"hidden",material:"pristine"},radiant:{name:"radiant",description:"DICESONICE.ColorRadiant",category:"DICESONICE.DamageTypes",foreground:"#F9B333",background:"#FFFFFF",outline:"gray",texture:"paper"},fire:{name:"fire",description:"DICESONICE.ColorFire",category:"DICESONICE.DamageTypes",foreground:"#f8d84f",background:["#f8d84f","#f9b02d","#f43c04","#910200","#4c1009"],outline:"black",texture:"fire"},ice:{name:"ice",description:"DICESONICE.ColorIce",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#214fa3","#3c6ac1","#253f70","#0b56e2","#09317a"],outline:"black",texture:"ice"},cold:{name:"cold",description:"DICESONICE.ColorCold",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#214fa3","#3c6ac1","#253f70","#0b56e2","#09317a"],outline:"black",texture:"ice_2"},poison:{name:"poison",description:"DICESONICE.ColorPoison",category:"DICESONICE.DamageTypes",foreground:"#D6A8FF",background:["#313866","#504099","#66409e","#934fc3","#c949fc"],outline:"black",texture:"cloudy"},acid:{name:"acid",description:"DICESONICE.ColorAcid",category:"DICESONICE.DamageTypes",foreground:"#A9FF70",background:["#a6ff00","#83b625","#5ace04","#69f006","#b0f006","#93bc25"],outline:"black",texture:"marble",material:"plastic"},thunder:{name:"thunder",description:"DICESONICE.ColorThunder",category:"DICESONICE.DamageTypes",foreground:"#FFC500",background:"#7D7D7D",outline:"black",texture:"cloudy"},lightning:{name:"lightning",description:"DICESONICE.ColorLightning",category:"DICESONICE.DamageTypes",foreground:"#FFC500",background:["#f17105","#f3ca40","#eddea4","#df9a57","#dea54b"],outline:"#7D7D7D",texture:"ice"},air:{name:"air",description:"DICESONICE.ColorAir",category:"DICESONICE.DamageTypes",foreground:"#ffffff",background:["#d0e5ea","#c3dee5","#a4ccd6","#8dafb7","#80a4ad"],outline:"black",texture:"cloudy"},water:{name:"water",description:"DICESONICE.ColorWater",category:"DICESONICE.DamageTypes",foreground:"#60E9FF",background:["#87b8c4","#77a6b2","#6b98a3","#5b8691","#4b757f"],outline:"black",texture:"water"},earth:{name:"earth",description:"DICESONICE.ColorEarth",category:"DICESONICE.DamageTypes",foreground:"#6C9943",background:["#346804","#184200","#527f22","#3a1d04","#56341a","#331c17","#5a352a","#302210"],outline:"black",texture:"speckles"},force:{name:"force",description:"DICESONICE.ColorForce",category:"DICESONICE.DamageTypes",foreground:"white",background:["#FF97FF","#FF68FF","#C651C6"],outline:"#570000",texture:"stars"},psychic:{name:"psychic",description:"DICESONICE.ColorPsychic",category:"DICESONICE.DamageTypes",foreground:"#D6A8FF",background:["#313866","#504099","#66409E","#934FC3","#C949FC","#313866"],outline:"black",texture:"speckles"},necrotic:{name:"necrotic",description:"DICESONICE.ColorNecrotic",category:"DICESONICE.DamageTypes",foreground:"#ffffff",background:"#6F0000",outline:"black",texture:"skulls"},breebaby:{name:"breebaby",description:"DICESONICE.ColorPastelSunset",category:"DICESONICE.ThemesSoNice",foreground:["#5E175E","#564A5E","#45455E","#3D5A5E","#1E595E","#5E3F3D","#5E1E29","#283C5E","#25295E"],background:["#FE89CF","#DFD4F2","#C2C2E8","#CCE7FA","#A1D9FC","#F3C3C2","#EB8993","#8EA1D2","#7477AD"],outline:"white",texture:"marble",material:"plastic"},pinkdreams:{name:"pinkdreams",description:"DICESONICE.ColorPinkDreams",category:"DICESONICE.ThemesSoNice",foreground:"white",background:["#ff007c","#df73ff","#f400a1","#df00ff","#ff33cc"],outline:"#570000",texture:"skulls"},inspired:{name:"inspired",description:"DICESONICE.ColorInspired",category:"DICESONICE.ThemesSoNice",foreground:"#FFD800",background:"#C4C4B6",outline:"#000000",texture:"stone"},bloodmoon:{name:"bloodmoon",description:"DICESONICE.ColorBloodMoon",category:"DICESONICE.ThemesSoNice",foreground:"#CDB800",background:"#6F0000",outline:"black",texture:"marble",material:"plastic"},starynight:{name:"starynight",description:"DICESONICE.ColorStaryNight",category:"DICESONICE.ThemesSoNice",foreground:"#4F708F",background:["#091636","#233660","#4F708F","#8597AD","#E2E2E2"],outline:"white",texture:"speckles"},glitterparty:{name:"glitterparty",description:"DICESONICE.ColorGlitterParty",category:"DICESONICE.ThemesSoNice",foreground:"white",background:["#FFB5F5","#7FC9FF","#A17FFF"],outline:"none",texture:"glitter"},astralsea:{name:"astralsea",description:"DICESONICE.ColorAstralSea",category:"DICESONICE.ThemesSoNice",foreground:"#565656",background:"white",outline:"none",texture:"astral"},foundry:{name:"foundry",description:"DICESONICE.ColorFoundry",category:"DICESONICE.ThemesSoNice",foreground:"#000000",background:"#ffffff",outline:"none",edge:"#000000",texture:"radial"},dragons:{name:"dragons",description:"DICESONICE.ColorDragons",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:["#B80000","#4D5A5A","#5BB8FF","#7E934E","#FFFFFF","#F6ED7C","#7797A3","#A78437","#862C1A","#FFDF8A"],outline:"black",texture:["dragon","lizard"],description:"Here be Dragons"},birdup:{name:"birdup",description:"DICESONICE.ColorBirdUp",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:["#F11602","#FFC000","#6EC832","#0094BC","#05608D","#FEABB3","#F75680","#F3F0DF","#C7A57F"],outline:"black",texture:"bird",description:"Bird Up!"},tigerking:{name:"tigerking",description:"DICESONICE.ColorTigerKing",category:"DICESONICE.AcquiredTaste",foreground:"#ffffff",background:"#FFCC40",outline:"black",texture:["leopard","tiger","cheetah"]},toxic:{name:"toxic",description:"DICESONICE.ColorToxic",category:"DICESONICE.AcquiredTaste",foreground:"#A9FF70",background:["#a6ff00","#83b625","#5ace04","#69f006","#b0f006","#93bc25"],outline:"black",texture:"fire"},rainbow:{name:"rainbow",description:"DICESONICE.ColorRainblow",category:"DICESONICE.Colors",foreground:["#FF5959","#FFA74F","#FFFF56","#59FF59","#2374FF","#00FFFF","#FF59FF"],background:["#900000","#CE3900","#BCBC00","#00B500","#00008E","#008282","#A500A5"],outline:"black",texture:"none"},random:{name:"random",description:"DICESONICE.ColorRaNdOm",category:"DICESONICE.Colors",foreground:[],outline:[],background:[],texture:[]},black:{name:"black",description:"DICESONICE.ColorBlack",category:"DICESONICE.Colors",foreground:"#ffffff",background:"#000000",outline:"black",texture:"none"},white:{name:"white",description:"DICESONICE.ColorWhite",category:"DICESONICE.Colors",foreground:"#000000",background:"#FFFFFF",outline:"#FFFFFF",texture:"none"},grey:{name:"grey",description:"DICESONICE.ColorGrey",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#888888",outline:"#000000",texture:"none"},red:{name:"red",description:"DICESONICE.ColorRed",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#FF0000",outline:"none",texture:"none"},blue:{name:"blue",description:"DICESONICE.ColorBlue",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#0000FF",outline:"none",texture:"none"},green:{name:"green",description:"DICESONICE.ColorGreen",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#00FF00",outline:"none",texture:"none"},yellow:{name:"yellow",description:"DICESONICE.ColorYellow",category:"DICESONICE.Colors",foreground:"#000000",background:"#FFFF00",outline:"none",texture:"none"},pink:{name:"pink",description:"DICESONICE.ColorPink",category:"DICESONICE.Colors",foreground:"#FFFFFF",background:"#FF00FF",outline:"none",texture:"none"},cyan:{name:"cyan",description:"DICESONICE.ColorCyan",category:"DICESONICE.Colors",foreground:"#000000",background:"#00FFFF",outline:"none",texture:"none"},prism:{name:"prism",description:"DICESONICE.ColorPrism",category:"DICESONICE.AcquiredTaste",foreground:"#FFFFFF",background:"#FFFFFF",outline:"black",texture:"stainedglass"},bronze:{name:"bronze",description:"DICESONICE.ColorBronze",category:"DICESONICE.ThemesSoNice",foreground:["#FF9159","#FFB066","#FFBF59","#FFD059"],background:["#705206","#7A4E06","#643100","#7A2D06"],outline:["#3D2D03","#472D04","#301700","#471A04"],edge:["#FF5D0D","#FF7B00","#FFA20D","#FFBA0D"],texture:[["bronze01","bronze02","bronze03","bronze03b","bronze03b","bronze04"]]},custom:{name:"custom",description:"DICESONICE.ColorCustom",category:"DICESONICE.Colors",foreground:"",background:"",outline:"",edge:"",texture:"none"}},Di={d2:1,d4:1,d6:1.3,d8:1.1,d10:1,d12:1.1,d14:.5,d16:.5,d20:1,d24:1,d30:.75,d3:1.3,d5:1,d7:.5,df:2,d100:.75};class DiceColors{static loadTextures(e,t){let i={},n={},r=0,s=Object.entries(e),a=2*s.length;for(const[e,o]of s)""!==o.source?(i[e]=new Image,i[e].crossOrigin="Anonymous",i[e].onload=function(){++r>=a&&(DiceColors.diceTextures=mergeObject(i,DiceColors.diceTextures||{},{performDeletions:!0}),DiceColors.diceBumps=mergeObject(n,DiceColors.diceBumps||{},{performDeletions:!0}),t(i))},i[e].src=o.source,""!==o.bump?(n[e]=new Image,n[e].crossOrigin="Anonymous",n[e].onload=function(){++r>=a&&(DiceColors.diceTextures=mergeObject(i,DiceColors.diceTextures||{},{performDeletions:!0}),DiceColors.diceBumps=mergeObject(n,DiceColors.diceBumps||{},{performDeletions:!0}),t(i))},n[e].src=o.bump):++r):r+=2}static getTexture(e){if(Array.isArray(e)){let t=[];for(let i=0,n=e.length;i126?"rgb(30,30,30)":"rgb(230,230,230)";return{background:"rgb("+e[0]+","+e[1]+","+e[2]+")",foreground:t}}static initColorSets(e=null){let t;if(e){let i={};i[e.name]=e,t=Object.entries(i)}else t=Object.entries(Pi);for(const[e,i]of t)Pi[e].id=e,"custom"!=i.texture&&(Pi[e].texture=this.getTexture(i.texture)),"object"==typeof Pi[e].texture&&(Pi[e].texture.id=i.texture),Pi[e].material||(Pi[e].material=""),Pi[e].font||(Pi[e].font="Arial"),Pi[e].fontScale?Pi[e].fontScale=mergeObject(Di,Pi[e].fontScale,{inplace:!1,performDeletions:!0}):Pi[e].fontScale=Di,Pi[e].visibility||(Pi[e].visibility="visible");if(!e)for(let e=0;e<10;e++){let e=this.randomColor(),t=this.getTexture("random");""!=t.name?(Pi.random.foreground.push(e.foreground),Pi.random.background.push(e.background),Pi.random.outline.push(e.background),Pi.random.texture.push(t)):(Pi.random.foreground.push(e.foreground),Pi.random.background.push(e.background),Pi.random.outline.push("black"),Pi.random.texture.push(""))}}static getColorSet(e){return{...Pi[e]||Pi.custom}}static setColorCustom(e="#FFFFFF",t="#000000",i="#FFFFFF",n="#FFFFFF"){Pi.custom.foreground=e,Pi.custom.background=t,Pi.custom.outline=i,Pi.custom.edge=n}}const Li={d2:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"29D8FA3F-1F04-4F5A-985B-16353BAB0B2C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[88.93379974365234,.0001336209534201771,-4.532903671264648,88.93379974365234,.0001336209534201771,-4.532903671264648,88.93379974365234,.0001336209534201771,-4.532903671264648,90.8361587524414,-6830116763012484e-20,-2.6535863876342773,90.8361587524414,-6830116763012484e-20,-2.6535863876342773,84.580078125,-27.482694625854492,4.547501087188721,84.580078125,-27.482694625854492,4.547501087188721,86.38970947265625,-28.07042121887207,2.668496608734131,27.482057571411133,-84.58028411865234,-4.547504901885986,27.482057571411133,-84.58028411865234,-4.547504901885986,28.06978416442871,-86.38990783691406,-2.6685009002685547,27.481149673461914,-84.58119201660156,4.536083698272705,27.481149673461914,-84.58119201660156,4.536083698272705,28.069250106811523,-86.39043426513672,2.6568350791931152,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0007737207342870533,-88.93378448486328,4.532901287078857,-.0005998046253807843,-90.83614349365234,2.6535849571228027,-.0005998046253807843,-90.83614349365234,2.6535849571228027,-27.482694625854492,-84.58097839355469,4.5305891036987305,-27.482694625854492,-84.58097839355469,4.5305891036987305,-28.07042121887207,-86.39022827148438,2.6512229442596436,-84.58029174804688,-27.481143951416016,-4.552997589111328,-84.58029174804688,-27.481143951416016,-4.552997589111328,-86.3899154663086,-28.06924819946289,-2.6741106510162354,-88.93379974365234,-.0001336209534201771,4.532903671264648,-88.93379974365234,-.0001336209534201771,4.532903671264648,-88.93379974365234,-.0001336209534201771,4.532903671264648,-90.8361587524414,6830116763012484e-20,2.6535863876342773,-90.8361587524414,6830116763012484e-20,2.6535863876342773,-71.94794464111328,52.27442169189453,-4.543759822845459,-71.94794464111328,52.27442169189453,-4.543759822845459,-73.4873275756836,53.39253234863281,-2.664675235748291,-71.9488525390625,52.27351379394531,4.539828777313232,-71.9488525390625,52.27351379394531,4.539828777313232,-73.48785400390625,53.391998291015625,2.6606605052948,-52.27299499511719,71.94922637939453,-4.539824962615967,-52.27299499511719,71.94922637939453,-4.539824962615967,-53.39146423339844,73.48823547363281,-2.660656213760376,-27.482057571411133,84.58028411865234,4.547504901885986,-27.482057571411133,84.58028411865234,4.547504901885986,-28.06978416442871,86.38990783691406,2.6685009002685547,.0007736866245977581,88.93378448486328,-4.532901287078857,.0007736866245977581,88.93378448486328,-4.532901287078857,.0007736866245977581,88.93378448486328,-4.532901287078857,.0005998046253807843,90.83614349365234,-2.6535849571228027,.0005998046253807843,90.83614349365234,-2.6535849571228027,-.00013426830992102623,88.93287658691406,4.550687789916992,-.00013426830992102623,88.93287658691406,4.550687789916992,-.00013426830992102623,88.93287658691406,4.550687789916992,6751317414455116e-20,90.83562469482422,2.6717519760131836,6751317414455116e-20,90.83562469482422,2.6717519760131836,27.482694625854492,84.58097839355469,-4.5305891036987305,27.482694625854492,84.58097839355469,-4.5305891036987305,28.07042121887207,86.39022827148438,-2.6512229442596436,84.5811996459961,27.482053756713867,-4.530590534210205,84.5811996459961,27.482053756713867,-4.530590534210205,86.39044189453125,28.069782257080078,-2.651224374771118,84.58098602294922,-27.48178482055664,-4.5360870361328125,84.58098602294922,-27.48178482055664,-4.5360870361328125,86.3902359008789,-28.069887161254883,-2.6568384170532227,73.48785400390625,-53.391998291015625,-2.6606605052948,71.9488525390625,-52.27351379394531,-4.539828777313232,71.9488525390625,-52.27351379394531,-4.539828777313232,52.273902893066406,-71.94831848144531,-4.543763637542725,52.273902893066406,-71.94831848144531,-4.543763637542725,53.39199447631836,-73.48770904541016,-2.6646788120269775,.00013430237595457584,-88.93287658691406,-4.550687789916992,.00013430237595457584,-88.93287658691406,-4.550687789916992,.00013430237595457584,-88.93287658691406,-4.550687789916992,-6751317414455116e-20,-90.83562469482422,-2.6717519760131836,-6751317414455116e-20,-90.83562469482422,-2.6717519760131836,-28.069887161254883,-86.38970184326172,-2.6741127967834473,-27.48178482055664,-84.58007049560547,-4.552999496459961,-27.48178482055664,-84.58007049560547,-4.552999496459961,-52.27351760864258,-71.94794464111328,-4.5542144775390625,-52.27351760864258,-71.94794464111328,-4.5542144775390625,-53.39200210571289,-73.4873275756836,-2.67535400390625,-71.94832611083984,-52.27299118041992,-4.554214000701904,-71.94832611083984,-52.27299118041992,-4.554214000701904,-73.48771667480469,-53.391456604003906,-2.675353527069092,-88.93289947509766,.0007747426279820502,-4.550684928894043,-88.93289947509766,.0007747426279820502,-4.550684928894043,-88.93289947509766,.0007747426279820502,-4.550684928894043,-90.83563995361328,.000600832630880177,-2.671748399734497,-90.83563995361328,.000600832630880177,-2.671748399734497,-84.580078125,27.482694625854492,-4.547501087188721,-84.580078125,27.482694625854492,-4.547501087188721,-86.38970947265625,28.07042121887207,-2.668496608734131,-27.481149673461914,84.58119201660156,-4.536083698272705,-27.481149673461914,84.58119201660156,-4.536083698272705,-28.069250106811523,86.39043426513672,-2.6568350791931152,52.2744255065918,71.94884490966797,-4.529373645782471,52.2744255065918,71.94884490966797,-4.529373645782471,53.39253616333008,73.48784637451172,-2.649981737136841,71.94922637939453,52.273895263671875,-4.529374599456787,71.94922637939453,52.273895263671875,-4.529374599456787,73.48823547363281,53.391990661621094,-2.649982452392578,88.93289947509766,-.0007747426279820502,4.550684928894043,88.93289947509766,-.0007747426279820502,4.550684928894043,88.93289947509766,-.0007747426279820502,4.550684928894043,90.83563995361328,-.000600832630880177,2.671748399734497,90.83563995361328,-.000600832630880177,2.671748399734497,71.94794464111328,-52.27442169189453,4.543759346008301,71.94794464111328,-52.27442169189453,4.543759346008301,73.4873275756836,-53.39253234863281,2.664675235748291,52.27299499511719,-71.94922637939453,4.539824962615967,52.27299499511719,-71.94922637939453,4.539824962615967,53.39146423339844,-73.48823547363281,2.660656213760376,-52.2744255065918,-71.94884490966797,4.529373645782471,-52.2744255065918,-71.94884490966797,4.529373645782471,-53.39253616333008,-73.48784637451172,2.649981737136841,-73.48823547363281,-53.391990661621094,2.649982452392578,-71.94922637939453,-52.273895263671875,4.529374599456787,-71.94922637939453,-52.273895263671875,4.529374599456787,-84.5811996459961,-27.482053756713867,4.530590534210205,-84.5811996459961,-27.482053756713867,4.530590534210205,-86.39044189453125,-28.069782257080078,2.651224374771118,-84.58098602294922,27.48178482055664,4.5360870361328125,-84.58098602294922,27.48178482055664,4.5360870361328125,-86.3902359008789,28.069887161254883,2.6568384170532227,-52.273902893066406,71.94831848144531,4.543763637542725,-52.273902893066406,71.94831848144531,4.543763637542725,-53.39199447631836,73.48770904541016,2.6646788120269775,27.48178482055664,84.58007049560547,4.552999496459961,27.48178482055664,84.58007049560547,4.552999496459961,28.069887161254883,86.38970184326172,2.6741127967834473,52.27351760864258,71.94794464111328,4.5542144775390625,52.27351760864258,71.94794464111328,4.5542144775390625,53.39200210571289,73.4873275756836,2.67535400390625,73.48771667480469,53.391456604003906,2.675353527069092,71.94832611083984,52.27299118041992,4.554214000701904,71.94832611083984,52.27299118041992,4.554214000701904,84.58029174804688,27.481143951416016,4.552997589111328,84.58029174804688,27.481143951416016,4.552997589111328,86.3899154663086,28.06924819946289,2.6741106510162354],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.004305333364754915,.00014043168630450964,-.9999908208847046,.004305333364754915,.00014043168630450964,-.9999908208847046,.004305333364754915,.00014043168630450964,-.9999908208847046,.967370867729187,23871660232543945e-21,-.2533644437789917,.967370867729187,23871660232543945e-21,-.2533644437789917,.003924518823623657,-.0014061331748962402,.9999912977218628,.003924518823623657,-.0014061331748962402,.9999912977218628,.919967532157898,-.2989548146724701,.25354647636413574,.0014187097549438477,-.003943443298339844,-.9999911785125732,.0014187097549438477,-.003943443298339844,-.9999911785125732,.2989460825920105,-.9199705719947815,-.2535456418991089,.001207306981086731,-.004139244556427002,.999990701675415,.001207306981086731,-.004139244556427002,.999990701675415,.29889336228370667,-.9200217723846436,.25342196226119995,-.00010144524276256561,-.004305422306060791,.9999908208847046,-.00010144524276256561,-.004305422306060791,.9999908208847046,-.00010144524276256561,-.004305422306060791,.9999908208847046,-2811197191476822e-20,-.9673709869384766,.25336405634880066,-2811197191476822e-20,-.9673709869384766,.25336405634880066,-.0013865083456039429,-.0041558146476745605,.9999904036521912,-.0013865083456039429,-.0041558146476745605,.9999904036521912,-.29895341396331787,-.9200186133384705,.25336307287216187,-.003935068845748901,-.0012163519859313965,-.9999915361404419,-.003935068845748901,-.0012163519859313965,-.9999915361404419,-.9199703335762024,-.2988958954811096,-.25360578298568726,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.00432974100112915,-.00013017654418945312,.9999905824661255,-.967370867729187,-22581778466701508e-21,.2533644139766693,-.967370867729187,-22581778466701508e-21,.2533644139766693,-.003362357383593917,.002567464951425791,-.9999910593032837,-.003362357383593917,.002567464951425791,-.9999910593032837,-.7825664281845093,.5686163306236267,-.253506064414978,-.0035184919834136963,.0023897886276245117,.9999909996986389,-.0035184919834136963,.0023897886276245117,.9999909996986389,-.7826218605041504,.5685698390007019,.25343894958496094,-.002216615015640855,.0036201775074005127,-.9999910593032837,-.002216615015640855,.0036201775074005127,-.9999910593032837,-.5685653686523438,.782625675201416,-.25343722105026245,-.0013963840901851654,.0039055049419403076,.9999913573265076,-.0013963840901851654,.0039055049419403076,.9999913573265076,-.2989453971385956,.9199708104133606,.2535455524921417,.00011461973190307617,.004342749714851379,-.9999904632568359,.00011461973190307617,.004342749714851379,-.9999904632568359,.00011461973190307617,.004342749714851379,-.9999904632568359,28920238037244417e-21,.9673709273338318,-.25336408615112305,28920238037244417e-21,.9673709273338318,-.25336408615112305,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-9849853813648224e-20,.0041036903858184814,.9999915957450867,-1982133835554123e-20,.967315137386322,.2535773515701294,-1982133835554123e-20,.967315137386322,.2535773515701294,.001379296649247408,.004155764821916819,-.9999904632568359,.001379296649247408,.004155764821916819,-.9999904632568359,.2989526391029358,.9200189113616943,-.25336307287216187,.004105646628886461,.0014420022489503026,-.9999905824661255,.004105646628886461,.0014420022489503026,-.9999905824661255,.9200265407562256,.29895055294036865,-.25333744287490845,.0041483743116259575,-.001177109545096755,-.999990701675415,.0041483743116259575,-.001177109545096755,-.999990701675415,.92001873254776,-.29890236258506775,-.2534225881099701,.7826225161552429,-.5685691237449646,-.2534385919570923,.0034059027675539255,-.002543120877817273,-.9999909400939941,.0034059027675539255,-.002543120877817273,-.9999909400939941,.0025934576988220215,-.0033233165740966797,-.9999910593032837,.0025934576988220215,-.0033233165740966797,-.9999910593032837,.5686105489730835,-.7825710773468018,-.2535049617290497,.00014024082338437438,-.004108965862542391,-.9999915361404419,.00014024082338437438,-.004108965862542391,-.9999915361404419,.00014024082338437438,-.004108965862542391,-.9999915361404419,21778512746095657e-21,-.9673150777816772,-.253577321767807,21778512746095657e-21,-.9673150777816772,-.253577321767807,-.29890191555023193,-.9199681878089905,-.2536064684391022,-.001328025944530964,-.003906830679625273,-.9999914765357971,-.001328025944530964,-.003906830679625273,-.9999914765357971,-.0024206042289733887,-.0033184662461280823,-.9999915361404419,-.0024206042289733887,-.0033184662461280823,-.9999915361404419,-.56856769323349,-.7825732231140137,-.25359416007995605,-.0033223330974578857,-.002392679452896118,-.9999916553497314,-.0033223330974578857,-.002392679452896118,-.9999916553497314,-.7825719118118286,-.5685604810714722,-.25361454486846924,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.004138410557061434,5978979606879875e-20,-.9999914169311523,-.9673154950141907,2910134026024025e-20,-.25357601046562195,-.9673154950141907,2910134026024025e-20,-.25357601046562195,-.003914192318916321,.0014359354972839355,-.9999912977218628,-.003914192318916321,.0014359354972839355,-.9999912977218628,-.9199680089950562,.29895293712615967,-.2535468339920044,-.001218944787979126,.004143953323364258,-.9999906420707703,-.001218944787979126,.004143953323364258,-.9999906420707703,-.2988971769809723,.920020580291748,-.25342193245887756,.002553605241701007,.003544599749147892,-.9999905228614807,.002553605241701007,.003544599749147892,-.9999905228614807,.5686197876930237,.7826223373413086,-.25332552194595337,.0034990310668945312,.0025759339332580566,-.9999905824661255,.0034990310668945312,.0025759339332580566,-.9999905824661255,.7826220393180847,.5686109662055969,-.25334614515304565,.004121424164623022,9648066043155268e-20,.9999914169311523,.004121424164623022,9648066043155268e-20,.9999914169311523,.004121424164623022,9648066043155268e-20,.9999914169311523,.9673154950141907,-2708425745368004e-20,.2535760700702667,.9673154950141907,-2708425745368004e-20,.2535760700702667,.0033468306064605713,-.002586185932159424,.9999910593032837,.0033468306064605713,-.002586185932159424,.9999910593032837,.7825667858123779,-.5686154365539551,.25350672006607056,.002382144331932068,-.003524601459503174,.9999909996986389,.002382144331932068,-.003524601459503174,.9999909996986389,.5685621500015259,-.7826279401779175,.2534373998641968,-.0025890469551086426,-.003517657518386841,.9999905228614807,-.0025890469551086426,-.003517657518386841,.9999905228614807,-.5686206817626953,-.7826217412948608,.253325492143631,-.7826230525970459,-.5686094760894775,.25334617495536804,-.003505319356918335,-.002576306462287903,.9999906420707703,-.003505319356918335,-.002576306462287903,.9999906420707703,-.0041239261627197266,-.001402430236339569,.9999905228614807,-.0041239261627197266,-.001402430236339569,.9999905228614807,-.9200277328491211,-.29894667863845825,.2533373534679413,-.0041457414627075195,.0012131333351135254,.999990701675415,-.0041457414627075195,.0012131333351135254,.999990701675415,-.9200185537338257,.29890307784080505,.2534220814704895,-.0025840699672698975,.003327280282974243,.9999911785125732,-.0025840699672698975,.003327280282974243,.9999911785125732,-.5686099529266357,.7825716137886047,.2535049021244049,.0012101978063583374,.003936886787414551,.9999915361404419,.0012101978063583374,.003936886787414551,.9999915361404419,.2989037334918976,.9199675917625427,.2536064088344574,.0023893117904663086,.003317922353744507,.9999916553497314,.0023893117904663086,.003317922353744507,.9999916553497314,.5685685873031616,.7825725674629211,.2535940706729889,.782572329044342,.5685595870018005,.25361499190330505,.0033287405967712402,.002385169267654419,.9999915361404419,.0033287405967712402,.002385169267654419,.9999915361404419,.003944873809814453,.0012125223875045776,.9999915957450867,.003944873809814453,.0012125223875045776,.9999915957450867,.9199705719947815,.298895001411438,.25360581278800964],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.23704378306865692,.023000359535217285,.2962978482246399,.4792518615722656,.5050051212310791,.2502303123474121,.22790862619876862,.021942079067230225,.2874794006347656,.4803285002708435,.017633967101573944,.6739451289176941,.20161525905132294,.1155695915222168,.21026334166526794,.11554199457168579,.23612302541732788,.3868170976638794,.6741329431533813,.48301517963409424,.22747491300106049,.3868447542190552,.17478206753730774,.5167970061302185,.2012992650270462,.3867114782333374,.2101074755191803,.38673484325408936,.17778971791267395,.4792518615722656,.20069445669651031,.47938668727874756,.2504180371761322,.5048181414604187,.16897115111351013,.4803285002708435,.20982962846755981,.4804449677467346,.17686891555786133,.38681697845458984,.3260548710823059,.5167969465255737,.16822080314159393,.3868447542190552,.1423611342906952,.11557012796401978,.9825537800788879,.32586705684661865,.1510092318058014,.11554241180419922,.17778971791267395,.02300053834915161,.3555530905723572,.4792248010635376,.4951818287372589,.7495819330215454,.16865456104278564,.021942198276519775,.34673523902893066,.480310320854187,.3197054862976074,.29629039764404297,.9477878212928772,.1063617467880249,.32840070128440857,.2962949275970459,.35455501079559326,.2964339256286621,.4484367072582245,.8934502601623535,.34586313366889954,.29642730951309204,.31974896788597107,.20592015981674194,.8936383128166199,.0522121787071228,.32843995094299316,.20592659711837769,.32605481147766113,.9823660254478455,.3545942008495331,.11562323570251465,.34578996896743774,.1155862808227539,.2962978482246399,.023000359535217285,.3192167282104492,.023042798042297363,.7497690320014954,.0054662227630615234,.287162721157074,.021942138671875,.32804927229881287,.022000432014465332,.2504180371761322,.9943457245826721,.25994858145713806,.02313518524169922,.3555530905723572,.023087799549102783,.2687670588493347,.022058546543121338,.3464353084564209,.021996140480041504,.295693039894104,.11567586660385132,.6741330623626709,.017446041107177734,.2868848443031311,.11565232276916504,.2953770160675049,.3868170976638794,.5169848203659058,.17459428310394287,.28672900795936584,.3868447542190552,.2364388257265091,.11567533016204834,.5169847011566162,.32586705684661865,.22763070464134216,.11565178632736206,.2276650071144104,.20608502626419067,.23635976016521454,.20609813928604126,.5517510175704956,.39409929513931274,.23622643947601318,.2964661121368408,.6059006452560425,.44824880361557007,.22753484547138214,.2964508533477783,.1414402574300766,.47938668727874756,.23704378306865692,.4792518615722656,.7497687339782715,.49499499797821045,.15057551860809326,.4804449677467346,.2282252460718155,.4803285002708435,.15085339546203613,.38673484325408936,.14204517006874084,.38671135902404785,.8254057765007019,.48301517963409424,.14212429523468018,.29628849029541016,.893638014793396,.4482489228248596,.15081912279129028,.2963016629219055,.1422577202320099,.20592069625854492,.9477876424789429,.39409929513931274,.15094926953315735,.20593607425689697,.14144045114517212,.02313530445098877,.31920260190963745,.4793957471847534,.9945327043533325,.2502301335334778,.15025892853736877,.02205866575241089,.3283390998840332,.4804449677467346,.31971582770347595,.38671642541885376,.9825538992881775,.17459410429000854,.32852432131767273,.38673120737075806,.31976577639579773,.11558306217193604,.8254058957099915,.017445921897888184,.3284158408641815,.11556941270828247,.29561394453048706,.2060987949371338,.6059007048606873,.05221235752105713,.28691911697387695,.2060856819152832,.29548054933547974,.2964667081832886,.5517511963844299,.1063617467880249,.2867889404296875,.29645150899887085,.005654247011989355,.749582052230835,.20069456100463867,.02313518524169922,.25994864106178284,.47938668727874756,.20951306819915771,.022058427333831787,.26908373832702637,.4804449677467346,.05240018665790558,.605712890625,.20151172578334808,.2059200406074524,.21020328998565674,.2059352993965149,.10654976963996887,.5515632033348083,.2013782411813736,.2962881922721863,.2100730687379837,.29630136489868164,.17697232961654663,.29646652936935425,.39428722858428955,.5515631437301636,.16828079521656036,.2964513301849365,.1684110462665558,.20608550310134888,.17710581421852112,.206098735332489,.44843676686286926,.6057127714157104,.1771848499774933,.11567568778991699,.4832030236721039,.6739450693130493,.168376624584198,.11565232276916504,.3545408844947815,.38678765296936035,.4832029938697815,.8252179622650146,.3458925485610962,.3868238925933838,.35459887981414795,.20606255531311035,.3942871689796448,.9475997686386108,.34590303897857666,.2060578465461731,.17478202283382416,.9823660254478455,.2608692944049835,.11557012796401978,.2695173919200897,.11554241180419922,.10654974728822708,.9475998282432556,.26076579093933105,.20592081546783447,.2694574296474457,.20593613386154175,.2693272829055786,.29630184173583984,.05240019038319588,.8934502601623535,.2606324851512909,.2962886691093445,.0176339503377676,.8252179622650146,.26055341958999634,.3867114782333374,.2693616449832916,.38673484325408936],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[35,38,32,129,54,126,123,91,38,130,57,97,18,10,13,21,77,72,120,32,88,17,72,70,27,20,103,105,60,7,130,94,129,126,45,50,28,24,117,13,66,108,117,80,112,29,88,85,111,80,77,41,46,91,108,61,105,135,4,57,76,87,44,38,30,32,54,42,45,72,67,70,77,78,75,94,95,92,104,108,105,113,117,112,125,129,126,134,130,132,113,111,109,15,13,12,14,21,17,49,41,40,61,58,60,61,64,62,77,73,72,88,82,85,135,100,102,132,129,128,60,0,3,66,8,64,10,68,8,80,22,78,24,81,22,32,86,88,38,89,36,91,43,89,94,52,54,57,95,97,57,1,55,6,105,7,19,111,21,26,120,29,12,108,107,48,126,50,25,117,115,118,35,120,40,123,121,99,7,101,121,35,33,7,3,101,35,123,38,129,94,54,123,41,91,130,135,57,18,71,10,21,111,77,120,35,32,17,21,72,103,5,131,5,98,131,98,133,131,131,127,124,124,47,131,47,39,131,39,122,27,122,34,27,34,119,27,27,116,114,114,110,20,20,16,103,16,11,103,11,106,103,27,114,20,103,131,39,39,27,103,105,61,60,130,97,94,126,54,45,28,84,24,13,10,66,117,24,80,29,120,88,111,112,80,41,51,46,108,66,61,135,102,4,56,2,65,2,59,65,59,63,65,65,9,69,69,74,76,76,79,87,79,23,87,23,83,87,87,31,37,37,90,44,44,53,93,93,96,44,96,56,44,65,69,76,87,37,44,56,65,44,65,76,44,38,36,30,54,52,42,72,73,67,77,80,78,94,97,95,104,107,108,113,115,117,125,128,129,134,135,130,113,112,111,15,18,13,14,19,21,49,51,41,61,62,58,61,66,64,77,75,73,88,86,82,135,134,100,132,130,129,60,58,0,66,10,8,10,71,68,80,24,22,24,84,81,32,30,86,38,91,89,91,46,43,94,92,52,57,55,95,57,4,1,6,104,105,19,109,111,26,118,120,12,13,108,48,125,126,25,28,117,118,33,35,40,41,123,99,6,7,121,123,35,7,60,3]},boundingSphere:{center:[0,0,0],radius:128.54241934554352}},faceValues:[0,0,0,0,0,0,0,0,2,1],rotationCombinations:{"1,2":[180,0,0]}},d4:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"C5380F7D-1CC8-4744-8B30-2399F5490F2A",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-67.64075469970703,-67.64099884033203,65.7880630493164,-67.64075469970703,-67.64099884033203,65.7880630493164,-67.64075469970703,-67.64099884033203,65.7880630493164,67.64124298095703,65.7878189086914,67.6407470703125,67.64124298095703,65.7878189086914,67.6407470703125,67.64124298095703,65.7878189086914,67.6407470703125,65.7880630493164,67.64099884033203,67.64075469970703,65.7880630493164,67.64099884033203,67.64075469970703,-67.6412353515625,67.64099884033203,-65.78756713867188,-67.6412353515625,67.64099884033203,-65.78756713867188,-67.6407470703125,-65.7878189086914,67.64124298095703,-67.6407470703125,-65.7878189086914,67.64124298095703,67.6412353515625,67.64099884033203,65.78756713867188,67.6412353515625,67.64099884033203,65.78756713867188,67.6412353515625,67.64099884033203,65.78756713867188,67.64075469970703,-67.64099884033203,-65.7880630493164,67.64075469970703,-67.64099884033203,-65.7880630493164,67.6407470703125,-65.7878189086914,-67.64124298095703,67.6407470703125,-65.7878189086914,-67.64124298095703,65.78756713867188,-67.64099884033203,-67.6412353515625,65.78756713867188,-67.64099884033203,-67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.78756713867188,-67.64099884033203,67.6412353515625,-65.7880630493164,67.64099884033203,-67.64075469970703,-65.7880630493164,67.64099884033203,-67.64075469970703,-65.7880630493164,67.64099884033203,-67.64075469970703,-67.64124298095703,65.7878189086914,-67.6407470703125,-67.64124298095703,65.7878189086914,-67.6407470703125,-67.64124298095703,65.7878189086914,-67.6407470703125],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5875354409217834,-.5875733494758606,-.5563808679580688,-.5875354409217834,-.5875733494758606,-.5563808679580688,-.5875354409217834,-.5875733494758606,-.5563808679580688,.58754962682724,-.5564354062080383,.5875076055526733,.58754962682724,-.5564354062080383,.5875076055526733,.58754962682724,-.5564354062080383,.5875076055526733,-.5564345121383667,.5875091552734375,.5875489711761475,-.5564345121383667,.5875091552734375,.5875489711761475,-.5875074863433838,.5875474810600281,.5564377903938293,-.5875074863433838,.5875474810600281,.5564377903938293,-.5875458717346191,.5564350485801697,.5875116586685181,-.5875458717346191,.5564350485801697,.5875116586685181,.5875073075294495,.5875475406646729,-.5564377903938293,.5875073075294495,.5875475406646729,-.5564377903938293,.5875073075294495,.5875475406646729,-.5564377903938293,.5875356793403625,-.5875731706619263,.5563808679580688,.5875356793403625,-.5875731706619263,.5563808679580688,.5875458717346191,.5564350485801697,-.5875116586685181,.5875458717346191,.5564350485801697,-.5875116586685181,-.5564398169517517,-.5875092148780823,-.5875437259674072,-.5564398169517517,-.5875092148780823,-.5875437259674072,.5564400553703308,-.5875090956687927,.5875436663627625,.5564400553703308,-.5875090956687927,.5875436663627625,.5564400553703308,-.5875090956687927,.5875436663627625,.5564344525337219,.587509036064148,-.587549090385437,.5564344525337219,.587509036064148,-.587549090385437,.5564344525337219,.587509036064148,-.587549090385437,-.5875496864318848,-.5564355850219727,-.5875071883201599,-.5875496864318848,-.5564355850219727,-.5875071883201599,-.5875496864318848,-.5564355850219727,-.5875071883201599],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.20333926379680634,.01598501205444336,.20718662440776825,.23812401294708252,.5022410154342651,.21281301975250244,.20517542958259583,.22700607776641846,.21218715608119965,.009441137313842773,.6251919865608215,.25002896785736084,.12502600252628326,.24997997283935547,.2080860435962677,.01124197244644165,.0021929999347776175,.4627319574356079,.015251883305609226,.12210333347320557,.2076776623725891,.23367196321487427,.24785800278186798,.4627319574356079,.20334681868553162,.22807049751281738,.20728397369384766,.00649791955947876,.49776899814605713,.46269500255584717,.14456242322921753,.12202131748199463,.7480239868164062,.46278202533721924,.14273378252983093,.12308567762374878,.3749360144138336,.24994301795959473,.14272625744342804,.12096989154815674,.625074028968811,6097555160522461e-20,.20517542958259583,.0170363187789917,.21218715608119965,.23534929752349854,.5023589730262756,.46278202533721924,.011641831137239933,.11945211887359619,.021507836878299713,.12308526039123535,.2521030008792877,.46269500255584717,.011544500477612019,.12516993284225464,.021500281989574432,.12096947431564331,.7479060292243958,.21281301975250244],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[6,8,11,26,14,18,29,20,2,5,23,16,17,3,15,25,19,28,10,27,1,0,15,21,9,13,24,9,24,27,7,4,13,10,1,22,17,15,19,7,22,4,17,12,3,25,17,19,10,9,27,0,19,15,9,7,13,7,10,22]},boundingSphere:{center:[0,0,0],radius:117.1579285756433}},faceValues:[2,4,3,1],rotationCombinations:{"1,2":[90,0,90],"1,3":[120,90,150],"1,4":[-180,0,-180],"2,3":[90,0,90],"2,4":[-90,0,-90],"3,4":[-90,0,90]}},d6:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"E18C9F5C-7D15-4FF3-AC5E-A4A56A405499",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081398010253906,-49.99797058105469,49.997779846191406,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081031799316406,49.99797058105469,-49.99816131591797,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,52.081398010253906,49.99797058105469,49.997779846191406,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,-52.081031799316406,49.99797058105469,49.99816131591797,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,49.99778747558594,52.081214904785156,-49.99814987182617,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99814987182617,-52.081214904785156,-49.99778747558594,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,-49.99816131591797,-49.99797058105469,-52.081031799316406,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,49.99778747558594,-52.081214904785156,-49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,-49.99778747558594,-52.081214904785156,49.99814987182617,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,52.081031799316406,-49.99797058105469,-49.99816131591797,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,49.997779846191406,-49.99797058105469,-52.081398010253906,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-52.081398010253906,-49.99797058105469,-49.997779846191406,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,-49.99814987182617,52.081214904785156,-49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,49.99814987182617,52.081214904785156,49.99778747558594,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.997779846191406,-49.99797058105469,52.081398010253906,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,-49.99778747558594,52.081214904785156,49.99814987182617,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99816131591797,49.99797058105469,52.081031799316406,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99814987182617,-52.081214904785156,49.99778747558594,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,49.99816131591797,-49.99797058105469,52.081031799316406,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,-52.081031799316406,-49.99797058105469,49.99816131591797,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,49.997779846191406,49.99797058105469,-52.081398010253906,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-49.99816131591797,49.99797058105469,-52.081031799316406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-52.081398010253906,49.99797058105469,-49.997779846191406,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906,-49.997779846191406,49.99797058105469,52.081398010253906],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995923042297363,-.020230919122695923,.020147494971752167,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995908737182617,.02024438977241516,-.020207354798913002,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,.9995913505554199,.020214110612869263,.020209431648254395,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,-.9995912313461304,.020234376192092896,.020197225734591484,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,.02019399404525757,.9995913505554199,-.02023378014564514,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02023431658744812,-.9995909333229065,-.020213313400745392,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,-.02021673321723938,-.02017366886138916,-.9995919466018677,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,.020203232765197754,-.9995912909507751,-.020224466919898987,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,-.020203210413455963,-.9995913505554199,.02022451162338257,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.9995921850204468,-.020173730328679085,-.020216643810272217,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,.020147576928138733,-.020230591297149658,-.9995923042297363,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.9995916485786438,-.020208656787872314,-.020204007625579834,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,-.02024361491203308,.9995908737182617,-.02020406536757946,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,.02026575803756714,.9995908141136169,.020181983709335327,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.020204126834869385,-.020208358764648438,.9995917081832886,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,-.02021375298500061,.9995914101600647,.020213931798934937,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.020197970792651176,.020234346389770508,.9995912313461304,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.02023431658744812,-.9995909333229065,.020213313400745392,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,.020256830379366875,-.020169764757156372,.9995912909507751,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,-.9995914101600647,-.02016991376876831,.020256860181689262,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,.02021026611328125,.020213961601257324,-.9995913505554199,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.02020804025232792,.020244628190994263,-.9995906949043274,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.9995908737182617,.020204482600092888,-.020239561796188354,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513,-.020240217447280884,.020204216241836548,.9995909929275513],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.002862999914214015,.7471370100975037,.07257817685604095,.00783926248550415,.20479217171669006,.24324274063110352,.23563209176063538,.18311190605163574,.16701677441596985,.007843196392059326,.21674437820911407,.007843255996704102,.23563209176063538,.23977500200271606,.24713699519634247,.5028629899024963,.002862999914214015,.5028629899024963,.16701683402061462,.24324274063110352,.20479217171669006,.007843196392059326,.2416384220123291,.12991642951965332,.12230584025382996,.24324274063110352,.14119352400302887,.007843255996704102,.24163848161697388,.2243550419807434,.2481130063533783,.4981130361557007,.11035363376140594,.007843255996704102,.16008129715919495,.007843196392059326,.2416384220123291,.23630714416503906,.4975059926509857,.7470999956130981,.008979067206382751,.00783926248550415,.02786727249622345,.24324274063110352,.2416384220123291,.20546722412109375,.7475240230560303,.002879023551940918,.034802429378032684,.24324274063110352,.08453041315078735,.24324274063110352,.23563209176063538,.20199954509735107,.4974119961261749,.49670398235321045,.027866892516613007,.00783926248550415,.06564302742481232,.24324274063110352,.2416384220123291,.1607564091682434,.5032510161399841,.002879023551940918,.008979566395282745,.24324274063110352,.046754732728004456,.00783926248550415,.2416384220123291,.11102879047393799,.7475240230560303,.24715197086334229,.07257817685604095,.24324274063110352,.21674437820911407,.24324274063110352,.2416384220123291,.1676918864250183,.24713699519634247,.7471370100975037,.03480251133441925,.00783926248550415,.22367990016937256,.24324274063110352,.23563209176063538,.16422414779663086,.2531389892101288,.49670398235321045,.0038399999029934406,.25383996963500977,.015914686024188995,.00783926248550415,.09146587550640106,.24324274063110352,.2416384220123291,.19853174686431885,.11035363376140594,.24324274063110352,.12924134731292725,.007843255996704102,.2416384220123291,.1488041877746582,.4975059926509857,.5028259754180908,.16008129715919495,.24324274063110352,.17896901071071625,.007843196392059326,.2416384220123291,.12298095226287842,.2532320022583008,.7470999956130981,.0536903440952301,.00783926248550415,.14812909066677094,.24324274063110352,.2416384220123291,.10409331321716309,.5033630132675171,.252979040145874,.12924134731292725,.24324274063110352,.17896901071071625,.24324274063110352,.23563209176063538,.22088712453842163,.2532320022583008,.5028259754180908,.18590447306632996,.007843196392059326,.19785669445991516,.007843196392059326,.23563209176063538,.12644875049591064,.7476369738578796,.4972519874572754,.046755194664001465,.24324274063110352,.06564256548881531,.00783926248550415,.2416384220123291,.17964410781860352,.5032510161399841,.24715197086334229,.0536903440952301,.24324274063110352,.19785669445991516,.24324274063110352,.2416384220123291,.18657952547073364,.5033630132675171,.4972519874572754,.0038399999029934406,.4981130361557007,.015914715826511383,.24324274063110352,.14119356870651245,.24324274063110352,.23563209176063538,.10756111145019531,.10341811925172806,.007843255996704102,.22367990016937256,.007843255996704102,.2416384220123291,.24324274063110352,.2531389892101288,.2524310350418091,.08453038334846497,.007843196392059326,.10341812670230865,.24324274063110352,.2416384220123291,.14186859130859375,.4974119961261749,.2524310350418091,.09146586060523987,.007843196392059326,.12230582535266876,.007843255996704102,.23563209176063538,.14533644914627075,.2481130063533783,.25383996963500977,.14812903106212616,.007843255996704102,.18590447306632996,.24324274063110352,.24163848161697388,.21741944551467896,.7476369738578796,.252979040145874],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[83,27,87,8,39,7,44,15,91,59,67,95,63,19,51,13,57,92,1,29,36,56,68,72,40,21,24,80,48,16,45,32,77,41,5,37,89,60,49,84,46,88,2,65,73,93,53,61,9,17,52,70,3,74,30,42,38,22,47,26,34,58,79,11,54,66,82,18,6,86,90,50,14,94,62,31,35,23,83,43,27,8,0,39,44,76,15,59,75,67,63,55,19,13,78,57,1,69,29,56,33,68,40,28,21,80,85,48,45,20,32,41,81,5,89,12,60,84,25,46,2,10,65,93,64,53,9,4,17,31,71,35]},boundingSphere:{center:[0,0,0],radius:90.20752176710862}},faceValues:[3,5,1,6,2,4],rotationCombinations:{"1,2":[0,0,90],"1,3":[-90,0,0],"1,4":[90,0,0],"1,5":[0,0,-90],"1,6":[180,0,0],"2,3":[0,90,0],"2,4":[0,-90,0],"2,5":[0,0,180],"2,6":[0,0,90],"3,4":[-180,0,-180],"3,5":[0,90,0],"3,6":[-90,0,0],"4,5":[180,-90,180],"4,6":[90,0,0],"5,6":[0,0,-90]}},d8:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"F0A476BC-C144-4BC6-A327-5E00064C485A",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-1.1684173345565796,1.168058156967163,-97.7831802368164,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-97.7831802368164,1.168058156967163,1.1684173345565796,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-1.167698860168457,-1.168058156967163,97.7831802368164,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-97.7831802368164,-1.168058156967163,1.1684173345565796,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-1.1680537462234497,97.7831802368164,1.168062448501587,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-97.7831802368164,1.168058156967163,-1.167698860168457,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,-1.168062448501587,97.7831802368164,-1.1680537462234497,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,97.7831802368164,-1.168058156967163,-1.1684173345565796,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,-1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.167698860168457,1.168058156967163,-97.7831802368164,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,1.1680537462234497,97.7831802368164,-1.168062448501587,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,97.7831802368164,1.168058156967163,1.167698860168457,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-1.168062448501587,-97.7831802368164,-1.1680537462234497,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,-97.7831802368164,-1.168058156967163,-1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,97.7831802368164,-1.168058156967163,1.167698860168457,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,-1.167698860168457,1.168058156967163,97.7831802368164,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.168062448501587,-97.7831802368164,1.1680537462234497,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,1.1684173345565796,-1.168058156967163,97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,-1.1684173345565796,-1.168058156967163,-97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,1.1684173345565796,1.168058156967163,97.7831802368164,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,97.7831802368164,1.168058156967163,-1.1684173345565796,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,1.168062448501587,97.7831802368164,1.1680537462234497,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,-1.1680537462234497,-97.7831802368164,1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587,1.1680537462234497,-97.7831802368164,-1.168062448501587],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5682533383369446,.5682891607284546,-.5950928330421448,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5951133966445923,.568278431892395,.5682425498962402,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5682530999183655,-.5682904720306396,.5950918197631836,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5950893759727478,-.5682545304298401,.5682916045188904,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5682390332221985,.5951166152954102,.5682786107063293,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5951080918312073,.5682451725006104,-.5682812929153442,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,-.5682910680770874,.5950912833213806,-.5682533383369446,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.595115065574646,-.5682411789894104,-.5682781934738159,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682530999183655,-.5682904720306396,-.5950918197631836,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682830810546875,.5682469010353088,-.5951048731803894,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5682392716407776,.5951164960861206,-.5682784914970398,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,.5951049327850342,.5682469010353088,.5682830214500427,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.5682423114776611,-.5951160788536072,-.5682759881019592,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,-.595117449760437,-.5682770609855652,-.568239688873291,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,.5950918197631836,-.5682904720306396,.5682530999183655,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,-.5682830810546875,.5682469010353088,.5951048731803894,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682426691055298,-.5951159000396729,.5682759284973145,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,.5682781934738159,-.5682411193847656,.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,-.5682781934738159,-.5682411193847656,-.595115065574646,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5682533383369446,.5682891607284546,.5950928330421448,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5950928330421448,.5682891607284546,-.5682533383369446,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,.5682913064956665,.595090925693512,.5682531595230103,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,-.5682886838912964,-.5950911641120911,.5682557225227356,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565,.5682889819145203,-.5950908660888672,-.5682554841041565],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.07201391458511353,.011956751346588135,.1601339429616928,.228448748588562,.2343699038028717,.15436840057373047,.9927999973297119,.452796995639801,.14628882706165314,.22844743728637695,.213005930185318,.228448748588562,.23062995076179504,.19327861070632935,.3759610056877136,.5007950067520142,.036765892058610916,.011956632137298584,.2167847901582718,.011955499649047852,.2343699038028717,.13678330183029175,.9929670095443726,.2016180157661438,.1286647915840149,.011955201625823975,.2167847901582718,.22844743728637695,.23062995076179504,.1895385980606079,.8765519857406616,-1895427703857422e-20,.14628879725933075,.011955201625823975,.19916081428527832,.22844743728637695,.23062995076179504,.20712369680404663,.49237701296806335,.7024319767951965,.14250995218753815,.228448748588562,.1601339429616928,.011956632137298584,.2343699038028717,.19327861070632935,.876384973526001,.25116002559661865,.07201394438743591,.228448748588562,.14250992238521576,.011956632137298584,.2343699038028717,.20712369680404663,.7599689960479736,.452796995639801,.022920722141861916,.011955201625823975,.18153679370880127,.22844743728637695,.23062995076179504,.22470879554748535,.6253160238265991,.0010759830474853516,.08963792026042938,.011956632137298584,.18153676390647888,.011955499649047852,.23062995076179504,.15810835361480713,.7397840023040771,.19933903217315674,.00919399969279766,.7025139927864075,.07579275965690613,.011955320835113525,.17775794863700867,.011956751346588135,.23062995076179504,.15436840057373047,.07579278945922852,.22844737768173218,.10726193338632584,.228448748588562,.2343699038028717,.21086370944976807,.2420250028371811,.7025139927864075,.05816878750920296,.22844743728637695,.11104078590869904,.011955320835113525,.2343699038028717,.228448748588562,.6256870031356812,.2503969669342041,.09341679513454437,.22844743728637695,.1248859316110611,.228448748588562,.2343699038028717,.17195343971252441,.49275800585746765,.4534569978713989,.12488594651222229,.011956632137298584,.1639128178358078,.011955201625823975,.2343699038028717,.1895385980606079,.37544700503349304,.25026899576187134,.019141869619488716,.011956572532653809,.05438993498682976,.228448748588562,.12524299323558807,.2504919767379761,.2343699038028717,.22470879554748535,.19916081428527832,.011955499649047852,.2130059003829956,.011956751346588135,.2343699038028717,.1405232548713684,.2595460116863251,.7024319767951965,.019141899421811104,.228448748588562,.0405447743833065,.22844743728637695,.23062995076179504,.17569351196289062,.2416590005159378,.4521290063858032,.008828000165522099,.4521290063858032,.040544744580984116,.011955201625823975,.05438990518450737,.011956632137298584,.23062992095947266,.13678330183029175,.09341679513454437,.011955201625823975,.1639127880334854,.22844743728637695,.2343699038028717,.15810835361480713,.2581369876861572,.4534569978713989,.05816878750920296,.01195526123046875,.19538196921348572,.011956751346588135,.23062992095947266,.14052319526672363,.7421020269393921,.45203500986099243,.10726191848516464,.011956751346588135,.12560999393463135,.5008770227432251,.17775794863700867,.228448748588562,.23062995076179504,.228448748588562,.11104080080986023,.22844737768173218,.19538193941116333,.228448748588562,.23062995076179504,.21086370944976807,.5092710256576538,.45203500986099243,.036765921860933304,.228448748588562,.1286647915840149,.22844737768173218,.2343699038028717,.17569351196289062,.7601360082626343,.2016180157661438,.022920751944184303,.22844743728637695,.08963793516159058,.228448748588562,.23062995076179504,.17195343971252441,.5108489990234375,.19933903217315674],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[3,23,27,36,43,81,35,31,95,75,51,55,79,47,87,63,19,7,11,15,91,68,67,58,60,85,17,30,46,59,92,56,64,6,54,14,37,24,40,45,41,84,32,48,72,16,20,4,42,18,86,50,66,90,52,89,12,61,13,9,74,39,34,71,62,10,38,29,33,21,73,53,8,65,69,44,70,57,60,77,85,30,83,46,92,28,56,6,22,54,37,0,24,45,80,41,32,93,48,16,25,20,42,26,18,50,94,66,52,49,89,61,5,13,74,2,39,71,78,62,38,82,29,21,1,73,8,88,65,44,76,70]},boundingSphere:{center:[0,0,0],radius:169.36543629583093}},faceValues:[5,3,1,7,2,8,6,4],rotationCombinations:{"1,2":[180,0,180],"1,3":[90,0,0],"1,4":[0,0,90],"1,5":[-180,0,0],"1,6":[0,0,180],"1,7":[-90,0,0],"1,8":[90,0,180],"2,3":[90,0,180],"2,4":[-90,0,0],"2,5":[0,0,180],"2,6":[-180,0,0],"2,7":[-90,0,-180],"2,8":[90,0,0],"3,4":[-180,0,180],"3,5":[90,0,0],"3,6":[-90,0,-180],"3,7":[-180,0,0],"3,8":[0,0,180],"4,5":[90,0,180],"4,6":[-90,0,0],"4,7":[0,0,-180],"4,8":[180,0,0],"5,6":[-180,0,-180],"5,7":[90,0,0],"5,8":[-90,0,180],"6,7":[90,0,-180],"6,8":[-90,0,0],"7,8":[-180,0,-180]}},d10:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"1B9B60ED-6BEC-48CC-8EB9-EEFFC2DD3ED8",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,-2.5946993827819824,1.8790435791015625,86.0141830444336,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,71.31939697265625,-49.49197769165039,10.200661659240723,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,87.39810180664062,-.005702871363610029,-7.479601860046387,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,3.2070045471191406,-.005997277796268463,86.01419830322266,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,-28.610445022583008,-81.96196746826172,10.200666427612305,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,69.1033706665039,-52.5421257019043,10.200669288635254,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,.9909778237342834,-3.0561423301696777,86.01419830322266,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,70.70691680908203,-51.37708282470703,7.479945659637451,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-25.02603530883789,83.11405944824219,10.200100898742676,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-69.10337829589844,52.52949142456055,-10.200671195983887,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-86.7856216430664,1.8781644105911255,10.200315475463867,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-28.611663818359375,81.948974609375,10.200101852416992,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-27.008115768432617,83.1140365600586,7.479378700256348,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,-70.70691680908203,51.364444732666016,-7.479947566986084,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,71.31866455078125,49.48046112060547,10.200318336486816,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,86.78557586669922,1.8793641328811646,-10.20033073425293,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,69.10259246826172,52.53056716918945,10.20030689239502,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,70.7061538696289,51.36553192138672,7.479590892791748,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,2.5946712493896484,1.8784899711608887,-86.01419830322266,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,28.610443115234375,81.9493408203125,-10.200669288635254,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,86.78562927246094,-1.8908008337020874,-10.2003173828125,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,.9909327626228333,3.0441155433654785,86.0141830444336,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-27.00689125061035,-83.12700653076172,7.479950428009033,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,-69.10259246826172,-52.54320526123047,-10.200308799743652,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,2.594700574874878,-1.8916770219802856,-86.0141830444336,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,25.026033401489258,-83.1266860961914,-10.200102806091309,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-86.78559112548828,-1.892000436782837,10.200329780578613,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-70.7061538696289,-51.37816619873047,-7.479592323303223,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-25.024797439575195,-83.12699127197266,10.200674057006836,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-2.5946712493896484,-1.8911232948303223,86.01419830322266,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,-71.31940460205078,49.47935104370117,-10.200664520263672,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,28.611663818359375,-81.96160888671875,-10.200103759765625,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,27.00688934326172,83.1143798828125,-7.479951858520508,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,25.024797439575195,83.11434936523438,-10.200675010681152,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,27.008115768432617,-83.12667083740234,-7.4793806076049805,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-87.39810180664062,-.006933570373803377,7.479599952697754,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-71.31866455078125,-49.493099212646484,-10.20032024383545,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-.9909327626228333,-3.056749105453491,-86.0141830444336,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-3.2070045471191406,-.006636159960180521,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266,-.9909778237342834,3.0435099601745605,-86.01419830322266],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,-.5870956778526306,.42651230096817017,.6880449652671814,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.745985746383667,-.033444374799728394,.6651214957237244,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7662718892097473,3863871097564697e-20,.6425164937973022,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,.7256649732589722,32261013984680176e-21,.6880481839179993,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,-.5838431119918823,-.4655483365058899,.6651255488395691,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.2623160779476166,-.6991221904754639,.6651454567909241,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.22423836588859558,-.6901593208312988,.6880385875701904,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.6199150085449219,-.4504251182079315,-.6425127983093262,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,.19871656596660614,.7197921276092529,.6651397347450256,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.26231205463409424,.6991309523582458,-.665137767791748,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.6231518387794495,.41137412190437317,.6651715636253357,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.583817720413208,.46555060148239136,.6651462912559509,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.23676739633083344,.7287734746932983,-.6425187587738037,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,-.6199446320533752,.45038023591041565,.6425155997276306,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.7459679841995239,.03343930095434189,.6651415824890137,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.623174250125885,.4114120602607727,-.6651270389556885,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.26233187317848206,.6991434097290039,.6651169061660767,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.6199406385421753,.45038270950317383,-.6425178050994873,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.587073564529419,.4265226125717163,-.6880576610565186,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.5838503241539001,.4655469059944153,-.6651202440261841,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.6231569647789001,-.4114269018173218,-.665134072303772,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,.22424747049808502,.6901424527168274,.6880526542663574,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2368125319480896,-.7287622094154358,-.6425150632858276,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,-.2623360753059387,-.6991369128227234,-.6651220917701721,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,.5870862603187561,-.42650753259658813,-.6880559921264648,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.19872358441352844,-.7197949886322021,-.6651346683502197,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.623177170753479,-.4114185571670532,.6651203036308289,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,-.6199068427085876,-.45042937994003296,.6425175666809082,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,.19873395562171936,-.7197892069816589,.6651378273963928,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.5870490074157715,-.42655661702156067,.6880573630332947,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,-.7459824085235596,.033452022820711136,-.665124773979187,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.5838494300842285,-.4655435383319855,-.665123462677002,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,.2367572784423828,.7287806272506714,.6425143480300903,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,-.1987278163433075,.7197844982147217,-.6651448011398315,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,.23682300746440887,-.7287558913230896,.6425182819366455,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7662706971168518,20429491996765137e-21,-.6425180435180664,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.7459728717803955,-.03343328833580017,-.6651365756988525,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.22426503896713257,-.6901455521583557,-.6880438327789307,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.7256579995155334,-3316998481750488e-20,-.6880554556846619,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531,-.22427412867546082,.6901446580886841,-.6880418658256531],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.1126541942358017,.23340463638305664,.15771642327308655,.010170280933380127,.1696747988462448,.09594517946243286,.37625399231910706,.5020440220832825,.09763339906930923,.23340469598770142,.17146287858486176,.012006521224975586,.24126237630844116,.007275700569152832,.7849239706993103,.19342201948165894,.18520936369895935,.026231110095977783,.19948936998844147,.1231493353843689,.24126237630844116,.11555743217468262,.8759239912033081,.2386530041694641,.05257079377770424,.23340463638305664,.09763336926698685,.010167598724365234,.1696747988462448,.08392536640167236,.8759239912033081,.0006530284881591797,.015100483782589436,.23340469598770142,.17080335319042206,.06890475749969482,.21341374516487122,.23143154382705688,.4681450128555298,.19335603713989258,.09020465612411499,.23340463638305664,.16530834138393402,.016166627407073975,.22733810544013977,.11358428001403809,.9650390148162842,.44349002838134766,.022529248148202896,.010164380073547363,.09020490944385529,.010167598724365234,.176739901304245,.08622092008590698,.8740389943122864,.2507209777832031,.17146287858486176,.018639087677001953,.22100581228733063,.11555743217468262,.23493003845214844,.005302548408508301,.6253309845924377,.739175021648407,.15028777718544006,.23340463638305664,.18520939350128174,.018639087677001953,.2412623167037964,.23143154382705688,.46857601404190063,.4435969591140747,.06016269698739052,.010176539421081543,.179232656955719,.2314314842224121,.18520936369895935,.05468016862869263,.5344629883766174,.1933860182762146,.11265438795089722,.010173439979553223,.16530834138393402,.12512201070785522,.18389028310775757,.06890475749969482,.46725401282310486,.6948130130767822,.15771642327308655,.23340457677841187,.1790548413991928,.01447904109954834,.1855650693178177,.12512195110321045,.28525400161743164,.6948130130767822,.17923292517662048,.12314879894256592,.18520939350128174,.012006521224975586,.2349299192428589,.23340469598770142,.6254630088806152,.23861700296401978,.1653086096048355,.23340469598770142,.18520936369895935,.06131279468536377,.1855650693178177,.23340469598770142,.37625399231910706,.7400439977645874,.05257079377770424,.01016455888748169,.17146287858486176,.032863736152648926,.19948936998844147,.23143154382705688,.9669240117073059,.19342201948165894,.14269573986530304,.010170340538024902,.18520936369895935,.032863736152648926,.19315698742866516,.12512242794036865,.21655499935150146,.6933860182762146,.04514260217547417,.01016455888748169,.16530832648277283,.02870357036590576,.21341368556022644,.007275700569152832,.2865760028362274,.4435969591140747,.12555499374866486,.7386170029640198,.17146287858486176,.026231110095977783,.1931571662425995,.23340469598770142,.2070813775062561,.005302548408508301,.12555499374866486,.5006170272827148,.12767508625984192,.010170459747314453,.14269573986530304,.23340463638305664,.16530832648277283,.109546959400177,.03455499932169914,.6933860182762146,.12767508625984192,.23340463638305664,.17146290838718414,.040455639362335205,.2070814073085785,.11358422040939331,.1352669894695282,.010170340538024902,.17905481159687042,.028703629970550537,.23493003845214844,.11358428001403809,.5343310236930847,.693943977355957,.04514192417263985,.23340457677841187,.1502876579761505,.010170280933380127,.16530834138393402,.089935302734375,.37757599353790283,.2508280277252197,.12430000305175781,.48809099197387695,.16530832648277283,.07261902093887329,.19948936998844147,.11555695533752441,.20708149671554565,.23340469598770142,.0301218219101429,.23340463638305664,.17146289348602295,.06131279468536377,.2070813775062561,.1251225471496582,.2153010070323944,.4428600072860718,.08261273801326752,.23340463638305664,.13526709377765656,.23340463638305664,.16967478394508362,.11555695533752441,.6253309845924377,.5011749863624573,.03330099955201149,.4428600072860718,.07518399506807327,.010167300701141357,.17905481159687042,.042928099632263184,.19948936998844147,.007275700569152832,.10522530972957611,.010173439979553223,.18389026820659637,.07633346319198608,.22100578248500824,.23143154382705688,.28614500164985657,.19335603713989258,.17146289348602295,.05468016862869263,.21341368556022644,.12314939498901367,.2210056483745575,.1231493353843689,.377144992351532,.23858702182769775,.02252865955233574,.23340469598770142,.17080335319042206,.07633340358734131,.19315703213214874,.11358380317687988,.7830389738082886,.44349002838134766,.015100372023880482,.010164380073547363,.10522563755512238,.23340463638305664,.1767398715019226,.09364962577819824,.377144992351532,.0005869865417480469,.0675920695066452,.010176539421081543,.17164073884487152,.23143154382705688,.17905481159687042,.05884033441543579,.7172229886054993,.4428600072860718,.08261273801326752,.010167300701141357,.18520936369895935,.04708826541900635,.2210056483745575,.007276654243469238,.7163310050964355,.693943977355957,.17146290838718414,.04708826541900635,.21341368556022644,.11555737257003784,.2412623167037964,.12314939498901367,.37757599353790283,.48882800340652466,.12024644762277603,.23340463638305664,.16530834138393402,.044615745544433594,.23493006825447083,.1251225471496582,.716463029384613,.1933860182762146,.18520936369895935,.040455639362335205,.19315698742866516,.005302488803863525,.22733810544013977,.005303502082824707,.8740389943122864,.48872101306915283,.17164073884487152,.1231488585472107,.17839525640010834,.07261908054351807,.2273380160331726,.23340463638305664,.6262230277061462,.48809099197387695,.037550006061792374,.23340463638305664,.16530834138393402,.057152748107910156,.2273380160331726,.12512242794036865,.5352230072021484,.4428600072860718,.030121158808469772,.010164439678192139,.07518427819013596,.23340463638305664,.12430000305175781,.25009095668792725,.176739901304245,.11326134204864502,.037550006061792374,.010164439678192139,.0675920695066452,.23340457677841187,.176739901304245,.10583275556564331,.6262230277061462,.25009095668792725,.06016361340880394,.23340463638305664,.12024631351232529,.010170459747314453,.16967478394508362,.10353708267211914,.6254630088806152,.0006170272827148438],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[23,115,139,123,147,143,19,107,111,35,67,131,59,7,11,95,100,88,63,76,68,135,39,51,127,83,31,4,25,20,82,6,30,97,60,80,62,58,9,22,126,29,94,18,109,37,46,48,0,104,117,44,85,32,66,79,129,124,149,96,114,103,137,156,120,36,146,106,142,24,16,112,34,134,50,152,92,144,77,157,132,41,121,140,102,125,136,5,21,28,61,8,81,69,65,57,78,133,128,45,33,49,53,38,122,42,141,105,93,108,145,89,113,17,98,151,154,43,47,55,12,64,84,86,118,26,23,27,115,123,155,147,19,119,107,35,87,67,59,15,7,95,150,100,63,72,76,135,159,39,127,99,83,4,13,25,82,10,6,97,74,60,62,70,58,22,138,126,94,91,18,37,54,46,0,40,104,44,1,85,66,71,79,124,101,149,114,90,103,156,153,120,146,110,106,24,116,16,34,130,134,152,148,92,77,73,157,41,52,121,158,75,154,75,98,154,43,3,47,12,56,64,26,14,86,86,2,118]},boundingSphere:{center:[0,-.006313323974609375,0],radius:148.14155442794186}},faceValues:[1,2,5,10,7,4,3,8,9,6],rotationCombinations:{"1,2":[180,0,36],"1,3":[0,0,-144],"1,4":[-180,0,-108],"1,5":[0,0,144],"1,6":[180,0,-36],"1,7":[0,0,-72],"1,8":[180,0,108],"1,9":[0,0,72],"1,10":[-180,0,180],"2,3":[180,0,-108],"2,4":[0,0,-144],"2,5":[-180,0,-180],"2,6":[0,0,-72],"2,7":[180,0,-36],"2,8":[0,0,72],"2,9":[-180,0,108],"2,10":[0,0,144],"3,4":[-180,0,108],"3,5":[0,0,-72],"3,6":[-180,0,180],"3,7":[0,0,72],"3,8":[180,0,-36],"3,9":[0,0,-144],"3,10":[180,0,36],"4,5":[180,0,36],"4,6":[0,0,72],"4,7":[-180,0,-180],"4,8":[0,0,-144],"4,9":[180,0,-36],"4,10":[0,0,-72],"5,6":[180,0,108],"5,7":[0,0,144],"5,8":[-180,0,-108],"5,9":[0,0,-72],"5,10":[180,0,-36],"6,7":[180,0,-108],"6,8":[0,0,144],"6,9":[-180,0,36],"6,10":[0,0,-144],"7,8":[180,0,36],"7,9":[0,0,144],"7,10":[-180,0,108],"8,9":[-180,0,180],"8,10":[0,0,72],"9,10":[180,0,-108]}},d12:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"04389FAB-5CCD-4FEC-B604-C19AD1000B1C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,-31.141719818115234,83.4803466796875,-1.2052193880081177,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48023223876953,-1.2053337097167969,-31.14202308654785,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,83.48045349121094,-1.2053337097167969,31.141408920288086,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,-82.73528289794922,0,33.09229278564453,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,51.59387969970703,50.38835906982422,52.338436126708984,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,50.3885498046875,52.338626861572266,51.593505859375,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,-31.141712188720703,83.4803466796875,1.2054481506347656,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,83.48023223876953,1.2053337097167969,-31.14202308654785,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-83.48045349121094,-1.2053337097167969,-31.141408920288086,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-51.59387969970703,-50.38835906982422,-52.338436126708984,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,-1.205640435218811,-31.14171600341797,-83.48033142089844,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,1.2050271034240723,31.14171600341797,-83.48035430908203,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48045349121094,1.2053337097167969,-31.141408920288086,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-83.48023223876953,1.2053337097167969,31.14202308654785,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,-50.38816833496094,-52.338626861572266,51.593875885009766,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,31.141712188720703,83.4803466796875,-1.2054481506347656,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,-50.3885498046875,52.338626861572266,-51.593505859375,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,50.38816833496094,52.338626861572266,-51.593875885009766,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,-.000303904089378193,33.09198760986328,-82.73540496826172,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,82.73552703857422,0,33.0916862487793,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,52.338809967041016,-51.59368896484375,50.38816833496094,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,83.48045349121094,1.2053337097167969,31.141408920288086,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,52.33843994140625,-51.59368896484375,-50.3885498046875,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,51.593502044677734,-50.38835906982422,-52.33881759643555,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,82.73528289794922,0,-33.09229278564453,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,33.09198760986328,-82.73540496826172,-.00012155366130173206,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,-31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-1.2050271034240723,31.14171600341797,83.48035430908203,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-52.33843994140625,-51.59368896484375,50.3885498046875,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,-50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-51.593502044677734,50.38835906982422,52.33881759643555,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,-52.33843994140625,51.59368896484375,50.3885498046875,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,.000303904089378193,33.09198760986328,82.73540496826172,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,52.338809967041016,51.59368896484375,50.38816833496094,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,1.205640435218811,-31.14171600341797,83.48033142089844,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-33.09198760986328,82.73540496826172,.00012155366130173206,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,-50.38816833496094,52.338626861572266,51.593875885009766,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,51.593502044677734,50.38835906982422,-52.33881759643555,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-52.338809967041016,-51.59368896484375,-50.38816833496094,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-33.09198760986328,-82.73540496826172,.00012155366130173206,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-83.48023223876953,-1.2053337097167969,31.14202308654785,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-50.3885498046875,-52.338626861572266,-51.593505859375,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,-.000303904089378193,-33.09198760986328,-82.73540496826172,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,50.38816833496094,-52.338626861572266,-51.593875885009766,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,31.141719818115234,-83.4803466796875,1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,-31.141719818115234,-83.4803466796875,-1.2052193880081177,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,1.2050271034240723,-31.14171600341797,-83.48035430908203,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-52.338809967041016,51.59368896484375,-50.38816833496094,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,-31.141712188720703,-83.4803466796875,1.2054481506347656,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,31.141719818115234,83.4803466796875,1.2052193880081177,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,33.09198760986328,82.73540496826172,-.00012155366130173206,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,31.141712188720703,-83.4803466796875,-1.2054481506347656,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,1.205640435218811,31.14171600341797,83.48033142089844,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,.000303904089378193,-33.09198760986328,82.73540496826172,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-82.73552703857422,0,-33.0916862487793,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,-51.59387969970703,50.38835906982422,-52.338436126708984,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,52.33843994140625,51.59368896484375,-50.3885498046875,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,51.59387969970703,-50.38835906982422,52.338436126708984,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375,50.3885498046875,-52.338626861572266,51.593505859375],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,-.010959841310977936,.8584385514259338,-.5127993226051331,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584375977516174,-.5128011703491211,-.010949048213660717,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,.8584346175193787,-.5128057599067688,.010964557528495789,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,-.5414749979972839,-2707540988922119e-20,.8407168388366699,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.5305333137512207,.017743051052093506,.8474783301353455,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,.01774728298187256,.8474791646003723,.5305318236351013,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,-.010942935943603516,.8584372997283936,.5128018856048584,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,.8584451079368591,.5127884149551392,-.01095967274159193,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.8584290742874146,-.512814462184906,-.010995045304298401,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5305572152137756,-.017733842134475708,-.8474634885787964,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128048658370972,.010960124433040619,-.8584352135658264,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,-.5128147006034851,-.010991238057613373,-.858428955078125,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,.5127923488616943,.010975174605846405,-.8584426045417786,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584410548210144,.512795627117157,-.010933354496955872,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.8584320545196533,.5128099322319031,.01097819209098816,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,-.01773303747177124,-.8474655151367188,.5305542349815369,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,.010984241962432861,.8584214448928833,-.5128273963928223,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,-.017747551202774048,.847478985786438,-.5305322408676147,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,.017701515927910805,.8474764823913574,-.5305377244949341,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,-2969801425933838e-20,.840691328048706,-.54151451587677,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.5415211915969849,26792287826538086e-21,.840687096118927,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8474524617195129,-.5305749177932739,.01773586869239807,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8584384322166443,.5127996206283569,.010955426841974258,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.8474904298782349,-.530514657497406,-.01772182434797287,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5305161476135254,-.017740633338689804,-.8474891185760498,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.5414748787879944,-5863606929779053e-21,-.8407169580459595,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,.8406915068626404,-.5415142774581909,-934302806854248e-20,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128104090690613,-.01098555326461792,.8584316372871399,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.5128028988838196,.010992184281349182,.858436107635498,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.8474770188331604,-.5305349826812744,.017758265137672424,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305088758468628,-.017743252217769623,.8474936485290527,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.5305161476135254,.017740704119205475,.8474891781806946,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,-.8474623560905457,.5305585861206055,.01774775981903076,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,29221177101135254e-21,.8406913876533508,.5415146350860596,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.8474631309509277,.5305578112602234,.017742618918418884,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,.5128002166748047,-.010964479297399521,.8584378957748413,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.8407147526741028,.5414782166481018,9499490261077881e-21,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,-.017701396718621254,.847476601600647,.530537486076355,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,.5305255055427551,.01773667335510254,-.8474833369255066,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8474682569503784,-.5305496454238892,-.017742810770869255,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.8406901359558105,-.5415164232254028,3986060619354248e-20,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.858434796333313,-.5128055810928345,.010956216603517532,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,-.017747780308127403,-.8474676012992859,-.530550479888916,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,33095479011535645e-21,-.8406911492347717,-.5415149331092834,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.017742261290550232,-.8474804759025574,-.5305300354957581,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,.010982692241668701,-.8584359288215637,.5128030776977539,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,-.011000136844813824,-.8584293127059937,-.512813925743103,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,.5127899050712585,-.010951489210128784,-.858444333076477,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.8474836945533752,.530524492263794,-.017755359411239624,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,-.010949179530143738,-.8584410548210144,.5127953290939331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.010959796607494354,.8584384918212891,.5127993226051331,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.840688943862915,.5415182709693909,23245811462402344e-22,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.010956525802612305,-.85843825340271,-.512799859046936,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,.5128072500228882,.010947109200060368,.8584340214729309,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-2372264862060547e-20,-.8406915664672852,.5415141582489014,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5415211319923401,58785080909729e-19,-.8406871557235718,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,-.5305268168449402,.017754971981048584,-.8474822044372559,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.8474643230438232,.530555784702301,-.017738506197929382,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.5305773615837097,-.017735809087753296,.8474509716033936,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415,.017751533538103104,-.8474733233451843,.5305410623550415],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.04446648806333542,.07376205921173096,.20145824551582336,.23582905530929565,.21539996564388275,.12743210792541504,.37534299492836,.25084298849105835,.04809992015361786,.08560597896575928,.057846054434776306,.11768478155136108,.1833210289478302,.12743109464645386,.7991840243339539,.7345119714736938,.04446648806333542,.10164541006088257,.05784609913825989,.009287774562835693,.1456916183233261,.009287774562835693,.9510290026664734,.7345119714736938,.029962755739688873,.009287834167480469,.08629150688648224,.11558711528778076,.16937947273254395,.23582905530929565,.29914700984954834,.9847790002822876,.09967105835676193,.11768478155136108,.12479200214147568,.5006319880485535,.13174988329410553,.06191825866699219,.14569158852100372,.23582911491394043,.10386674106121063,.11768478155136108,.1178082525730133,.12743109464645386,.12811647355556488,.059820473194122314,.2996180057525635,.7345709800720215,.04809992015361786,.07166439294815063,.1038665845990181,.12743091583251953,.2112043797969818,.12743210792541504,.4983850121498108,.5901579856872559,.04809992015361786,.08980154991149902,.04809992015361786,.1274309754371643,.06204163283109665,.11768478155136108,.9510089755058289,.23450398445129395,.04809992015361786,.11348932981491089,.07598327845335007,.11768478155136108,.11361270397901535,.11768472194671631,.24789699912071228,.8405579924583435,.1178082674741745,.009287655353546143,.15963312983512878,.23582905530929565,.2148379236459732,.11348950862884521,.7521880269050598,.34043699502944946,.04446648806333542,.04587888717651367,.22514608502388,.00928884744644165,.2390877902507782,.23582905530929565,.9978780150413513,.34043699502944946,.12811647355556488,.08770370483398438,.15963324904441833,.12743109464645386,.23908784985542297,.12743210792541504,.8750330209732056,.25118499994277954,.04809989035129547,.0437811017036438,.22934159636497498,.12743210792541504,.24328330159187317,.23582911491394043,.5490679740905762,.2342810034751892,.04446648806333542,.11558705568313599,.0717877745628357,.11768478155136108,.12755444645881653,.12743091583251953,.20090700685977936,.4844740033149719,.03415820747613907,.009287834167480469,.07178772985935211,.009287774562835693,.08992494642734528,.11768484115600586,.24783000349998474,.3400610089302063,.029962942004203796,.1274297833442688,.08629149198532104,.05982053279876709,.17357508838176727,.009289085865020752,.7481870055198669,.5902109742164612,.07598324865102768,.12743091583251953,.13174989819526672,.10374313592910767,.2153998762369156,.23582905530929565,.25249800086021423,.34009504318237305,.08629149198532104,.07376205921173096,.20145824551582336,.1274312138557434,.22934159636497498,.11768591403961182,.49818700551986694,.34009504318237305,.04446648806333542,.05982053279876709,.07598326355218887,.23582905530929565,.22514608502388,.23582905530929565,.29941999912261963,.48450803756713867,.04809989035129547,.04797661304473877,.2251461148262024,.12743210792541504,.22934159636497498,.009288787841796875,.45126500725746155,.48450803756713867,.04809992015361786,.0995476245880127,.14149606227874756,.009287774562835693,.14569158852100372,.12743109464645386,.24763700366020203,.5898839831352234,.08572941273450851,.23582905530929565,.12811647355556488,.04587888717651367,.1456916183233261,.11768472194671631,.9979509711265564,.5900989770889282,.04809992015361786,.10374313592910767,.062041595578193665,.009287774562835693,.14149613678455353,.12743109464645386,.7991650104522705,.23450398445129395,.08629149198532104,.04587888717651367,.18332113325595856,.23582911491394043,.2014583796262741,.11768490076065063,.7522619962692261,.5900989770889282,.08992491662502289,.0437811017036438,.18751657009124756,.23582905530929565,.23908784985542297,.11768591403961182,.6249899864196777,.0006160140037536621,.043904468417167664,.1274309754371643,.0444665253162384,.08770382404327393,.18751657009124756,.12743109464645386,.7478349804878235,.08986800909042358,.08572938293218613,.1274309754371643,.13174991309642792,.0758599042892456,.2014583796262741,.009289026260375977,.8751059770584106,.5008469820022583,.034158237278461456,.23582905530929565,.0899249017238617,.10374313592910767,.15543770790100098,.11768490076065063,.49791398644447327,.840366005897522,.020216554403305054,.1274297833442688,.13174991309642792,.11768472194671631,.15543778240680695,.009287893772125244,.3750689923763275,.751114010810852,.04913000017404556,.9849709868431091,.0899249017238617,.05772274732589722,.1693795919418335,.009289145469665527,.17357489466667175,.12743103504180908,.034158237278461456,.1274297833442688,.0899249017238617,.06191825866699219,.16937938332557678,.1274309754371643,.45099198818206787,.9847790002822876,.020216554403305054,.23582911491394043,.029962696135044098,.11768358945846558,.2148379534482956,.0995478630065918,.25222501158714294,.840366005897522,.034158363938331604,.11768358945846558,.09967107325792313,.23582905530929565,.12498500198125839,.2508090138435364,.2148379534482956,.10374337434768677,.016021236777305603,.1274297833442688,.10386674106121063,.009288907051086426,.12811647355556488,.11558699607849121,.2526949942111969,.5901579856872559,.1136128157377243,.12743109464645386,.13174988329410553,.05772268772125244,.14149603247642517,.23582905530929565,.7522420287132263,.09009099006652832,.020216554403305054,.009286701679229736,.04887000098824501,.734296977519989,.08629149198532104,.10164541006088257,.15963326394557953,.11768490076065063,.002139999996870756,.3400610089302063,.04809992015361786,.0758599042892456,.0996711403131485,.12743091583251953,.197262704372406,.23582911491394043,.016021013259887695,.23582905530929565,.1038665771484375,.23582905530929565,.21120451390743256,.1016455888748169,.37553998827934265,.5009059906005859,.043904371559619904,.23582905530929565,.04809992015361786,.05772274732589722,.22934159636497498,.23582905530929565,.7009119987487793,.2342810034751892,.057846151292324066,.23582905530929565,.11361275613307953,.009287714958190918,.12505200505256653,.7513059973716736,.2148379236459732,.11768490076065063,.0022070000413805246,.8405579924583435,.057846054434776306,.1274309754371643,.08629149198532104,.08770382404327393,.16937938332557678,.11768496036529541,.07598327845335007,.009287774562835693,.08992494642734528,.11348938941955566,.17357489466667175,.23582911491394043,.2009740024805069,.9849709868431091,.06204158067703247,.23582905530929565,.15543770790100098,.23582905530929565,.21120451390743256,.11558717489242554,.5491099953651428,.48442399501800537,.13174989819526672,.08560597896575928,.15543770790100098,.12743109464645386,.24328330159187317,.009288966655731201,.7009549736976624,.48442399501800537,.08992491662502289,.04797661304473877,.1972629427909851,.11768496036529541,.24328330159187317,.11768591403961182,.7478770017623901,.3400120139122009,.08992493152618408,.1274309754371643,.13174991309642792,.07166433334350586,.18751657009124756,.11768484115600586,.5024970173835754,.5902109742164612,.06204158067703247,.1274309754371643,.08992491662502289,.0898016095161438,.18332108855247498,.009287834167480469,.5021880269050598,.3400120139122009,.13174989819526672,.08980154991149902,.2390877902507782,.009288907051086426,.24328330159187317,.12743210792541504,.502144992351532,.08986800909042358,.049063000828027725,.4844740033149719,.0899249017238617,.07166439294815063,.12755438685417175,.23582905530929565,.19726276397705078,.1274312138557434,.08992491662502289,.08560603857040405,.17357507348060608,.11768496036529541,.18751657009124756,.009287834167480469,.6253420114517212,.5009589791297913,.1178082600235939,.23582905530929565,.13174989819526672,.0995476245880127,.2112043797969818,.23582905530929565,.4514620006084442,.7345709800720215,.07178780436515808,.1274309754371643,.11361271142959595,.23582905530929565,.12811647355556488,.10164541006088257,.8750870227813721,.0008389949798583984,.12811648845672607,.07376205921173096,.1833210289478302,.11768484115600586,.197262704372406,.009289026260375977,.6250330209732056,.25075995922088623,.0019470000406727195,.5898839831352234,.09967128932476044,.009288907051086426,.13174991309642792,.11348927021026611,.15963326394557953,.009287893772125244,.01602097600698471,.009286701679229736,.029962696135044098,.23582905530929565,.0899249017238617,.0995476245880127,.7012640237808228,.7346240282058716,.04809992015361786,.11768478155136108,.1178082674741745,.11768472194671631,.13174991309642792,.12743091583251953,.799111008644104,.4848499894142151,.0899249017238617,.0758599042892456,.13174991309642792,.23582911491394043,.22514614462852478,.11768591403961182,.9509549736976624,.4848499894142151,.04809992015361786,.06191825866699219,.04809992015361786,.23582905530929565,.07178771495819092,.23582905530929565,.9979320168495178,.09009099006652832,.020216554403305054,.11768358945846558,.13174989819526672,.047976553440093994,.14149612188339233,.11768472194671631,.20071400701999664,.734296977519989,.01602107286453247,.11768358945846558,.08992485702037811,.23582905530929565,.13174989819526672,.0437811017036438,.5494199991226196,.7346240282058716],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[17,212,141,107,7,11,43,39,223,59,130,144,158,116,167,151,23,203,91,231,207,199,183,239,75,71,3,103,191,51,171,179,211,186,182,198,149,146,129,133,16,20,108,60,217,205,21,136,157,221,36,202,2,26,119,14,166,49,74,154,161,168,184,33,57,53,178,189,98,229,100,152,102,93,97,148,112,132,232,216,236,194,222,54,173,37,45,104,237,180,138,82,90,12,128,56,86,81,234,73,204,230,46,50,190,94,210,177,147,69,195,226,78,41,9,30,89,118,197,62,0,145,24,162,185,196,65,201,206,105,181,208,76,48,40,172,44,188,113,214,134,109,218,142,32,52,220,4,101,28,13,58,165,8,88,80,68,224,193,159,38,170,72,228,153,92,176,96,126,150,131,121,117,61,18,137,22,85,233,238,114,143,215,15,111,115,235,83,141,83,17,141,11,87,107,107,95,7,223,227,43,43,47,39,192,55,144,55,59,144,167,35,158,158,160,116,203,27,151,151,135,23,207,139,91,91,31,231,219,63,239,63,199,239,3,67,75,75,79,71,51,155,103,103,99,191,211,187,171,171,175,179,186,209,182,149,25,146,133,213,16,108,120,60,205,200,21,157,34,221,202,66,2,119,122,14,49,77,74,161,156,168,33,164,57,178,174,189,229,29,100,102,6,93,148,124,112,232,140,216,194,225,222,173,169,37,104,84,237,138,19,82,12,125,128,86,10,81,73,64,204,46,42,50,94,106,210,147,1,69,226,70,78,9,5,30,118,163,197,114,110,143,115,127,15,15,123,111]},boundingSphere:{center:[0,0,0],radius:144.59226795520192}},faceValues:[7,5,3,11,12,9,4,1,2,10,8,6],rotationCombinations:{"1,2":[90,0,-90],"1,3":[-90,0,-90],"1,4":[-32,18,-58],"1,5":[32,18,58],"1,6":[0,0,180],"1,7":[-180,0,0],"1,8":[-148,-18,-58],"1,9":[-148,-18,122],"1,10":[-90,0,90],"1,11":[90,0,90],"1,12":[-180,0,-180],"2,3":[-180,0,-180],"2,4":[90,0,-90],"2,5":[90,0,90],"2,6":[-122,-90,148],"2,7":[-69,30,21],"2,8":[-90,0,-90],"2,9":[-32,18,122],"2,10":[-180,0,0],"2,11":[0,0,180],"2,12":[-148,54,122],"3,4":[32,18,58],"3,5":[90,0,-90],"3,6":[32,54,-58],"3,7":[-32,-54,122],"3,8":[-148,-18,122],"3,9":[-90,0,-90],"3,10":[-148,18,-122],"3,11":[-180,0,0],"3,12":[-122,-90,148],"4,5":[0,0,180],"4,6":[90,0,90],"4,7":[-90,0,90],"4,8":[-180,0,-180],"4,9":[-180,0,0],"4,10":[148,-54,-58],"4,11":[-122,-90,148],"4,12":[-90,0,-90],"5,6":[-90,0,-90],"5,7":[90,0,-90],"5,8":[-180,0,0],"5,9":[-180,0,-180],"5,10":[-148,-18,122],"5,11":[32,18,58],"5,12":[90,0,90],"6,7":[-180,0,-180],"6,8":[148,18,122],"6,9":[-122,-90,148],"6,10":[90,0,-90],"6,11":[-148,54,-58],"6,12":[-148,-18,-58],"7,8":[32,-18,-58],"7,9":[-69,30,21],"7,10":[148,54,58],"7,11":[-90,0,90],"7,12":[-32,54,58],"8,9":[0,0,180],"8,10":[-148,-18,-58],"8,11":[-148,-54,58],"8,12":[-90,0,90],"9,10":[-31,18,-58],"9,11":[-148,-90,-58],"9,12":[90,0,-90],"10,11":[-180,0,-180],"10,12":[-90,90,-180],"11,12":[148,-54,-58]}},d14:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"55E8EC8E-D9C5-4E75-86AC-BC4F49CF5FEA",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,-3.3639726638793945,6.319602012634277,-77.80762481689453,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,2.563892364501953,84.39848327636719,-5.970834732055664,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,75.92582702636719,-2.281585454940796,-17.299819946289062,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,4.9952239990234375,84.37457275390625,4.497790336608887,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,-30.552932739257812,6.355025291442871,71.34111022949219,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,31.1562557220459,6.31425142288208,71.49166870117188,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,-74.74581909179688,-6.299898624420166,-20.404645919799805,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,30.55293846130371,-6.35502815246582,-71.34111022949219,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,-31.1562557220459,-6.31424617767334,-71.49166870117188,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,5.657160758972168,-84.42521667480469,-4.448384761810303,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,62.504119873046875,-6.354261875152588,46.30989074707031,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,7.009031295776367,-84.40763854980469,1.33268404006958,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,75.9446792602539,-6.379278182983398,-14.266926765441895,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3639724254608154,-6.31959867477417,77.8076171875,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,3.3671836853027344,-84.35977935791016,6.014355659484863,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,34.1295166015625,2.239828109741211,70.8094711303711,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-75.9446792602539,6.379278182983398,14.26693058013916,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.03756713867188,-6.302979946136475,-14.609931945800781,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-76.0564956665039,-2.211188554763794,-17.664764404296875,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-62.504119873046875,6.354262351989746,-46.30989074707031,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-61.1809196472168,2.2734644412994385,-49.07624435424805,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-58.829193115234375,6.3529181480407715,-50.964759826660156,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,-36.493858337402344,-6.314887523651123,-68.91082763671875,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,58.31211471557617,6.307106018066406,-50.69571304321289,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,62.011024475097656,6.3075995445251465,-46.048179626464844,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,74.60848999023438,-6.379120826721191,-20.05154037475586,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,76.0564956665039,2.2111899852752686,17.664772033691406,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,74.74581909179688,6.299901008605957,20.404653549194336,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,36.493858337402344,6.3148884773254395,68.91082763671875,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,-2.5638914108276367,-84.39848327636719,5.9708333015441895,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,.3401651680469513,-84.3684310913086,-7.083171844482422,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-5.657160758972168,84.42522430419922,4.448385238647461,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-.4000111222267151,2.242583751678467,-78.4876937866211,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,-34.1295166015625,-2.239827871322632,-70.8094711303711,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,2.5671069622039795,6.321245193481445,-77.7981948852539,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,60.691749572753906,2.211258888244629,-48.80388641357422,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,35.8908576965332,-6.357795238494873,-68.75081634521484,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,33.49201583862305,-2.268580436706543,-70.65808868408203,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,76.03756713867188,6.302982807159424,14.609939575195312,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,61.1809196472168,-2.2734615802764893,49.07624435424805,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-58.31211471557617,-6.307102203369141,50.69571304321289,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-33.49201202392578,2.268582582473755,70.65808868408203,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-35.8908576965332,6.357793807983398,68.75082397460938,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,-2.567105293273926,-6.321239948272705,77.7981948852539,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,.40001073479652405,-2.242581844329834,78.4876937866211,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-60.69174575805664,-2.211254835128784,48.803897857666016,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-74.60848999023438,6.379125595092773,20.051544189453125,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-75.92582702636719,2.2815887928009033,17.29982566833496,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-62.011024475097656,-6.307600975036621,46.04818344116211,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-6.242546081542969,-84.4273681640625,1.3070549964904785,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,-4.99522066116333,-84.37457275390625,-4.497788429260254,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,58.829200744628906,-6.3529205322265625,50.964759826660156,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,-.34016573429107666,84.3684310913086,7.083171844482422,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,6.242546081542969,84.4273681640625,-1.307053804397583,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-3.3671834468841553,84.35977935791016,-6.0143561363220215,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-7.009029865264893,84.40763854980469,-1.3326834440231323,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,-.36670994758605957,87.28189849853516,.20025108754634857,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038,.366711288690567,-87.28191375732422,-.2002510279417038],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,-.28516727685928345,.6296403408050537,-.7226566076278687,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.3280982971191406,.6602655649185181,-.6755744218826294,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.7842698693275452,.5933358073234558,-.18131035566329956,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,.589374303817749,.6605231761932373,.46513107419013977,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,-.059090327471494675,.6272545456886292,.7765694260597229,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,.05634559690952301,.6280144453048706,.7761592268943787,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,-.6443470120429993,-.6290098428726196,-.43492940068244934,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,.05909096822142601,-.6272543668746948,-.7765696048736572,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,-.05632945895195007,-.6280063986778259,-.7761667966842651,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.5910056829452515,-.6553013920783997,-.4704173803329468,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7470955848693848,-.6255302429199219,.22485576570034027,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7361034154891968,-.6567224264144897,.16391272842884064,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.7726380228996277,-.6246670484542847,.11323241889476776,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.2852247953414917,-.6296125650405884,.7226580381393433,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.32667452096939087,-.6607898473739624,.6757517457008362,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,.3497964143753052,-.5950561165809631,.7235679030418396,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7726274132728577,.6246878504753113,-.11318989098072052,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7692402005195618,-.6276887655258179,.11948297917842865,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7877770662307739,.5905534625053406,-.17508289217948914,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.7470952868461609,.6255304217338562,-.22485589981079102,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.631263256072998,-.5948466658592224,-.4976588785648346,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.38938289880752563,.6292169094085693,-.6726565957069397,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,-.5729118585586548,-.6292456388473511,-.5251874923706055,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.3904346227645874,.628699541091919,-.6725307703018188,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.7437728643417358,.6275497078895569,-.2301807701587677,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.6457582712173462,-.6233645677566528,-.4409227967262268,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.7877867221832275,-.5905534029006958,.17503942549228668,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.6443431377410889,.6290005445480347,.43494871258735657,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,.5729120969772339,.6292457580566406,.5251871347427368,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,-.3281112611293793,-.6602649092674255,.6755688190460205,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,.0011704713106155396,-.6591591238975525,-.7520025968551636,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,-.5910052061080933,.6553022861480713,.47041675448417664,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,.0015861615538597107,-.5931890606880188,-.8050615787506104,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,-.34979522228240967,.5950555801391602,-.7235690355300903,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.2873671054840088,.6291413903236389,-.7222195863723755,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.6324546933174133,-.5889533758163452,-.5031253695487976,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.574481725692749,-.6237778663635254,-.5299734473228455,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.35163187980651855,.594671368598938,-.7229945659637451,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.7692419290542603,.6276857852935791,-.11948888003826141,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,.6312867403030396,.5948468446731567,.49762865900993347,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3904343545436859,-.6286999583244324,.6725306510925293,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.3516600430011749,-.5946711301803589,.7229809761047363,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.5744823813438416,.6237770915031433,.5299737453460693,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.28738611936569214,-.6291320323944092,.722220242023468,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.0015616416931152344,.5931897759437561,.8050611615180969,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.632463812828064,.5889529585838318,.5031142830848694,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.6457580924034119,.6233644485473633,.44092315435409546,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7842698097229004,-.593335747718811,.18131089210510254,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7437704205513,-.6275736689567566,.23012343049049377,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.7328628301620483,-.6589818596839905,.16927775740623474,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,-.5893685817718506,-.6605226993560791,-.4651390612125397,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,.38937872648239136,-.6292127966880798,.6726629734039307,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,-.0011698007583618164,.6591596007347107,.7520022988319397,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,.7328664064407349,.6589823961257935,-.16926002502441406,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.3266833424568176,.6607902646064758,-.6757471561431885,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,-.7360942959785461,.6567226648330688,-.16395282745361328,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,.0001270859647775069,1,6240241782506928e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20,-.00012663456436712295,-1,-6260263762669638e-20],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.012080706655979156,.01143413782119751,.02038293331861496,.2402452826499939,.07275813817977905,.7014026641845703,.23399420082569122,.044198572635650635,.012080706655979156,.09173142910003662,.09271499514579773,.0920637845993042,.22834762930870056,.033225297927856445,.24569767713546753,.027156472206115723,.8750260472297668,.27947235107421875,.15672194957733154,.03217524290084839,.15672194957733154,.040720343589782715,.21759822964668274,.041023433208465576,.624879777431488,.4702685475349426,.04823240637779236,.03318381309509277,.07462695240974426,.2401202917098999,.1386493444442749,.24023151397705078,.20049551129341125,.03662097454071045,.3756515383720398,.27943485975265503,.04823240637779236,.08685857057571411,.07282328605651855,.45090705156326294,.16252003610134125,.018233835697174072,.2011767327785492,.2402452826499939,.1273123025894165,.01617354154586792,.14694836735725403,.09188961982727051,.17717677354812622,.4513193964958191,.25039011240005493,.08733206987380981,.04823240637779236,.09189057350158691,.05499856173992157,.009189963340759277,.0725666880607605,.9514256715774536,.14694836735725403,.043423593044281006,.07372921705245972,.016311585903167725,.07462692260742188,.08685952425003052,.21925535798072815,.09241074323654175,.4275488257408142,.9517285227775574,.12057686597108841,.09188848733901978,.14611805975437164,.009021878242492676,.22737187147140503,.08733206987380981,.32245123386383057,.9515766501426697,.11080294847488403,.026038765907287598,.12057653814554214,.029400944709777832,.21095037460327148,.2402452826499939,.24711300432682037,.0928187370300293,.6267523169517517,.7800135612487793,.09018958359956741,.008709728717803955,.12057658284902573,.04346507787704468,.1830982267856598,.09213989973068237,.9277936816215515,.951744794845581,.10317572951316833,.0293390154838562,.1393822878599167,.032990872859954834,.1830982267856598,.2402452826499939,.255423367023468,.09287703037261963,.8746025562286377,.7797321677207947,.16253256797790527,.03631782531738281,.16336379945278168,.04333001375198364,.2554234266281128,.2402452826499939,.8222063779830933,.9510524272918701,.03845880925655365,.09173208475112915,.10992515832185745,.01626521348953247,.24376779794692993,.04419851303100586,.42733103036880493,.701709508895874,.03845880925655365,.026774346828460693,.03845880925655365,.24016445875167847,.14694836735725403,.036410391330718994,.174796923995018,.24008393287658691,.37455111742019653,.5295032858848572,.03845880925655365,.08928269147872925,.1273123025894165,.009048819541931152,.24376779794692993,.08995997905731201,.37507760524749756,.7204967141151428,.17645640671253204,.043330609798431396,.21771717071533203,.016403138637542725,.22902902960777283,.2402452826499939,.6778356432914734,.20166105031967163,.04823240637779236,.014015018939971924,.056542813777923584,.09192115068435669,.1830982267856598,.08697599172592163,.9278727769851685,.7018176913261414,.05499856173992157,.0163193941116333,.1403140127658844,.040812790393829346,.17645637691020966,.08961743116378784,.6247076988220215,.22033452987670898,.140313982963562,.08676266670227051,.15672211349010468,.09213924407958984,.18057595193386078,.017045259475708008,.5721643567085266,.201244056224823,.012080706655979156,.08928197622299194,.12499088048934937,.9704728722572327,.14694836735725403,.08941596746444702,.17478692531585693,.012857019901275635,.018697038292884827,.08670186996459961,.16502328217029572,.09206610918045044,.17724192142486572,.7014986276626587,.18057595193386078,.008743643760681152,.012080706655979156,.04335254430770874,.12887565791606903,.09186422824859619,.1393822878599167,.013869822025299072,.1774333119392395,.9517008662223816,.09104300290346146,.04336506128311157,.09271499514579773,.2402452826499939,.19964106380939484,.009263157844543457,.8223589658737183,.45139479637145996,.08440056443214417,.24022287130355835,.1928718537092209,.014091014862060547,.21759822964668274,.08731919527053833,.6777778267860413,.45166242122650146,.16253256797790527,.02800750732421875,.21095037460327148,.04365772008895874,.24711309373378754,.24022060632705688,.6778541803359985,.951484739780426,.12057655304670334,.08941489458084106,.16336379945278168,.08961677551269531,.2351137399673462,.009227573871612549,.8750938177108765,.9702678322792053,.07462695240974426,.0918915867805481,.12721094489097595,.0868040919303894,.2351137399673462,.0163571834564209,.4274844527244568,.45174920558929443,.031842514872550964,.08667910099029541,.12057653814554214,.011325597763061523,.13864925503730774,.09186530113220215,.3225155472755432,.45152556896209717,.012080706655979156,.03307300806045532,.030156202614307404,.026774346828460693,.030156515538692474,.2402452826499939,.10248857736587524,.092063307762146,.6261616945266724,.5296865701675415,.12057653814554214,.2402452826499939,.1281311959028244,.025947153568267822,.21095037460327148,.029455959796905518,.21925535798072815,.2400715947151184,.3766971230506897,.7794159054756165,.07462692260742188,.02608513832092285,.1928718537092209,.09240931272506714,.23733942210674286,.0928187370300293,.24569767713546753,.007925331592559814,.875484049320221,.02962595224380493,.01882428675889969,.009150922298431396,.07462692260742188,.04079252481460571,.22737182676792145,.04158461093902588,.37476611137390137,.9705840945243835,.018697038292884827,.0407489538192749,.12485933303833008,.7203324437141418,.14611805975437164,.016146481037139893,.23399420082569122,.08995997905731201,.012080781161785126,.24023497104644775,.01882428675889969,.01627671718597412,.06800204515457153,.04341691732406616,.9276410341262817,.4518194794654846,.08440056443214417,.04074656963348389,.19964106380939484,.01640307903289795,.21095037460327148,.08995997905731201,.6247829794883728,.9699863791465759,.06695697456598282,.011504054069519043,.08440056443214417,.08688396215438843,.21095052361488342,.09248226881027222,.5721458196640015,.9508618116378784,.06800201535224915,.0894421935081482,.07372921705245972,.009201109409332275,.09104300290346146,.08953815698623657,.8750190138816833,.47052764892578125,.06631660461425781,.09192222356796265,.15672194957733154,.08697539567947388,.22834759950637817,.011532008647918701,.5722221732139587,.4511365294456482,.03184248507022858,.04074972867965698,.08440056443214417,.012897908687591553,.12721094489097595,.04081183671951294,.374919056892395,.47056519985198975,.030156202614307404,.014692902565002441,.10248860716819763,.2402452826499939,.10416048020124435,.043364644050598145,.6775245070457458,.7015867233276367,.054857321083545685,.08944112062454224,.10416045039892197,.08953768014907837,.15672194957733154,.014117896556854248,.6248504519462585,.7203134894371033,.11080294847488403,.086883544921875,.16252003610134125,.009928703308105469,.19287201762199402,.24017375707626343,.9280667304992676,.20186400413513184,.030156604945659637,.09174239635467529,.054857321083545685,.043415963649749756,.10317572951316833,.011430740356445312,.5724754929542542,.7012842297554016,.04823240637779236,.04079157114028931,.10992515832185745,.009145617485046387,.12513083219528198,.4699118137359619,.25039011240005493,.04158461093902588,.03691284358501434,.017000675201416016,.11080294847488403,.04074627161026001,.1928718537092209,.041023433208465576,.8749712705612183,.22037410736083984,.1928718537092209,.0873255729675293,.21095037460327148,.011578857898712158,.23733942210674286,.2402205467224121,.8219332098960876,.20110386610031128,.1830982267856598,.040720999240875244,.19951972365379333,.08995997905731201,.21771717071533203,.009267032146453857,.8749260902404785,.7204409241676331,.03691284358501434,.009847462177276611,.11080294847488403,.24022287130355835,.19951972365379333,.04366427659988403,.8221272826194763,.7012577056884766,.01972394436597824,.03634655475616455,.056542813777923584,.2402452826499939,.11080294847488403,.09198707342147827,.18309825658798218,.026818931102752686,.8757262825965881,.5295590758323669,.04823248088359833,.2401202917098999,.1251671314239502,.7795271873474121,.12887565791606903,.24023151397705078,.17478697001934052,.026818931102752686,.21857404708862305,.026176750659942627,.03845880925655365,.04332977533340454,.09018958359956741,.01701122522354126,.1747969537973404,.09206688404083252,.32266902923583984,.7014552354812622,.06695697456598282,.02927464246749878,.1242377758026123,.2800881862640381,.14694832265377045,.2402452826499939,.1928718090057373,.03334176540374756,.2011767327785492,.09258311986923218,.05590075999498367,.036389052867889404,.06631642580032349,.2402452826499939,.08440063893795013,.09198743104934692,.25401246547698975,.027156472206115723,.6260393857955933,.2797313928604126,.02038293331861496,.09181225299835205,.09270339459180832,.026784837245941162,.12602335214614868,.5296675562858582,.16502328217029572,.24008393287658691,.2359241247177124,.03662097454071045,.08440056443214417,.026784837245941162,.15672194957733154,.2402452826499939,.22902897000312805,.09287703037261963,.25400829315185547,.007925331592559814,.6272023916244507,.02966541051864624,.05590075999498367,.026093125343322754,.07462692260742188,.03639000654220581,.08838308602571487,.03634411096572876,.20049551129341125,.026176750659942627,.2359241247177124,.026130735874176025,.24978983402252197,.01738286018371582,.2499590814113617,.03662097454071045,.01972394436597824,.0260503888130188,.034168489277362823,.036347150802612305,.11080294847488403,.03634369373321533,.1281311959028244,.03640943765640259,.14694836735725403,.02592015266418457,.1791275292634964,.03631848096847534,.21857404708862305,.03662097454071045],normalized:!1}},index:{type:"Uint16Array",array:[96,28,86,33,37,139,108,155,151,195,179,135,120,116,17,171,183,175,84,72,237,2,91,230,100,147,8,163,104,227,46,55,112,170,176,189,19,24,219,101,5,225,106,103,11,83,92,88,45,63,49,192,202,190,209,74,26,182,57,185,165,215,43,93,89,140,194,235,71,3,36,143,168,188,200,142,35,95,75,69,79,228,144,1,31,146,156,107,50,41,44,114,166,136,0,145,97,153,158,162,115,111,124,201,206,14,160,224,82,231,90,30,157,152,70,198,193,102,149,99,214,117,65,34,211,94,53,161,110,9,52,105,73,77,27,58,25,187,66,118,22,154,129,32,81,29,78,222,178,21,15,23,119,18,181,184,76,203,199,180,61,56,59,217,68,20,177,174,6,232,242,229,233,240,236,134,243,131,218,239,221,16,241,13,223,238,226,7,244,60,122,246,121,204,245,207,212,250,213,128,251,127,39,248,38,47,247,48,62,249,96,210,28,33,130,37,108,42,155,195,191,179,120,167,116,171,125,183,84,80,72,2,141,91,100,159,147,163,12,104,46,51,55,170,173,176,19,186,24,101,98,5,106,150,103,45,216,63,192,197,202,209,205,74,93,85,89,194,133,235,3,138,36,75,196,69,228,4,144,31,137,146,107,54,50,44,109,114,97,148,153,124,169,201,14,113,160,82,234,231,214,164,117,34,126,211,53,10,161,58,67,25,154,40,129,81,87,29,222,132,178,15,220,23,18,172,181,76,208,203,180,123,61,59,64,217]},boundingSphere:{center:[0,-762939453125e-17,0],radius:139.86793680588863}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14],rotationCombinations:{"1,2":[1,-51,0],"1,3":[-1,-103,-1],"1,4":[0,-155,0],"1,5":[0,154,0],"1,6":[2,103,-2],"1,7":[0,52,1],"1,8":[2,-77,-178],"1,9":[180,-51,-1],"1,10":[-180,0,0],"1,11":[-179,51,-1],"1,12":[-1,77,-179],"1,13":[0,26,180],"1,14":[1,-26,-180],"2,3":[0,-52,0],"2,4":[-2,-103,-2],"2,5":[0,-154,0],"2,6":[0,154,0],"2,7":[2,103,-2],"2,8":[0,-26,-180],"2,9":[2,-77,-178],"2,10":[180,-52,-1],"2,11":[-180,0,0],"2,12":[-180,51,-1],"2,13":[-1,77,-179],"2,14":[0,26,180],"3,4":[1,-52,1],"3,5":[-2,-103,-2],"3,6":[0,-154,0],"3,7":[0,155,-1],"3,8":[0,26,-180],"3,9":[0,-26,-179],"3,10":[1,-77,-179],"3,11":[180,-52,0],"3,12":[180,0,-1],"3,13":[-180,51,-1],"3,14":[0,77,180],"4,5":[0,-51,0],"4,6":[0,-103,1],"4,7":[0,-154,0],"4,8":[1,77,179],"4,9":[0,26,-180],"4,10":[0,-25,-180],"4,11":[-1,-77,180],"4,12":[180,-52,0],"4,13":[180,0,0],"4,14":[179,51,0],"5,6":[0,-51,0],"5,7":[1,-103,1],"5,8":[180,51,0],"5,9":[1,77,179],"5,10":[0,26,-180],"5,11":[0,-25,180],"5,12":[0,-77,180],"5,13":[180,-52,0],"5,14":[180,0,0],"6,7":[0,-51,-1],"6,8":[180,0,0],"6,9":[180,52,1],"6,10":[1,77,180],"6,11":[0,26,180],"6,12":[0,-26,180],"6,13":[0,-77,179],"6,14":[180,-51,0],"7,8":[180,-51,-1],"7,9":[-180,0,0],"7,10":[-180,51,0],"7,11":[-1,77,-179],"7,12":[0,26,180],"7,13":[0,-26,180],"7,14":[2,-77,-178],"8,9":[0,51,1],"8,10":[1,103,0],"8,11":[0,154,0],"8,12":[0,-155,0],"8,13":[0,-103,-1],"8,14":[0,-52,0],"9,10":[0,51,0],"9,11":[-1,103,1],"9,12":[0,154,0],"9,13":[0,-154,0],"9,14":[2,-103,2],"10,11":[0,51,0],"10,12":[0,103,0],"10,13":[0,154,0],"10,14":[0,-154,0],"11,12":[0,52,0],"11,13":[0,103,-1],"11,14":[0,155,0],"12,13":[0,52,0],"12,14":[3,103,-3],"13,14":[-1,51,1]}},d16:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"C14C9443-AE98-4545-B8F9-EEF68D99E5CB",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,1.9203956127166748,-75.6114730834961,4.636213302612305,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,-1.9200903177261353,1.4698024988174438,78.77789306640625,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,57.06234359741211,-1.4698084592819214,54.34610366821289,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,-1.9204055070877075,-75.6114730834961,-4.63621187210083,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,54.34610366821289,1.4697924852371216,-57.06234359741211,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,1.9206753969192505,1.4697996377944946,78.77787780761719,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-4.6361985206604,75.6114730834961,1.9204007387161255,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,-57.06234359741211,1.469807744026184,-54.34610366821289,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,78.77787780761719,-1.4698125123977661,-1.9206798076629639,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,4.6362080574035645,-75.6114730834961,-1.9204015731811523,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,57.06194305419922,-1.4698078632354736,-54.346519470214844,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,1.9201017618179321,-1.4698004722595215,-78.77789306640625,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,54.34610366821289,-1.4698083400726318,-57.06234359741211,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,57.06194305419922,1.469793438911438,-54.346519470214844,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,78.77787780761719,1.4697893857955933,-1.920678734779358,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-54.34610366821289,1.469807505607605,57.06234359741211,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-57.06194305419922,-1.469792366027832,54.346519470214844,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-78.77787780761719,1.4698104858398438,1.920676589012146,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,-57.06234359741211,-1.469793438911438,-54.34610366821289,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,4.6362409591674805,75.6114730834961,1.920365810394287,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,-1.9203522205352783,75.6114730834961,4.636227607727051,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,1.9204154014587402,75.61146545410156,4.636213302612305,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-1.9203720092773438,-75.6114730834961,4.636226177215576,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636218547821045,-75.61146545410156,1.920400619506836,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-4.636231899261475,-75.61146545410156,-1.9203662872314453,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-54.34610366821289,-1.4697926044464111,57.06234359741211,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-57.06194305419922,1.4698082208633423,54.346519470214844,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,-1.9206644296646118,-1.469801664352417,-78.77787780761719,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,78.77789306640625,1.469791293144226,1.9200873374938965,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,57.06234359741211,1.4697922468185425,54.34610366821289,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,78.77789306640625,-1.4698106050491333,1.9200865030288696,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,-1.4698073863983154,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,54.346519470214844,1.4697927236557007,57.06194305419922,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-78.77789306640625,1.469812273979187,-1.920089602470398,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-4.636211395263672,75.6114730834961,-1.920365810394287,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-54.346519470214844,1.4698083400726318,-57.06194305419922,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.9206633567810059,1.4698004722595215,-78.77787780761719,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,-1.920385479927063,75.6114730834961,-4.636212348937988,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9201031923294067,1.469801664352417,-78.77789306640625,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,1.9203814268112183,75.61146545410156,-4.636227130889893,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,4.636227607727051,75.61146545410156,-1.9204010963439941,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,1.9203611612319946,-75.6114730834961,-4.636227130889893,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,4.636220455169678,-75.6114730834961,1.9203660488128662,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,-1.9200901985168457,-1.4697996377944946,78.77789306640625,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,1.9206759929656982,-1.4698023796081543,78.77787780761719,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77789306640625,-1.4697893857955933,-1.9200888872146606,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-78.77787780761719,-1.4697915315628052,1.9206773042678833,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,-54.346519470214844,-1.4697924852371216,-57.06194305419922,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,1482796960772248e-20,77.15787506103516,4.608693302543543e-7,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8,-5149714979779674e-21,-77.15787506103516,8.015119590254471e-8],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[.276015043258667,-.6926735639572144,.6663474440574646,.27601727843284607,-.6926627159118652,.6663578748703003,.2760189175605774,-.692660391330719,.6663596630096436,.2760222256183624,-.6926570534706116,.6663616299629211,.276040256023407,-.6926739811897278,.6663366556167603,.276040256023407,-.6926739811897278,.6663366556167603,-.25681689381599426,.6585057377815247,.707400381565094,-.25677764415740967,.6585237979888916,.7073978781700134,-.25676974654197693,.6585195064544678,.7074047327041626,-.25676843523979187,.658514142036438,.7074101567268372,-.25676360726356506,.6585231423377991,.7074034810066223,.6817693710327148,-.6585230231285095,.3186502456665039,.6817746758460999,-.6585193276405334,.31864672899246216,.6817750930786133,-.6585239171981812,.3186362087726593,.6817806363105774,-.6585127711296082,.3186471462249756,.6818035244941711,-.6585102081298828,.3186035752296448,-.27603888511657715,-.6926746368408203,-.6663365960121155,-.27603888511657715,-.6926746368408203,-.6663365960121155,-.2760240435600281,-.6926567554473877,-.6663613319396973,-.27601906657218933,-.6926603317260742,-.6663596034049988,-.276016503572464,-.6926576495170593,-.6663634777069092,.31860223412513733,.6585102677345276,-.6818041205406189,.31864118576049805,.6585193872451782,-.6817771792411804,.31864672899246216,.6585192680358887,-.6817746162414551,.31865164637565613,.6585074067115784,-.6817838549613953,.3186781108379364,.6585215926170349,-.6817577481269836,.2567409873008728,.6585215926170349,.7074131965637207,.2567734122276306,.6585090756416321,.7074129581451416,.2567753195762634,.6585192680358887,.7074028849601746,.2567766308784485,.6585201025009155,.7074016332626343,.25684815645217896,.6585031747817993,.7073915004730225,.2568749189376831,.6584857106208801,.707397997379303,-.6663634181022644,.6926576495170593,.2760165333747864,-.6663627028465271,.6926561594009399,.27602237462997437,-.6663594245910645,.6926605105400085,.27601903676986694,-.666336178779602,.6926746368408203,.2760397791862488,-.666336178779602,.6926746368408203,.2760397791862488,-.6818409562110901,.6584908962249756,-.3185632526874542,-.6818210482597351,.6585003733634949,-.3185865879058838,-.6817838549613953,.6585077047348022,-.3186509609222412,-.6817764043807983,.6585201025009155,-.3186413049697876,-.6817750930786133,.6585239171981812,-.31863611936569214,-.6817746162414551,.6585193872451782,-.3186466097831726,-.6817693710327148,.6585230827331543,-.3186500072479248,.7073933482170105,-.6585105061531067,-.256823867559433,.7073962092399597,-.6585232615470886,-.2567831575870514,.7074015736579895,-.6585202813148499,-.2567760646343231,.7074017524719238,-.6585232019424438,-.25676846504211426,.707402765750885,-.658519446849823,-.25677525997161865,.7074130177497864,-.6585090756416321,-.2567734122276306,.6663360595703125,-.6926746964454651,-.27603980898857117,.6663360595703125,-.6926746964454651,-.27603980898857117,.6663508415222168,-.6926715970039368,-.276012122631073,.6663575768470764,-.6926620602607727,-.27601906657218933,.6663594841957092,-.6926604509353638,-.2760190963745117,.6663633584976196,-.6926577091217041,-.27601656317710876,.6817554831504822,-.6585215926170349,-.31868305802345276,.6817722320556641,-.6585193276405334,-.3186517655849457,.6817790865898132,-.6585125923156738,-.3186511695384979,.6818022131919861,-.6585102677345276,-.3186061382293701,.2567366063594818,-.65851891040802,-.7074173092842102,.2567683160305023,-.6585140228271484,-.7074102163314819,.2567698359489441,-.6585193872451782,-.7074047923088074,.25684165954589844,-.6584954261779785,-.7074009776115417,.25686919689178467,-.6584891676902771,-.7073968052864075,.3186025023460388,-.6585103273391724,-.6818039417266846,.3186361789703369,-.6585239768028259,-.6817750930786133,.3186422288417816,-.6585192084312439,-.6817768216133118,.31864655017852783,-.6585193276405334,-.6817747354507446,.3186500072479248,-.6585085988044739,-.6817831993103027,.3186507225036621,-.6585209369659424,-.6817711591720581,.6817664504051208,.6585237383842468,-.31865495443344116,.6817724108695984,.6585192084312439,-.3186517655849457,.6817728281021118,.6585238575935364,-.31864115595817566,.6817781925201416,.6585131287574768,-.31865185499191284,.681801974773407,.6585103869438171,-.31860649585723877,.7073934674263,.6585009098052979,-.25684863328933716,.707394540309906,.6584897637367249,-.2568739354610443,.7074029445648193,.6585192680358887,-.25677525997161865,.70740807056427,.6585136651992798,-.2567750811576843,.707412600517273,.6585222482681274,-.2567406892776489,-.318678081035614,.6585216522216797,.6817576885223389,-.3186471462249756,.6585129499435425,.6817804574966431,-.3186464309692383,.658519446849823,.6817746758460999,-.31860098242759705,.6585105657577515,.681804358959198,-.6818021535873413,-.6585102677345276,.3186064064502716,-.6817792654037476,-.6585121750831604,.3186511993408203,-.6817723512649536,-.6585192680358887,.31865155696868896,-.6817554831504822,-.6585215926170349,.31868308782577515,-.7074131965637207,.6585215926170349,.2567409873008728,-.7074130773544312,.6585090756416321,.2567734122276306,-.7074027061462402,.6585195064544678,.2567752003669739,-.7074015140533447,.6585204005241394,.25677624344825745,-.7073948979377747,.6584895253181458,.25687336921691895,-.7073922157287598,.6585012078285217,.25685107707977295,-.681803286075592,-.6585100293159485,-.3186042904853821,-.681780993938446,-.6585121750831604,-.3186477720737457,-.6817747354507446,-.6585192084312439,-.31864655017852783,-.6817577481269836,-.6585215926170349,-.3186781406402588,.6663422584533691,.6926707029342651,.27603498101234436,.6663422584533691,.6926707029342651,.27603498101234436,.6663618087768555,.6926602721214294,.27601414918899536,.6663632988929749,.6926569938659668,.27601855993270874,.6663657426834106,.6926578283309937,.27601078152656555,-.276034414768219,.6926738619804382,.666339099407196,-.276034414768219,.6926738619804382,.666339099407196,-.27601510286331177,.6926615834236145,.6663600206375122,-.27601391077041626,.6926605701446533,.6663616299629211,-.2760116159915924,.6926630735397339,.6663599014282227,-.2760094106197357,.6926736831665039,.6663497686386108,-.2760079801082611,.6926721930503845,.666351854801178,.2760111689567566,.6926732659339905,.6663495302200317,.27601638436317444,.6926575303077698,.666363537311554,.276017963886261,.692661464214325,.6663587093353271,.2760191559791565,.6926603317260742,.6663596034049988,.2760407030582428,.6926730871200562,.6663374900817871,.2760407030582428,.6926730871200562,.6663374900817871,-.27603691816329956,-.6926735043525696,.6663385629653931,-.27603691816329956,-.6926735043525696,.6663385629653931,-.27601784467697144,-.6926572918891907,.6663633584976196,-.2760142683982849,-.692660391330719,.6663615703582764,-.2760106921195984,-.6926577687263489,.6663656830787659,-.6663632392883301,-.6926574110984802,.27601781487464905,-.6663596034049988,-.692660391330719,.276018887758255,-.666358232498169,-.6926620006561279,.2760181128978729,-.6663506031036377,-.6926716566085815,.27601203322410583,-.6663397550582886,-.6926713585853577,.2760394513607025,-.6663397550582886,-.6926713585853577,.2760394513607025,-.6663616299629211,-.6926603317260742,-.2760140001773834,-.6663612723350525,-.6926611661911011,-.2760130763053894,-.6663604378700256,-.6926630735397339,-.2760102152824402,-.6663517951965332,-.6926720142364502,-.27600860595703125,-.6663496494293213,-.6926732659339905,-.2760104537010193,-.6663398742675781,-.6926730871200562,-.27603474259376526,-.6663398742675781,-.6926730871200562,-.27603474259376526,-.318651407957077,-.6585085988044739,.6817827820777893,-.31865057349205017,-.6585232019424438,.6817690134048462,-.3186468183994293,-.6585192680358887,.6817746758460999,-.31864237785339355,-.6585188508033752,.6817769408226013,-.3186362087726593,-.6585239768028259,.6817749738693237,-.3185986876487732,-.6585110425949097,.6818050146102905,-.6818026900291443,.6585108637809753,.3186039626598358,-.6817818284034729,.6585076451301575,.31865543127059937,-.681774914264679,.6585193276405334,.3186458647251129,-.6817728281021118,.6585239171981812,.31864118576049805,-.6817721724510193,.6585193872451782,.3186517059803009,-.6817666888237,.6585231423377991,.3186558485031128,-.25682297348976135,-.6585092544555664,-.7073948383331299,-.25678229331970215,-.6585257649421692,-.7073943018913269,-.25677669048309326,-.6585200428962708,-.7074015140533447,-.2567752003669739,-.6585193276405334,-.7074028849601746,-.25677335262298584,-.6585087776184082,-.7074132561683655,-.25676870346069336,-.6585231423377991,-.7074016332626343,.7073953151702881,.6585105657577515,.25681835412979126,.7073976993560791,.6585239768028259,.2567773759365082,.7074037194252014,.6585230827331543,.25676336884498596,.7074037790298462,.6585202813148499,.25676998496055603,.7074049115180969,.6585192680358887,.2567700147628784,.707414984703064,.658509373664856,.2567674517631531,.6817577481269836,.6585216522216797,.3186781108379364,.6817748546600342,.6585191488265991,.3186466693878174,.6817762851715088,.6585201025009155,.31864142417907715,.6817829012870789,.6585080027580261,.31865206360816956,.6818039417266846,.6585102081298828,.3186025619506836,.7073953747749329,-.6585008502006531,.25684332847595215,.7073964476585388,-.6584898233413696,.25686851143836975,.7074047327041626,-.6585193872451782,.2567700147628784,.7074100375175476,-.6585139036178589,.25676897168159485,.7074150443077087,-.6585217118263245,.2567354738712311,.31860607862472534,-.6585102677345276,.6818023324012756,.31864601373672485,-.6585190892219543,.6817750334739685,.31865158677101135,-.6585192680358887,.6817724108695984,.3186558485031128,-.6585085988044739,.6817806363105774,.31868311762809753,-.6585216522216797,.6817553639411926,.31860703229904175,.658510148525238,.6818019151687622,.3186412453651428,.6585239768028259,.6817727088928223,.31865087151527405,.6585137248039246,.6817781329154968,.31865182518959045,.6585192084312439,.6817723512649536,.3186556100845337,.6585230827331543,.6817667484283447,-.707414984703064,.6585217118263245,-.25673556327819824,-.7074099779129028,.6585142612457275,-.2567688226699829,-.7074046730995178,.6585195064544678,-.25676992535591125,-.7073950171470642,.658510684967041,-.25681883096694946,-.666364312171936,.6926564574241638,-.2760176658630371,-.6663615703582764,.6926605105400085,-.2760140895843506,-.6663599610328674,.6926629543304443,-.2760114371776581,-.6663492918014526,.6926740407943726,-.27600976824760437,-.6663401126861572,.692672848701477,-.276034951210022,-.6663401126861572,.692672848701477,-.276034951210022,-.3186555504798889,.6585217118263245,-.6817682385444641,-.3186514973640442,.6585192680358887,-.6817724108695984,-.31865087151527405,.6585137248039246,-.6817781329154968,-.3186410963535309,.6585239768028259,-.6817727088928223,-.31860843300819397,.6585099697113037,-.6818014979362488,-.25687503814697266,.6584945321083069,-.7073897123336792,-.25684797763824463,.6585018634796143,-.7073926329612732,-.25677669048309326,.6585201025009155,-.7074015736579895,-.25677499175071716,.6585193276405334,-.7074029445648193,-.2567721903324127,.6585090160369873,-.7074134349822998,-.256741464138031,.6585198640823364,-.7074146270751953,-.2760404050350189,.6926735043525696,-.6663371324539185,-.2760404050350189,.6926735043525696,-.6663371324539185,-.27601927518844604,.6926617622375488,-.6663580536842346,-.27601882815361023,.692660391330719,-.6663596630096436,-.27601534128189087,.6926579475402832,-.6663636565208435,-.2760111093521118,.6926732659339905,-.666349470615387,.25676339864730835,.6585231423377991,-.7074035406112671,.2567683756351471,.658514142036438,-.7074102163314819,.2567700743675232,.6585193872451782,-.7074046730995178,.2567768692970276,.6585267186164856,-.7073954343795776,.25681787729263306,.6585150361061096,-.7073912620544434,.27600938081741333,.6926736831665039,-.6663497090339661,.27601268887519836,.6926624774932861,-.6663600206375122,.27601420879364014,.692660391330719,-.6663615703582764,.2760183811187744,.6926562786102295,-.6663641929626465,.27603667974472046,.692672848701477,-.6663392782211304,.27603667974472046,.692672848701477,-.6663392782211304,.6663398146629333,.6926707625389099,-.2760407030582428,.6663398146629333,.6926707625389099,-.2760407030582428,.666347861289978,.6926729083061218,-.2760158181190491,.6663495898246765,.6926727294921875,-.27601224184036255,.666358232498169,.6926625370979309,-.2760171592235565,.6663585901260376,.6926613450050354,-.27601903676986694,.6663596630096436,.6926603317260742,-.2760190963745117,.27600938081741333,-.6926738023757935,-.6663495302200317,.27601149678230286,-.6926628947257996,-.6663601398468018,.2760140001773834,-.6926604509353638,-.6663616299629211,.2760170102119446,-.6926567554473877,-.6663640737533569,.27603477239608765,-.6926739811897278,-.6663388609886169,.27603477239608765,-.6926739811897278,-.6663388609886169,.6663395166397095,-.6926735043525696,.2760348320007324,.6663395166397095,-.6926735043525696,.2760348320007324,.6663496494293213,-.69267338514328,.2760099768638611,.6663513779640198,-.6926727294921875,.2760077118873596,.6663597822189331,-.6926623582839966,.27601343393325806,.6663600206375122,-.6926628947257996,.2760114371776581,.6663615703582764,-.6926604509353638,.27601417899131775,-.2568694055080414,-.6584880352020264,.7073978185653687,-.25684303045272827,-.658505916595459,.7073907852172852,-.25677070021629333,-.6585201025009155,.7074036002159119,-.2567701041698456,-.6585193276405334,.7074047327041626,-.2567673623561859,-.6585090160369873,.7074152231216431,-.25673583149909973,-.6585217118263245,.7074149250984192,.25676846504211426,-.6585231423377991,.7074017524719238,.2567743957042694,-.6585140228271484,.7074080109596252,.2567751109600067,-.6585193276405334,.7074029445648193,.25678279995918274,-.6585239768028259,.7073957920074463,.256822794675827,-.6585081815719604,.7073959708213806,-.7074099779129028,-.6585137248039246,-.25676944851875305,-.7074047923088074,-.6585192680358887,-.2567698359489441,-.7074031233787537,-.6585232019424438,-.25676456093788147,-.7073982357978821,-.658488929271698,-.2568660080432892,-.7073976397514343,-.6585239171981812,-.2567775249481201,-.707395076751709,-.6585009098052979,-.25684383511543274,-.7074130177497864,-.6585085988044739,.25677454471588135,-.7074028849601746,-.6585193872451782,.2567750811576843,-.7074017524719238,-.6585231423377991,.2567686140537262,-.7074016332626343,-.6585202813148499,.2567755877971649,-.7073957920074463,-.6585239171981812,.2567828893661499,-.7073920369148254,-.6585111021995544,.2568261921405792,-.31868305802345276,-.6585215926170349,-.6817554235458374,-.3186575174331665,-.658507764339447,-.6817806363105774,-.3186517059803009,-.6585192084312439,-.6817723512649536,-.3186461925506592,-.658518373966217,-.6817757487297058,-.3185906708240509,-.6585003137588501,-.6818190813064575,-.3185673952102661,-.6584908366203308,-.6818392276763916,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,1342588575425907e-21,1,-7.968073134634324e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8,-7.788058837832068e-7,-1,-7.342277541511066e-8],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.03048560582101345,.01567864418029785,.03048560582101345,.01567864418029785,.4374997317790985,.2620980143547058,.03719213604927063,.12196230888366699,.034566912800073624,.013053596019744873,.04797939583659172,.007471561431884766,.023779170587658882,.004848778247833252,.11408431828022003,.12196230888366699,.09070630371570587,.23767399787902832,.07480431348085403,.01567620038986206,.11408431828022003,.12196230888366699,.11983299255371094,.12196230888366699,.3407820463180542,.3628087639808655,.11983299255371094,.12196230888366699,.041273150593042374,.015676438808441162,.004617570899426937,.005231618881225586,.08821681886911392,.00785917043685913,.104537233710289,.00896519422531128,.017072739079594612,.12196230888366699,.3124997019767761,.3871912360191345,.04389829561114311,.015676259994506836,.034566912800073624,.004848778247833252,.014447606168687344,.12196230888366699,.5343227386474609,.23762238025665283,.014447606168687344,.12196230888366699,.12820686399936676,.06416767835617065,.11096081137657166,.06416738033294678,.0707232654094696,.01567620038986206,.15942715108394623,.23743665218353271,.0707232654094696,.01567620038986206,.023779170587658882,.0007677078247070312,.023779170587658882,.0007677078247070312,.07742954790592194,.12196230888366699,.007741174660623074,.12196230888366699,.5624786019325256,.012261509895324707,.061391860246658325,.013051092624664307,.07480429112911224,.007857918739318848,.01348982285708189,.004848778247833252,.01348982285708189,.004848778247833252,.027860479429364204,.12196230888366699,.027860479429364204,.12196230888366699,.12245811522006989,.06416767835617065,.4092179536819458,.11280876398086548,.12245811522006989,.06416767835617065,.07072323560714722,.005232870578765869,.12245811522006989,.06679385900497437,.06401706486940384,.12196230888366699,.12245811522006989,.06679385900497437,.21575646102428436,.36276328563690186,.06401706486940384,.12196230888366699,.05060452222824097,.007858037948608398,.06809809058904648,.007857978343963623,.09084202349185944,.12196230888366699,.09084202349185944,.12196230888366699,.18749970197677612,.26223671436309814,.06401699781417847,.015676140785217285,.12245821952819824,.12196230888366699,.15924353897571564,.36276328563690186,.09084194898605347,.015676438808441162,.03144339099526405,.000767827033996582,.13133037090301514,.003871619701385498,.04797939583659172,.12196230888366699,.03418757766485214,.362862765789032,.08725927770137787,.005232870578765869,.08725927770137787,.005232870578765869,.03144339099526405,.004848778247833252,.13133037090301514,.06416767835617065,.09492307156324387,.015676438808441162,.09081242233514786,.362862765789032,.09492307156324387,.015676438808441162,.13133037090301514,.06416767835617065,.1255817413330078,.12196230888366699,.4657820463180542,.23780876398086548,.1255817413330078,.12196230888366699,.01036630105227232,.12196230888366699,.034566912800073624,.000767827033996582,.07384677231311798,.005232870578765869,.07384677231311798,.005232870578765869,.4092180132865906,.23780876398086548,.057310834527015686,.015676259994506836,.1255817413330078,.06679385900497437,.11408431828022003,.0667925477027893,.0036600297316908836,.015675067901611328,.03429369255900383,.23767399787902832,.06497455388307571,.0011516809463500977,.06809809058904648,.005232870578765869,.09754816442728043,.015677452087402344,.15919587016105652,.48784810304641724,.12820686399936676,.12196230888366699,.13133040070533752,.06679350137710571,.07742944359779358,.01567739248275757,.5342592000961304,.11273849010467529,.07742944359779358,.01567739248275757,.05060454457998276,.0011516809463500977,.05060454457998276,.0011516809463500977,.01036630105227232,.004848778247833252,.021154051646590233,.01567864418029785,.09083183109760284,.4878973960876465,.12558168172836304,.06416767835617065,.017355674877762794,.008966445922851562,.07771223783493042,.011559724807739258,.3124997019767761,.1371912956237793,.10425447672605515,.12196230888366699,.06139186769723892,.12196230888366699,.07072321325540543,.007857918739318848,.09112466126680374,.011558711528778076,.003660283051431179,.12196230888366699,.06249973922967911,.13732600212097168,.07480431348085403,.12196230888366699,.07480431348085403,.12196230888366699,.003660283051431179,.12196230888366699,.10833562910556793,.12196230888366699,.07072321325540543,.12196230888366699,.10833562910556793,.12196230888366699,.1875002682209015,.13756322860717773,.021154051646590233,.007474005222320557,.09492305666208267,.013051152229309082,.04418101906776428,.008964121341705322,.09783096611499786,.011559903621673584,.10162932425737381,.12196230888366699,.5625002384185791,.26224493980407715,.034566912800073624,.01567864418029785,.08821682631969452,.12196230888366699,.1874997317790985,.387151837348938,.09754827618598938,.12196230888366699,.09754827618598938,.12196230888366699,.007741096429526806,.00785684585571289,.1016293466091156,.013052403926849365,.06250026077032089,.3871026635169983,.021154044196009636,.12196230888366699,.08413578569889069,.12196230888366699,.021154044196009636,.12196230888366699,.08413578569889069,.12196230888366699,.0036600297316908836,.00785684585571289,.10833562910556793,.0074727535247802734,.10162932425737381,.015677452087402344,.11096075177192688,.0667925477027893,.5907518267631531,.3627550005912781,.10162932425737381,.015677452087402344,.11096075177192688,.0667925477027893,.06809809058904648,.0011516809463500977,.06497455388307571,.005232870578765869,.007741174660623074,.015675067901611328,.007741174660623074,.015675067901611328,.13133040070533752,.12196230888366699,.5907407999038696,.11272633075714111,.13133040070533752,.12196230888366699,.08725927770137787,.0011516809463500977,.11670946329832077,.003871321678161621,.04389836639165878,.12196230888366699,.3407820463180542,.4878087639808655,.04389836639165878,.12196230888366699,.11670946329832077,.003871321678161621,.07384677231311798,.0011516809463500977,.11670953035354614,.06679290533065796,.11670953035354614,.06679290533065796,.06139186769723892,.015676259994506836,.34078195691108704,.2378087043762207,.06139186769723892,.015676259994506836,.11670944094657898,.12196230888366699,.2842180132865906,.2378087043762207,.1042545735836029,.01567751169204712,.1042545735836029,.01567751169204712,.007741096429526806,.005231618881225586,.07072323560714722,.0011516809463500977,.07072323560714722,.0011516809463500977,.2842179536819458,.3628087639808655,.06809809058904648,.12196230888366699,.11983299255371094,.06679290533065796,.004617570899426937,.0011506080627441406,.03719203174114227,.015676438808441162,.40916556119918823,.3629019856452942,.03719203174114227,.015676438808441162,.11408430337905884,.003871619701385498,.007741096429526806,.0011506080627441406,.11096075177192688,.003871619701385498,.10833562910556793,.01567751169204712,.21557284891605377,.23743665218353271,.11096075177192688,.003871619701385498,.12245815992355347,.003871917724609375,.08151060342788696,.01567739248275757,.4657820463180542,.11280876398086548,.05060454457998276,.005232870578765869,.02786046452820301,.01567864418029785,.4374997317790985,.012191295623779297,.08151060342788696,.12196230888366699,.08151060342788696,.12196230888366699,.01036630105227232,.008966505527496338,.05759349465370178,.011558592319488525,.11983299255371094,.06416738033294678,.3407820463180542,.1128087043762207,.02377944253385067,.12196230888366699,.11983299255371094,.06416738033294678,.01348982285708189,.000767827033996582,.0841357409954071,.0011516809463500977,.0841357409954071,.0011516809463500977,.05060460418462753,.015676259994506836,.2842179536819458,.11280876398086548,.05060460418462753,.015676259994506836,.11983299255371094,.003871321678161621,.014164685271680355,.007474005222320557,.03719203174114227,.008964121341705322,.023779170587658882,.01567864418029785,.31250008940696716,.012191236019134521,.05060452222824097,.12196230888366699,.023779170587658882,.01567864418029785,.12820683419704437,.0038716793060302734,.05468563735485077,.01567620038986206,.5906772613525391,.23762238025665283,.12820683419704437,.0038716793060302734,.0841357409954071,.005232870578765869,.05468563735485077,.12196230888366699,.05468563735485077,.12196230888366699,.5624997615814209,.1373775601387024,.014447621069848537,.015678703784942627,.02377917803823948,.008966445922851562,.040990397334098816,.007471561431884766,.027577554807066917,.007474005222320557,.08151061087846756,.01305234432220459,.05731076002120972,.12196230888366699,.010366610251367092,.015678703784942627,.05731076002120972,.12196230888366699,.010366610251367092,.015678703784942627,.4375002980232239,.13719123601913452,.04797941446304321,.015676259994506836,.04797941446304321,.015676259994506836,.06250029802322388,.262137234210968,.09492305666208267,.12196230888366699,.05468561500310898,.007858037948608398,.08413572609424591,.00785917043685913,.03076852671802044,.011561095714569092,.06401699781417847,.007857978343963623,.06809809058904648,.015676140785217285,.04127315804362297,.12196230888366699,.04127315804362297,.12196230888366699,.06809809058904648,.015676140785217285,.3125002682209015,.26219117641448975,.026902692392468452,.004848778247833252,.026902692392468452,.004848778247833252,.034566912800073624,.12196230888366699,.5342481732368469,.3627550005912781,.034566912800073624,.12196230888366699,.11096090078353882,.12196230888366699,.11408430337905884,.06416738033294678,.03048589639365673,.12196230888366699,.46583443880081177,.3629019856452942,.11408430337905884,.06416738033294678,.026902692392468452,.0007677078247070312,.08413572609424591,.015676140785217285,.034168168902397156,.4878973960876465,.12558168172836304,.003871917724609375,.05372808128595352,.005232870578765869,.12558168172836304,.003871917724609375,.05372808128595352,.005232870578765869,.08821682631969452,.015676140785217285,.21580412983894348,.48784810304641724,.12820687890052795,.06679350137710571,.08821682631969452,.015676140785217285,.12820687890052795,.06679350137710571,.05372808128595352,.0011516809463500977,.11670944094657898,.06416738033294678,.01707303337752819,.01567864418029785,.2842179536819458,.4878087639808655,.01707303337752819,.01567864418029785,.01036630105227232,.000767827033996582,.01036630105227232,.000767827033996582,.014164685271680355,.013053655624389648,.021154051646590233,.013053596019744873,.027577554807066917,.013053596019744873,.040990397334098816,.013051152229309082,.061391860246658325,.00747150182723999,.07276374846696854,.013051033020019531,.08151061087846756,.007472634315490723,.09492305666208267,.007471621036529541,.005700557492673397,.013049840927124023,.034566912800073624,.007474005222320557,.04797939583659172,.013051152229309082,.052645064890384674,.013051152229309082,.06605753302574158,.013051152229309082,.08617626875638962,.01305234432220459,.1016293466091156,.0074727535247802734,.10833562910556793,.013052403926849365],normalized:!1}},index:{type:"Uint16Array",array:[97,128,249,171,245,2,83,8,107,137,120,240,12,236,166,262,150,19,23,208,213,190,203,197,78,72,223,101,160,157,255,123,87,114,28,177,91,145,34,42,181,184,48,54,57,238,31,6,76,165,44,254,130,122,108,27,112,126,133,274,192,152,260,142,106,33,38,265,95,253,93,182,185,90,32,239,0,244,69,53,227,212,198,204,161,111,176,129,261,18,85,84,141,258,146,89,13,155,159,219,156,79,139,10,81,169,163,174,170,233,14,21,59,65,125,138,86,73,47,56,40,205,191,224,149,61,246,178,26,222,24,214,250,41,98,232,46,167,209,70,60,63,194,210,68,226,62,36,104,271,105,116,273,115,99,267,100,218,272,217,215,268,216,201,269,200,187,266,188,35,270,134,17,281,16,229,279,228,50,277,51,231,278,230,4,275,5,117,276,118,127,280,237,247,30,77,153,164,257,248,132,109,9,29,189,199,148,143,82,110,37,193,264,251,259,94,186,180,92,241,121,1,67,58,52,211,207,196,162,102,113,131,96,263,85,140,84,256,88,144,11,168,154,221,103,158,136,242,7,169,15,163,172,3,234,21,75,59,124,119,135,71,80,45,39,183,202,225,20,151,243,173,175,220,74,22,252,179,43,235,55,49,206,25,66,64,147,195]},boundingSphere:{center:[0,0,0],radius:135.51845097955697}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16],rotationCombinations:{"1,2":[-1,-46,-1],"1,3":[44,-91,44],"1,4":[0,-135,0],"1,5":[-1,179,1],"1,6":[-1,134,1],"1,7":[44,89,-44],"1,8":[1,44,-2],"1,9":[-1,0,180],"1,10":[-2,-45,179],"1,11":[-103,-89,78],"1,12":[-180,-45,0],"1,13":[179,2,1],"1,14":[179,46,1],"1,15":[13,89,166],"1,16":[0,44,179],"2,3":[0,-45,0],"2,4":[43,-90,43],"2,5":[0,-135,0],"2,6":[0,180,0],"2,7":[0,135,0],"2,8":[38,89,-39],"2,9":[0,45,-180],"2,10":[0,0,180],"2,11":[-1,-45,179],"2,12":[-3,-89,177],"2,13":[-180,-44,1],"2,14":[-179,0,0],"2,15":[-179,45,0],"2,16":[-6,90,-174],"3,4":[0,-45,0],"3,5":[-54,-90,-54],"3,6":[0,-135,0],"3,7":[0,-180,0],"3,8":[-1,134,0],"3,9":[-177,90,-3],"3,10":[-1,45,-180],"3,11":[-1,0,180],"3,12":[0,-44,179],"3,13":[-179,-89,2],"3,14":[-179,-45,1],"3,15":[-180,0,0],"3,16":[-180,45,0],"4,5":[0,-45,1],"4,6":[-47,-90,-47],"4,7":[-1,-135,0],"4,8":[-1,179,-1],"4,9":[-180,45,0],"4,10":[-98,89,-83],"4,11":[-1,45,-179],"4,12":[0,1,180],"4,13":[0,-46,-179],"4,14":[-161,-89,20],"4,15":[180,-44,0],"4,16":[180,1,0],"5,6":[-1,-45,0],"5,7":[-60,-90,-59],"5,8":[-1,-136,-1],"5,9":[180,-1,1],"5,10":[180,44,0],"5,11":[-159,89,-21],"5,12":[0,46,179],"5,13":[0,-1,-180],"5,14":[-1,-45,179],"5,15":[-109,-89,72],"5,16":[-180,-45,0],"6,7":[0,-45,0],"6,8":[-38,-91,-39],"6,9":[-180,-45,0],"6,10":[-180,0,0],"6,11":[-179,45,-1],"6,12":[-177,89,-3],"6,13":[0,44,-179],"6,14":[-1,0,-180],"6,15":[-1,-45,180],"6,16":[-174,-90,6],"7,8":[1,-46,0],"7,9":[-3,-90,177],"7,10":[-179,-45,0],"7,11":[-179,0,0],"7,12":[-180,44,-1],"7,13":[-1,89,-178],"7,14":[-1,45,-179],"7,15":[0,0,-180],"7,16":[0,-45,180],"8,9":[0,-44,-179],"8,10":[12,-89,-167],"8,11":[179,-46,-1],"8,12":[179,-2,-1],"8,13":[-180,45,0],"8,14":[-109,89,-71],"8,15":[-2,45,-178],"8,16":[-1,0,-180],"9,10":[1,45,-1],"9,11":[89,89,-89],"9,12":[0,135,0],"9,13":[0,-179,1],"9,14":[0,-134,0],"9,15":[7,-89,7],"9,16":[0,-44,-1],"10,11":[0,45,0],"10,12":[-9,89,8],"10,13":[0,136,1],"10,14":[-1,-179,0],"10,15":[-1,-134,0],"10,16":[11,-89,12],"11,12":[-1,45,-1],"11,13":[4,91,-4],"11,14":[-1,136,1],"11,15":[-1,-179,0],"11,16":[-1,-134,0],"12,13":[-1,47,2],"12,14":[6,91,-6],"12,15":[0,136,0],"12,16":[0,-179,-1],"13,14":[1,44,-1],"13,15":[68,89,-68],"13,16":[-1,135,1],"14,15":[0,45,0],"14,16":[-86,90,85],"15,16":[0,45,-1]}},d20:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"4947963B-5ABA-4507-A373-1DA7805EB4DE",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-83.39456939697266,2.066877841949463,52.33057403564453,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-53.607669830322266,82.60527038574219,.00019691196212079376,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-84.67233276367188,-1.2774014472961426,-50.26307678222656,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-52.330257415771484,-83.39476013183594,2.0670700073242188,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-1.2770904302597046,-50.263389587402344,84.67215728759766,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-52.33027648925781,83.39476013183594,-2.066685438156128,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,-50.26338577270508,84.67214965820312,1.2775861024856567,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,1.2777124643325806,-50.263389587402344,84.6721420288086,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,-2.0671839714050293,-52.330265045166016,-83.39474487304688,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,83.39456939697266,2.066877841949463,-52.33057403564453,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,84.67233276367188,1.2774014472961426,50.26307678222656,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,53.607669830322266,-82.60527038574219,-.00019691196212079376,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,83.39456939697266,-2.066877841949463,-52.33057403564453,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,1.2770904302597046,50.263389587402344,-84.67215728759766,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,50.26338577270508,84.67214965820312,-1.2775861024856567,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,83.39495086669922,-2.066877841949463,52.329959869384766,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-50.26339340209961,-84.67214965820312,-1.2772167921066284,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-1.2777124643325806,-50.263389587402344,-84.6721420288086,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-52.330257415771484,83.39476013183594,2.0670700073242188,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-82.60507202148438,0,53.60797119140625,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-2.0665714740753174,52.330265045166016,83.39476776123047,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,-1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-84.67196655273438,1.2774014472961426,50.26369857788086,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-53.607669830322266,-82.60527038574219,.00019691196212079376,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-83.39456939697266,-2.066877841949463,52.33057403564453,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-52.33027648925781,-83.39476013183594,-2.066685438156128,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-2.0665714740753174,-52.330265045166016,83.39476776123047,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-1.2770904302597046,50.263389587402344,84.67215728759766,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-.0003034261171706021,53.607669830322266,-82.60527038574219,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-2.0671839714050293,52.330265045166016,-83.39474487304688,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,-83.39495086669922,2.066877841949463,-52.329959869384766,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,50.26339340209961,84.67214965820312,1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,-50.26339340209961,84.67214965820312,-1.2772167921066284,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,2.0671839714050293,52.330265045166016,83.39474487304688,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,82.60547637939453,0,53.607364654541016,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,83.39495086669922,2.066877841949463,52.329959869384766,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,50.26339340209961,-84.67214965820312,1.2772167921066284,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,2.0671839714050293,-52.330265045166016,83.39474487304688,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,50.26338577270508,-84.67214965820312,-1.2775861024856567,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-83.39495086669922,-2.066877841949463,-52.329959869384766,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,-82.60547637939453,0,-53.607364654541016,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,52.330257415771484,83.39476013183594,-2.0670700073242188,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,53.607669830322266,82.60527038574219,-.00019691196212079376,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,2.0665714740753174,52.330265045166016,-83.39476776123047,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67233276367188,-1.2774014472961426,50.26307678222656,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,-1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,84.67196655273438,1.2774014472961426,-50.26369857788086,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.33027648925781,83.39476013183594,2.066685438156128,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,52.330257415771484,-83.39476013183594,-2.0670700073242188,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,82.60507202148438,0,-53.60797119140625,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,52.33027648925781,-83.39476013183594,2.066685438156128,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,-50.26338577270508,-84.67214965820312,1.2775861024856567,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,1.2770904302597046,-50.263389587402344,-84.67215728759766,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,2.0665714740753174,-52.330265045166016,-83.39476776123047,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-.0003034261171706021,-53.607669830322266,-82.60527038574219,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,-1.2777124643325806,50.263389587402344,-84.6721420288086,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,.0003034261171706021,-53.607669830322266,82.60527038574219,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,1.2777124643325806,50.263389587402344,84.6721420288086,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219,.0003034261171706021,53.607669830322266,82.60527038574219],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.5902835130691528,.5619468092918396,.5794662833213806,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9267594814300537,.3756551742553711,-3.650784492492676e-7,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375927448272705,.3472937345504761,-.01751660369336605,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.9375886917114258,-.34730517864227295,-.01751125603914261,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.5794563889503479,-.5902886986732483,.5619516968727112,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.34728965163230896,-.01751914620399475,.9375942349433899,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.579460859298706,.5902918577194214,-.5619436502456665,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,-.017521724104881287,.9375901818275452,.34730058908462524,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,.3473122715950012,-.017512619495391846,.9375860095024109,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,-.5619495511054993,-.579465389251709,-.5902817845344543,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.5902835130691528,.5619468092918396,-.5794662833213806,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9375926852226257,.3472939133644104,.017516572028398514,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.9267594814300537,-.3756551742553711,-7398426532745361e-21,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.590289294719696,-.5619460344314575,-.5794610977172852,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.3473011553287506,.017513729631900787,-.9375900626182556,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.01752115786075592,.9375901818275452,-.3473004698753357,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,.5902906656265259,-.5619435906410217,.5794621706008911,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.01751122623682022,-.9375880360603333,-.34730690717697144,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.34731000661849976,-.01751551777124405,-.9375866651535034,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.5794625282287598,.5902847647666931,.5619492530822754,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.3756488859653473,-4090368747711182e-21,.9267621040344238,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.5619439482688904,.5794651508331299,.5902872681617737,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375901818275452,-.34730082750320435,.017511630430817604,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9375885128974915,.3473053276538849,.017515607178211212,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.9267594814300537,-.3756551742553711,7398426532745361e-21,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.590289294719696,-.5619460344314575,.5794610977172852,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.5794673562049866,-.5902878642082214,-.5619411468505859,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.56194669008255,-.5794578194618225,.5902919173240662,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-.3473033905029297,.01751108467578888,.9375893473625183,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-6303191184997559e-21,.9267597794532776,-.3756546974182129,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.5619495511054993,.5794599056243896,-.5902870297431946,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,-.590303897857666,.5619341731071472,-.5794578194618225,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,.017507383599877357,.9375904202461243,.34730064868927,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,-.017507383599877357,.9375904202461243,-.3473004698753357,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.5619532465934753,.5794590711593628,.5902844667434692,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.3756416141986847,29206275939941406e-22,.926764965057373,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.5902771949768066,.5619665384292603,.5794534683227539,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.017511233687400818,-.937588095664978,.3473067581653595,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.5619463324546814,-.579465389251709,.5902849435806274,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,.017518242821097374,-.9375925660133362,-.34729424118995667,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.5902858376502991,-.5619493722915649,-.5794615745544434,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,-.37564951181411743,28908252716064453e-22,-.9267617464065552,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.5794623494148254,.5902848839759827,-.5619493126869202,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.9267598390579224,.3756541609764099,2.980232238769531e-7,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.5619441866874695,.5794647932052612,-.5902873873710632,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375880360603333,-.347307026386261,.017507091164588928,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375901818275452,-.34730082750320435,-.017511630430817604,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.9375885128974915,.3473053276538849,-.017515607178211212,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794609785079956,.5902916789054871,.5619437098503113,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.5794563889503479,-.5902886986732483,-.5619516968727112,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.3756488859653473,-4090368747711182e-21,-.9267621040344238,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,.5794673562049866,-.5902878642082214,.5619410276412964,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,-.017518242821097374,-.9375925660133362,.34729424118995667,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.34729689359664917,-.017507314682006836,-.9375919103622437,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,.5619431734085083,-.5794587135314941,-.5902944207191467,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,16316771507263184e-22,-.9267597794532776,-.3756546974182129,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-.3473055958747864,.017509743571281433,-.9375884532928467,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,-12889504432678223e-22,-.9267591834068298,.3756559193134308,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,.3473014235496521,.01751813292503357,.9375898241996765,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915,6429851055145264e-21,.9267741441726685,.37561920285224915],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.050937071442604065,.0637897253036499,.11147573590278625,.05759662389755249,.1211576759815216,.10764795541763306,.12535500526428223,.35762202739715576,.05231131985783577,.1178632378578186,.07363925129175186,.11786329746246338,.119850754737854,.015513718128204346,.6247040033340454,.2332320213317871,.02066764421761036,.05759531259536743,.07363908737897873,.06378960609436035,.1211576759815216,.005298316478729248,.5624589920043945,.1254199743270874,.0220418032258749,.05759531259536743,.08258064091205597,.0637897253036499,.1211576759815216,.0066724419593811035,.24976900219917297,.6079350113868713,.02066793106496334,.11786329746246338,.02823532558977604,.06378841400146484,.1211576759815216,.09218895435333252,.4997659921646118,.1081160306930542,.08120644837617874,.057596445083618164,.0977153331041336,.11786329746246338,.1190430074930191,.039651691913604736,.4997679889202118,.3578059673309326,.05987865850329399,.0035230517387390137,.07501331716775894,.11786329746246338,.1190430074930191,.014401912689208984,.3747130036354065,.48311901092529297,.037176623940467834,.06378841400146484,.08877374976873398,.0637897253036499,.1211576759815216,.013714849948883057,.3754439949989319,.48308396339416504,.01310031395405531,.057595252990722656,.08258060365915298,.05759638547897339,.119850754737854,.038539886474609375,.24988000094890594,.4829980134963989,.04336973652243614,.003524184226989746,.06254100054502487,.37501800060272217,.08877380937337875,.05759662389755249,.11985072493553162,.04695647954940796,.00035799999022856355,.6079339981079102,.02823505364358425,.05759531259536743,.096341073513031,.0035229921340942383,.1190430074930191,.02281850576400757,.06744597852230072,.05759650468826294,.07363912463188171,.05759662389755249,.121157705783844,.0557977557182312,.3125090003013611,960230827331543e-19,.0055332062765955925,.11786329746246338,.10390840470790863,.0637897253036499,.11985082179307938,.09880667924880981,.5625389814376831,.25025200843811035,.0069072050973773,.06378835439682007,.05093708261847496,.0035218000411987305,.1211576759815216,.02213144302368164,.2504560053348541,.3578009605407715,.0296091977506876,.0035229921340942383,.06246799975633621,.25025999546051025,.10390840470790863,.0035241246223449707,.1211576759815216,.0823981761932373,.044743988662958145,.06378841400146484,.09014798700809479,.11786329746246338,.1211576759815216,.11606442928314209,.5002009868621826,.10809803009033203,.014474472962319851,.003522932529449463,.10528266429901123,.1178632378578186,.119850754737854,.05759662389755249,.24995200335979462,.2328779697418213,.006907171569764614,.057595252990722656,.062495000660419464,.12494999170303345,.0901479572057724,.0035241246223449707,.11904306709766388,.09150189161300659,.04474392160773277,.003524184226989746,.10528260469436646,.05759662389755249,.1190430074930191,.048068225383758545,.37474000453948975,.23276197910308838,.03580237179994583,.06378841400146484,.05093725398182869,.11786329746246338,.1211576759815216,.015089035034179688,.1876010000705719,.24980902671813965,.09771531820297241,.0637897253036499,.1128498986363411,.05759662389755249,.1211576759815216,.10902208089828491,.37527701258659363,.3578059673309326,.03580237179994583,.11786329746246338,.11147570610046387,.003524184226989746,.119850754737854,.030123412609100342,.24984599649906158,.35762202739715576,.02204183302819729,.0035229921340942383,.029609275981783867,.11786329746246338,.11904306709766388,.10833495855331421,.12527799606323242,.6079350113868713,.02066764421761036,.0035229921340942383,.05231131985783577,.0637897253036499,.11985082179307938,.1072232723236084,.5002130270004272,.2332320213317871,.029609275981783867,.06378841400146484,.08258064091205597,.11786329746246338,.1211576759815216,.09081476926803589,.1875240057706833,.5001220107078552,.028234990313649178,.11786329746246338,.096341073513031,.0637897253036499,.11985072493553162,.1094467043876648,.37527498602867126,.1081160306930542,.00029600001289509237,.4828310012817383,.08120640367269516,.11786329746246338,.08877374976873398,.0035241246223449707,.11985082179307938,.09039008617401123,.02066764421761036,.06378841400146484,.09634126722812653,.11786329746246338,.119850754737854,.04076343774795532,.43751999735832214,.00030297040939331055,.08120640367269516,.0035240650177001953,.1128498986363411,.003524184226989746,.1190430074930191,.031235098838806152,.4375219941139221,.2499929666519165,.04474368318915367,.11786329746246338,.05850442126393318,.05759662389755249,.119850754737854,.0841970443725586,.6246920228004456,.10809803009033203,.059878647327423096,.05759662389755249,.06607192009687424,.11786329746246338,.11904306709766388,.08308535814285278,.3124679923057556,.37530601024627686,.06607174873352051,.0637897253036499,.07501332461833954,.06378960609436035,.119850754737854,.00487363338470459,.25022199749946594,.48311901092529297,.05987865850329399,.11786329746246338,.0887739360332489,.11786329746246338,.119850754737854,.11563986539840698,.43768998980522156,.3752709627151489,.05850460007786751,.0035230517387390137,.09014798700809479,.0637897253036499,.11985069513320923,.013290226459503174,.5624470114707947,.00028502941131591797,.05850442126393318,.06378966569900513,.11147573590278625,.11786329746246338,.1211576759815216,.031922221183776855,.43765100836753845,.12517499923706055,.013100284151732922,.003522932529449463,.11284996569156647,.0637897253036499,.1190430074930191,.056484758853912354,.18763400614261627,.3751859664916992,.06607174873352051,.05759650468826294,.11147589981555939,.0637897253036499,.119850754737854,.05537313222885132,.3754050135612488,.23298698663711548,.005532982759177685,.0035241246223449707,.037176575511693954,.0035229921340942383,.119850754737854,.10103017091751099,.5628489851951599,.37501800060272217,.014474472962319851,.057595252990722656,.03580237179994583,.05759531259536743,.1211576759815216,.03896456956863403,.18770700693130493,.12506598234176636,.006907171569764614,.0035241246223449707,.014474536292254925,.11786329746246338,.1211576759815216,.10060548782348633,.12473999708890915,.23276197910308838,.04336966946721077,.05759531259536743,.08120658993721008,.0637897253036499,.119850754737854,.007097125053405762,.12478700280189514,.4828310012817383,.04474392160773277,.05759531259536743,.06744600087404251,.0637897253036499,.1190430074930191,.005985379219055176,.31249499320983887,.12494999170303345,.04336971789598465,.06378841400146484,.06260299682617188,.500120997428894,.09634125232696533,.05759662389755249,.1211576759815216,.11743861436843872,.06744597852230072,.003522932529449463,.09771530330181122,.05759662389755249,.11985082179307938,.11786329746246338,.37475401163101196,.10790902376174927,.02823500521481037,.0035229921340942383,.04336973652243614,.11786329746246338,.1211576759815216,.08377236127853394,.12484899908304214,.6079339981079102,.07501329481601715,.05759662389755249,.10390856862068176,.11786329746246338,.121157705783844,.05717200040817261,.624783992767334,.35806500911712646,.005532919429242611,.06378835439682007,.07501330226659775,.0035242438316345215,.1211576759815216,.02350562810897827,.5002930164337158,.35806500911712646,.07363908737897873,.0035242438316345215,.09771530330181122,.0035229921340942383,.119850754737854,.02393031120300293,.2502630054950714,.10790902376174927,.05850442126393318,.11786329746246338,.06607190519571304,.003522932529449463,.11904306709766388,.11675161123275757,.49989598989486694,.23298698663711548,.0069072050973773,.11786329746246338,.01310060080140829,.11786329746246338,.1211576759815216,.09923136234283447,.3749470114707947,.3578009605407715,.00022200000239536166,.35807204246520996,.0296091977506876,.05759531259536743,.052311308681964874,.0035218000411987305,.119850754737854,.021706759929656982,.035802435129880905,.0035229921340942383,.10528266429901123,.06378966569900513,.11904306709766388,.0999184250831604,.12546099722385406,.2328779697418213,.005532919429242611,.057595252990722656,.02204192988574505,.11786329746246338,.11985082179307938,.09261363744735718,.625095009803772,.4828310012817383,.05231131985783577,.05759531259536743,.10390844196081161,.05759662389755249,.11985072493553162,.049180030822753906,.1247130036354065,.35807204246520996,.013100284151732922,.06378841400146484,.050937261432409286,.05759531259536743,.1211576759815216,.04875540733337402,.3127020001411438,.24998903274536133,.00024900000425986946,.23276197910308838,.014474536292254925,.06378841400146484,.0901479572057724,.05759662389755249,.1211576759815216,.04738116264343262,.06744600087404251,.11786329746246338,.10528260469436646,.0035241246223449707,.11985082179307938,.0819736123085022,.2502489984035492,.23276197910308838,.022041896358132362,.06378841400146484,.037176575511693954,.05759531259536743,.1211576759815216,.040338754653930664,.500603973865509,.4828310012817383,.08258060365915298,.00352400541305542,.11284996569156647,.11786329746246338,.119850754737854,.03234678506851196,.1253889948129654,.4829980134963989,.03717633709311485,.11786329746246338,.05987846478819847,.06378966569900513,.1211576759815216,.03054797649383545,.4999360144138336,.48308396339416504],normalized:!1},color:{itemSize:4,type:"Uint16Array",array:[65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535],normalized:!0}},index:{type:"Uint16Array",array:[3,87,79,95,7,11,91,15,99,103,19,111,83,23,115,127,27,123,31,239,131,235,35,143,231,211,151,104,163,37,40,179,169,191,175,47,187,183,51,55,199,219,200,215,57,63,119,135,147,195,139,207,67,155,220,159,69,227,75,167,42,173,189,176,201,56,168,116,60,58,73,225,144,172,193,36,164,72,49,65,205,106,222,70,221,197,157,92,12,88,233,145,137,54,43,190,148,68,156,140,152,64,52,48,196,117,24,132,228,16,209,229,204,153,125,5,25,124,224,165,202,217,212,192,237,136,0,4,93,133,129,61,85,81,113,100,96,17,76,236,28,80,109,21,97,161,105,188,180,185,26,78,30,10,126,166,206,158,198,86,114,234,110,230,154,62,130,194,59,226,122,107,210,18,74,214,218,102,2,94,112,33,232,66,46,146,42,170,173,176,41,201,168,177,116,58,213,73,144,44,172,36,160,164,49,181,65,106,38,222,221,216,197,92,8,12,233,141,145,190,186,54,54,203,43,148,208,68,140,32,152,52,184,48,117,120,24,228,108,16,229,149,204,125,9,5,124,121,224,202,53,217,192,128,237,0,77,4,133,29,129,85,1,81,100,89,96,76,84,236,80,101,109,97,13,161,188,45,180,30,134,26,26,6,78,166,162,14,14,10,166,198,50,206,206,150,158,234,138,238,238,86,234,154,34,22,22,110,154,174,171,194,171,62,194,118,178,122,178,59,122,18,98,107,107,71,210,223,39,218,39,74,218,94,90,102,102,82,2,112,20,33,146,142,66,66,182,46]},boundingSphere:{center:[0,0,0],radius:146.65657531498138}},faceValues:[10,17,3,16,8,7,12,20,6,19,5,18,4,11,13,15,2,14,9,1],rotationCombinations:{"1,2":[-58,18,148],"1,3":[-21,-30,-69],"1,4":[-159,-30,69],"1,5":[-122,18,32],"1,6":[58,-54,-148],"1,7":[-58,18,-31],"1,8":[180,0,180],"1,9":[58,-54,30],"1,10":[122,54,-148],"1,11":[-122,-54,31],"1,12":[-58,54,-148],"1,13":[58,18,31],"1,14":[58,-18,148],"1,15":[148,90,-58],"1,16":[122,-18,-148],"1,17":[159,30,-110],"1,18":[21,30,110],"1,19":[158,-30,-69],"1,20":[0,0,180],"2,3":[-159,-30,68],"2,4":[-159,-30,-110],"2,5":[122,-54,148],"2,6":[-122,54,148],"2,7":[-32,-90,-122],"2,8":[-20,30,69],"2,9":[-122,54,-32],"2,10":[58,18,30],"2,11":[-180,90,90],"2,12":[21,-30,69],"2,13":[-21,30,-110],"2,14":[158,30,-110],"2,15":[21,-30,-110],"2,16":[0,90,90],"2,17":[-58,-54,148],"2,18":[-58,-54,-32],"2,19":[158,30,69],"2,20":[58,54,-30],"3,4":[0,0,180],"3,5":[-158,30,-69],"3,6":[90,0,90],"3,7":[-159,-30,-110],"3,8":[158,-30,110],"3,9":[90,0,-90],"3,10":[-58,18,-32],"3,11":[58,-54,-148],"3,12":[-90,0,-90],"3,13":[-21,-30,110],"3,14":[21,-30,-110],"3,15":[-90,0,90],"3,16":[58,-54,30],"3,17":[-180,0,180],"3,18":[180,0,0],"3,19":[58,54,-32],"3,20":[158,30,69],"4,5":[58,-18,-32],"4,6":[-58,18,148],"4,7":[158,30,69],"4,8":[-90,-90,0],"4,9":[-58,18,-32],"4,10":[58,-18,148],"4,11":[-122,-18,148],"4,12":[122,18,-32],"4,13":[0,-90,-90],"4,14":[-122,18,-148],"4,15":[122,18,148],"4,16":[-122,-18,-32],"4,17":[58,-54,-148],"4,18":[58,54,-32],"4,19":[-58,-54,148],"4,20":[-158,-30,-110],"5,6":[-122,-18,148],"5,7":[122,54,30],"5,8":[58,-54,-148],"5,9":[-122,-54,-148],"5,10":[0,0,180],"5,11":[-58,-54,-32],"5,12":[58,54,-32],"5,13":[-58,18,-32],"5,14":[180,0,-180],"5,15":[58,54,148],"5,16":[-58,-54,148],"5,17":[122,18,-32],"5,18":[-58,54,32],"5,19":[-180,0,0],"5,20":[-122,54,148],"6,7":[-159,30,110],"6,8":[-58,-54,-32],"6,9":[21,30,-69],"6,10":[122,-54,148],"6,11":[58,54,-32],"6,12":[159,-30,110],"6,13":[-122,54,148],"6,14":[-21,-30,-69],"6,15":[159,-30,-69],"6,16":[58,54,148],"6,17":[90,-90,-180],"6,18":[122,18,-32],"6,19":[-21,-30,110],"6,20":[122,54,32],"7,8":[21,-30,-110],"7,9":[159,-30,-69],"7,10":[21,30,-69],"7,11":[90,0,90],"7,12":[-58,54,32],"7,13":[122,54,32],"7,14":[58,-54,-148],"7,15":[-21,30,69],"7,16":[90,0,-90],"7,17":[58,54,-32],"7,18":[-21,-30,110],"7,19":[-159,-30,-110],"7,20":[-158,30,110],"8,9":[122,54,-148],"8,10":[58,-54,32],"8,11":[-58,54,-148],"8,12":[-122,-54,32],"8,13":[0,0,180],"8,14":[122,18,-32],"8,15":[0,-90,90],"8,16":[-58,54,32],"8,17":[-90,0,90],"8,18":[-90,0,-90],"8,19":[-122,54,148],"8,20":[180,0,0],"9,10":[-159,-30,-110],"9,11":[58,-18,-32],"9,12":[180,0,180],"9,13":[58,54,-32],"9,14":[21,30,110],"9,15":[-180,0,0],"9,16":[-58,-54,-32],"9,17":[-122,-18,-32],"9,18":[90,90,0],"9,19":[-58,-18,32],"9,20":[-58,54,-148],"10,11":[58,54,148],"10,12":[-58,-18,32],"10,13":[58,-18,148],"10,14":[90,0,-90],"10,15":[-58,-54,-32],"10,16":[120,-18,32],"10,17":[-122,-18,148],"10,18":[58,-54,-148],"10,19":[-180,0,-180],"10,20":[122,-54,-32],"11,12":[159,30,-110],"11,13":[-159,-30,69],"11,14":[21,-30,69],"11,15":[122,18,-32],"11,16":[0,0,-180],"11,17":[159,-30,-69],"11,18":[58,18,32],"11,19":[-122,-54,30],"11,20":[21,30,110],"12,13":[58,54,148],"12,14":[-122,18,32],"12,15":[0,0,-180],"12,16":[-122,54,148],"12,17":[-110,-90,159],"12,18":[58,18,-148],"12,19":[159,-30,110],"12,20":[90,0,-90],"13,14":[122,-54,148],"13,15":[58,54,-32],"13,16":[-58,-18,-148],"13,17":[-21,30,-110],"13,18":[-21,30,69],"13,19":[122,-54,-32],"13,20":[-180,0,-180],"14,15":[122,-18,-148],"14,16":[21,30,110],"14,17":[58,-18,148],"14,18":[58,-18,-32],"14,19":[0,0,-180],"14,20":[58,18,32],"15,16":[159,30,-110],"15,17":[58,-18,-32],"15,18":[-58,-18,32],"15,19":[122,-18,32],"15,20":[58,-54,-148],"16,17":[122,-54,148],"16,18":[122,-54,-32],"16,19":[122,54,-148],"16,20":[-122,54,-32],"17,18":[0,0,180],"17,19":[122,-54,148],"17,20":[21,-30,-110],"18,19":[-159,-30,69],"18,20":[158,30,-110],"19,20":[58,54,148]}},d24:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"D1B379DE-9640-4151-A394-D6DF1846E49C",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-93.4049072265625,-3.781350612640381,3.7816989421844482,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-49.7835578918457,55.42812728881836,-49.783199310302734,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-63.36488342285156,68.7131118774414,-3.781550168991089,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,-3.7813644409179688,93.4049301147461,-3.7813427448272705,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,3.7820396423339844,63.364871978759766,68.71309661865234,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,49.78358840942383,49.783382415771484,55.427940368652344,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-93.40494537353516,3.7813589572906494,-3.781012773513794,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-55.42829895019531,49.78338623046875,-49.78317642211914,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,-63.3648567199707,68.7131118774414,3.7820181846618652,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,49.7835693359375,55.42811965942383,49.783199310302734,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.364891052246094,68.7131118774414,3.781550168991089,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,63.3646240234375,3.781778573989868,-68.71334075927734,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,68.71309661865234,63.3648681640625,-3.7820355892181396,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,93.4049072265625,3.781350612640381,-3.7816996574401855,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,68.71288299560547,3.781782865524292,-63.36511993408203,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,55.42794418334961,49.783382415771484,-49.7835807800293,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,49.783203125,55.42811965942383,-49.7835578918457,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,3.7813453674316406,93.4049301147461,-3.781369686126709,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,93.40494537353516,-3.7813589572906494,3.7810134887695312,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-3.7816996574401855,3.7813563346862793,-93.40489196777344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,-49.7835807800293,49.78338623046875,-55.427940368652344,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,55.428306579589844,49.783382415771484,49.78317642211914,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-3.7813727855682373,-93.4049301147461,-3.781342029571533,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-68.71334838867188,-3.781782865524292,-63.36461639404297,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-3.7820396423339844,-63.364871978759766,-68.71309661865234,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,-49.7835807800293,-49.783382415771484,-55.427940368652344,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,63.3648567199707,-68.7131118774414,-3.7820160388946533,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.781336784362793,-93.4049301147461,-3.7813704013824463,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,3.7815499305725098,-68.7131118774414,-63.36488342285156,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,-63.3646240234375,3.781787157058716,68.71334075927734,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,3.7820351123809814,-63.364871978759766,68.71309661865234,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,63.3651237487793,-3.781787157058716,68.71287536621094,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,55.42794418334961,-49.783382415771484,-49.7835807800293,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-93.4049072265625,3.7813589572906494,3.7816996574401855,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,-55.42794418334961,49.78338623046875,49.7835807800293,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,68.71311950683594,-63.3648796081543,3.7815308570861816,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,3.781013250350952,3.7813565731048584,-93.4049301147461,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,3.781787157058716,-68.71288299560547,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,-63.3651237487793,-3.781778573989868,-68.71287536621094,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,3.7815260887145996,-63.364871978759766,-68.71311950683594,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.781545639038086,68.7131118774414,63.36488342285156,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,-3.7815303802490234,63.364871978759766,68.71312713623047,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820241451263428,68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,3.7820115089416504,-68.7131118774414,63.3648567199707,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,93.4049072265625,-3.7813589572906494,-3.7816989421844482,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,63.36486053466797,68.7131118774414,-3.7820181846618652,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,68.71312713623047,63.3648681640625,3.7815330028533936,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,3.7815349102020264,63.364871978759766,-68.71312713623047,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-3.7820308208465576,63.364871978759766,-68.71309661865234,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71309661865234,-63.3648681640625,3.7820377349853516,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-68.71312713623047,-63.3648681640625,-3.7815308570861816,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,-55.42830276489258,-49.783382415771484,-49.78317642211914,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,3.7813644409179688,-93.4049301147461,3.781342029571533,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,63.36488342285156,-68.7131118774414,3.781552314758301,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,93.40494537353516,3.781350612640381,3.781012773513794,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-3.7810142040252686,-3.781355857849121,93.4049301147461,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-63.36488723754883,-68.7131118774414,-3.781552314758301,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-3.7813453674316406,-93.4049301147461,3.7813704013824463,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-63.364864349365234,-68.7131118774414,3.7820160388946533,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,-3.7816994190216064,-3.7813565731048584,-93.40489196777344,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,63.3646240234375,-3.781787157058716,-68.71334838867188,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,3.7810134887695312,-3.7813563346862793,-93.4049301147461,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71309661865234,-63.364871978759766,-3.7820377349853516,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,68.71288299560547,-3.781787157058716,-63.36511993408203,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-93.40494537353516,-3.781350612640381,-3.7810134887695312,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,-68.71312713623047,63.364871978759766,-3.7815330028533936,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,68.71334838867188,-3.7817912101745605,63.36461639404297,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.782020092010498,-68.7131118774414,-63.3648567199707,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,-3.781336784362793,93.4049301147461,3.781369686126709,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.7813727855682373,93.4049301147461,3.7813427448272705,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.781700372695923,3.781355857849121,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,3.7816989421844482,-3.7813572883605957,93.40489196777344,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,-3.781012773513794,3.7813572883605957,93.4049301147461,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,3.7815542221069336,68.7131118774414,-63.36488342285156,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,-49.78318405151367,-49.783382415771484,55.42829895019531,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.7835807800293,-49.783382415771484,55.42793655395508,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,49.783565521240234,-55.42811965942383,49.78319549560547,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,55.42829895019531,-49.783382415771484,49.783172607421875,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.7835578918457,-55.42811965942383,-49.783199310302734,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,-49.783199310302734,-55.42811965942383,49.7835578918457,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,49.78318405151367,-49.783382415771484,-55.42829895019531,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,-55.42794418334961,-49.783382415771484,49.7835807800293,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,49.78318405151367,49.783382415771484,-55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.78318405151367,49.78338623046875,55.42829895019531,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-49.783199310302734,55.42812728881836,49.7835578918457,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-63.3646240234375,-3.781782865524292,68.71334838867188,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-68.71288299560547,-3.781778573989868,63.36511993408203,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815349102020264,-63.364871978759766,68.71311950683594,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.7815582752227783,-68.7131118774414,63.36488342285156,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-3.782015800476074,68.7131118774414,-63.3648567199707,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,-68.71334838867188,3.781787157058716,-63.36461639404297,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,63.3651237487793,3.781782865524292,68.71288299560547,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,68.71334838867188,3.781778573989868,63.36461639404297,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71309661865234,63.3648796081543,3.7820355892181396,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,-68.71288299560547,3.7817912101745605,63.36511993408203,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457,49.783203125,-55.42811965942383,-49.7835578918457],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.8930176496505737,-.31821155548095703,.31821513175964355,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.3939540982246399,.8304173350334167,-.3939635753631592,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.39820414781570435,.8611265420913696,-.31606101989746094,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,-.3181779980659485,.8930322527885437,-.3182079792022705,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.3160579800605774,.3982042074203491,.8611275553703308,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,.39394938945770264,.39396142959594727,.8304205536842346,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8930201530456543,.3182116746902466,-.31820809841156006,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.8304393887519836,.3939298987388611,-.39394134283065796,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,-.39819657802581787,.8611276745796204,.31606724858283997,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.3939548134803772,.8304223418235779,.3939521610736847,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.398190438747406,.8611446022987366,.31602901220321655,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.39820146560668945,.3160552680492401,-.8611298203468323,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8611258268356323,.39821386337280273,-.31605064868927,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8930308818817139,.3181929588317871,-.318196564912796,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8611277937889099,.3160572052001953,-.39820432662963867,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.8304156064987183,.3939667344093323,-.3939545154571533,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.39395228028297424,.8304221630096436,-.3939549922943115,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.31819266080856323,.893029510974884,-.31820082664489746,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,.8930361866950989,-.3181893527507782,.3181857466697693,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3182153105735779,.31821152567863464,-.8930174708366394,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,-.3939494788646698,.39396119117736816,-.8304205536842346,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,.8304232358932495,.3939468264579773,.3939582109451294,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.3181976079940796,-.8930297493934631,-.3181954622268677,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.8611258268356323,-.3160642981529236,-.3982030749320984,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.31608039140701294,-.3982047438621521,-.8611190915107727,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,-.3939639627933502,-.3939467966556549,-.8304204940795898,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.39820337295532227,-.8611286282539368,-.31605619192123413,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3181878924369812,-.8930350542068481,-.31819045543670654,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,.3160671591758728,-.8611257672309875,-.39820101857185364,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,-.3982013761997223,.3160552680492401,.861129879951477,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.31605467200279236,-.39822202920913696,.8611205220222473,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.39822128415107727,-.3160440921783447,.8611248135566711,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,.830415666103363,-.3939518928527832,-.39396917819976807,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8930335640907288,.31818917393684387,.3181927800178528,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,-.8304204344749451,.3939615488052368,.39394932985305786,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.8611295819282532,-.39820489287376404,.3160513937473297,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,.31818902492523193,.3181936740875244,-.8930333852767944,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982042670249939,.3160568177700043,-.861128032207489,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,-.3982074558734894,-.31605467200279236,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,.31604087352752686,-.3982185125350952,-.8611272573471069,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31601834297180176,.8611423373222351,.39820387959480286,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,-.31606096029281616,.39820629358291626,.8611255288124084,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31606805324554443,.8611271977424622,.39819690585136414,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.31605327129364014,-.8611239194869995,.3982159495353699,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.8930177092552185,-.31821155548095703,-.31821513175964355,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.39822056889533997,.8611229658126831,-.3160500228404999,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.8611273765563965,.3982042968273163,.3160584568977356,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,.31604790687561035,.3982231020927429,-.8611226081848145,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.3160579800605774,.39820435643196106,-.8611276149749756,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611293435096741,-.3981947600841522,.31606513261795044,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8611273169517517,-.3982181251049042,-.31604093313217163,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,-.8304233551025391,-.3939613699913025,-.39394333958625793,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.31822317838668823,-.8930189609527588,.31819969415664673,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.398205429315567,-.861126184463501,.3160603642463684,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,.8930307030677795,.31819677352905273,.31819313764572144,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.31818729639053345,-.31819117069244385,.8930348753929138,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.39820730686187744,-.8611242771148682,-.31606295704841614,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.3181917071342468,-.8930321931838989,.31819429993629456,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.39820390939712524,-.8611285090446472,.31605613231658936,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,-.3181929588317871,-.3181893825531006,-.8930334448814392,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.398214727640152,-.3160427510738373,-.8611282706260681,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.31819266080856323,-.31819653511047363,-.8930309414863586,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611248731613159,-.39820438623428345,-.31606507301330566,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,.8611255884170532,-.3160474896430969,-.39821693301200867,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8930345773696899,-.3181912899017334,-.31818774342536926,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,-.8611279726028442,.3982178866863251,-.3160398602485657,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,.8611286878585815,-.3160666823387146,.39819496870040894,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.31604599952697754,-.8611259460449219,-.3982173800468445,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,-.3182077705860138,.8930187225341797,.31821584701538086,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.31819307804107666,.8930350542068481,.3181852102279663,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3181931972503662,.3181889057159424,.893033504486084,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,.3182152509689331,-.3182116150856018,.893017590045929,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,-.3182075023651123,.31821173429489136,.8930203914642334,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,.3160323202610016,.8611453771591187,-.39818620681762695,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,-.39394327998161316,-.39396142959594727,.8304233551025391,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.39394742250442505,-.3939295709133148,.8304365277290344,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.393976092338562,-.8304168581962585,.39394256472587585,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,.8304234743118286,-.39396101236343384,.3939433991909027,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939476013183594,-.8304222822189331,-.3939594626426697,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,-.3939593434333801,-.8304222822189331,.3939477205276489,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,.393926739692688,-.3939448595046997,-.8304391503334045,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,-.8304203152656555,-.39394691586494446,.39396411180496216,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,.3939414918422699,.393930047750473,-.8304392099380493,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.3939580023288727,.39394649863243103,.8304234743118286,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39395201206207275,.8304221630096436,.39395517110824585,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.39820295572280884,-.3160640299320221,.8611259460449219,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.8611248135566711,-.3160442113876343,.39822128415107727,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.31604111194610596,-.3982183337211609,.8611273169517517,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.3160600960254669,-.8611261248588562,.39820581674575806,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.31606826186180115,.8611270189285278,-.39819711446762085,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,-.8611301183700562,.3160545825958252,-.3982013463973999,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.3982081413269043,.31607723236083984,.8611186742782593,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,.8611276745796204,.3160439729690552,.3982152044773102,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611273765563965,.39820489287376404,.3160577416419983,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,-.8611289858818054,.3160620927810669,.3981979489326477,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176,.3939596116542816,-.8304221630096436,-.39394763112068176],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.04120219498872757,.12086033821105957,.05345028638839722,.08731907606124878,.11187556385993958,.0670785903930664,.6875278949737549,.13345998525619507,.04903397709131241,.004412055015563965,.0771341323852539,.03593343496322632,.11686006188392639,.03130292892456055,.31248292326927185,.10850334167480469,.0489392951130867,.02688688039779663,.06469712406396866,.01563972234725952,.0803603008389473,.0917351245880127,.3686402440071106,.07315778732299805,.08036012947559357,.12086033821105957,.09260810911655426,.08731895685195923,.10864977538585663,.015640199184417725,.31252771615982056,.008440375328063965,.07252871245145798,.0917351245880127,.08828651905059814,.02688688039779663,.10081818699836731,.02688688039779663,.4936917722225189,.19815367460250854,.08025602996349335,.04575681686401367,.08838120102882385,.004412055015563965,.1084604263305664,.0983855128288269,.4374849796295166,.23353207111358643,.037787072360515594,.08731907606124878,.049033790826797485,.08731907606124878,.1084604263305664,.06366342306137085,.18752798438072205,.38353127241134644,.04542912542819977,.004412055015563965,.08025602996349335,.034130990505218506,.1040443629026413,.06484419107437134,.18748320639133453,.4834633469581604,.006349444389343262,.5731359720230103,.006555216386914253,.02688688039779663,.06469712406396866,.01905524730682373,.07694480568170547,.0917351245880127,.030523335561156273,.02688688039779663,.0771341323852539,.043954312801361084,.08477634936571121,.004412055015563965,.4374811053276062,.35838615894317627,.014292115345597267,.12086033821105957,.03061802126467228,.004412055015563965,.0964021235704422,.015639781951904297,.4934193789958954,.32318025827407837,.053450047969818115,.01905524730682373,.06469716131687164,.0917351245880127,.09630745649337769,.05377775430679321,.49373188614845276,.44814980030059814,.009876048192381859,.0917351245880127,.09298662841320038,.01905524730682373,.11999154090881348,.09396946430206299,.6183853149414062,.3231801986694336,.00987587682902813,.12086033821105957,.029955485835671425,.12086033821105957,.06469673663377762,.007808566093444824,.562527596950531,.2587568163871765,.0299553032964468,.0917351245880127,.05686555057764053,.01905524730682373,.09289196133613586,.05377775430679321,.5065897703170776,.32315701246261597,.056571945548057556,.0421520471572876,.09279727190732956,.03130292892456055,.1200861781835556,.07149463891983032,.5624833106994629,.35836511850357056,.018086323514580727,.004412055015563965,.056571945548057556,.04575687646865845,.11648134887218475,.07149463891983032,.18748287856578827,.3584839701652527,.017707442864775658,.09173506498336792,.09602326154708862,.08731895685195923,.1120648980140686,.015640199184417725,.1875280737876892,.2584848999977112,.05345025658607483,.12086033821105957,.06128161400556564,.011223673820495605,.07252849638462067,.08731907606124878,.3125280439853668,.13357031345367432,.03337060660123825,.08731913566589355,.0769449844956398,.087319016456604,.10864977538585663,.0078089237213134766,.5625283718109131,.133742094039917,.08025602996349335,.03773587942123413,.10043948143720627,.06484419107437134,.12046489119529724,.03130292892456055,.5624833703041077,.23337173461914062,.03412818908691406,.02688688039779663,.08025602996349335,.04215192794799805,.11206528544425964,.0983855128288269,.18748319149017334,.23347699642181396,.006460724398493767,.087319016456604,.017707442864775658,.087319016456604,.06252795457839966,.25844651460647583,.1120649129152298,.023471713066101074,.014576157554984093,.05377775430679321,.04561847448348999,.058193862438201904,.1008182168006897,.01563972234725952,.25627732276916504,.44812923669815063,.006148636341094971,.4481179118156433,.05686555057764053,.026886820793151855,.08819183707237244,.12086033821105957,.10893382132053375,.05377775430679321,.018086323514580727,.03130292892456055,.056571945548057556,.05017292499542236,.06248307228088379,.48360395431518555,.10883913934230804,.03130292892456055,.025539224967360497,.05819380283355713,.07252870500087738,.01563972234725952,.1039496660232544,.12086033821105957,.49378809332847595,.07314485311508179,.014292331412434578,.087319016456604,.025539005175232887,.087319016456604,.10864977538585663,.023471713066101074,.4375278651714325,.008257150650024414,.009970692917704582,.03130298852920532,.014292115345597267,.05819380283355713,.053450047969818115,.023471355438232422,.3811866044998169,.07312166690826416,.0490339919924736,.0917351245880127,.0803602933883667,.01563972234725952,.10432836413383484,.05377775430679321,.6185856461524963,.44816309213638306,.02601257897913456,.03130292892456055,.061281636357307434,.05819380283355713,.06469713896512985,.02688688039779663,.6315924525260925,.32315754890441895,.03061799891293049,.03130292892456055,.06911320239305496,.023471355438232422,.09602341055870056,.09173518419265747,.7433825731277466,.32318103313446045,.08477634936571121,.05377775430679321,.10043948143720627,.0983855128288269,.11629162728786469,.0652761459350586,.687483012676239,.4834805130958557,.037787072360515594,.12086033821105957,.041202202439308167,.08731907606124878,.11187553405761719,.06366342306137085,.5625277757644653,.00847846269607544,.010065404698252678,.004412055015563965,.05345005542039871,.035933494567871094,.1008182168006897,.03130298852920532,.5624833703041077,.10848653316497803,.02601257897913456,.02688688039779663,.06911320239305496,.01905524730682373,.07252870500087738,.05819380283355713,.3685356378555298,.19816696643829346,.029955485835671425,.08731913566589355,.06469696015119553,.12086033821105957,.10864977538585663,.011224091053009033,.43752849102020264,.38332629203796387,.07694479078054428,.05819380283355713,.10053417086601257,.08731895685195923,.10423369705677032,.01905524730682373,.5065778493881226,.19815611839294434,.017991656437516212,.05377775430679321,.0803602933883667,.05819380283355713,.10423369705677032,.01563972234725952,.1188262403011322,.4481416940689087,.0065551940351724625,.03130298852920532,.05686555057764053,.023471355438232422,.084776371717453,.12086033821105957,.7436801791191101,.07315462827682495,.025539247319102287,.09173518419265747,.06460244953632355,.05377769470214844,.10423369705677032,.023471355438232422,.11862531304359436,.5731591582298279,.06118693947792053,.05377769470214844,.06911322474479675,.0917351245880127,.10081818699836731,.023471355438232422,.5063889026641846,.4481391906738281,.022123711183667183,.09173518419265747,.08487099409103394,.02688688039779663,.10423369705677032,.02688688039779663,.38155296444892883,.3231542706489563,.02259708009660244,.03130292892456055,.06128162145614624,.02688688039779663,.08819186687469482,.05819392204284668,.24363532662391663,.5731584429740906,.03337061405181885,.12086033821105957,.06469673663377762,.011223673820495605,.0691133663058281,.08731907606124878,.687528133392334,.3834933042526245,.017707636579871178,.12086033821105957,.0964021235704422,.01905524730682373,.11657601594924927,.09396946430206299,.1313704252243042,.32313746213912964,.006460549309849739,.0917351245880127,.03403352200984955,.004412055015563965,.09298662841320038,.015639781951904297,.13138353824615479,.1981390118598938,.014576157554984093,.02688688039779663,.0299553032964468,.05819392204284668,.0803602784872055,.026886820793151855,.38124242424964905,.4481261968612671,.033370792865753174,.05819392204284668,.0803602784872055,.023471355438232422,.12037022411823273,.05377775430679321,.6183971166610718,.19817936420440674,.05345005542039871,.058193862438201904,.0964021235704422,.02688688039779663,.11999151110649109,.0983855128288269,.6313499808311462,.1981356143951416,.056865572929382324,.058193862438201904,.06920789182186127,.03130286931991577,.0964021235704422,.023471355438232422,.3686973452568054,.4481528401374817,.014481494203209877,.03130292892456055,.056571945548057556,.05377781391143799,.06911319494247437,.05377769470214844,.3124830424785614,.48353415727615356,.022123875096440315,.087319016456604,.08819165080785751,.08731907606124878,.10864977538585663,.02688688039779663,.18752774596214294,.5084468126296997,.022123703733086586,.05819380283355713,.02259708009660244,.02688688039779663,.07252870500087738,.01905524730682373,.1313396394252777,.5731350779533386,.00646076537668705,.12086033821105957,.05686537176370621,.12086033821105957,.06128161400556564,.007808566093444824,.18752765655517578,.1335013508796692,.04561866074800491,.12086033821105957,.053450047969818115,.007808566093444824,.06252825260162354,.1334705352783203,.06469693779945374,.08731907606124878,.006339132785797119,.3231348991394043,.006460549309849739,.05819380283355713,.07262339442968369,.03130286931991577,.09298662841320038,.023471355438232422,.009875854477286339,.087319016456604,.08477649837732315,.08731907606124878,.1120649129152298,.02688688039779663,.31252795457839966,.25839555263519287,.009876048192381859,.05819380283355713,.09298662841320038,.02688688039779663,.11657601594924927,.0983855128288269,.36867624521255493,.3231545090675354,.06252825260162354,.383209228515625,.08036010712385178,.087319016456604,.0881916955113411,.09173506498336792,.1120649129152298,.0078089237213134766,.053450047969818115,.01563972234725952,.06128164380788803,.0917351245880127,.08828655630350113,.03130298852920532,.6312947273254395,.073131263256073,.061281830072402954,.12086033821105957,.08477656543254852,.09173506498336792,.1120649129152298,.011224091053009033,.6875279545783997,.008391082286834717,.06911320239305496,.01563972234725952,.06911322474479675,.05819380283355713,.10053417086601257,.12086033821105957,.631377100944519,.44813835620880127,.033370815217494965,.0917351245880127,.05686555057764053,.01563972234725952,.08487105369567871,.03130298852920532,.7435976266860962,.44816213846206665,.04561866074800491,.08731907606124878,.05686540901660919,.08731907606124878,.1084604263305664,.0670785903930664,.3125280737876892,.3833693861961365,.037786878645420074,.05819380283355713,.04552379250526428,.02688688039779663,.06128161400556564,.01563972234725952,.13140809535980225,.4481407403945923,.03403349965810776,.03130292892456055,.05345005542039871,.0917351245880127,.06911320239305496,.026886820793151855,.2564394772052765,.19814354181289673,.017707636579871178,.05819380283355713,.053450047969818115,.026886820793151855,.11234933137893677,.05377775430679321,.11863547563552856,.32315850257873535,.025539016351103783,.12086033821105957,.0625276267528534,.5084590315818787,.07694500684738159,.12086033821105957,.10864977538585663,.01905524730682373,.014292312785983086,.09173506498336792,.022123919799923897,.12086033821105957,.1120648980140686,.01905524730682373,.43752825260162354,.2587151527404785,.05686517059803009,.011223673820495605,.07252854108810425,.12086033821105957,.09260810166597366,.12086033821105957,.4375276267528534,.13337987661361694,.053450047969818115,.011223673820495605,.06128180772066116,.08731907606124878,.09602323174476624,.12086033821105957,.687527596950531,.2587602138519287,.049033790826797485,.12086033821105957,.05686517059803009,.007808566093444824,.06911341845989227,.12086033821105957,.5625280141830444,.38350802659988403,.017991656437516212,.02688688039779663,.07694479078054428,.02688688039779663,.09602341055870056,.05819380283355713,.24360424280166626,.3231614828109741,.045429132878780365,.03130298852920532,.06248307228088379,.2334902286529541,.11206528544425964,.07149463891983032,.11960287392139435,.023281991481781006,.026107268407940865,.05377775430679321,.030523335561156273,.05377775430679321,.08025602996349335,.05377769470214844,.6874831914901733,.3583640456199646,.022502413019537926,.004412055015563965,.022502413019537926,.05377775430679321,.08025602996349335,.05017286539077759,.18748320639133453,.6085007190704346,.026107246056199074,.004412055015563965,.03412819653749466,.05377775430679321,.0771341323852539,.0519753098487854,.3124833106994629,.2334464192390442,.05345005542039871,.051975369453430176,.062483012676239014,.3585008978843689,.0727180615067482,.05377769470214844,.11244398355484009,.03130292892456055,.1084604263305664,.07149463891983032,.11648134887218475,.12086033821105957,.11960287392139435,.02688688039779663,.31248316168785095,.35852259397506714,.006460549309849739,.05377775430679321,.08838121592998505,.05377775430679321,.11941350996494293,.06347370147705078,.6874832510948181,.10852515697479248,.0490339919924736,.03130298852920532,.11648097634315491,.02508443593978882,.1200861781835556,.12086033821105957,.6874829530715942,.23349487781524658,.014481494203209877,.004412055015563965,.05345005542039871,.043954432010650635,.0964021235704422,.03130292892456055,.43748292326927185,.4835529923439026,.05657196044921875,.037735939025878906,.061092279851436615,.03130286931991577,.10442306846380234,.03130298852920532,.5624828934669495,.4834739565849304,.006460549309849739,.004412055015563965,.056571945548057556,.03413110971450806,.06248317286372185,.6084953546524048,.06469713896512985,.03130286931991577,.006358683109283447,.198136568069458,.04552381485700607,.05377781391143799,.04561847448348999,.0917351245880127,.0803602933883667,.01905524730682373,.04120240360498428,.0917351245880127,.04893931746482849,.05377781391143799,.07694479078054428,.01905524730682373,.7436245679855347,.1981593370437622,.06469712406396866,.023471355438232422,.06469712406396866,.05819380283355713,.11197057366371155,.09396946430206299,.11861595511436462,.1981601119041443,.06128162145614624,.023471355438232422,.084776371717453,.05819392204284668,.10855509340763092,.09396940469741821,.25629860162734985,.32313108444213867,.07694478332996368,.023471355438232422,.09260791540145874,.05819380283355713,.1169547289609909,.05377775430679321,.256334125995636,.07313430309295654,.049033984541893005,.058193862438201904,.1008182168006897,.01905524730682373,.1039496511220932,.08731895685195923,.2435668408870697,.448164165019989,.07252871245145798,.023471355438232422,.09260791540145874,.09173518419265747,.10855511575937271,.12086033821105957,.38128527998924255,.19813251495361328,.056865572929382324,.0917351245880127,.07252871245145798,.026886820793151855,.11197061836719513,.12086033821105957,.2435913383960724,.19816231727600098,.009970737621188164,.02688688039779663,.04120238125324249,.05819380283355713,.06128162145614624,.01905524730682373,.6186096668243408,.07316023111343384,.037786878645420074,.0917351245880127,.07694479078054428,.01563972234725952,.10091288387775421,.05377775430679321,.5063652992248535,.07313716411590576,.010065404698252678,.05377775430679321,.10404433310031891,.0983855128288269,.11941350996494293,.0670785903930664,.4374832212924957,.10858356952667236],normalized:!1}},index:{type:"Uint16Array",array:[283,23,19,231,319,235,27,31,363,338,273,32,39,279,171,147,331,47,55,63,51,67,71,183,75,311,143,79,83,195,222,297,351,219,87,371,90,313,271,259,207,203,236,102,155,111,383,107,291,335,119,247,323,159,287,303,127,179,131,255,135,139,375,3,327,347,308,213,140,91,210,230,70,275,278,348,173,122,269,157,114,36,185,41,193,293,190,108,268,113,28,8,4,294,13,69,18,162,166,9,374,34,82,358,194,26,2,134,361,154,94,233,202,227,277,160,168,117,346,343,99,315,103,260,133,373,246,78,146,212,109,104,276,180,68,301,264,124,369,125,266,284,289,221,177,218,73,381,250,106,172,300,120,33,136,336,322,130,382,112,320,380,298,354,350,238,158,98,285,349,121,249,74,142,228,225,88,176,56,53,132,344,376,189,76,192,274,10,35,368,72,217,237,148,77,1,200,196,342,288,116,165,281,16,184,52,48,241,145,45,25,93,256,126,282,286,339,164,161,42,49,181,92,100,204,341,324,296,378,334,138,312,205,101,149,30,81,337,137,332,105,141,214,226,206,314,5,80,29,60,329,65,44,253,240,66,50,62,299,325,318,328,292,64,37,20,85,366,86,22,58,330,61,254,321,242,211,307,175,15,7,11,310,302,306,198,317,326,353,209,174,21,169,17,283,367,23,231,355,319,27,263,31,338,163,273,39,43,279,147,191,331,55,59,63,67,295,71,75,267,311,79,151,83,222,340,297,219,187,87,90,224,313,259,95,207,236,96,102,111,115,383,291,167,335,247,243,323,287,123,303,179,251,131,135,379,139,3,199,327,308,304,213,91,110,210,70,14,275,348,352,173,269,97,157,36,84,185,193,356,293,108,89,268,28,261,8,294,357,13,18,170,162,9,262,374,82,6,358,26,258,2,361,150,154,233,197,202,277,272,160,117,377,346,99,270,315,260,24,133,246,239,78,212,208,109,276,40,180,301,309,264,369,364,125,284,280,289,177,54,218,381,129,250,172,305,300,33,372,136,112,156,320,298,316,354,238,245,158,285,223,349,249,178,74,228,232,225,176,252,56,132,0,344,189,144,76,274,12,10,368,265,72,237,153,148,1,257,200,342,220,288,165,290,281,184,216,52,241,244,145,25,360,93,126,365,282,339,333,164,42,186,49,92,152,100,341,345,324,378,118,334,149,362,30,105,248,141,226,201,206,44,57,253,66,182,50,328,188,292,366,370,86,58,46,330,254,128,321,211,215,307,15,359,7,198,234,317,353,229,209,21,38,169]},boundingSphere:{center:[0,0,0],radius:161.78209344582697}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24],rotationCombinations:{"1,2":[0,0,180],"1,3":[-180,0,90],"1,4":[90,0,-90],"1,5":[-90,0,-90],"1,6":[-130,-90,-40],"1,7":[0,-180,90],"1,8":[-90,0,90],"1,9":[90,0,90],"1,10":[50,-90,-40],"1,11":[0,90,-180],"1,12":[0,90,0],"1,13":[180,0,0],"1,14":[0,180,0],"1,15":[0,0,90],"1,16":[90,180,0],"1,17":[90,0,0],"1,18":[-130,90,40],"1,19":[0,0,-90],"1,20":[90,0,-180],"1,21":[-90,0,0],"1,22":[50,90,40],"1,23":[0,-90,0],"1,24":[0,-90,-180],"2,3":[0,180,90],"2,4":[-90,0,90],"2,5":[90,0,90],"2,6":[-50,90,-40],"2,7":[180,0,90],"2,8":[90,0,-90],"2,9":[-90,0,-90],"2,10":[130,90,-40],"2,11":[0,-90,0],"2,12":[0,-90,180],"2,13":[0,-180,0],"2,14":[-180,0,0],"2,15":[0,0,-90],"2,16":[90,0,0],"2,17":[-90,0,-180],"2,18":[-50,-90,40],"2,19":[0,0,90],"2,20":[-90,0,0],"2,21":[-90,-180,0],"2,22":[130,-90,40],"2,23":[0,90,-180],"2,24":[0,90,0],"3,4":[0,90,-180],"3,5":[0,-90,180],"3,6":[-90,0,-180],"3,7":[0,0,180],"3,8":[0,-90,0],"3,9":[0,90,0],"3,10":[-90,0,0],"3,11":[90,0,-90],"3,12":[90,0,90],"3,13":[0,0,-90],"3,14":[0,0,90],"3,15":[0,180,0],"3,16":[45,-90,135],"3,17":[-135,90,45],"3,18":[90,0,0],"3,19":[-180,0,0],"3,20":[45,90,45],"3,21":[45,-90,-45],"3,22":[-90,180,0],"3,23":[-90,0,90],"3,24":[-90,0,-90],"4,5":[0,180,0],"4,6":[90,0,-90],"4,7":[0,90,0],"4,8":[180,0,0],"4,9":[0,0,-180],"4,10":[90,0,90],"4,11":[-90,0,180],"4,12":[-90,0,0],"4,13":[-40,90,130],"4,14":[-40,90,-50],"4,15":[0,-90,-180],"4,16":[-180,0,90],"4,17":[0,0,90],"4,18":[-90,0,-90],"4,19":[0,-90,0],"4,20":[0,0,-90],"4,21":[0,180,90],"4,22":[-90,0,90],"4,23":[-90,180,0],"4,24":[90,0,0],"5,6":[90,0,90],"5,7":[0,-90,0],"5,8":[0,0,180],"5,9":[180,0,0],"5,10":[90,0,-90],"5,11":[-90,0,0],"5,12":[90,180,0],"5,13":[40,-90,130],"5,14":[40,-90,-50],"5,15":[0,90,180],"5,16":[0,0,-90],"5,17":[180,0,-90],"5,18":[-90,0,90],"5,19":[0,90,0],"5,20":[0,180,-90],"5,21":[0,0,90],"5,22":[-90,0,-90],"5,23":[90,0,0],"5,24":[90,0,-180],"6,7":[-90,0,0],"6,8":[45,90,45],"6,9":[45,-90,-45],"6,10":[0,0,-180],"6,11":[0,180,-90],"6,12":[-180,0,-90],"6,13":[-90,0,90],"6,14":[-90,0,-90],"6,15":[90,0,0],"6,16":[0,90,-180],"6,17":[0,-90,-180],"6,18":[0,-180,0],"6,19":[-90,-180,0],"6,20":[0,-90,0],"6,21":[0,90,0],"6,22":[-180,0,0],"6,23":[0,0,-90],"6,24":[0,0,90],"7,8":[0,90,180],"7,9":[0,-90,-180],"7,10":[90,0,-180],"7,11":[-90,0,90],"7,12":[-90,0,-90],"7,13":[0,0,90],"7,14":[0,0,-90],"7,15":[180,0,0],"7,16":[-45,90,-45],"7,17":[-45,-90,45],"7,18":[90,-180,0],"7,19":[0,180,0],"7,20":[135,-90,45],"7,21":[135,90,-45],"7,22":[-90,0,0],"7,23":[90,0,-90],"7,24":[90,0,90],"8,9":[0,-180,0],"8,10":[-90,0,90],"8,11":[-90,-180,0],"8,12":[90,0,0],"8,13":[-40,90,-50],"8,14":[-40,90,130],"8,15":[0,-90,0],"8,16":[0,0,90],"8,17":[0,-180,-90],"8,18":[90,0,-90],"8,19":[0,-90,-180],"8,20":[-180,0,-90],"8,21":[0,0,-90],"8,22":[90,0,90],"8,23":[-90,0,-180],"8,24":[-90,0,0],"9,10":[-90,0,-90],"9,11":[90,0,0],"9,12":[90,0,180],"9,13":[40,-90,-50],"9,14":[40,-90,130],"9,15":[0,90,0],"9,16":[0,-180,90],"9,17":[0,0,-90],"9,18":[90,0,90],"9,19":[0,90,-180],"9,20":[0,0,90],"9,21":[180,0,90],"9,22":[90,0,-90],"9,23":[-90,0,0],"9,24":[90,-180,0],"10,11":[180,0,-90],"10,12":[0,-180,-90],"10,13":[90,0,-90],"10,14":[90,0,90],"10,15":[90,180,0],"10,16":[0,-90,0],"10,17":[0,90,0],"10,18":[180,0,0],"10,19":[-90,0,0],"10,20":[0,90,180],"10,21":[0,-90,-180],"10,22":[0,180,0],"10,23":[0,0,90],"10,24":[0,0,-90],"11,12":[0,0,180],"11,13":[0,-90,0],"11,14":[0,-90,180],"11,15":[-50,90,-40],"11,16":[90,0,-90],"11,17":[-90,0,-90],"11,18":[0,0,90],"11,19":[130,90,-40],"11,20":[-90,0,90],"11,21":[90,0,90],"11,22":[0,0,-90],"11,23":[-180,0,0],"11,24":[0,-180,0],"12,13":[0,90,-180],"12,14":[0,90,0],"12,15":[-130,-90,-40],"12,16":[-90,0,90],"12,17":[90,0,90],"12,18":[0,0,-90],"12,19":[50,-90,-40],"12,20":[90,0,-90],"12,21":[-90,0,-90],"12,22":[0,0,90],"12,23":[0,-180,0],"12,24":[-180,0,0],"13,14":[0,0,180],"13,15":[0,180,-90],"13,16":[90,0,180],"13,17":[-90,0,0],"13,18":[50,90,40],"13,19":[-180,0,-90],"13,20":[90,-180,0],"13,21":[90,0,0],"13,22":[-130,90,40],"13,23":[0,-90,180],"13,24":[0,-90,0],"14,15":[180,0,-90],"14,16":[-90,0,0],"14,17":[-90,180,0],"14,18":[130,-90,40],"14,19":[0,-180,-90],"14,20":[90,0,0],"14,21":[-90,0,180],"14,22":[-50,-90,40],"14,23":[0,90,0],"14,24":[0,90,-180],"15,16":[-45,90,135],"15,17":[-45,-90,-135],"15,18":[90,0,180],"15,19":[0,0,180],"15,20":[-45,-90,45],"15,21":[-45,90,-45],"15,22":[90,0,0],"15,23":[-90,0,-90],"15,24":[-90,0,90],"16,17":[0,180,0],"16,18":[0,-90,-180],"16,19":[-90,0,90],"16,20":[180,0,0],"16,21":[0,0,180],"16,22":[0,-90,0],"16,23":[40,90,50],"16,24":[40,90,-130],"17,18":[0,90,-180],"17,19":[-90,0,-90],"17,20":[0,0,180],"17,21":[180,0,0],"17,22":[0,90,0],"17,23":[-40,-90,50],"17,24":[-40,-90,-130],"18,19":[90,0,0],"18,20":[0,90,0],"18,21":[0,-90,0],"18,22":[0,0,180],"18,23":[180,0,90],"18,24":[0,180,90],"19,20":[-135,90,45],"19,21":[-135,-90,-45],"19,22":[-90,0,180],"19,23":[90,0,90],"19,24":[90,0,-90],"20,21":[0,180,0],"20,22":[0,-90,180],"20,23":[40,90,-130],"20,24":[40,90,50],"21,22":[0,90,180],"21,23":[-40,-90,-130],"21,24":[-40,-90,50],"22,23":[0,-180,90],"22,24":[-180,0,90],"23,24":[0,0,-180]}},d30:{metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"},uuid:"6D1EB50D-67F2-45C7-BF93-23245B31E912",type:"BufferGeometry",data:{attributes:{position:{itemSize:3,type:"Float32Array",array:[-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.942420959472656,58.09579086303711,-56.76457214355469,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,-55.54539108276367,91.2035140991211,-2.153374433517456,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,58.09599685668945,56.76477813720703,55.94200897216797,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,-2.1539175510406494,-55.545379638671875,-91.20350646972656,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,35.903011322021484,1.3310145139694214,-91.8457260131836,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,33.74937438964844,-5.019184072807548e-7,-92.66828918457031,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,35.903690338134766,1.331014633178711,91.84544372558594,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,56.76499557495117,55.94220733642578,58.0955924987793,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,-1.3306841850280762,-57.6989631652832,89.87248229980469,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,92.66816711425781,33.749717712402344,-.00033652668935246766,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,.0001248687185579911,92.66816711425781,33.74972152709961,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-91.8455810546875,-35.903350830078125,1.3313559293746948,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-56.76499557495117,55.94220733642578,-58.095577239990234,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-92.66815185546875,-33.749717712402344,.000344159547239542,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.84559631347656,-35.903350830078125,-1.3306736946105957,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,-91.2037124633789,-2.1535837650299072,-55.54503631591797,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,1.3308831453323364,91.84559631347656,-35.90335464477539,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,55.545372009277344,91.2035140991211,-2.1537835597991943,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-91.84558868408203,35.903350830078125,1.331355094909668,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-58.09558868408203,56.76477813720703,55.94243240356445,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-57.698951721191406,89.87249755859375,1.3312309980392456,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.54539108276367,-91.20350646972656,-2.1533758640289307,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.545372009277344,91.2035140991211,2.1537914276123047,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,-55.9420051574707,58.09578323364258,56.764991760253906,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,1.3308836221694946,-91.84559631347656,-35.90335464477539,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,-2.153582811355591,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.20330047607422,2.1535825729370117,55.54571533203125,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,-91.8456039428711,35.903350830078125,-1.3306739330291748,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,33.750057220458984,-3.255321701089997e-7,92.66802978515625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,89.87269592285156,-1.3310151100158691,57.698638916015625,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,91.2037124633789,2.153581380844116,55.545047760009766,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,1.3310145139694214,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-35.903011322021484,-1.33101487159729,91.84571075439453,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,-33.74938201904297,-5.100424687043414e-7,92.66827392578125,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,1.0764577388763428,55.84297561645508,-91.01956939697266,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,-.00033518741838634014,55.17742919921875,-91.43085479736328,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,54.21428298950195,-92.02606964111328,-.00019521401554811746,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,55.545372009277344,-91.20350646972656,-2.153782844543457,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,91.8455810546875,-35.903350830078125,-1.331348180770874,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,-54.21428298950195,92.02607727050781,.00020320962357800454,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,55.9420051574707,58.09579086303711,-56.76498031616211,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,57.69895935058594,89.87249755859375,1.3308056592941284,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,-1.330683946609497,57.698951721191406,89.87248229980469,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,1.3313459157943726,57.698951721191406,89.87246704101562,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,-33.75006103515625,-3.2792155479910434e-7,-92.66804504394531,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,1.3306846618652344,-57.69895935058594,-89.87250518798828,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,35.903011322021484,-1.33101487159729,-91.8457260131836,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,1.331345796585083,-57.6989631652832,89.87246704101562,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-58.09558868408203,-56.76478576660156,55.94243240356445,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-55.9420051574707,-58.09579849243164,56.764991760253906,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,-89.87269592285156,1.3310145139694214,-57.69862365722656,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,55.942420959472656,58.09578323364258,56.764583587646484,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-.00012307056749705225,-92.66816711425781,-33.749717712402344,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,-1.3311455249786377,-91.84559631347656,-35.90334701538086,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,58.09599685668945,-56.76478576660156,55.94200897216797,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,55.54539108276367,91.2035140991211,2.15338134765625,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,2.153247594833374,-55.545379638671875,-91.20352172851562,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,-.0003373770450707525,-54.21428298950195,-92.02607727050781,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,1.3311474323272705,91.84559631347656,35.90334701538086,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,54.21428298950195,92.02607727050781,-.00019560271175578237,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-56.76456832885742,55.94220733642578,58.096012115478516,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-1.3308817148208618,91.84559631347656,35.90335464477539,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.66816711425781,33.749717712402344,.0003441836452111602,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-92.02587127685547,-3.414504305965238e-7,54.21462631225586,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-89.87227630615234,-1.3310153484344482,57.69929885864258,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-56.76499557495117,-55.94221496582031,-58.095577239990234,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-89.87269592285156,-1.3310151100158691,-57.69862365722656,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-91.2037124633789,2.1535816192626953,-55.54503631591797,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.6989631652832,-89.87248229980469,-1.3307993412017822,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,-57.69895553588867,-89.87248229980469,1.331230640411377,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.2037124633789,-2.1535840034484863,55.545047760009766,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,91.84559631347656,-35.903350830078125,1.3306814432144165,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,.00033884088043123484,-54.21428298950195,92.02606964111328,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,1.3311470746994019,-91.84559631347656,35.90334701538086,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,91.8456039428711,35.903350830078125,1.330681324005127,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,57.698951721191406,89.87249755859375,-1.3312232494354248,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,35.903690338134766,-1.331014633178711,91.84544372558594,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-56.76456832885742,-55.94221496582031,58.096012115478516,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,-2.1532464027404785,-55.545379638671875,91.20350646972656,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,.00012470953515730798,-92.66816711425781,33.74972152709961,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-1.33088219165802,-91.84559631347656,35.90335464477539,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,-55.545372009277344,-91.20350646972656,2.153789758682251,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,56.76456832885742,-55.94221878051758,-58.09599304199219,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,92.66815185546875,-33.749717712402344,-.0003363910655025393,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,91.20330047607422,-2.1535825729370117,-55.54570388793945,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,92.02587127685547,-3.892050415288395e-7,-54.2146110534668,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,.0003386797325219959,54.21427536010742,92.02606964111328,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,2.1539180278778076,55.54536819458008,91.2034912109375,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,91.20330047607422,2.153582811355591,-55.54570388793945,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,89.87227630615234,1.3310145139694214,-57.69927978515625,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,56.76456832885742,55.94220733642578,-58.09599304199219,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,58.09558868408203,56.76477813720703,-55.942420959472656,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,55.54539108276367,-91.20350646972656,2.153383255004883,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,91.84558868408203,35.903350830078125,-1.3313480615615845,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-35.903690338134766,-1.331014633178711,-91.84546661376953,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-54.21428298950195,-92.02606964111328,.00020284479251131415,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,-35.903690338134766,1.331014633178711,-91.84546661376953,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,89.87227630615234,-1.3310154676437378,-57.69927978515625,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,55.942420959472656,-58.09579849243164,56.764583587646484,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,56.76499557495117,-55.94221496582031,58.0955924987793,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,2.1539194583892822,-55.545379638671875,91.2034912109375,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-55.942420959472656,-58.09579849243164,-56.76457214355469,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,-58.09599685668945,-56.76478576660156,-55.941993713378906,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,92.0262680053711,-4.4363298457028577e-7,54.21394729614258,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,55.9420051574707,-58.095802307128906,-56.76498031616211,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,58.09558868408203,-56.76478576660156,-55.942420959472656,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,89.87269592285156,1.3310145139694214,57.698638916015625,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.6989631652832,-89.87248229980469,1.330806851387024,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,57.69895553588867,-89.87248229980469,-1.3312231302261353,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-1.331344485282898,-57.69895935058594,-89.87249755859375,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-92.0262680053711,-3.9587837363797007e-7,-54.21393585205078,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-58.09599685668945,56.76477813720703,-55.941993713378906,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-57.69895935058594,89.87249755859375,-1.3307981491088867,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,-1.0771249532699585,55.84297561645508,-91.01956939697266,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,.6651760339736938,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-.6658390760421753,56.91976547241211,-90.35406494140625,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-1.3311461210250854,91.84559631347656,-35.90334701538086,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-.00012322973634582013,92.66816711425781,-33.749717712402344,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-89.87227630615234,1.3310145139694214,57.69929885864258,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656,-2.153247833251953,55.54536819458008,91.20350646972656],normalized:!1},normal:{itemSize:3,type:"Float32Array",array:[-.32300448417663574,.7980563640594482,-.5086984634399414,-.3229999840259552,.7980471849441528,-.5087158679962158,-.32299789786338806,.7980540990829468,-.5087060928344727,-.3229975402355194,.7980594038963318,-.5086981654167175,-.322995662689209,.7980546951293945,-.5087066292762756,-.32297030091285706,.7980630397796631,-.5087097883224487,-.3145313560962677,.8124136924743652,-.4909725487232208,-.3145303428173065,.8124191761016846,-.4909641742706299,-.31452667713165283,.8123946189880371,-.49100714921951294,-.31452617049217224,.8124018907546997,-.49099525809288025,-.31451353430747986,.8124081492424011,-.49099329113960266,.7977177500724792,.5067335963249207,.3269055485725403,.797724187374115,.5067331790924072,.3268907070159912,.7977266907691956,.5067335367202759,.32688409090042114,.797727644443512,.5067120790481567,.3269153833389282,.7977277636528015,.5067290663719177,.3268887996673584,-.48681509494781494,-.3170761168003082,-.8139249086380005,-.486814022064209,-.31705862283706665,-.8139324188232422,-.4868130683898926,-.31705430150032043,-.8139346241950989,-.486799031496048,-.3170582056045532,-.8139415383338928,-.48679620027542114,-.31705963611602783,-.8139426112174988,-.4867938756942749,-.3170706033706665,-.8139398097991943,.4910266399383545,.2948715388774872,-.8197216391563416,.4910283386707306,.29487162828445435,-.8197205662727356,.4910544753074646,.29487064480781555,-.8197053670883179,.49105706810951233,.2948714792728424,-.8197034597396851,.49106070399284363,.2948935925960541,-.8196933269500732,.49107053875923157,.29487308859825134,-.8196947574615479,.019486773759126663,.0034609902650117874,-.9998041391372681,.01950395107269287,.003431154415011406,-.9998038411140442,.01951080560684204,.0034348517656326294,-.9998037219047546,.019518375396728516,.003450945019721985,-.9998035430908203,.4929899275302887,.2909228503704071,.8199541568756104,.4929942488670349,.29094332456588745,.8199442028999329,.49299705028533936,.29093438386917114,.8199459314346313,.49300453066825867,.29094645380973816,.8199370503425598,.49301400780677795,.29092937707901,.8199374079704285,.506730854511261,.3268951177597046,.7977238893508911,.5067356824874878,.32688724994659424,.797724187374115,.5067362189292908,.3268929123878479,.7977213859558105,.5067363381385803,.3269083499908447,.7977150082588196,.5067551732063293,.32688796520233154,.7977114319801331,-.30085650086402893,-.8039307594299316,.5130113363265991,-.3008539080619812,-.8039156794548035,.5130366683006287,-.3008496165275574,-.8039196729660034,.5130329728126526,-.30084699392318726,-.8039218187332153,.5130308866500854,-.3008323013782501,-.8039500713348389,.5129954814910889,-.3008321523666382,-.8039198517799377,.5130428671836853,.999752938747406,.022229939699172974,-27254223823547363e-21,.9997531175613403,.02221774309873581,2555549144744873e-21,.9997531175613403,.022219747304916382,-11578202247619629e-21,.9997537136077881,.022191841155290604,-5044043064117432e-21,-6690621376037598e-21,.9997531771659851,.022219300270080566,15208497643470764e-22,.9997526407241821,.02224019356071949,7711350917816162e-21,.9997531771659851,.022218987345695496,25779008865356445e-21,.9997528791427612,.022229254245758057,-.8199474215507507,-.4929923415184021,.29093796014785767,-.8199467658996582,-.49298861622810364,.29094576835632324,-.8199445605278015,-.4929924011230469,.2909456789493561,-.8199410438537598,-.4930053651332855,.2909337878227234,-.8199405670166016,-.4929971694946289,.29094862937927246,-.8199316263198853,-.4930025041103363,.2909652292728424,-.503142237663269,.32643717527389526,-.800179123878479,-.503139078617096,.3264300227165222,-.8001841306686401,-.5031341314315796,.3264409899711609,-.8001827001571655,-.5031154155731201,.32642847299575806,-.800199568271637,-.9997532367706299,-.02221621572971344,-50961971282958984e-22,-.9997530579566956,-.02221750095486641,10980293154716492e-21,-.9997529983520508,-.022224798798561096,-216066837310791e-19,-.9997526407241821,-.022240420803427696,5041249096393585e-21,-.8199519515037537,-.4929916560649872,-.29092633724212646,-.8199494481086731,-.4929870665073395,-.29094117879867554,-.8199440240859985,-.4930054545402527,-.29092511534690857,-.8199396729469299,-.4930015802383423,-.29094383120536804,-.8199336528778076,-.4930025637149811,-.29095908999443054,-.8139479756355286,-.48679518699645996,-.3170475959777832,-.8139445185661316,-.4867909550666809,-.31706294417381287,-.8139359951019287,-.4868128299713135,-.3170514404773712,-.8139359951019287,-.4868128299713135,-.3170514404773712,-.8139272928237915,-.4868120551109314,-.3170749247074127,.291377991437912,.817572832107544,-.4966624081134796,.2913815379142761,.817571222782135,-.4966628849506378,.29140985012054443,.8175534605979919,-.49667567014694214,.29141905903816223,.8175671696662903,-.49664777517318726,.2914317846298218,.8175531625747681,-.49666333198547363,.3144916296005249,.8124189376831055,-.4909893870353699,.314521849155426,.812416136264801,-.4909745156764984,.31452593207359314,.8124017119407654,-.4909958243370056,.31453219056129456,.8123990893363953,-.4909961223602295,.31453219056129456,.8123990893363953,-.4909961223602295,.31453603506088257,.8124093413352966,-.49097663164138794,-.8199474215507507,.4929920434951782,.2909386157989502,-.8199455142021179,.4929906129837036,.29094627499580383,-.8199436664581299,.492990642786026,.29095107316970825,-.8199414610862732,.4929976165294647,.2909456193447113,-.8199408054351807,.49300891160964966,.290928453207016,-.8199315071105957,.4930025339126587,.2909652292728424,-.7977402210235596,.5067192316055298,.3268728256225586,-.797728419303894,.5067235827445984,.3268952965736389,-.7977269291877747,.5067242383956909,.32689791917800903,-.7977257370948792,.5067130923271179,.3269180655479431,-.7977219223976135,.5067331790924072,.32689642906188965,-.8039276003837585,.513014554977417,.30085939168930054,-.803920328617096,.5130298733711243,.30085256695747375,-.8039193153381348,.513033926486969,.30084848403930664,-.8039184808731079,.5130314230918884,.3008551299571991,-.3170892596244812,-.8139346837997437,-.4867902398109436,-.3170653283596039,-.813935399055481,-.48680463433265686,-.3170589804649353,-.8139439225196838,-.4867946207523346,-.3170560896396637,-.8139365315437317,-.486808717250824,-.31703075766563416,-.813947319984436,-.4868071973323822,-.3170735538005829,.8139387965202332,.4867936074733734,-.31706538796424866,.8139315843582153,.48681098222732544,-.3170650601387024,.8139441609382629,.4867902994155884,-.31706249713897705,.8139439225196838,.4867921471595764,-.3170546293258667,.8139438629150391,.4867975413799286,-.31705403327941895,.8139353394508362,.4868120551109314,-.31705284118652344,.8139360547065735,.4868115782737732,-.32690656185150146,.797716498374939,.5067349672317505,-.32688647508621216,.7977249026298523,.5067349076271057,-.32688552141189575,.7977311611175537,.506725549697876,-.3268853724002838,.7977126240730286,.5067547559738159,.2909286618232727,-.8199402689933777,-.49300962686538696,.290932297706604,-.8199490904808044,-.4929928183555603,.290941059589386,-.8199471831321716,-.49299079179763794,.2909466624259949,-.8199383020401001,-.49300238490104675,.2909603714942932,-.8199326395988464,-.49300357699394226,-.8139441013336182,-.4867924749851227,.31706178188323975,-.8139419555664062,-.4867969751358032,.3170603811740875,-.8139404058456421,-.4868042469024658,.31705325841903687,-.8139353394508362,-.48680993914604187,.31705722212791443,-.8139327764511108,-.486809641122818,.3170642554759979,-.8139600157737732,.48677366971969604,.31704968214035034,-.8139446973800659,.4867933988571167,.31705862283706665,-.8139420747756958,.48679694533348083,.31706005334854126,-.813937246799469,.48679330945014954,.3170780539512634,-.8139326572418213,.4868103265762329,.3170636296272278,-.8139210939407349,.4868491590023041,.31703364849090576,-.8199512958526611,.4929920434951782,-.29092729091644287,-.8199489712715149,.4929892122745514,-.2909389138221741,-.8199403882026672,.49300849437713623,-.29093047976493835,-.8199390172958374,.4930011034011841,-.2909468710422516,-.8199335932731628,.49300262331962585,-.2909591794013977,.022224154323339462,8113682270050049e-21,.999752938747406,.022224217653274536,-7063150405883789e-21,.9997529983520508,.02223508059978485,-2683699131011963e-20,.9997528195381165,.022243808954954147,14416873455047607e-22,.9997525811195374,.5130226612091064,-.30085763335227966,.8039230704307556,.5130249857902527,-.30090412497520447,.8039043545722961,.5130347013473511,-.3008493185043335,.8039185404777527,.5130426287651062,-.30085936188697815,.8039097785949707,.5130426287651062,-.30085936188697815,.8039097785949707,.8139259815216064,.4868123233318329,.31707778573036194,.8139373064041138,.4867918789386749,.31708046793937683,.8139375448226929,.48680996894836426,.3170512318611145,.8139379024505615,.4868050515651703,.3170582354068756,.8139469027519226,.48679566383361816,.3170495331287384,.8139491677284241,.48678889870643616,.31705406308174133,-.49300631880760193,.29092955589294434,.8199419379234314,-.4929933547973633,.29095086455345154,.8199421167373657,-.4929933547973633,.29095086455345154,.8199421167373657,-.49299073219299316,.2909349799156189,.8199493885040283,-.4929877817630768,.290939062833786,.8199498057365417,-.49300646781921387,-.29092955589294434,.8199418783187866,-.4929991066455841,-.2909305989742279,.8199458718299866,-.4929991066455841,-.2909305989742279,.8199458718299866,-.4929906129837036,-.29093536734580994,.8199493885040283,-.49298787117004395,-.2909401059150696,.819949209690094,-.022236576303839684,-14398247003555298e-22,.9997527003288269,-.022226199507713318,26732683181762695e-21,.9997529983520508,-.022215761244297028,-4159286618232727e-21,.9997531771659851,-.022215470671653748,28014183044433594e-22,.9997532963752747,.4860762059688568,.31750911474227905,-.8141976594924927,.4860828220844269,.3174929618835449,-.8142000436782837,.4860839545726776,.31748220324516296,-.8142036199569702,.48609045147895813,.31749191880226135,-.8141958713531494,.48609644174575806,.31749197840690613,-.8141922950744629,.48610714077949524,.3175130784511566,-.8141777515411377,.48611539602279663,.31747305393218994,-.8141883611679077,-346451997756958e-19,.016819089651107788,-.9998586177825928,-2047419548034668e-20,.016789883375167847,-.999859094619751,-13813376426696777e-21,.016806378960609436,-.9998587369918823,-277138315141201e-20,.016810698434710503,-.9998586773872375,65267086029052734e-22,.016805753111839294,-.9998587965965271,18220569472759962e-21,.016794271767139435,-.9998589754104614,.016185671091079712,-.9998690485954285,-3345310688018799e-20,.01620444655418396,-.999868631362915,-10926742106676102e-22,.016207069158554077,-.999868631362915,11086463928222656e-21,.01620793342590332,-.999868631362915,-10415911674499512e-21,.016219258308410645,-.9998684525489807,-2.980232238769531e-7,.016219640150666237,-.9998684525489807,-4.5890919864177704e-7,.3170523941516876,-.8139364719390869,-.486811101436615,.3170545697212219,-.8139440417289734,-.48679736256599426,.31706172227859497,-.8139370083808899,-.48680418729782104,.3170723617076874,-.8139404058456421,-.486791729927063,.31707704067230225,-.8139263391494751,-.48681217432022095,.8199406266212463,-.4929971992969513,-.29094862937927246,.8199410438537598,-.49300533533096313,-.290933758020401,.8199447989463806,-.49299201369285583,-.2909456193447113,.8199467658996582,-.4929884672164917,-.290946364402771,.819947361946106,-.492992103099823,-.2909383773803711,.8199547529220581,-.49298709630966187,-.2909259796142578,-.016219263896346092,.9998684525489807,5.702022463083267e-7,-.016217336058616638,.9998685717582703,-4.023313522338867e-7,-.016208097338676453,.9998686909675598,-1023709774017334e-20,-.016207024455070496,.9998686909675598,11369585990905762e-21,-.01620444655418396,.9998686909675598,10926742106676102e-22,-.01616719365119934,.9998693466186523,33482909202575684e-21,.32295531034469604,.7980619072914124,-.5087209343910217,.32295531034469604,.7980619072914124,-.5087209343910217,.3229907155036926,.798053503036499,-.5087116956710815,.3229965567588806,.7980476021766663,-.50871741771698,.32300084829330444,.7980570793151855,-.5086997747421265,.8039142489433289,.5130448937416077,.30084332823753357,.8039181232452393,.5130343437194824,.3008510172367096,.8039227724075317,.5130297541618347,.300846129655838,.8039230108261108,.5130389332771301,.300830215215683,.8039236664772034,.5130265355110168,.30084937810897827,.8039326667785645,.5130090117454529,.3008555769920349,.8039484024047852,.512998104095459,.3008320927619934,-.30085283517837524,.8039165735244751,.5130358934402466,-.300849586725235,.8039194345474243,.5130332708358765,-.3008473813533783,.803921639919281,.5130310654640198,-.3008348345756531,.8039216995239258,.5130383372306824,-.3008311986923218,.8039206862449646,.5130419731140137,.300837904214859,.803917407989502,.5130431056022644,.30084890127182007,.8039129972457886,.5130437016487122,.30085113644599915,.803921639919281,.5130288004875183,.3008517622947693,.8039230704307556,.5130261182785034,.3008546531200409,.8039194941520691,.5130301117897034,.3008613586425781,.8039342164993286,.5130031108856201,-.019525907933712006,.0034512635320425034,-.999803364276886,-.019515730440616608,.003434911370277405,-.9998036623001099,-.01951080560684204,.0034344345331192017,-.9998037815093994,-.01949400082230568,.003460988402366638,-.9998040795326233,.30084559321403503,-.8039190173149109,-.5130363702774048,.3008456826210022,-.8039130568504333,-.5130454301834106,.30084726214408875,-.8039217591285706,-.5130307674407959,.30084937810897827,-.8039229512214661,-.5130279660224915,.3008571267127991,-.803926944732666,-.5130170583724976,.49298426508903503,-.29092302918434143,-.8199574947357178,.4929867684841156,-.290944904088974,-.819948136806488,.4929903745651245,-.29092836380004883,-.8199520111083984,.4929988384246826,-.29094645380973816,-.819940447807312,.4930066466331482,-.29092955589294434,-.8199417591094971,.30083754658699036,-.8039181232452393,.5130423307418823,.3008488714694977,-.8039132356643677,.5130434036254883,.3008507788181305,-.8039216995239258,.5130287408828735,.30085182189941406,-.8039235472679138,.5130254030227661,.30085495114326477,-.8039181232452393,.5130321383476257,.30085986852645874,-.8039340376853943,.5130043029785156,-.797728419303894,-.5067229270935059,.3268962502479553,-.7977258563041687,-.506712794303894,.3269183933734894,-.797725260257721,-.5067326426506042,.3268887996673584,-.7977154850959778,-.5067335367202759,.32691144943237305,-.3269064426422119,-.7977167367935181,.5067347884178162,-.3268938660621643,-.7977226376533508,.5067335367202759,-.3268907070159912,-.7977270483970642,.5067287087440491,-.3268868923187256,-.7977240085601807,.5067360997200012,-.3268852233886719,-.7977129817008972,.5067545175552368,-.5089601278305054,.3034306466579437,-.805536687374115,-.5089573860168457,.30343058705329895,-.805538535118103,-.5089519619941711,.30339932441711426,-.8055538535118103,-.5089257955551147,.30343857407569885,-.8055554628372192,-.5089184045791626,.3034357726573944,-.8055611252784729,-.5088995695114136,.30344462394714355,-.8055697679519653,.3268873393535614,.7977280616760254,.5067291259765625,.32689282298088074,.7977269887924194,.5067273378372192,.3269011378288269,.7977209091186523,.5067315101623535,.3269102871417999,.7977165579795837,.5067325234413147,.32691535353660583,.7977278828620911,.5067119002342224,-26047229766845703e-21,-.999752938747406,-.02222883701324463,-8940696716308594e-21,-.9997531175613403,-.022218912839889526,-15245750546455383e-22,-.9997526407241821,-.02224019728600979,7366761565208435e-21,-.9997531175613403,-.02221873588860035,-.290948748588562,-.8199450969696045,-.49298956990242004,-.2909458875656128,-.8199467658996582,-.49298855662345886,-.2909458577632904,-.8199422955513,-.4929962456226349,-.29093700647354126,-.8199491500854492,-.4929898679256439,-.29093021154403687,-.8199409246444702,-.4930077791213989,-.2909247875213623,-.8199558854103088,-.4929860532283783,.7977120280265808,-.5067539215087891,.32688847184181213,.7977270483970642,-.506733775138855,.3268832564353943,.7977273464202881,-.5067236423492432,.32689768075942993,.7977273464202881,-.5067236423492432,.32689768075942993,.3170563578605652,.8139361143112183,.48680925369262695,.3170570433139801,.8139445185661316,.4867948889732361,.3170689344406128,.813934862613678,.4868030846118927,.3170716166496277,.8139290809631348,.4868110716342926,.31707435846328735,.8139417171478271,.48678815364837646,.4867840111255646,-.3170663118362427,-.8139473795890808,.486789345741272,-.3170621991157532,-.8139458894729614,.4867922365665436,-.31707215309143066,-.8139402270317078,.48679348826408386,-.317050039768219,-.8139480948448181,.4868071973323822,-.3170592784881592,-.8139362335205078,.48680734634399414,-.31705474853515625,-.8139378428459167,.4868084490299225,-.3170764446258545,-.8139288425445557,-13574957847595215e-21,-.01111060380935669,-.9999383091926575,-4933535819873214e-21,-.011075659655034542,-.9999386072158813,7039896445348859e-21,-.011118302121758461,-.9999381303787231,852346420288086e-20,-.01112416386604309,-.9999381899833679,14200806617736816e-21,-.011078417301177979,-.9999385476112366,3071129322052002e-20,-.011100709438323975,-.9999383687973022,.29092466831207275,.8199556469917297,.49298620223999023,.2909298241138458,.8199406862258911,.4930081367492676,.2909347116947174,.8199495077133179,.4929908514022827,.2909448742866516,.8199471235275269,.49298879504203796,.29094886779785156,.8199383020401001,.49300071597099304,.016171813011169434,.9998692274093628,-3343820571899414e-20,.01620444655418396,.999868631362915,-10915100574493408e-22,.01620711386203766,.9998686909675598,-10520219802856445e-21,.01620851457118988,.9998686909675598,1023709774017334e-20,.01621788740158081,.9998685121536255,1.7881393432617188e-7,.016219263896346092,.9998685121536255,-3.4598633646965027e-7,-.5067505836486816,.3268905580043793,.7977132201194763,-.5067304372787476,.3269084393978119,.7977187037467957,-.5067296028137207,.3268975615501404,.797723650932312,-.5067266225814819,.3268991708755493,.7977248430252075,-.5067264437675476,.32688987255096436,.7977288961410522,-.5067263245582581,.32689154148101807,.7977282404899597,-.2909603714942932,.8199325203895569,.49300387501716614,-.2909455895423889,.8199446797370911,.4929923117160797,-.2909436821937561,.8199417591094971,.4929981827735901,-.2909405529499054,.8199470639228821,.4929913282394409,-.2909325659275055,.8199489712715149,.4929928183555603,-.2909291386604309,.819939911365509,.4930098354816437,-.9997537136077881,.022191839292645454,504031777381897e-20,-.9997531175613403,.02221798151731491,-2693384885787964e-21,-.9997531175613403,.022219747304916382,11652708053588867e-21,-.9997529983520508,.022228829562664032,273287296295166e-19,-.9998690485954285,-4357099533081055e-20,.01618865132331848,-.999868631362915,8.069910109043121e-7,.016208183020353317,-.9998685717582703,-448375940322876e-19,.01621093973517418,-.9998685717582703,-8761882781982422e-21,.01621145009994507,-.9998685717582703,11309981346130371e-21,.01621215045452118,-.9998684525489807,-10132789611816406e-22,.01622423529624939,-.9998683929443359,10335352271795273e-22,.016223950311541557,-.5130453705787659,-.3008093237876892,.8039266467094421,-.5130453705787659,-.3008093237876892,.8039266467094421,-.5130347013473511,-.30084866285324097,.8039188385009766,-.5130272507667542,-.3008646070957184,.803917646408081,-.5130270719528198,-.3008405864238739,.8039267659187317,-.5130001902580261,-.3008325397968292,.8039469718933105,-.5067576169967651,-.3268996477127075,-.7977050542831421,-.5067576169967651,-.3268996477127075,-.7977050542831421,-.5067268013954163,-.3268904387950897,-.7977283596992493,-.5067136287689209,-.32691413164138794,-.7977270483970642,-.5130422711372375,-.30085960030555725,-.8039097785949707,-.5130422711372375,-.30085960030555725,-.8039097785949707,-.5130351185798645,-.3008493185043335,-.8039183616638184,-.5130186080932617,-.30085819959640503,-.8039255738258362,-.5130038857460022,-.3008323609828949,-.8039445877075195,-.8139479756355286,.4867886006832123,-.31705790758132935,-.8139469027519226,.4867956042289734,-.3170493245124817,-.8139386773109436,.4867936074733734,-.31707385182380676,-.8139375448226929,.48680996894836426,-.3170512914657593,-.8139374256134033,.486805260181427,-.3170590400695801,-.8139272928237915,.4868119955062866,-.31707483530044556,-.8039371967315674,-.5130016803741455,-.3008561134338379,-.8039246797561646,-.5130265951156616,-.30084672570228577,-.8039228916168213,-.5130297541618347,-.30084607005119324,-.803920567035675,-.5130411386489868,-.3008330762386322,-.803917407989502,-.5130360126495361,-.3008502721786499,-.8039128184318542,-.5130437016487122,-.30084937810897827,-.8039510250091553,-.5129914879798889,.30083632469177246,-.803925633430481,-.513030469417572,.30083781480789185,-.8039206862449646,-.5130295753479004,.3008521795272827,-.8039200901985168,-.5130325555801392,.3008491098880768,-.8039183616638184,-.5130420923233032,.30083730816841125,-.8039169311523438,-.513033390045166,.3008556663990021,-.8039165735244751,-.5130240321159363,.3008728623390198,.8139259219169617,-.4868123531341553,.3170778751373291,.8139362335205078,-.48681262135505676,.31705108284950256,.8139362335205078,-.48681262135505676,.31705108284950256,.8139456510543823,-.4867914915084839,.31705909967422485,.8139479756355286,-.4867952764034271,.3170475363731384,.8199337124824524,-.4930025637149811,.29095906019210815,.8199397325515747,-.4930015802383423,.29094383120536804,.8199440240859985,-.4930053949356079,.29092511534690857,.8199495673179626,-.49298688769340515,.290941059589386,.8199518918991089,-.4929915964603424,.29092657566070557,-30502676963806152e-21,-.01617613434791565,.9998691082000732,-8180737495422363e-21,-.016205251216888428,.999868631362915,11175870895385742e-22,-.01622094213962555,.9998685121536255,46496279537677765e-22,-.01620444841682911,.9998686909675598,6626127287745476e-21,-.016218557953834534,.9998685121536255,16480684280395508e-21,-.016207247972488403,.999868631362915,.2909298837184906,-.8199405670166016,.493008553981781,.2909371554851532,-.819949209690094,.49298959970474243,.290944904088974,-.8199470043182373,.4929887652397156,.29094886779785156,-.8199384212493896,.4930006265640259,.29096388816833496,-.8199325799942017,.49300146102905273,.8199388980865479,.4930010437965393,.2909468710422516,.8199397325515747,.4930093288421631,.2909305691719055,.8199490904808044,.49298906326293945,.2909387946128845,.8199512362480164,.4929920732975006,.2909274697303772,.8199567198753357,.4929872155189514,.29091987013816833,.8039079904556274,.5130425095558167,-.30086418986320496,.8039079904556274,.5130425095558167,-.30086418986320496,.8039183616638184,.513031542301178,-.3008551597595215,.8039308786392212,.5130091905593872,-.30085980892181396,.4929937720298767,-.29094550013542175,.8199437856674194,.4929945468902588,-.2909424602985382,.819944441318512,.4929971694946289,-.2909335792064667,.8199460506439209,.49299973249435425,-.29094603657722473,.8199400305747986,.4930054247379303,-.2909621000289917,.819930911064148,.4930139482021332,-.2909294068813324,.8199374079704285,-.5067506432533264,-.326890766620636,.7977131605148315,-.5067328214645386,-.32690688967704773,.797717809677124,-.5067287087440491,-.326896071434021,.7977248430252075,-.5067263841629028,-.3268885314464569,.7977295517921448,-.5067260265350342,-.3268907368183136,.7977287173271179,-.5067246556282043,-.3268979489803314,.7977266907691956,-.4868078827857971,-.31707385182380676,.8139301538467407,-.48680680990219116,-.31705403327941895,.8139384388923645,-.4868009090423584,-.3170638084411621,.8139382600784302,-.4867950677871704,-.3170577883720398,.8139441013336182,-.486785888671875,-.31707119941711426,.8139443397521973,-63907355070114136e-22,-.9997531175613403,.02221914753317833,15255063772201538e-22,-.9997526407241821,.022240199148654938,7659196853637695e-21,-.9997530579566956,.022218987345695496,25704503059387207e-21,-.9997528791427612,.022229783236980438,-.2909602224826813,-.8199326992034912,.49300363659858704,-.2909456193447113,-.8199447989463806,.4929920732975006,-.2909436523914337,-.8199417591094971,.4929981827735901,-.2909403145313263,-.8199471235275269,.4929913580417633,-.2909320592880249,-.8199489116668701,.4929931163787842,-.2909291386604309,-.8199397325515747,.4930102229118347,-.3170614242553711,-.8139365911483765,.4868052303791046,-.3170546591281891,-.8139438629150391,.4867975413799286,-.31705236434936523,-.8139365911483765,.4868110716342926,-.31705206632614136,-.8139435052871704,.4867997169494629,.5067088007926941,-.32691431045532227,-.7977301478385925,.5067205429077148,-.32689112424850464,-.7977320551872253,.506729781627655,-.32688722014427185,-.7977279424667358,.5067307949066162,-.32690852880477905,-.797718346118927,.9997526407241821,-.022240418940782547,-5042180418968201e-21,.9997529983520508,-.02222476899623871,216066837310791e-19,.9997532367706299,-.022217553108930588,-11643394827842712e-21,.9997532963752747,-.022216007113456726,49620866775512695e-22,.8139346837997437,-.48679178953170776,-.31708675622940063,.8139352798461914,-.48680993914604187,-.31705716252326965,.8139358758926392,-.48680379986763,-.31706541776657104,.8139419555664062,-.4867968261241913,-.3170607388019562,.8139616847038269,-.4867711067199707,-.3170492947101593,.9998683333396912,9.019859135150909e-7,-.016223222017288208,.9998684525489807,-9.5367431640625e-7,-.016224414110183716,.999868631362915,-858306884765625e-20,-.01621215045452118,.999868631362915,8.074566721916199e-7,-.016208184882998466,.999868631362915,11593103408813477e-21,-.016211628913879395,.9998686909675598,-31620264053344727e-21,-.016208022832870483,.9998689293861389,-4826486110687256e-20,-.0161912702023983,-838935375213623e-20,.016203731298446655,.9998688101768494,9.622890502214432e-7,.01622016541659832,.9998683929443359,4648929461836815e-21,.01620445027947426,.9998686909675598,64373016357421875e-22,.01621994376182556,.9998685717582703,1582503318786621e-20,.016208693385124207,.9998685121536255,3847479820251465e-20,.016177505254745483,.999869167804718,.48680007457733154,.31705743074417114,.813941240310669,.48680129647254944,.3170565962791443,.8139409422874451,.4868077337741852,.3170599937438965,.8139355778694153,.48685207962989807,.3170304000377655,.8139206767082214,.8139327168464661,.48680904507637024,-.31706565618515015,.8139352798461914,.48680996894836426,-.3170573115348816,.813941240310669,.48680001497268677,-.31705746054649353,.8139423727989197,.4867967665195465,-.31705957651138306,.8139436841011047,.48679426312446594,-.3170599341392517,.5088772773742676,.30341875553131104,-.8055935502052307,.5089110136032104,.3034226894378662,-.8055708408355713,.5089132785797119,.30345800518989563,-.8055559992790222,.5089139342308044,.30345267057418823,-.8055576086044312,.508934497833252,.30343055725097656,-.8055529594421387,.5089894533157349,.303387314081192,-.8055344820022583,.5031076073646545,.3264298439025879,-.8002038598060608,.5031241178512573,.3264410197734833,-.8001890182495117,.5031249523162842,.32645124197006226,-.8001842498779297,.5031318664550781,.3264358937740326,-.8001861572265625,.5031365752220154,.3264387249946594,-.8001821041107178,.797707200050354,.506753146648407,-.3269011378288269,.797707200050354,.506753146648407,-.3269011378288269,.7977266907691956,.5067112445831299,-.32691892981529236,.7977287769317627,.5067213773727417,-.3268980383872986,.3170560896396637,-.8139365315437317,.486808717250824,.31705886125564575,-.8139439821243286,.48679447174072266,.3170628845691681,-.813936173915863,.4868050217628479,.3170718252658844,-.8139439821243286,.48678603768348694,.31708014011383057,-.8139369487762451,.48679235577583313,.31708040833473206,-.8139251470565796,.48681211471557617,.8199315071105957,.4930025637149811,-.2909652590751648,.8199403285980225,.49300968647003174,-.2909284830093384,.8199413418769836,.49299755692481995,-.2909456491470337,.8199435472488403,.49299076199531555,-.29095104336738586,.8199455142021179,.4929905831813812,-.2909463047981262,.8199475407600403,.4929920434951782,-.2909378409385681,-.49301081895828247,-.2909294068813324,-.8199392557144165,-.4930001497268677,-.29094603657722473,-.8199397325515747,-.4929942190647125,-.29094552993774414,-.8199436664581299,-.49299415946006775,-.2909356355667114,-.8199470043182373,-.4929927885532379,-.2909421920776367,-.8199455738067627,-.49299028515815735,-.29092299938201904,-.8199537992477417,-.016219697892665863,-.9998685121536255,1.8882565200328827e-7,-.016219332814216614,-.9998683929443359,4.917383193969727e-7,-.016213014721870422,-.9998685121536255,4868209362030029e-20,-.016209125518798828,-.999868631362915,-10088086128234863e-21,-.016207367181777954,-.999868631362915,10952353477478027e-21,-.01620444655418396,-.9998686909675598,-9.727664291858673e-7,-.01618608832359314,-.9998689889907837,3844499588012695e-20,-.49107488989830017,.2948729395866394,-.8196921944618225,-.49106675386428833,.29489362239837646,-.8196896314620972,-.49106061458587646,.2948709726333618,-.8197014927864075,-.49105924367904663,.2948675751686096,-.8197035193443298,-.4910484552383423,.2948729693889618,-.8197080492973328,.5130017399787903,-.30085939168930054,-.8039357662200928,.5130244493484497,-.30084937810897827,-.803925096988678,.513026773929596,-.3008493483066559,-.8039234280586243,.513030469417572,-.30085432529449463,-.8039193749427795,.5130401253700256,-.30083391070365906,-.8039209842681885,.5130414366722107,-.30084913969039917,-.8039143681526184,.32688838243484497,-.7977268695831299,.5067307949066162,.3268934488296509,-.797727644443512,.5067262649536133,.3268952965736389,-.7977220416069031,.5067338347434998,.3269088566303253,-.7977157235145569,.5067347288131714,.32691681385040283,-.7977270483970642,.5067120790481567,.506731390953064,-.3268928527832031,.7977245450019836,.5067368745803833,-.3268938362598419,.7977205514907837,.5067563056945801,-.3268866240978241,.7977113723754883,.5067574977874756,-.3268994987010956,.7977052927017212,.5067574977874756,-.3268994987010956,.7977052927017212,.48679232597351074,-.31706538796424866,.8139427304267883,.4867943525314331,-.3170838952064514,.8139344453811646,.48680126667022705,-.317055344581604,.8139413595199585,.48680776357650757,-.31706103682518005,.8139351010322571,.4868128001689911,-.3170541524887085,.813934862613678,.4868144989013672,-.3170735836029053,.8139262199401855,-.3269168436527252,-.7977273464202881,-.5067114233970642,-.3269089162349701,-.7977157235145569,-.5067346096038818,-.32690006494522095,-.7977253198623657,-.5067254304885864,-.3268975615501404,-.7977211475372314,-.5067336559295654,-.326894074678421,-.7977250218391418,-.5067296624183655,-.32689133286476135,-.7977280020713806,-.5067267417907715,-.7977375388145447,-.5067383050918579,-.3268502950668335,-.7977375388145447,-.5067383050918579,-.3268502950668335,-.7977255582809448,-.5067352652549744,-.326884001493454,-.7977122068405151,-.5067542791366577,-.32688724994659424,.9998685717582703,-1.9371509552001953e-7,.016211718320846558,.9998686909675598,-7063150405883789e-21,.01620452105998993,.9998686909675598,5.688052624464035e-7,.01620963215827942,.9998687505722046,8.088536560535431e-7,.01620098017156124,.9998687505722046,9447336196899414e-21,.016203224658966064,.9998690485954285,-34227967262268066e-21,.01618596911430359,.3268680274486542,-.7977415323257446,-.5067204236984253,.3268900513648987,-.7977254986763,-.5067315697669983,.32689306139945984,-.7977262735366821,-.5067285299301147,.3268945813179016,-.7977228164672852,-.5067329406738281,.32689517736434937,-.7977268099784851,-.5067262649536133,.32691502571105957,-.7977272272109985,-.5067128539085388,.7977112531661987,-.5067529678344727,-.32689201831817627,.7977154850959778,-.5067335963249207,-.32691144943237305,.7977215647697449,-.506732702255249,-.32689809799194336,.7977254390716553,-.5067287087440491,-.32689452171325684,.7977267503738403,-.5067309141159058,-.32688814401626587,.5130077004432678,.30085963010787964,.8039320707321167,.5130297541618347,.30084937810897827,.8039216995239258,.5130323171615601,.3008490204811096,.8039200901985168,.5130364894866943,.30085432529449463,.8039156794548035,.5130462050437927,.3008359372615814,.8039162158966064,.51304692029953,.30084913969039917,.8039107918739319,.8039127588272095,-.5130437612533569,.30084940791130066,.8039186596870422,-.5130347609519958,.3008493483066559,.8039190769195557,-.5130429863929749,.30083420872688293,.8039229512214661,-.5130298137664795,.30084604024887085,.8039247393608093,-.5130265951156616,.3008466958999634,.8039315938949585,-.5130106210708618,.3008553087711334,.8039183616638184,-.5130316615104675,-.30085524916648865,.803918719291687,-.5130422711372375,-.3008360266685486,.8039200305938721,-.5130326151847839,-.30084913969039917,.8039206862449646,-.5130296349525452,-.3008522093296051,.8039317727088928,-.513005793094635,-.30086347460746765,.8039458394050598,-.5129998922348022,-.3008357584476471,-.30086222290992737,-.8039306402206421,-.5130082964897156,-.30085277557373047,-.8039199113845825,-.513030469417572,-.300851047039032,-.8039217591285706,-.513028621673584,-.3008507788181305,-.8039173483848572,-.5130357146263123,-.3008337914943695,-.8039432168006897,-.5130053162574768,-.9998691082000732,-34242868423461914e-21,-.01618131995201111,-.9998687505722046,8.067581802606583e-7,-.01620098017156124,-.9998687505722046,9641051292419434e-21,-.016203448176383972,-.9998686909675598,-7212162017822266e-21,-.016204625368118286,-.9998686909675598,6.223563104867935e-7,-.016209648922085762,-.9998685121536255,-1.9371509552001953e-7,-.01621153950691223,-.7977283596992493,.5067322254180908,-.326882004737854,-.7977277636528015,.5067290663719177,-.3268887996673584,-.7977234125137329,.5067338943481445,-.32689157128334045,-.7977177500724792,.5067336559295654,-.32690560817718506,-.7977122068405151,.5067541599273682,-.326887309551239,-.8039452433586121,.5130032300949097,-.3008318245410919,-.8039326071739197,.5130090713500977,-.3008555769920349,-.8039237856864929,.5130265951156616,-.30084937810897827,-.8039227724075317,.5130298137664795,-.3008461892604828,-.8039199709892273,.5130324363708496,-.30084940791130066,-.8039199709892273,.5130419135093689,-.30083346366882324,-.8039143681526184,.5130447745323181,-.30084335803985596,-.4861213266849518,.3174731433391571,-.8141847252845764,-.4861072897911072,.3175134062767029,-.8141775131225586,-.4861047863960266,.31748297810554504,-.8141908049583435,-.4861007332801819,.3174685537815094,-.8141988515853882,-.4860859811306,.31749480962753296,-.8141974210739136,-.48608478903770447,.3174983561038971,-.814196765422821,.30044397711753845,.8036642670631409,-.5136703848838806,.30044645071029663,.8036598563194275,-.5136758685112,.3004480004310608,.8036625981330872,-.5136705636978149,.3004538118839264,.8036926984786987,-.5136200785636902,.30045652389526367,.8036901950836182,-.5136222839355469,-.3004720211029053,.8036836981773376,-.5136234760284424,-.30045682191848755,.8036627769470215,-.513664960861206,-.3004477024078369,.8036642670631409,-.5136681795120239,-.30044496059417725,.8036916851997375,-.5136268734931946,-.3004448711872101,.8036707043647766,-.5136595964431763,-.29143548011779785,.8175532221794128,-.4966612160205841,-.2914249300956726,.8175643086433411,-.4966491460800171,-.2914220690727234,.8175652623176575,-.49664899706840515,-.2914113402366638,.8175539374351501,-.4966740012168884,-.2913860082626343,.8175709843635559,-.49666067957878113,-.2913796901702881,.8175732493400574,-.49666085839271545,-2612173557281494e-20,.9997528791427612,-.022229932248592377,-7601454854011536e-21,.9997532367706299,-.02221878245472908,13606622815132141e-22,.9997526407241821,-.02224019542336464,6318092346191406e-21,.9997531771659851,-.022218704223632812,-.5130420923233032,.3008320927619934,.8039203882217407,-.5130420923233032,.3008320927619934,.8039203882217407,-.513036847114563,.30085039138793945,.8039168119430542,-.5130102634429932,.3008587956428528,.8039306998252869,-.48680686950683594,.31705421209335327,.8139384388923645,-.48680058121681213,.31706511974334717,.8139378428459167,-.4867952764034271,.3170567750930786,.8139443397521973,-.48679250478744507,.3170604407787323,.8139445781707764],normalized:!1},uv:{itemSize:2,type:"Float32Array",array:[.01962309330701828,.012889564037322998,.02023136429488659,.10979831218719482,.07965327799320221,.07732349634170532,.07965327799320221,.07732349634170532,.02023136429488659,.10979831218719482,.5619750022888184,.14709901809692383,.02450018748641014,.02645343542098999,.06788178533315659,.04795658588409424,.0796533077955246,.04795646667480469,.02450018748641014,.02645343542098999,.503350019454956,.1835920214653015,.3125010132789612,.3969320058822632,.10002404451370239,.04638880491256714,.0839850902557373,.04795658588409424,.01962309330701828,.008929312229156494,.10002404451370239,.04638880491256714,.018139563500881195,.03942161798477173,.05488619580864906,.04795628786087036,.503491997718811,.058592021465301514,.09820473194122314,.10979831218719482,.05488619580864906,.04795628786087036,.018139563500881195,.03942161798477173,.04933025687932968,.08043122291564941,.04933025687932968,.08043122291564941,.03322688490152359,.0800524353981018,.03322688490152359,.0800524353981018,.0619719997048378,.7201650142669678,.012844499200582504,.020931720733642578,.5630499720573425,.345100998878479,.09606381505727768,.008966565132141113,.011493649333715439,.020151853561401367,.03200281038880348,.0800524353981018,.6875010132789612,.5218279957771301,.05055434629321098,.07732337713241577,.05055434629321098,.07732337713241577,.11814413964748383,.008967041969299316,.0850236713886261,.029828131198883057,.057423245161771774,.008966565132141113,.10158386081457138,.04638880491256714,.057423245161771774,.008966565132141113,.6874989867210388,.5953599810600281,.01827225834131241,.008149445056915283,.019623126834630966,.045423686504364014,.03755871579051018,.047578275203704834,.09387288242578506,.07732349634170532,.24622400104999542,.4335950016975403,.019623126834630966,.045423686504364014,.03755871579051018,.047578275203704834,.0850236713886261,.040868282318115234,.07398355007171631,.008967041969299316,.07532140612602234,.08043128252029419,.18750199675559998,.5220270156860352,.04066653922200203,.04795628786087036,.3125,.021938025951385498,.10997618734836578,.10979831218719482,.02358332648873329,.01918947696685791,.05190323293209076,.046388089656829834,.05190323293209076,.046388089656829834,.05488622561097145,.08043128252029419,.08367279171943665,.023528218269348145,.05488622561097145,.08043128252029419,.3124989867210388,.5957159996032715,.018272243440151215,.013669490814208984,.10554412007331848,.008966803550720215,.019007263705134392,.10979831218719482,.4383139908313751,.39722001552581787,.10253656655550003,.10979831218719482,.0503433421254158,.04638814926147461,.0850236713886261,.024307966232299805,.3124980032444,.22047501802444458,.10131248831748962,.10979825258255005,.10131248831748962,.10979825258255005,.0850236713886261,.022748231887817383,.05366211757063866,.08043128252029419,.1875,.27190500497817993,.10131251811981201,.08043169975280762,.02450021728873253,.04338186979293823,.06294332444667816,.008966565132141113,.1285640001296997,.3085939884185791,.02450021728873253,.04338186979293823,.09387288242578506,.08043169975280762,.09387288242578506,.08043169975280762,.006182555109262466,.02567189931869507,.027670973911881447,.08005237579345703,.312734991312027,.34500598907470703,.09387288242578506,.10979831218719482,.007099363952875137,.04590404033660889,.007099363952875137,.04590404033660889,.059218067675828934,.08043104410171509,.37151700258255005,.3090599775314331,.007099363952875137,.04590404033660889,.10997628420591354,.07732337713241577,.10997628420591354,.07732337713241577,.10253656655550003,.07732349634170532,.10253656655550003,.07732349634170532,.006182555109262466,.020151853561401367,.0625,.14693999290466309,.0625,.2202470302581787,.03322688490152359,.07694470882415771,.03378301486372948,.04638814926147461,.08502364158630371,.013267934322357178,.03378301486372948,.04638814926147461,.02598363533616066,.024411678314208984,.12137900292873383,.1835939884185791,.03378315269947052,.008967041969299316,.10253656655550003,.04795682430267334,.02450018748641014,.030413687229156494,.028895026072859764,.047577083110809326,.04622248187661171,.07732313871383667,.6290850043296814,.1835920214653015,.02450018748641014,.030413687229156494,.02450018748641014,.0239296555519104,.02450018748641014,.0239296555519104,.02450018748641014,.0239296555519104,.035342950373888016,.008967041969299316,.041890617460012436,.07732313871383667,.035342950373888016,.008967041969299316,.4962030053138733,.3085950016975403,.4375010132789612,.27205002307891846,.02333913929760456,.07694411277770996,.035342950373888016,.04638814926147461,.08367279171943665,.012488067150115967,.012844499200582504,.024891972541809082,.06232589855790138,.047956228256225586,.06232589855790138,.047956228256225586,.0883169174194336,.07732337713241577,.06249900162220001,.47056400775909424,.08087734878063202,.10979831218719482,.05190323293209076,.00896763801574707,.024500157684087753,.03689777851104736,.25286900997161865,.5585929751396179,.08087734878063202,.10979831218719482,.02598368003964424,.038939595222473145,.03322688490152359,.047577738761901855,.10997621715068817,.04795706272125244,.02598368003964424,.038939595222473145,.03322688490152359,.047577738761901855,.003621000098064542,.1835939884185791,.07794374972581863,.008966684341430664,.07794374972581863,.008966684341430664,.007533404976129532,.020931720733642578,.10131248831748962,.07732349634170532,.5625010132789612,.5218250155448914,.04933026805520058,.07732349634170532,.07532145082950592,.04795658588409424,.0850236713886261,.028268277645111084,.6875020265579224,.2718750238418579,.008582886308431625,.03737819194793701,.008582886308431625,.03737819194793701,.11658430099487305,.04638892412185669,.11106422543525696,.00896674394607544,.12150800228118896,.3085930347442627,.007099427282810211,.03942000865936279,.007099427282810211,.03942000865936279,.25360798835754395,.4335930347442627,.10002404451370239,.00896674394607544,.07242370396852493,.046388447284698486,.007099427282810211,.03942000865936279,.01857360079884529,.019969403743743896,.0462225005030632,.10979831218719482,.06249900162220001,.5952410101890564,.059218067675828934,.04795658588409424,.059218067675828934,.04795658588409424,.01857360079884529,.018409550189971924,.044998399913311005,.10979831218719482,.4374989867210388,.09534800052642822,.06690356880426407,.008966684341430664,.06690356880426407,.008966684341430664,.6874979734420776,.34531301259994507,.017222747206687927,.01918947696685791,.06846341490745544,.008966624736785889,.057993993163108826,.04795658588409424,.032921500504016876,.10979831218719482,.029636148363351822,.019969403743743896,.02364526502788067,.10979831218719482,.029636148363351822,.019969403743743896,.02364526502788067,.10979831218719482,.01326248049736023,.04464298486709595,.12177500128746033,.6835950016975403,.012804049998521805,.04527390003204346,.0372520349919796,.10979831218719482,.0372520349919796,.10979831218719482,.5033249855041504,.3086329698562622,.03230946138501167,.10979831218719482,.03230946138501167,.10979831218719482,.019623063504695892,.032455623149871826,.12873399257659912,.6835910081863403,.06665770709514618,.10979819297790527,.06354992836713791,.07732325792312622,.06354992836713791,.07732325792312622,.06665770709514618,.10979819297790527,.0031109999399632215,.4335930347442627,.06232583895325661,.077323317527771,.04066653922200203,.08043086528778076,.019623063504695892,.030895769596099854,.019623063504695892,.030895769596099854,.0635499358177185,.08043128252029419,.08367279171943665,.018008112907409668,.0635499358177185,.08043128252029419,.07098956406116486,.04795658588409424,.07098956406116486,.04795658588409424,.4375010132789612,.5215610265731812,.04066656902432442,.0773230791091919,.06665772199630737,.047956645488739014,.06665772199630737,.047956645488739014,.04066656902432442,.0773230791091919,.37138599157333374,.0585939884185791,.0235833041369915,.02519160509109497,.05921806022524834,.10979831218719482,.3133150041103363,.27218103408813477,.024563191458582878,.08005183935165405,.024563191458582878,.08005183935165405,.006182555109262466,.014631807804107666,.1068684309720993,.10979831218719482,.08398514240980148,.07732337713241577,.37139201164245605,.4335950016975403,.08398514240980148,.07732337713241577,.1068684309720993,.10979831218719482,.007099427282810211,.04338020086288452,.007099427282810211,.04338020086288452,.02333918772637844,.047576963901519775,.1056443378329277,.07732349634170532,.3787969946861267,.3085930347442627,.018139638006687164,.02645343542098999,.02333918772637844,.047576963901519775,.0558633916079998,.046388328075408936,.1068684458732605,.07732337713241577,.6207290291786194,.4335950016975403,.1068684458732605,.07732337713241577,.0558633916079998,.046388328075408936,.017222747206687927,.02519160509109497,.037558771669864655,.08005297183990479,.08367282897233963,.04560840129852295,.09698063135147095,.08043169975280762,.5630019903182983,.2720860242843628,.09054373949766159,.008966386318206787,.08831693977117538,.047956764698028564,.12188900262117386,.4335950016975403,.08831693977117538,.047956764698028564,.018139630556106567,.03689777851104736,.4375010132789612,.14693796634674072,.09450394660234451,.008966565132141113,.09450394660234451,.008966565132141113,.05055436119437218,.08043122291564941,.012844499200582504,.01937192678451538,.039303116500377655,.008966505527496338,.09264880418777466,.07732337713241577,.7453330159187317,.4335939884185791,.09264880418777466,.07732337713241577,.039303116500377655,.008966505527496338,.019623126834630966,.043863773345947266,.08087734878063202,.08043140172958374,.012844476848840714,.01385188102722168,.08831700682640076,.08043140172958374,.3125010132789612,.5214719772338867,.1875009983778,.3970370292663574,.08954101800918579,.08043140172958374,.08954101800918579,.08043140172958374,.03755873069167137,.0769452452659607,.011493649333715439,.014631807804107666,.07098963111639023,.08043122291564941,.07098963111639023,.08043122291564941,.10554413497447968,.046388864517211914,.10554413497447968,.046388864517211914,.49645400047302246,.4340590238571167,.025983694940805435,.045423686504364014,.05586344376206398,.008966565132141113,.08520916849374771,.04795658588409424,.08520916849374771,.04795658588409424,.5625010132789612,.39734500646591187,.01962309330701828,.007369518280029297,.011493649333715439,.02567189931869507,.04499842971563339,.04795628786087036,.18750199675559998,.6470130085945129,.06354992836713791,.04795616865158081,.08954101800918579,.07732349634170532,.04622248187661171,.04795628786087036,.08954101800918579,.07732349634170532,.04622248187661171,.04795628786087036,.012844499200582504,.026451826095581055,.6875010132789612,.14722901582717896,.024934161454439163,.01444941759109497,.04638303443789482,.008966565132141113,.11262404918670654,.046388864517211914,.6874989867210388,.09525102376937866,.5042709708213806,.4335930347442627,.1112002432346344,.08043169975280762,.08520916849374771,.07732337713241577,.008582878857851028,.043862223625183105,.008582878857851028,.043862223625183105,.01962309330701828,.03737986087799072,.08898389339447021,.008966386318206787,.01962309330701828,.03737986087799072,.09450394660234451,.04638838768005371,.08898389339447021,.008966386318206787,.4963819980621338,.18359601497650146,.01962309330701828,.03737986087799072,.09606381505727768,.046388328075408936,.6216750144958496,.308555006980896,.09698067605495453,.10979819297790527,.09698067605495453,.10979819297790527,.09606381505727768,.046388328075408936,.01962309330701828,.038939714431762695,.5624989867210388,.46984195709228516,.02493416890501976,.0184096097946167,.1112002432346344,.10979825258255005,.1112002432346344,.10979825258255005,.1068684458732605,.04795706272125244,.008582878857851028,.04542207717895508,.25361400842666626,.0585939884185791,.09264880418777466,.10979819297790527,.10997617989778519,.08043175935745239,.10997617989778519,.08043175935745239,.09264880418777466,.10979819297790527,.08502364158630371,.01170814037322998,.06250099837779999,.5219460129737854,.024563191458582878,.07694411277770996,.03200285881757736,.07694464921951294,.024563191458582878,.07694411277770996,.03200285881757736,.07694464921951294,.4374989867210388,.3451380133628845,.10564440488815308,.04795706272125244,.10564440488815308,.04795706272125244,.041890617460012436,.04795628786087036,.041890617460012436,.04795628786087036,.02493416890501976,.019969403743743896,.3125019967556,.14671200513839722,.0795036107301712,.008966624736785889,.11120033264160156,.07732337713241577,.007533404976129532,.01937192678451538,.02598368003964424,.03737974166870117,.37174901366233826,.18359798192977905,.02598368003964424,.03737974166870117,.05034333094954491,.00896763801574707,.11120033264160156,.04795718193054199,.05034333094954491,.00896763801574707,.11120033264160156,.04795718193054199,.04499838873744011,.08043122291564941,.49654099345207214,.058596014976501465,.07965327799320221,.10979831218719482,.023583341389894485,.038159728050231934,.023583341389894485,.038159728050231934,.023583341389894485,.038159728050231934,.06138351559638977,.04638826847076416,.5624989867210388,.09532797336578369,.05488619580864906,.07732349634170532,.007533375173807144,.009891688823699951,.061383482068777084,.008966565132141113,.621508002281189,.058596014976501465,.07221363484859467,.08043122291564941,.025983694940805435,.043863773345947266,.025983694940805435,.043863773345947266,.02450021728873253,.04590564966201782,.07794374972581863,.04638850688934326,.02450021728873253,.04590564966201782,.6215639710426331,.5585950016975403,.10710396617650986,.046388864517211914,.02450021728873253,.04590564966201782,.025983672589063644,.030895769596099854,.05366221442818642,.10979831218719482,.2464359998703003,.3085939884185791,.02767101861536503,.047577083110809326,.02767101861536503,.047577083110809326,.05366221442818642,.10979831218719482,.025983672589063644,.032455503940582275,.025983672589063644,.032455503940582275,.37213099002838135,.5585950016975403,.05488622561097145,.10979831218719482,.08831696212291718,.10979831218719482,.08831696212291718,.10979831218719482,.025983672589063644,.032455503940582275,.007099442183971405,.03689616918563843,.11262404918670654,.00896674394607544,.6286150217056274,.058592021465301514,.007099442183971405,.03689616918563843,.12366431206464767,.046389102935791016,.6875010132789612,.021937012672424316,.06232582405209541,.08043128252029419,.0850236713886261,.017228126525878906,.12366431206464767,.00896763801574707,.12366431206464767,.00896763801574707,.017222747206687927,.04464375972747803,.06846341490745544,.04638838768005371,.06846341490745544,.04638838768005371,.7464879751205444,.30859601497650146,.07532142847776413,.077323317527771,.07532142847776413,.077323317527771,.0850236713886261,.033788442611694336,.06788180023431778,.08043128252029419,.06788180023431778,.08043128252029419,.09264878183603287,.04795682430267334,.6875,.3975909948348999,.1068684309720993,.08043169975280762,.08367282897233963,.04008835554122925,.07242365181446075,.008967041969299316,.07242365181446075,.008967041969299316,.3124989867210388,.4702550172805786,.057993993163108826,.08043110370635986,.2463259994983673,.18359601497650146,.1056443527340889,.10979831218719482,.006182555109262466,.044642090797424316,.11658430099487305,.008967041969299316,.07654549926519394,.04795658588409424,.07654549926519394,.04795658588409424,.11658430099487305,.008967041969299316,.0625,.2718600034713745,.08367279171943665,.029048264026641846,.012844476848840714,.015411734580993652,.4375010132789612,.02183997631072998,.03633471950888634,.0769452452659607,.03633471950888634,.0769452452659607,.07965333014726639,.08043140172958374,.07965333014726639,.08043140172958374,.018139638006687164,.04590564966201782,.37845900654792786,.058592021465301514,.036334652453660965,.047578275203704834,.06690356880426407,.04638850688934326,.018139638006687164,.04590564966201782,.09698062390089035,.07732349634170532,.18749800324440002,.7201740145683289,.06665777415037155,.08043122291564941,.0850236713886261,.03534823656082153,.1874990016222,.47015100717544556,.09387288242578506,.04795682430267334,.09387288242578506,.04795682430267334,.09820473194122314,.07732337713241577,.09820473194122314,.07732337713241577,.08367279171943665,.03456830978393555,.08954101800918579,.10979831218719482,.09820473194122314,.04795682430267334,.12877599895000458,.4335930347442627,.02450018748641014,.032937586307525635,.012844454497098923,.008331894874572754,.08898389339447021,.04638838768005371,.08398512005805969,.08043140172958374,.4374989867210388,.2202489972114563,.18749800324440002,.5951610207557678,.0850236713886261,.018788039684295654,.07221363484859467,.04795658588409424,.12210442870855331,.00896763801574707,.007099363952875137,.03041207790374756,.4969879984855652,.5585939884185791,.0852091833949089,.10979831218719482,.07098958641290665,.07732349634170532,.007099363952875137,.03041207790374756,.0753214880824089,.10979819297790527,.07221363484859467,.07732337713241577,.07221363484859467,.07732337713241577,.24624399840831757,.5585960149765015,.0753214880824089,.10979819297790527,.008582886308431625,.030893981456756592,.008582886308431625,.030893981456756592,.05799401178956032,.07732337713241577,.05799401178956032,.07732337713241577,.6285120248794556,.30859100818634033,.04933030903339386,.047956645488739014,.04933030903339386,.047956645488739014,.01962307095527649,.024411559104919434,.018139563500881195,.0239296555519104,.05055434629321098,.04795658588409424,.057423245161771774,.046388328075408936,.7465599775314331,.5585950016975403,.02023131214082241,.0475764274597168,.1286740005016327,.1835920214653015,.008582886308431625,.032453835010528564,.07654549926519394,.10979831218719482,.02023131214082241,.0475764274597168,.007099427282810211,.03293585777282715,.007099427282810211,.03293585777282715,.019007263705134392,.0475764274597168,.007099427282810211,.03293585777282715,.04933033511042595,.10979831218719482,.0032250001095235348,.6835929751396179,.061973001807928085,.647022008895874,.01900731585919857,.07694333791732788,.02333913929760456,.08005183935165405,.01900731585919857,.07694333791732788,.007533375173807144,.01385188102722168,.05799407511949539,.10979831218719482,.1874990016222,.22021400928497314,.007533375173807144,.015411734580993652,.02023131214082241,.07694333791732788,.6296669840812683,.4335930347442627,.06788180023431778,.10979831218719482,.04482320323586464,.04638856649398804,.018139563500881195,.032937586307525635,.018139563500881195,.032937586307525635,.018139563500881195,.032937586307525635,.1875009983778,.14697301387786865,.0850236713886261,.03930848836898804,.1056443378329277,.08043169975280762,.1056443378329277,.08043169975280762,.07654549926519394,.08043128252029419,.07654549926519394,.08043128252029419,.0850236713886261,.04638838768005371,.07221363484859467,.10979831218719482,.07221363484859467,.10979831218719482,.09820473194122314,.08043169975280762,.09820473194122314,.08043169975280762,.5625010132789612,.02186000347137451,.044998399913311005,.0773230791091919,.09698063135147095,.04795682430267334,.023583319038152695,.031675636768341064,.044998399913311005,.0773230791091919,.09698063135147095,.04795682430267334,.24626600742340088,.6835960149765015,.023583319038152695,.031675636768341064,.0850236713886261,.044828593730926514,.437734991312027,.46996796131134033,.036334652453660965,.08005297183990479,.036334652453660965,.08005297183990479,.07098956406116486,.10979831218719482,.006182555109262466,.031673967838287354,.05055436119437218,.10979831218719482,.3786180019378662,.1835920214653015,.08398512005805969,.10979831218719482,.08398512005805969,.10979831218719482,.05055436119437218,.10979831218719482,.03930313140153885,.04638850688934326,.04482320323586464,.008966565132141113,.04482320323586464,.008966565132141113,.6875,.4695960283279419,.02358332648873329,.013669490814208984,.04086293280124664,.04638850688934326,.04086293280124664,.04638850688934326,.024934161454439163,.012889564037322998,.0625,.3453270196914673,.11106422543525696,.04638880491256714,.018139638006687164,.04338186979293823,.018139638006687164,.04338186979293823,.07654549926519394,.07732349634170532,.04086294770240784,.008966505527496338,.0034920000471174717,.3085939884185791,.018139638006687164,.04338186979293823,.007533375173807144,.008331894874572754,.6874989867210388,.21995800733566284,.05366221442818642,.07732349634170532,.028895026072859764,.07694411277770996,.05366221442818642,.07732349634170532,.028895026072859764,.07694411277770996,.06294332444667816,.04638826847076416,.1875,.34528303146362305,.027670973911881447,.07694411277770996,.006182555109262466,.009111762046813965,.07398355007171631,.04638838768005371,.12210451066493988,.046389102935791016,.12210451066493988,.046389102935791016,.12875600159168243,.5585910081863403,.07398355007171631,.04638838768005371,.006182555109262466,.03815799951553345,.06250099837779999,.39662301540374756,.0905437171459198,.04638838768005371,.040666673332452774,.10979831218719482,.040666673332452774,.10979831218719482,.0905437171459198,.04638838768005371,.012844454497098923,.009891688823699951,.011493615806102753,.009111762046813965,.4374989867210388,.5956270098686218,.08520913124084473,.08043140172958374,.08520913124084473,.08043140172958374,.04189063608646393,.10979831218719482,.008582908660173416,.03893798589706421,.11814413964748383,.04638892412185669,.6284400224685669,.5585929751396179,.10158386081457138,.00896674394607544,.10158386081457138,.00896674394607544,.11814413964748383,.04638892412185669,.06232590600848198,.10979831218719482,.04638301953673363,.04638856649398804,.04638301953673363,.04638856649398804,.7463849782943726,.058596014976501465,.06232590600848198,.10979831218719482,.01722273975610733,.031675636768341064,.04189063608646393,.08043086528778076,.04189063608646393,.08043086528778076,.0635499358177185,.10979831218719482,.3780120015144348,.5585929751396179,.018139611929655075,.030413687229156494,.018139611929655075,.030413687229156494,.017222747206687927,.038159728050231934,.08954101800918579,.047956764698028564,.7459149956703186,.18359500169754028,.05366213247179985,.04795628786087036,.017222747206687927,.038159728050231934,.023583341389894485,.04464375972747803,.25325098633766174,.18358999490737915,.0795036107301712,.04638838768005371,.10253656655550003,.08043175935745239,.10253656655550003,.08043175935745239,.0795036107301712,.04638838768005371,.08087733387947083,.07732349634170532,.10710396617650986,.008966803550720215,.10710396617650986,.008966803550720215,.5624989867210388,.5953620076179504,.01962309330701828,.014449357986450195,.025983653962612152,.02597147226333618,.025983653962612152,.02597147226333618,.10131251811981201,.04795682430267334,.5034360289573669,.5585929751396179,.08087733387947083,.04795646667480469,.08087733387947083,.04795646667480469,.10131251811981201,.04795682430267334,.37854599952697754,.4331200122833252,.01326248049736023,.04590487480163574,.019313467666506767,.08005118370056152,.03664000332355499,.10979831218719482,.019313467666506767,.08005118370056152,.029636148363351822,.018707633018493652,.25348299741744995,.3081200122833252,.02889440953731537,.019728541374206543,.024257240816950798,.10979831218719482,.02797701396048069,.10979831218719482,.02797701396048069,.10979831218719482,.02889440953731537,.01894855499267578,.028589049354195595,.10979831218719482,.621649980545044,.18359601497650146,.02889440953731537,.01894855499267578,.019925372675061226,.08005118370056152,.561972975730896,.22008800506591797,.02889503724873066,.08005237579345703,.02889503724873066,.08005237579345703,.007533404976129532,.02645176649093628,.06788178533315659,.07732349634170532,.06788178533315659,.07732349634170532,.007533404976129532,.024891972541809082,.06665770709514618,.07732349634170532,.3125,.0952489972114563,.09264882653951645,.08043169975280762,.0036299999337643385,.5585929751396179,.04622241482138634,.08043122291564941,.03200281038880348,.047577738761901855,.024500224739313126,.03942161798477173,.12137000262737274,.5585950016975403,.024563191458582878,.047576963901519775,.059218067675828934,.07732349634170532,.01962307095527649,.025971412658691406],normalized:!1}},index:{type:"Uint16Array",array:[28,234,182,303,269,285,521,391,482,142,593,355,209,84,89,440,512,467,168,146,454,320,118,222,535,280,109,40,32,563,488,479,398,419,273,186,541,74,78,326,69,331,240,435,295,473,26,178,626,53,309,51,436,448,96,97,103,255,422,45,5,618,615,65,508,264,284,376,373,315,160,632,550,126,237,254,61,366,499,344,348,165,408,414,557,201,576,506,431,365,329,95,140,145,406,36,578,572,486,16,302,296,72,59,68,158,163,169,177,179,603,62,594,0,393,48,489,352,350,76,543,346,534,378,197,437,528,417,42,480,477,212,613,173,607,230,223,635,595,102,111,555,432,556,494,507,232,86,289,218,314,121,100,244,30,27,407,252,259,304,55,325,157,147,374,396,11,154,14,270,41,271,279,122,330,129,341,522,281,525,624,82,621,427,421,387,199,447,438,495,260,511,80,313,85,573,552,560,501,426,429,43,410,258,187,389,420,248,424,390,493,445,465,347,540,77,411,131,251,462,474,481,12,565,155,150,283,372,490,217,392,587,71,66,386,402,144,161,453,634,58,363,367,94,597,141,277,238,125,3,600,8,136,319,98,300,498,233,17,538,345,324,202,115,394,548,49,318,220,119,33,456,143,335,56,128,39,225,460,91,336,134,198,567,575,361,537,107,383,166,416,404,562,35,189,123,192,211,174,610,116,101,120,208,397,478,515,559,434,226,321,221,306,311,54,620,612,614,369,257,253,291,554,235,139,586,327,245,524,531,268,216,287,569,520,484,23,513,243,622,204,625,1,604,64,545,379,439,592,263,356,509,181,231,25,184,172,297,242,293,503,276,272,405,526,151,159,337,164,28,298,234,303,227,269,521,247,391,142,598,593,209,608,84,468,464,451,450,444,470,168,384,146,320,117,118,535,581,280,40,461,32,488,463,479,419,505,273,541,360,74,326,585,69,240,514,435,473,472,26,626,206,53,51,547,436,96,137,97,255,430,422,5,10,618,65,602,508,284,570,376,315,628,160,550,191,126,254,130,61,499,18,344,165,338,408,557,441,201,358,106,364,110,502,370,185,195,487,194,577,485,239,583,292,579,21,290,79,584,357,354,265,351,46,250,529,533,381,413,616,609,175,457,458,635,458,230,635,112,207,9,6,596,113,219,400,90,87,308,288,371,549,152,153,561,148,396,215,11,631,135,342,132,332,340,200,443,446,496,349,261,81,627,310,574,193,553,504,418,425,47,415,409,190,483,388,246,44,423,492,50,449,347,343,540,412,339,127,466,469,476,15,38,564,150,527,283,491,399,213,588,75,70,385,530,403,162,171,452,60,73,359,93,105,601,275,580,236,2,590,599,133,630,317,299,19,497,20,582,536,323,52,205,395,156,544,316,633,224,34,459,455,333,67,57,37,266,229,92,328,334,196,377,571,362,542,539,382,170,167,401,149,566,188,274,124,210,475,176,114,104,99,208,88,397,516,442,558,228,307,322,305,286,312,619,83,611,368,428,256,294,433,551,138,353,589,249,518,523,267,13,214,568,282,519,22,471,517,623,7,203,4,617,606,546,375,380,591,63,262,510,605,180,24,31,183,301,29,241,500,108,278,405,532,526,159,629,337]},boundingSphere:{center:[0,0,-762939453125e-17],radius:160.50603975869993}},faceValues:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30],rotationCombinations:{"1,2":[-58,-18,-148],"1,3":[122,-18,32],"1,4":[-159,30,-69],"1,5":[21,150,-69],"1,6":[21,-30,69],"1,7":[0,90,-90],"1,8":[122,18,-32],"1,9":[-58,126,32],"1,10":[58,54,148],"1,11":[-122,-18,-32],"1,12":[159,30,69],"1,13":[58,54,-32],"1,14":[-58,54,32],"1,15":[90,0,90],"1,16":[-90,0,-90],"1,17":[122,54,32],"1,18":[-122,54,-32],"1,19":[-21,30,69],"1,20":[58,-18,-32],"1,21":[58,126,-32],"1,22":[-58,54,-148],"1,23":[-58,18,-32],"1,24":[0,90,90],"1,25":[-21,30,-111],"1,26":[21,30,111],"1,27":[-21,-150,-69],"1,28":[-58,-18,32],"1,29":[58,18,32],"1,30":[-180,0,0],"2,3":[-21,150,69],"2,4":[-58,-126,-32],"2,5":[122,-54,-32],"2,6":[-58,54,-148],"2,7":[-122,-54,32],"2,8":[0,-180,0],"2,9":[-159,-30,69],"2,10":[-122,-18,-32],"2,11":[58,-18,148],"2,12":[159,-30,-69],"2,13":[58,-162,-32],"2,14":[-58,-54,148],"2,15":[-159,30,-69],"2,16":[21,-30,69],"2,17":[21,-150,69],"2,18":[0,-90,90],"2,19":[-58,-18,-148],"2,20":[58,126,-32],"2,21":[0,-90,-90],"2,22":[-58,-54,-32],"2,23":[-21,-30,111],"2,24":[58,-126,32],"2,25":[-58,-18,32],"2,26":[-90,0,-90],"2,27":[122,18,-32],"2,28":[0,0,-180],"2,29":[58,162,32],"2,30":[-58,-162,32],"3,4":[90,0,-90],"3,5":[90,0,90],"3,6":[-90,0,90],"3,7":[122,54,32],"3,8":[21,30,-69],"3,9":[58,54,148],"3,10":[0,90,90],"3,11":[122,-54,-32],"3,12":[58,18,32],"3,13":[0,90,-90],"3,14":[159,30,69],"3,15":[-21,30,69],"3,16":[159,-30,-69],"3,17":[58,54,-32],"3,18":[122,18,-32],"3,19":[21,150,-69],"3,20":[-58,18,-32],"3,21":[-58,162,-32],"3,22":[-21,150,69],"3,23":[180,0,0],"3,24":[-58,126,32],"3,25":[-159,30,-69],"3,26":[58,126,-32],"3,27":[21,-30,69],"3,28":[-159,-30,69],"3,29":[-58,54,32],"3,30":[58,-18,-32],"4,5":[0,0,180],"4,6":[180,0,0],"4,7":[-58,18,148],"4,8":[-58,-54,-32],"4,9":[-58,-18,-148],"4,10":[-90,0,90],"4,11":[58,18,32],"4,12":[-21,-30,111],"4,13":[-90,0,-90],"4,14":[-58,54,-148],"4,15":[-122,-54,32],"4,16":[58,54,-32],"4,17":[-58,-18,32],"4,18":[-21,30,69],"4,19":[-122,54,-32],"4,20":[21,-150,69],"4,21":[-21,30,-111],"4,22":[-58,54,32],"4,23":[0,90,90],"4,24":[-58,18,-32],"4,25":[58,126,-32],"4,26":[-122,18,32],"4,27":[58,-54,-148],"4,28":[122,54,32],"4,29":[-122,-18,-32],"4,30":[21,-30,69],"5,6":[0,180,0],"5,7":[58,-18,-32],"5,8":[58,54,148],"5,9":[58,18,32],"5,10":[90,0,-90],"5,11":[-58,-18,-148],"5,12":[21,30,-69],"5,13":[90,0,90],"5,14":[58,-54,32],"5,15":[-58,126,32],"5,16":[-58,-54,148],"5,17":[58,18,-148],"5,18":[21,-30,-111],"5,19":[-58,-126,-32],"5,20":[159,30,69],"5,21":[21,-30,69],"5,22":[58,-54,-148],"5,23":[0,-90,-90],"5,24":[58,-18,148],"5,25":[122,-54,-32],"5,26":[-58,-162,32],"5,27":[-58,54,32],"5,28":[58,-126,32],"5,29":[-58,162,-32],"5,30":[-21,30,-111],"6,7":[-58,162,-32],"6,8":[122,-54,-32],"6,9":[-58,-162,32],"6,10":[90,0,90],"6,11":[-122,18,32],"6,12":[-21,-150,-69],"6,13":[90,0,-90],"6,14":[-58,126,32],"6,15":[58,-54,32],"6,16":[-122,54,-32],"6,17":[122,-18,32],"6,18":[159,30,69],"6,19":[58,54,-32],"6,20":[21,-30,-111],"6,21":[-21,150,69],"6,22":[122,54,32],"6,23":[0,90,-90],"6,24":[122,18,-32],"6,25":[58,54,148],"6,26":[58,18,32],"6,27":[58,-126,32],"6,28":[-58,54,32],"6,29":[58,-18,-32],"6,30":[-159,-30,69],"7,8":[-58,54,-148],"7,9":[-21,30,69],"7,10":[21,30,-69],"7,11":[58,-126,32],"7,12":[-58,18,-32],"7,13":[21,30,111],"7,14":[21,-30,69],"7,15":[0,90,-90],"7,16":[0,-90,-90],"7,17":[-21,30,-111],"7,18":[-21,-30,-69],"7,19":[58,-18,148],"7,20":[122,54,32],"7,21":[-21,-30,111],"7,22":[21,-30,-111],"7,23":[58,-54,32],"7,24":[0,0,180],"7,25":[58,-18,-32],"7,26":[58,18,-148],"7,27":[-122,18,32],"7,28":[-58,-126,-32],"7,29":[58,54,148],"7,30":[-90,0,-90],"8,9":[-21,30,-111],"8,10":[-58,18,148],"8,11":[122,18,-32],"8,12":[21,30,111],"8,13":[-58,18,-32],"8,14":[-122,54,-32],"8,15":[-21,-30,111],"8,16":[-21,150,69],"8,17":[-21,30,69],"8,18":[0,90,90],"8,19":[-122,18,32],"8,20":[-58,-54,-32],"8,21":[0,90,-90],"8,22":[58,126,-32],"8,23":[-159,30,-69],"8,24":[-58,54,32],"8,25":[58,162,32],"8,26":[-90,0,90],"8,27":[58,-18,148],"8,28":[180,0,0],"8,29":[-58,-18,32],"8,30":[58,18,32],"9,10":[21,-30,-111],"9,11":[58,162,32],"9,12":[-21,30,-111],"9,13":[21,-30,69],"9,14":[-58,-54,-32],"9,15":[58,18,-148],"9,16":[58,-162,-32],"9,17":[0,0,-180],"9,18":[-58,-18,-148],"9,19":[0,-90,90],"9,20":[90,0,90],"9,21":[-58,-18,32],"9,22":[-58,-54,148],"9,23":[58,-126,32],"9,24":[-21,-30,111],"9,25":[0,-90,-90],"9,26":[58,-54,-148],"9,27":[0,90,-90],"9,28":[21,-150,69],"9,29":[58,-18,148],"9,30":[-58,54,-148],"10,11":[-21,-150,-69],"10,12":[-58,-54,-32],"10,13":[0,0,180],"10,14":[58,-18,148],"10,15":[-58,18,-32],"10,16":[122,-18,32],"10,17":[-21,-30,-69],"10,18":[58,-54,32],"10,19":[58,18,-148],"10,20":[-58,54,-148],"10,21":[58,-54,-148],"10,22":[58,-18,-32],"10,23":[90,0,90],"10,24":[21,-30,-111],"10,25":[58,18,32],"10,26":[21,30,-69],"10,27":[-122,-18,-32],"10,28":[-58,162,-32],"10,29":[-21,30,-111],"10,30":[58,-126,32],"11,12":[-90,0,90],"11,13":[-159,30,-69],"11,14":[0,90,90],"11,15":[-159,-30,69],"11,16":[21,30,-69],"11,17":[-122,18,32],"11,18":[-58,54,32],"11,19":[122,54,32],"11,20":[159,-30,-69],"11,21":[-58,54,-148],"11,22":[0,90,-90],"11,23":[58,54,-32],"11,24":[-122,54,-32],"11,25":[-58,126,32],"11,26":[159,30,69],"11,27":[-58,-54,148],"11,28":[58,18,32],"11,29":[-180,0,0],"11,30":[-58,-18,32],"12,13":[58,54,148],"12,14":[90,0,90],"12,15":[-58,54,32],"12,16":[122,-54,-32],"12,17":[21,30,-69],"12,18":[58,-18,-32],"12,19":[-58,162,-32],"12,20":[-122,54,-32],"12,21":[58,-18,148],"12,22":[90,0,-90],"12,23":[122,-18,32],"12,24":[58,18,-148],"12,25":[122,18,-32],"12,26":[-58,126,32],"12,27":[-58,-18,32],"12,28":[-21,-150,-69],"12,29":[0,90,-90],"12,30":[-21,-30,-69],"13,14":[-58,18,-32],"13,15":[58,-18,148],"13,16":[58,162,32],"13,17":[21,30,111],"13,18":[-58,54,-148],"13,19":[-58,-18,32],"13,20":[58,-54,32],"13,21":[-58,54,32],"13,22":[-58,18,148],"13,23":[-90,0,-90],"13,24":[-21,30,69],"13,25":[-58,-18,-148],"13,26":[-21,-30,111],"13,27":[-58,162,-32],"13,28":[-122,-18,-32],"13,29":[21,-30,69],"13,30":[122,54,32],"14,15":[-58,162,-32],"14,16":[-58,-18,-148],"14,17":[58,54,148],"14,18":[-21,30,-111],"14,19":[21,-30,69],"14,20":[122,-18,32],"14,21":[-21,30,69],"14,22":[0,0,180],"14,23":[-21,-30,-69],"14,24":[21,30,111],"14,25":[21,-30,-111],"14,26":[58,-18,148],"14,27":[21,150,-69],"14,28":[-58,-54,-32],"14,29":[90,0,90],"14,30":[-122,54,-32],"15,16":[180,0,0],"15,17":[58,-18,-32],"15,18":[122,-18,32],"15,19":[-58,126,32],"15,20":[-21,30,-111],"15,21":[-58,-162,32],"15,22":[122,18,-32],"15,23":[159,30,69],"15,24":[90,0,-90],"15,25":[122,54,32],"15,26":[58,54,-32],"15,27":[-58,-54,-32],"15,28":[21,150,-69],"15,29":[21,30,-69],"15,30":[0,-90,-90],"16,17":[-122,-18,-32],"16,18":[-58,-18,32],"16,19":[-58,54,-148],"16,20":[-21,150,69],"16,21":[-58,-18,-148],"16,22":[-58,18,-32],"16,23":[-21,30,69],"16,24":[-90,0,-90],"16,25":[-58,54,32],"16,26":[-122,54,-32],"16,27":[122,-54,-32],"16,28":[21,30,111],"16,29":[-159,30,-69],"16,30":[0,-90,90],"17,18":[58,18,32],"17,19":[0,90,-90],"17,20":[-90,0,-90],"17,21":[58,18,-148],"17,22":[58,54,-32],"17,23":[122,54,32],"17,24":[21,30,-69],"17,25":[0,90,90],"17,26":[-58,54,32],"17,27":[0,-90,90],"17,28":[159,30,69],"17,29":[-58,18,-32],"17,30":[58,-54,32],"18,19":[58,54,148],"18,20":[-159,30,-69],"18,21":[0,0,-180],"18,22":[21,30,-69],"18,23":[58,18,32],"18,24":[-21,30,-111],"18,25":[58,54,-32],"18,26":[0,90,-90],"18,27":[-122,-54,32],"18,28":[90,0,90],"18,29":[-122,54,-32],"18,30":[-58,-54,-32],"19,20":[0,-90,-90],"19,21":[58,54,-32],"19,22":[21,30,111],"19,23":[-21,30,-111],"19,24":[58,18,32],"19,25":[0,0,180],"19,26":[21,-30,69],"19,27":[0,180,0],"19,28":[-58,18,-32],"19,29":[58,-54,32],"19,30":[159,30,69],"20,21":[21,150,-69],"20,22":[58,162,32],"20,23":[-122,-18,-32],"20,24":[58,126,-32],"20,25":[-90,0,-90],"20,26":[-58,18,148],"20,27":[90,0,90],"20,28":[-122,-54,32],"20,29":[-21,30,69],"20,30":[122,18,-32],"21,22":[-21,-30,111],"21,23":[-58,-18,-148],"21,24":[21,-30,69],"21,25":[-58,-54,148],"21,26":[0,-90,90],"21,27":[-58,126,32],"21,28":[-90,0,-90],"21,29":[-58,-126,-32],"21,30":[58,54,148],"22,23":[21,30,111],"22,24":[-21,-30,-69],"22,25":[-21,30,69],"22,26":[-58,18,-32],"22,27":[159,-30,-69],"22,28":[58,54,148],"22,29":[-90,0,-90],"22,30":[-58,-126,-32],"23,24":[-58,54,-148],"23,25":[21,30,-69],"23,26":[58,54,148],"23,27":[-159,-30,69],"23,28":[21,-30,69],"23,29":[122,54,32],"23,30":[-122,-18,-32],"24,25":[-58,18,148],"24,26":[-58,-18,32],"24,27":[-58,-162,32],"24,28":[-122,54,-32],"24,29":[-58,-54,-32],"24,30":[90,0,90],"25,26":[-21,30,-111],"25,27":[-180,0,0],"25,28":[58,-18,148],"25,29":[-58,54,-148],"25,30":[21,-150,69],"26,27":[21,-150,69],"26,28":[0,90,-90],"26,29":[-21,-30,-69],"26,30":[-21,-150,-69],"27,28":[58,-162,-32],"27,29":[-58,126,32],"27,30":[21,-30,-111],"28,29":[122,-18,32],"28,30":[-122,18,32],"29,30":[122,-18,32]}}};class GLTFLoader extends Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register((function(e){return new GLTFMaterialsClearcoatExtension(e)})),this.register((function(e){return new GLTFTextureBasisUExtension(e)})),this.register((function(e){return new GLTFTextureWebPExtension(e)})),this.register((function(e){return new GLTFMaterialsSheenExtension(e)})),this.register((function(e){return new GLTFMaterialsTransmissionExtension(e)})),this.register((function(e){return new GLTFMaterialsVolumeExtension(e)})),this.register((function(e){return new GLTFMaterialsIorExtension(e)})),this.register((function(e){return new GLTFMaterialsEmissiveStrengthExtension(e)})),this.register((function(e){return new GLTFMaterialsSpecularExtension(e)})),this.register((function(e){return new GLTFMaterialsIridescenceExtension(e)})),this.register((function(e){return new GLTFLightsExtension(e)})),this.register((function(e){return new GLTFMeshoptCompression(e)}))}load(e,t,i,n){const r=this;let s;s=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:LoaderUtils.extractUrlBase(e),this.manager.itemStart(e);const _onError=function(t){n?n(t):console.error(t),r.manager.itemError(e),r.manager.itemEnd(e)},a=new FileLoader(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(i){try{r.parse(i,s,(function(i){t(i),r.manager.itemEnd(e)}),_onError)}catch(e){_onError(e)}}),i,_onError)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,n){let r;const s={},a={};if("string"==typeof e)r=e;else{if(LoaderUtils.decodeText(new Uint8Array(e,0,4))===Ri){try{s[Ii.KHR_BINARY_GLTF]=new GLTFBinaryExtension(e)}catch(e){return void(n&&n(e))}r=s[Ii.KHR_BINARY_GLTF].content}else r=LoaderUtils.decodeText(new Uint8Array(e))}const o=JSON.parse(r);if(void 0===o.asset||o.asset.version[0]<2)return void(n&&n(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.")));const l=new GLTFParser(o,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(s),l.setPlugins(a),l.parse(i,n)}parseAsync(e,t){const i=this;return new Promise((function(n,r){i.parse(e,t,n,r)}))}}function GLTFRegistry(){let e={};return{get:function(t){return e[t]},add:function(t,i){e[t]=i},remove:function(t){delete e[t]},removeAll:function(){e={}}}}const Ii={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_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",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_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_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression"};class GLTFLightsExtension{constructor(e){this.parser=e,this.name=Ii.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const e=this.parser,t=this.parser.json.nodes||[];for(let i=0,n=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,r.source,s)}}class GLTFTextureWebPExtension{constructor(e){this.parser=e,this.name=Ii.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){const t=this.name,i=this.parser,n=i.json,r=n.textures[e];if(!r.extensions||!r.extensions[t])return null;const s=r.extensions[t],a=n.images[s.source];let o=i.textureLoader;if(a.uri){const e=i.options.manager.getHandler(a.uri);null!==e&&(o=e)}return this.detectSupport().then((function(r){if(r)return i.loadTextureImage(e,s.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){const t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}}class GLTFMeshoptCompression{constructor(e){this.name=Ii.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){const t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){const e=i.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),r=this.parser.options.meshoptDecoder;if(!r||!r.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return Promise.all([n,r.ready]).then((function(t){const i=e.byteOffset||0,n=e.byteLength||0,s=e.count,a=e.byteStride,o=new ArrayBuffer(s*a),l=new Uint8Array(t[0],i,n);return r.decodeGltfBuffer(new Uint8Array(o),s,a,l,e.mode,e.filter),o}))}return null}}const Ri="glTF",Fi=1313821514,Oi=5130562;class GLTFBinaryExtension{constructor(e){this.name=Ii.KHR_BINARY_GLTF,this.content=null,this.body=null;const t=new DataView(e,0,12);if(this.header={magic:LoaderUtils.decodeText(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==Ri)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-12,n=new DataView(e,12);let r=0;for(;r",t).replace("#include ",i).replace("#include ",n).replace("#include ",r).replace("#include ",s)},Object.defineProperties(this,{specular:{get:function(){return a.specular.value},set:function(e){a.specular.value=e}},specularMap:{get:function(){return a.specularMap.value},set:function(e){a.specularMap.value=e,e?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return a.glossiness.value},set:function(e){a.glossiness.value=e}},glossinessMap:{get:function(){return a.glossinessMap.value},set:function(e){a.glossinessMap.value=e,e?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this.setValues(e)}copy(e){return super.copy(e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}class GLTFMaterialsPbrSpecularGlossinessExtension{constructor(){this.name=Ii.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity"]}getMaterialType(){return GLTFMeshStandardSGMaterial}extendParams(e,t,i){const n=t.extensions[this.name];e.color=new Color$1(1,1,1),e.opacity=1;const r=[];if(Array.isArray(n.diffuseFactor)){const t=n.diffuseFactor;e.color.fromArray(t),e.opacity=t[3]}if(void 0!==n.diffuseTexture&&r.push(i.assignTexture(e,"map",n.diffuseTexture,3001)),e.emissive=new Color$1(0,0,0),e.glossiness=void 0!==n.glossinessFactor?n.glossinessFactor:1,e.specular=new Color$1(1,1,1),Array.isArray(n.specularFactor)&&e.specular.fromArray(n.specularFactor),void 0!==n.specularGlossinessTexture){const t=n.specularGlossinessTexture;r.push(i.assignTexture(e,"glossinessMap",t)),r.push(i.assignTexture(e,"specularMap",t,3001))}return Promise.all(r)}createMaterial(e){const t=new GLTFMeshStandardSGMaterial(e);return t.fog=!0,t.color=e.color,t.map=void 0===e.map?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=void 0===e.aoMap?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=void 0===e.emissiveIntensity?1:e.emissiveIntensity,t.emissiveMap=void 0===e.emissiveMap?null:e.emissiveMap,t.bumpMap=void 0===e.bumpMap?null:e.bumpMap,t.bumpScale=1,t.normalMap=void 0===e.normalMap?null:e.normalMap,t.normalMapType=0,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=void 0===e.specularMap?null:e.specularMap,t.specular=e.specular,t.glossinessMap=void 0===e.glossinessMap?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=void 0===e.envMap?null:e.envMap,t.envMapIntensity=1,t}}class GLTFMeshQuantizationExtension{constructor(){this.name=Ii.KHR_MESH_QUANTIZATION}}class GLTFCubicSplineInterpolant extends Interpolant{constructor(e,t,i,n){super(e,t,i,n)}copySampleValue_(e){const t=this.resultBuffer,i=this.sampleValues,n=this.valueSize,r=e*n*3+n;for(let e=0;e!==n;e++)t[e]=i[r+e];return t}interpolate_(e,t,i,n){const r=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=2*a,l=3*a,c=n-t,h=(i-t)/c,d=h*h,u=d*h,p=e*l,m=p-l,f=-2*u+3*d,g=u-d,v=1-f,y=g-d+h;for(let e=0;e!==a;e++){const t=s[m+e+a],i=s[m+e+o]*c,n=s[p+e+a],l=s[p+e]*c;r[e]=v*t+y*i+f*n+g*l}return r}}const Ni=new Quaternion$1;class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant{interpolate_(e,t,i,n){const r=super.interpolate_(e,t,i,n);return Ni.fromArray(r).normalize().toArray(r),r}}const zi=0,Bi=1,Ui=2,Vi=3,ki=4,Gi=5,Hi=6,Wi={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},ji={9728:1003,9729:1006,9984:1004,9985:1007,9986:1005,9987:1008},Xi={33071:1001,33648:1002,10497:1e3},qi={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Yi={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Zi={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Ki={CUBICSPLINE:void 0,LINEAR:2301,STEP:2300},Qi="OPAQUE",Ji="MASK",$i="BLEND";function addUnknownExtensionsToUserData(e,t,i){for(const n in i.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=i.extensions[n])}function assignExtrasToUserData(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function updateMorphTargets(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let i=0,n=t.weights.length;i-1,r=n?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1;"undefined"==typeof createImageBitmap||i||n&&r<98?this.textureLoader=new TextureLoader(this.options.manager):this.textureLoader=new ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){const i=this,n=this.json,r=this.extensions;this.cache.removeAll(),this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])})).then((function(t){const s={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:i,userData:{}};addUnknownExtensionsToUserData(r,s,n),assignExtrasToUserData(s,n),Promise.all(i._invokeAll((function(e){return e.afterRoot&&e.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){const e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let i=0,n=t.length;i{const i=this.associations.get(e);null!=i&&this.associations.set(t,i);for(const[i,n]of e.children.entries())updateMappings(n,t.children[i])};return updateMappings(i,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){const t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&p.setY(t,h[e*s+1]),s>=3&&p.setZ(t,h[e*s+2]),s>=4&&p.setW(t,h[e*s+3]),s>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return p}))}loadTexture(e){const t=this.json,i=this.options,n=t.textures[e].source,r=t.images[n];let s=this.textureLoader;if(r.uri){const e=i.manager.getHandler(r.uri);null!==e&&(s=e)}return this.loadTextureImage(e,n,s)}loadTextureImage(e,t,i){const n=this,r=this.json,s=r.textures[e],a=r.images[t],o=(a.uri||a.bufferView)+":"+s.sampler;if(this.textureCache[o])return this.textureCache[o];const l=this.loadImageSource(t,i).then((function(t){t.flipY=!1,s.name&&(t.name=s.name);const i=(r.samplers||{})[s.sampler]||{};return t.magFilter=ji[i.magFilter]||1006,t.minFilter=ji[i.minFilter]||1008,t.wrapS=Xi[i.wrapS]||1e3,t.wrapT=Xi[i.wrapT]||1e3,n.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[o]=l,l}loadImageSource(e,t){const i=this,n=this.json,r=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));const s=n.images[e],a=self.URL||self.webkitURL;let o=s.uri||"",l=!1;if(void 0!==s.bufferView)o=i.getDependency("bufferView",s.bufferView).then((function(e){l=!0;const t=new Blob([e],{type:s.mimeType});return o=a.createObjectURL(t),o}));else if(void 0===s.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");const c=Promise.resolve(o).then((function(e){return new Promise((function(i,n){let s=i;!0===t.isImageBitmapLoader&&(s=function(e){const t=new Texture(e);t.needsUpdate=!0,i(t)}),t.load(LoaderUtils.resolveURL(e,r.path),s,void 0,n)}))})).then((function(e){return!0===l&&a.revokeObjectURL(o),e.userData.mimeType=s.mimeType||function getImageURIMimeType(e){return e.search(/\.jpe?g($|\?)/i)>0||0===e.search(/^data\:image\/jpeg/)?"image/jpeg":e.search(/\.webp($|\?)/i)>0||0===e.search(/^data\:image\/webp/)?"image/webp":"image/png"}(s.uri),e})).catch((function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e}));return this.sourceCache[e]=c,c}assignTexture(e,t,i,n){const r=this;return this.getDependency("texture",i.index).then((function(s){if(void 0===i.texCoord||0==i.texCoord||"aoMap"===t&&1==i.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),r.extensions[Ii.KHR_TEXTURE_TRANSFORM]){const e=void 0!==i.extensions?i.extensions[Ii.KHR_TEXTURE_TRANSFORM]:void 0;if(e){const t=r.associations.get(s);s=r.extensions[Ii.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),r.associations.set(s,t)}}return void 0!==n&&(s.encoding=n),e[t]=s,s}))}assignFinalMaterial(e){const t=e.geometry;let i=e.material;const n=void 0===t.attributes.tangent,r=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){const e="PointsMaterial:"+i.uuid;let t=this.cache.get(e);t||(t=new PointsMaterial,Material.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,t.sizeAttenuation=!1,this.cache.add(e,t)),i=t}else if(e.isLine){const e="LineBasicMaterial:"+i.uuid;let t=this.cache.get(e);t||(t=new LineBasicMaterial,Material.prototype.copy.call(t,i),t.color.copy(i.color),this.cache.add(e,t)),i=t}if(n||r||s){let e="ClonedMaterial:"+i.uuid+":";i.isGLTFSpecularGlossinessMaterial&&(e+="specular-glossiness:"),n&&(e+="derivative-tangents:"),r&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=i.clone(),r&&(t.vertexColors=!0),s&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(i))),i=t}i.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return MeshStandardMaterial}loadMaterial(e){const t=this,i=this.json,n=this.extensions,r=i.materials[e];let s;const a={},o=r.extensions||{},l=[];if(o[Ii.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){const e=n[Ii.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];s=e.getMaterialType(),l.push(e.extendParams(a,r,t))}else if(o[Ii.KHR_MATERIALS_UNLIT]){const e=n[Ii.KHR_MATERIALS_UNLIT];s=e.getMaterialType(),l.push(e.extendParams(a,r,t))}else{const i=r.pbrMetallicRoughness||{};if(a.color=new Color$1(1,1,1),a.opacity=1,Array.isArray(i.baseColorFactor)){const e=i.baseColorFactor;a.color.fromArray(e),a.opacity=e[3]}void 0!==i.baseColorTexture&&l.push(t.assignTexture(a,"map",i.baseColorTexture,3001)),a.metalness=void 0!==i.metallicFactor?i.metallicFactor:1,a.roughness=void 0!==i.roughnessFactor?i.roughnessFactor:1,void 0!==i.metallicRoughnessTexture&&(l.push(t.assignTexture(a,"metalnessMap",i.metallicRoughnessTexture)),l.push(t.assignTexture(a,"roughnessMap",i.metallicRoughnessTexture))),s=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),l.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)}))))}!0===r.doubleSided&&(a.side=2);const c=r.alphaMode||Qi;if(c===$i?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,c===Ji&&(a.alphaTest=void 0!==r.alphaCutoff?r.alphaCutoff:.5)),void 0!==r.normalTexture&&s!==MeshBasicMaterial&&(l.push(t.assignTexture(a,"normalMap",r.normalTexture)),a.normalScale=new Vector2(1,1),void 0!==r.normalTexture.scale)){const e=r.normalTexture.scale;a.normalScale.set(e,e)}return void 0!==r.occlusionTexture&&s!==MeshBasicMaterial&&(l.push(t.assignTexture(a,"aoMap",r.occlusionTexture)),void 0!==r.occlusionTexture.strength&&(a.aoMapIntensity=r.occlusionTexture.strength)),void 0!==r.emissiveFactor&&s!==MeshBasicMaterial&&(a.emissive=(new Color$1).fromArray(r.emissiveFactor)),void 0!==r.emissiveTexture&&s!==MeshBasicMaterial&&l.push(t.assignTexture(a,"emissiveMap",r.emissiveTexture,3001)),Promise.all(l).then((function(){let i;return i=s===GLTFMeshStandardSGMaterial?n[Ii.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(a):new s(a),r.name&&(i.name=r.name),assignExtrasToUserData(i,r),t.associations.set(i,{materials:e}),r.extensions&&addUnknownExtensionsToUserData(n,i,r),i}))}createUniqueName(e){const t=PropertyBinding.sanitizeNodeName(e||"");let i=t;for(let e=1;this.nodeNamesUsed[i];++e)i=t+"_"+e;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){const t=this,i=this.extensions,n=this.primitiveCache;function createDracoPrimitive(e){return i[Ii.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(i){return addPrimitiveAttributes(i,e,t)}))}const r=[];for(let i=0,s=e.length;i0&&updateMorphTargets(d,r),d.name=t.createUniqueName(r.name||"mesh_"+e),assignExtrasToUserData(d,r),h.extensions&&addUnknownExtensionsToUserData(n,d,h),t.assignFinalMaterial(d),l.push(d)}for(let i=0,n=l.length;i1?new Group:1===t.length?t[0]:new Object3D,a!==t[0])for(let e=0,i=t.length;e{const t=new Map;for(const[e,i]of r.associations)(e instanceof Material||e instanceof Texture)&&t.set(e,i);return e.traverse((e=>{const i=r.associations.get(e);null!=i&&t.set(e,i)})),t})(s),s}))}}function buildNodeHierarchy(e,t,i,n){const r=i.nodes[e];return n.getDependency("node",e).then((function(e){if(void 0===r.skin)return e;let t;return n.getDependency("skin",r.skin).then((function(e){t=e;const i=[];for(let e=0,r=t.joints.length;e{this.register(e)})),Ei.forEach((e=>{this.addDicePreset(e)}));for(let e in CONFIG.Dice.terms){let t=CONFIG.Dice.terms[e];if(![Coin,FateDie,Die].includes(t)){let e=new t({});[2,3,4,6,8,10,12,14,16,20,24,30].includes(e.faces)&&this.internalAddDicePreset(e)}}}initializeMaterials(){this.realisticLighting?this.material_options={plastic:{type:"standard",options:{metalness:0,roughness:.6,envMapIntensity:1},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},metal:{type:"standard",options:{roughness:.6,metalness:1},scopedOptions:{roughnessMap:"roughnessMap_metal",envMap:!0}},wood:{type:"standard",options:{roughness:1,metalness:0},scopedOptions:{roughnessMap:"roughnessMap_wood",envMap:!0}},glass:{type:"standard",options:{roughness:.3,metalness:0},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},chrome:{type:"standard",options:{metalness:1,roughness:.1},scopedOptions:{roughnessMap:"roughnessMap_fingerprint",envMap:!0}},pristine:{type:"physical",options:{metalness:0,roughness:.8,envMapIntensity:1,clearcoat:1,clearcoatRoughness:.9},scopedOptions:{envMap:!0}},iridescent:{type:"standard",options:{metalness:1,roughness:.2,userData:{iridescent:!0}},scopedOptions:{envMap:!0}},stone:{type:"standard",options:{metalness:0,roughness:1},scopedOptions:{roughnessMap:"roughnessMap_stone",envMap:!0}}}:this.material_options={plastic:{type:"phong",options:{specular:16777215,color:11908533,shininess:3,flatShading:!0}},metal:{type:"standard",options:{color:14540253,emissive:1118481,roughness:.6,metalness:1,envMapIntensity:2},scopedOptions:{envMap:!0}},wood:{type:"phong",options:{specular:16777215,color:11908533,shininess:1,flatShading:!0}},glass:{type:"phong",options:{specular:16777215,color:11908533,shininess:.3,reflectivity:.1,combine:1},scopedOptions:{envMap:!0}},chrome:{type:"phong",options:{specular:16777215,color:11908533,shininess:1,reflectivity:.7,combine:2},scopedOptions:{envMap:!0}},pristine:{type:"phong",options:{specular:16777215,color:11908533,shininess:3,flatShading:!0}},iridescent:{type:"standard",options:{color:14540253,emissive:1118481,roughness:.2,metalness:1,envMapIntensity:2,userData:{iridescent:!0}},scopedOptions:{envMap:!0}},stone:{type:"lambert",options:{color:11908533,reflectivity:.01},scopedOptions:{envMap:!0}}}}setScale(e){this.baseScale=e}setQualitySettings(e){this.realisticLighting=e.bumpMapping,this.aa=e.antialiasing,this.glow=e.glow,this.useHighDPI=e.useHighDPI,this.shadows="none"!=e.shadowQuality,this.shadowQuality=e.shadowQuality}register(e){let t=this.systems.standard.dice.findIndex((t=>t.type==e.type));t>=0&&(this.systems.standard.dice[t].internalAdd||e.internalAdd)&&(this.systems.standard.dice[t]=e,e.modelFile?e.loadModel(this.loaderGLTF):e.loadTextures()),"standard"==e.system?t<0&&this.systems[e.system].dice.push(e):(t<0&&(this.systems.standard.dice.push(e),e.modelFile?e.loadModel(this.loaderGLTF):e.loadTextures()),this.systems[e.system].dice.push(e))}async preloadPresets(e=!0,t=null,i={}){let n=[];const preloadPresetsByUser=e=>{let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null;if(t||(t={global:{}},"standard"!=this.preferredSystem&&(t.global.system=this.preferredSystem),"custom"!=this.preferredColorset&&(t.global.colorset=this.preferredColorset)),this.systems.standard.dice.forEach((e=>{n.push(e)})),mergeObject(t,i,{performDeletions:!0}),!isEmpty(t))for(let e in t)t.hasOwnProperty(e)&&("global"!=e?n.push(this.getPresetBySystem(e,t[e].system)):this.systems.hasOwnProperty(t[e].system)&&this.systems[t[e].system].dice.forEach((e=>{n.push(e)})))};t?preloadPresetsByUser(game.users.get(t)):game.users.forEach((e=>{preloadPresetsByUser(e)})),n=n.filter(((e,t,i)=>i.indexOf(e)===t));let r=[];n.forEach((e=>{e&&(e.modelFile?r.push(e.loadModel(this.loaderGLTF)):r.push(e.loadTextures()))})),e&&await Promise.all(r)}addSystem(e,t="default"){e.dice=[],e.mode=t,"default"!=t&&"standard"==this.preferredSystem&&(this.preferredSystem=e.id),this.systems[e.id]=e}addDicePreset(e,t=null){let i=this.systems.standard.dice.find((t=>t.type==e.type));i&&i.internalAdd||(t||(t=e.type),i=this.systems.standard.dice.find((e=>e.type==t)));let n=new DicePreset(e.type,i.shape),r=e.type.substr(1);n.term=isNaN(r)?CONFIG.Dice.terms[r].name:"Die",n.setLabels(e.labels),n.setModel(e.modelFile),e.values?(null==e.values.min&&(e.values.min=1),null==e.values.max&&(e.values.max=i.values.length),null==e.values.step&&(e.values.step=1),n.setValues(e.values.min,e.values.max,e.values.step)):(n.values=i.values,n.valueMap=i.valueMap),e.valueMap&&(n.valueMap=e.valueMap),n.mass=i.mass,n.scale=i.scale,n.inertia=i.inertia,n.system=e.system,n.font=e.font,n.fontScale=e.fontScale||null,n.colorset=e.colorset||null,n.fontScale||["d2","d4","d6","d8","d10","d12","d14","d16","d20","d24","d30","d100"].includes(e.type)||!this.systems.standard.dice.find((t=>t.type==e.type))||(n.fontScale=Di[t]),e.bumpMaps&&e.bumpMaps.length&&n.setBumpMaps(e.bumpMaps),e.emissiveMaps&&e.emissiveMaps.length&&n.setEmissiveMaps(e.emissiveMaps),e.emissive&&(n.emissive=e.emissive),this.register(n),e.font&&!FontConfig.getAvailableFonts().includes(e.font)&&this.fontLoadingPromises.push(FontConfig.loadFont(e.font,{editor:!1,fonts:[]}))}internalAddDicePreset(e){let t="d";[3,5,7].includes(e.faces)?t+=2*e.faces:t+=e.faces;let i="d"+e.constructor.DENOMINATION,n=this.systems.standard.dice.find((e=>e.type==t)),r=new DicePreset(i,n.shape);r.term=e.constructor.name;let s=[];for(let t=1;t<=e.faces;t++)s.push(e.getResultLabel({result:t}));r.setLabels(s),r.setValues(1,e.faces),r.mass=n.mass,r.inertia=n.inertia,r.scale=n.scale,r.internalAdd=!0,this.register(r)}disposeCachedMaterials(e=null){for(const t in this.baseTextureCache)null!=e&&t.substr(0,e.length)!=e||(this.baseTextureCache[t].map.dispose(),this.baseTextureCache[t].bumpMap&&this.baseTextureCache[t].bumpMap.dispose(),this.baseTextureCache[t].emissiveMap&&this.baseTextureCache[t].emissiveMap.dispose(),this.baseTextureCache[t].dispose(),delete this.baseTextureCache[t])}async _loadFonts(){const e=new Promise((e=>setTimeout(e,4500))),t=Promise.all(this.fontLoadingPromises).then((()=>document.fonts.ready));this.fontLoadingPromises=[],await Promise.race([t,e])}get(e){return this.getPresetBySystem(e)}getPresetBySystem(e,t="standard"){let i=this.systems.standard.dice.find((t=>t.type==e));if(!i)return null;let n=null;return"standard"!=t&&this.systems.hasOwnProperty(t)&&(n=this.systems[t].dice.find((t=>t.type==e&&t.shape==i.shape)),n||["Coin","FateDie","Die"].includes(i.term)||(n=this.systems[t].dice.find((e=>e.shape==i.shape&&e.values.length==i.values.length&&!i.colorset)))),n||(n=this.systems.standard.dice.find((t=>t.type==e))),n}create(e,t,i){let n=this.getPresetBySystem(t,i.system);n.model&&i.isGhost&&(n=this.getPresetBySystem(t,"standard"));let r,s="board"==e.type?this.baseScale:60;if(!n)return null;let a=this.geometries[t+s];if(a||(a=this.createGeometry(n.shape,n.scale,s),this.geometries[t+s]=a),!a)return null;if(n.model){r=n.model.scene.children[0].clone();let e=s/100;r.scale.set(e,e,e),r.geometry||(r.geometry={}),r.geometry.cannon_shape=a.cannon_shape,n.model.animations.length>0&&(r.mixer=new AnimationMixer(r),r.mixer.clipAction(n.model.animations[0]).play())}else{let s,o=this.generateMaterialData(n,i),l=e.type+t+o.cacheString;s=this.baseTextureCache[l]?this.baseTextureCache[l]:this.createMaterials(e,l,n,o),r=new Mesh(a,s),n.color&&(r.material[0].color=new Color$1(n.color),this.realisticLighting&&r.material[0].color.convertLinearToSRGB(),r.material[0].emissiveIntensity=1,r.material[0].needsUpdate=!0)}r.result=[],r.shape=n.shape,r.rerolls=0,r.resultReason="natural";let o=this;return r.getFaceValue=function(){let e,t=this.resultReason,i=new Vector3(0,0,"d4"==this.shape?-1:1),n=new Vector3,r=2*Math.PI;for(let t=0,s=this.body_sim.shapes[0].faceNormals.length;t0?d.background:""!=d.edge?d.edge:d.background;Array.isArray(h)&&(h=h[Math.floor(Math.random()*h.length)]);let f=o[c],g=a.bumps[c],v=a.emissiveMaps[c];if(e.fillStyle=m,e.fillRect(n,r,s,s),t.fillStyle="#FFFFFF",t.fillRect(n,r,s,s),i.fillStyle="#000000",i.fillRect(n,r,s,s),""!=h.name&&"none"!=h.name&&(e.save(),e.beginPath(),e.rect(n,r,s,s),e.clip(),e.globalCompositeOperation=h.composite||"source-over",e.drawImage(h.texture,n,r,s,s),e.restore(),""!=h.bump&&t.drawImage(h.bump,n,r,s,s)),e.globalCompositeOperation="source-over",e.textAlign="center",e.textBaseline="middle",t.textAlign="center",t.textBaseline="middle",t.shadowColor="#000000",t.shadowOffsetX=1,t.shadowOffsetY=1,t.shadowBlur=3,i.textAlign="center",i.textBaseline="middle","d4"!=a.shape)if(d.isGhost&&""!=o[c]&&(f="?"),f instanceof HTMLImageElement)e.drawImage(f,0,0,f.width,f.height,n,r,s,s),g&&t.drawImage(g,0,0,f.width,f.height,n,r,s,s),v&&i.drawImage(v,0,0,f.width,f.height,n,r,s,s);else{let o=s/3,c=s/2,h=s/2;switch(l.scale&&(o*=l.scale),a.shape){case"d10":c=1.3*h;break;case"d14":case"d16":c=1.4*h;break;case"d8":case"d6":c*=1.1;break;case"d12":c*=1.08;break;case"d20":c=1.2*h}e.font=o+"pt "+l.type,t.font=o+"pt "+l.type,i.font=o+"pt "+l.type;var y=o;let d=f.split("\n");if(d.length>1){o/=d.length,e.font=o+"pt "+l.type,t.font=o+"pt "+l.type,i.font=o+"pt "+l.type;let n=new PIXI.TextStyle({fontFamily:l.type,fontSize:o,stroke:"#0000FF",strokeThickness:"none"!=p&&p!=m?1:0});y=PIXI.TextMetrics.measureText(d.join(""),n).lineHeight,""!=d[0]?(c-=y*d.length/2,"d12"==a.shape&&(c*=1.08)):d.shift()}for(let s=0,a=d.length;s{"custom"==t[1]&&delete e[t[0]]})),mergeObject(r,e,{performDeletions:!0}),r.colorset=s.colorset}if(i){let e=null;if(i.options.colorset?e=i.options.colorset:i.options.flavor&&Pi[i.options.flavor]&&(e=i.options.flavor),e){let t=DiceColors.getColorSet(e);t.edge=t.edge?t.edge:"",r=t}i.options.appearance&&mergeObject(r,i.options.appearance,{performDeletions:!0}),i.options.ghost&&(r.isGhost=!0)}return r}generateMaterialData(e,t){let i,n={};t.texture&&!t.texture.id&&(t.texture=DiceColors.getTexture(t.texture));let r=DiceColors.getColorSet(t.colorset);"custom"==r.foreground&&(r.foreground=t.foreground),"custom"==r.background&&(r.background=t.background),"custom"==r.texture&&(r.texture=t.texture),"custom"==r.material&&(r.material=t.material),"custom"==r.font&&(r.font=t.font),Array.isArray(t.background)?(i=Math.floor(Math.random()*t.background.length),Array.isArray(t.foreground)&&t.foreground.length==t.background.length&&(n.foreground=t.foreground[i],Array.isArray(t.outline)&&t.outline.length==t.foreground.length&&(n.outline=t.outline[i])),Array.isArray(t.texture)&&t.texture.length==t.background.length&&(n.texture=t.texture[i]),Array.isArray(t.edge)&&t.edge.length==t.background.length&&(n.edge=t.edge[i]),n.background=t.background[i]):n.background=t.background,n.edge||(Array.isArray(t.edge)?(i=Math.floor(Math.random()*t.edge.length),n.edge=t.edge[i]):n.edge=t.edge),n.foreground||(Array.isArray(t.foreground)?(i=t.foreground[Math.floor(Math.random()*t.foreground.length)],Array.isArray(t.outline)&&t.outline.length==t.foreground.length&&(n.outline=t.outline[i]),n.foreground=t.foreground[i]):n.foreground=t.foreground),n.outline||(Array.isArray(t.outline)?(i=t.outline[Math.floor(Math.random()*t.outline.length)],n.outline=t.outline[i]):n.outline=t.outline),n.texture||(Array.isArray(t.texture)?n.texture=t.texture[Math.floor(Math.random()*t.texture.length)]:"none"==t.texture.name?Array.isArray(r.texture)?n.texture=r.texture[Math.floor(Math.random()*r.texture.length)]:n.texture=r.texture:n.texture=t.texture);let s=Array.isArray(n.texture)?n.texture[0]:n.texture;return"auto"==t.material||""==t.material?r.material?n.material=r.material:n.material=s.material:n.material=t.material,"auto"==t.font?e.font?n.font=e.font:n.font=r.font:n.font=t.font,t.fontScale?n.fontScale=t.fontScale:e.fontScale?n.fontScale=e.fontScale:n.fontScale=r.fontScale,n.isGhost=!!t.isGhost&&t.isGhost,n.cacheString=t.system+n.background+n.foreground+n.outline+n.texture.name+n.edge+n.material+n.font+n.isGhost,n}calc_texture_size(e,t=!1){let i=0;return i=t?Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))):Math.pow(2,Math.floor(Math.log(e)/Math.log(2))),i}createGeometry(e,t,i){let n=t*i,r=null;switch(e){case"d2":r=this.create_d2_geometry(n,i);break;case"d4":r=this.create_d4_geometry(n,i);break;case"d6":r=this.create_d6_geometry(n,i);break;case"d8":r=this.create_d8_geometry(n,i);break;case"d10":r=this.create_d10_geometry(n,i);break;case"d12":r=this.create_d12_geometry(n,i);break;case"d14":r=this.create_d14_geometry(n,i);break;case"d16":r=this.create_d16_geometry(n,i);break;case"d20":r=this.create_d20_geometry(n,i);break;case"d24":r=this.create_d24_geometry(n,i);break;case"d30":r=this.create_d30_geometry(n,i)}return r}load_geometry(e,t){let i=(new BufferGeometryLoader).parse(Li[e]);return i.scale(t/100,t/100,t/100),i}create_d2_geometry(e,t){let i=this.load_geometry("d2",t);return i.cannon_shape=new CANNON.Cylinder(1*e,1*e,.1*e,8),i}create_d4_geometry(e,t){let i=this.load_geometry("d4",t);return i.cannon_shape=this.create_geom([[1,1,1],[-1,-1,1],[-1,1,-1],[1,-1,-1]],[[1,0,2,1],[0,1,3,2],[0,3,2,3],[1,2,3,4]],e),i}create_d6_geometry(e,t){let i=this.load_geometry("d6",t);return i.cannon_shape=this.create_geom([[-1,-1,-1],[1,-1,-1],[1,1,-1],[-1,1,-1],[-1,-1,1],[1,-1,1],[1,1,1],[-1,1,1]],[[0,3,2,1,1],[1,2,6,5,2],[0,1,5,4,3],[3,7,6,2,4],[0,4,7,3,5],[4,5,6,7,6]],e),i}create_d8_geometry(e,t){let i=this.load_geometry("d8",t);return i.cannon_shape=this.create_geom([[1,0,0],[-1,0,0],[0,1,0],[0,-1,0],[0,0,1],[0,0,-1]],[[0,2,4,1],[0,4,3,2],[0,3,5,3],[0,5,2,4],[1,3,4,5],[1,4,2,6],[1,2,5,7],[1,5,3,8]],e),i}create_d10_geometry(e,t){let i=this.load_geometry("d10",t);for(var n=2*Math.PI/10,r=[],s=0,a=0;s<10;++s,a+=n)r.push([Math.cos(a),Math.sin(a),.105*(s%2?1:-1)]);r.push([0,0,-1]),r.push([0,0,1]);return i.cannon_shape=this.create_geom(r,[[5,6,7,11,0],[4,3,2,10,1],[1,2,3,11,2],[0,9,8,10,3],[7,8,9,11,4],[8,7,6,10,5],[9,0,1,11,6],[2,1,0,10,7],[3,4,5,11,8],[6,5,4,10,9]],e),i}create_d12_geometry(e,t){let i=this.load_geometry("d12",t);var n=(1+Math.sqrt(5))/2,r=1/n,s=[[0,r,n],[0,r,-n],[0,-r,n],[0,-r,-n],[n,0,r],[n,0,-r],[-n,0,r],[-n,0,-r],[r,n,0],[r,-n,0],[-r,n,0],[-r,-n,0],[1,1,1],[1,1,-1],[1,-1,1],[1,-1,-1],[-1,1,1],[-1,1,-1],[-1,-1,1],[-1,-1,-1]];return i.cannon_shape=this.create_geom(s,[[2,14,4,12,0,1],[15,9,11,19,3,2],[16,10,17,7,6,3],[6,7,19,11,18,4],[6,18,2,0,16,5],[18,11,9,14,2,6],[1,17,10,8,13,7],[1,13,5,15,3,8],[13,8,12,4,5,9],[5,4,14,9,15,10],[0,12,8,10,16,11],[3,19,7,17,1,12]],e),i}create_d14_geometry(e,t){let i=this.load_geometry("d14",t);return i.cannon_shape=this.create_geom_dcc([[-.005093127489089966,1.177548885345459,.002782404189929366],[-.9908595681190491,.061759304255247116,.22585006058216095],[-.9924551844596863,-.06095181778073311,-.23028047382831573],[-.7984917163848877,.061637163162231445,-.6402497291564941],[-.4453684985637665,-.06121010705828667,-.9239609241485596],[-.00504341721534729,.06129471957683563,-1.0241185426712036],[.437289297580719,-.06156954541802406,-.9219886660575867],[.7920035719871521,.06098949536681175,-.6366959810256958],[.9908595681190491,-.06175928935408592,-.22585000097751617],[.9924551844596863,.0609518401324749,.23028059303760529],[.7984917163848877,-.061637137085199356,.6402497291564941],[.4453684985637665,.061210136860609055,.9239609241485596],[.00504341721534729,-.06129469349980354,1.0241185426712036],[-.4372892379760742,.061569564044475555,.9219887852668762],[-.7920035719871521,-.060989461839199066,.6366960406303406],[.005093127489089966,-1.177548885345459,-.002782404189929366]],[[0,3,2,1],[1,14,13,0],[12,11,0,13],[10,9,0,11],[8,7,0,9],[6,5,0,7],[4,3,0,5],[10,11,12,15],[14,15,12,13],[2,15,14,1],[2,3,4,15],[4,5,6,15],[6,7,8,15],[8,9,10,15]],.85*e),i}create_d16_geometry(e,t){let i=this.load_geometry("d16",t);return i.cannon_shape=this.create_geom_dcc([[-1.0301814079284668,.002833150327205658,1.0244150161743164],[-.0018179342150688171,-.006610371172428131,-1.4427297115325928],[1.4587815999984741,.0028328225016593933,-.006545569747686386],[1.031739592552185,.0028328821063041687,-1.0375059843063354],[-1.4572231769561768,.0028332099318504333,-.006545361131429672],[-1.0301814079284668,.002833150327205658,-1.0375059843063354],[1.031739592552185,.0028328821063041687,1.0244150161743164],[-.0018179342150688171,-.006610371172428131,1.4732751846313477],[.0007793977856636047,1.4608354568481445,-.006545450538396835],[-.0018181726336479187,-1.4646127223968506,.015272742137312889]],[[5,8,1],[5,4,8],[4,0,8],[0,7,8],[8,7,6],[8,6,2],[2,3,8],[3,1,8],[3,9,1],[2,9,3],[6,9,2],[6,7,9],[0,9,7],[4,9,0],[5,9,4],[5,1,9]],.83*e),i}create_d20_geometry(e,t){let i=this.load_geometry("d20",t);var n=(1+Math.sqrt(5))/2,r=[[-1,n,0],[1,n,0],[-1,-n,0],[1,-n,0],[0,-1,n],[0,1,n],[0,-1,-n],[0,1,-n],[n,0,-1],[n,0,1],[-n,0,-1],[-n,0,1]];return i.cannon_shape=this.create_geom(r,[[0,11,5,1],[0,5,1,2],[0,1,7,3],[0,7,10,4],[0,10,11,5],[1,5,9,6],[5,11,4,7],[11,10,2,8],[10,7,6,9],[7,1,8,10],[3,9,4,11],[3,4,2,12],[3,2,6,13],[3,6,8,14],[3,8,9,15],[4,9,5,16],[2,4,11,17],[6,2,10,18],[8,6,7,19],[9,8,1,20]],e),i}create_d24_geometry(e,t){let i=this.load_geometry("d24",t);return i.cannon_shape=this.create_geom([[.7070000171661377,-0,-.7070000171661377],[.7070000171661377,.7070000171661377,-0],[.5468999743461609,.5468999743461609,-.5468999743461609],[-0,-.7070000171661377,-.7070000171661377],[-0,.7070000171661377,-.7070000171661377],[-.5468999743461609,.5468999743461609,-.5468999743461609],[-.5468999743461609,-.5468999743461609,-.5468999743461609],[.5468999743461609,.5468999743461609,.5468999743461609],[-0,-0,-1],[1,-0,-0],[.5468999743461609,-.5468999743461609,-.5468999743461609],[-.5468999743461609,.5468999743461609,.5468999743461609],[-0,-0,1],[-0,.7070000171661377,.7070000171661377],[-0,1,-0],[-.7070000171661377,.7070000171661377,-0],[-.7070000171661377,-0,-.7070000171661377],[-.7070000171661377,-.7070000171661377,-0],[-0,-.7070000171661377,.7070000171661377],[-.5468999743461609,-.5468999743461609,.5468999743461609],[-1,0,-0],[.5468999743461609,-.5468999743461609,.5468999743461609],[.7070000171661377,-0,.7070000171661377],[-0,-1,-0],[.7070000171661377,-.7070000171661377,-0],[-.7070000171661377,-0,.7070000171661377]],[[4,5,15,14],[3,10,24,23],[11,15,20,25],[10,3,8,0],[19,18,12,25],[7,22,9,1],[22,21,24,9],[7,13,12,22],[5,4,8,16],[20,17,19,25],[6,3,23,17],[2,4,14,1],[18,19,17,23],[13,7,1,14],[0,2,1,9],[18,21,22,12],[3,6,16,8],[15,5,16,20],[6,17,20,16],[4,2,0,8],[13,11,25,12],[24,10,0,9],[11,13,14,15],[21,18,23,24]],e),i}create_d30_geometry(e,t){let i=this.load_geometry("d30",t);return i.cannon_shape=this.create_geom_dcc([[-1.6180000305175781,0,1],[-1.6180000305175781,.6179999709129333,-0],[-0,1.6180000305175781,.6179999709129333],[.6179999709129333,0,1.6180000305175781],[-1,-1.6180000305175781,-0],[1.6180000305175781,0,1],[-1.6180000305175781,-.6179999709129333,-0],[-.6179999709129333,0,1.6180000305175781],[-0,1,-1.6180000305175781],[-1,1,-1],[1.6180000305175781,.6179999709129333,-0],[1,-1.6180000305175781,-0],[-1,-1,-1],[1.6180000305175781,-.6179999709129333,-0],[-1,1.6180000305175781,-0],[1,1,-1],[1,1.6180000305175781,-0],[-0,1,1.6180000305175781],[1,-1,-1],[-.6179999709129333,0,-1.6180000305175781],[-0,-1,-1.6180000305175781],[-1,1,1],[.6179999709129333,0,-1.6180000305175781],[-0,-1,1.6180000305175781],[-1,-1,1],[-0,1.6180000305175781,.6179999709129333],[-1.6180000305175781,0,-1],[1,1,1],[-0,-1.6180000305175781,-.6179999709129333],[1.6180000305175781,0,-1],[1,-1,1],[-0,1.6180000305175781,-.6179999709129333],[-0,-1.6180000305175781,.6179999709129333]],[[25,16,31,14],[7,0,24,23],[19,20,12,26],[13,5,30,11],[1,0,21,14],[10,29,15,16],[6,0,1,26],[22,29,18,20],[9,14,31,8],[28,4,12,20],[30,5,3,23],[12,4,6,26],[31,16,15,8],[21,17,25,14],[22,20,19,8],[3,17,7,23],[18,11,28,20],[32,23,24,4],[27,5,10,16],[9,8,19,26],[25,17,27,16],[30,23,32,11],[7,17,21,0],[10,5,13,29],[24,0,6,4],[13,11,18,29],[9,26,1,14],[3,5,27,17],[15,29,22,8],[28,11,32,4]],e),i}create_shape(e,t,i){for(var n=new Array(e.length),r=new Array(t.length),s=0;s{e.load(t,(e=>i(e)),null,n)}))}static getDialogContent(e,t){let i={},n=game.user.isGM?"":'disabled="disabled"';return i.content=`
\n \n \n
`,i.data={isGlobal:!!e.options&&e.options.isGlobal,id:t},i}}class PlaySoundEpicFail extends DiceSFX{static id="PlaySoundEpicFail";static specialEffectName="DICESONICE.PlaySoundEpicFail";static path="modules/dice-so-nice/sfx/sounds/epic_fail.mp3";static async init(){return game.audio.pending.push(function(){AudioHelper.preloadSound(PlaySoundEpicFail.path)}.bind(this)),!0}async play(){AudioHelper.play({src:PlaySoundEpicFail.path,volume:this.volume},!1)}}class PlaySoundEpicWin extends DiceSFX{static id="PlaySoundEpicWin";static specialEffectName="DICESONICE.PlaySoundEpicWin";static path="modules/dice-so-nice/sfx/sounds/epic_win.mp3";static async init(){return game.audio.pending.push(function(){AudioHelper.preloadSound(PlaySoundEpicWin.path)}.bind(this)),!0}async play(){AudioHelper.play({src:PlaySoundEpicWin.path,volume:this.volume},!1)}}function Proton(e,t){this.preParticles=Proton.Util.initValue(e,Proton.POOL_MAX),this.integrationType=Proton.Util.initValue(t,Proton.EULER),this.emitters=[],this.renderers=[],this.pool=new Proton.Pool,Proton.integrator=new Proton.Integration(this.integrationType)}function EventDispatcher(){this.initialize()} /*! * three.proton v0.2.0 * https://github.com/drawcall/three.proton * * Copyright 2011-2020, ajiemath * Licensed under the MIT license * http://www.opensource.org/licenses/mit-license * */ Proton.POOL_MAX=500,Proton.TIME_STEP=60,Proton.PI=3.142,Proton.DR=Proton.PI/180,Proton.MEASURE=100,Proton.EULER="euler",Proton.RK2="runge-kutta2",Proton.RK4="runge-kutta4",Proton.VERLET="verlet",Proton.PARTICLE_CREATED="partilcleCreated",Proton.PARTICLE_UPDATE="partilcleUpdate",Proton.PARTICLE_SLEEP="particleSleep",Proton.PARTICLE_DEAD="partilcleDead",Proton.PROTON_UPDATE="protonUpdate",Proton.PROTON_UPDATE_AFTER="protonUpdateAfter",Proton.EMITTER_ADDED="emitterAdded",Proton.EMITTER_REMOVED="emitterRemoved",Proton.bindEmtterEvent=!1,Proton.prototype={addRender:function(e){this.renderers.push(e),e.init(this)},removeRender:function(e){this.renderers.splice(this.renderers.indexOf(e),1),e.remove(this)},addEmitter:function(e){this.emitters.push(e),e.parent=this,this.dispatchEvent("EMITTER_ADDED",e)},removeEmitter:function(e){e.parent==this&&(this.emitters.splice(this.emitters.indexOf(e),1),e.parent=null,this.dispatchEvent("EMITTER_REMOVED",e))},update:function(e){this.dispatchEvent("PROTON_UPDATE",this);var t=e||.0167;if(t>0)for(var i=this.emitters.length;i--;)this.emitters[i].update(t);this.dispatchEvent("PROTON_UPDATE_AFTER",this)},getCount:function(){var e,t=0,i=this.emitters.length;for(e=0;e>16&255)/255,t.g=(e>>8&255)/255,t.b=(255&e)/255;else if("string"==typeof e){var i;if(i=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(e))t.r=Math.min(255,parseInt(i[1],10))/255,t.g=Math.min(255,parseInt(i[2],10))/255,t.b=Math.min(255,parseInt(i[3],10))/255;else if(i=/^\#([A-Fa-f0-9]+)$/.exec(e)){var n=i[1];t.r=parseInt(n.charAt(0)+n.charAt(1),16)/255,t.g=parseInt(n.charAt(2)+n.charAt(3),16)/255,t.b=parseInt(n.charAt(4)+n.charAt(5),16)/255}}else e instanceof Color$1&&(t.r=e.r,t.g=e.g,t.b=e.b);return t}};Proton.ColorUtil=nn;var rn,sn,an={toScreenPos:(sn=new Vector3,function(e,t,i){return sn.copy(e),sn.project(t),sn.x=Math.round((sn.x+1)*i.width/2),sn.y=Math.round((1-sn.y)*i.height/2),sn.z=0,sn}),toSpacePos:function(){var e,t=new Vector3,i=new Vector3;return function(n,r,s){return t.set(n.x/s.width*2-1,-n.y/s.height*2+1,.5),t.unproject(r),i.copy(t.sub(r.position).normalize()),e=-r.position.z/i.z,t.copy(r.position),t.add(i.multiplyScalar(e)),t}}(),getTexture:(rn={},function(e){if(e instanceof Texture)return e;if("string"==typeof e){var t=Proton.PUID.hash(e);return rn[t]||(rn[t]=new Texture(e)),rn[t]}return e instanceof Image?(t=Proton.PUID.hash(e.src),rn[t]||(rn[t]=new Texture(e)),rn[t]):void 0})};Proton.THREEUtil=an;var on=on||{_id:0,_uids:{},id:function(e){for(var t in this._uids)if(this._uids[t]==e)return t;var i="PUID_"+this._id++;return this._uids[i]=e,i},hash:function(e){}};function Particle(e){this.id="particle_"+Particle.ID++,this.name="Particle",this.reset("init"),Proton.Util.setPrototypeByObj(this,e)}function Pool(){this.cID=0,this.list={}}Proton.PUID=on,Particle.ID=0,Particle.prototype={getDirection:function(){return Math.atan2(this.v.x,-this.v.y)*(180/Proton.PI)},reset:function(e){return this.life=1/0,this.age=0,this.energy=1,this.dead=!1,this.sleep=!1,this.body=null,this.parent=null,this.mass=1,this.radius=10,this.alpha=1,this.scale=1,this.useColor=!1,this.useAlpha=!1,this.easing=Proton.ease.setEasingByName(Proton.ease.easeLinear),e?(this.p=new Proton.Vector3D,this.v=new Proton.Vector3D,this.a=new Proton.Vector3D,this.old={},this.old.p=this.p.clone(),this.old.v=this.v.clone(),this.old.a=this.a.clone(),this.behaviours=[],this.transform={},this.color={r:0,g:0,b:0},this.rotation=new Proton.Vector3D):(this.p.set(0,0,0),this.v.set(0,0,0),this.a.set(0,0,0),this.old.p.set(0,0,0),this.old.v.set(0,0,0),this.old.a.set(0,0,0),this.color.r=0,this.color.g=0,this.color.b=0,this.rotation.clear(),Proton.Util.destroyObject(this.transform),this.removeAllBehaviours()),this},update:function(e,t){if(!this.sleep){this.age+=e;for(var i=this.behaviours.length;i--;)this.behaviours[i]&&this.behaviours[i].applyBehaviour(this,e,t)}if(this.age>=this.life)this.destroy();else{var n=this.easing(this.age/this.life);this.energy=Math.max(1-n,0)}},addBehaviour:function(e){this.behaviours.push(e),e.initialize(this)},addBehaviours:function(e){for(var t=e.length;t--;)this.addBehaviour(e[t])},removeBehaviour:function(e){var t=this.behaviours.indexOf(e);t>-1&&this.behaviours.splice(t,1)},removeAllBehaviours:function(){Proton.Util.destroyArray(this.behaviours)},destroy:function(){this.removeAllBehaviours(),this.energy=0,this.dead=!0,this.parent=null}},Proton.Particle=Particle,Pool.prototype={create:function(e){return this.cID++,"function"==typeof e?new e:e.clone()},getCount:function(){var e=0;for(var t in this.list)e+=this.list[t].length;return e++},get:function(e){var t,i=e.__puid||Proton.PUID.id(e);return(t=this.list[i]&&this.list[i].length>0?this.list[i].pop():this.create(e)).__puid=e.__puid||i,t},expire:function(e){return this._getList(e.__puid).push(e)},destroy:function(){for(var e in this.list)this.list[e].length=0,delete this.list[e]},_getList:function(e){return e=e||"default",this.list[e]||(this.list[e]=[]),this.list[e]}},Proton.Pool=Pool;var ln={randomAToB:function(e,t,i){return i?(Math.random()*(t-e)>>0)+e:e+Math.random()*(t-e)},randomFloating:function(e,t,i){return ln.randomAToB(e-t,e+t,i)},randomZone:function(e){},degreeTransform:function(e){return e*Proton.PI/180},toColor16:function getRGB(e){return"#"+e.toString(16)},randomColor:function(){return"#"+("00000"+(16777216*Math.random()<<0).toString(16)).slice(-6)},lerp:function(e,t,i){return t+(e-t)*i},getNormal:function(e,t){return 0==e.x&&0==e.y?0==e.z?t.set(1,0,1):t.set(1,1,-e.y/e.z):0==e.x?t.set(1,0,1):t.set(-e.y/e.x,1,1),t.normalize()},axisRotate:function(e,t,i,n){var r=Math.cos(n),s=Math.sin(n),a=i.dot(t)*(1-r);e.copy(i),e.cross(t).scalar(s),e.addValue(t.x*r,t.y*r,t.z*r),e.addValue(i.x*a,i.y*a,i.z*a)}};Proton.MathUtils=ln;var Integration=function(e){this.type=Proton.Util.initValue(e,Proton.EULER)};Integration.prototype={integrate:function(e,t,i){this.euler(e,t,i)},euler:function(e,t,i){e.sleep||(e.old.p.copy(e.p),e.old.v.copy(e.v),e.a.scalar(1/e.mass),e.v.add(e.a.scalar(t)),e.p.add(e.old.v.scalar(t)),i&&e.v.scalar(i),e.a.clear())}},Proton.Integration=Integration;var cn,Vector3D=function(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0};Vector3D.prototype={set:function(e,t,i){return this.x=e,this.y=t,this.z=i,this},setX:function(e){return this.x=e,this},setY:function(e){return this.y=e,this},setZ:function(e){return this.z=e,this},getGradient:function(){return 0!=this.x?Math.atan2(this.y,this.x):this.y>0?Proton.PI/2:this.y<0?-Proton.PI/2:void 0},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},add:function(e,t){return void 0!==t?this.addVectors(e,t):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)},addValue:function(e,t,i){return this.x+=e,this.y+=t,this.z+=i,this},addVectors:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},addScalar:function(e){return this.x+=e,this.y+=e,this.z+=e,this},sub:function(e,t){return void 0!==t?this.subVectors(e,t):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)},subVectors:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},scalar:function(e){return this.x*=e,this.y*=e,this.z*=e,this},divideScalar:function(e){return 0!==e?(this.x/=e,this.y/=e,this.z/=e):this.set(0,0,0),this},negate:function(){return this.scalar(-1)},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z},cross:function(e){var t=this.x,i=this.y,n=this.z;return this.x=i*e.z-n*e.y,this.y=n*e.x-t*e.z,this.z=t*e.y-i*e.x,this},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.lengthSq())},normalize:function(){return this.divideScalar(this.length())},distanceTo:function(e){return Math.sqrt(this.distanceToSquared(e))},crossVectors:function(e,t){var i=e.x,n=e.y,r=e.z,s=t.x,a=t.y,o=t.z;return this.x=n*o-r*a,this.y=r*s-i*o,this.z=i*a-n*s,this},eulerFromDir:function(e){},applyEuler:function applyEuler(e){return void 0===cn&&(cn=new Proton.Quaternion),this.applyQuaternion(cn.setFromEuler(e)),this},applyAxisAngle:function(){var e;return function applyAxisAngle(t,i){return void 0===e&&(e=new Proton.Quaternion),this.applyQuaternion(e.setFromAxisAngle(t,i)),this}}(),applyQuaternion:function(e){var t=this.x,i=this.y,n=this.z,r=e.x,s=e.y,a=e.z,o=e.w,l=o*t+s*n-a*i,c=o*i+a*t-r*n,h=o*n+r*i-s*t,d=-r*t-s*i-a*n;return this.x=l*o+d*-r+c*-a-h*-s,this.y=c*o+d*-s+h*-r-l*-a,this.z=h*o+d*-a+l*-s-c*-r,this},distanceToSquared:function(e){var t=this.x-e.x,i=this.y-e.y,n=this.z-e.z;return t*t+i*i+n*n},lerp:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this},equals:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z},clear:function(){return this.x=0,this.y=0,this.z=0,this},clone:function(){return new Proton.Vector3D(this.x,this.y,this.z)},toString:function(){return"x:"+this.x+"y:"+this.y+"z:"+this.z}},Proton.Vector3D=Vector3D;var Polar3D=function(e,t,i){this.radius=e||1,this.phi=i||0,this.theta=t||0};function Span(e,t,i){this._isArray=!1,Proton.Util.isArray(e)?(this._isArray=!0,this.a=e):(this.a=Proton.Util.initValue(e,1),this.b=Proton.Util.initValue(t,this.a),this._center=Proton.Util.initValue(i,!1))}function ArraySpan(e){this._arr=Proton.Util.isArray(e)?e:[e]}Polar3D.prototype={set:function(e,t,i){return this.radius=e||1,this.phi=i||0,this.theta=t||0,this},setRadius:function(e){return this.radius=e,this},setPhi:function(e){return this.phi=e,this},setTheta:function(e){return this.theta=e,this},copy:function(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this},toVector3D:function(){return new Proton.Vector3D(this.getX(),this.getY(),this.getZ())},getX:function(){return this.radius*Math.sin(this.theta)*Math.cos(this.phi)},getY:function(){return-this.radius*Math.sin(this.theta)*Math.sin(this.phi)},getZ:function(){return this.radius*Math.cos(this.theta)},normalize:function(){return this.radius=1,this},equals:function(e){return e.radius===this.radius&&e.phi===this.phi&&e.theta===this.theta},clear:function(){return this.radius=0,this.phi=0,this.theta=0,this},clone:function(){return new Polar3D(this.radius,this.phi,this.theta)}},Proton.Polar3D=Polar3D,Span.prototype={getValue:function(e){return this._isArray?this.a[this.a.length*Math.random()>>0]:this._center?Proton.MathUtils.randomFloating(this.a,this.b,e):Proton.MathUtils.randomAToB(this.a,this.b,e)}},Proton.createSpan=function(e,t,i){return e instanceof Span?e:void 0===t?new Span(e):void 0===i?new Span(e,t):new Span(e,t,i)},Proton.Span=Span,Proton.Util.inherits(ArraySpan,Proton.Span),ArraySpan.prototype.getValue=function(){var e=this._arr[this._arr.length*Math.random()>>0];return"random"==e||"Random"==e?Proton.MathUtils.randomColor():e},Proton.createArraySpan=function(e){return e?e instanceof Proton.ArraySpan?e:new Proton.ArraySpan(e):null},Proton.ArraySpan=ArraySpan;var Quaternion=function(e,t,i,n){this.x=e||0,this.y=t||0,this.z=i||0,this.w=void 0!==n?n:1};function Box(e,t,i,n,r,s){this.x=e,this.y=t,this.z=i,this.width=n,this.height=r,this.depth=s,this.bottom=this.y+this.height,this.right=this.x+this.width,this.right=this.x+this.width}function Behaviour(e,t){this.id="Behaviour_"+Behaviour.id++,this.life=Proton.Util.initValue(e,1/0),this.easing=Proton.Util.initValue(t,Proton.ease.setEasingByName(Proton.ease.easeLinear)),this.age=0,this.energy=1,this.dead=!1,this.name="Behaviour"}function Rate(e,t){this.numPan=Proton.createSpan(Proton.Util.initValue(e,1)),this.timePan=Proton.createSpan(Proton.Util.initValue(t,1)),this.startTime=0,this.nextTime=0,this.init()}function Initialize(){this.name="Initialize"}Quaternion.prototype={set:function(e,t,i,n){return this.x=e,this.y=t,this.z=i,this.w=n,this},clone:function(){return new Proton.Quaternion(this.x,this.y,this.z,this.w)},copy:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this},setFromEuler:function(e){var t=Math.cos(e.x/2),i=Math.cos(e.y/2),n=Math.cos(e.z/2),r=Math.sin(e.x/2),s=Math.sin(e.y/2),a=Math.sin(e.z/2);return this.x=r*i*n+t*s*a,this.y=t*s*n-r*i*a,this.z=t*i*a+r*s*n,this.w=t*i*n-r*s*a,this},setFromAxisAngle:function(e,t){var i=t/2,n=Math.sin(i);return this.x=e.x*n,this.y=e.y*n,this.z=e.z*n,this.w=Math.cos(i),this},normalize:function(){var e=this.length();return 0===e?(this.x=0,this.y=0,this.z=0,this.w=1):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},dot:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}},Proton.Quaternion=Quaternion,Box.prototype={contains:function(e,t,i){return e<=this.right&&e>=this.x&&t<=this.bottom&&t>=this.y&&i<=this.depth&&i>=this.z}},Proton.Box=Box,Behaviour.id=0,Behaviour.prototype={reset:function(e,t){this.life=Proton.Util.initValue(e,1/0),this.easing=Proton.Util.initValue(t,Proton.ease.setEasingByName(Proton.ease.easeLinear))},normalizeForce:function(e){return e.scalar(Proton.MEASURE)},normalizeValue:function(e){return e*Proton.MEASURE},initialize:function(e){},applyBehaviour:function(e,t,i){if(!this.dead){if(this.age+=t,this.age>=this.life)return this.energy=0,void(this.dead=!0);var n=this.easing(e.age/e.life);this.energy=Math.max(1-n,0)}},destroy:function(){}},Proton.Behaviour=Behaviour,Rate.prototype={init:function(){this.startTime=0,this.nextTime=this.timePan.getValue()},getValue:function(e){return this.startTime+=e,this.startTime>=this.nextTime?(this.init(),1==this.numPan.b?this.numPan.getValue("Float")>.5?1:0:this.numPan.getValue("Int")):0}},Proton.Rate=Rate,Initialize.prototype.reset=function(){},Initialize.prototype.init=function(e,t){t?this.initialize(t):this.initialize(e)},Initialize.prototype.initialize=function(e){},Proton.Initialize=Initialize;var hn,dn,un,pn={initialize:function(e,t,i){for(var n=i.length;n--;){var r=i[n];r instanceof Proton.Initialize?r.init(e,t):pn.init(e,t,r)}pn.bindEmitter(e,t)},init:function(e,t,i){Proton.Util.setPrototypeByObj(t,i),Proton.Util.setVectorByObj(t,i)},bindEmitter:function(e,t){e.bindEmitter&&(t.p.add(e.p),t.v.add(e.v),t.a.add(e.a),t.v.applyEuler(e.rotation))}};function Life(e,t,i){Life._super_.call(this),this.lifePan=Proton.createSpan(e,t,i)}function Position(){Position._super_.call(this),this.reset.apply(this,arguments)}function Velocity(e,t,i){Velocity._super_.call(this),this.reset(e,t,i),this.dirVec=new Proton.Vector3D(0,0,0),this.name="Velocity"}function Mass(e,t,i){Mass._super_.call(this),this.massPan=Proton.createSpan(e,t,i)}function Radius(e,t,i){Radius._super_.call(this),this.radius=Proton.createSpan(e,t,i)}function Body(e,t,i){Body._super_.call(this),this.body=Proton.createArraySpan(e),this.w=t,this.h=Proton.Util.initValue(i,this.w)}function Force(e,t,i,n,r){Force._super_.call(this,n,r),Force.prototype.reset.call(this,e,t,i),this.name="Force"}function Attraction(e,t,i,n,r){Attraction._super_.call(this,n,r),this.targetPosition=Proton.Util.initValue(e,new Proton.Vector3D),this.radius=Proton.Util.initValue(i,1e3),this.force=Proton.Util.initValue(this.normalizeValue(t),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new Proton.Vector3D,this.lengthSq=0,this.name="Attraction"}function RandomDrift(e,t,i,n,r,s){RandomDrift._super_.call(this,r,s),this.reset(e,t,i,n),this.time=0,this.name="RandomDrift"}function Repulsion(e,t,i,n,r){Repulsion._super_.call(this,e,t,i,n,r),this.force*=-1,this.name="Repulsion"}function Gravity(e,t,i){Gravity._super_.call(this,0,-e,0,t,i),this.name="Gravity"}function Collision(e,t,i,n,r){Collision._super_.call(this,n,r),this.reset(e,t,i),this.name="Collision"}function CrossZone(e,t,i,n){CrossZone._super_.call(this,i,n),this.reset(e,t),this.name="CrossZone"}function Alpha(e,t,i,n){Alpha._super_.call(this,i,n),this.reset(e,t),this.name="Alpha"}function Scale(e,t,i,n){Scale._super_.call(this,i,n),this.reset(e,t),this.name="Scale"}function Rotate(e,t,i,n,r){Rotate._super_.call(this,n,r),this.reset(e,t,i),this.name="Rotate"}function Color(e,t,i,n){Color._super_.call(this,i,n),this.reset(e,t),this.name="Color"}function Spring(e,t,i,n,r,s,a){Spring._super_.call(this,s,a),Spring.prototype.reset(e,t,i,n,r),this.name="Spring"}function Emitter(e){this.initializes=[],this.particles=[],this.behaviours=[],this.currentEmitTime=0,this.totalEmitTimes=-1,this.damping=.006,this.bindEmitter=!0,this.rate=new Proton.Rate(1,.1),Emitter._super_.call(this,e),this.id="emitter_"+Emitter.ID++,this.cID=0,this.name="Emitter"}function BehaviourEmitter(e){this.selfBehaviours=[],BehaviourEmitter._super_.call(this,e)}function FollowEmitter(e,t,i){this.mouseTarget=Proton.Util.initValue(e,window),this.ease=Proton.Util.initValue(t,.7),this._allowEmitting=!1,this.mouse=new Proton.Vector3D,this.initEventHandler(),FollowEmitter._super_.call(this,i)}Proton.InitializeUtil=pn,Proton.Util.inherits(Life,Proton.Initialize),Life.prototype.initialize=function(e){this.lifePan.a==1/0||"infi"==this.lifePan.a?e.life=1/0:e.life=this.lifePan.getValue()},Proton.Life=Life,Proton.Util.inherits(Position,Proton.Initialize),Position.prototype.reset=function(){this.zones?this.zones.length=0:this.zones=[];var e=Array.prototype.slice.call(arguments);this.zones=this.zones.concat(e)},Position.prototype.addZone=function(){var e=Array.prototype.slice.call(arguments);this.zones=this.zones.concat(e)},Position.prototype.initialize=function(e){var t=this.zones[Math.random()*this.zones.length>>0];t.getPosition(),e.p.x=t.vector.x,e.p.y=t.vector.y,e.p.z=t.vector.z},Proton.Position=Position,Proton.P=Position,Proton.Util.inherits(Velocity,Proton.Initialize),Velocity.prototype.reset=function(e,t,i){e instanceof Proton.Vector3D?(this.radiusPan=Proton.createSpan(1),this.dir=e.clone(),this.tha=t*Proton.DR,this._useV=!0):e instanceof Proton.Polar3D?(this.tha=t*Proton.DR,this.dirVec=e.toVector3D(),this._useV=!1):(this.radiusPan=Proton.createSpan(e),this.dir=t.clone().normalize(),this.tha=i*Proton.DR,this._useV=!0)},Velocity.prototype.normalize=function(e){return e*Proton.MEASURE},Velocity.prototype.initialize=(dn=new Proton.Vector3D(0,0,1),un=new Proton.Vector3D(0,0,0),function initialize(e){return hn=this.tha*Math.random(),this._useV&&this.dirVec.copy(this.dir).scalar(this.radiusPan.getValue()),Proton.MathUtils.getNormal(this.dirVec,dn),un.copy(this.dirVec).applyAxisAngle(dn,hn),un.applyAxisAngle(this.dirVec.normalize(),Math.random()*Proton.PI*2),e.v.copy(un),this}),Proton.Velocity=Velocity,Proton.V=Velocity,Proton.Util.inherits(Mass,Proton.Initialize),Mass.prototype.initialize=function(e){e.mass=this.massPan.getValue()},Proton.Mass=Mass,Proton.Util.inherits(Radius,Proton.Initialize),Radius.prototype.reset=function(e,t,i){this.radius=Proton.createSpan(e,t,i)},Radius.prototype.initialize=function(e){e.radius=this.radius.getValue(),e.transform.oldRadius=e.radius},Proton.Radius=Radius,Proton.Util.inherits(Body,Proton.Initialize),Body.prototype.initialize=function(e){var t=this.body.getValue();this.w?e.body={width:this.w,height:this.h,body:t}:e.body=t},Proton.Body=Body,Proton.Util.inherits(Force,Proton.Behaviour),Force.prototype.reset=function(e,t,i){this.force=this.normalizeForce(new Proton.Vector3D(e,t,i)),this.force.id=Math.random()},Force.prototype.applyBehaviour=function(e,t,i){Force._super_.prototype.applyBehaviour.call(this,e,t,i),e.a.add(this.force)},Proton.F=Proton.Force=Force,Proton.Util.inherits(Attraction,Proton.Behaviour),Attraction.prototype.reset=function(e,t,i,n,r){this.targetPosition=Proton.Util.initValue(e,new Proton.Vector3D),this.radius=Proton.Util.initValue(i,1e3),this.force=Proton.Util.initValue(this.normalizeValue(t),100),this.radiusSq=this.radius*this.radius,this.attractionForce=new Proton.Vector3D,this.lengthSq=0,n&&Attraction._super_.prototype.reset.call(this,n,r)},Attraction.prototype.applyBehaviour=function(e,t,i){Attraction._super_.prototype.applyBehaviour.call(this,e,t,i),this.attractionForce.copy(this.targetPosition),this.attractionForce.sub(e.p),this.lengthSq=this.attractionForce.lengthSq(),this.lengthSq>4e-6&&this.lengthSq=this.delayPan.getValue()){var n=Proton.MathUtils.randomAToB(-this.randomFoce.x,this.randomFoce.x),r=Proton.MathUtils.randomAToB(-this.randomFoce.y,this.randomFoce.y),s=Proton.MathUtils.randomAToB(-this.randomFoce.z,this.randomFoce.z);e.a.addValue(n,r,s),this.time=0}},Proton.RandomDrift=RandomDrift,Proton.Util.inherits(Repulsion,Proton.Attraction),Repulsion.prototype.reset=function(e,t,i,n,r){Repulsion._super_.prototype.reset.call(this,e,t,i,n,r),this.force*=-1},Proton.Repulsion=Repulsion,Proton.Util.inherits(Gravity,Proton.Force),Gravity.prototype.reset=function(e,t,i){Gravity._super_.prototype.reset.call(this,0,-e,0,t,i)},Proton.Gravity=Gravity,Proton.G=Gravity,Proton.Util.inherits(Collision,Proton.Behaviour),Collision.prototype.reset=function(e,t,i,n,r){this.emitter=e,this.useMass=t,this.callback=i,this.particles=[],this.delta=new Proton.Vector3D,n&&Collision._super_.prototype.reset.call(this,n,r)},Collision.prototype.applyBehaviour=function(e,t,i){for(var n,r,s,a,o,l,c=this.emitter?this.emitter.particles.slice(i):this.particles.slice(i),h=c.length;h--;)(n=c[h])!=e&&(this.delta.copy(n.p).sub(e.p),(r=this.delta.lengthSq())<=(a=e.radius+n.radius)*a&&(s=a-Math.sqrt(r),s+=.5,o=this._getAverageMass(e,n),l=this._getAverageMass(n,e),e.p.add(this.delta.clone().normalize().scalar(s*-o)),n.p.add(this.delta.normalize().scalar(s*l)),this.callback&&this.callback(e,n)))},Collision.prototype._getAverageMass=function(e,t){return this.useMass?t.mass/(e.mass+t.mass):.5},Proton.Collision=Collision,Proton.Util.inherits(CrossZone,Proton.Behaviour),CrossZone.prototype.reset=function(e,t,i,n){var r,s;"string"==typeof e?(s=e,r=t):(s=t,r=e),this.zone=r,this.zone.crossType=Proton.Util.initValue(s,"dead"),i&&CrossZone._super_.prototype.reset.call(this,i,n)},CrossZone.prototype.applyBehaviour=function(e,t,i){CrossZone._super_.prototype.applyBehaviour.call(this,e,t,i),this.zone.crossing.call(this.zone,e)},Proton.CrossZone=CrossZone,Proton.Util.inherits(Alpha,Proton.Behaviour),Alpha.prototype.reset=function(e,t,i,n){this._same=null==t||null==t,this.a=Proton.createSpan(Proton.Util.initValue(e,1)),this.b=Proton.createSpan(t),i&&Alpha._super_.prototype.reset.call(this,i,n)},Alpha.prototype.initialize=function(e){e.useAlpha=!0,e.transform.alphaA=this.a.getValue(),this._same?e.transform.alphaB=e.transform.alphaA:e.transform.alphaB=this.b.getValue()},Alpha.prototype.applyBehaviour=function(e,t,i){Alpha._super_.prototype.applyBehaviour.call(this,e,t,i),e.alpha=Proton.MathUtils.lerp(e.transform.alphaA,e.transform.alphaB,this.energy),e.alpha<.002&&(e.alpha=0)},Proton.Alpha=Alpha,Proton.Util.inherits(Scale,Proton.Behaviour),Scale.prototype.reset=function(e,t,i,n){this._same=null==t||null==t,this.a=Proton.createSpan(Proton.Util.initValue(e,1)),this.b=Proton.createSpan(t),i&&Scale._super_.prototype.reset.call(this,i,n)},Scale.prototype.initialize=function(e){e.transform.scaleA=this.a.getValue(),e.transform.oldRadius=e.radius,this._same?e.transform.scaleB=e.transform.scaleA:e.transform.scaleB=this.b.getValue()},Scale.prototype.applyBehaviour=function(e,t,i){Scale._super_.prototype.applyBehaviour.call(this,e,t,i),e.scale=Proton.MathUtils.lerp(e.transform.scaleA,e.transform.scaleB,this.energy),e.scale<5e-4&&(e.scale=0),e.radius=e.transform.oldRadius*e.scale},Proton.Scale=Scale,Proton.Util.inherits(Rotate,Proton.Behaviour),Rotate.prototype.reset=function(e,t,i,n,r){this.a=e||0,this.b=t||0,this.c=i||0,void 0===e||"same"==e?this._type="same":null==t?this._type="set":void 0===i?this._type="to":(this._type="add",this.a=Proton.createSpan(this.a*Proton.DR),this.b=Proton.createSpan(this.b*Proton.DR),this.c=Proton.createSpan(this.c*Proton.DR)),n&&Rotate._super_.prototype.reset.call(this,n,r)},Rotate.prototype.initialize=function(e){switch(this._type){case"same":break;case"set":this._setRotation(e.rotation,this.a);break;case"to":e.transform.fR=e.transform.fR||new Proton.Vector3D,e.transform.tR=e.transform.tR||new Proton.Vector3D,this._setRotation(e.transform.fR,this.a),this._setRotation(e.transform.tR,this.b);break;case"add":this._setRotation(e.rotation,new Proton.Vector3D(0,0,Proton.MathUtils.randomAToB(-Proton.PI,Proton.PI))),e.transform.addR=new Proton.Vector3D(this.a.getValue(),this.b.getValue(),this.c.getValue())}},Rotate.prototype._setRotation=function(e,t){if(e=e||new Proton.Vector3D,"random"==t){var i=Proton.MathUtils.randomAToB(-Proton.PI,Proton.PI),n=Proton.MathUtils.randomAToB(-Proton.PI,Proton.PI),r=Proton.MathUtils.randomAToB(-Proton.PI,Proton.PI);e.set(i,n,r)}else t instanceof Proton.Vector3D&&e.copy(t)},Rotate.prototype.applyBehaviour=function(e,t,i){switch(Rotate._super_.prototype.applyBehaviour.call(this,e,t,i),this._type){case"same":e.rotation||(e.rotation=new Proton.Vector3D),e.rotation.eulerFromDir(e.v);break;case"set":break;case"to":e.rotation.x=Proton.MathUtils.lerp(e.transform.fR.x,e.transform.tR.x,this.energy),e.rotation.y=Proton.MathUtils.lerp(e.transform.fR.y,e.transform.tR.y,this.energy),e.rotation.z=Proton.MathUtils.lerp(e.transform.fR.z,e.transform.tR.z,this.energy);break;case"add":e.rotation.add(e.transform.addR)}},Proton.Rotate=Rotate,Proton.Util.inherits(Color,Proton.Behaviour),Color.prototype.reset=function(e,t,i,n){this._same=null==t||null==t,this.a=Proton.createArraySpan(e),this.b=Proton.createArraySpan(t),i&&Color._super_.prototype.reset.call(this,i,n)},Color.prototype.initialize=function(e){e.transform.colorA=Proton.ColorUtil.getRGB(this.a.getValue()),e.useColor=!0,this._same?e.transform.colorB=e.transform.colorA:e.transform.colorB=Proton.ColorUtil.getRGB(this.b.getValue())},Color.prototype.applyBehaviour=function(e,t,i){Color._super_.prototype.applyBehaviour.call(this,e,t,i),this._same?(e.color.r=e.transform.colorA.r,e.color.g=e.transform.colorA.g,e.color.b=e.transform.colorA.b):(e.color.r=Proton.MathUtils.lerp(e.transform.colorA.r,e.transform.colorB.r,this.energy),e.color.g=Proton.MathUtils.lerp(e.transform.colorA.g,e.transform.colorB.g,this.energy),e.color.b=Proton.MathUtils.lerp(e.transform.colorA.b,e.transform.colorB.b,this.energy))},Proton.Color=Color,Proton.Util.inherits(Spring,Proton.Behaviour),Spring.prototype.reset=function(e,t,i,n,r){this.pos?this.pos.set(e,t,i):this.pos=new Proton.Vector3D(e,t,i),this.spring=n||.1,this.friction=r||.98},Spring.prototype.applyBehaviour=function(e,t,i){Spring._super_.prototype.applyBehaviour.call(this,e,t,i),e.v.x+=(this.pos.x-e.p.x)*this.spring,e.v.y+=(this.pos.y-e.p.y)*this.spring,e.v.z+=(this.pos.z-e.p.z)*this.spring},Proton.Spring=Spring,Emitter.ID=0,Proton.Util.inherits(Emitter,Proton.Particle),Proton.EventDispatcher.initialize(Emitter.prototype),Emitter.prototype.emit=function(e,t){this.currentEmitTime=0,this.totalEmitTimes=Proton.Util.initValue(e,1/0),1==t||"life"==t||"destroy"==t?this.life="once"==e?1:this.totalEmitTimes:isNaN(t)||(this.life=t),this.rate.init()},Emitter.prototype.stopEmit=function(){this.totalEmitTimes=-1,this.currentEmitTime=0},Emitter.prototype.removeAllParticles=function(){for(var e=this.particles.length;e--;)this.particles[e].dead=!0,this.particles[e].target.parent.remove(this.particles[e].target)},Emitter.prototype.createParticle=function(e,t){var i=this.parent.pool.get(Proton.Particle);return this.setupParticle(i,e,t),this.parent&&this.parent.dispatchEvent("PARTICLE_CREATED",i),Proton.bindEmtterEvent&&this.dispatchEvent("PARTICLE_CREATED",i),i},Emitter.prototype.addSelfInitialize=function(e){e.init?e.init(this):this.initAll()},Emitter.prototype.addInitialize=function(){for(var e=arguments.length;e--;)this.initializes.push(arguments[e])},Emitter.prototype.removeInitialize=function(e){var t=this.initializes.indexOf(e);t>-1&&this.initializes.splice(t,1)},Emitter.prototype.removeInitializers=function(){Proton.Util.destroyArray(this.initializes)},Emitter.prototype.addBehaviour=function(){for(var e=arguments.length;e--;)this.behaviours.push(arguments[e])},Emitter.prototype.removeBehaviour=function(e){var t=this.behaviours.indexOf(e);t>-1&&this.behaviours.splice(t,1)},Emitter.prototype.removeAllBehaviours=function(){Proton.Util.destroyArray(this.behaviours)},Emitter.prototype.integrate=function(e){var t=1-this.damping;Proton.integrator.integrate(this,e,t);for(var i=this.particles.length;i--;){var n=this.particles[i];n.update(e,i),Proton.integrator.integrate(n,e,t),this.parent&&this.parent.dispatchEvent("PARTICLE_UPDATE",n),Proton.bindEmtterEvent&&this.dispatchEvent("PARTICLE_UPDATE",n)}},Emitter.prototype.emitting=function(e){if("once"==this.totalEmitTimes){for((t=this.rate.getValue(99999))>0&&(this.cID=t);t--;)this.createParticle();this.totalEmitTimes="none"}else if(!isNaN(this.totalEmitTimes)){var t;if(this.currentEmitTime+=e,this.currentEmitTime0&&(this.cID=t);t--;)this.createParticle()}},Emitter.prototype.update=function(e){this.age+=e,(this.dead||this.age>=this.life)&&this.destroy(),this.emitting(e),this.integrate(e);for(var t,i=this.particles.length;i--;)(t=this.particles[i]).dead&&(this.parent&&this.parent.dispatchEvent("PARTICLE_DEAD",t),Proton.bindEmtterEvent&&this.dispatchEvent("PARTICLE_DEAD",t),this.parent.pool.expire(t.reset()),this.particles.splice(i,1))},Emitter.prototype.setupParticle=function(e,t,i){var n=this.initializes,r=this.behaviours;t&&(n=Proton.Util.isArray(t)?t:[t]),i&&(r=Proton.Util.isArray(i)?i:[i]),Proton.InitializeUtil.initialize(this,e,n),e.addBehaviours(r),e.parent=this,this.particles.push(e)},Emitter.prototype.destroy=function(){this.dead=!0,this.energy=0,this.totalEmitTimes=-1,0==this.particles.length&&(this.removeInitializers(),this.removeAllBehaviours(),this.parent&&this.parent.removeEmitter(this))},Proton.Emitter=Emitter,Proton.Util.inherits(BehaviourEmitter,Proton.Emitter),BehaviourEmitter.prototype.addSelfBehaviour=function(){var e,t=arguments.length;for(e=0;e-1&&this.selfBehaviours.splice(t,1)},BehaviourEmitter.prototype.update=function(e){if(BehaviourEmitter._super_.prototype.update.call(this,e),!this.sleep){var t,i=this.selfBehaviours.length;for(t=0;t=0;this.name="ScreenZone"}Proton.ease=fn,BaseRender.prototype={init:function(e){var t=this;this.proton=e,this.proton.addEventListener("PROTON_UPDATE",(function(e){t.onProtonUpdate.call(t,e)})),this.proton.addEventListener("PARTICLE_CREATED",(function(e){t.onParticleCreated.call(t,e)})),this.proton.addEventListener("PARTICLE_UPDATE",(function(e){t.onParticleUpdate.call(t,e)})),this.proton.addEventListener("PARTICLE_DEAD",(function(e){t.onParticleDead.call(t,e)}))},remove:function(e){this.proton=null},onParticleCreated:function(e){},onParticleUpdate:function(e){},onParticleDead:function(e){},onProtonUpdate:function(e){}},Proton.BaseRender=BaseRender,Proton.Util.inherits(MeshRender,Proton.BaseRender),MeshRender.prototype.onProtonUpdate=function(){},MeshRender.prototype.onParticleCreated=function(e){e.target||(e.body||(e.body=this._body),e.target=this._targetPool.get(e.body),(e.useAlpha||e.useColor)&&(e.target.material.__puid=Proton.PUID.id(e.body.material),e.target.material=this._materialPool.get(e.target.material))),e.target&&(e.target.position.copy(e.p),this.container.add(e.target))},MeshRender.prototype.onParticleUpdate=function(e){e.target&&(e.target.position.copy(e.p),e.target.rotation.set(e.rotation.x,e.rotation.y,e.rotation.z),this.scale(e),e.useAlpha&&(e.target.material.opacity=e.alpha,e.target.material.transparent=!0),e.useColor&&e.target.material.color.copy(e.color))},MeshRender.prototype.scale=function(e){e.target.scale.set(e.scale*e.radius,e.scale*e.radius,e.scale*e.radius)},MeshRender.prototype.onParticleDead=function(e){e.target&&((e.useAlpha||e.useColor)&&this._materialPool.expire(e.target.material),this._targetPool.expire(e.target),this.container.remove(e.target),e.target=null)},Proton.MeshRender=MeshRender,Proton.Util.inherits(PointsRender,Proton.BaseRender),PointsRender.prototype.onProtonUpdate=function(){},PointsRender.prototype.onParticleCreated=function(e){e.target||(e.target=new Vector3),e.target.copy(e.p),this.points.geometry.vertices.push(e.target)},PointsRender.prototype.onParticleUpdate=function(e){e.target&&e.target.copy(e.p)},PointsRender.prototype.onParticleDead=function(e){if(e.target){var t=this.points.geometry.vertices.indexOf(e.target);t>-1&&this.points.geometry.vertices.splice(t,1),e.target=null}},Proton.PointsRender=PointsRender,Proton.Util.inherits(SpriteRender,Proton.MeshRender),SpriteRender.prototype.scale=function(e){e.target.scale.set(e.scale*e.radius,e.scale*e.radius,1)},Proton.SpriteRender=SpriteRender,Proton.Util.inherits(CustomRender,Proton.BaseRender),CustomRender.prototype.onProtonUpdate=function(){},CustomRender.prototype.onParticleCreated=function(e){},CustomRender.prototype.onParticleUpdate=function(e){},CustomRender.prototype.onParticleDead=function(e){},Proton.CustomRender=CustomRender,Zone.prototype={getPosition:function(){return null},crossing:function(e){switch(this.crossType){case"bound":this._bound(e);break;case"cross":this._cross(e);break;case"dead":this._dead(e)}},_dead:function(e){},_bound:function(e){},_cross:function(e){}},Proton.Zone=Zone,Proton.Util.inherits(LineZone,Proton.Zone),LineZone.prototype.getPosition=function(){return this.random=Math.random(),this.vector.x=this.x1+this.random*(this.x2-this.x1),this.vector.y=this.y1+this.random*(this.y2-this.y1),this.vector.z=this.z1+this.random*(this.z2-this.z1),this.vector},LineZone.prototype.crossing=function(e){this.log&&(console.error("Sorry LineZone does not support crossing method"),this.log=!1)},Proton.LineZone=LineZone,Proton.Util.inherits(SphereZone,Proton.Zone),SphereZone.prototype.getPosition=function(){var e,t,i;return function(){return this.random=Math.random(),i=this.random*this.radius,e=Proton.PI*Math.random(),t=2*Proton.PI*Math.random(),this.vector.x=this.x+i*Math.sin(e)*Math.cos(t),this.vector.y=this.y+i*Math.sin(t)*Math.sin(e),this.vector.z=this.z+i*Math.cos(e),this.vector}}(),SphereZone.prototype._dead=function(e){e.p.distanceTo(this)-e.radius>this.radius&&(e.dead=!0)},SphereZone.prototype._bound=function(){var e,t=new Proton.Vector3D,i=new Proton.Vector3D;return function(n){n.p.distanceTo(this)+n.radius>=this.radius&&(t.copy(n.p).sub(this).normalize(),i.copy(n.v),e=2*i.dot(t),n.v.sub(t.scalar(e)))}}(),SphereZone.prototype._cross=function(e){this.log&&(console.error("Sorry SphereZone does not support _cross method"),this.log=!1)},Proton.SphereZone=SphereZone,Proton.Util.inherits(MeshZone,Proton.Zone),MeshZone.prototype.getPosition=function(){var e=this.geometry.vertices,t=e[e.length*Math.random()>>0];return this.vector.x=t.x*this.scale,this.vector.y=t.y*this.scale,this.vector.z=t.z*this.scale,this.vector},MeshZone.prototype.crossing=function(e){this.log&&(console.error("Sorry MeshZone does not support crossing method"),this.log=!1)},Proton.MeshZone=MeshZone,Proton.Util.inherits(PointZone,Proton.Zone),PointZone.prototype.getPosition=function(){return this.vector.x=this.x,this.vector.y=this.y,this.vector.z=this.z,this.vector},PointZone.prototype.crossing=function(e){this.log&&(console.error("Sorry PointZone does not support crossing method"),this.log=!1)},Proton.PointZone=PointZone,Proton.Util.inherits(BoxZone,Proton.Zone),BoxZone.prototype.getPosition=function(){return this.vector.x=this.x+Proton.MathUtils.randomAToB(-.5,.5)*this.width,this.vector.y=this.y+Proton.MathUtils.randomAToB(-.5,.5)*this.height,this.vector.z=this.z+Proton.MathUtils.randomAToB(-.5,.5)*this.depth,this.vector},BoxZone.prototype._dead=function(e){(e.p.x+e.radiusthis.x+this.width/2)&&(e.dead=!0),(e.p.y+e.radiusthis.y+this.height/2)&&(e.dead=!0),(e.p.z+e.radiusthis.z+this.depth/2)&&(e.dead=!0)},BoxZone.prototype._bound=function(e){e.p.x-e.radiusthis.x+this.width/2&&(e.p.x=this.x+this.width/2-e.radius,e.v.x*=-this.friction,this._static(e,"x")),e.p.y-e.radiusthis.y+this.height/2&&(e.p.y=this.y+this.height/2-e.radius,e.v.y*=-this.friction,this._static(e,"y")),e.p.z-e.radiusthis.z+this.depth/2&&(e.p.z=this.z+this.depth/2-e.radius,e.v.z*=-this.friction,this._static(e,"z"))},BoxZone.prototype._static=function(e,t){e.v[t]*e.a[t]>0||Math.abs(e.v[t])<.0167*Math.abs(e.a[t])*this.max&&(e.v[t]=0,e.a[t]=0)},BoxZone.prototype._cross=function(e){e.p.x+e.radiusthis.x+this.width/2&&e.v.x>=0&&(e.p.x=this.x-this.width/2-e.radius),e.p.y+e.radiusthis.y+this.height/2&&e.v.y>=0&&(e.p.y=this.y-this.height/2-e.radius),e.p.z+e.radiusthis.z+this.depth/2&&e.v.z>=0&&(e.p.z=this.z-this.depth/2-e.radius)},Proton.BoxZone=BoxZone,Proton.Util.inherits(ScreenZone,Proton.Zone),ScreenZone.prototype.getPosition=function(){var e,t=new Proton.Vector3D;return function(){return e=this.renderer.domElement,t.x=Math.random()*e.width,t.y=Math.random()*e.height,this.vector.copy(Proton.THREEUtil.toSpacePos(t,this.camera,e)),this.vector}}(),ScreenZone.prototype._dead=function(e){var t=Proton.THREEUtil.toScreenPos(e.p,this.camera,this.renderer.domElement),i=this.renderer.domElement;(t.y+e.radius<-this.dis&&this.d1||t.y-e.radius>i.height+this.dis&&this.d3)&&(e.dead=!0),(t.x+e.radius<-this.dis&&this.d4||t.x-e.radius>i.width+this.dis&&this.d2)&&(e.dead=!0)},ScreenZone.prototype._cross=(mn=new Proton.Vector3D,function(e){var t=Proton.THREEUtil.toScreenPos(e.p,this.camera,this.renderer.domElement),i=this.renderer.domElement;t.y+e.radius<-this.dis?(mn.x=t.x,mn.y=i.height+this.dis+e.radius,e.p.y=Proton.THREEUtil.toSpacePos(mn,this.camera,i).y):t.y-e.radius>i.height+this.dis&&(mn.x=t.x,mn.y=-this.dis-e.radius,e.p.y=Proton.THREEUtil.toSpacePos(mn,this.camera,i).y),t.x+e.radius<-this.dis?(mn.y=t.y,mn.x=i.width+this.dis+e.radius,e.p.x=Proton.THREEUtil.toSpacePos(mn,this.camera,i).x):t.x-e.radius>i.width+this.dis&&(mn.y=t.y,mn.x=-this.dis-e.radius,e.p.x=Proton.THREEUtil.toSpacePos(mn,this.camera,i).x)}),ScreenZone.prototype._bound=function(e){var t=Proton.THREEUtil.toScreenPos(e.p,this.camera,this.renderer.domElement),i=this.renderer.domElement;(t.y+e.radius<-this.dis||t.y-e.radius>i.height+this.dis)&&(e.v.y*=-1),(t.x+e.radius<-this.dis||t.x-e.radius>i.width+this.dis)&&(e.v.y*=-1)},Proton.ScreenZone=ScreenZone;var log=function(){if(window.console&&window.console.trace){var e=Array.prototype.slice.call(arguments),t=arguments[0]+"";if(0==t.indexOf("+")){var i=parseInt(arguments[0]);log.once",i+="em speed:"+e.emitters[0].cID+"
",i+="pos:"+function getEmitterPos(e){var t=e.emitters[0];return Math.round(t.p.x)+","+Math.round(t.p.y)+","+Math.round(t.p.z)}(e);break;case 3:i+=e.renderers[0].name+"
",i+="target:"+getCreatedNumber(e,"target")+"
",i+="material:"+getCreatedNumber(e,"material");break;default:i+="particles:"+e.getCount()+"
",i+="pool:"+e.pool.getCount()+"
",i+="total:"+(e.getCount()+e.pool.getCount())}this._infoCon.innerHTML=i}}(),addInfo:function(e){var t=this;if(!this._infoCon){var i,n;switch(this._infoCon=document.createElement("div"),this._infoCon.style.cssText=["position:fixed;bottom:0px;left:0;cursor:pointer;","opacity:0.9;z-index:10000;padding:10px;font-size:12px;","width:120px;height:50px;background-color:#002;color:#0ff;"].join(""),this._infoType=1,this._infoCon.addEventListener("click",(function(e){t._infoType++,t._infoType>3&&(t._infoType=1)}),!1),e){case 2:i="#201",n="#f08";break;case 3:i="#020",n="#0f0";break;default:i="#002",n="#0ff"}this._infoCon.style["background-color"]=i,this._infoCon.style.color=n}this._infoCon.parentNode||document.body.appendChild(this._infoCon)}};Proton.Debug=vn;class PlayAnimationParticleSpiral extends DiceSFX{static id="PlayAnimationParticleSpiral";static specialEffectName="DICESONICE.PlayAnimationParticleSpiral";static sprite=null;static dot="data:image/png;base64,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";static sound="modules/dice-so-nice/sfx/sounds/doublespiral.mp3";static async init(){let e=await this.loadAsset(yn.TextureLoader,PlayAnimationParticleSpiral.dot),t=new SpriteMaterial({map:e,color:16711680,blending:5,blendSrc:204,blendDst:201,blendEquation:100,fog:!0});PlayAnimationParticleSpiral.sprite=new Sprite(t),game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationParticleSpiral.sound)}.bind(this))}async play(){this.proton=new Proton,this.R=70,this.tha=0,this.emitter1=this.createEmitter(this.R,this.R,"#4F1500","#0029FF"),this.emitter2=this.createEmitter(-this.R,-this.R,"#004CFE","#6600FF"),this.proton.addEmitter(this.emitter1),this.proton.addEmitter(this.emitter2),this.proton.addRender(new Proton.SpriteRender(this.box.scene)),AudioHelper.play({src:PlayAnimationParticleSpiral.sound,volume:this.volume},!1),this.renderReady=!0}createEmitter(e,t,i,n){var r=new Proton.Emitter;return r.rate=new Proton.Rate(new Proton.Span(5,7),new Proton.Span(.01,.02)),r.addInitialize(new Proton.Mass(1)),r.addInitialize(new Proton.Life(1)),r.addInitialize(new Proton.Body(PlayAnimationParticleSpiral.sprite)),r.addInitialize(new Proton.Radius(30)),r.addInitialize(new Proton.V(200,new Proton.Vector3D(0,0,-1),0)),r.addBehaviour(new Proton.Alpha(1,0)),r.addBehaviour(new Proton.Color(i,n)),r.addBehaviour(new Proton.Scale(1.5,.1)),r.addBehaviour(new Proton.Force(0,0,17)),r.p.x=this.dicemesh.parent.position.x+e,r.p.y=this.dicemesh.parent.position.y+t,r.p.z=50,r.emit(.7,!0),r}animateEmitter(){this.tha+=.2,this.emitter1.p.x=this.dicemesh.parent.position.x+this.R*Math.cos(this.tha),this.emitter1.p.y=this.dicemesh.parent.position.y+this.R*Math.sin(this.tha),this.emitter2.p.x=this.dicemesh.parent.position.x-this.R*Math.cos(this.tha),this.emitter2.p.y=this.dicemesh.parent.position.y-this.R*Math.sin(this.tha)}render(){this.renderReady&&(this.animateEmitter(),this.proton.update(),0==this.proton.emitters.length&&this.destroy())}destroy(){this.emitter1&&(this.emitter1.stopEmit(),this.emitter1.removeAllParticles()),this.emitter2&&(this.emitter2.stopEmit(),this.emitter2.removeAllParticles()),this.proton.update(),this.proton.destroy(),this.destroyed=!0}}class PlayAnimationParticleSparkles extends DiceSFX{static id="PlayAnimationParticleSparkles";static specialEffectName="DICESONICE.PlayAnimationParticleSparkles";static sprite=null;static sound="modules/dice-so-nice/sfx/sounds/sparkles.mp3";static async init(){let e=await this.loadAsset(yn.TextureLoader,"modules/dice-so-nice/sfx/textures/glow_point_red_gold.webp"),t=new SpriteMaterial({map:e,fog:!0,blending:2,depthWrite:!1,depthTest:!0});PlayAnimationParticleSparkles.sprite=new Sprite(t),game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationParticleSparkles.sound)}.bind(this))}async play(){this.proton=new Proton,this.emitter=new Proton.Emitter,this.emitter.rate=new Proton.Rate(new Proton.Span(350,450),.3),this.emitter.addInitialize(new Proton.Mass(1,.3)),this.emitter.addInitialize(new Proton.Life(1,3)),this.emitter.addInitialize(new Proton.Body(PlayAnimationParticleSparkles.sprite)),this.emitter.addInitialize(new Proton.Radius(100,60)),this.emitter.addInitialize(new Proton.Position(new Proton.SphereZone(0,0,0,30))),this.emitter.addInitialize(new Proton.Velocity(200,new Proton.Vector3D(0,0,0),0)),this.emitter.addBehaviour(new Proton.RandomDrift(10,10,5,.1,1/0,Proton.easeOutQuart)),this.emitter.addBehaviour(new Proton.Alpha(1,0)),this.emitter.addBehaviour(new Proton.Scale(1,.5)),this.emitter.addBehaviour(new Proton.Force(0,0,1));let e=null;this.dicemesh.isMesh?e=this.dicemesh.parent:(e=this.dicemesh.parent.clone(),delete e.children[0].geometry),this.emitter.p.x=e.position.x,this.emitter.p.y=e.position.y;let t=new Vector3;(new Box3).setFromObject(e).getSize(t),this.emitter.p.z=t.z/2,this.emitter.emit("once",!0),this.proton.addEmitter(this.emitter),this.proton.addRender(new Proton.SpriteRender(this.box.scene)),AudioHelper.play({src:PlayAnimationParticleSparkles.sound,volume:this.volume},!1),this.renderReady=!0}render(){this.renderReady&&(this.proton.update(),0==this.proton.emitters.length&&this.destroy())}destroy(){this.emitter&&(this.emitter.stopEmit(),this.emitter.removeAllParticles()),this.proton.update(),this.proton.destroy(),this.destroyed=!0}}class PlayAnimationParticleVortex extends DiceSFX{static id="PlayAnimationParticleVortex";static specialEffectName="DICESONICE.PlayAnimationParticleVortex";static sprite=null;static sound="modules/dice-so-nice/sfx/sounds/vortex.mp3";static async init(){let e=await this.loadAsset(yn.TextureLoader,"modules/dice-so-nice/sfx/textures/magic01.webp"),t=new MeshBasicMaterial({map:e,blending:1,depthWrite:!1,depthTest:!0,transparent:!0}),i=new PlaneGeometry(140,140);PlayAnimationParticleVortex.sprite=new Mesh(i,t),game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationParticleVortex.sound)}.bind(this))}async play(){this.proton=new Proton,this.emitter=new Proton.Emitter,this.emitter.rate=new Proton.Rate(new Proton.Span(6,8),new Proton.Span(.1,.25)),this.emitter.addInitialize(new Proton.Mass(1)),this.emitter.addInitialize(new Proton.Life(.8,2.4)),this.emitter.addInitialize(new Proton.Body(PlayAnimationParticleVortex.sprite)),this.emitter.addInitialize(new Proton.Velocity(50,new Proton.Vector3D(0,0,1),0));let e=this.box.dicefactory.baseScale/100;switch(this.dicemesh.shape){case"d2":case"d12":e*=1.3;break;case"d4":case"d8":e*=1.2;break;case"d6":case"d10":break;case"d20":e*=1.4}this.emitter.addInitialize(new Proton.Radius(e)),this.emitter.addBehaviour(new Proton.Color(["#1f0e26","#462634","#290088"],"#060206")),this.emitter.addBehaviour(new Proton.Alpha(.7,0,1/0,Proton.easeInQuart)),this.emitter.addBehaviour(new Proton.Scale(.7,1.3,1/0,Proton.easeInSine)),this.emitter.addBehaviour(new Proton.Rotate(0,0,-3)),this.emitter.p.x=this.dicemesh.parent.position.x,this.emitter.p.y=this.dicemesh.parent.position.y,this.emitter.p.z=-5,this.emitter.emit(1.25,!0),this.proton.addEmitter(this.emitter),this.proton.addRender(new Proton.MeshRender(this.box.scene)),AudioHelper.play({src:PlayAnimationParticleVortex.sound,volume:this.volume},!1),this.renderReady=!0}render(){this.renderReady&&(this.proton.update(),0==this.proton.emitters.length&&this.destroy())}destroy(){this.emitter&&(this.emitter.stopEmit(),this.emitter.removeAllParticles()),this.proton.update(),this.proton.destroy(),this.destroyed=!0}}class PlayAnimationBright extends DiceSFX{static id="PlayAnimationBright";static specialEffectName="DICESONICE.PlayAnimationBright";static brightColor=null;static duration=.6;static sound="modules/dice-so-nice/sfx/sounds/bright.mp3";static async init(){PlayAnimationBright.brightColor=new Color$1(.3,.3,.3),this.glowingMesh=null,game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationBright.sound)}.bind(this))}async play(){if(!this.dicemesh.material&&this.dicemesh.userData.glow)this.dicemesh.traverse((e=>{e.userData&&e.userData.name&&e.userData.name===this.dicemesh.userData.glow&&(this.glowingMesh=e)}));else{if(!this.dicemesh.material)return!1;this.glowingMesh=this.dicemesh}if(!this.glowingMesh.material.emissiveMap)return!1;this.clock=new Clock,this.baseColor=this.glowingMesh.material.emissive.clone(),this.baseMaterial=this.glowingMesh.material,this.glowingMesh.material=this.baseMaterial.clone(),this.glowingMesh.material.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader,AudioHelper.play({src:PlayAnimationBright.sound,volume:this.volume},!1),this.renderReady=!0}render(){if(!this.renderReady)return;let e=1-(PlayAnimationBright.duration-this.clock.getElapsedTime())/PlayAnimationBright.duration;if(e>1)this.destroy();else{let t=(Math.sin(2*Math.PI*(e-1/4))+1)/2;this.glowingMesh.material.emissive.copy(this.baseColor),this.glowingMesh.material.emissive.lerp(PlayAnimationBright.brightColor,t)}}destroy(){let e=this.glowingMesh.material;this.glowingMesh.material=this.baseMaterial,e.dispose(),this.destroyed=!0}}class PlayAnimationDark extends DiceSFX{static id="PlayAnimationDark";static specialEffectName="DICESONICE.PlayAnimationDark";static darkColor=null;static duration=1.5;static sound="modules/dice-so-nice/sfx/sounds/darkness.mp3";static async init(){PlayAnimationDark.darkColor=new Color$1(.1,.1,.1),game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationDark.sound)}.bind(this))}async play(){if(!this.dicemesh.material&&this.dicemesh.userData.glow)this.dicemesh.traverse((e=>{e.userData&&e.userData.name&&e.userData.name===this.dicemesh.userData.glow&&(this.glowingMesh=e)}));else{if(!this.dicemesh.material)return!1;this.glowingMesh=this.dicemesh}this.clock=new Clock,this.baseColor=this.glowingMesh.material.color.clone(),this.baseMaterial=this.glowingMesh.material,this.glowingMesh.material=this.baseMaterial.clone(),this.glowingMesh.material.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader,AudioHelper.play({src:PlayAnimationDark.sound,volume:this.volume},!1),this.renderReady=!0}render(){if(!this.renderReady)return;let e=1-(PlayAnimationDark.duration-this.clock.getElapsedTime())/PlayAnimationDark.duration;if(e>1)this.destroy();else{let t=.05172144+9.269017*e-26.55545*e**2+26.19969*e**3-8.977907*e**4;t=Math.min(Math.max(t,0),1),this.glowingMesh.material.color.copy(this.baseColor),this.glowingMesh.material.color.lerp(PlayAnimationDark.darkColor,t)}}destroy(){let e=this.glowingMesh.material;this.glowingMesh.material=this.baseMaterial,e.dispose(),this.destroyed=!0}}class PlayAnimationThormund extends DiceSFX{static id="PlayAnimationThormund";static specialEffectName="DICESONICE.PlayAnimationThormund";static file="modules/dice-so-nice/sfx/models/thormund.glb";static sound="modules/dice-so-nice/sfx/sounds/thormund.mp3";static model=null;static curve=null;static duration1=2.5;static duration2=2.5;static up=new Vector3(0,0,1);static async init(){game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationThormund.sound)}.bind(this));let e=await this.loadAsset(yn.GLTFLoader,PlayAnimationThormund.file);e.scene.traverse((function(e){e.isMesh&&(e.castShadow=!0,e.material.onBeforeCompile=ShaderUtils.applyDiceSoNiceShader)})),PlayAnimationThormund.model=e.scene.children[0]}async play(){this.step=1,this.clock=new Clock,this.thormund=PlayAnimationThormund.model.clone();let e=this.box.dicefactory.baseScale/100,t=new Vector3,i=null;this.dicemesh.isMesh?i=this.dicemesh.parent:(i=this.dicemesh.parent.clone(),delete i.children[0].geometry),(new Box3).setFromObject(i).getSize(t),this.thormund.scale.set(e,e,e),this.thormund.rotation.x=Math.PI/2,this.thormund.position.x=i.position.x,this.thormund.position.y=i.position.y,this.thormund.position.z=i.position.z+t.z/2,this.curve=new CatmullRomCurve3([new Vector3(this.thormund.position.x,this.thormund.position.y,-50),new Vector3(this.thormund.position.x+0,this.thormund.position.y-100,this.thormund.position.z+0),new Vector3(this.thormund.position.x+100,this.thormund.position.y-30,this.thormund.position.z+0),new Vector3(this.thormund.position.x+100,this.thormund.position.y+30,this.thormund.position.z+0),new Vector3(this.thormund.position.x+30,this.thormund.position.y+100,this.thormund.position.z+0),new Vector3(this.thormund.position.x-30,this.thormund.position.y+100,this.thormund.position.z+0),new Vector3(this.thormund.position.x-100,this.thormund.position.y+30,this.thormund.position.z+80),new Vector3(this.thormund.position.x/2,this.thormund.position.y/2,this.thormund.position.z+100)],!1,"chordal"),this.curve2=new CatmullRomCurve3([new Vector3(this.thormund.position.x/2,this.thormund.position.y/2,this.thormund.position.z+100),new Vector3(100,50,this.box.camera.position.z/4),new Vector3(-100,-50,this.box.camera.position.z/4*2),new Vector3(0,-50,this.box.camera.position.z/4*3),new Vector3(0,0,this.box.camera.position.z)],!1,"chordal"),this.axis=new Vector3,this.box.scene.add(this.thormund),AudioHelper.play({src:PlayAnimationThormund.sound,volume:this.volume},!1),this.renderReady=!0}render(){if(!this.renderReady)return;let e=1==this.step?PlayAnimationThormund.duration1:PlayAnimationThormund.duration2,t=1-(e-this.clock.getElapsedTime())/e;if(t>1)1==this.step?(this.step++,t=0,this.clock.start(),this.render()):this.destroy();else{let e=1==this.step?this.curve:this.curve2,i=e.getPointAt(t),n=e.getTangentAt(t).normalize();this.axis.crossVectors(PlayAnimationThormund.up,n).normalize();let r=Math.acos(PlayAnimationThormund.up.dot(n));this.thormund.position.copy(i),this.thormund.quaternion.setFromAxisAngle(this.axis,r)}}destroy(){this.box.scene.remove(this.thormund),this.destroyed=!0}}class PlayAnimationImpact extends DiceSFX{static id="PlayAnimationImpact";static specialEffectName="DICESONICE.PlayAnimationImpact";static sound="modules/dice-so-nice/sfx/sounds/hit_glass.mp3";static planeImpact=null;static duration=.1;constructor(e,t){super(e,t),this.enableGC=!0}static async init(){game.audio.pending.push(function(){AudioHelper.preloadSound(PlayAnimationImpact.sound)}.bind(this));let e=await this.loadAsset(yn.TextureLoader,"modules/dice-so-nice/sfx/textures/glassimpact_color.webp");const t=new PlaneGeometry(730,730),i=new MeshStandardMaterial({map:e,transparent:!0,opacity:2});PlayAnimationImpact.planeImpact=new Mesh(t,i)}async play(){this.clock=new Clock,this.plane=PlayAnimationImpact.planeImpact.clone(),this.plane.receiveShadow=this.box.shadows;let e=this.box.dicefactory.baseScale/100;switch(this.dicemesh.shape){case"d2":case"d20":e*=1.3;break;case"d4":case"d8":e*=1.1;break;case"d6":case"d10":break;case"d12":e*=1.2}this.plane.scale.set(e,e,e),this.plane.position.x=this.dicemesh.parent.position.x,this.plane.position.y=this.dicemesh.parent.position.y,this.plane.rotation.z=Math.random()*Math.PI*2,this.box.scene.add(this.plane),AudioHelper.play({src:PlayAnimationImpact.sound,volume:this.volume},!1),this.dicemesh.position.z-=1}destroy(){this.box.scene.remove(this.plane),this.destroyed=!0}}const yn={SFX_MODE_CLASS:{PlayAnimationBright,PlayAnimationDark,PlayAnimationImpact,PlayConfettiStrength1:class PlayConfettiStrength1 extends DiceSFX{static id="PlayConfettiStrength1";static specialEffectName="DICESONICE.PlayConfettiStrength1";async play(){const e=window.confetti.confettiStrength.low,t=window.confetti.getShootConfettiProps(e);window.confetti.handleShootConfetti(t)}},PlayConfettiStrength2:class PlayConfettiStrength2 extends DiceSFX{static id="PlayConfettiStrength2";static specialEffectName="DICESONICE.PlayConfettiStrength2";async play(){const e=window.confetti.confettiStrength.med,t=window.confetti.getShootConfettiProps(e);window.confetti.handleShootConfetti(t)}},PlayConfettiStrength3:class PlayConfettiStrength3 extends DiceSFX{static id="PlayConfettiStrength3";static specialEffectName="DICESONICE.PlayConfettiStrength3";async play(){const e=window.confetti.confettiStrength.high,t=window.confetti.getShootConfettiProps(e);window.confetti.handleShootConfetti(t)}},PlayAnimationThormund,PlayAnimationParticleSpiral,PlayAnimationParticleSparkles,PlayAnimationParticleVortex,PlaySoundEpicWin,PlaySoundEpicFail,PlaySoundCustom:class PlaySoundCustom extends DiceSFX{static id="PlaySoundCustom";static specialEffectName="DICESONICE.PlaySoundCustom";async play(e){e&&e.path&&AudioHelper.play({src:e.path,volume:this.volume},!1)}static getDialogContent(e,t){let i=super.getDialogContent(e,t);return i.content=i.content.concat('
\n \n
\n \n \n
\n
'),i.data.path=e.options?e.options.path:"",i}},PlayMacro:class PlayMacro extends DiceSFX{static id="PlayMacro";static specialEffectName="DICESONICE.PlayMacro";async play(e){let t=game.macros.get(e.macroId);t&&t.execute()}static getDialogContent(e,t){let i=super.getDialogContent(e,t);i.content=i.content.concat('
\n \n
\n \n
\n
');let n=CONST.DOCUMENT_PERMISSION_LEVELS?CONST.DOCUMENT_PERMISSION_LEVELS.OBSERVER:CONST.ENTITY_PERMISSIONS.OBSERVER;return i.data.macroList=game.macros.filter((e=>e.testUserPermission(game.user,n))).map((e=>({id:e.id,name:e.name}))),i.data.macroList.sort(((e,t)=>e.name>t.name?1:-1)),i.data.macroId=e.options?e.options.macroId:null,i}}},SFX_MODE_LIST:null,SFX_CLASS:{},EXTRA_TRIGGER_TYPE:[],EXTRA_TRIGGER_RESULTS:{},renderQueue:[],garbageCollector:[],GLTFLoader:null,TextureLoader:null,init:function(){yn.SFX_MODE_LIST||(yn.SFX_MODE_LIST={},Object.values(yn.SFX_MODE_CLASS).forEach((e=>{(!e.id.startsWith("PlayConfettiStrength")||game.modules.get("confetti")&&game.modules.get("confetti").active)&&(yn.SFX_MODE_LIST[e.id]=e.specialEffectName)}))),yn.GLTFLoader=new GLTFLoader,yn.TextureLoader=new TextureLoader;let e=[];game.users.forEach((t=>{let i=t.getFlag("dice-so-nice","sfxList");i&&Object.values(i).forEach((t=>{t.specialEffect&&!Array.isArray(t.specialEffect)&&e.push(t.specialEffect)}))})),e=e.filter(((e,t,i)=>i.indexOf(e)===t)),e.forEach((e=>{(!e.startsWith("PlayConfettiStrength")||game.modules.get("confetti")&&game.modules.get("confetti").active)&&yn.addSFXMode(yn.SFX_MODE_CLASS[e])}))},addSFXMode:async function(e){e.id&&e.specialEffectName&&!e.initialized&&(yn.SFX_CLASS[e.id]=e,e.initialized=!0,await e.init())},playSFX:async function(e,t,i){let n=e.specialEffect;return new Promise((async r=>{if(!yn.SFX_CLASS[n]){if(!yn.SFX_MODE_CLASS[n])return;await yn.addSFXMode(yn.SFX_MODE_CLASS[n])}let s=new yn.SFX_CLASS[n](t,i);s.play(e.options).then((e=>{!1!==e&&("function"==typeof s.render&&yn.renderQueue.push(s),s.enableGC&&yn.garbageCollector.push(s)),r()}))}))},renderSFX:function(){let e=[...yn.renderQueue];for(let t=0;t(r=o.indexOf("\n"))&&s=e.byteLength||!(a=fgets(e)))return rgbe_error(1,"no header found");if(!(o=a.match(/^#\?(\S+)/)))return rgbe_error(3,"bad initial token");for(s.valid|=1,s.programtype=o[1],s.string+=a+"\n";a=fgets(e),!1!==a;)if(s.string+=a+"\n","#"!==a.charAt(0)){if((o=a.match(t))&&(s.gamma=parseFloat(o[1])),(o=a.match(i))&&(s.exposure=parseFloat(o[1])),(o=a.match(n))&&(s.valid|=2,s.format=o[1]),(o=a.match(r))&&(s.valid|=4,s.height=parseInt(o[1],10),s.width=parseInt(o[2],10)),2&s.valid&&4&s.valid)break}else s.comments+=a+"\n";return 2&s.valid?4&s.valid?s:rgbe_error(3,"missing image size specifier"):rgbe_error(3,"missing format specifier")}(t);if(-1!==i){const e=i.width,n=i.height,r=function(e,t,i){const n=t;if(n<8||n>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);if(n!==(e[2]<<8|e[3]))return rgbe_error(3,"wrong scanline width");const r=new Uint8Array(4*t*i);if(!r.length)return rgbe_error(4,"unable to allocate buffer space");let s=0,a=0;const o=4*n,l=new Uint8Array(4),c=new Uint8Array(o);let h=i;for(;h>0&&ae.byteLength)return rgbe_error(1);if(l[0]=e[a++],l[1]=e[a++],l[2]=e[a++],l[3]=e[a++],2!=l[0]||2!=l[1]||(l[2]<<8|l[3])!=n)return rgbe_error(3,"bad rgbe scanline format");let t,i=0;for(;i128;if(n&&(t-=128),0===t||i+t>o)return rgbe_error(3,"bad scanline data");if(n){const n=e[a++];for(let e=0;e end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\t// We correct the previous (-0.25, -0.125) offset we applied:\n\t\t\ttexcoord.x += 0.25 * resolution.x;\n\n\t\t\t// The searches are bias by 1, so adjust the coords accordingly:\n\t\t\ttexcoord.x += resolution.x;\n\n\t\t\t// Disambiguate the length added by the last step:\n\t\t\ttexcoord.x += 2.0 * resolution.x; // Undo last step\n\t\t\ttexcoord.x -= resolution.x * SMAASearchLength(searchTex, e, 0.0, 0.5);\n\n\t\t\treturn texcoord.x;\n\t\t}\n\n\t\tfloat SMAASearchXRight( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 0.0, 1.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord += vec2( 2.0, 0.0 ) * resolution;\n\t\t\t\tif ( ! ( texcoord.x < end && e.g > 0.8281 && e.r == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.x -= 0.25 * resolution.x;\n\t\t\ttexcoord.x -= resolution.x;\n\t\t\ttexcoord.x -= 2.0 * resolution.x;\n\t\t\ttexcoord.x += resolution.x * SMAASearchLength( searchTex, e, 0.5, 0.5 );\n\n\t\t\treturn texcoord.x;\n\t\t}\n\n\t\tfloat SMAASearchYUp( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 1.0, 0.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord += vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign\n\t\t\t\tif ( ! ( texcoord.y > end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.y -= 0.25 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= 2.0 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += resolution.y * SMAASearchLength( searchTex, e.gr, 0.0, 0.5 ); // WebGL port note: Changed sign\n\n\t\t\treturn texcoord.y;\n\t\t}\n\n\t\tfloat SMAASearchYDown( sampler2D edgesTex, sampler2D searchTex, vec2 texcoord, float end ) {\n\t\t\tvec2 e = vec2( 1.0, 0.0 );\n\n\t\t\tfor ( int i = 0; i < SMAA_MAX_SEARCH_STEPS; i ++ ) { // WebGL port note: Changed while to for\n\t\t\t\te = texture2D( edgesTex, texcoord, 0.0 ).rg;\n\t\t\t\ttexcoord -= vec2( 0.0, 2.0 ) * resolution; // WebGL port note: Changed sign\n\t\t\t\tif ( ! ( texcoord.y < end && e.r > 0.8281 && e.g == 0.0 ) ) break;\n\t\t\t}\n\n\t\t\ttexcoord.y += 0.25 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y += 2.0 * resolution.y; // WebGL port note: Changed sign\n\t\t\ttexcoord.y -= resolution.y * SMAASearchLength( searchTex, e.gr, 0.5, 0.5 ); // WebGL port note: Changed sign\n\n\t\t\treturn texcoord.y;\n\t\t}\n\n\t\tvec2 SMAAArea( sampler2D areaTex, vec2 dist, float e1, float e2, float offset ) {\n\t\t\t// Rounding prevents precision errors of bilinear filtering:\n\t\t\tvec2 texcoord = float( SMAA_AREATEX_MAX_DISTANCE ) * round( 4.0 * vec2( e1, e2 ) ) + dist;\n\n\t\t\t// We do a scale and bias for mapping to texel space:\n\t\t\ttexcoord = SMAA_AREATEX_PIXEL_SIZE * texcoord + ( 0.5 * SMAA_AREATEX_PIXEL_SIZE );\n\n\t\t\t// Move to proper place, according to the subpixel offset:\n\t\t\ttexcoord.y += SMAA_AREATEX_SUBTEX_SIZE * offset;\n\n\t\t\treturn texture2D( areaTex, texcoord, 0.0 ).rg;\n\t\t}\n\n\t\tvec4 SMAABlendingWeightCalculationPS( vec2 texcoord, vec2 pixcoord, vec4 offset[ 3 ], sampler2D edgesTex, sampler2D areaTex, sampler2D searchTex, ivec4 subsampleIndices ) {\n\t\t\tvec4 weights = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n\t\t\tvec2 e = texture2D( edgesTex, texcoord ).rg;\n\n\t\t\tif ( e.g > 0.0 ) { // Edge at north\n\t\t\t\tvec2 d;\n\n\t\t\t\t// Find the distance to the left:\n\t\t\t\tvec2 coords;\n\t\t\t\tcoords.x = SMAASearchXLeft( edgesTex, searchTex, offset[ 0 ].xy, offset[ 2 ].x );\n\t\t\t\tcoords.y = offset[ 1 ].y; // offset[1].y = texcoord.y - 0.25 * resolution.y (@CROSSING_OFFSET)\n\t\t\t\td.x = coords.x;\n\n\t\t\t\t// Now fetch the left crossing edges, two at a time using bilinear\n\t\t\t\t// filtering. Sampling at -0.25 (see @CROSSING_OFFSET) enables to\n\t\t\t\t// discern what value each edge has:\n\t\t\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).r;\n\n\t\t\t\t// Find the distance to the right:\n\t\t\t\tcoords.x = SMAASearchXRight( edgesTex, searchTex, offset[ 0 ].zw, offset[ 2 ].y );\n\t\t\t\td.y = coords.x;\n\n\t\t\t\t// We want the distances to be in pixel units (doing this here allow to\n\t\t\t\t// better interleave arithmetic and memory accesses):\n\t\t\t\td = d / resolution.x - pixcoord.x;\n\n\t\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t\t\t// quadratically:\n\t\t\t\tvec2 sqrt_d = sqrt( abs( d ) );\n\n\t\t\t\t// Fetch the right crossing edges:\n\t\t\t\tcoords.y -= 1.0 * resolution.y; // WebGL port note: Added\n\t\t\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 1, 0 ) ).r;\n\n\t\t\t\t// Ok, we know how this pattern looks like, now it is time for getting\n\t\t\t\t// the actual area:\n\t\t\t\tweights.rg = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.y ) );\n\t\t\t}\n\n\t\t\tif ( e.r > 0.0 ) { // Edge at west\n\t\t\t\tvec2 d;\n\n\t\t\t\t// Find the distance to the top:\n\t\t\t\tvec2 coords;\n\n\t\t\t\tcoords.y = SMAASearchYUp( edgesTex, searchTex, offset[ 1 ].xy, offset[ 2 ].z );\n\t\t\t\tcoords.x = offset[ 0 ].x; // offset[1].x = texcoord.x - 0.25 * resolution.x;\n\t\t\t\td.x = coords.y;\n\n\t\t\t\t// Fetch the top crossing edges:\n\t\t\t\tfloat e1 = texture2D( edgesTex, coords, 0.0 ).g;\n\n\t\t\t\t// Find the distance to the bottom:\n\t\t\t\tcoords.y = SMAASearchYDown( edgesTex, searchTex, offset[ 1 ].zw, offset[ 2 ].w );\n\t\t\t\td.y = coords.y;\n\n\t\t\t\t// We want the distances to be in pixel units:\n\t\t\t\td = d / resolution.y - pixcoord.y;\n\n\t\t\t\t// SMAAArea below needs a sqrt, as the areas texture is compressed\n\t\t\t\t// quadratically:\n\t\t\t\tvec2 sqrt_d = sqrt( abs( d ) );\n\n\t\t\t\t// Fetch the bottom crossing edges:\n\t\t\t\tcoords.y -= 1.0 * resolution.y; // WebGL port note: Added\n\t\t\t\tfloat e2 = SMAASampleLevelZeroOffset( edgesTex, coords, ivec2( 0, 1 ) ).g;\n\n\t\t\t\t// Get the area for this direction:\n\t\t\t\tweights.ba = SMAAArea( areaTex, sqrt_d, e1, e2, float( subsampleIndices.x ) );\n\t\t\t}\n\n\t\t\treturn weights;\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = SMAABlendingWeightCalculationPS( vUv, vPixcoord, vOffset, tDiffuse, tArea, tSearch, ivec4( 0.0 ) );\n\n\t\t}"},Tn={uniforms:{tDiffuse:{value:null},tColor:{value:null},resolution:{value:new Vector2(1/1024,1/512)}},vertexShader:"\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 2 ];\n\n\t\tvoid SMAANeighborhoodBlendingVS( vec2 texcoord ) {\n\t\t\tvOffset[ 0 ] = texcoord.xyxy + resolution.xyxy * vec4( -1.0, 0.0, 0.0, 1.0 ); // WebGL port note: Changed sign in W component\n\t\t\tvOffset[ 1 ] = texcoord.xyxy + resolution.xyxy * vec4( 1.0, 0.0, 0.0, -1.0 ); // WebGL port note: Changed sign in W component\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tSMAANeighborhoodBlendingVS( vUv );\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tColor;\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec4 vOffset[ 2 ];\n\n\t\tvec4 SMAANeighborhoodBlendingPS( vec2 texcoord, vec4 offset[ 2 ], sampler2D colorTex, sampler2D blendTex ) {\n\t\t\t// Fetch the blending weights for current pixel:\n\t\t\tvec4 a;\n\t\t\ta.xz = texture2D( blendTex, texcoord ).xz;\n\t\t\ta.y = texture2D( blendTex, offset[ 1 ].zw ).g;\n\t\t\ta.w = texture2D( blendTex, offset[ 1 ].xy ).a;\n\n\t\t\t// Is there any blending weight with a value greater than 0.0?\n\t\t\tif ( dot(a, vec4( 1.0, 1.0, 1.0, 1.0 )) < 1e-5 ) {\n\t\t\t\treturn texture2D( colorTex, texcoord, 0.0 );\n\t\t\t} else {\n\t\t\t\t// Up to 4 lines can be crossing a pixel (one through each edge). We\n\t\t\t\t// favor blending by choosing the line with the maximum weight for each\n\t\t\t\t// direction:\n\t\t\t\tvec2 offset;\n\t\t\t\toffset.x = a.a > a.b ? a.a : -a.b; // left vs. right\n\t\t\t\toffset.y = a.g > a.r ? -a.g : a.r; // top vs. bottom // WebGL port note: Changed signs\n\n\t\t\t\t// Then we go in the direction that has the maximum weight:\n\t\t\t\tif ( abs( offset.x ) > abs( offset.y )) { // horizontal vs. vertical\n\t\t\t\t\toffset.y = 0.0;\n\t\t\t\t} else {\n\t\t\t\t\toffset.x = 0.0;\n\t\t\t\t}\n\n\t\t\t\t// Fetch the opposite color and lerp by hand:\n\t\t\t\tvec4 C = texture2D( colorTex, texcoord, 0.0 );\n\t\t\t\ttexcoord += sign( offset ) * resolution;\n\t\t\t\tvec4 Cop = texture2D( colorTex, texcoord, 0.0 );\n\t\t\t\tfloat s = abs( offset.x ) > abs( offset.y ) ? abs( offset.x ) : abs( offset.y );\n\n\t\t\t\t// WebGL port note: Added gamma correction\n\t\t\t\tC.xyz = pow(C.xyz, vec3(2.2));\n\t\t\t\tCop.xyz = pow(Cop.xyz, vec3(2.2));\n\t\t\t\tvec4 mixed = mix(C, Cop, s);\n\t\t\t\tmixed.xyz = pow(mixed.xyz, vec3(1.0 / 2.2));\n\n\t\t\t\treturn mixed;\n\t\t\t}\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tgl_FragColor = SMAANeighborhoodBlendingPS( vUv, vOffset, tColor, tDiffuse );\n\n\t\t}"};class SMAAPass extends Pass{constructor(e,t){super(),this.edgesRT=new WebGLRenderTarget(e,t,{depthBuffer:!1}),this.edgesRT.texture.name="SMAAPass.edges",this.weightsRT=new WebGLRenderTarget(e,t,{depthBuffer:!1}),this.weightsRT.texture.name="SMAAPass.weights";const i=this,n=new Image;n.crossOrigin="Anonymous",n.src=this.getAreaTexture(),n.onload=function(){i.areaTexture.needsUpdate=!0},this.areaTexture=new Texture,this.areaTexture.name="SMAAPass.area",this.areaTexture.image=n,this.areaTexture.minFilter=1006,this.areaTexture.generateMipmaps=!1,this.areaTexture.flipY=!1;const r=new Image;r.crossOrigin="Anonymous",r.src=this.getSearchTexture(),r.onload=function(){i.searchTexture.needsUpdate=!0},this.searchTexture=new Texture,this.searchTexture.name="SMAAPass.search",this.searchTexture.image=r,this.searchTexture.magFilter=1003,this.searchTexture.minFilter=1003,this.searchTexture.generateMipmaps=!1,this.searchTexture.flipY=!1,void 0===wn&&console.error("THREE.SMAAPass relies on SMAAShader"),this.uniformsEdges=qe.clone(wn.uniforms),this.uniformsEdges.resolution.value.set(1/e,1/t),this.materialEdges=new ShaderMaterial({defines:Object.assign({},wn.defines),uniforms:this.uniformsEdges,vertexShader:wn.vertexShader,fragmentShader:wn.fragmentShader}),this.uniformsWeights=qe.clone(Mn.uniforms),this.uniformsWeights.resolution.value.set(1/e,1/t),this.uniformsWeights.tDiffuse.value=this.edgesRT.texture,this.uniformsWeights.tArea.value=this.areaTexture,this.uniformsWeights.tSearch.value=this.searchTexture,this.materialWeights=new ShaderMaterial({defines:Object.assign({},Mn.defines),uniforms:this.uniformsWeights,vertexShader:Mn.vertexShader,fragmentShader:Mn.fragmentShader}),this.uniformsBlend=qe.clone(Tn.uniforms),this.uniformsBlend.resolution.value.set(1/e,1/t),this.uniformsBlend.tDiffuse.value=this.weightsRT.texture,this.materialBlend=new ShaderMaterial({uniforms:this.uniformsBlend,vertexShader:Tn.vertexShader,fragmentShader:Tn.fragmentShader}),this.needsSwap=!1,this.fsQuad=new FullScreenQuad(null)}render(e,t,i){this.uniformsEdges.tDiffuse.value=i.texture,this.fsQuad.material=this.materialEdges,e.setRenderTarget(this.edgesRT),this.clear&&e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.materialWeights,e.setRenderTarget(this.weightsRT),this.clear&&e.clear(),this.fsQuad.render(e),this.uniformsBlend.tColor.value=i.texture,this.fsQuad.material=this.materialBlend,this.renderToScreen?(e.setRenderTarget(null),this.fsQuad.render(e)):(e.setRenderTarget(t),this.clear&&e.clear(),this.fsQuad.render(e))}setSize(e,t){this.edgesRT.setSize(e,t),this.weightsRT.setSize(e,t),this.materialEdges.uniforms.resolution.value.set(1/e,1/t),this.materialWeights.uniforms.resolution.value.set(1/e,1/t),this.materialBlend.uniforms.resolution.value.set(1/e,1/t)}getAreaTexture(){return"data:image/png;base64,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"}getSearchTexture(){return"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAAAhCAAAAABIXyLAAAAAOElEQVRIx2NgGAWjYBSMglEwEICREYRgFBZBqDCSLA2MGPUIVQETE9iNUAqLR5gIeoQKRgwXjwAAGn4AtaFeYLEAAAAASUVORK5CYII="}dispose(){this.edgesRT.dispose(),this.weightsRT.dispose()}}const En={uniforms:{tDiffuse:{value:null}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 tex = texture2D( tDiffuse, vUv );\n\n\t\t\tgl_FragColor = LinearTosRGB( tex );\n\n\t\t}"},Cn={shaderID:"luminosityHighPass",uniforms:{tDiffuse:{value:null},luminosityThreshold:{value:1},smoothWidth:{value:1},defaultColor:{value:new Color$1(0)},defaultOpacity:{value:0}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec3 defaultColor;\n\t\tuniform float defaultOpacity;\n\t\tuniform float luminosityThreshold;\n\t\tuniform float smoothWidth;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\tvec3 luma = vec3( 0.299, 0.587, 0.114 );\n\n\t\t\tfloat v = dot( texel.xyz, luma );\n\n\t\t\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\n\n\t\t\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\n\n\t\t\tgl_FragColor = mix( outputColor, texel, alpha );\n\n\t\t}"};class TransparentUnrealBloomPass extends Pass{constructor(e,t,i,n){super(),this.strength=void 0!==t?t:1,this.radius=i,this.threshold=n,this.resolution=void 0!==e?new Vector2(e.x,e.y):new Vector2(256,256),this.clearColor=new Color$1(0,0,0);const r={minFilter:1006,magFilter:1006,format:1023,type:1015,stencilBuffer:!1};this.renderTargetsHorizontal=[],this.renderTargetsVertical=[],this.nMips=5;let s=Math.round(this.resolution.x/2),a=Math.round(this.resolution.y/2);this.renderTargetBright=new WebGLRenderTarget(s,a,r),this.renderTargetBright.texture.name="UnrealBloomPass.bright",this.renderTargetBright.texture.generateMipmaps=!1;for(let e=0;e\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n float alphaSum = 0.0;\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\n\t\t\t\t\t\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\n\t\t\t\t\t\tdiffuseSum += (sample1.rgb + sample2.rgb) * w;\n alphaSum += (sample1.a + sample2.a) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, alphaSum/weightSum);\n\t\t\t\t}"})}getCompositeMaterial(e){return new ShaderMaterial({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},dirtTexture:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform sampler2D dirtTexture;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}"})}}TransparentUnrealBloomPass.BlurDirectionX=new Vector2(1,0),TransparentUnrealBloomPass.BlurDirectionY=new Vector2(0,1);class DiceBox{constructor(e,t,i){this.known_types=["d4","d6","d8","d10","d12","d14","d16","d20","d24","d30","d100"],this.container=e,this.dimensions=i.dimensions,this.dicefactory=t,this.config=i,this.speed=1,this.isVisible=!1,this.last_time=0,this.running=!1,this.allowInteractivity=!1,this.raycaster=new Raycaster,this.blackColor=new Color$1(0,0,0),this.nbIterationsBetweenRolls=15,this.display={currentWidth:null,currentHeight:null,containerWidth:null,containerHeight:null,aspect:null,scale:null},this.mouse={pos:new Vector2,startDrag:void 0,startDragTime:void 0,constraintDown:!1,constraint:null},this.cameraHeight={max:null,close:null,medium:null,far:null},this.clock=new Clock,this.world_sim=new CANNON.World,this.dice_body_material=new CANNON.Material,this.desk_body_material=new CANNON.Material,this.barrier_body_material=new CANNON.Material,this.sounds_table={},this.sounds_dice={},this.sounds_coins=[],this.lastSoundType="",this.lastSoundStep=0,this.lastSound=0,this.iteration,this.renderer,this.barrier,this.camera,this.light,this.light_amb,this.desk,this.pane,this.public_interface={},this.diceList=[],this.deadDiceList=[],this.framerate=1/60,this.sounds=!0,this.volume=1,this.soundDelay=1,this.soundsSurface="felt",this.animstate="",this.throwingForce="medium",this.immersiveDarkness=!0,this.selector={animate:!0,rotate:!0,intersected:null,dice:[]},this.showExtraDice=!1,this.muteSoundSecretRolls=!1,this.colors={ambient:16777215,spotlight:3355443,ground:2369092},this.rethrowFunctions={},this.afterThrowFunctions={}}preloadSounds(){fetch("modules/dice-so-nice/sounds/surfaces.json").then((e=>{e.json().then((e=>{AudioHelper.preloadSound(`modules/dice-so-nice/sounds/${e.resources[0]}`).then((e=>this.sounds_table.source=e)),Object.entries(e.spritemap).forEach((e=>{let t=e[0].match(/surface\_([a-z\_]*)/)[1];this.sounds_table[t]||(this.sounds_table[t]=[]),this.sounds_table[t].push(e[1])}))}))})),fetch("modules/dice-so-nice/sounds/dicehit.json").then((e=>{e.json().then((e=>{this.sounds_dice.source=AudioHelper.preloadSound(`modules/dice-so-nice/sounds/${e.resources[0]}`).then((e=>this.sounds_dice.source=e)),Object.entries(e.spritemap).forEach((e=>{let t=e[0].match(/dicehit\_([a-z\_]*)/)[1];this.sounds_dice[t]||(this.sounds_dice[t]=[]),this.sounds_dice[t].push(e[1])}))}))}))}playAudioSprite(e,t,i){if(!e||!e.context)return!1;let n=e.context.createGain();n.gain.value=i*this.volume*game.settings.get("core","globalInterfaceVolume");const r=t.start,s=t.end-t.start,a=e.context.createBufferSource();a.buffer=e.container.buffer,a.connect(n).connect(e.context.destination),a.start(e.context.currentTime,r,s)}initialize(){return new Promise((async e=>{game.audio.pending.push(this.preloadSounds.bind(this)),await this.dicefactory.preloadPresets(),this.sounds="1"==this.config.sounds,this.volume=this.config.soundsVolume,this.soundsSurface=this.config.soundsSurface,this.showExtraDice=this.config.showExtraDice,this.muteSoundSecretRolls=this.config.muteSoundSecretRolls,this.allowInteractivity="board"==this.config.boxType&&game.settings.get("dice-so-nice","allowInteractivity"),this.dicefactory.setQualitySettings(this.config);let t=game.settings.get("dice-so-nice","globalAnimationSpeed");this.speed="0"===t?this.config.speed:parseInt(t,10),this.throwingForce=this.config.throwingForce,this.immersiveDarkness=this.config.immersiveDarkness,this.scene=new Scene,null!=game.dice3d.dice3dRenderers[this.config.boxType]?(this.renderer=game.dice3d.dice3dRenderers[this.config.boxType],this.scene.environment=this.renderer.scopedTextureCache.textureCube,this.scene.traverse((e=>{"Mesh"===e.type&&(e.material.needsUpdate=!0)}))):(this.renderer=new WebGLRenderer({antialias:!1,alpha:!0,powerPreference:"high-performance"}),this.dicefactory.useHighDPI&&this.renderer.setPixelRatio(window.devicePixelRatio),this.dicefactory.realisticLighting&&(this.renderer.physicallyCorrectLights=!0,this.renderer.toneMapping=4,this.renderer.toneMappingExposure=1),await this.loadContextScopedTextures(this.config.boxType),this.dicefactory.initializeMaterials(),game.dice3d.dice3dRenderers[this.config.boxType]=this.renderer),this.container.appendChild(this.renderer.domElement),this.renderer.shadowMap.enabled=this.dicefactory.shadows,this.renderer.shadowMap.type="high"==this.dicefactory.shadowQuality?2:1,this.renderer.setClearColor(0,0),this.setScene(this.config.dimensions),this.world_sim.gravity.set(0,0,800*-9.8),this.world_sim.broadphase=new CANNON.NaiveBroadphase,this.world_sim.solver.iterations=14,this.world_sim.allowSleep=!0;let i=new CANNON.ContactMaterial(this.desk_body_material,this.dice_body_material,{friction:.01,restitution:.5});this.world_sim.addContactMaterial(i),i=new CANNON.ContactMaterial(this.barrier_body_material,this.dice_body_material,{friction:0,restitution:.95}),this.world_sim.addContactMaterial(i),i=new CANNON.ContactMaterial(this.dice_body_material,this.dice_body_material,{friction:.01,restitution:.7}),this.world_sim.addContactMaterial(i);let n=new CANNON.Body({allowSleep:!1,mass:0,shape:new CANNON.Plane,material:this.desk_body_material});this.world_sim.addBody(n);let r=new CANNON.Body({allowSleep:!1,mass:0,shape:new CANNON.Plane,material:this.barrier_body_material});r.quaternion.setFromAxisAngle(new CANNON.Vec3(1,0,0),Math.PI/2),r.position.set(0,.93*this.display.containerHeight,0),this.world_sim.addBody(r),r=new CANNON.Body({allowSleep:!1,mass:0,shape:new CANNON.Plane,material:this.barrier_body_material}),r.quaternion.setFromAxisAngle(new CANNON.Vec3(1,0,0),-Math.PI/2),r.position.set(0,.93*-this.display.containerHeight,0),this.world_sim.addBody(r),r=new CANNON.Body({allowSleep:!1,mass:0,shape:new CANNON.Plane,material:this.barrier_body_material}),r.quaternion.setFromAxisAngle(new CANNON.Vec3(0,1,0),-Math.PI/2),r.position.set(.93*this.display.containerWidth,0,0),this.world_sim.addBody(r),r=new CANNON.Body({allowSleep:!1,mass:0,shape:new CANNON.Plane,material:this.barrier_body_material}),r.quaternion.setFromAxisAngle(new CANNON.Vec3(0,1,0),Math.PI/2),r.position.set(.93*-this.display.containerWidth,0,0),this.world_sim.addBody(r);let s=new CANNON.Sphere(.1);this.jointBody=new CANNON.Body({mass:0}),this.jointBody.addShape(s),this.jointBody.collisionFilterGroup=0,this.jointBody.collisionFilterMask=0,this.world_sim.addBody(this.jointBody),e()}))}loadContextScopedTextures(e){return new Promise((t=>{if(this.renderer.scopedTextureCache={type:e},this.dicefactory.realisticLighting){let e=new TextureLoader;this.renderer.scopedTextureCache.roughnessMap_fingerprint=e.load("modules/dice-so-nice/textures/roughnessMap_finger.webp"),this.renderer.scopedTextureCache.roughnessMap_wood=e.load("modules/dice-so-nice/textures/roughnessMap_wood.webp"),this.renderer.scopedTextureCache.roughnessMap_metal=e.load("modules/dice-so-nice/textures/roughnessMap_metal.webp"),this.renderer.scopedTextureCache.roughnessMap_stone=e.load("modules/dice-so-nice/textures/roughnessMap_stone.webp"),this.pmremGenerator=new PMREMGenerator(this.renderer),this.pmremGenerator.compileEquirectangularShader(),(new RGBELoader).setDataType(1016).setPath("modules/dice-so-nice/textures/equirectangular/").load("footprint_court.hdr",function(e){this.renderer.scopedTextureCache.textureCube=this.pmremGenerator.fromEquirectangular(e).texture,this.renderer.scopedTextureCache.textureCube.encoding=3001,this.scene.environment=this.renderer.scopedTextureCache.textureCube,e.dispose(),this.pmremGenerator.dispose(),t()}.bind(this))}else{let e=new CubeTextureLoader;e.setPath("modules/dice-so-nice/textures/cubemap/"),this.renderer.scopedTextureCache.textureCube=e.load(["px.webp","nx.webp","py.webp","ny.webp","pz.webp","nz.webp"]),t()}}))}setScene(e){if(this.display.currentWidth=this.container.clientWidth>0?this.container.clientWidth:parseInt(this.container.style.width),this.display.currentHeight=this.container.clientHeight>0?this.container.clientHeight:parseInt(this.container.style.height),this.display.currentWidth/=2,this.display.currentHeight/=2,e?(this.display.containerWidth=e.w,this.display.containerHeight=e.h,this.display.currentWidth&&this.display.currentHeight||(this.display.currentWidth=e.w/2,this.display.currentHeight=e.h/2)):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.config.autoscale?this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13:this.display.scale=this.config.scale,"board"==this.config.boxType&&this.dicefactory.setScale(this.display.scale),this.renderer.setSize(2*this.display.currentWidth,2*this.display.currentHeight),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2,this.camera&&this.scene.remove(this.camera),this.camera=new PerspectiveCamera(20,this.display.currentWidth/this.display.currentHeight,1,1.3*this.cameraHeight.max),"selector"===this.animstate)this.camera.position.z=this.selector.dice.length>9?this.cameraHeight.far:this.selector.dice.length<6?this.cameraHeight.close:this.cameraHeight.medium;else this.camera.position.z=this.cameraHeight.far;this.camera.near=10,this.camera.lookAt(new Vector3(0,0,0));const t=Math.max(this.display.containerWidth,this.display.containerHeight);let i,n;this.light&&this.scene.remove(this.light),this.light_amb&&this.scene.remove(this.light_amb),this.dicefactory.realisticLighting?(i=1,n=1):"board"==this.config.boxType?(i=1.2,n=2.2):(i=1.5,n=3),this.light_amb=new HemisphereLight(this.colors.ambient,this.colors.ground,n),this.scene.add(this.light_amb),this.light=new DirectionalLight(this.colors.spotlight,i),"board"==this.config.boxType?this.light.position.set(-this.display.containerWidth/10,this.display.containerHeight/10,t/2):this.light.position.set(0,this.display.containerHeight/10,t/2),this.light.target.position.set(0,0,0),this.light.distance=0,this.light.castShadow=this.dicefactory.shadows,this.light.shadow.camera.near=t/10,this.light.shadow.camera.far=5*t,this.light.shadow.camera.fov=50,this.light.shadow.bias=-1e-4;const r="high"==this.dicefactory.shadowQuality?2048:1024;this.light.shadow.mapSize.width=r,this.light.shadow.mapSize.height=r;const s=1e3;this.light.shadow.camera.left=-s,this.light.shadow.camera.right=s,this.light.shadow.camera.top=s,this.light.shadow.camera.bottom=-s,this.scene.add(this.light),this.desk&&this.scene.remove(this.desk);let a=new ShadowMaterial;if(a.opacity=.5,this.desk=new Mesh(new PlaneGeometry(6*this.display.containerWidth,6*this.display.containerHeight,1,1),a),this.desk.receiveShadow=this.dicefactory.shadows,this.desk.position.set(0,0,-1),this.scene.add(this.desk),this.dicefactory.realisticLighting){let e=new RenderPass(this.scene,this.camera);const t=new Vector2(2*this.display.currentWidth,2*this.display.currentHeight);this.bloomPass=new TransparentUnrealBloomPass(t,game.dice3d.uniforms.bloomStrength.value,game.dice3d.uniforms.bloomRadius.value,game.dice3d.uniforms.bloomThreshold.value),this.gammaPass=new ShaderPass(En);let i=t.multiplyScalar(this.renderer.getPixelRatio()),n={type:1015,samples:"msaa"==this.dicefactory.aa?4:0,anisotropy:4};-1!=navigator.userAgent.indexOf("Mac OS X")&&-1!=navigator.userAgent.indexOf("Chrome")&&(n.stencilBuffer=!0),this.composerTarget=new WebGLRenderTarget(i.x,i.y,n),this.bloomComposer=new EffectComposer(this.renderer,this.composerTarget),this.bloomComposer.renderToScreen=!1,this.bloomComposer.addPass(e),this.bloomComposer.addPass(this.bloomPass),this.blendingPass=new ShaderPass(new ShaderMaterial({uniforms:{baseTexture:{value:null},bloomTexture:{value:this.bloomComposer.renderTarget2.texture}},vertexShader:"\n\t\t\t\t\t\tvarying vec2 vUv;\n\t\t\t\t\t\tvoid main() {\n\t\t\t\t\t\t\tvUv = uv;\n\t\t\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t\t\t}\n\t\t\t\t\t",fragmentShader:"\n\t\t\t\t\t\tuniform sampler2D baseTexture;\n\t\t\t\t\t\tuniform sampler2D bloomTexture;\n\t\t\t\t\t\tvarying vec2 vUv;\n\t\t\t\t\t\tvoid main() {\n\t\t\t\t\t\t\tvec4 base = texture2D( baseTexture, vUv );\n\t\t\t\t\t\t\tvec4 bloom = texture2D( bloomTexture, vUv );\n\t\t\t\t\t\t\tgl_FragColor = vec4(base.rgb + ( vec3( 1.0 ) * bloom.rgb ), bloom.a);\n\t\t\t\t\t\t}\n\t\t\t\t\t",defines:{}}),"baseTexture"),this.blendingPass.needsSwap=!0,this.finalComposer=new EffectComposer(this.renderer,this.composerTarget),this.finalComposer.addPass(e),this.finalComposer.addPass(this.blendingPass),"smaa"==this.dicefactory.aa&&(this.AAPass=new SMAAPass(i.x,i.y),this.AAPass.renderToScreen=!0,this.finalComposer.addPass(this.AAPass)),this.finalComposer.addPass(this.gammaPass)}this.renderScene()}async update(e){this.showExtraDice=e.showExtraDice,this.muteSoundSecretRolls=e.muteSoundSecretRolls,"board"==this.config.boxType&&(e.autoscale?this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13:this.display.scale=e.scale,this.dicefactory.setScale(this.display.scale)),this.dicefactory.setQualitySettings(e);let t=game.settings.get("dice-so-nice","globalAnimationSpeed");this.speed="0"===t?parseInt(e.speed,10):parseInt(t,10),this.light.castShadow=this.dicefactory.shadows,this.desk.receiveShadow=this.dicefactory.shadows,this.renderer.shadowMap.enabled=this.dicefactory.shadows,this.renderer.shadowMap.type="high"==this.dicefactory.shadowQuality?2:1,this.sounds=e.sounds,this.volume=e.soundsVolume,this.soundsSurface=e.soundsSurface,await this.dicefactory.preloadPresets(!0,null,e.appearance),this.throwingForce=e.throwingForce,this.immersiveDarkness=e.immersiveDarkness,this.scene.traverse((e=>{"Mesh"===e.type&&(e.material.needsUpdate=!0)}))}vectorRand({x:e,y:t}){let i=Math.random()*Math.PI/5-Math.PI/5/2,n={x:e*Math.cos(i)-t*Math.sin(i),y:e*Math.sin(i)+t*Math.cos(i)};return 0==n.x&&(n.x=.01),0==n.y&&(n.y=.01),n}getVectors(e,t,i,n){for(let r=0;r0?-1:1)*.9+Math.floor(201*Math.random())-100,y:this.display.containerHeight*(a.y>0?-1:1)*.9+Math.floor(201*Math.random())-100,z:200*Math.random()+200},l=Math.abs(a.x/a.y);l>1?o.y/=l:o.x*=l;let c,h,d,u=this.vectorRand(t);u.x/=n,u.y/=n,"d2"!=s.shape?(c={x:u.x*i,y:u.y*i,z:-10},h={x:-(Math.random()*a.y*5+s.inertia*a.y),y:Math.random()*a.x*5+s.inertia*a.x,z:0},d={x:Math.random(),y:Math.random(),z:Math.random(),a:Math.random()},d={x:0,y:0,z:0,a:0}):(c={x:u.x*i/10,y:u.y*i/10,z:3e3},h={x:12*s.inertia,y:1*s.inertia,z:0},d={x:1,y:1,z:Math.random(),a:Math.random()}),e.dice[r].vectors={type:s.type,pos:o,velocity:c,angle:h,axis:d}}return e}swapDiceFace(e){const t=this.dicefactory.get(e.notation.type);let i=parseInt(e.getLastValue().value),n=parseInt(e.forcedResult);if("d10"==t.shape&&0==n&&(n=10),t.valueMap&&(n=t.valueMap[n]),i==n)return;let s=i>n?n+","+i:i+","+n,a=Li[e.shape].rotationCombinations[s];if(!a)return void console.error(`[Dice So Nice] No dice rotation found for ${e.shape} ${i} ${n}`);let o=new Euler(r.degToRad(a[0]),r.degToRad(a[1]),r.degToRad(a[2])),l=(new Quaternion$1).setFromEuler(o);i>n&&l.invert(),e.applyQuaternion(l),e.resultReason="forced"}spawnDice(e,t){let i=e.vectors;const n=this.dicefactory.get(i.type);if(!n)return;let r=this.dicefactory.create(this.renderer.scopedTextureCache,n.type,t);if(!r)return;let s=n.mass;switch(t.material){case"metal":s*=7;break;case"wood":s*=.65;break;case"glass":s*=2;break;case"stone":s*=1.5}r.notation=i,r.result=[],r.forcedResult=e.result,r.startAtIteration=e.startAtIteration,r.stopped=0,r.castShadow=this.dicefactory.shadows,r.receiveShadow=this.dicefactory.shadows,r.specialEffects=e.specialEffects,r.body_sim=new CANNON.Body({allowSleep:!0,sleepSpeedLimit:75,sleepTimeLimit:.9,mass:s,shape:r.geometry.cannon_shape,material:this.dice_body_material}),r.body_sim.type=CANNON.Body.DYNAMIC,r.body_sim.position.set(i.pos.x,i.pos.y,i.pos.z),r.body_sim.quaternion.setFromAxisAngle(new CANNON.Vec3(i.axis.x,i.axis.y,i.axis.z),i.axis.a*Math.PI*2),r.body_sim.angularVelocity.set(i.angle.x,i.angle.y,i.angle.z),r.body_sim.velocity.set(i.velocity.x,i.velocity.y,i.velocity.z),r.body_sim.linearDamping=.1,r.body_sim.angularDamping=.1,r.body_sim.addEventListener("collide",this.eventCollide.bind(this)),r.body_sim.stepQuaternions=new Array(1e3),r.body_sim.stepPositions=new Array(1e3),r.body_sim.diceType=n.type,r.body_sim.diceMaterial=t.material,r.body_sim.secretRoll=e.options?.secret;let a=new Group;a.add(r),this.diceList.push(r),0==r.startAtIteration&&(this.scene.add(a),this.world_sim.addBody(r.body_sim))}eventCollide({body:e,target:t}){if(!this.sounds||!e||!this.sounds_dice.source)return;e.world.stepnumber;let i=e.mass>0?"dice":"table";if(!((this.lastSoundStep==e.world.stepnumber||this.lastSound>e.world.stepnumber)&&"dice"!=i||(this.lastSoundStep==e.world.stepnumber||this.lastSound>e.world.stepnumber)&&"dice"==i&&"dice"==this.lastSoundType)){if(e.mass>0){let i=e.velocity.length();if(i<250)return;let n,r=Math.max(Math.min(i/550,1),.2);if(this.muteSoundSecretRolls&&(e.secretRoll||t.secretRoll)&&(r=0),"dc"!=e.diceType){let t=this.sounds_dice.plastic;this.sounds_dice[e.diceMaterial]&&(t=this.sounds_dice[e.diceMaterial]),n=t[Math.floor(Math.random()*t.length)]}else n=this.sounds_dice.coin[Math.floor(Math.random()*this.sounds_dice.coin.length)];"simulate"==this.animstate?this.detectedCollides[this.iteration]=[this.sounds_dice.source,n,r]:this.playAudioSprite(this.sounds_dice.source,n,r),this.lastSoundType="dice"}else{let i=t.velocity.length();if(i<100)return;let n=this.soundsSurface,r=Math.max(Math.min(i/500,1),.2);this.muteSoundSecretRolls&&(e.secretRoll||t.secretRoll)&&(r=0);let s=this.sounds_table[n],a=s[Math.floor(Math.random()*s.length)];"simulate"==this.animstate?this.detectedCollides[this.iteration]=[this.sounds_table.source,a,r]:this.playAudioSprite(this.sounds_table.source,a,r),this.lastSoundType="table"}this.lastSoundStep=e.world.stepnumber,this.lastSound=e.world.stepnumber+this.soundDelay}}throwFinished(e="render"){let t=!0;if(this.iteration>1e3)return!0;if(this.iteration<=this.minIterations)return!1;if("render"==e){if(t=this.iteration>=this.iterationsNeeded,t)for(let e=0,t=this.diceList.length;ethis.iterationsNeeded&&(this.iteration=this.iterationsNeeded);for(let e in this.scene.children){let t=this.scene.children[e],i=t.children&&t.children.length&&null!=t.children[0].body_sim&&!t.children[0].body_sim.dead?t.children[0]:null;i&&i.body_sim.stepPositions[this.iteration]&&(t.position.copy(i.body_sim.stepPositions[this.iteration]),t.quaternion.copy(i.body_sim.stepQuaternions[this.iteration]),i.meshCannon&&(i.meshCannon.position.copy(i.body_sim.stepPositions[this.iteration]),i.meshCannon.quaternion.copy(i.body_sim.stepQuaternions[this.iteration])))}this.detectedCollides[this.iteration]&&this.playAudioSprite(...this.detectedCollides[this.iteration])}else if(!this.rolling){let e=!0;for(let t=0;t{this.callback(this.throws),this.callback=null,this.throws=null,this.animatedDiceDetected||this.allowInteractivity&&this.deadDiceList.length+this.diceList.length>0||yn.renderQueue.length||this.removeTicker(this.animateThrow)})),this.running=!1)}start_throw(e,t){if(this.rolling)return;let i=0;e.forEach((e=>{let t={x:(2*Math.random()-.5)*this.display.currentWidth,y:-(2*Math.random()-.5)*this.display.currentHeight},n=Math.sqrt(t.x*t.x+t.y*t.y),r=.8;switch(this.throwingForce){case"weak":r=.5;break;case"strong":r=1.8}let s=(Math.random()+3)*r*n;e=this.getVectors(e,t,s,n),i+=e.dice.length}));let n=game.settings.get("dice-so-nice","maxDiceNumber");this.deadDiceList.length+this.diceList.length+i>n&&this.clearAll(),this.isVisible=!0,this.rollDice(e,t)}clearDice(){this.running=!1,this.deadDiceList=this.deadDiceList.concat(this.diceList),this.diceList=[]}clearAll(){let e;for(this.clearDice();e=this.deadDiceList.pop();)this.scene.remove("Scene"==e.parent.type?e:e.parent),e.body_sim&&this.world_sim.remove(e.body_sim);this.pane&&this.scene.remove(this.pane),"board"==this.config.boxType?(yn.clearQueue(),this.removeTicker(this.animateThrow)):this.removeTicker(this.animateSelector),this.renderScene(),this.isVisible=!1}renderScene(){if(this.dicefactory.realisticLighting){if(game.dice3d.uniforms.globalBloom.value=1,!this.finalComposer)return;let e=!1,t=this.blackColor;this.scene.traverseVisible((function(i){!i.material||null==i.material.emissive||i.material.emissive.equals(t)||(e=!0)})),e&&this.dicefactory.glow?(this.bloomComposer.render(),this.blendingPass.enabled=!0):this.blendingPass.enabled=!1,game.dice3d.uniforms.globalBloom.value=0,this.finalComposer.render()}else this.renderer.render(this.scene,this.camera)}clearScene(){for(;this.scene.children.length>0;)this.scene.remove(this.scene.children[0]);this.desk.material.dispose(),this.desk.geometry.dispose(),this.composerTarget&&this.composerTarget.dispose(),this.bloomPass&&this.bloomPass.dispose(),this.AAPass&&this.AAPass.dispose(),this.bloomComposer&&(this.bloomComposer.renderTarget1.dispose(),this.bloomComposer.renderTarget2.dispose()),this.finalComposer&&(this.finalComposer.renderTarget1.dispose(),this.finalComposer.renderTarget2.dispose()),this.dicefactory.shadows&&this.light.shadow.map.dispose(),"board"==this.config.boxType?this.removeTicker(this.animateThrow):this.removeTicker(this.animateSelector)}removeTicker(e){let t=canvas.app.ticker,i=t._head.next;for(;i;)i=i.fn===e?i.destroy():i.next;return t._head.next||t._cancelIfNeeded(),t}rollDice(e,t){this.camera.position.z=this.cameraHeight.far,this.clearDice(),this.minIterations=(e.length-1)*this.nbIterationsBetweenRolls;for(let t=0;te.type));const i=["d3","d5","d7","d14","d16","d24","d30"];this.showExtraDice||(t=t.filter((e=>!i.includes(e))));let n=this.display.containerWidth/this.display.containerHeight,r=Math.min(t.length,Math.round(Math.sqrt(n*t.length))),s=Math.floor((t.length+r-1)/r);if(this.camera.position.z=this.cameraHeight.medium,this.camera.position.x=this.display.containerWidth/2-this.display.containerWidth/r/2,this.camera.position.y=-this.display.containerHeight/2+this.display.containerHeight/s/2,this.camera.fov=2*Math.atan(this.display.containerHeight/(2*this.camera.position.z))*(180/Math.PI),this.camera.updateProjectionMatrix(),this.pane&&this.scene.remove(this.pane),this.desk&&this.scene.remove(this.desk),this.dicefactory.shadows){let e=new ShadowMaterial;e.opacity=.5,this.pane=new Mesh(new PlaneGeometry(2*this.display.containerWidth,2*this.display.containerHeight,1,1),e),this.pane.receiveShadow=this.dicefactory.shadows,this.pane.position.set(0,0,-70),this.scene.add(this.pane)}let a=0;for(let i=0;i=t.length);n++){let o=this.dicefactory.getAppearanceForDice(e.appearance,t[a]),l=this.dicefactory.create(this.renderer.scopedTextureCache,t[a],o);l.scale.set(Math.min(5*l.scale.x/r,2*l.scale.x/s),Math.min(5*l.scale.y/r,2*l.scale.y/s),Math.min(5*l.scale.z/r,2*l.scale.z/s)),l.position.set(n*this.display.containerWidth/r,-i*this.display.containerHeight/s,0),l.castShadow=this.dicefactory.shadows,l.userData=t[a],this.diceList.push(l),this.scene.add(l),a++}this.last_time=0,this.selector.animate?(this.container.style.opacity=0,this.last_time=window.performance.now(),this.start_time=this.last_time,this.framerate=1e3/60,this.removeTicker(this.animateSelector),canvas.app.ticker.add(this.animateSelector,this)):this.renderScene(),setTimeout((()=>{this.scene.traverse((e=>{"Mesh"===e.type&&(e.material.needsUpdate=!0)}))}),2e3)}animateSelector(){this.animstate="selector";let e=window.performance.now(),t=e-this.last_time;if(t>this.framerate){if(this.last_time=e-t%this.framerate,"1"!=this.container.style.opacity&&(this.container.style.opacity=Math.min(1,parseFloat(this.container.style.opacity)+.05)),this.selector.rotate){let e=.005*Math.PI;for(let t=0;t{t.specialEffects&&t.specialEffects.forEach((i=>{e.push(yn.playSFX(i,this,t))}))})),Promise.all(e)}}class DiceNotation{constructor(e,t=null){this.throws=[{dice:[]}],this.userConfig=t,e.dice.forEach((e=>{if([2,3,4,5,6,7,8,10,12,14,16,20,24,30,100].includes(e.faces)){let t=e.number,i=0,n=0;for(let r=0;r=this.throws.length&&this.throws.push({dice:[]}),e.results[r].exploded&&i++,e.results[r].indexThrow=n,e.results[r].discarded||--t<=0&&(n++,t=i,i=0)}}));let i=0,n=game.settings.get("dice-so-nice","maxDiceNumber");e.dice.some((t=>{if([2,3,4,5,6,7,8,10,12,14,16,20,24,30,100].includes(t.faces))for(let r=0;r=n)return!0;t.results[r].hidden||(e.ghost?t.options.ghost=!0:e.secret&&(t.options.secret=!0),this.addDie(t,r),100==t.faces&&this.addDie(t,r,!0))}}))}addDie(e,t,i=!1){let n={},r=e.results[t].result;100==e.faces?(i?(r%=10,n.resultLabel=e.getResultLabel({result:r})):(r=parseInt(r/10),n.resultLabel=e.getResultLabel({result:10*r}),10==r&&(r=0)),n.d100Result=e.results[t].result):n.resultLabel=e.getResultLabel({result:r}),n.result=r,e.results[t].discarded&&(n.discarded=!0),n.type=e.constructor.DENOMINATION,e.constructor.name==CONFIG.Dice.terms.d.name?n.type+=i?"10":e.faces:n.type="d"+n.type,n.vectors=[],n.options=duplicate(e.options),this.userConfig&&!this.userConfig.enableFlavorColorset&&n.options.flavor&&delete n.options.flavor,this.throws[e.results[t].indexThrow].dice.push(n)}static mergeQueuedRollCommands(e){let t=[];e.forEach((e=>{for(let i=0;i!t[e][i].dice[r].discarded&&!t[e][i].dice[r].options.ghost&&("d100"!=n.diceType&&n.diceType==t[e][i].dice[r].type&&n.onResult.includes(t[e][i].dice[r].result.toString())||"d100"==n.diceType&&t[e][i].dice[r].d100Result&&n.onResult.includes(t[e][i].dice[r].d100Result.toString())||t[e][i].dice[r].options.sfx&&t[e][i].dice[r].options.sfx.id==n.diceType&&n.onResult.includes(t[e][i].dice[r].options.sfx.result.toString()))));t[e][i].dice[r].options.sfx&&t[e][i].dice[r].options.sfx.specialEffect&&s.push({specialEffect:t[e][i].dice[r].options.sfx.specialEffect,options:t[e][i].dice[r].options.sfx.options}),s.length&&(s=s.filter(((e,t,i)=>i.indexOf(e)===t)),t[e][i].dice[r].specialEffects=s)}}return t}}class Accumulator{constructor(e,t){this._timeout=null,this._delay=e,this._onEnd=t,this._items=[]}addItem(e){this._items.push(e),this._timeout&&clearTimeout(this._timeout);let t=function(){this._onEnd(this._items),this._timeout=null,this._items=[]}.bind(this);this._delay?this._timeout=setTimeout(t,this._delay):t()}}class Utils{static async migrateOldSettings(){let e=game.settings.get("dice-so-nice","settings");e.hasOwnProperty("enabled")&&(await game.user.setFlag("dice-so-nice","settings",e),await game.settings.set("dice-so-nice","settings",{}));let t=game.settings.get("dice-so-nice","formatVersion");if(""==t||"4.1"!=t){if(!game.user.isGM)return ui.notifications.warn(game.i18n.localize("DICESONICE.migrateMessageNeedGM")),!1}else if("4.1"==t){if(game.user.isGM)await Promise.all(game.users.map((async e=>{let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null;if(t&&t.hasOwnProperty("labelColor")){let t={"-=colorset":null,"-=diceColor":null,"-=edgeColor":null,"-=font":null,"-=labelColor":null,"-=material":null,"-=outlineColor":null,"-=system":null,"-=texture":null};await e.setFlag("dice-so-nice","appearance",t)}})));else{let e=game.user.getFlag("dice-so-nice","appearance")?duplicate(game.user.getFlag("dice-so-nice","appearance")):null;if(e&&e.hasOwnProperty("labelColor")){let e={"-=colorset":null,"-=diceColor":null,"-=edgeColor":null,"-=font":null,"-=labelColor":null,"-=material":null,"-=outlineColor":null,"-=system":null,"-=texture":null};await game.user.setFlag("dice-so-nice","appearance",e)}}return!0}let i=!1;if(""==t){let e=game.user.getFlag("dice-so-nice","settings")?duplicate(game.user.getFlag("dice-so-nice","settings")):{};if(e.diceColor||e.labelColor){let t=mergeObject(game.dice3d.constructor.DEFAULT_OPTIONS,e,{insertKeys:!1,insertValues:!1,performDeletions:!0}),n=mergeObject(game.dice3d.constructor.DEFAULT_APPEARANCE(),e,{insertKeys:!1,insertValues:!1,performDeletions:!0});await game.settings.set("dice-so-nice","settings",mergeObject(t,{"-=dimensions":null,"-=fxList":null},{performDeletions:!0})),await game.user.setFlag("dice-so-nice","appearance",n),i=!0}await Promise.all(game.users.map((async e=>{let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null;if(t&&t.hasOwnProperty("labelColor")){let n={global:t};await e.unsetFlag("dice-so-nice","appearance"),await e.setFlag("dice-so-nice","appearance",n),i=!0}let n=e.getFlag("dice-so-nice","sfxList")?duplicate(e.getFlag("dice-so-nice","sfxList")):null;n&&(Array.isArray(n)||(n=Object.values(n)),n.forEach((e=>{e.onResult=[e.onResult]})),await e.unsetFlag("dice-so-nice","sfxList"),await e.setFlag("dice-so-nice","sfxList",n),i=!0)})))}return await Promise.all(game.users.map((async e=>{let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null;if(t&&t.hasOwnProperty("labelColor")){let t={"-=colorset":null,"-=diceColor":null,"-=edgeColor":null,"-=font":null,"-=labelColor":null,"-=material":null,"-=outlineColor":null,"-=system":null,"-=texture":null};await e.setFlag("dice-so-nice","appearance",t)}}))),game.settings.set("dice-so-nice","formatVersion","4.1"),i&&ui.notifications.info(game.i18n.localize("DICESONICE.migrateMessage")),!0}static localize(e){return Object.keys(e).reduce(((t,i)=>(t[i]=game.i18n.localize(e[i]),t)),{})}static contrastOf(e){"#"===e.slice(0,1)&&(e=e.slice(1)),3===e.length&&(e=e.split("").map((function(e){return e+e})).join(""));return(299*parseInt(e.substr(0,2),16)+587*parseInt(e.substr(2,2),16)+114*parseInt(e.substr(4,2),16))/1e3>=128?"#000000":"#FFFFFF"}static prepareTextureList(){return Object.keys(Ai).reduce(((e,t)=>(e[t]=game.i18n.localize(Ai[t].name),e)),{})}static prepareFontList(){let e={auto:game.i18n.localize("DICESONICE.FontAuto")};return mergeObject(e,FontConfig.getAvailableFontChoices())}static prepareColorsetList(){let e=Object.values(Pi);e.sort(((e,t)=>game.i18n.localize(e.description)game.i18n.localize(t.description)?1:void 0));let t={};for(let i=0;i(t[i]=game.i18n.localize(e[i].name),t)),{})}static filterObject(e,t){return Object.keys(e).filter((i=>t(e[i]))).reduce(((t,i)=>(t[i]=e[i],t)),{})}static actionSaveAs(e){let t,i=game.user.getFlag("dice-so-nice","saves");t=i?new Map(Object.entries(i)):new Map;let n={appearance:game.user.getFlag("dice-so-nice","appearance"),sfxList:game.user.getFlag("dice-so-nice","sfxList"),settings:game.settings.get("dice-so-nice","settings")};t.set(e,n),game.user.unsetFlag("dice-so-nice","saves").then((()=>{game.user.setFlag("dice-so-nice","saves",Object.fromEntries(t))}))}static async actionDeleteSave(e){let t=game.user.getFlag("dice-so-nice","saves"),i=new Map(Object.entries(t));i.delete(e),game.user.unsetFlag("dice-so-nice","saves").then((async()=>{await game.user.setFlag("dice-so-nice","saves",Object.fromEntries(i)),ui.notifications.info(game.i18n.localize("DICESONICE.saveMessage"))}))}static async actionLoadSave(e){let t=game.user.getFlag("dice-so-nice","saves"),i=new Map(Object.entries(t)).get(e);i.appearance&&(await game.user.unsetFlag("dice-so-nice","appearance"),await game.user.setFlag("dice-so-nice","appearance",i.appearance)),i.sfxList&&(await game.user.unsetFlag("dice-so-nice","sfxList"),await game.user.setFlag("dice-so-nice","sfxList",i.sfxList)),i.settings&&(await game.user.unsetFlag("dice-so-nice","settings"),await game.user.setFlag("dice-so-nice","settings",i.settings))}}class DiceTour extends Tour{async waitForElement(e){return new Promise(((t,i)=>{if(document.querySelector(e))return void t();new MutationObserver(((i,n)=>{document.querySelectorAll(e).forEach((e=>{t(e),n.disconnect()}))})).observe(document.body,{childList:!0,subtree:!0})}))}async _preStep(){await super._preStep(),await this.waitForElement(this.currentStep.selector)}async _postStep(){if(await super._postStep(),this.stepIndex<0||!this.hasNext)return;if(!this.currentStep.action)return;if(this.triggerReset)return void(this.triggerReset=!1);let e=this.currentStep.target?this.currentStep.target:this.currentStep.selector;switch(this.currentStep.action){case"click":document.querySelector(e).click();break;case"scrollTo":document.querySelector(e).scrollIntoView({block:"start",inline:"nearest"})}}async reset(){"completed"!=this.status&&(this.triggerReset=!0),await super.reset()}}class DiceTourMain extends DiceTour{constructor(){super({title:"How to use Dice So Nice!",description:"Learn how to customize your 3D dice in this short tour of the module",canBeResumed:!1,display:!0,steps:[{id:"goto-settings",selector:'[data-tab="settings"]',title:game.i18n.localize("DICESONICE.TourMainTitleGotoSettings"),content:game.i18n.localize("DICESONICE.TourMainContentGotoSettings"),action:"click"},{id:"goto-configure",selector:'[data-action="configure"]',title:game.i18n.localize("DICESONICE.TourMainTitleGotoConfigure"),content:game.i18n.localize("DICESONICE.TourMainContentGotoConfigure"),action:"click"},{id:"goto-modulessettings",title:game.i18n.localize("DICESONICE.TourMainTitleGotoModulesSettings"),selector:'.category-filter [data-category="dice-so-nice"]',content:game.i18n.localize("DICESONICE.TourMainContentGotoModulesSettings"),action:"click"},{id:"goto-dicesonice",title:game.i18n.localize("DICESONICE.TourMainTitleGotoDiceSoNice"),selector:"#client-settings form.categories div.scrollable",content:game.i18n.localize("DICESONICE.TourMainContentGotoDiceSoNice")},{id:"goto-dicesonice-settings",title:game.i18n.localize("DICESONICE.TourMainTitleGotoDiceSoNiceSettings"),selector:'[data-key="dice-so-nice.dice-so-nice"]',content:game.i18n.localize("DICESONICE.TourMainContentGotoDiceSoNiceSettings"),action:"click"},{id:"show-3d-dice",title:game.i18n.localize("DICESONICE.TourMainTitleShow3DDice"),selector:"#dice-configuration-canvas",content:game.i18n.localize("DICESONICE.TourMainContentShow3DDice")},{id:"show-appearance",title:game.i18n.localize("DICESONICE.TourMainTitleShowAppearance"),selector:"#dsn-appearance-content",content:game.i18n.localize("DICESONICE.TourMainContentShowAppearance"),action:"click",target:'.dice-so-nice a[data-tab="preferences"]'},{id:"show-preferences",title:game.i18n.localize("DICESONICE.TourMainTitleShowPreferences"),selector:'.dice-so-nice div.tab.active[data-tab="preferences"]',content:game.i18n.localize("DICESONICE.TourMainContentShowPreferences"),action:"click",target:'.dice-so-nice a[data-tab="sfx"]'},{id:"show-sfx",title:game.i18n.localize("DICESONICE.TourMainTitleShowSFX"),selector:'.dice-so-nice div.tab.active[data-tab="sfx"]',content:game.i18n.localize("DICESONICE.TourMainContentShowSFX"),action:"click",target:'.dice-so-nice a[data-tab="performance"]'},{id:"show-performance",title:game.i18n.localize("DICESONICE.TourMainTitleShowPerformance"),selector:'.dice-so-nice div.tab.active[data-tab="performance"]',content:game.i18n.localize("DICESONICE.TourMainContentShowPerformance"),action:"click",target:'.dice-so-nice a[data-tab="backup"]'},{id:"show-backup",title:game.i18n.localize("DICESONICE.TourMainTitleShowBackup"),selector:'.dice-so-nice div.tab.active[data-tab="backup"]',content:game.i18n.localize("DICESONICE.TourMainContentShowBackup")},{id:"end-tour",title:game.i18n.localize("DICESONICE.TourMainTitleEndTour"),selector:'.dice-so-nice div.tab.active[data-tab="backup"]',content:game.i18n.localize("DICESONICE.TourMainContentEndTour")}]})}async _preStep(){switch(this.currentStep.id){case"goto-settings":document.querySelector('a[data-tab="chat"]').click();break;case"goto-dicesonice":$("[data-tab=\"modules\"] h2:contains('Dice So Nice!')").addClass("dice-tour")}await super._preStep()}async _postStep(){if(this.currentStep){if("end-tour"===this.currentStep.id)document.querySelector(".dice-so-nice button[data-test]").click();await super._postStep()}}}class Dice3D{static get DEFAULT_OPTIONS(){return{enabled:!0,showExtraDice:!(!game.dice3d||!game.dice3d.hasOwnProperty("defaultShowExtraDice"))&&game.dice3d.defaultShowExtraDice,hideAfterRoll:!0,timeBeforeHide:2e3,hideFX:"fadeOut",autoscale:!0,scale:75,speed:1,imageQuality:"high",shadowQuality:"high",bumpMapping:!0,sounds:!0,soundsSurface:"felt",soundsVolume:.5,canvasZIndex:"over",throwingForce:"medium",useHighDPI:!0,antialiasing:2===game.canvas.app.renderer.context.webGLVersion?"msaa":"smaa",glow:!0,showOthersSFX:!0,immersiveDarkness:!0,muteSoundSecretRolls:!1,enableFlavorColorset:!0,rollingArea:!1}}static DEFAULT_APPEARANCE(e=game.user){return{global:{labelColor:Utils.contrastOf(e.color),diceColor:e.color,outlineColor:e.color,edgeColor:e.color,texture:"none",material:"auto",font:"auto",colorset:"custom",system:"standard"}}}static ALL_DEFAULT_OPTIONS(e=game.user){let t=mergeObject(Dice3D.DEFAULT_OPTIONS,{appearance:Dice3D.DEFAULT_APPEARANCE(e)},{performDeletions:!0});return t.appearance.global.system=game.dice3d.DiceFactory.preferredSystem,t.appearance.global.colorset=game.dice3d.DiceFactory.preferredColorset,t}static CONFIG(e=game.user){let t=e.getFlag("dice-so-nice","settings")?duplicate(e.getFlag("dice-so-nice","settings")):null,i=mergeObject(Dice3D.DEFAULT_OPTIONS,t,{performDeletions:!0});return mergeObject(i,{"-=appearance":null,"-=sfxLine":null},{performDeletions:!0}),i}static APPEARANCE(e=game.user){let t=e.getFlag("dice-so-nice","appearance")?duplicate(e.getFlag("dice-so-nice","appearance")):null,i=mergeObject(Dice3D.DEFAULT_APPEARANCE(e),t,{performDeletions:!0});return mergeObject(i,{"-=dimensions":null},{performDeletions:!0})}static SFX(e=game.user){let t;return t=(Dice3D.CONFIG().showOthersSFX||e.id==game.user.id)&&e.getFlag("dice-so-nice","sfxList")?duplicate(e.getFlag("dice-so-nice","sfxList")):[],Array.isArray(t)||(t=[]),t}static ALL_CUSTOMIZATION(e=game.user,t=null){let i=Dice3D.SFX(e)||[];game.users.forEach((t=>{if(t.isGM&&t.id!=e.id){let e=Dice3D.SFX(t);Array.isArray(e)&&(e=e.filter((e=>e.options&&e.options.isGlobal)),i=i.concat(e))}}));let n=mergeObject({appearance:Dice3D.APPEARANCE(e)},{specialEffects:i},{performDeletions:!0});return t&&!game.user.getFlag("dice-so-nice","appearance")&&("standard"!=t.preferredSystem&&(n.appearance.global.system=t.preferredSystem),"custom"!=t.preferredColorset&&(n.appearance.global.colorset=t.preferredColorset)),n}static ALL_CONFIG(e=game.user){let t=mergeObject(Dice3D.CONFIG(e),{appearance:Dice3D.APPEARANCE(e)},{performDeletions:!0});return t.specialEffects=Dice3D.SFX(e),t}addSystem(e,t="default"){"boolean"==typeof t&&(t=t?"preferred":"default"),this.DiceFactory.addSystem(e,t)}addDicePreset(e,t=null){this.DiceFactory.addDicePreset(e,t)}addTexture(e,t){return t.bump||(t.bump=""),new Promise((i=>{let n={};n[e]=t,Ai[e]=t,DiceColors.loadTextures(n,(e=>{i()}))}))}async addColorset(e,t="default"){e=mergeObject({foreground:"custom",background:"custom",outline:"",edge:"",texture:"custom",material:"custom",font:"custom",visibility:"visible"},e,{performDeletions:!0}),Pi[e.name]=e,DiceColors.initColorSets(e),e.font&&!FontConfig.getAvailableFonts().includes(e.font)&&await FontConfig.loadFont(e.font,{editor:!1,fonts:[]}),"preferred"==t&&(this.DiceFactory.preferredColorset=e.name)}addSFXTrigger(e,t,i){yn.EXTRA_TRIGGER_RESULTS[e]||(yn.EXTRA_TRIGGER_TYPE.push({id:e,name:t}),yn.EXTRA_TRIGGER_RESULTS[e]=[],i.forEach((t=>{yn.EXTRA_TRIGGER_RESULTS[e].push({id:t,name:t})})))}async loadSaveFile(e){game.user.getFlag("dice-so-nice","saves").hasOwnProperty(e)&&await Utils.actionLoadSave(e)}constructor(){Hooks.call("diceSoNiceInit",this),this.dice3dRenderers={board:null,showcase:null},this.exports={Utils,DiceColors,TEXTURELIST:Ai,COLORSETS:Pi},this.uniforms={globalBloom:{value:1},bloomStrength:{value:2.5},bloomRadius:{value:.5},bloomThreshold:{value:.03},iridescenceLookUp:{value:new ThinFilmFresnelMap},iridescenceNoise:{value:(new TextureLoader).load("modules/dice-so-nice/textures/noise-thin-film.webp")},boost:{value:1.5}},this.hiddenAnimationQueue=[],this.defaultShowExtraDice=Dice3D.DEFAULT_OPTIONS.showExtraDice,this._buildCanvas(),this._initListeners(),this._buildDiceBox(),DiceColors.loadTextures(Ai,(async e=>{DiceColors.initColorSets(),Hooks.call("diceSoNiceReady",this),await this.DiceFactory._loadFonts(),await this.DiceFactory.preloadPresets()})),yn.init(),this._startQueueHandler(),this._nextAnimationHandler(),this._welcomeMessage(),this._registerTours()}get canInteract(){return!this.box.running}_buildCanvas(){const e=Dice3D.CONFIG(),t=$("#sidebar").width(),i=t>window.innerWidth/2?0:t,n=e.rollingArea?e.rollingArea:{left:0,top:0,width:window.innerWidth-i,height:window.innerHeight-1};this.canvas=$(`
`),"over"===e.canvasZIndex?(this.canvas.css("z-index",1e3),this.canvas.appendTo($("body"))):$("#board").after(this.canvas),this.canvas.width(n.width+"px"),this.canvas.height(n.height+"px")}_buildDiceBox(){this.DiceFactory=new DiceFactory;let e=Dice3D.ALL_CONFIG();e.boxType="board",this.box=new DiceBox(this.canvas[0],this.DiceFactory,e),this.box.initialize()}_initListeners(){this._rtime,this._timeout=!1,$(window).resize((()=>{this._rtime=new Date,!1===this._timeout&&(this._timeout=!0,setTimeout(this._resizeEnd.bind(this),1e3))})),$(document).on("click",".dice-so-nice-btn-settings",(e=>{e.preventDefault();return(new(game.settings.menus.get(e.currentTarget.dataset.key).type)).render(!0)})),$(document).on("click",".dice-so-nice-btn-tour",(e=>{e.preventDefault(),game.tours.get("dice-so-nice.dice-so-nice-tour").start()})),game.socket.on("module.dice-so-nice",(e=>{switch(e.type){case"show":e.users&&!e.users.includes(game.user.id)||this.show(e.data,game.users.get(e.user));break;case"update":(e.user==game.user.id||Dice3D.CONFIG().showOthersSFX)&&yn.init(),e.user!=game.user.id&&this.DiceFactory.preloadPresets(!1,e.user)}})),game.settings.get("dice-so-nice","allowInteractivity")&&($(document).on("mousemove.dicesonice","body",this._onMouseMove.bind(this)),$(document).on("mousedown.dicesonice","body",this._onMouseDown.bind(this)),$(document).on("mouseup.dicesonice","body",this._onMouseUp.bind(this)))}_mouseNDC(e){let t=this.canvas[0].getBoundingClientRect(),i=(e.clientX-t.left)/t.width*2-1;return i>1&&(i=1),{x:i,y:-(e.clientY-t.top)/t.height*2+1}}_onMouseMove(e){this.canInteract&&this.box.onMouseMove(e,this._mouseNDC(e))}_onMouseDown(e){if(!this.canInteract)return;if(this.box.onMouseDown(e,this._mouseNDC(e)))this._beforeShow();else{Dice3D.CONFIG().hideAfterRoll||!this.canvas.is(":visible")||this.box.rolling||(this.canvas.hide(),this.box.clearAll())}}_onMouseUp(e){if(!this.canInteract)return;this.box.onMouseUp(e)&&this._afterShow()}_resizeEnd(){new Date-this._rtime<1e3?setTimeout(this._resizeEnd.bind(this),1e3):(this._timeout=!1,this.resizeAndRebuild())}resizeAndRebuild(){this.canvas[0].remove(),this.box.clearScene(),this._buildCanvas();let e=Dice3D.ALL_CONFIG();e.boxType="board",this.box=new DiceBox(this.canvas[0],this.DiceFactory,e),this.box.initialize(),this.box.preloadSounds()}_startQueueHandler(){this.queue=[],setInterval((()=>{if(this.queue.length>0&&!this.box.rolling){this.queue.shift()()}}),100)}_welcomeMessage(){if(!game.user.getFlag("dice-so-nice","welcomeMessageShown")){if(!game.user.getFlag("dice-so-nice","appearance")){const e=[`\n
\n

${game.i18n.localize("DICESONICE.WelcomeTitle")}

\n

${game.i18n.localize("DICESONICE.WelcomeMessage1")}

\n

${game.i18n.localize("DICESONICE.WelcomeMessage2")}

\n

\n \n

\n

${game.i18n.localize("DICESONICE.WelcomeMessage3")}

\n

${game.i18n.localize("DICESONICE.WelcomeMessageTour")}

\n

\n \n

\n

${game.i18n.localize("DICESONICE.WelcomeMessage4")}

\n
${game.i18n.localize("NUE.FirstLaunchHint")}
\n
\n `].map((e=>({whisper:[game.user.id],speaker:{alias:"Dice So Nice!"},flags:{core:{canPopout:!0}},content:e})));ChatMessage.implementation.createDocuments(e)}game.user.setFlag("dice-so-nice","welcomeMessageShown",!0)}}_registerTours(){game.tours.register("dice-so-nice","dice-so-nice-tour",new DiceTourMain)}isEnabled(){let e=!game.combat||!game.combat.started||game.combat&&game.combat.started&&!game.settings.get("dice-so-nice","disabledDuringCombat");return Dice3D.CONFIG().enabled&&e}update(e){this.box.update(e)}renderRolls(e,t){const showMessage=()=>{delete e._dice3danimating,window.ui.chat.element.find(`.message[data-message-id="${e.id}"]`).removeClass("dsn-hide").find(".dice-roll").removeClass("dsn-hide"),window.ui.sidebar.popouts.chat&&window.ui.sidebar.popouts.chat.element.find(`.message[data-message-id="${e.id}"]`).removeClass("dsn-hide").find(".dice-roll").removeClass("dsn-hide"),Hooks.callAll("diceSoNiceRollComplete",e.id),window.ui.chat.scrollBottom({popout:!0})};if("stream"!=game.view||game.modules.get("0streamutils")?.active){let i=[[]];t.forEach((e=>{e.dice.forEach((e=>{let t=0;!game.settings.get("dice-so-nice","enabledSimultaneousRollForMessage")&&e.options.hasOwnProperty("rollOrder")&&(t=e.options.rollOrder,null==i[t]&&(i[t]=[])),i[t].push(e)}))})),i=i.filter((e=>null!=e));let n=[];const r=new OperatorTerm({operator:"+"}).evaluate();i.forEach((e=>{if(Array.isArray(e)&&e.length){let t=[...e].map(((t,i)=>ie.concat(t)));n.push(CONFIG.Dice.rolls[0].fromTerms(t))}}));const recursShowForRoll=(t,i)=>{this.showForRoll(t[i],e.user,!1,null,!1,e.id,e.speaker).then((()=>{i++,null!=t[i]?recursShowForRoll(t,i):showMessage()}))};recursShowForRoll(n,0)}else setTimeout(showMessage,2500,e)}showForRoll(e,t=game.user,i,n=null,r,s=null,a=null){let o={roll:e,user:t,users:n,blind:r};if(a){let e=game.actors.get(a.actor);if(!!e&&"npc"===e.type&&game.settings.get("dice-so-nice","hideNpcRolls"))return Promise.resolve(!1)}let l=game.messages.get(s);l&&(l.whisper.length>0&&(o.roll.secret=!0),l.isContentVisible||(o.roll.ghost=!0)),Hooks.callAll("diceSoNiceRollStart",s,o);let c=new DiceNotation(o.roll,Dice3D.ALL_CONFIG(t));return this.show(c,o.user,i,o.users,o.blind)}show(e,t=game.user,i=!1,n=null,r){return new Promise(((s,a)=>{if(!e.throws)throw new Error("Roll data should be not null");e.throws.length&&this.isEnabled()?(i&&(n=n&&n.length>0&&n[0]?.id?n.map((e=>e.id)):n,game.socket.emit("module.dice-so-nice",{type:"show",data:e,user:t.id,users:n})),r?s(!1):document.hidden?this.hiddenAnimationQueue.push({data:e,config:Dice3D.ALL_CUSTOMIZATION(t,this.DiceFactory),timestamp:(new Date).getTime(),resolve:s}):this._showAnimation(e,Dice3D.ALL_CUSTOMIZATION(t,this.DiceFactory)).then((e=>{s(e)}))):s(!1),game.settings.get("dice-so-nice","immediatelyDisplayChatMessages")&&s()}))}showExtraDiceByDefault(e=!0){this.defaultShowExtraDice=e}waitFor3DAnimationByMessageID(e){function buildHook(t){Hooks.once("diceSoNiceRollComplete",(i=>{e===i?t(!0):buildHook(t)}))}return new Promise(((e,t)=>{game.dice3d&&Dice3D.CONFIG().enabled?buildHook(e):e(!0)}))}_showAnimation(e,t){return e.dsnConfig=t,new Promise(((t,i)=>{this.nextAnimation.addItem({params:e,resolve:t})}))}_nextAnimationHandler(){let e=game.settings.get("dice-so-nice","enabledSimultaneousRolls")?400:0;this.nextAnimation=new Accumulator(e,(e=>{let t=DiceNotation.mergeQueuedRollCommands(e);if(this.isEnabled()&&this.queue.length<10){let i=t.length;t.forEach((t=>{this.queue.push((()=>{this._beforeShow(),this.box.start_throw(t,(()=>{if(!--i){for(let t of e)t.resolve(!0);this._afterShow()}}))}))}))}else for(let t of e)t.resolve(!1)}))}_beforeShow(){this.timeoutHandle&&clearTimeout(this.timeoutHandle),this.canvas.stop(!0),this.canvas.show()}_afterShow(){if(Dice3D.CONFIG().hideAfterRoll){if(yn.renderQueue.length)return void clearTimeout(this.timeoutHandle);this.timeoutHandle=setTimeout((()=>{this.box.rolling||("none"===Dice3D.CONFIG().hideFX&&(this.canvas.hide(),this.box.clearAll()),"fadeOut"===Dice3D.CONFIG().hideFX&&this.canvas.fadeOut({duration:1e3,complete:()=>{this.box.clearAll()},fail:()=>{this.canvas.fadeIn(0)}}))}),Dice3D.CONFIG().timeBeforeHide)}}}class DiceConfig extends FormApplication{static get defaultOptions(){return mergeObject(super.defaultOptions,{title:game.i18n.localize("DICESONICE.configTitle"),id:"dice-config",template:"modules/dice-so-nice/templates/dice-config.html",width:650,height:"auto",closeOnSubmit:!0,tabs:[{navSelector:".tabs",contentSelector:"#config-tabs",initial:"general"},{navSelector:".dsn-appearance-tabs",contentSelector:"#dsn-appearance-content",initial:"global"}]})}async getData(e){let t=mergeObject({fxList:Utils.localize({none:"DICESONICE.None",fadeOut:"DICESONICE.FadeOut"}),speedList:Utils.localize({1:"DICESONICE.NormalSpeed",2:"DICESONICE.2xSpeed",3:"DICESONICE.3xSpeed"}),textureList:Utils.prepareTextureList(),materialList:Utils.localize({auto:"DICESONICE.MaterialAuto",chrome:"DICESONICE.MaterialChrome",glass:"DICESONICE.MaterialGlass",iridescent:"DICESONICE.MaterialIridescent",metal:"DICESONICE.MaterialMetal",plastic:"DICESONICE.MaterialPlastic",pristine:"DICESONICE.MaterialPristine",stone:"DICESONICE.MaterialStone",wood:"DICESONICE.MaterialWood"}),fontList:Utils.prepareFontList(),colorsetList:Utils.prepareColorsetList(),imageQualityList:Utils.localize({low:"DICESONICE.Low",medium:"DICESONICE.Medium",high:"DICESONICE.High",custom:"DICESONICE.Custom"}),shadowQualityList:Utils.localize({none:"DICESONICE.None",low:"DICESONICE.Low",high:"DICESONICE.High"}),antialiasingList:Utils.localize({none:"DICESONICE.None",smaa:"DICESONICE.SMAA",msaa:"DICESONICE.MSAA"}),systemList:Utils.prepareSystemList(),soundsSurfaceList:Utils.localize({felt:"DICESONICE.SurfaceFelt",wood_table:"DICESONICE.SurfaceWoodTable",wood_tray:"DICESONICE.SurfaceWoodTray",metal:"DICESONICE.SurfaceMetal"}),canvasZIndexList:Utils.localize({over:"DICESONICE.CanvasZIndexOver",under:"DICESONICE.CanvasZIndexUnder"}),throwingForceList:Utils.localize({weak:"DICESONICE.ThrowingForceWeak",medium:"DICESONICE.ThrowingForceMedium",strong:"DICESONICE.ThrowingForceStrong"})},this.reset?Dice3D.ALL_DEFAULT_OPTIONS():Dice3D.ALL_CONFIG());if(delete t.sfxLine,game.canvas.app.renderer.context.webGLVersion<2&&delete t.antialiasingList.msaa,t.specialEffects)for(let[e,i]of Object.entries(t.specialEffects))(Array.isArray(i.diceType)||Array.isArray(i.onResult)||Array.isArray(i.specialEffect))&&delete t.specialEffects[e];this.canvas=$('
')[0];let i=mergeObject(this.reset?Dice3D.ALL_DEFAULT_OPTIONS():Dice3D.ALL_CONFIG(),{dimensions:{w:634,h:245},autoscale:!1,scale:60,boxType:"showcase"});this.box=new DiceBox(this.canvas,game.dice3d.box.dicefactory,i),await this.box.initialize(),game.user.getFlag("dice-so-nice","appearance")||("standard"!=this.box.dicefactory.preferredSystem&&(i.appearance.global.system=this.box.dicefactory.preferredSystem),"standard"!=this.box.dicefactory.preferredColorset&&(i.appearance.global.colorset=this.box.dicefactory.preferredColorset)),this.box.showcase(i),this.navOrder={};let n=[{id:"",name:""}];this.possibleResultList={};let r=0;this.box.diceList.forEach((e=>{this.navOrder[e.userData]=r++,n.push({id:e.userData,name:e.userData}),this.possibleResultList[e.userData]=[];let t=this.box.dicefactory.systems.standard.dice.find((t=>t.type==e.userData)),i=Object.values(CONFIG.Dice.terms).find((e=>e.name==t.term))||Die,s=new i({});if("d100"==e.userData)for(let t=1;t<=100;t++){let i={id:t+"",name:s.getResultLabel({result:t})};this.possibleResultList[e.userData].push(i)}else t.values.forEach((t=>{let i={id:t+"",name:s.getResultLabel({result:t})};this.possibleResultList[e.userData].push(i)}))}));let s=[],a=[],o=Dice3D.SFX();if(this.reset&&(o=[]),this.triggerTypeList=[...n,...yn.EXTRA_TRIGGER_TYPE],mergeObject(this.possibleResultList,yn.EXTRA_TRIGGER_RESULTS,{performDeletions:!0}),o){let e=this.triggerTypeList.map((e=>e.id));o=o.filter((t=>e.includes(t.diceType)))}o&&(o.forEach(((e,t)=>{let i=yn.SFX_MODE_CLASS[e.specialEffect].getDialogContent(e,t),n=Handlebars.compile(i.content);a.push(renderTemplate("modules/dice-so-nice/templates/partial-sfx.html",{id:t,diceType:e.diceType,onResult:e.onResult,specialEffect:e.specialEffect,specialEffectsMode:yn.SFX_MODE_LIST,triggerTypeList:this.triggerTypeList,possibleResultList:this.possibleResultList[e.diceType],options:n(i.data)}).then((e=>{s.push(e)})))})),await Promise.all(a)),t.specialEffectsList=s.join("");let l=[];for(let e in t.appearance)t.appearance.hasOwnProperty(e)&&(l.push(e),"global"!=e&&(t.appearance[e].labelColor||(t.appearance[e].labelColor=t.appearance.global.labelColor),t.appearance[e].diceColor||(t.appearance[e].diceColor=t.appearance.global.diceColor),t.appearance[e].outlineColor||(t.appearance[e].outlineColor=t.appearance.global.outlineColor),t.appearance[e].edgeColor||(t.appearance[e].edgeColor=t.appearance.global.edgeColor)));let c=[],h=[];t.navAppearance={},l.forEach((e=>{h.push(renderTemplate("modules/dice-so-nice/templates/partial-appearance.html",{dicetype:e,appearance:t.appearance[e],systemList:t.systemList,colorsetList:t.colorsetList,textureList:t.textureList,materialList:t.materialList,fontList:t.fontList}).then((e=>{c.push(e)}))),"global"!=e&&(t.navAppearance[e]=e.toUpperCase())})),await Promise.all(h),c.length>1?t.displayHint="style='display:none;'":t.displayHint="",t.tabsAppearance=c.join(""),this.lastActiveAppearanceTab="global",this.initializationData=t,this.currentGlobalAppearance=t.appearance.global,this.sfxDialogList=[];const templateSelect2=e=>{if(e.element){let t=this.possibleResultList[e.element.parentElement.dataset.sfxResultDicetype].find((t=>t.id==e.text)).name;return t!=e.text?`${t} (${e.text})`:e.text}return e.text};return this.select2Options={dropdownCssClass:"dice-so-nice",escapeMarkup:function(e){return e},dropdownParent:"form.dice-so-nice",templateResult:templateSelect2,templateSelection:templateSelect2,width:"306px"},t}activateListeners(e){super.activateListeners(e),$(e).find("#dice-configuration-canvas-container").append(this.canvas),this.toggleHideAfterRoll(),this.toggleAutoScale(),this.toggleCustomization(),this.filterSystems(),this.setPreferredOptions(),select2dsn.call($(this.element).find("[data-sfx-result]"),this.select2Options),this.reset||($(this.element).on("change","[data-showExtraDice]",(e=>{this.onApply(e)})),$(this.element).on("change","[data-hideAfterRoll]",(e=>{this.toggleHideAfterRoll(e)})),$(this.element).on("change","[data-sounds]",(e=>{this.toggleSounds(e)})),$(this.element).on("change","[data-autoscale]",(e=>{this.toggleAutoScale(e)})),$(this.element).on("change","[data-colorset]",(e=>{this.toggleCustomColors($(e.target).data("dicetype"))})),$(this.element).on("change","[data-system]",(e=>{this.toggleCustomization($(e.target).data("dicetype"))})),$(this.element).on("change","input,select",(e=>{this.onApply(e)})),$(this.element).on("click","[data-reset]",(e=>{this.onReset(e)})),$(this.element).on("click","[data-cancel]",(e=>{this.close()})),$(this.element).on("click","[data-close-tab]",(e=>{let t=$(e.target).parent().data("tab");this.closeAppearanceTab(t)})),$(this.element).on("click","[data-test]",(e=>{let t=this.getShowcaseAppearance(),i=[];this.box.diceList.forEach((e=>{"d10"!=e.userData&&i.push(e.userData)})),new Roll(i.join("+")).evaluate({async:!0}).then((e=>{let i=new DiceNotation(e),n=this.getShowcaseSFX(),r=mergeObject({appearance:t.appearance},{specialEffects:n},{performDeletions:!0});game.dice3d._showAnimation(i,r)}))})),$(this.element).on("click","[data-sfx-create]",(e=>{let t=$(this.element).find(".sfx-line").length,i=Object.keys(yn.SFX_MODE_LIST)[0],n=yn.SFX_MODE_CLASS[i].getDialogContent({},t),r=Handlebars.compile(n.content);renderTemplate("modules/dice-so-nice/templates/partial-sfx.html",{id:t,diceType:"",onResult:[],specialEffect:"",specialEffectsMode:yn.SFX_MODE_LIST,triggerTypeList:this.triggerTypeList,possibleResultList:[],options:r(n.data)}).then((e=>{$(this.element).find("#sfxs-list").append(e),select2dsn.call($("[data-sfx-result]"),this.select2Options),this.setPosition()}))})),$(this.element).on("click","[data-sfx-delete]",(e=>{$(e.target).parents(".sfx-line").remove(),$(this.element).find(".sfx-line").each((function(e){$(this).find("input, select").each((function(){let t=$(this).attr("name");$(this).attr("name",t.replace(/(\w+\[)(\d+)(\]\[\w+\])/,"$1"+e+"$3"))}))})),this.setPosition()})),$(this.element).on("click","[data-sfx-options]",(e=>{let t=$(e.target).parents(".sfx-line").find("[data-sfx-hidden-options]");if(t.length<1)return;let i=new Dialog({title:game.i18n.localize("DICESONICE.Options"),content:'
',buttons:{ok:{icon:'',label:"OK"}},default:"ok",render:e=>{t.detach().appendTo($(e).find("form"))},close:t=>{$(t).find("[data-sfx-hidden-options]").detach().appendTo($(e.target).parents(".sfx-line").find(".sfx-hidden")),this.sfxDialogList=this.sfxDialogList.filter((e=>e.appId!=i.appId))}});i.render(!0),this.sfxDialogList.push(i)})),$(this.element).on("change","[data-sfx-dicetype]",(e=>{let t=$(e.target).val(),i=$([]);""!=t?(this.possibleResultList[t].forEach((e=>{let t=$("");t.html(e.id),t.attr("value",e.id),i=i.add(t)})),$(e.target).parents(".sfx-line").find("[data-sfx-result]").html(i).attr("data-sfx-result-dicetype",t).trigger("change")):$(e.target).parents(".sfx-line").find("[data-sfx-result]").empty().trigger("change")})),$(this.element).on("change","[data-sfx-result]",(e=>{this.setPosition()})),$(this.element).on("change","[data-sfx-specialeffect]",(e=>{this.sfxDialogList.forEach((e=>{e.close()})),this.sfxDialogList=[];let t=$(e.target).parents(".sfx-line"),i=t.prevAll(".sfx-line").length,n=yn.SFX_MODE_CLASS[$(e.target).val()].getDialogContent({},i),r=Handlebars.compile(n.content);t.find(".sfx-hidden [data-sfx-hidden-options]").html(r(n.data));for(let e of t.find(".sfx-hidden [data-sfx-hidden-options] button.file-picker"))e.onclick=this._activateFilePicker.bind(this)})),$(this.element).on("click","[data-saveas]",(async e=>{let t=game.user.getFlag("dice-so-nice","saves"),i=new Map;t&&(i=new Map(Object.entries(t)));let n=new Dialog({title:game.i18n.localize("DICESONICE.SaveAs"),width:550,content:await renderTemplate("modules/dice-so-nice/templates/dialog-saveas.html",{saveList:i.keys()}),buttons:{},render:e=>{i.size?($(e).on("click","[data-overwrite]",(t=>{let i=$(e).find("[data-save-list]").val();this.actionSaveAs(i),n.close()})),$(e).on("click","[data-delete]",(async t=>{let n=$(e).find("[data-save-list]").val();await this.actionDeleteSave(n),i.delete(n),$(e).find("[data-save-list] option:selected").remove(),i.size||($(e).find("[data-overwrite]").prop("disabled",!0),$(e).find("[data-delete]").prop("disabled",!0))}))):($(e).find("[data-overwrite]").prop("disabled",!0),$(e).find("[data-delete]").prop("disabled",!0)),$(e).on("click","[data-add-new]",(t=>{let r=$(e).find("[data-save-name]").val();r?i.has(r)?ui.notifications.error(game.i18n.localize("DICESONICE.SaveAsErrorAlreadyExist")):(this.actionSaveAs(r),n.close()):ui.notifications.error(game.i18n.localize("DICESONICE.SaveAsErrorName"))}))}},{width:450,classes:["dice-so-nice"]}).render(!0)})),$(this.element).on("click","[data-load]",(async e=>{let t=game.user.getFlag("dice-so-nice","saves"),i=[];t&&(i=new Map(Object.entries(t))),new Dialog({title:game.i18n.localize("DICESONICE.Load"),content:await renderTemplate("modules/dice-so-nice/templates/dialog-load.html",{saveList:i.keys()}),buttons:{load:{icon:'',label:game.i18n.localize("DICESONICE.Load"),callback:async e=>{let t=$(e).find("[data-save-list]").val();await this.actionLoadSave(t),this.close()}},no:{icon:'',label:game.i18n.localize("DICESONICE.Cancel")}},render:e=>{i.size||$(e).find('[data-button="load"]').prop("disabled",!0)},default:"no"},{width:550}).render(!0)})),$(this.element).on("click","[data-import]",(async e=>{new Dialog({title:game.i18n.localize("DICESONICE.Import"),content:await renderTemplate("modules/dice-so-nice/templates/dialog-import.html"),buttons:{import:{icon:'',label:game.i18n.localize("DICESONICE.Import"),callback:e=>{const t=e.find("form")[0];if(!t.data.files.length)return ui.notifications.error(game.i18n.localize("DICESONICE.ImportNoFile"));readTextFromFile(t.data.files[0]).then((async e=>{await this.actionImportFromJSON(e),this.close()}))}},no:{icon:'',label:"Cancel"}},default:"import"},{width:400}).render(!0)})),$(this.element).on("click","[data-export]",(async e=>{const t=`fvtt-dicesonice-${Date.now()}.json`;this.actionExportToJSON().then((e=>{saveDataToFile(e,"text/json",t)}))})),$(this.element).on("click","[data-exportSFX]",(async e=>{const t=`fvtt-dicesonice-SFX-${Date.now()}.json`;this.actionExportSFXToJSON().then((e=>{saveDataToFile(e,"text/json",t)}))})),$(this.element).on("click","#dice-configuration-canvas",(e=>{let t=e.target.getBoundingClientRect(),i=(e.clientX-t.left)/t.width*2-1;i>1&&(i=1);let n={x:i,y:-(e.clientY-t.top)/t.height*2+1},r=this.box.findShowcaseDie(n);if(r){let e=this.box.findRootObject(r.object).userData;game.user.getFlag("dice-so-nice","appearance")||"standard"==this.box.dicefactory.preferredSystem&&"custom"==this.box.dicefactory.preferredColorset||this.getShowcaseAppearance(),$(this.element).find(`.dsn-appearance-tabs [data-tab="${e}"]`).length?this.activateAppearanceTab(e):($(this.element).find(".dsn-appearance-hint").hide(),renderTemplate("modules/dice-so-nice/templates/partial-appearance.html",{dicetype:e,appearance:this.currentGlobalAppearance,systemList:this.initializationData.systemList,colorsetList:this.initializationData.colorsetList,textureList:this.initializationData.textureList,materialList:this.initializationData.materialList,fontList:this.initializationData.fontList}).then((t=>{let i=e.toUpperCase(),n=null;$(this.element).find(".dsn-appearance-tabs .item").each(((t,i)=>{if(this.navOrder[$(i).data("tab")]>=this.navOrder[e])return n=$(i).data("tab"),!1}));let r=`${i} `;n?($(t).insertBefore($(this.element).find(`.tabAppearance[data-tab="${n}"]`)),$(r).insertBefore($(this.element).find(`.dsn-appearance-tabs .item[data-tab="${n}"]`))):($(this.element).find("#dsn-appearance-content").append(t),$(this.element).find(".dsn-appearance-tabs").append(r)),this.activateAppearanceTab(e),this.toggleCustomization(e),this.filterSystems(e)})))}})),$(this.element).on("change","[data-imageQuality]",(e=>{let t={bumpMapping:!0,shadowQuality:"high",glow:!0,antialiasing:2===game.canvas.app.renderer.context.webGLVersion?"msaa":"smaa",useHighDPI:!0};switch(e.target.value){case"low":t.bumpMapping=!1,t.shadowQuality="low",t.glow=!1,t.antialiasing="none",t.useHighDPI=!1;break;case"medium":t.bumpMapping=!0,t.shadowQuality="low",t.glow=!1,t.antialiasing="none",t.useHighDPI=!1;break;case"high":t.bumpMapping=!0,t.shadowQuality="high",t.glow=!0,t.antialiasing=2===game.canvas.app.renderer.context.webGLVersion?"msaa":"smaa",t.useHighDPI=!0}$(this.element).find("[data-bumpMapping]").prop("checked",t.bumpMapping),$(this.element).find("[data-shadowQuality]").val(t.shadowQuality),$(this.element).find("[data-glow]").prop("checked",t.glow),$(this.element).find("[data-antialiasing]").val(t.antialiasing),$(this.element).find("[data-useHighDPI]").prop("checked",t.useHighDPI)})),$(this.element).on("change","[data-bumpMapping],[data-shadowQuality],[data-glow],[data-antialiasing],[data-useHighDPI]",(e=>{$(this.element).find("[data-imageQuality]").val("custom")})))}async actionSaveAs(e){await this.submit({preventClose:!0,preventRender:!0}),Utils.actionSaveAs(e)}async actionDeleteSave(e){await Utils.actionDeleteSave(e)}async actionLoadSave(e){await Utils.actionLoadSave(e)}async actionExportToJSON(){await this.submit({preventClose:!0,preventRender:!0});let e={appearance:game.user.getFlag("dice-so-nice","appearance"),sfxList:game.user.getFlag("dice-so-nice","sfxList"),settings:game.user.getFlag("dice-so-nice","settings")};return JSON.stringify(e,null,2)}async actionExportSFXToJSON(){await this.submit({preventClose:!0,preventRender:!0});let e={sfxList:game.user.getFlag("dice-so-nice","sfxList")};return JSON.stringify(e,null,2)}async actionImportFromJSON(e){let t=JSON.parse(e);t.appearance&&(await game.user.unsetFlag("dice-so-nice","appearance"),await game.user.setFlag("dice-so-nice","appearance",t.appearance)),t.sfxList&&(await game.user.unsetFlag("dice-so-nice","sfxList"),await game.user.setFlag("dice-so-nice","sfxList",t.sfxList)),t.settings&&(await game.user.unsetFlag("dice-so-nice","settings"),await game.user.setFlag("dice-so-nice","settings",t.settings))}activateAppearanceTab(e){let t=this._tabs[1];t.active!=e&&t.activate(e,{triggerCallback:!0})}closeAppearanceTab(e){if("global"==e)return;let t=this._tabs[1];this._tabs[1].active==e&&t.activate("global",{triggerCallback:!0}),$(this.element).find(`.tabAppearance[data-tab="${e}"]`).remove(),$(this.element).find(`.dsn-appearance-tabs [data-tab="${e}"]`).remove(),this.onApply()}_onChangeTab(e,t,i){if(super._onChangeTab(e,t,i),"#dsn-appearance-content"==t._contentSelector){if("global"!=this.lastActiveAppearanceTab){let e=[];if($(this.element).find(`.tabAppearance[data-tab="global"],.tabAppearance[data-tab="${this.lastActiveAppearanceTab}"]`).each(((t,i)=>{let n={labelColor:$(i).find("[data-labelColor]").val(),diceColor:$(i).find("[data-diceColor]").val(),outlineColor:$(i).find("[data-outlineColor]").val(),edgeColor:$(i).find("[data-edgeColor]").val(),colorset:$(i).find("[data-colorset]").val(),texture:$(i).find("[data-texture]").val(),material:$(i).find("[data-material]").val(),font:$(i).find("[data-font]").val(),system:$(i).find("[data-system]").val()};null==n.system&&(n.system=this.currentGlobalAppearance.system),e.push(n)})),e.length>1){let t=diffObject(e[0],e[1]);isEmpty(t)&&this.closeAppearanceTab(this.lastActiveAppearanceTab)}}this.lastActiveAppearanceTab=i}}toggleHideAfterRoll(){let e=$(this.element).find("[data-hideAfterRoll]")[0].checked;$(this.element).find("[data-timeBeforeHide]").prop("disabled",!e),$(this.element).find("[data-hideFX]").prop("disabled",!e)}toggleSounds(){let e=$(this.element).find("[data-sounds]")[0].checked;$(this.element).find("[data-soundsSurface]").prop("disabled",!e),$(this.element).find("[data-soundsVolume]").prop("disabled",!e)}toggleAutoScale(){let e=$(this.element).find("[data-autoscale]")[0].checked;$(this.element).find("[data-scale]").prop("disabled",e)}toggleCustomColors(e){let t=$(this.element).find(".tabAppearance");e&&(t=t.filter(`[data-tab="${e}"]`)),t.each(((e,t)=>{let i=$(t).find("[data-colorset]"),n="custom"!==i.val()||i.prop("disabled");$(t).find("[data-labelColor]").prop("disabled",n),$(t).find("[data-diceColor]").prop("disabled",n),$(t).find("[data-outlineColor]").prop("disabled",n),$(t).find("[data-edgeColor]").prop("disabled",n),$(t).find("[data-labelColorSelector]").prop("disabled",n),$(t).find("[data-diceColorSelector]").prop("disabled",n),$(t).find("[data-outlineColorSelector]").prop("disabled",n),$(t).find("[data-edgeColorSelector]").prop("disabled",n)}))}toggleCustomization(e=null){let t;t=e?$(this.element).find(`.tabAppearance[data-tab="${e}"]`):$(this.element).find(".tabAppearance"),t.each(((e,t)=>{let i=$(t).data("tab");if("global"!=i){let e=$(t).find("[data-system]").val(),n=$(t).find("[data-colorset],[data-texture],[data-material],[data-font]");if("standard"!=e){let t=this.box.dicefactory.systems[e].dice.find((e=>e.type==i));if(t){let e={};t.colorset&&(e=DiceColors.getColorSet(t.colorset)),n.each(((i,n)=>{let r=!1;($(n).is("[data-colorset]")&&!isEmpty(e)||$(n).is("[data-texture]")&&!isEmpty(e)&&"custom"!=e.texture||$(n).is("[data-material]")&&!isEmpty(e)&&"custom"!=e.material||$(n).is("[data-font]")&&(!isEmpty(e)&&"custom"!=e.font||t.font))&&(r=!0),$(n).prop("disabled",t.modelFile||r)}))}}else n.prop("disabled",!1)}})),this.toggleCustomColors(e)}filterSystems(e=null){let t;t=e?$(this.element).find(`.tabAppearance[data-tab="${e}"] [data-system]`):$(this.element).find(".tabAppearance [data-system]"),t.each(((e,t)=>{let i=$(t).data("dicetype");"global"!=i&&$(t).find("option").each(((e,t)=>{let n=this.box.dicefactory.systems.standard.dice.find((e=>e.type==i));this.box.dicefactory.systems[$(t).val()].dice.find((e=>e.type==i||n&&e.shape==n.shape&&e.values.length==n.values.length))||$(t).attr("disabled","disabled")}))}))}setPreferredOptions(){game.user.getFlag("dice-so-nice","appearance")||("standard"!=this.box.dicefactory.preferredSystem&&$(this.element).find('.tabAppearance[data-tab="global"] [data-system]').val(this.box.dicefactory.preferredSystem),"custom"!=this.box.dicefactory.preferredColorset&&$(this.element).find('.tabAppearance[data-tab="global"] [data-colorset]').val(this.box.dicefactory.preferredColorset))}getShowcaseAppearance(){let e={autoscale:!1,scale:60,shadowQuality:$("[data-shadowQuality]").val(),imageQuality:$("[data-imageQuality]").val(),antialiasing:$("[data-antialiasing]").val(),bumpMapping:$("[data-bumpMapping]").is(":checked"),glow:$("[data-glow]").is(":checked"),sounds:$("[data-sounds]").is(":checked"),throwingForce:$("[data-throwingForce]").val(),useHighDPI:$("[data-useHighDPI]").is(":checked"),showExtraDice:$("[data-showExtraDice]").is(":checked"),muteSoundSecretRolls:$("[data-muteSoundSecretRolls]").is(":checked"),enableFlavorColorset:$("[data-enableFlavorColorset]").is(":checked"),immersiveDarkness:$("[data-immersiveDarkness]").is(":checked"),appearance:{}};return $(this.element).find(".tabAppearance").each(((t,i)=>{e.appearance[$(i).data("tab")]={labelColor:$(i).find("[data-labelColor]").val(),diceColor:$(i).find("[data-diceColor]").val(),outlineColor:$(i).find("[data-outlineColor]").val(),edgeColor:$(i).find("[data-edgeColor]").val(),colorset:$(i).find("[data-colorset]").val(),texture:$(i).find("[data-texture]").val(),material:$(i).find("[data-material]").val(),font:$(i).find("[data-font]").val(),system:$(i).find("[data-system]").val()}})),this.currentGlobalAppearance=e.appearance.global,e}getShowcaseSFX(){let e=[];return $(this.element).find(".sfx-line").each(((t,i)=>{let n={diceType:$(i).find("[data-sfx-dicetype]").val(),onResult:$(i).find("[data-sfx-result]").val(),specialEffect:$(i).find("[data-sfx-specialeffect]").val(),options:{}};$(i).find("[data-sfx-hidden-options]").find("input,select").each(((e,t)=>{let i=$(t).attr("name").match(/.*\[(.*)\]$/)[1];"checkbox"==$(t).attr("type")?n.options[i]=$(t).prop("checked"):n.options[i]=$(t).val()})),n.diceType&&n.onResult&&n.specialEffect&&e.push(n)})),e}onApply(e=null){e&&e.preventDefault(),setTimeout((()=>{let e=this.getShowcaseAppearance();this.box.dicefactory.disposeCachedMaterials("showcase"),this.box.update(e).then((()=>{this.box.showcase(e)}))}),100)}onReset(){this.reset=!0,this.render(),this._tabs[0].activate("general")}parseInputs(e){var t={};e:for(var i in e){var n=e[i],r=i.split("["),s=t;for(var a in r){var o=r[a];if("]"==o.substr(-1)&&(o=o.substr(0,o.length-1)),a==r.length-1){s[o]=n;continue e}s.hasOwnProperty(o)||(s[o]={}),s=s[o]}}return t}async _updateObject(e,t){let i=(t=this.parseInputs(t)).sfxLine;if(i){i=Object.values(i);for(let e=i.length-1;e>=0;e--)(null==i[e].diceType||""==i[e].diceType||""==i[e].onResult||Array.isArray(i[e].diceType)||Array.isArray(i[e].specialEffect))&&i.splice(e,1);let e=i.map((e=>[JSON.stringify(e),e]));i=[...new Map(e).values()],delete t.sfxLine}for(let e in t.appearance)t.appearance.hasOwnProperty(e)&&"custom"!=t.appearance[e].colorset&&(delete t.appearance[e].labelColor,delete t.appearance[e].diceColor,delete t.appearance[e].outlineColor,delete t.appearance[e].edgeColor);let n=Dice3D.CONFIG();await game.user.unsetFlag("dice-so-nice","sfxList"),await game.user.unsetFlag("dice-so-nice","appearance"),await game.user.unsetFlag("dice-so-nice","settings");let r=mergeObject(Dice3D.APPEARANCE(),t.appearance,{insertKeys:!0,insertValues:!1,performDeletions:!0});delete t.appearance;let s=mergeObject(Dice3D.CONFIG(),t,{insertKeys:!1,insertValues:!1,performDeletions:!0});s.rollingArea=n.rollingArea,await game.user.setFlag("dice-so-nice","settings",s),await game.user.setFlag("dice-so-nice","appearance",r),await game.user.setFlag("dice-so-nice","sfxList",i),game.socket.emit("module.dice-so-nice",{type:"update",user:game.user.id}),yn.init(),ui.notifications.info(game.i18n.localize("DICESONICE.saveMessage"));["canvasZIndex","bumpMapping","useHighDPI","glow","antialiasing"].some((e=>s[e]!=n[e]))?window.location.reload():game.dice3d.update(s)}close(e){super.close(e),this.box.clearScene(),this.box.dicefactory.disposeCachedMaterials("showcase")}async _onSubmit(e,t){this.sfxDialogList.forEach((e=>{e.close()})),await super._onSubmit(e,t)}}class RollableAreaConfig extends FormApplication{static get defaultOptions(){return foundry.utils.mergeObject(super.defaultOptions,{title:game.i18n.localize("DICESONICE.RollableAreaConfigTitle"),template:"modules/dice-so-nice/templates/rollable-area-config.html",width:280,top:70,left:window.innerWidth-290})}render(e,t={}){this.area=$(`\n
\n
\n
\n
\n
\n
\n
${game.i18n.localize("DICESONICE.RollableAreaText")}
\n
\n
\n `);let i=Dice3D.CONFIG().rollingArea;if(!i){const e=$("#dice-box-canvas");i={top:e.position().top,left:e.position().left,width:e.width(),height:e.height()}}return console.log(i),this.area.appendTo($("body")),this.area.css(i),super.render(e,t)}activateListeners(e){super.activateListeners(e),e.find('button[name="restore"]').click(this._onRestore.bind(this));let t=$(this.area).get(0),i=!1;this.area.mousedown((function(e){let n=e.clientX,r=e.clientY;function onMouseMove(e){if(!i){let i=n-e.clientX,s=r-e.clientY;const a=t.getBoundingClientRect();t.style.left=a.left-i+"px",t.style.top=a.top-s+"px",n=e.clientX,r=e.clientY}}window.addEventListener("mousemove",onMouseMove),window.addEventListener("mouseup",(function onMouseUp(){window.removeEventListener("mousemove",onMouseMove),window.removeEventListener("mouseup",onMouseUp)}))}));const n=$(".rollable-area > .resizers > .resizer");for(let e of n)$(e).mousedown((function(n){i=!0;let r=n.clientX,s=n.clientY;function onMouseMove(i){const n=t.getBoundingClientRect();e.classList.contains("se")?(t.style.width=n.width-(r-i.clientX)+"px",t.style.height=n.height-(s-i.clientY)+"px"):e.classList.contains("sw")?(t.style.width=n.width+(r-i.clientX)+"px",t.style.height=n.height-(s-i.clientY)+"px",t.style.left=n.left-(r-i.clientX)+"px"):e.classList.contains("ne")?(t.style.width=n.width-(r-i.clientX)+"px",t.style.height=n.height+(s-i.clientY)+"px",t.style.top=n.top-(s-i.clientY)+"px"):(t.style.width=n.width+(r-i.clientX)+"px",t.style.height=n.height+(s-i.clientY)+"px",t.style.left=n.left-(r-i.clientX)+"px",t.style.top=n.top-(s-i.clientY)+"px"),r=i.clientX,s=i.clientY}window.addEventListener("mousemove",onMouseMove),window.addEventListener("mouseup",(function onMouseUp(){window.removeEventListener("mousemove",onMouseMove),window.removeEventListener("mouseup",onMouseUp),i=!1}))}))}async _onRestore(){await this.saveSettingsAndRebuild(!1),await this.close()}async _updateObject(){await this.saveSettingsAndRebuild({top:this.area.position().top,left:this.area.position().left,width:this.area.width(),height:this.area.height()})}async saveSettingsAndRebuild(e){let t=mergeObject(Dice3D.CONFIG(),{rollingArea:e},{performDeletions:!0});await game.user.setFlag("dice-so-nice","settings",t),game.dice3d.resizeAndRebuild()}async close(e={}){return this.area.remove(),super.close(e)}}Hooks.once("init",(()=>{const e=foundry.utils.debounce((()=>{window.location.reload()}),100);game.settings.registerMenu("dice-so-nice","dice-so-nice",{name:"DICESONICE.config",label:"DICESONICE.configTitle",hint:"DICESONICE.configHint",icon:"fas fa-dice-d20",type:DiceConfig,restricted:!1}),game.settings.registerMenu("dice-so-nice","rollable-area",{name:"DICESONICE.RollableAreaConfig",label:"DICESONICE.RollableAreaConfigTitle",hint:"DICESONICE.RollableAreaConfigHint",icon:"fas fa-crop-alt",type:RollableAreaConfig,restricted:!1}),game.settings.register("dice-so-nice","settings",{name:"3D Dice Settings",scope:"client",default:{},type:Object,config:!1}),game.settings.register("dice-so-nice","maxDiceNumber",{name:"DICESONICE.maxDiceNumber",hint:"DICESONICE.maxDiceNumberHint",scope:"world",type:Number,default:20,range:{min:20,max:100,step:5},config:!0}),game.settings.register("dice-so-nice","globalAnimationSpeed",{name:"DICESONICE.globalAnimationSpeed",hint:"DICESONICE.globalAnimationSpeedHint",scope:"world",type:String,choices:Utils.localize({0:"DICESONICE.PlayerSpeed",1:"DICESONICE.NormalSpeed",2:"DICESONICE.2xSpeed",3:"DICESONICE.3xSpeed"}),default:"0",config:!0,onChange:e}),game.settings.register("dice-so-nice","enabledSimultaneousRolls",{name:"DICESONICE.enabledSimultaneousRolls",hint:"DICESONICE.enabledSimultaneousRollsHint",scope:"world",type:Boolean,default:!0,config:!0,onChange:e}),game.settings.register("dice-so-nice","enabledSimultaneousRollForMessage",{name:"DICESONICE.enabledSimultaneousRollForMessage",hint:"DICESONICE.enabledSimultaneousRollForMessageHint",scope:"world",type:Boolean,default:!0,config:!0}),game.settings.register("dice-so-nice","diceCanBeFlipped",{name:"DICESONICE.diceCanBeFlipped",hint:"DICESONICE.diceCanBeFlippedHint",scope:"world",type:Boolean,default:!0,config:!0}),game.settings.register("dice-so-nice","formatVersion",{scope:"world",type:String,default:"",config:!1}),game.settings.register("dice-so-nice","disabledDuringCombat",{name:"DICESONICE.disabledDuringCombat",hint:"DICESONICE.disabledDuringCombatHint",scope:"world",type:Boolean,default:!1,config:!0}),game.settings.register("dice-so-nice","disabledForInitiative",{name:"DICESONICE.disabledForInitiative",hint:"DICESONICE.disabledForInitiativeHint",scope:"world",type:Boolean,default:!1,config:!0}),game.settings.register("dice-so-nice","immediatelyDisplayChatMessages",{name:"DICESONICE.immediatelyDisplayChatMessages",hint:"DICESONICE.immediatelyDisplayChatMessagesHint",scope:"world",type:Boolean,default:!1,config:!0}),game.settings.register("dice-so-nice","animateRollTable",{name:"DICESONICE.animateRollTable",hint:"DICESONICE.animateRollTableHint",scope:"world",type:Boolean,default:!1,config:!0}),game.settings.register("dice-so-nice","animateInlineRoll",{name:"DICESONICE.animateInlineRoll",hint:"DICESONICE.animateInlineRollHint",scope:"world",type:Boolean,default:!0,config:!0}),game.settings.register("dice-so-nice","hideNpcRolls",{name:"DICESONICE.hideNpcRolls",hint:"DICESONICE.hideNpcRollsHint",scope:"world",type:Boolean,default:!1,config:!0}),game.settings.register("dice-so-nice","allowInteractivity",{name:"DICESONICE.allowInteractivity",hint:"DICESONICE.allowInteractivityHint",scope:"world",type:Boolean,default:!0,config:!0,onChange:e}),game.settings.register("dice-so-nice","showGhostDice",{name:"DICESONICE.showGhostDice",hint:"DICESONICE.showGhostDiceHint",scope:"world",type:Boolean,default:!1,config:!0})})),Hooks.once("ready",(()=>{Utils.migrateOldSettings().then((e=>{e&&(game.settings.get("core","noCanvas")?logger.warn("Dice So Nice! is disabled because the user has activated the 'No-Canvas' mode"):game.dice3d=new Dice3D)}))})),Hooks.on("createChatMessage",(e=>{let t=game.settings.get("dice-so-nice","animateInlineRoll")&&-1!==e.content.indexOf("inline-roll");if(!e.isRoll&&!t||!e.isContentVisible&&!game.settings.get("dice-so-nice","showGhostDice")||"stream"!=game.view&&(!game.dice3d||game.dice3d.messageHookDisabled)||e.getFlag("core","RollTable")&&!game.settings.get("dice-so-nice","animateRollTable"))return;let i=e.isRoll?e.rolls:null,n=i?0:-1;if(t){let t=$($.parseHTML(`
${e.content}
`)).find(".inline-roll.inline-result:not(.inline-dsn-hidden)");if(0==t.length&&!e.isRoll)return;let r=[];if(t.each(((e,t)=>{let i=CONFIG.Dice.rolls[0].fromJSON(unescape(t.dataset.roll));n++,i.dice.forEach((e=>{e.options.hasOwnProperty("rollOrder")||(e.options.rollOrder=n)})),r.push(i)})),r.length){e.isRoll&&(r=[...e.rolls,...r]);let t=PoolTerm.fromRolls(r);i=[CONFIG.Dice.rolls[0].fromTerms([t])]}else if(!e.isRoll)return}if(!i.length||!i[0].dice.length)return;e.getFlag("core","initiativeRoll")&&game.settings.get("dice-so-nice","disabledForInitiative")||(Dice3D.CONFIG().enabled&&"sounds/dice.wav"==e.sound&&mergeObject(e,{"-=sound":null},{performDeletions:!0}),e._dice3danimating=!0,game.dice3d.renderRolls(e,i))})),Hooks.on("renderChatMessage",((e,t,i)=>{game.dice3d&&game.dice3d.messageHookDisabled||e._dice3danimating&&!game.settings.get("dice-so-nice","immediatelyDisplayChatMessages")&&(e._countNewRolls?t.find(`.dice-roll:nth-last-child(-n+${e._countNewRolls})`).addClass("dsn-hide"):t.addClass("dsn-hide"))})),Hooks.on("preUpdateChatMessage",((e,t,i)=>{"rolls"in t&&(i.dsnCountAddedRoll=t.rolls.length-e.toObject().rolls.length)})),Hooks.on("updateChatMessage",((e,t,i)=>{e.rolls&&e.isRoll&&(e.isContentVisible||game.settings.get("dice-so-nice","showGhostDice"))&&("stream"==game.view||game.dice3d&&!game.dice3d.messageHookDisabled)&&(!e.getFlag("core","RollTable")||game.settings.get("dice-so-nice","animateRollTable"))&&i.dsnCountAddedRoll>0&&(e._dice3danimating=!0,e._countNewRolls=i.dsnCountAddedRoll,game.dice3d.renderRolls(e,e.rolls.slice(-i.dsnCountAddedRoll)))})),document.addEventListener("visibilitychange",(function(){if(!document.hidden&&game.dice3d&&game.dice3d.hiddenAnimationQueue&&game.dice3d.hiddenAnimationQueue.length){let e=(new Date).getTime();for(let t=0;t1e4?i.resolve(!1):game.dice3d._showAnimation(i.data,i.config).then((e=>{i.resolve(e)}))}game.dice3d.hiddenAnimationQueue=[]}})); //# sourceMappingURL=main.js.map