From e8222e86f1a6658bd4343beae9496f9062efdae8 Mon Sep 17 00:00:00 2001 From: Kai Salmon Date: Fri, 29 Aug 2025 12:59:48 +0100 Subject: [PATCH 1/3] Added Mr Salmon's Baked Ambient Occlusion --- plugins/baked_ambient_occlusion/LICENSE.MD | 21 + plugins/baked_ambient_occlusion/README.md | 67 + plugins/baked_ambient_occlusion/about.md | 82 + .../baked_ambient_occlusion.js | 2 + plugins/baked_ambient_occlusion/icon.png | Bin 0 -> 2139 bytes plugins/baked_ambient_occlusion/package.json | 23 + .../settings_reference_guides/ao_strength.gif | Bin 0 -> 140063 bytes .../settings_reference_guides/colors.gif | Bin 0 -> 92077 bytes .../settings_reference_guides/gamma.gif | Bin 0 -> 116324 bytes .../ground_plane.gif | Bin 0 -> 35255 bytes .../settings_reference_guides/radius.gif | Bin 0 -> 74195 bytes .../settings_reference_guides/sampling.gif | Bin 0 -> 104223 bytes .../transparency.gif | Bin 0 -> 72904 bytes plugins/baked_ambient_occlusion/src/index.ts | 735 ++++++++ .../baked_ambient_occlusion/src/types.d.ts | 5 + plugins/baked_ambient_occlusion/tsconfig.json | 25 + .../baked_ambient_occlusion/webpack.config.js | 32 + plugins/baked_ambient_occlusion/yarn.lock | 1566 +++++++++++++++++ 18 files changed, 2558 insertions(+) create mode 100644 plugins/baked_ambient_occlusion/LICENSE.MD create mode 100644 plugins/baked_ambient_occlusion/README.md create mode 100644 plugins/baked_ambient_occlusion/about.md create mode 100644 plugins/baked_ambient_occlusion/baked_ambient_occlusion.js create mode 100644 plugins/baked_ambient_occlusion/icon.png create mode 100644 plugins/baked_ambient_occlusion/package.json create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/ao_strength.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/colors.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/gamma.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/ground_plane.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/radius.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/sampling.gif create mode 100644 plugins/baked_ambient_occlusion/settings_reference_guides/transparency.gif create mode 100644 plugins/baked_ambient_occlusion/src/index.ts create mode 100644 plugins/baked_ambient_occlusion/src/types.d.ts create mode 100644 plugins/baked_ambient_occlusion/tsconfig.json create mode 100644 plugins/baked_ambient_occlusion/webpack.config.js create mode 100644 plugins/baked_ambient_occlusion/yarn.lock diff --git a/plugins/baked_ambient_occlusion/LICENSE.MD b/plugins/baked_ambient_occlusion/LICENSE.MD new file mode 100644 index 00000000..d1fa2387 --- /dev/null +++ b/plugins/baked_ambient_occlusion/LICENSE.MD @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Kai Salmon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/README.md b/plugins/baked_ambient_occlusion/README.md new file mode 100644 index 00000000..125da8c3 --- /dev/null +++ b/plugins/baked_ambient_occlusion/README.md @@ -0,0 +1,67 @@ +# Mr Salmon's Baked Ambient Occlusion for Blockbench + +Generate instant shaded textures for your models, with one click! Ambient occlusion works by working out how much light can reach each pixel on the model: areas in crevices and divots receive less light than those at the edge of the model. By exaggerating this effect, you can create depth, as crevices also often pick up dirt, becoming even darker, and the edges of hard objects (like rocks, wood, metal, etc.) often get worn, becoming even lighter. + +*Before* +![](https://github.com/kaisalmon/MrsSalmonsBlockbenchBakedAmbientOcclusion/blob/main/examples/BenchFlat.gif) + +*After* +![](https://github.com/kaisalmon/MrsSalmonsBlockbenchBakedAmbientOcclusion/blob/main/examples/Bench.gif) + +## Building and installing. + +To install clone the repo, and run `npm install` and then `npm build`. This will create a file at `dist\blockbench-baked-ao.js`. In Blockbench, you can then go to plugins, and select "load from file", and select the file you just created. + +## Using the plugin + +Select your mesh, and go to Tools > Bake Ambient Occlusion + +image + + +## Settings +image + +### **Highlight Color** +Color used for areas with high ambient lighting + +### **Highlight Opacity** +Opacity of the highlight color overlay + +### **Highlight Gamma** +Gamma correction for highlight areas (lower = more contrast) + +### **Shadow Color** +Color used for occluded/shadowed areas + +### **Shadow Opacity** +Opacity of the shadow color overlay + +### **Shadow Gamma** +Gamma correction for shadow areas (higher = softer shadows) + +### **Samples per pixel** +Number of samples per pixel (higher = better quality, slower). 100 recommended for uniform sampling, 1000 for random sampling. + +### **Sample Method** +Method for sampling ambient occlusion rays. Random is slightly more accurate but noisier, uniform is smoother for less samples but is more prone to artifacts. + +### **Ambient Occlusion Radius** +Radius for ambient occlusion effect (Bigger is better for larger models or higher-resolution textures) + +### **Simulate Ground Plane** +Simulate a ground plane, adding shadows at the base of the model + +### **Retain Texture Transparency** +Preserve the original transparency of textures + +### **Sample Texture Transparency** +Consider texture transparency when calculating occlusion (slower but more accurate) + +# Credit and Acknowledgments + +Code by Kai Salmon. + +Massive performance gains were achieved by using [ThreeJS Bounding Volume Heiarachies +](https://github.com/gkjohnson/three-mesh-bvh) by Garrett Johnson. + diff --git a/plugins/baked_ambient_occlusion/about.md b/plugins/baked_ambient_occlusion/about.md new file mode 100644 index 00000000..0e1b09ee --- /dev/null +++ b/plugins/baked_ambient_occlusion/about.md @@ -0,0 +1,82 @@ +# Mr Salmon's Baked Ambient Occlusion + +Generate instant shaded textures for your models with one click! This plugin bakes ambient occlusion directly onto your mesh textures by calculating how much ambient light can reach each pixel on the model. Ambient, in this context, means "equally from-all directions". Areas in crevices and divots receive less light than those at the edges, creating natural depth and shading effects. Pixels on the sharp edge of models recieve more light, so are highlighted. + +To use this plugin, select a mesh and go to `Tools > Bake Ambient Occlusion`. Configure your settings in the dialog and click `Confirm` to start the baking process. + +## How Ambient Occlusion Works + +Ambient occlusion works by casting rays from each pixel on your model's surface to determine how much ambient light can reach that point. Areas that are occluded by nearby geometry (like crevices, corners, and recessed areas) receive less light and appear darker, while exposed edges and surfaces remain bright. By exaggerating this effect, you can even simulate how dirt accumulates in crevices and how edges of hard materials like rocks, wood, and metal get worn and lightened over time. + +## Settings Reference + +### Colors and Opacity + +![Color Settings](settings_reference_guides/colors.gif) +![AO Strength](settings_reference_guides/ao_strength.gif) +**Highlight Color & Opacity**: Sets the color and transparency used for well-lit, exposed areas of your model. These areas typically represent worn edges or surfaces that receive full ambient lighting. + +**Shadow Color & Opacity**: Sets the color and transparency used for occluded, shadowed areas. These areas represent crevices, corners, and recessed surfaces where dirt and grime would naturally accumulate. + +### Gamma Correction + +![Gamma Settings](settings_reference_guides/gamma.gif) + +**Highlight Gamma**: Controls the contrast and falloff of highlight areas. Lower values create more dramatic contrast with sharper transitions, while higher values create softer, more gradual highlights. + +**Shadow Gamma**: Controls the contrast and falloff of shadow areas. Higher values create softer, more subtle shadows, while lower values create harder, more defined shadows. + +### AO Strength and Quality + +**Samples per pixel**: Determines the quality and accuracy of the ambient occlusion calculation. Higher values produce smoother, more accurate results but take longer to process. Recommended values: +- 100-500 samples for quick previews, or when using uniform sampling. +- 1000+ samples for final quality results + +**Sample Method**: Choose between sampling methods: +- **Random**: Slightly more accurate but can be noisier, especially with fewer samples. Of course, noise can be desirable! +- **Uniform**: Produces smoother results with fewer samples but may show artifacts in some cases, especailly with low samples. + +### Occlusion Radius + +![Radius Settings](settings_reference_guides/radius.gif) + +**Ambient Occlusion Radius (Pixels)**: Controls how far the occlusion effect extends from each surface. Larger values create larger shadows that affect more distant geometry, while smaller values create tighter, more localized effects. Use larger values for bigger models or higher-resolution textures. + +### Ground Plane Simulation + +![Ground Plane](settings_reference_guides/ground_plane.gif) + +**Simulate Ground Plane**: Allows the ground beneath your model to occlude light. This creates natural contact shadows at the base of your model, making it appear more grounded. + +### Transparency Handling + +![Transparency Settings](settings_reference_guides/transparency.gif) + +**Retain Texture Transparency**: Preserves the original alpha channel of your textures. When enabled, the ambient occlusion effect will respect existing transparent areas and not overwrite them completely. + +**Sample Texture Transparency**: Makes the occlusion calculation consider the transparency of textures when casting rays. Semi-transparent areas will allow some light to pass through rather than casting complete shadows. This produces more accurate results in models with a lot of transparent pixels but increases processing time significantly. + +## Usage Tips + +### Getting Started +1. Select the mesh you want to process (only one mesh at a time is supported) +2. Go to `Tools > Bake Ambient Occlusion` +3. Adjust settings based on your model size and desired effect +4. Click `Confirm` to start baking + +### Recommended Settings +- **For quick previews**: 100-200 samples, uniform sampling +- **For final results**: 1000+ samples, random sampling +- **For large models**: Increase ambient occlusion radius to 12-16 +- **For detailed textures**: Use higher sample counts and enable texture transparency sampling + +# Credit and Acknowledgments + +Plugin by Kai Salmon. + +Massive performance gains were achieved by using [ThreeJS Bounding Volume Heiarachies +](https://github.com/gkjohnson/three-mesh-bvh) by Garrett Johnson. + +# Source code and Contributions + +You can contribute to the code and report any issues on [github](https://github.com/kaisalmon/MrsSalmonsBlockbenchBakedAmbientOcclusion/blob/main/about.md). \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/baked_ambient_occlusion.js b/plugins/baked_ambient_occlusion/baked_ambient_occlusion.js new file mode 100644 index 00000000..fa4ad541 --- /dev/null +++ b/plugins/baked_ambient_occlusion/baked_ambient_occlusion.js @@ -0,0 +1,2 @@ +/*! For license information please see baked_ambient_occlusion.js.LICENSE.txt */ +!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n=e();for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(this,()=>(()=>{"use strict";const t="160",e=0,n=1,i=2,r=100,a=101,s=102,o=200,l=201,c=202,u=203,h=204,d=205,p=206,f=207,m=208,g=209,_=210,v=211,x=212,y=213,M=214,S=301,E=302,T=306,b=1e3,A=1001,w=1002,R=1003,C=1004,P=1005,L=1006,U=1007,D=1008,I=1009,N=1012,O=1014,F=1015,B=1016,z=1020,H=1023,V=1026,G=1027,k=33776,W=33777,X=33778,q=33779,j=36492,Y=2300,K=2301,Z=2302,J=3001,$="",Q="srgb",tt="srgb-linear",et="display-p3",nt="display-p3-linear",it="linear",rt="srgb",at="rec709",st="p3",ot=7680,lt=512,ct=513,ut=514,ht=515,dt=516,pt=517,ft=518,mt=519,gt="300 es",_t=1035,vt=2e3,xt=2001;class yt{addEventListener(t,e){void 0===this._listeners&&(this._listeners={});const n=this._listeners;void 0===n[t]&&(n[t]=[]),-1===n[t].indexOf(e)&&n[t].push(e)}hasEventListener(t,e){if(void 0===this._listeners)return!1;const n=this._listeners;return void 0!==n[t]&&-1!==n[t].indexOf(e)}removeEventListener(t,e){if(void 0===this._listeners)return;const n=this._listeners[t];if(void 0!==n){const t=n.indexOf(e);-1!==t&&n.splice(t,1)}}dispatchEvent(t){if(void 0===this._listeners)return;const e=this._listeners[t.type];if(void 0!==e){t.target=this;const n=e.slice(0);for(let e=0,i=n.length;e>8&255]+Mt[t>>16&255]+Mt[t>>24&255]+"-"+Mt[255&e]+Mt[e>>8&255]+"-"+Mt[e>>16&15|64]+Mt[e>>24&255]+"-"+Mt[63&n|128]+Mt[n>>8&255]+"-"+Mt[n>>16&255]+Mt[n>>24&255]+Mt[255&i]+Mt[i>>8&255]+Mt[i>>16&255]+Mt[i>>24&255]).toLowerCase()}function bt(t,e,n){return Math.max(e,Math.min(n,t))}function At(t,e,n){return(1-n)*t+n*e}function wt(t){return!(t&t-1)&&0!==t}function Rt(t){return Math.pow(2,Math.floor(Math.log(t)/Math.LN2))}function Ct(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return t/4294967295;case Uint16Array:return t/65535;case Uint8Array:return t/255;case Int32Array:return Math.max(t/2147483647,-1);case Int16Array:return Math.max(t/32767,-1);case Int8Array:return Math.max(t/127,-1);default:throw new Error("Invalid component type.")}}function Pt(t,e){switch(e.constructor){case Float32Array:return t;case Uint32Array:return Math.round(4294967295*t);case Uint16Array:return Math.round(65535*t);case Uint8Array:return Math.round(255*t);case Int32Array:return Math.round(2147483647*t);case Int16Array:return Math.round(32767*t);case Int8Array:return Math.round(127*t);default:throw new Error("Invalid component type.")}}class Lt{constructor(t=0,e=0){Lt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){const e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(bt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){const n=Math.cos(e),i=Math.sin(e),r=this.x-t.x,a=this.y-t.y;return this.x=r*n-a*i+t.x,this.y=r*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Ut{constructor(t,e,n,i,r,a,s,o,l){Ut.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l)}set(t,e,n,i,r,a,s,o,l){const c=this.elements;return c[0]=t,c[1]=i,c[2]=s,c[3]=e,c[4]=r,c[5]=o,c[6]=n,c[7]=a,c[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){const e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],c=n[4],u=n[7],h=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],_=i[1],v=i[4],x=i[7],y=i[2],M=i[5],S=i[8];return r[0]=a*f+s*_+o*y,r[3]=a*m+s*v+o*M,r[6]=a*g+s*x+o*S,r[1]=l*f+c*_+u*y,r[4]=l*m+c*v+u*M,r[7]=l*g+c*x+u*S,r[2]=h*f+d*_+p*y,r[5]=h*m+d*v+p*M,r[8]=h*g+d*x+p*S,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8];return e*a*c-e*s*l-n*r*c+n*s*o+i*r*l-i*a*o}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=c*a-s*l,h=s*o-c*r,d=l*r-a*o,p=e*u+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);const f=1/p;return t[0]=u*f,t[1]=(i*l-c*n)*f,t[2]=(s*n-i*a)*f,t[3]=h*f,t[4]=(c*e-i*o)*f,t[5]=(i*r-s*e)*f,t[6]=d*f,t[7]=(n*o-l*e)*f,t[8]=(a*e-n*r)*f,this}transpose(){let t;const e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){const e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,r,a,s){const o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+t,-i*l,i*o,-i*(-l*a+o*s)+s+e,0,0,1),this}scale(t,e){return this.premultiply(Dt.makeScale(t,e)),this}rotate(t){return this.premultiply(Dt.makeRotation(-t)),this}translate(t,e){return this.premultiply(Dt.makeTranslation(t,e)),this}makeTranslation(t,e){return t.isVector2?this.set(1,0,t.x,0,1,t.y,0,0,1):this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<9;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return(new this.constructor).fromArray(this.elements)}}const Dt=new Ut;function It(t){for(let e=t.length-1;e>=0;--e)if(t[e]>=65535)return!0;return!1}function Nt(t){return document.createElementNS("http://www.w3.org/1999/xhtml",t)}function Ot(){const t=Nt("canvas");return t.style.display="block",t}Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array;const Ft={};function Bt(t){t in Ft||(Ft[t]=!0,console.warn(t))}const zt=(new Ut).set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),Ht=(new Ut).set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Vt={[tt]:{transfer:it,primaries:at,toReference:t=>t,fromReference:t=>t},[Q]:{transfer:rt,primaries:at,toReference:t=>t.convertSRGBToLinear(),fromReference:t=>t.convertLinearToSRGB()},[nt]:{transfer:it,primaries:st,toReference:t=>t.applyMatrix3(Ht),fromReference:t=>t.applyMatrix3(zt)},[et]:{transfer:rt,primaries:st,toReference:t=>t.convertSRGBToLinear().applyMatrix3(Ht),fromReference:t=>t.applyMatrix3(zt).convertLinearToSRGB()}},Gt=new Set([tt,nt]),kt={enabled:!0,_workingColorSpace:tt,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(t){if(!Gt.has(t))throw new Error(`Unsupported working color space, "${t}".`);this._workingColorSpace=t},convert:function(t,e,n){if(!1===this.enabled||e===n||!e||!n)return t;const i=Vt[e].toReference;return(0,Vt[n].fromReference)(i(t))},fromWorkingColorSpace:function(t,e){return this.convert(t,this._workingColorSpace,e)},toWorkingColorSpace:function(t,e){return this.convert(t,e,this._workingColorSpace)},getPrimaries:function(t){return Vt[t].primaries},getTransfer:function(t){return t===$?it:Vt[t].transfer}};function Wt(t){return t<.04045?.0773993808*t:Math.pow(.9478672986*t+.0521327014,2.4)}function Xt(t){return t<.0031308?12.92*t:1.055*Math.pow(t,.41666)-.055}let qt;class jt{static getDataURL(t){if(/^data:/i.test(t.src))return t.src;if("undefined"==typeof HTMLCanvasElement)return t.src;let e;if(t instanceof HTMLCanvasElement)e=t;else{void 0===qt&&(qt=Nt("canvas")),qt.width=t.width,qt.height=t.height;const n=qt.getContext("2d");t instanceof ImageData?n.putImageData(t,0,0):n.drawImage(t,0,0,t.width,t.height),e=qt}return e.width>2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const e=Nt("canvas");e.width=t.width,e.height=t.height;const n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);const i=n.getImageData(0,0,t.width,t.height),r=i.data;for(let t=0;t0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(300!==this.mapping)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case b:t.x=t.x-Math.floor(t.x);break;case A:t.x=t.x<0?0:1;break;case w:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case b:t.y=t.y-Math.floor(t.y);break;case A:t.y=t.y<0?0:1;break;case w:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){!0===t&&(this.version++,this.source.needsUpdate=!0)}get encoding(){return Bt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace===Q?J:3e3}set encoding(t){Bt("THREE.Texture: Property .encoding has been replaced by .colorSpace."),this.colorSpace=t===J?Q:$}}$t.DEFAULT_IMAGE=null,$t.DEFAULT_MAPPING=300,$t.DEFAULT_ANISOTROPY=1;class Qt{constructor(t=0,e=0,n=0,i=1){Qt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*r,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);const e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,r;const a=.01,s=.1,o=t.elements,l=o[0],c=o[4],u=o[8],h=o[1],d=o[5],p=o[9],f=o[2],m=o[6],g=o[10];if(Math.abs(c-h)o&&t>_?t_?o=0?1:-1,i=1-e*e;if(i>Number.EPSILON){const r=Math.sqrt(i),a=Math.atan2(r,e*n);t=Math.sin(t*a)/r,s=Math.sin(s*a)/r}const r=s*n;if(o=o*t+h*r,l=l*t+d*r,c=c*t+p*r,u=u*t+f*r,t===1-s){const t=1/Math.sqrt(o*o+l*l+c*c+u*u);o*=t,l*=t,c*=t,u*=t}}t[e]=o,t[e+1]=l,t[e+2]=c,t[e+3]=u}static multiplyQuaternionsFlat(t,e,n,i,r,a){const s=n[i],o=n[i+1],l=n[i+2],c=n[i+3],u=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return t[e]=s*p+c*u+o*d-l*h,t[e+1]=o*p+c*h+l*u-s*d,t[e+2]=l*p+c*d+s*h-o*u,t[e+3]=c*p-s*u-o*h-l*d,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e=!0){const n=t._x,i=t._y,r=t._z,a=t._order,s=Math.cos,o=Math.sin,l=s(n/2),c=s(i/2),u=s(r/2),h=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=h*c*u+l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u-h*d*p;break;case"YXZ":this._x=h*c*u+l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u+h*d*p;break;case"ZXY":this._x=h*c*u-l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u-h*d*p;break;case"ZYX":this._x=h*c*u-l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u+h*d*p;break;case"YZX":this._x=h*c*u+l*d*p,this._y=l*d*u+h*c*p,this._z=l*c*p-h*d*u,this._w=l*c*u-h*d*p;break;case"XZY":this._x=h*c*u-l*d*p,this._y=l*d*u-h*c*p,this._z=l*c*p+h*d*u,this._w=l*c*u+h*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===e&&this._onChangeCallback(),this}setFromAxisAngle(t,e){const n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){const e=t.elements,n=e[0],i=e[4],r=e[8],a=e[1],s=e[5],o=e[9],l=e[2],c=e[6],u=e[10],h=n+s+u;if(h>0){const t=.5/Math.sqrt(h+1);this._w=.25/t,this._x=(c-o)*t,this._y=(r-l)*t,this._z=(a-i)*t}else if(n>s&&n>u){const t=2*Math.sqrt(1+n-s-u);this._w=(c-o)/t,this._x=.25*t,this._y=(i+a)/t,this._z=(r+l)/t}else if(s>u){const t=2*Math.sqrt(1+s-n-u);this._w=(r-l)/t,this._x=(i+a)/t,this._y=.25*t,this._z=(o+c)/t}else{const t=2*Math.sqrt(1+u-n-s);this._w=(a-i)/t,this._x=(r+l)/t,this._y=(o+c)/t,this._z=.25*t}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(bt(this.dot(t),-1,1)))}rotateTowards(t,e){const n=this.angleTo(t);if(0===n)return this;const i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._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 t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){const n=t._x,i=t._y,r=t._z,a=t._w,s=e._x,o=e._y,l=e._z,c=e._w;return this._x=n*c+a*s+i*l-r*o,this._y=i*c+a*o+r*s-n*l,this._z=r*c+a*l+n*o-i*s,this._w=a*c-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(t,e){if(0===e)return this;if(1===e)return this.copy(t);const n=this._x,i=this._y,r=this._z,a=this._w;let s=a*t._w+n*t._x+i*t._y+r*t._z;if(s<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,s=-s):this.copy(t),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;const o=1-s*s;if(o<=Number.EPSILON){const t=1-e;return this._w=t*a+e*this._w,this._x=t*n+e*this._x,this._y=t*i+e*this._y,this._z=t*r+e*this._z,this.normalize(),this}const l=Math.sqrt(o),c=Math.atan2(l,s),u=Math.sin((1-e)*c)/l,h=Math.sin(e*c)/l;return this._w=a*u+this._w*h,this._x=n*u+this._x*h,this._y=i*u+this._y*h,this._z=r*u+this._z*h,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){const t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(r),n*Math.cos(r),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class ae{constructor(t=0,e=0,n=0){ae.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return void 0===n&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(oe.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(oe.setFromAxisAngle(t,e))}applyMatrix3(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[3]*n+r[6]*i,this.y=r[1]*e+r[4]*n+r[7]*i,this.z=r[2]*e+r[5]*n+r[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){const e=this.x,n=this.y,i=this.z,r=t.elements,a=1/(r[3]*e+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*e+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*e+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*e+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(t){const e=this.x,n=this.y,i=this.z,r=t.x,a=t.y,s=t.z,o=t.w,l=2*(a*i-s*n),c=2*(s*e-r*i),u=2*(r*n-a*e);return this.x=e+o*l+a*u-s*c,this.y=n+o*c+s*l-r*u,this.z=i+o*u+r*c-a*l,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){const e=this.x,n=this.y,i=this.z,r=t.elements;return this.x=r[0]*e+r[4]*n+r[8]*i,this.y=r[1]*e+r[5]*n+r[9]*i,this.z=r[2]*e+r[6]*n+r[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.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(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){const n=t.x,i=t.y,r=t.z,a=e.x,s=e.y,o=e.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(t){const e=t.lengthSq();if(0===e)return this.set(0,0,0);const n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return se.copy(this).projectOnVector(t),this.sub(se)}reflect(t){return this.sub(se.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){const e=Math.sqrt(this.lengthSq()*t.lengthSq());if(0===e)return Math.PI/2;const n=this.dot(t)/e;return Math.acos(bt(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){const e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){const i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){const e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){const e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,4*e)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,3*e)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}setFromColor(t){return this.x=t.r,this.y=t.g,this.z=t.b,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const t=2*(Math.random()-.5),e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const se=new ae,oe=new re;class le{constructor(t=new ae(1/0,1/0,1/0),e=new ae(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z}getParameter(t,e){return e.set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,ue),ue.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ve),xe.subVectors(this.max,ve),de.subVectors(t.a,ve),pe.subVectors(t.b,ve),fe.subVectors(t.c,ve),me.subVectors(pe,de),ge.subVectors(fe,pe),_e.subVectors(de,fe);let e=[0,-me.z,me.y,0,-ge.z,ge.y,0,-_e.z,_e.y,me.z,0,-me.x,ge.z,0,-ge.x,_e.z,0,-_e.x,-me.y,me.x,0,-ge.y,ge.x,0,-_e.y,_e.x,0];return!!Se(e,de,pe,fe,xe)&&(e=[1,0,0,0,1,0,0,0,1],!!Se(e,de,pe,fe,xe)&&(ye.crossVectors(me,ge),e=[ye.x,ye.y,ye.z],Se(e,de,pe,fe,xe)))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return this.clampPoint(t,ue).distanceTo(t)}getBoundingSphere(t){return this.isEmpty()?t.makeEmpty():(this.getCenter(t.center),t.radius=.5*this.getSize(ue).length()),t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()||(ce[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),ce[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),ce[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),ce[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),ce[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),ce[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),ce[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),ce[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(ce)),this}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}const ce=[new ae,new ae,new ae,new ae,new ae,new ae,new ae,new ae],ue=new ae,he=new le,de=new ae,pe=new ae,fe=new ae,me=new ae,ge=new ae,_e=new ae,ve=new ae,xe=new ae,ye=new ae,Me=new ae;function Se(t,e,n,i,r){for(let a=0,s=t.length-3;a<=s;a+=3){Me.fromArray(t,a);const s=r.x*Math.abs(Me.x)+r.y*Math.abs(Me.y)+r.z*Math.abs(Me.z),o=e.dot(Me),l=n.dot(Me),c=i.dot(Me);if(Math.max(-Math.max(o,l,c),Math.min(o,l,c))>s)return!1}return!0}const Ee=new le,Te=new ae,be=new ae;class Ae{constructor(t=new ae,e=-1){this.isSphere=!0,this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){const n=this.center;void 0!==e?n.copy(e):Ee.setFromPoints(t).getCenter(n);let i=0;for(let e=0,r=t.length;ethis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Te.subVectors(t,this.center);const e=Te.lengthSq();if(e>this.radius*this.radius){const t=Math.sqrt(e),n=.5*(t-this.radius);this.center.addScaledVector(Te,n/t),this.radius+=n}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(!0===this.center.equals(t.center)?this.radius=Math.max(this.radius,t.radius):(be.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Te.copy(t.center).add(be)),this.expandByPoint(Te.copy(t.center).sub(be))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return(new this.constructor).copy(this)}}const we=new ae,Re=new ae,Ce=new ae,Pe=new ae,Le=new ae,Ue=new ae,De=new ae;class Ie{constructor(t=new ae,e=new ae(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.origin).addScaledVector(this.direction,t)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,we)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);const n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){const e=we.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(we.copy(this.origin).addScaledVector(this.direction,e),we.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){Re.copy(t).add(e).multiplyScalar(.5),Ce.copy(e).sub(t).normalize(),Pe.copy(this.origin).sub(Re);const r=.5*t.distanceTo(e),a=-this.direction.dot(Ce),s=Pe.dot(this.direction),o=-Pe.dot(Ce),l=Pe.lengthSq(),c=Math.abs(1-a*a);let u,h,d,p;if(c>0)if(u=a*o-s,h=a*s-o,p=r*c,u>=0)if(h>=-p)if(h<=p){const t=1/c;u*=t,h*=t,d=u*(u+a*h+2*s)+h*(a*u+h+2*o)+l}else h=r,u=Math.max(0,-(a*h+s)),d=-u*u+h*(h+2*o)+l;else h=-r,u=Math.max(0,-(a*h+s)),d=-u*u+h*(h+2*o)+l;else h<=-p?(u=Math.max(0,-(-a*r+s)),h=u>0?-r:Math.min(Math.max(-r,-o),r),d=-u*u+h*(h+2*o)+l):h<=p?(u=0,h=Math.min(Math.max(-r,-o),r),d=h*(h+2*o)+l):(u=Math.max(0,-(a*r+s)),h=u>0?r:Math.min(Math.max(-r,-o),r),d=-u*u+h*(h+2*o)+l);else h=a>0?-r:r,u=Math.max(0,-(a*h+s)),d=-u*u+h*(h+2*o)+l;return n&&n.copy(this.origin).addScaledVector(this.direction,u),i&&i.copy(Re).addScaledVector(Ce,h),d}intersectSphere(t,e){we.subVectors(t.center,this.origin);const n=we.dot(this.direction),i=we.dot(we)-n*n,r=t.radius*t.radius;if(i>r)return null;const a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,e):this.at(s,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){const e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;const n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){const n=this.distanceToPlane(t);return null===n?null:this.at(n,e)}intersectsPlane(t){const e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,r,a,s,o;const l=1/this.direction.x,c=1/this.direction.y,u=1/this.direction.z,h=this.origin;return l>=0?(n=(t.min.x-h.x)*l,i=(t.max.x-h.x)*l):(n=(t.max.x-h.x)*l,i=(t.min.x-h.x)*l),c>=0?(r=(t.min.y-h.y)*c,a=(t.max.y-h.y)*c):(r=(t.max.y-h.y)*c,a=(t.min.y-h.y)*c),n>a||r>i?null:((r>n||isNaN(n))&&(n=r),(a=0?(s=(t.min.z-h.z)*u,o=(t.max.z-h.z)*u):(s=(t.max.z-h.z)*u,o=(t.min.z-h.z)*u),n>o||s>i?null:((s>n||n!=n)&&(n=s),(o=0?n:i,e)))}intersectsBox(t){return null!==this.intersectBox(t,we)}intersectTriangle(t,e,n,i,r){Le.subVectors(e,t),Ue.subVectors(n,t),De.crossVectors(Le,Ue);let a,s=this.direction.dot(De);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}Pe.subVectors(this.origin,t);const o=a*this.direction.dot(Ue.crossVectors(Pe,Ue));if(o<0)return null;const l=a*this.direction.dot(Le.cross(Pe));if(l<0)return null;if(o+l>s)return null;const c=-a*Pe.dot(De);return c<0?null:this.at(c/s,r)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}}class Ne{constructor(t,e,n,i,r,a,s,o,l,c,u,h,d,p,f,m){Ne.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==t&&this.set(t,e,n,i,r,a,s,o,l,c,u,h,d,p,f,m)}set(t,e,n,i,r,a,s,o,l,c,u,h,d,p,f,m){const g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=c,g[10]=u,g[14]=h,g[3]=d,g[7]=p,g[11]=f,g[15]=m,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 Ne).fromArray(this.elements)}copy(t){const e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){const e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){const e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){const e=this.elements,n=t.elements,i=1/Oe.setFromMatrixColumn(t,0).length(),r=1/Oe.setFromMatrixColumn(t,1).length(),a=1/Oe.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*r,e[5]=n[5]*r,e[6]=n[6]*r,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){const e=this.elements,n=t.x,i=t.y,r=t.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),c=Math.cos(r),u=Math.sin(r);if("XYZ"===t.order){const t=a*c,n=a*u,i=s*c,r=s*u;e[0]=o*c,e[4]=-o*u,e[8]=l,e[1]=n+i*l,e[5]=t-r*l,e[9]=-s*o,e[2]=r-t*l,e[6]=i+n*l,e[10]=a*o}else if("YXZ"===t.order){const t=o*c,n=o*u,i=l*c,r=l*u;e[0]=t+r*s,e[4]=i*s-n,e[8]=a*l,e[1]=a*u,e[5]=a*c,e[9]=-s,e[2]=n*s-i,e[6]=r+t*s,e[10]=a*o}else if("ZXY"===t.order){const t=o*c,n=o*u,i=l*c,r=l*u;e[0]=t-r*s,e[4]=-a*u,e[8]=i+n*s,e[1]=n+i*s,e[5]=a*c,e[9]=r-t*s,e[2]=-a*l,e[6]=s,e[10]=a*o}else if("ZYX"===t.order){const t=a*c,n=a*u,i=s*c,r=s*u;e[0]=o*c,e[4]=i*l-n,e[8]=t*l+r,e[1]=o*u,e[5]=r*l+t,e[9]=n*l-i,e[2]=-l,e[6]=s*o,e[10]=a*o}else if("YZX"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=r-t*u,e[8]=i*u+n,e[1]=u,e[5]=a*c,e[9]=-s*c,e[2]=-l*c,e[6]=n*u+i,e[10]=t-r*u}else if("XZY"===t.order){const t=a*o,n=a*l,i=s*o,r=s*l;e[0]=o*c,e[4]=-u,e[8]=l*c,e[1]=t*u+r,e[5]=a*c,e[9]=n*u-i,e[2]=i*u-n,e[6]=s*c,e[10]=r*u+t}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Be,t,ze)}lookAt(t,e,n){const i=this.elements;return Ge.subVectors(t,e),0===Ge.lengthSq()&&(Ge.z=1),Ge.normalize(),He.crossVectors(n,Ge),0===He.lengthSq()&&(1===Math.abs(n.z)?Ge.x+=1e-4:Ge.z+=1e-4,Ge.normalize(),He.crossVectors(n,Ge)),He.normalize(),Ve.crossVectors(Ge,He),i[0]=He.x,i[4]=Ve.x,i[8]=Ge.x,i[1]=He.y,i[5]=Ve.y,i[9]=Ge.y,i[2]=He.z,i[6]=Ve.z,i[10]=Ge.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){const n=t.elements,i=e.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],c=n[1],u=n[5],h=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],_=n[3],v=n[7],x=n[11],y=n[15],M=i[0],S=i[4],E=i[8],T=i[12],b=i[1],A=i[5],w=i[9],R=i[13],C=i[2],P=i[6],L=i[10],U=i[14],D=i[3],I=i[7],N=i[11],O=i[15];return r[0]=a*M+s*b+o*C+l*D,r[4]=a*S+s*A+o*P+l*I,r[8]=a*E+s*w+o*L+l*N,r[12]=a*T+s*R+o*U+l*O,r[1]=c*M+u*b+h*C+d*D,r[5]=c*S+u*A+h*P+d*I,r[9]=c*E+u*w+h*L+d*N,r[13]=c*T+u*R+h*U+d*O,r[2]=p*M+f*b+m*C+g*D,r[6]=p*S+f*A+m*P+g*I,r[10]=p*E+f*w+m*L+g*N,r[14]=p*T+f*R+m*U+g*O,r[3]=_*M+v*b+x*C+y*D,r[7]=_*S+v*A+x*P+y*I,r[11]=_*E+v*w+x*L+y*N,r[15]=_*T+v*R+x*U+y*O,this}multiplyScalar(t){const e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this}determinant(){const t=this.elements,e=t[0],n=t[4],i=t[8],r=t[12],a=t[1],s=t[5],o=t[9],l=t[13],c=t[2],u=t[6],h=t[10],d=t[14];return t[3]*(+r*o*u-i*l*u-r*s*h+n*l*h+i*s*d-n*o*d)+t[7]*(+e*o*d-e*l*h+r*a*h-i*a*d+i*l*c-r*o*c)+t[11]*(+e*l*u-e*s*d-r*a*u+n*a*d+r*s*c-n*l*c)+t[15]*(-i*s*c-e*o*u+e*s*h+i*a*u-n*a*h+n*o*c)}transpose(){const t=this.elements;let e;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(t,e,n){const i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){const t=this.elements,e=t[0],n=t[1],i=t[2],r=t[3],a=t[4],s=t[5],o=t[6],l=t[7],c=t[8],u=t[9],h=t[10],d=t[11],p=t[12],f=t[13],m=t[14],g=t[15],_=u*m*l-f*h*l+f*o*d-s*m*d-u*o*g+s*h*g,v=p*h*l-c*m*l-p*o*d+a*m*d+c*o*g-a*h*g,x=c*f*l-p*u*l+p*s*d-a*f*d-c*s*g+a*u*g,y=p*u*o-c*f*o-p*s*h+a*f*h+c*s*m-a*u*m,M=e*_+n*v+i*x+r*y;if(0===M)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const S=1/M;return t[0]=_*S,t[1]=(f*h*r-u*m*r-f*i*d+n*m*d+u*i*g-n*h*g)*S,t[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,t[3]=(u*o*r-s*h*r-u*i*l+n*h*l+s*i*d-n*o*d)*S,t[4]=v*S,t[5]=(c*m*r-p*h*r+p*i*d-e*m*d-c*i*g+e*h*g)*S,t[6]=(p*o*r-a*m*r-p*i*l+e*m*l+a*i*g-e*o*g)*S,t[7]=(a*h*r-c*o*r+c*i*l-e*h*l-a*i*d+e*o*d)*S,t[8]=x*S,t[9]=(p*u*r-c*f*r-p*n*d+e*f*d+c*n*g-e*u*g)*S,t[10]=(a*f*r-p*s*r+p*n*l-e*f*l-a*n*g+e*s*g)*S,t[11]=(c*s*r-a*u*r-c*n*l+e*u*l+a*n*d-e*s*d)*S,t[12]=y*S,t[13]=(c*f*i-p*u*i+p*n*h-e*f*h-c*n*m+e*u*m)*S,t[14]=(p*s*i-a*f*i-p*n*o+e*f*o+a*n*m-e*s*m)*S,t[15]=(a*u*i-c*s*i+c*n*o-e*u*o-a*n*h+e*s*h)*S,this}scale(t){const e=this.elements,n=t.x,i=t.y,r=t.z;return e[0]*=n,e[4]*=i,e[8]*=r,e[1]*=n,e[5]*=i,e[9]*=r,e[2]*=n,e[6]*=i,e[10]*=r,e[3]*=n,e[7]*=i,e[11]*=r,this}getMaxScaleOnAxis(){const t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return t.isVector3?this.set(1,0,0,t.x,0,1,0,t.y,0,0,1,t.z,0,0,0,1):this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){const e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){const e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){const n=Math.cos(e),i=Math.sin(e),r=1-n,a=t.x,s=t.y,o=t.z,l=r*a,c=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,c*s+n,c*o-i*a,0,l*o-i*s,c*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,r,a){return this.set(1,n,r,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){const i=this.elements,r=e._x,a=e._y,s=e._z,o=e._w,l=r+r,c=a+a,u=s+s,h=r*l,d=r*c,p=r*u,f=a*c,m=a*u,g=s*u,_=o*l,v=o*c,x=o*u,y=n.x,M=n.y,S=n.z;return i[0]=(1-(f+g))*y,i[1]=(d+x)*y,i[2]=(p-v)*y,i[3]=0,i[4]=(d-x)*M,i[5]=(1-(h+g))*M,i[6]=(m+_)*M,i[7]=0,i[8]=(p+v)*S,i[9]=(m-_)*S,i[10]=(1-(h+f))*S,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){const i=this.elements;let r=Oe.set(i[0],i[1],i[2]).length();const a=Oe.set(i[4],i[5],i[6]).length(),s=Oe.set(i[8],i[9],i[10]).length();this.determinant()<0&&(r=-r),t.x=i[12],t.y=i[13],t.z=i[14],Fe.copy(this);const o=1/r,l=1/a,c=1/s;return Fe.elements[0]*=o,Fe.elements[1]*=o,Fe.elements[2]*=o,Fe.elements[4]*=l,Fe.elements[5]*=l,Fe.elements[6]*=l,Fe.elements[8]*=c,Fe.elements[9]*=c,Fe.elements[10]*=c,e.setFromRotationMatrix(Fe),n.x=r,n.y=a,n.z=s,this}makePerspective(t,e,n,i,r,a,s=2e3){const o=this.elements,l=2*r/(e-t),c=2*r/(n-i),u=(e+t)/(e-t),h=(n+i)/(n-i);let d,p;if(s===vt)d=-(a+r)/(a-r),p=-2*a*r/(a-r);else{if(s!==xt)throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);d=-a/(a-r),p=-a*r/(a-r)}return o[0]=l,o[4]=0,o[8]=u,o[12]=0,o[1]=0,o[5]=c,o[9]=h,o[13]=0,o[2]=0,o[6]=0,o[10]=d,o[14]=p,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,r,a,s=2e3){const o=this.elements,l=1/(e-t),c=1/(n-i),u=1/(a-r),h=(e+t)*l,d=(n+i)*c;let p,f;if(s===vt)p=(a+r)*u,f=-2*u;else{if(s!==xt)throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);p=r*u,f=-1*u}return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-h,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-d,o[2]=0,o[6]=0,o[10]=f,o[14]=-p,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){const e=this.elements,n=t.elements;for(let t=0;t<16;t++)if(e[t]!==n[t])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){const n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}}const Oe=new ae,Fe=new Ne,Be=new ae(0,0,0),ze=new ae(1,1,1),He=new ae,Ve=new ae,Ge=new ae,ke=new Ne,We=new re;class Xe{constructor(t=0,e=0,n=0,i=Xe.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){const i=t.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],c=i[9],u=i[2],h=i[6],d=i[10];switch(e){case"XYZ":this._y=Math.asin(bt(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-c,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-bt(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-u,r),this._z=0);break;case"ZXY":this._x=Math.asin(bt(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-u,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-bt(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(h,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(bt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-c,l),this._y=Math.atan2(-u,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-bt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-c,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,!0===n&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return ke.makeRotationFromQuaternion(t),this.setFromRotationMatrix(ke,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return We.setFromEuler(this),this.setFromQuaternion(We,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Xe.DEFAULT_ORDER="XYZ";class qe{constructor(){this.mask=1}set(t){this.mask=1<>>0}enable(t){this.mask|=1<1){for(let t=0;t1){for(let t=0;t0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(t=>({boxInitialized:t.boxInitialized,boxMin:t.box.min.toArray(),boxMax:t.box.max.toArray(),sphereInitialized:t.sphereInitialized,sphereRadius:t.sphere.radius,sphereCenter:t.sphere.center.toArray()})),i.maxGeometryCount=this._maxGeometryCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(t),null!==this.boundingSphere&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),null!==this.boundingBox&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(t.geometries,this.geometry);const e=this.geometry.parameters;if(void 0!==e&&void 0!==e.shapes){const n=e.shapes;if(Array.isArray(n))for(let e=0,i=n.length;e0){i.children=[];for(let e=0;e0){i.animations=[];for(let e=0;e0&&(n.geometries=e),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),c.length>0&&(n.animations=c),u.length>0&&(n.nodes=u)}return n.object=i,n;function a(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}}clone(t){return(new this.constructor).copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.animations=t.animations.slice(),this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(let e=0;e0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(t,e,n,i,r){ln.subVectors(i,e),cn.subVectors(n,e),un.subVectors(t,e);const a=ln.dot(ln),s=ln.dot(cn),o=ln.dot(un),l=cn.dot(cn),c=cn.dot(un),u=a*l-s*s;if(0===u)return r.set(0,0,0),null;const h=1/u,d=(l*o-s*c)*h,p=(a*c-s*o)*h;return r.set(1-d-p,p,d)}static containsPoint(t,e,n,i){return null!==this.getBarycoord(t,e,n,i,hn)&&hn.x>=0&&hn.y>=0&&hn.x+hn.y<=1}static getUV(t,e,n,i,r,a,s,o){return!1===vn&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),vn=!0),this.getInterpolation(t,e,n,i,r,a,s,o)}static getInterpolation(t,e,n,i,r,a,s,o){return null===this.getBarycoord(t,e,n,i,hn)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,hn.x),o.addScaledVector(a,hn.y),o.addScaledVector(s,hn.z),o)}static isFrontFacing(t,e,n,i){return ln.subVectors(n,e),cn.subVectors(t,e),ln.cross(cn).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return(new this.constructor).copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ln.subVectors(this.c,this.b),cn.subVectors(this.a,this.b),.5*ln.cross(cn).length()}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return xn.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return xn.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,r){return!1===vn&&(console.warn("THREE.Triangle.getUV() has been renamed to THREE.Triangle.getInterpolation()."),vn=!0),xn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}getInterpolation(t,e,n,i,r){return xn.getInterpolation(t,this.a,this.b,this.c,e,n,i,r)}containsPoint(t){return xn.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return xn.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){const n=this.a,i=this.b,r=this.c;let a,s;dn.subVectors(i,n),pn.subVectors(r,n),mn.subVectors(t,n);const o=dn.dot(mn),l=pn.dot(mn);if(o<=0&&l<=0)return e.copy(n);gn.subVectors(t,i);const c=dn.dot(gn),u=pn.dot(gn);if(c>=0&&u<=c)return e.copy(i);const h=o*u-c*l;if(h<=0&&o>=0&&c<=0)return a=o/(o-c),e.copy(n).addScaledVector(dn,a);_n.subVectors(t,r);const d=dn.dot(_n),p=pn.dot(_n);if(p>=0&&d<=p)return e.copy(r);const f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return s=l/(l-p),e.copy(n).addScaledVector(pn,s);const m=c*p-d*u;if(m<=0&&u-c>=0&&d-p>=0)return fn.subVectors(r,i),s=(u-c)/(u-c+(d-p)),e.copy(i).addScaledVector(fn,s);const g=1/(m+f+h);return a=f*g,s=h*g,e.copy(n).addScaledVector(dn,a).addScaledVector(pn,s)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}}const yn={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},Mn={h:0,s:0,l:0},Sn={h:0,s:0,l:0};function En(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}class Tn{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(t,e,n)}set(t,e,n){if(void 0===e&&void 0===n){const e=t;e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e)}else this.setRGB(t,e,n);return this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Q){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,kt.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=kt.workingColorSpace){return this.r=t,this.g=e,this.b=n,kt.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=kt.workingColorSpace){if(t=(t%(r=1)+r)%r,e=bt(e,0,1),n=bt(n,0,1),0===e)this.r=this.g=this.b=n;else{const i=n<=.5?n*(1+e):n+e-n*e,r=2*n-i;this.r=En(r,i,t+1/3),this.g=En(r,i,t),this.b=En(r,i,t-1/3)}var r;return kt.toWorkingColorSpace(this,i),this}setStyle(t,e=Q){function n(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^(\w+)\(([^\)]*)\)/.exec(t)){let r;const a=i[1],s=i[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,e);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,e);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return n(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,e);break;default:console.warn("THREE.Color: Unknown color model "+t)}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(t)){const n=i[1],r=n.length;if(3===r)return this.setRGB(parseInt(n.charAt(0),16)/15,parseInt(n.charAt(1),16)/15,parseInt(n.charAt(2),16)/15,e);if(6===r)return this.setHex(parseInt(n,16),e);console.warn("THREE.Color: Invalid hex color "+t)}else if(t&&t.length>0)return this.setColorName(t,e);return this}setColorName(t,e=Q){const n=yn[t.toLowerCase()];return void 0!==n?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=Wt(t.r),this.g=Wt(t.g),this.b=Wt(t.b),this}copyLinearToSRGB(t){return this.r=Xt(t.r),this.g=Xt(t.g),this.b=Xt(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Q){return kt.fromWorkingColorSpace(bn.copy(this),t),65536*Math.round(bt(255*bn.r,0,255))+256*Math.round(bt(255*bn.g,0,255))+Math.round(bt(255*bn.b,0,255))}getHexString(t=Q){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=kt.workingColorSpace){kt.fromWorkingColorSpace(bn.copy(this),e);const n=bn.r,i=bn.g,r=bn.b,a=Math.max(n,i,r),s=Math.min(n,i,r);let o,l;const c=(s+a)/2;if(s===a)o=0,l=0;else{const t=a-s;switch(l=c<=.5?t/(a+s):t/(2-a-s),a){case n:o=(i-r)/t+(i0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const e in t){const n=t[e];if(void 0===n){console.warn(`THREE.Material: parameter '${e}' has value of undefined.`);continue}const i=this[e];void 0!==i?i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n:console.warn(`THREE.Material: '${e}' is not a property of THREE.${this.type}.`)}}toJSON(t){const e=void 0===t||"string"==typeof t;e&&(t={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(t){const e=[];for(const n in t){const i=t[n];delete i.metadata,e.push(i)}return e}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),this.blendEquation!==r&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ot&&(n.stencilFail=this.stencilFail),this.stencilZFail!==ot&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==ot&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),e){const e=i(t.textures),r=i(t.images);e.length>0&&(n.textures=e),r.length>0&&(n.images=r)}return n}clone(){return(new this.constructor).copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;const e=t.clippingPlanes;let n=null;if(null!==e){const t=e.length;n=new Array(t);for(let i=0;i!==t;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaHash=t.alphaHash,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){!0===t&&this.version++}}class Rn extends wn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Tn(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(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}}const Cn=new ae,Pn=new Lt;class Ln{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=void 0!==t?t.length/e:0,this.normalized=n,this.usage=35044,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=F,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}get updateRange(){return console.warn("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(t){return this.usage=t,this}addUpdateRange(t,e){this.updateRanges.push({start:t,count:e})}clearUpdateRanges(){this.updateRanges.length=0}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this.gpuType=t.gpuType,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,r=this.itemSize;i0&&(t.userData=this.userData),void 0!==this.parameters){const e=this.parameters;for(const n in e)void 0!==e[n]&&(t[n]=e[n]);return t}t.data={attributes:{}};const e=this.index;null!==e&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});const n=this.attributes;for(const e in n){const i=n[e];t.data.attributes[e]=i.toJSON(t.data)}const i={};let r=!1;for(const e in this.morphAttributes){const n=this.morphAttributes[e],a=[];for(let e=0,i=n.length;e0&&(i[e]=a,r=!0)}r&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);const a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));const s=this.boundingSphere;return null!==s&&(t.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),t}clone(){return(new this.constructor).copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const e={};this.name=t.name;const n=t.index;null!==n&&this.setIndex(n.clone(e));const i=t.attributes;for(const t in i){const n=i[t];this.setAttribute(t,n.clone(e))}const r=t.morphAttributes;for(const t in r){const n=[],i=r[t];for(let t=0,r=i.length;t0){const n=t[e[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,e=n.length;t(t.far-t.near)**2)return}kn.copy(r).invert(),Wn.copy(t.ray).applyMatrix4(kn),null!==n.boundingBox&&!1===Wn.intersectsBox(n.boundingBox)||this._computeIntersections(t,e,Wn)}}_computeIntersections(t,e,n){let i;const r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,c=r.attributes.uv1,u=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=h.length;rn.far?null:{distance:c,point:ai.clone(),object:t}}(t,e,n,i,jn,Yn,Kn,ri);if(u){r&&($n.fromBufferAttribute(r,o),Qn.fromBufferAttribute(r,l),ti.fromBufferAttribute(r,c),u.uv=xn.getInterpolation(ri,jn,Yn,Kn,$n,Qn,ti,new Lt)),a&&($n.fromBufferAttribute(a,o),Qn.fromBufferAttribute(a,l),ti.fromBufferAttribute(a,c),u.uv1=xn.getInterpolation(ri,jn,Yn,Kn,$n,Qn,ti,new Lt),u.uv2=u.uv1),s&&(ei.fromBufferAttribute(s,o),ni.fromBufferAttribute(s,l),ii.fromBufferAttribute(s,c),u.normal=xn.getInterpolation(ri,jn,Yn,Kn,ei,ni,ii,new ae),u.normal.dot(i.direction)>0&&u.normal.multiplyScalar(-1));const t={a:o,b:l,c,normal:new ae,materialIndex:0};xn.getNormal(jn,Yn,Kn,t.normal),u.face=t}return u}class li extends Gn{constructor(t=1,e=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r),a=Math.floor(a);const o=[],l=[],c=[],u=[];let h=0,d=0;function p(t,e,n,i,r,a,p,f,m,g,_){const v=a/m,x=p/g,y=a/2,M=p/2,S=f/2,E=m+1,T=g+1;let b=0,A=0;const w=new ae;for(let a=0;a0?1:-1,c.push(w.x,w.y,w.z),u.push(o/m),u.push(1-a/g),b+=1}}for(let t=0;t0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e.lights=this.lights,e.clipping=this.clipping;const n={};for(const t in this.extensions)!0===this.extensions[t]&&(n[t]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}}class fi extends on{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Ne,this.projectionMatrix=new Ne,this.projectionMatrixInverse=new Ne,this.coordinateSystem=vt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this.coordinateSystem=t.coordinateSystem,this}getWorldDirection(t){return super.getWorldDirection(t).negate()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}}class mi extends fi{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=null===t.view?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){const e=.5*this.getFilmHeight()/t;this.fov=2*Et*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){const t=Math.tan(.5*St*this.fov);return.5*this.getFilmHeight()/t}getEffectiveFOV(){return 2*Et*Math.atan(Math.tan(.5*St*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,r,a){this.aspect=t/e,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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=this.near;let e=t*Math.tan(.5*St*this.fov)/this.zoom,n=2*e,i=this.aspect*n,r=-.5*i;const a=this.view;if(null!==this.view&&this.view.enabled){const t=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/t,e-=a.offsetY*n/s,i*=a.width/t,n*=a.height/s}const s=this.filmOffset;0!==s&&(r+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,e,e-n,t,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}}const gi=-90;class _i extends on{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new mi(gi,1,t,e);i.layers=this.layers,this.add(i);const r=new mi(gi,1,t,e);r.layers=this.layers,this.add(r);const a=new mi(gi,1,t,e);a.layers=this.layers,this.add(a);const s=new mi(gi,1,t,e);s.layers=this.layers,this.add(s);const o=new mi(gi,1,t,e);o.layers=this.layers,this.add(o);const l=new mi(gi,1,t,e);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){const t=this.coordinateSystem,e=this.children.concat(),[n,i,r,a,s,o]=e;for(const t of e)this.remove(t);if(t===vt)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else{if(t!==xt)throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+t);n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1)}for(const t of e)this.add(t),t.updateMatrixWorld()}update(t,e){null===this.parent&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==t.coordinateSystem&&(this.coordinateSystem=t.coordinateSystem,this.updateCoordinateSystem());const[r,a,s,o,l,c]=this.children,u=t.getRenderTarget(),h=t.getActiveCubeFace(),d=t.getActiveMipmapLevel(),p=t.xr.enabled;t.xr.enabled=!1;const f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0,i),t.render(e,r),t.setRenderTarget(n,1,i),t.render(e,a),t.setRenderTarget(n,2,i),t.render(e,s),t.setRenderTarget(n,3,i),t.render(e,o),t.setRenderTarget(n,4,i),t.render(e,l),n.texture.generateMipmaps=f,t.setRenderTarget(n,5,i),t.render(e,c),t.setRenderTarget(u,h,d),t.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class vi extends $t{constructor(t,e,n,i,r,a,s,o,l,c){super(t=void 0!==t?t:[],e=void 0!==e?e:S,n,i,r,a,s,o,l,c),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}}class xi extends ee{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;const n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];void 0!==e.encoding&&(Bt("THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace."),e.colorSpace=e.encoding===J?Q:$),this.texture=new vi(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==e.generateMipmaps&&e.generateMipmaps,this.texture.minFilter=void 0!==e.minFilter?e.minFilter:L}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.colorSpace=e.colorSpace,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;const n={tEquirect:{value:null}},i="\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",r="\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",a=new li(5,5,5),s=new pi({name:"CubemapFromEquirect",uniforms:ci(n),vertexShader:i,fragmentShader:r,side:1,blending:0});s.uniforms.tEquirect.value=e;const o=new si(a,s),l=e.minFilter;return e.minFilter===D&&(e.minFilter=L),new _i(1,10,this).update(t,o),e.minFilter=l,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,n,i){const r=t.getRenderTarget();for(let r=0;r<6;r++)t.setRenderTarget(this,r),t.clear(e,n,i);t.setRenderTarget(r)}}const yi=new ae,Mi=new ae,Si=new Ut;class Ei{constructor(t=new ae(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){const i=yi.subVectors(n,e).cross(Mi.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){const t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(t).addScaledVector(this.normal,-this.distanceToPoint(t))}intersectLine(t,e){const n=t.delta(yi),i=this.normal.dot(n);if(0===i)return 0===this.distanceToPoint(t.start)?e.copy(t.start):null;const r=-(t.start.dot(this.normal)+this.constant)/i;return r<0||r>1?null:e.copy(t.start).addScaledVector(n,r)}intersectsLine(t){const e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){const n=e||Si.getNormalMatrix(t),i=this.coplanarPoint(yi).applyMatrix4(t),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return(new this.constructor).copy(this)}}const Ti=new Ae,bi=new ae;class Ai{constructor(t=new Ei,e=new Ei,n=new Ei,i=new Ei,r=new Ei,a=new Ei){this.planes=[t,e,n,i,r,a]}set(t,e,n,i,r,a){const s=this.planes;return s[0].copy(t),s[1].copy(e),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(t){const e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t,e=2e3){const n=this.planes,i=t.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],c=i[5],u=i[6],h=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],_=i[13],v=i[14],x=i[15];if(n[0].setComponents(o-r,h-l,m-d,x-g).normalize(),n[1].setComponents(o+r,h+l,m+d,x+g).normalize(),n[2].setComponents(o+a,h+c,m+p,x+_).normalize(),n[3].setComponents(o-a,h-c,m-p,x-_).normalize(),n[4].setComponents(o-s,h-u,m-f,x-v).normalize(),e===vt)n[5].setComponents(o+s,h+u,m+f,x+v).normalize();else{if(e!==xt)throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+e);n[5].setComponents(s,u,f,v).normalize()}return this}intersectsObject(t){if(void 0!==t.boundingSphere)null===t.boundingSphere&&t.computeBoundingSphere(),Ti.copy(t.boundingSphere).applyMatrix4(t.matrixWorld);else{const e=t.geometry;null===e.boundingSphere&&e.computeBoundingSphere(),Ti.copy(e.boundingSphere).applyMatrix4(t.matrixWorld)}return this.intersectsSphere(Ti)}intersectsSprite(t){return Ti.center.set(0,0,0),Ti.radius=.7071067811865476,Ti.applyMatrix4(t.matrixWorld),this.intersectsSphere(Ti)}intersectsSphere(t){const e=this.planes,n=t.center,i=-t.radius;for(let t=0;t<6;t++)if(e[t].distanceToPoint(n)0?t.max.x:t.min.x,bi.y=i.normal.y>0?t.max.y:t.min.y,bi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(bi)<0)return!1}return!0}containsPoint(t){const e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}}function wi(){let t=null,e=!1,n=null,i=null;function r(e,a){n(e,a),i=t.requestAnimationFrame(r)}return{start:function(){!0!==e&&null!==n&&(i=t.requestAnimationFrame(r),e=!0)},stop:function(){t.cancelAnimationFrame(i),e=!1},setAnimationLoop:function(t){n=t},setContext:function(e){t=e}}}function Ri(t,e){const n=e.isWebGL2,i=new WeakMap;return{get:function(t){return t.isInterleavedBufferAttribute&&(t=t.data),i.get(t)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);const n=i.get(e);n&&(t.deleteBuffer(n.buffer),i.delete(e))},update:function(e,r){if(e.isGLBufferAttribute){const t=i.get(e);return void((!t||t.version 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};\n#ifdef USE_ALPHAHASH\n\tvarying vec3 vPosition;\n#endif\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}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n\tfloat fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n\treturn f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",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\thighp vec2 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 cubeUV_r0 1.0\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_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 ), cubeUV_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_TANGENT\n\tvec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n\tmat3 bm = mat3( batchingMatrix );\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n\ttransformedNormal = bm * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = bm * transformedTangent;\n\t#endif\n#endif\n#ifdef USE_INSTANCING\n\tmat3 im = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n\ttransformedNormal = im * transformedNormal;\n\t#ifdef USE_TANGENT\n\t\ttransformedTangent = im * transformedTangent;\n\t#endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 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, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\n\tvec3( 0.8224621, 0.177538, 0.0 ),\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\n);\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\n);\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\n}\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\n}\nvec4 LinearTransferOETF( in vec4 value ) {\n\treturn value;\n}\nvec4 sRGBTransferOETF( 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}\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn sRGBTransferOETF( value );\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#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 ) || defined( LAMBERT )\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 ) || defined( LAMBERT )\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:"#ifdef USE_ENVMAP\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#ifdef 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#ifdef 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\t#ifdef USE_ANISOTROPY\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\n\t\t\t#else\n\t\t\t\treturn vec3( 0.0 );\n\t\t\t#endif\n\t\t}\n\t#endif\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\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\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_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n\tuniform vec3 lightProbe[ 9 ];\n#endif\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 ( LEGACY_LIGHTS )\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#else\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#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, 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 vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometryPosition;\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 vec3 geometryPosition, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometryPosition;\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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",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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\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\tmaterial.ior = ior;\n\t#ifdef USE_SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULAR_COLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n\t\t#endif\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\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( ( material.ior - 1.0 ) / ( material.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, vClearcoatMapUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).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, vIridescenceMapUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).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_SHEEN_COLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\t#ifdef USE_ANISOTROPYMAP\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n\t#else\n\t\tvec2 anisotropyV = anisotropyVector;\n\t#endif\n\tmaterial.anisotropy = length( anisotropyV );\n\tif( material.anisotropy == 0.0 ) {\n\t\tanisotropyV = vec2( 1.0, 0.0 );\n\t} else {\n\t\tanisotropyV /= material.anisotropy;\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\n\t}\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\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\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat anisotropy;\n\t\tfloat alphaT;\n\t\tvec3 anisotropyT;\n\t\tvec3 anisotropyB;\n\t#endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n\t\tfloat v = 0.5 / ( gv + gl );\n\t\treturn saturate(v);\n\t}\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n\t\tfloat a2 = alphaT * alphaB;\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n\t\thighp float v2 = dot( v, v );\n\t\tfloat w2 = a2 / v2;\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\n\t}\n#endif\n#ifdef USE_CLEARCOAT\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n\t\tvec3 f0 = material.clearcoatF0;\n\t\tfloat f90 = material.clearcoatF90;\n\t\tfloat roughness = material.clearcoatRoughness;\n\t\tfloat alpha = pow2( roughness );\n\t\tvec3 halfDir = normalize( lightDir + viewDir );\n\t\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\t\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\t\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\t\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\t\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t\treturn F * ( V * D );\n\t}\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n\tvec3 f0 = material.specularColor;\n\tfloat f90 = material.specularF90;\n\tfloat roughness = material.roughness;\n\tfloat alpha = pow2( roughness );\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 dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( f0, f90, dotVH );\n\t#ifdef USE_IRIDESCENCE\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\n\t#endif\n\t#ifdef USE_ANISOTROPY\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n\t#else\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\t\tfloat D = D_GGX( alpha, dotNH );\n\t#endif\n\treturn F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 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}\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\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometryNormal;\n\t\tvec3 viewDir = geometryViewDir;\n\t\tvec3 position = geometryPosition;\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, 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( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, 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:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n\tgeometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\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, geometryPosition, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\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, geometryPosition, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\t#if defined( USE_LIGHT_PROBES )\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n\t#endif\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 ], geometryNormal );\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, vLightMapUv );\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( geometryNormal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\t#ifdef USE_ANISOTROPY\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n\t#else\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, vMapUv );\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\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\t#if defined( USE_POINTS_UV )\n\t\tvec2 uv = vUv;\n\t#else\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\t#endif\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_POINTS_UV )\n\tvarying vec2 vUv;\n#else\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\t\tuniform mat3 uvTransform;\n\t#endif\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, vMetalnessMapUv );\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 = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal *= faceDirection;\n\t#endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\n\t\t#if defined( USE_NORMALMAP )\n\t\t\tvNormalMapUv\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tvClearcoatNormalMapUv\n\t\t#else\n\t\t\tvUv\n\t\t#endif\n\t\t);\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn[0] *= faceDirection;\n\t\ttbn[1] *= faceDirection;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\t#ifdef USE_TANGENT\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n\t#else\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n\t#endif\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n\t\ttbn2[0] *= faceDirection;\n\t\ttbn2[1] *= faceDirection;\n\t#endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n\tnormal = texture2D( normalMap, vNormalMapUv ).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( USE_NORMALMAP_TANGENTSPACE )\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\tnormal = normalize( tbn * mapN );\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 USE_NORMALMAP_OBJECTSPACE\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\n\t\tvec2 st0 = dFdx( uv.st );\n\t\tvec2 st1 = dFdy( uv.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 : inversesqrt( det );\n\t\treturn mat3( T * scale, B * scale, N );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\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",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\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}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\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 depth, const in float near, const in float far ) {\n\treturn depth * ( 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 depth, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * depth - 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_BATCHING\n\tmvPosition = batchingMatrix * mvPosition;\n#endif\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, vRoughnessMapUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n\tuniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#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\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\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\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:"#if NUM_SPOT_LIGHT_COORDS > 0\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#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\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:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\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, vSpotLightCoord[ 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\tmat4 getBoneMatrix( const in float i ) {\n\t\tint size = textureSize( boneTexture, 0 ).x;\n\t\tint j = int( i ) * 4;\n\t\tint x = j % size;\n\t\tint y = j / size;\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n\t\treturn mat4( v1, v2, v3, v4 );\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, vSpecularMapUv );\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 saturate( 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}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n\tvec3( 0.6274, 0.0691, 0.0164 ),\n\tvec3( 0.3293, 0.9195, 0.0880 ),\n\tvec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n\tvec3 x2 = x * x;\n\tvec3 x4 = x2 * x2;\n\treturn + 15.5 * x4 * x2\n\t\t- 40.14 * x4 * x\n\t\t+ 31.96 * x4\n\t\t- 6.868 * x2 * x\n\t\t+ 0.4298 * x2\n\t\t+ 0.1191 * x\n\t\t- 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n\tconst mat3 AgXInsetMatrix = mat3(\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n\t);\n\tconst mat3 AgXOutsetMatrix = mat3(\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n\t);\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n\tcolor *= toneMappingExposure;\n\tcolor = AgXInsetMatrix * color;\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n\tcolor = clamp( color, 0.0, 1.0 );\n\tcolor = agxDefaultContrastApprox( color );\n\tcolor = AgXOutsetMatrix * color;\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n\treturn color;\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmitted = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\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\tfloat w0( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n\t}\n\tfloat w1( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n\t}\n\tfloat w2( float a ){\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n\t}\n\tfloat w3( float a ) {\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\n\t}\n\tfloat g0( float a ) {\n\t\treturn w0( a ) + w1( a );\n\t}\n\tfloat g1( float a ) {\n\t\treturn w2( a ) + w3( a );\n\t}\n\tfloat h0( float a ) {\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n\t}\n\tfloat h1( float a ) {\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n\t}\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n\t\tuv = uv * texelSize.zw + 0.5;\n\t\tvec2 iuv = floor( uv );\n\t\tvec2 fuv = fract( uv );\n\t\tfloat g0x = g0( fuv.x );\n\t\tfloat g1x = g1( fuv.x );\n\t\tfloat h0x = h0( fuv.x );\n\t\tfloat h1x = h1( fuv.x );\n\t\tfloat h0y = h0( fuv.y );\n\t\tfloat h1y = h1( fuv.y );\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n\t}\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n\t\treturn mix( fSample, cSample, fract( lod ) );\n\t}\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 lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n\t}\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn vec3( 1.0 );\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\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 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n\t}\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvarying vec2 vUv;\n#endif\n#ifdef USE_MAP\n\tuniform mat3 mapTransform;\n\tvarying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform mat3 alphaMapTransform;\n\tvarying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n\tuniform mat3 lightMapTransform;\n\tvarying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n\tuniform mat3 aoMapTransform;\n\tvarying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n\tuniform mat3 bumpMapTransform;\n\tvarying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n\tuniform mat3 normalMapTransform;\n\tvarying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tuniform mat3 displacementMapTransform;\n\tvarying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tuniform mat3 emissiveMapTransform;\n\tvarying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n\tuniform mat3 metalnessMapTransform;\n\tvarying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tuniform mat3 roughnessMapTransform;\n\tvarying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tuniform mat3 anisotropyMapTransform;\n\tvarying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tuniform mat3 clearcoatMapTransform;\n\tvarying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform mat3 clearcoatNormalMapTransform;\n\tvarying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform mat3 clearcoatRoughnessMapTransform;\n\tvarying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tuniform mat3 sheenColorMapTransform;\n\tvarying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tuniform mat3 sheenRoughnessMapTransform;\n\tvarying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tuniform mat3 iridescenceMapTransform;\n\tvarying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform mat3 iridescenceThicknessMapTransform;\n\tvarying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n\tuniform mat3 specularMapTransform;\n\tvarying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tuniform mat3 specularColorMapTransform;\n\tvarying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tuniform mat3 specularIntensityMapTransform;\n\tvarying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tuniform mat3 transmissionMapTransform;\n\tvarying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n\tuniform mat3 thicknessMapTransform;\n\tvarying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n\tvUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_BATCHING\n\t\tworldPosition = batchingMatrix * worldPosition;\n\t#endif\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;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}",backgroundCube_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}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\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:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\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 \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \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 \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\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 \n#include \nvoid main() {\n\t#include \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 \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \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 \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\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 \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\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 \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\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, vLightMapUv );\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 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}",meshlambert_frag:"#define LAMBERT\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 \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\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 \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\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 \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\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( USE_NORMALMAP_TANGENTSPACE )\n\tvarying vec3 vViewPosition;\n#endif\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#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\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 \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\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 USE_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 USE_SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULAR_COLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n\t#ifdef USE_SPECULAR_INTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\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_SHEEN_COLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\n#ifdef USE_ANISOTROPY\n\tuniform vec2 anisotropyVector;\n\t#ifdef USE_ANISOTROPYMAP\n\t\tuniform sampler2D anisotropyMap;\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 \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\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 + sheenSpecularDirect + sheenSpecularIndirect;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * 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\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 \n#ifdef USE_POINTS_UV\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n#endif\nvoid main() {\n\t#ifdef USE_POINTS_UV\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\t#endif\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 \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\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 \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}",shadow_frag:"uniform vec3 color;\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\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 \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\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}"},Li={common:{diffuse:{value:new Tn(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Ut},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Ut}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Ut}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Ut}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Ut},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Ut},normalScale:{value:new Lt(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Ut},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Ut}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Ut}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Ut}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Tn(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Tn(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0},uvTransform:{value:new Ut}},sprite:{diffuse:{value:new Tn(16777215)},opacity:{value:1},center:{value:new Lt(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Ut},alphaMap:{value:null},alphaMapTransform:{value:new Ut},alphaTest:{value:0}}},Ui={basic:{uniforms:ui([Li.common,Li.specularmap,Li.envmap,Li.aomap,Li.lightmap,Li.fog]),vertexShader:Pi.meshbasic_vert,fragmentShader:Pi.meshbasic_frag},lambert:{uniforms:ui([Li.common,Li.specularmap,Li.envmap,Li.aomap,Li.lightmap,Li.emissivemap,Li.bumpmap,Li.normalmap,Li.displacementmap,Li.fog,Li.lights,{emissive:{value:new Tn(0)}}]),vertexShader:Pi.meshlambert_vert,fragmentShader:Pi.meshlambert_frag},phong:{uniforms:ui([Li.common,Li.specularmap,Li.envmap,Li.aomap,Li.lightmap,Li.emissivemap,Li.bumpmap,Li.normalmap,Li.displacementmap,Li.fog,Li.lights,{emissive:{value:new Tn(0)},specular:{value:new Tn(1118481)},shininess:{value:30}}]),vertexShader:Pi.meshphong_vert,fragmentShader:Pi.meshphong_frag},standard:{uniforms:ui([Li.common,Li.envmap,Li.aomap,Li.lightmap,Li.emissivemap,Li.bumpmap,Li.normalmap,Li.displacementmap,Li.roughnessmap,Li.metalnessmap,Li.fog,Li.lights,{emissive:{value:new Tn(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:Pi.meshphysical_vert,fragmentShader:Pi.meshphysical_frag},toon:{uniforms:ui([Li.common,Li.aomap,Li.lightmap,Li.emissivemap,Li.bumpmap,Li.normalmap,Li.displacementmap,Li.gradientmap,Li.fog,Li.lights,{emissive:{value:new Tn(0)}}]),vertexShader:Pi.meshtoon_vert,fragmentShader:Pi.meshtoon_frag},matcap:{uniforms:ui([Li.common,Li.bumpmap,Li.normalmap,Li.displacementmap,Li.fog,{matcap:{value:null}}]),vertexShader:Pi.meshmatcap_vert,fragmentShader:Pi.meshmatcap_frag},points:{uniforms:ui([Li.points,Li.fog]),vertexShader:Pi.points_vert,fragmentShader:Pi.points_frag},dashed:{uniforms:ui([Li.common,Li.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Pi.linedashed_vert,fragmentShader:Pi.linedashed_frag},depth:{uniforms:ui([Li.common,Li.displacementmap]),vertexShader:Pi.depth_vert,fragmentShader:Pi.depth_frag},normal:{uniforms:ui([Li.common,Li.bumpmap,Li.normalmap,Li.displacementmap,{opacity:{value:1}}]),vertexShader:Pi.meshnormal_vert,fragmentShader:Pi.meshnormal_frag},sprite:{uniforms:ui([Li.sprite,Li.fog]),vertexShader:Pi.sprite_vert,fragmentShader:Pi.sprite_frag},background:{uniforms:{uvTransform:{value:new Ut},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:Pi.background_vert,fragmentShader:Pi.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:Pi.backgroundCube_vert,fragmentShader:Pi.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Pi.cube_vert,fragmentShader:Pi.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:Pi.equirect_vert,fragmentShader:Pi.equirect_frag},distanceRGBA:{uniforms:ui([Li.common,Li.displacementmap,{referencePosition:{value:new ae},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:Pi.distanceRGBA_vert,fragmentShader:Pi.distanceRGBA_frag},shadow:{uniforms:ui([Li.lights,Li.fog,{color:{value:new Tn(0)},opacity:{value:1}}]),vertexShader:Pi.shadow_vert,fragmentShader:Pi.shadow_frag}};Ui.physical={uniforms:ui([Ui.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Ut},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Ut},clearcoatNormalScale:{value:new Lt(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Ut},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Ut},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Ut},sheen:{value:0},sheenColor:{value:new Tn(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Ut},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Ut},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Ut},transmissionSamplerSize:{value:new Lt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Ut},attenuationDistance:{value:0},attenuationColor:{value:new Tn(0)},specularColor:{value:new Tn(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Ut},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Ut},anisotropyVector:{value:new Lt},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Ut}}]),vertexShader:Pi.meshphysical_vert,fragmentShader:Pi.meshphysical_frag};const Di={r:0,b:0,g:0};function Ii(t,e,n,i,r,a,s){const o=new Tn(0);let l,c,u=!0===a?0:1,h=null,d=0,p=null;function f(e,n){e.getRGB(Di,hi(t)),i.buffers.color.setClear(Di.r,Di.g,Di.b,n,s)}return{getClearColor:function(){return o},setClearColor:function(t,e=1){o.set(t),u=e,f(o,u)},getClearAlpha:function(){return u},setClearAlpha:function(t){u=t,f(o,u)},render:function(a,m){let g=!1,_=!0===m.isScene?m.background:null;_&&_.isTexture&&(_=(m.backgroundBlurriness>0?n:e).get(_)),null===_?f(o,u):_&&_.isColor&&(f(_,1),g=!0);const v=t.xr.getEnvironmentBlendMode();"additive"===v?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===v&&i.buffers.color.setClear(0,0,0,0,s),(t.autoClear||g)&&t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil),_&&(_.isCubeTexture||_.mapping===T)?(void 0===c&&(c=new si(new li(1,1,1),new pi({name:"BackgroundCubeMaterial",uniforms:ci(Ui.backgroundCube.uniforms),vertexShader:Ui.backgroundCube.vertexShader,fragmentShader:Ui.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(t,e,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(c)),c.material.uniforms.envMap.value=_,c.material.uniforms.flipEnvMap.value=_.isCubeTexture&&!1===_.isRenderTargetTexture?-1:1,c.material.uniforms.backgroundBlurriness.value=m.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,c.material.toneMapped=kt.getTransfer(_.colorSpace)!==rt,h===_&&d===_.version&&p===t.toneMapping||(c.material.needsUpdate=!0,h=_,d=_.version,p=t.toneMapping),c.layers.enableAll(),a.unshift(c,c.geometry,c.material,0,0,null)):_&&_.isTexture&&(void 0===l&&(l=new si(new Ci(2,2),new pi({name:"BackgroundMaterial",uniforms:ci(Ui.background.uniforms),vertexShader:Ui.background.vertexShader,fragmentShader:Ui.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(l)),l.material.uniforms.t2D.value=_,l.material.uniforms.backgroundIntensity.value=m.backgroundIntensity,l.material.toneMapped=kt.getTransfer(_.colorSpace)!==rt,!0===_.matrixAutoUpdate&&_.updateMatrix(),l.material.uniforms.uvTransform.value.copy(_.matrix),h===_&&d===_.version&&p===t.toneMapping||(l.material.needsUpdate=!0,h=_,d=_.version,p=t.toneMapping),l.layers.enableAll(),a.unshift(l,l.geometry,l.material,0,0,null))}}}function Ni(t,e,n,i){const r=t.getParameter(t.MAX_VERTEX_ATTRIBS),a=i.isWebGL2?null:e.get("OES_vertex_array_object"),s=i.isWebGL2||null!==a,o={},l=p(null);let c=l,u=!1;function h(e){return i.isWebGL2?t.bindVertexArray(e):a.bindVertexArrayOES(e)}function d(e){return i.isWebGL2?t.deleteVertexArray(e):a.deleteVertexArrayOES(e)}function p(t){const e=[],n=[],i=[];for(let t=0;t=0){const n=r[e];let i=a[e];if(void 0===i&&("instanceMatrix"===e&&t.instanceMatrix&&(i=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(i=t.instanceColor)),void 0===n)return!0;if(n.attribute!==i)return!0;if(i&&n.data!==i.data)return!0;s++}return c.attributesNum!==s||c.index!==i}(r,x,d,y),M&&function(t,e,n,i){const r={},a=e.attributes;let s=0;const o=n.getAttributes();for(const e in o)if(o[e].location>=0){let n=a[e];void 0===n&&("instanceMatrix"===e&&t.instanceMatrix&&(n=t.instanceMatrix),"instanceColor"===e&&t.instanceColor&&(n=t.instanceColor));const i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[e]=i,s++}c.attributes=r,c.attributesNum=s,c.index=i}(r,x,d,y)}else{const t=!0===l.wireframe;c.geometry===x.id&&c.program===d.id&&c.wireframe===t||(c.geometry=x.id,c.program=d.id,c.wireframe=t,M=!0)}null!==y&&n.update(y,t.ELEMENT_ARRAY_BUFFER),(M||u)&&(u=!1,function(r,a,s,o){if(!1===i.isWebGL2&&(r.isInstancedMesh||o.isInstancedBufferGeometry)&&null===e.get("ANGLE_instanced_arrays"))return;f();const l=o.attributes,c=s.getAttributes(),u=a.defaultAttributeValues;for(const e in c){const a=c[e];if(a.location>=0){let s=l[e];if(void 0===s&&("instanceMatrix"===e&&r.instanceMatrix&&(s=r.instanceMatrix),"instanceColor"===e&&r.instanceColor&&(s=r.instanceColor)),void 0!==s){const e=s.normalized,l=s.itemSize,c=n.get(s);if(void 0===c)continue;const u=c.buffer,h=c.type,d=c.bytesPerElement,p=!0===i.isWebGL2&&(h===t.INT||h===t.UNSIGNED_INT||1013===s.gpuType);if(s.isInterleavedBufferAttribute){const n=s.data,i=n.stride,c=s.offset;if(n.isInstancedInterleavedBuffer){for(let t=0;t0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}const a="undefined"!=typeof WebGL2RenderingContext&&"WebGL2RenderingContext"===t.constructor.name;let s=void 0!==n.precision?n.precision:"highp";const o=r(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);const l=a||e.has("WEBGL_draw_buffers"),c=!0===n.logarithmicDepthBuffer,u=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),h=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),d=t.getParameter(t.MAX_TEXTURE_SIZE),p=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),f=t.getParameter(t.MAX_VERTEX_ATTRIBS),m=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),g=t.getParameter(t.MAX_VARYING_VECTORS),_=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),v=h>0,x=a||e.has("OES_texture_float");return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==i)return i;if(!0===e.has("EXT_texture_filter_anisotropic")){const n=e.get("EXT_texture_filter_anisotropic");i=t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else i=0;return i},getMaxPrecision:r,precision:s,logarithmicDepthBuffer:c,maxTextures:u,maxVertexTextures:h,maxTextureSize:d,maxCubemapSize:p,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:_,vertexTextures:v,floatFragmentTextures:x,floatVertexTextures:v&&x,maxSamples:a?t.getParameter(t.MAX_SAMPLES):0}}function Bi(t){const e=this;let n=null,i=0,r=!1,a=!1;const s=new Ei,o=new Ut,l={value:null,needsUpdate:!1};function c(t,n,i,r){const a=null!==t?t.length:0;let c=null;if(0!==a){if(c=l.value,!0!==r||null===c){const e=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===c||c.length0),e.numPlanes=i,e.numIntersection=0);else{const t=a?0:i,e=4*t;let r=f.clippingState||null;l.value=r,r=c(h,o,e,u);for(let t=0;t!==e;++t)r[t]=n[t];f.clippingState=r,this.numIntersection=d?this.numPlanes:0,this.numPlanes+=t}}}function zi(t){let e=new WeakMap;function n(t,e){return 303===e?t.mapping=S:304===e&&(t.mapping=E),t}function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping;if(303===a||304===a){if(e.has(r))return n(e.get(r).texture,r.mapping);{const a=r.image;if(a&&a.height>0){const s=new xi(a.height/2);return s.fromEquirectangularTexture(t,r),e.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}return null}}}return r},dispose:function(){e=new WeakMap}}}class Hi extends fi{constructor(t=-1,e=1,n=1,i=-1,r=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=null===t.view?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,r,a){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=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2;let r=n-t,a=n+t,s=i+e,o=i-e;if(null!==this.view&&this.view.enabled){const t=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=t*this.view.offsetX,a=r+t*this.view.width,s-=e*this.view.offsetY,o=s-e*this.view.height}this.projectionMatrix.makeOrthographic(r,a,s,o,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){const e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}const Vi=[.125,.215,.35,.446,.526,.582],Gi=new Hi,ki=new Tn;let Wi=null,Xi=0,qi=0;const ji=(1+Math.sqrt(5))/2,Yi=1/ji,Ki=[new ae(1,1,1),new ae(-1,1,1),new ae(1,1,-1),new ae(-1,1,-1),new ae(0,ji,Yi),new ae(0,ji,-Yi),new ae(Yi,0,ji),new ae(-Yi,0,ji),new ae(ji,Yi,0),new ae(-ji,Yi,0)];class Zi{constructor(t){this._renderer=t,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(t,e=0,n=.1,i=100){Wi=this._renderer.getRenderTarget(),Xi=this._renderer.getActiveCubeFace(),qi=this._renderer.getActiveMipmapLevel(),this._setSize(256);const r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(t,n,i,r),e>0&&this._blur(r,0,0,e),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=tr(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Qi(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let t=0;tt-4?o=Vi[s-t+4-1]:0===s&&(o=0),i.push(o);const l=1/(a-2),c=-l,u=1+l,h=[c,c,u,c,u,u,c,c,u,u,c,u],d=6,p=6,f=3,m=2,g=1,_=new Float32Array(f*p*d),v=new Float32Array(m*p*d),x=new Float32Array(g*p*d);for(let t=0;t2?0:-1,i=[e,n,0,e+2/3,n,0,e+2/3,n+1,0,e,n,0,e+2/3,n+1,0,e,n+1,0];_.set(i,f*p*t),v.set(h,m*p*t);const r=[t,t,t,t,t,t];x.set(r,g*p*t)}const y=new Gn;y.setAttribute("position",new Ln(_,f)),y.setAttribute("uv",new Ln(v,m)),y.setAttribute("faceIndex",new Ln(x,g)),e.push(y),r>4&&r--}return{lodPlanes:e,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=function(t,e,n){const i=new Float32Array(20),r=new ae(0,1,0);return new pi({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:"\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",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})}(i,t,e)}return i}_compileMaterial(t){const e=new si(this._lodPlanes[0],t);this._renderer.compile(e,Gi)}_sceneToCubeUV(t,e,n,i){const r=new mi(90,1,e,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,c=o.toneMapping;o.getClearColor(ki),o.toneMapping=0,o.autoClear=!1;const u=new Rn({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),h=new si(new li,u);let d=!1;const p=t.background;p?p.isColor&&(u.color.copy(p),t.background=null,d=!0):(u.color.copy(ki),d=!0);for(let e=0;e<6;e++){const n=e%3;0===n?(r.up.set(0,a[e],0),r.lookAt(s[e],0,0)):1===n?(r.up.set(0,0,a[e]),r.lookAt(0,s[e],0)):(r.up.set(0,a[e],0),r.lookAt(0,0,s[e]));const l=this._cubeSize;$i(i,n*l,e>2?l:0,l,l),o.setRenderTarget(i),d&&o.render(h,r),o.render(t,r)}h.geometry.dispose(),h.material.dispose(),o.toneMapping=c,o.autoClear=l,t.background=p}_textureToCubeUV(t,e){const n=this._renderer,i=t.mapping===S||t.mapping===E;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=tr()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===t.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Qi());const r=i?this._cubemapMaterial:this._equirectMaterial,a=new si(this._lodPlanes[0],r);r.uniforms.envMap.value=t;const s=this._cubeSize;$i(e,0,0,3*s,2*s),n.setRenderTarget(e),n.render(a,Gi)}_applyPMREM(t){const e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let e=1;e20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);const m=[];let g=0;for(let t=0;t<20;++t){const e=t/p,n=Math.exp(-e*e/2);m.push(n),0===t?g+=n:t_-4?i-_+4:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(e),o.render(c,Gi)}}function Ji(t,e,n){const i=new ee(t,e,n);return i.texture.mapping=T,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function $i(t,e,n,i,r){t.viewport.set(e,n,i,r),t.scissor.set(e,n,i,r)}function Qi(){return new pi({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:"\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",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 tr(){return new pi({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:"\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",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 er(t){let e=new WeakMap,n=null;function i(t){const n=t.target;n.removeEventListener("dispose",i);const r=e.get(n);void 0!==r&&(e.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){const a=r.mapping,s=303===a||304===a,o=a===S||a===E;if(s||o){if(r.isRenderTargetTexture&&!0===r.needsPMREMUpdate){r.needsPMREMUpdate=!1;let i=e.get(r);return null===n&&(n=new Zi(t)),i=s?n.fromEquirectangular(r,i):n.fromCubemap(r,i),e.set(r,i),i.texture}if(e.has(r))return e.get(r).texture;{const a=r.image;if(s&&a&&a.height>0||o&&a&&function(t){let e=0;for(let n=0;n<6;n++)void 0!==t[n]&&e++;return 6===e}(a)){null===n&&(n=new Zi(t));const a=s?n.fromEquirectangular(r):n.fromCubemap(r);return e.set(r,a),r.addEventListener("dispose",i),a.texture}return null}}}return r},dispose:function(){e=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function nr(t){const e={};function n(n){if(void 0!==e[n])return e[n];let i;switch(n){case"WEBGL_depth_texture":i=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=t.getExtension(n)}return e[n]=i,i}return{has:function(t){return null!==n(t)},init:function(t){t.isWebGL2?(n("EXT_color_buffer_float"),n("WEBGL_clip_cull_distance")):(n("WEBGL_depth_texture"),n("OES_texture_float"),n("OES_texture_half_float"),n("OES_texture_half_float_linear"),n("OES_standard_derivatives"),n("OES_element_index_uint"),n("OES_vertex_array_object"),n("ANGLE_instanced_arrays")),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture")},get:function(t){const e=n(t);return null===e&&console.warn("THREE.WebGLRenderer: "+t+" extension not supported."),e}}}function ir(t,e,n,i){const r={},a=new WeakMap;function s(t){const o=t.target;null!==o.index&&e.remove(o.index);for(const t in o.attributes)e.remove(o.attributes[t]);for(const t in o.morphAttributes){const n=o.morphAttributes[t];for(let t=0,i=n.length;te.maxTextureSize&&(b=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);const A=new Float32Array(T*b*4*p),w=new ne(A,T,b,p);w.type=F,w.needsUpdate=!0;const R=4*E;for(let P=0;P0)return t;const r=e*n;let a=gr[r];if(void 0===a&&(a=new Float32Array(r),gr[r]=a),0!==e){i.toArray(a,0);for(let i=1,r=0;i!==e;++i)r+=n,t[i].toArray(a,r)}return a}function Sr(t,e){if(t.length!==e.length)return!1;for(let n=0,i=t.length;n":" "} ${r}: ${n[t]}`)}return i.join("\n")}(t.getShaderSource(e),i)}return r}function xa(t,e){const n=function(t){const e=kt.getPrimaries(kt.workingColorSpace),n=kt.getPrimaries(t);let i;switch(e===n?i="":e===st&&n===at?i="LinearDisplayP3ToLinearSRGB":e===at&&n===st&&(i="LinearSRGBToLinearDisplayP3"),t){case tt:case nt:return[i,"LinearTransferOETF"];case Q:case et:return[i,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",t),[i,"LinearTransferOETF"]}}(e);return`vec4 ${t}( vec4 value ) { return ${n[0]}( ${n[1]}( value ) ); }`}function ya(t,e){let n;switch(e){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="OptimizedCineon";break;case 4:n="ACESFilmic";break;case 6:n="AgX";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",e),n="Linear"}return"vec3 "+t+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}function Ma(t){return""!==t}function Sa(t,e){const n=e.numSpotLightShadows+e.numSpotLightMaps-e.numSpotLightShadowsWithMaps;return t.replace(/NUM_DIR_LIGHTS/g,e.numDirLights).replace(/NUM_SPOT_LIGHTS/g,e.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,e.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,e.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,e.numPointLights).replace(/NUM_HEMI_LIGHTS/g,e.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,e.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,e.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,e.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,e.numPointLightShadows)}function Ea(t,e){return t.replace(/NUM_CLIPPING_PLANES/g,e.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,e.numClippingPlanes-e.numClipIntersection)}const Ta=/^[ \t]*#include +<([\w\d./]+)>/gm;function ba(t){return t.replace(Ta,wa)}const Aa=new Map([["encodings_fragment","colorspace_fragment"],["encodings_pars_fragment","colorspace_pars_fragment"],["output_fragment","opaque_fragment"]]);function wa(t,e){let n=Pi[e];if(void 0===n){const t=Aa.get(e);if(void 0===t)throw new Error("Can not resolve #include <"+e+">");n=Pi[t],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',e,t)}return ba(n)}const Ra=/#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 Ca(t){return t.replace(Ra,Pa)}function Pa(t,e,n,i){let r="";for(let t=parseInt(e);t0&&(_+="\n"),v=[p,"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m].filter(Ma).join("\n"),v.length>0&&(v+="\n")):(_=[La(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m,n.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+u:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors&&n.isWebGL2?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0&&n.isWebGL2?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.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_UV1","\tattribute vec2 uv1;","#endif","#ifdef USE_UV2","\tattribute vec2 uv2;","#endif","#ifdef USE_UV3","\tattribute vec2 uv3;","#endif","#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(Ma).join("\n"),v=[p,La(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,m,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+c:"",n.envMap?"#define "+u:"",n.envMap?"#define "+h:"",d?"#define CUBEUV_TEXEL_WIDTH "+d.texelWidth:"",d?"#define CUBEUV_TEXEL_HEIGHT "+d.texelHeight:"",d?"#define CUBEUV_MAX_MIP "+d.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+l:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.useLegacyLights?"#define LEGACY_LIGHTS":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?Pi.tonemapping_pars_fragment:"",0!==n.toneMapping?ya("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",Pi.colorspace_pars_fragment,xa("linearToOutputTexel",n.outputColorSpace),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(Ma).join("\n")),s=ba(s),s=Sa(s,n),s=Ea(s,n),o=ba(o),o=Sa(o,n),o=Ea(o,n),s=Ca(s),o=Ca(o),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(x="#version 300 es\n",_=[f,"precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+_,v=["precision mediump sampler2DArray;","#define varying in",n.glslVersion===gt?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===gt?"":"#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 y=x+_+s,M=x+v+o,b=ga(r,r.VERTEX_SHADER,y),A=ga(r,r.FRAGMENT_SHADER,M);function w(e){if(t.debug.checkShaderErrors){const n=r.getProgramInfoLog(g).trim(),i=r.getShaderInfoLog(b).trim(),a=r.getShaderInfoLog(A).trim();let s=!0,o=!0;if(!1===r.getProgramParameter(g,r.LINK_STATUS))if(s=!1,"function"==typeof t.debug.onShaderError)t.debug.onShaderError(r,g,b,A);else{const t=va(r,b,"vertex"),e=va(r,A,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(g,r.VALIDATE_STATUS)+"\n\nProgram Info Log: "+n+"\n"+t+"\n"+e)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):""!==i&&""!==a||(o=!1);o&&(e.diagnostics={runnable:s,programLog:n,vertexShader:{log:i,prefix:_},fragmentShader:{log:a,prefix:v}})}r.deleteShader(b),r.deleteShader(A),R=new ma(r,g),C=function(t,e){const n={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES);for(let r=0;r0,j=a.clearcoat>0,Y=a.iridescence>0,K=a.sheen>0,Z=a.transmission>0,J=q&&!!a.anisotropyMap,$=j&&!!a.clearcoatMap,Q=j&&!!a.clearcoatNormalMap,et=j&&!!a.clearcoatRoughnessMap,nt=Y&&!!a.iridescenceMap,it=Y&&!!a.iridescenceThicknessMap,at=K&&!!a.sheenColorMap,st=K&&!!a.sheenRoughnessMap,ot=!!a.specularMap,lt=!!a.specularColorMap,ct=!!a.specularIntensityMap,ut=Z&&!!a.transmissionMap,ht=Z&&!!a.thicknessMap,dt=!!a.gradientMap,pt=!!a.alphaMap,ft=a.alphaTest>0,mt=!!a.alphaHash,gt=!!a.extensions,_t=!!x.attributes.uv1,vt=!!x.attributes.uv2,xt=!!x.attributes.uv3;let yt=0;return a.toneMapped&&(null!==U&&!0!==U.isXRRenderTarget||(yt=t.toneMapping)),{isWebGL2:u,shaderID:E,shaderType:a.type,shaderName:a.name,vertexShader:w,fragmentShader:R,defines:a.defines,customVertexShaderID:C,customFragmentShaderID:P,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:p,batching:I,instancing:D,instancingColor:D&&null!==_.instanceColor,supportsVertexTextures:d,outputColorSpace:null===U?t.outputColorSpace:!0===U.isXRRenderTarget?U.texture.colorSpace:tt,map:N,matcap:O,envMap:F,envMapMode:F&&M.mapping,envMapCubeUVHeight:S,aoMap:B,lightMap:z,bumpMap:H,normalMap:V,displacementMap:d&&G,emissiveMap:k,normalMapObjectSpace:V&&1===a.normalMapType,normalMapTangentSpace:V&&0===a.normalMapType,metalnessMap:W,roughnessMap:X,anisotropy:q,anisotropyMap:J,clearcoat:j,clearcoatMap:$,clearcoatNormalMap:Q,clearcoatRoughnessMap:et,iridescence:Y,iridescenceMap:nt,iridescenceThicknessMap:it,sheen:K,sheenColorMap:at,sheenRoughnessMap:st,specularMap:ot,specularColorMap:lt,specularIntensityMap:ct,transmission:Z,transmissionMap:ut,thicknessMap:ht,gradientMap:dt,opaque:!1===a.transparent&&1===a.blending,alphaMap:pt,alphaTest:ft,alphaHash:mt,combine:a.combine,mapUv:N&&m(a.map.channel),aoMapUv:B&&m(a.aoMap.channel),lightMapUv:z&&m(a.lightMap.channel),bumpMapUv:H&&m(a.bumpMap.channel),normalMapUv:V&&m(a.normalMap.channel),displacementMapUv:G&&m(a.displacementMap.channel),emissiveMapUv:k&&m(a.emissiveMap.channel),metalnessMapUv:W&&m(a.metalnessMap.channel),roughnessMapUv:X&&m(a.roughnessMap.channel),anisotropyMapUv:J&&m(a.anisotropyMap.channel),clearcoatMapUv:$&&m(a.clearcoatMap.channel),clearcoatNormalMapUv:Q&&m(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:et&&m(a.clearcoatRoughnessMap.channel),iridescenceMapUv:nt&&m(a.iridescenceMap.channel),iridescenceThicknessMapUv:it&&m(a.iridescenceThicknessMap.channel),sheenColorMapUv:at&&m(a.sheenColorMap.channel),sheenRoughnessMapUv:st&&m(a.sheenRoughnessMap.channel),specularMapUv:ot&&m(a.specularMap.channel),specularColorMapUv:lt&&m(a.specularColorMap.channel),specularIntensityMapUv:ct&&m(a.specularIntensityMap.channel),transmissionMapUv:ut&&m(a.transmissionMap.channel),thicknessMapUv:ht&&m(a.thicknessMap.channel),alphaMapUv:pt&&m(a.alphaMap.channel),vertexTangents:!!x.attributes.tangent&&(V||q),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!x.attributes.color&&4===x.attributes.color.itemSize,vertexUv1s:_t,vertexUv2s:vt,vertexUv3s:xt,pointsUvs:!0===_.isPoints&&!!x.attributes.uv&&(N||pt),fog:!!v,useFog:!0===a.fog,fogExp2:v&&v.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:h,skinning:!0===_.isSkinnedMesh,morphTargets:void 0!==x.morphAttributes.position,morphNormals:void 0!==x.morphAttributes.normal,morphColors:void 0!==x.morphAttributes.color,morphTargetsCount:A,morphTextureStride:L,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&c.length>0,shadowMapType:t.shadowMap.type,toneMapping:yt,useLegacyLights:t._useLegacyLights,decodeVideoTexture:N&&!0===a.map.isVideoTexture&&kt.getTransfer(a.map.colorSpace)===rt,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:1===a.side,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionDerivatives:gt&&!0===a.extensions.derivatives,extensionFragDepth:gt&&!0===a.extensions.fragDepth,extensionDrawBuffers:gt&&!0===a.extensions.drawBuffers,extensionShaderTextureLOD:gt&&!0===a.extensions.shaderTextureLOD,extensionClipCullDistance:gt&&a.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()}},getProgramCacheKey:function(e){const n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),void 0!==e.defines)for(const t in e.defines)n.push(t),n.push(e.defines[t]);return!1===e.isRawShaderMaterial&&(function(t,e){t.push(e.precision),t.push(e.outputColorSpace),t.push(e.envMapMode),t.push(e.envMapCubeUVHeight),t.push(e.mapUv),t.push(e.alphaMapUv),t.push(e.lightMapUv),t.push(e.aoMapUv),t.push(e.bumpMapUv),t.push(e.normalMapUv),t.push(e.displacementMapUv),t.push(e.emissiveMapUv),t.push(e.metalnessMapUv),t.push(e.roughnessMapUv),t.push(e.anisotropyMapUv),t.push(e.clearcoatMapUv),t.push(e.clearcoatNormalMapUv),t.push(e.clearcoatRoughnessMapUv),t.push(e.iridescenceMapUv),t.push(e.iridescenceThicknessMapUv),t.push(e.sheenColorMapUv),t.push(e.sheenRoughnessMapUv),t.push(e.specularMapUv),t.push(e.specularColorMapUv),t.push(e.specularIntensityMapUv),t.push(e.transmissionMapUv),t.push(e.thicknessMapUv),t.push(e.combine),t.push(e.fogExp2),t.push(e.sizeAttenuation),t.push(e.morphTargetsCount),t.push(e.morphAttributeCount),t.push(e.numDirLights),t.push(e.numPointLights),t.push(e.numSpotLights),t.push(e.numSpotLightMaps),t.push(e.numHemiLights),t.push(e.numRectAreaLights),t.push(e.numDirLightShadows),t.push(e.numPointLightShadows),t.push(e.numSpotLightShadows),t.push(e.numSpotLightShadowsWithMaps),t.push(e.numLightProbes),t.push(e.shadowMapType),t.push(e.toneMapping),t.push(e.numClippingPlanes),t.push(e.numClipIntersection),t.push(e.depthPacking)}(n,e),function(t,e){o.disableAll(),e.isWebGL2&&o.enable(0),e.supportsVertexTextures&&o.enable(1),e.instancing&&o.enable(2),e.instancingColor&&o.enable(3),e.matcap&&o.enable(4),e.envMap&&o.enable(5),e.normalMapObjectSpace&&o.enable(6),e.normalMapTangentSpace&&o.enable(7),e.clearcoat&&o.enable(8),e.iridescence&&o.enable(9),e.alphaTest&&o.enable(10),e.vertexColors&&o.enable(11),e.vertexAlphas&&o.enable(12),e.vertexUv1s&&o.enable(13),e.vertexUv2s&&o.enable(14),e.vertexUv3s&&o.enable(15),e.vertexTangents&&o.enable(16),e.anisotropy&&o.enable(17),e.alphaHash&&o.enable(18),e.batching&&o.enable(19),t.push(o.mask),o.disableAll(),e.fog&&o.enable(0),e.useFog&&o.enable(1),e.flatShading&&o.enable(2),e.logarithmicDepthBuffer&&o.enable(3),e.skinning&&o.enable(4),e.morphTargets&&o.enable(5),e.morphNormals&&o.enable(6),e.morphColors&&o.enable(7),e.premultipliedAlpha&&o.enable(8),e.shadowMapEnabled&&o.enable(9),e.useLegacyLights&&o.enable(10),e.doubleSided&&o.enable(11),e.flipSided&&o.enable(12),e.useDepthPacking&&o.enable(13),e.dithering&&o.enable(14),e.transmission&&o.enable(15),e.sheen&&o.enable(16),e.opaque&&o.enable(17),e.pointsUvs&&o.enable(18),e.decodeVideoTexture&&o.enable(19),t.push(o.mask)}(n,e),n.push(t.outputColorSpace)),n.push(e.customProgramCacheKey),n.join()},getUniforms:function(t){const e=f[t.type];let n;if(e){const t=Ui[e];n=di.clone(t.uniforms)}else n=t.uniforms;return n},acquireProgram:function(e,n){let i;for(let t=0,e=c.length;t0?i.push(u):!0===s.transparent?r.push(u):n.push(u)},unshift:function(t,e,s,o,l,c){const u=a(t,e,s,o,l,c);s.transmission>0?i.unshift(u):!0===s.transparent?r.unshift(u):n.unshift(u)},finish:function(){for(let n=e,i=t.length;n1&&n.sort(t||Ba),i.length>1&&i.sort(e||za),r.length>1&&r.sort(e||za)}}}function Va(){let t=new WeakMap;return{get:function(e,n){const i=t.get(e);let r;return void 0===i?(r=new Ha,t.set(e,[r])):n>=i.length?(r=new Ha,i.push(r)):r=i[n],r},dispose:function(){t=new WeakMap}}}function Ga(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":n={direction:new ae,color:new Tn};break;case"SpotLight":n={position:new ae,direction:new ae,color:new Tn,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new ae,color:new Tn,distance:0,decay:0};break;case"HemisphereLight":n={direction:new ae,skyColor:new Tn,groundColor:new Tn};break;case"RectAreaLight":n={color:new Tn,position:new ae,halfWidth:new ae,halfHeight:new ae}}return t[e.id]=n,n}}}let ka=0;function Wa(t,e){return(e.castShadow?2:0)-(t.castShadow?2:0)+(e.map?1:0)-(t.map?1:0)}function Xa(t,e){const n=new Ga,i=function(){const t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];let n;switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Lt};break;case"PointLight":n={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Lt,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}}(),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let t=0;t<9;t++)r.probe.push(new ae);const a=new ae,s=new Ne,o=new Ne;return{setup:function(a,s){let o=0,l=0,c=0;for(let t=0;t<9;t++)r.probe[t].set(0,0,0);let u=0,h=0,d=0,p=0,f=0,m=0,g=0,_=0,v=0,x=0,y=0;a.sort(Wa);const M=!0===s?Math.PI:1;for(let t=0,e=a.length;t0&&(e.isWebGL2?!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=Li.LTC_FLOAT_1,r.rectAreaLTC2=Li.LTC_FLOAT_2):(r.rectAreaLTC1=Li.LTC_HALF_1,r.rectAreaLTC2=Li.LTC_HALF_2):!0===t.has("OES_texture_float_linear")?(r.rectAreaLTC1=Li.LTC_FLOAT_1,r.rectAreaLTC2=Li.LTC_FLOAT_2):!0===t.has("OES_texture_half_float_linear")?(r.rectAreaLTC1=Li.LTC_HALF_1,r.rectAreaLTC2=Li.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 S=r.hash;S.directionalLength===u&&S.pointLength===h&&S.spotLength===d&&S.rectAreaLength===p&&S.hemiLength===f&&S.numDirectionalShadows===m&&S.numPointShadows===g&&S.numSpotShadows===_&&S.numSpotMaps===v&&S.numLightProbes===y||(r.directional.length=u,r.spot.length=d,r.rectArea.length=p,r.point.length=h,r.hemi.length=f,r.directionalShadow.length=m,r.directionalShadowMap.length=m,r.pointShadow.length=g,r.pointShadowMap.length=g,r.spotShadow.length=_,r.spotShadowMap.length=_,r.directionalShadowMatrix.length=m,r.pointShadowMatrix.length=g,r.spotLightMatrix.length=_+v-x,r.spotLightMap.length=v,r.numSpotLightShadowsWithMaps=x,r.numLightProbes=y,S.directionalLength=u,S.pointLength=h,S.spotLength=d,S.rectAreaLength=p,S.hemiLength=f,S.numDirectionalShadows=m,S.numPointShadows=g,S.numSpotShadows=_,S.numSpotMaps=v,S.numLightProbes=y,r.version=ka++)},setupView:function(t,e){let n=0,i=0,l=0,c=0,u=0;const h=e.matrixWorldInverse;for(let e=0,d=t.length;e=a.length?(s=new qa(t,e),a.push(s)):s=a[r],s},dispose:function(){n=new WeakMap}}}class Ya extends wn{constructor(t){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(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}}class Ka extends wn{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}}function Za(t,r,a){let s=new Ai;const o=new Lt,l=new Lt,c=new Qt,u=new Ya({depthPacking:3201}),h=new Ka,d={},p=a.maxTextureSize,f={[e]:1,[n]:0,[i]:2},m=new pi({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Lt},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}"}),g=m.clone();g.defines.HORIZONTAL_PASS=1;const _=new Gn;_.setAttribute("position",new Ln(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const v=new si(_,m),x=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let y=this.type;function M(e,n){const i=r.update(v);m.defines.VSM_SAMPLES!==e.blurSamples&&(m.defines.VSM_SAMPLES=e.blurSamples,g.defines.VSM_SAMPLES=e.blurSamples,m.needsUpdate=!0,g.needsUpdate=!0),null===e.mapPass&&(e.mapPass=new ee(o.x,o.y)),m.uniforms.shadow_pass.value=e.map.texture,m.uniforms.resolution.value=e.mapSize,m.uniforms.radius.value=e.radius,t.setRenderTarget(e.mapPass),t.clear(),t.renderBufferDirect(n,null,i,m,v,null),g.uniforms.shadow_pass.value=e.mapPass.texture,g.uniforms.resolution.value=e.mapSize,g.uniforms.radius.value=e.radius,t.setRenderTarget(e.map),t.clear(),t.renderBufferDirect(n,null,i,g,v,null)}function S(e,n,i,r){let a=null;const s=!0===i.isPointLight?e.customDistanceMaterial:e.customDepthMaterial;if(void 0!==s)a=s;else if(a=!0===i.isPointLight?h:u,t.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){const t=a.uuid,e=n.uuid;let i=d[t];void 0===i&&(i={},d[t]=i);let r=i[e];void 0===r&&(r=a.clone(),i[e]=r,n.addEventListener("dispose",T)),a=r}return a.visible=n.visible,a.wireframe=n.wireframe,a.side=3===r?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:f[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial&&(t.properties.get(a).light=i),a}function E(e,n,i,a,o){if(!1===e.visible)return;if(e.layers.test(n.layers)&&(e.isMesh||e.isLine||e.isPoints)&&(e.castShadow||e.receiveShadow&&3===o)&&(!e.frustumCulled||s.intersectsObject(e))){e.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,e.matrixWorld);const s=r.update(e),l=e.material;if(Array.isArray(l)){const r=s.groups;for(let c=0,u=r.length;cp||o.y>p)&&(o.x>p&&(l.x=Math.floor(p/m.x),o.x=l.x*m.x,u.mapSize.x=l.x),o.y>p&&(l.y=Math.floor(p/m.y),o.y=l.y*m.y,u.mapSize.y=l.y)),null===u.map||!0===d||!0===f){const t=3!==this.type?{minFilter:R,magFilter:R}:{};null!==u.map&&u.map.dispose(),u.map=new ee(o.x,o.y,t),u.map.texture.name=a.name+".shadowMap",u.camera.updateProjectionMatrix()}t.setRenderTarget(u.map),t.clear();const g=u.getViewportCount();for(let t=0;t=1):-1!==J.indexOf("OpenGL ES")&&(Z=parseFloat(/^OpenGL ES (\d)/.exec(J)[1]),K=Z>=2);let $=null,Q={};const tt=t.getParameter(t.SCISSOR_BOX),et=t.getParameter(t.VIEWPORT),nt=(new Qt).fromArray(tt),it=(new Qt).fromArray(et);function rt(e,n,r,a){const s=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;oi||t.height>i)&&(r=i/Math.max(t.width,t.height)),r<1||!0===e){if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&t instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap){const i=e?Rt:Math.floor,a=i(r*t.width),s=i(r*t.height);void 0===h&&(h=f(a,s));const o=n?f(a,s):h;return o.width=a,o.height=s,o.getContext("2d").drawImage(t,0,0,a,s),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+t.width+"x"+t.height+") to ("+a+"x"+s+")."),o}return"data"in t&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+t.width+"x"+t.height+")."),t}return t}function g(t){return wt(t.width)&&wt(t.height)}function _(t,e){return t.generateMipmaps&&e&&t.minFilter!==R&&t.minFilter!==L}function v(e){t.generateMipmap(e)}function x(n,i,r,a,s=!1){if(!1===o)return i;if(null!==n){if(void 0!==t[n])return t[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let l=i;if(i===t.RED&&(r===t.FLOAT&&(l=t.R32F),r===t.HALF_FLOAT&&(l=t.R16F),r===t.UNSIGNED_BYTE&&(l=t.R8)),i===t.RED_INTEGER&&(r===t.UNSIGNED_BYTE&&(l=t.R8UI),r===t.UNSIGNED_SHORT&&(l=t.R16UI),r===t.UNSIGNED_INT&&(l=t.R32UI),r===t.BYTE&&(l=t.R8I),r===t.SHORT&&(l=t.R16I),r===t.INT&&(l=t.R32I)),i===t.RG&&(r===t.FLOAT&&(l=t.RG32F),r===t.HALF_FLOAT&&(l=t.RG16F),r===t.UNSIGNED_BYTE&&(l=t.RG8)),i===t.RGBA){const e=s?it:kt.getTransfer(a);r===t.FLOAT&&(l=t.RGBA32F),r===t.HALF_FLOAT&&(l=t.RGBA16F),r===t.UNSIGNED_BYTE&&(l=e===rt?t.SRGB8_ALPHA8:t.RGBA8),r===t.UNSIGNED_SHORT_4_4_4_4&&(l=t.RGBA4),r===t.UNSIGNED_SHORT_5_5_5_1&&(l=t.RGB5_A1)}return l!==t.R16F&&l!==t.R32F&&l!==t.RG16F&&l!==t.RG32F&&l!==t.RGBA16F&&l!==t.RGBA32F||e.get("EXT_color_buffer_float"),l}function y(t,e,n){return!0===_(t,n)||t.isFramebufferTexture&&t.minFilter!==R&&t.minFilter!==L?Math.log2(Math.max(e.width,e.height))+1:void 0!==t.mipmaps&&t.mipmaps.length>0?t.mipmaps.length:t.isCompressedTexture&&Array.isArray(t.image)?e.mipmaps.length:1}function M(e){return e===R||1004===e||e===P?t.NEAREST:t.LINEAR}function S(t){const e=t.target;e.removeEventListener("dispose",S),function(t){const e=i.get(t);if(void 0===e.__webglInit)return;const n=t.source,r=d.get(n);if(r){const i=r[e.__cacheKey];i.usedTimes--,0===i.usedTimes&&T(t),0===Object.keys(r).length&&d.delete(n)}i.remove(t)}(e),e.isVideoTexture&&u.delete(e)}function E(e){const n=e.target;n.removeEventListener("dispose",E),function(e){const n=e.texture,r=i.get(e),a=i.get(n);if(void 0!==a.__webglTexture&&(t.deleteTexture(a.__webglTexture),s.memory.textures--),e.depthTexture&&e.depthTexture.dispose(),e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(r.__webglFramebuffer[e]))for(let n=0;n0&&a.__version!==e.version){const t=e.image;if(null===t)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==t.complete)return void Z(a,e,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(t.TEXTURE_2D,a.__webglTexture,t.TEXTURE0+r)}const X={[b]:t.REPEAT,[A]:t.CLAMP_TO_EDGE,[w]:t.MIRRORED_REPEAT},q={[R]:t.NEAREST,[C]:t.NEAREST_MIPMAP_NEAREST,[P]:t.NEAREST_MIPMAP_LINEAR,[L]:t.LINEAR,[U]:t.LINEAR_MIPMAP_NEAREST,[D]:t.LINEAR_MIPMAP_LINEAR},j={[lt]:t.NEVER,[mt]:t.ALWAYS,[ct]:t.LESS,[ht]:t.LEQUAL,[ut]:t.EQUAL,[ft]:t.GEQUAL,[dt]:t.GREATER,[pt]:t.NOTEQUAL};function Y(n,a,s){if(s?(t.texParameteri(n,t.TEXTURE_WRAP_S,X[a.wrapS]),t.texParameteri(n,t.TEXTURE_WRAP_T,X[a.wrapT]),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,X[a.wrapR]),t.texParameteri(n,t.TEXTURE_MAG_FILTER,q[a.magFilter]),t.texParameteri(n,t.TEXTURE_MIN_FILTER,q[a.minFilter])):(t.texParameteri(n,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(n,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),n!==t.TEXTURE_3D&&n!==t.TEXTURE_2D_ARRAY||t.texParameteri(n,t.TEXTURE_WRAP_R,t.CLAMP_TO_EDGE),a.wrapS===A&&a.wrapT===A||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),t.texParameteri(n,t.TEXTURE_MAG_FILTER,M(a.magFilter)),t.texParameteri(n,t.TEXTURE_MIN_FILTER,M(a.minFilter)),a.minFilter!==R&&a.minFilter!==L&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),a.compareFunction&&(t.texParameteri(n,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(n,t.TEXTURE_COMPARE_FUNC,j[a.compareFunction])),!0===e.has("EXT_texture_filter_anisotropic")){const s=e.get("EXT_texture_filter_anisotropic");if(a.magFilter===R)return;if(a.minFilter!==P&&a.minFilter!==D)return;if(a.type===F&&!1===e.has("OES_texture_float_linear"))return;if(!1===o&&a.type===B&&!1===e.has("OES_texture_half_float_linear"))return;(a.anisotropy>1||i.get(a).__currentAnisotropy)&&(t.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy)}}function K(e,n){let i=!1;void 0===e.__webglInit&&(e.__webglInit=!0,n.addEventListener("dispose",S));const r=n.source;let a=d.get(r);void 0===a&&(a={},d.set(r,a));const o=function(t){const e=[];return e.push(t.wrapS),e.push(t.wrapT),e.push(t.wrapR||0),e.push(t.magFilter),e.push(t.minFilter),e.push(t.anisotropy),e.push(t.internalFormat),e.push(t.format),e.push(t.type),e.push(t.generateMipmaps),e.push(t.premultiplyAlpha),e.push(t.flipY),e.push(t.unpackAlignment),e.push(t.colorSpace),e.join()}(n);if(o!==e.__cacheKey){void 0===a[o]&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,i=!0),a[o].usedTimes++;const r=a[e.__cacheKey];void 0!==r&&(a[e.__cacheKey].usedTimes--,0===r.usedTimes&&T(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return i}function Z(e,s,l){let c=t.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(c=t.TEXTURE_2D_ARRAY),s.isData3DTexture&&(c=t.TEXTURE_3D);const u=K(e,s),h=s.source;n.bindTexture(c,e.__webglTexture,t.TEXTURE0+l);const d=i.get(h);if(h.version!==d.__version||!0===u){n.activeTexture(t.TEXTURE0+l);const e=kt.getPrimaries(kt.workingColorSpace),i=s.colorSpace===$?null:kt.getPrimaries(s.colorSpace),p=s.colorSpace===$||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);const f=function(t){return!o&&(t.wrapS!==A||t.wrapT!==A||t.minFilter!==R&&t.minFilter!==L)}(s)&&!1===g(s.image);let M=m(s.image,f,!1,r.maxTextureSize);M=st(s,M);const S=g(M)||o,E=a.convert(s.format,s.colorSpace);let T,b=a.convert(s.type),w=x(s.internalFormat,E,b,s.colorSpace,s.isVideoTexture);Y(c,s,S);const C=s.mipmaps,P=o&&!0!==s.isVideoTexture&&36196!==w,U=void 0===d.__version||!0===u,D=y(s,M,S);if(s.isDepthTexture)w=t.DEPTH_COMPONENT,o?w=s.type===F?t.DEPTH_COMPONENT32F:s.type===O?t.DEPTH_COMPONENT24:s.type===z?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT16:s.type===F&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),s.format===V&&w===t.DEPTH_COMPONENT&&s.type!==N&&s.type!==O&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),s.type=O,b=a.convert(s.type)),s.format===G&&w===t.DEPTH_COMPONENT&&(w=t.DEPTH_STENCIL,s.type!==z&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),s.type=z,b=a.convert(s.type))),U&&(P?n.texStorage2D(t.TEXTURE_2D,1,w,M.width,M.height):n.texImage2D(t.TEXTURE_2D,0,w,M.width,M.height,0,E,b,null));else if(s.isDataTexture)if(C.length>0&&S){P&&U&&n.texStorage2D(t.TEXTURE_2D,D,w,C[0].width,C[0].height);for(let e=0,i=C.length;e>=1,i>>=1}}else if(C.length>0&&S){P&&U&&n.texStorage2D(t.TEXTURE_2D,D,w,C[0].width,C[0].height);for(let e=0,i=C.length;e>u),i=Math.max(1,r.height>>u);c===t.TEXTURE_3D||c===t.TEXTURE_2D_ARRAY?n.texImage3D(c,u,p,e,i,r.depth,0,h,d,null):n.texImage2D(c,u,p,e,i,0,h,d,null)}n.bindFramebuffer(t.FRAMEBUFFER,e),at(r)?l.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,o,c,i.get(s).__webglTexture,0,nt(r)):(c===t.TEXTURE_2D||c>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&c<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,o,c,i.get(s).__webglTexture,u),n.bindFramebuffer(t.FRAMEBUFFER,null)}function Q(e,n,i){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer&&!n.stencilBuffer){let r=!0===o?t.DEPTH_COMPONENT24:t.DEPTH_COMPONENT16;if(i||at(n)){const e=n.depthTexture;e&&e.isDepthTexture&&(e.type===F?r=t.DEPTH_COMPONENT32F:e.type===O&&(r=t.DEPTH_COMPONENT24));const i=nt(n);at(n)?l.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,i,r,n.width,n.height):t.renderbufferStorageMultisample(t.RENDERBUFFER,i,r,n.width,n.height)}else t.renderbufferStorage(t.RENDERBUFFER,r,n.width,n.height);t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e)}else if(n.depthBuffer&&n.stencilBuffer){const r=nt(n);i&&!1===at(n)?t.renderbufferStorageMultisample(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):at(n)?l.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,r,t.DEPTH24_STENCIL8,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e)}else{const e=!0===n.isWebGLMultipleRenderTargets?n.texture:[n.texture];for(let r=0;r0&&!0===e.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function st(t,n){const i=t.colorSpace,r=t.format,a=t.type;return!0===t.isCompressedTexture||!0===t.isVideoTexture||t.format===_t||i!==tt&&i!==$&&(kt.getTransfer(i)===rt?!1===o?!0===e.has("EXT_sRGB")&&r===H?(t.format=_t,t.minFilter=L,t.generateMipmaps=!1):n=jt.sRGBToLinear(n):r===H&&a===I||console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",i)),n}this.allocateTextureUnit=function(){const t=k;return t>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+t+" texture units while this GPU supports only "+r.maxTextures),k+=1,t},this.resetTextureUnits=function(){k=0},this.setTexture2D=W,this.setTexture2DArray=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?Z(a,e,r):n.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+r)},this.setTexture3D=function(e,r){const a=i.get(e);e.version>0&&a.__version!==e.version?Z(a,e,r):n.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+r)},this.setTextureCube=function(e,s){const l=i.get(e);e.version>0&&l.__version!==e.version?function(e,s,l){if(6!==s.image.length)return;const c=K(e,s),u=s.source;n.bindTexture(t.TEXTURE_CUBE_MAP,e.__webglTexture,t.TEXTURE0+l);const h=i.get(u);if(u.version!==h.__version||!0===c){n.activeTexture(t.TEXTURE0+l);const e=kt.getPrimaries(kt.workingColorSpace),i=s.colorSpace===$?null:kt.getPrimaries(s.colorSpace),d=s.colorSpace===$||e===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);const p=s.isCompressedTexture||s.image[0].isCompressedTexture,f=s.image[0]&&s.image[0].isDataTexture,M=[];for(let t=0;t<6;t++)M[t]=p||f?f?s.image[t].image:s.image[t]:m(s.image[t],!1,!0,r.maxCubemapSize),M[t]=st(s,M[t]);const S=M[0],E=g(S)||o,T=a.convert(s.format,s.colorSpace),b=a.convert(s.type),A=x(s.internalFormat,T,b,s.colorSpace),w=o&&!0!==s.isVideoTexture,R=void 0===h.__version||!0===c;let C,P=y(s,S,E);if(Y(t.TEXTURE_CUBE_MAP,s,E),p){w&&R&&n.texStorage2D(t.TEXTURE_CUBE_MAP,P,A,S.width,S.height);for(let e=0;e<6;e++){C=M[e].mipmaps;for(let i=0;i0&&P++,n.texStorage2D(t.TEXTURE_CUBE_MAP,P,A,M[0].width,M[0].height));for(let e=0;e<6;e++)if(f){w?n.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,M[e].width,M[e].height,T,b,M[e].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,A,M[e].width,M[e].height,0,T,b,M[e].data);for(let i=0;i0){c.__webglFramebuffer[e]=[];for(let n=0;n0){c.__webglFramebuffer=[];for(let e=0;e0&&!1===at(e)){const i=d?l:[l];c.__webglMultisampledFramebuffer=t.createFramebuffer(),c.__webglColorRenderbuffer=[],n.bindFramebuffer(t.FRAMEBUFFER,c.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0&&!1===at(e)){const r=e.isWebGLMultipleRenderTargets?e.texture:[e.texture],a=e.width,s=e.height;let o=t.COLOR_BUFFER_BIT;const l=[],u=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,h=i.get(e),d=!0===e.isWebGLMultipleRenderTargets;if(d)for(let e=0;eo+c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&s<=o-c&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else null!==o&&t.gripSpace&&(r=e.getPose(t.gripSpace,n),null!==r&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,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!==s&&(i=e.getPose(t.targetRaySpace,n),null===i&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(ns)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(t,e){if(void 0===t.joints[e.jointName]){const n=new es;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}}class rs extends yt{constructor(t,e){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,c=null,u=null,h=null,d=null,p=null;const f=e.getContextAttributes();let m=null,g=null;const _=[],v=[],x=new Lt;let y=null;const M=new mi;M.layers.enable(1),M.viewport=new Qt;const S=new mi;S.layers.enable(2),S.viewport=new Qt;const E=[M,S],T=new ts;T.layers.enable(1),T.layers.enable(2);let b=null,A=null;function w(t){const e=v.indexOf(t.inputSource);if(-1===e)return;const n=_[e];void 0!==n&&(n.update(t.inputSource,t.frame,l||a),n.dispatchEvent({type:t.type,data:t.inputSource}))}function R(){i.removeEventListener("select",w),i.removeEventListener("selectstart",w),i.removeEventListener("selectend",w),i.removeEventListener("squeeze",w),i.removeEventListener("squeezestart",w),i.removeEventListener("squeezeend",w),i.removeEventListener("end",R),i.removeEventListener("inputsourceschange",C);for(let t=0;t<_.length;t++){const e=v[t];null!==e&&(v[t]=null,_[t].disconnect(e))}b=null,A=null,t.setRenderTarget(m),d=null,h=null,u=null,i=null,g=null,N.stop(),n.isPresenting=!1,t.setPixelRatio(y),t.setSize(x.width,x.height,!1),n.dispatchEvent({type:"sessionend"})}function C(t){for(let e=0;e=0&&(v[i]=null,_[i].disconnect(n))}for(let e=0;e=v.length){v.push(n),i=t;break}if(null===v[t]){v[t]=n,i=t;break}}if(-1===i)break}const r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let e=_[t];return void 0===e&&(e=new is,_[t]=e),e.getTargetRaySpace()},this.getControllerGrip=function(t){let e=_[t];return void 0===e&&(e=new is,_[t]=e),e.getGripSpace()},this.getHand=function(t){let e=_[t];return void 0===e&&(e=new is,_[t]=e),e.getHandSpace()},this.setFramebufferScaleFactor=function(t){r=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(t){s=t,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(t){l=t},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return u},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(c){if(i=c,null!==i){if(m=t.getRenderTarget(),i.addEventListener("select",w),i.addEventListener("selectstart",w),i.addEventListener("selectend",w),i.addEventListener("squeeze",w),i.addEventListener("squeezestart",w),i.addEventListener("squeezeend",w),i.addEventListener("end",R),i.addEventListener("inputsourceschange",C),!0!==f.xrCompatible&&await e.makeXRCompatible(),y=t.getPixelRatio(),t.getSize(x),void 0===i.renderState.layers||!1===t.capabilities.isWebGL2){const n={antialias:void 0!==i.renderState.layers||f.antialias,alpha:!0,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,e,n),i.updateRenderState({baseLayer:d}),t.setPixelRatio(1),t.setSize(d.framebufferWidth,d.framebufferHeight,!1),g=new ee(d.framebufferWidth,d.framebufferHeight,{format:H,type:I,colorSpace:t.outputColorSpace,stencilBuffer:f.stencil})}else{let n=null,a=null,s=null;f.depth&&(s=f.stencil?e.DEPTH24_STENCIL8:e.DEPTH_COMPONENT24,n=f.stencil?G:V,a=f.stencil?z:O);const o={colorFormat:e.RGBA8,depthFormat:s,scaleFactor:r};u=new XRWebGLBinding(i,e),h=u.createProjectionLayer(o),i.updateRenderState({layers:[h]}),t.setPixelRatio(1),t.setSize(h.textureWidth,h.textureHeight,!1),g=new ee(h.textureWidth,h.textureHeight,{format:H,type:I,depthTexture:new ur(h.textureWidth,h.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:f.stencil,colorSpace:t.outputColorSpace,samples:f.antialias?4:0}),t.properties.get(g).__ignoreDepthValues=h.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),N.setContext(i),N.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode};const P=new ae,L=new ae;function U(t,e){null===e?t.matrixWorld.copy(t.matrix):t.matrixWorld.multiplyMatrices(e.matrixWorld,t.matrix),t.matrixWorldInverse.copy(t.matrixWorld).invert()}this.updateCamera=function(t){if(null===i)return;T.near=S.near=M.near=t.near,T.far=S.far=M.far=t.far,b===T.near&&A===T.far||(i.updateRenderState({depthNear:T.near,depthFar:T.far}),b=T.near,A=T.far);const e=t.parent,n=T.cameras;U(T,e);for(let t=0;t0&&(i.alphaTest.value=r.alphaTest);const a=e.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;const e=!0===t._useLegacyLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*e,n(r.lightMap,i.lightMapTransform)}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity,n(r.aoMap,i.aoMapTransform))}return{refreshFogUniforms:function(e,n){n.color.getRGB(e.fogColor.value,hi(t)),n.isFog?(e.fogNear.value=n.near,e.fogFar.value=n.far):n.isFogExp2&&(e.fogDensity.value=n.density)},refreshMaterialUniforms:function(t,r,a,s,o){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(t,r):r.isMeshToonMaterial?(i(t,r),function(t,e){e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(t,r)):r.isMeshPhongMaterial?(i(t,r),function(t,e){t.specular.value.copy(e.specular),t.shininess.value=Math.max(e.shininess,1e-4)}(t,r)):r.isMeshStandardMaterial?(i(t,r),function(t,i){t.metalness.value=i.metalness,i.metalnessMap&&(t.metalnessMap.value=i.metalnessMap,n(i.metalnessMap,t.metalnessMapTransform)),t.roughness.value=i.roughness,i.roughnessMap&&(t.roughnessMap.value=i.roughnessMap,n(i.roughnessMap,t.roughnessMapTransform));e.get(i).envMap&&(t.envMapIntensity.value=i.envMapIntensity)}(t,r),r.isMeshPhysicalMaterial&&function(t,e,i){t.ior.value=e.ior,e.sheen>0&&(t.sheenColor.value.copy(e.sheenColor).multiplyScalar(e.sheen),t.sheenRoughness.value=e.sheenRoughness,e.sheenColorMap&&(t.sheenColorMap.value=e.sheenColorMap,n(e.sheenColorMap,t.sheenColorMapTransform)),e.sheenRoughnessMap&&(t.sheenRoughnessMap.value=e.sheenRoughnessMap,n(e.sheenRoughnessMap,t.sheenRoughnessMapTransform))),e.clearcoat>0&&(t.clearcoat.value=e.clearcoat,t.clearcoatRoughness.value=e.clearcoatRoughness,e.clearcoatMap&&(t.clearcoatMap.value=e.clearcoatMap,n(e.clearcoatMap,t.clearcoatMapTransform)),e.clearcoatRoughnessMap&&(t.clearcoatRoughnessMap.value=e.clearcoatRoughnessMap,n(e.clearcoatRoughnessMap,t.clearcoatRoughnessMapTransform)),e.clearcoatNormalMap&&(t.clearcoatNormalMap.value=e.clearcoatNormalMap,n(e.clearcoatNormalMap,t.clearcoatNormalMapTransform),t.clearcoatNormalScale.value.copy(e.clearcoatNormalScale),1===e.side&&t.clearcoatNormalScale.value.negate())),e.iridescence>0&&(t.iridescence.value=e.iridescence,t.iridescenceIOR.value=e.iridescenceIOR,t.iridescenceThicknessMinimum.value=e.iridescenceThicknessRange[0],t.iridescenceThicknessMaximum.value=e.iridescenceThicknessRange[1],e.iridescenceMap&&(t.iridescenceMap.value=e.iridescenceMap,n(e.iridescenceMap,t.iridescenceMapTransform)),e.iridescenceThicknessMap&&(t.iridescenceThicknessMap.value=e.iridescenceThicknessMap,n(e.iridescenceThicknessMap,t.iridescenceThicknessMapTransform))),e.transmission>0&&(t.transmission.value=e.transmission,t.transmissionSamplerMap.value=i.texture,t.transmissionSamplerSize.value.set(i.width,i.height),e.transmissionMap&&(t.transmissionMap.value=e.transmissionMap,n(e.transmissionMap,t.transmissionMapTransform)),t.thickness.value=e.thickness,e.thicknessMap&&(t.thicknessMap.value=e.thicknessMap,n(e.thicknessMap,t.thicknessMapTransform)),t.attenuationDistance.value=e.attenuationDistance,t.attenuationColor.value.copy(e.attenuationColor)),e.anisotropy>0&&(t.anisotropyVector.value.set(e.anisotropy*Math.cos(e.anisotropyRotation),e.anisotropy*Math.sin(e.anisotropyRotation)),e.anisotropyMap&&(t.anisotropyMap.value=e.anisotropyMap,n(e.anisotropyMap,t.anisotropyMapTransform))),t.specularIntensity.value=e.specularIntensity,t.specularColor.value.copy(e.specularColor),e.specularColorMap&&(t.specularColorMap.value=e.specularColorMap,n(e.specularColorMap,t.specularColorMapTransform)),e.specularIntensityMap&&(t.specularIntensityMap.value=e.specularIntensityMap,n(e.specularIntensityMap,t.specularIntensityMapTransform))}(t,r,o)):r.isMeshMatcapMaterial?(i(t,r),function(t,e){e.matcap&&(t.matcap.value=e.matcap)}(t,r)):r.isMeshDepthMaterial?i(t,r):r.isMeshDistanceMaterial?(i(t,r),function(t,n){const i=e.get(n).light;t.referencePosition.value.setFromMatrixPosition(i.matrixWorld),t.nearDistance.value=i.shadow.camera.near,t.farDistance.value=i.shadow.camera.far}(t,r)):r.isMeshNormalMaterial?i(t,r):r.isLineBasicMaterial?(function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform))}(t,r),r.isLineDashedMaterial&&function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(t,r)):r.isPointsMaterial?function(t,e,i,r){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.size.value=e.size*i,t.scale.value=.5*r,e.map&&(t.map.value=e.map,n(e.map,t.uvTransform)),e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform)),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r,a,s):r.isSpriteMaterial?function(t,e){t.diffuse.value.copy(e.color),t.opacity.value=e.opacity,t.rotation.value=e.rotation,e.map&&(t.map.value=e.map,n(e.map,t.mapTransform)),e.alphaMap&&(t.alphaMap.value=e.alphaMap,n(e.alphaMap,t.alphaMapTransform)),e.alphaTest>0&&(t.alphaTest.value=e.alphaTest)}(t,r):r.isShadowMaterial?(t.color.value.copy(r.color),t.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function ss(t,e,n,i){let r={},a={},s=[];const o=n.isWebGL2?t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS):0;function l(t,e,n,i){const r=t.value,a=e+"_"+n;if(void 0===i[a])return i[a]="number"==typeof r||"boolean"==typeof r?r:r.clone(),!0;{const t=i[a];if("number"==typeof r||"boolean"==typeof r){if(t!==r)return i[a]=r,!0}else if(!1===t.equals(r))return t.copy(r),!0}return!1}function c(t){const e={boundary:0,storage:0};return"number"==typeof t||"boolean"==typeof t?(e.boundary=4,e.storage=4):t.isVector2?(e.boundary=8,e.storage=8):t.isVector3||t.isColor?(e.boundary=16,e.storage=12):t.isVector4?(e.boundary=16,e.storage=16):t.isMatrix3?(e.boundary=48,e.storage=48):t.isMatrix4?(e.boundary=64,e.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),e}function u(e){const n=e.target;n.removeEventListener("dispose",u);const i=s.indexOf(n.__bindingPointIndex);s.splice(i,1),t.deleteBuffer(r[n.id]),delete r[n.id],delete a[n.id]}return{bind:function(t,e){const n=e.program;i.uniformBlockBinding(t,n)},update:function(n,h){let d=r[n.id];void 0===d&&(function(t){const e=t.uniforms;let n=0;for(let t=0,i=e.length;t0&&(n+=16-i),t.__size=n,t.__cache={}}(n),d=function(e){const n=function(){for(let t=0;t0),h=!!n.morphAttributes.position,d=!!n.morphAttributes.normal,p=!!n.morphAttributes.color;let f=0;i.toneMapped&&(null!==E&&!0!==E.isXRRenderTarget||(f=x.toneMapping));const m=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,_=void 0!==m?m.length:0,v=lt.get(i),y=g.state.lights;if(!0===Y&&(!0===K||t!==b)){const e=t===b&&i.id===T;xt.setState(i,t,e)}let M=!1;i.version===v.__version?v.needsLights&&v.lightsStateVersion!==y.state.version||v.outputColorSpace!==o||r.isBatchedMesh&&!1===v.batching?M=!0:r.isBatchedMesh||!0!==v.batching?r.isInstancedMesh&&!1===v.instancing?M=!0:r.isInstancedMesh||!0!==v.instancing?r.isSkinnedMesh&&!1===v.skinning?M=!0:r.isSkinnedMesh||!0!==v.skinning?r.isInstancedMesh&&!0===v.instancingColor&&null===r.instanceColor||r.isInstancedMesh&&!1===v.instancingColor&&null!==r.instanceColor||v.envMap!==l||!0===i.fog&&v.fog!==a?M=!0:void 0===v.numClippingPlanes||v.numClippingPlanes===xt.numPlanes&&v.numIntersection===xt.numIntersection?(v.vertexAlphas!==c||v.vertexTangents!==u||v.morphTargets!==h||v.morphNormals!==d||v.morphColors!==p||v.toneMapping!==f||!0===at.isWebGL2&&v.morphTargetsCount!==_)&&(M=!0):M=!0:M=!0:M=!0:M=!0:(M=!0,v.__version=i.version);let S=v.currentProgram;!0===M&&(S=Yt(i,e,r));let A=!1,w=!1,R=!1;const C=S.getUniforms(),P=v.uniforms;if(st.useProgram(S.program)&&(A=!0,w=!0,R=!0),i.id!==T&&(T=i.id,w=!0),A||b!==t){C.setValue(Ct,"projectionMatrix",t.projectionMatrix),C.setValue(Ct,"viewMatrix",t.matrixWorldInverse);const e=C.map.cameraPosition;void 0!==e&&e.setValue(Ct,et.setFromMatrixPosition(t.matrixWorld)),at.logarithmicDepthBuffer&&C.setValue(Ct,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&C.setValue(Ct,"isOrthographic",!0===t.isOrthographicCamera),b!==t&&(b=t,w=!0,R=!0)}if(r.isSkinnedMesh){C.setOptional(Ct,r,"bindMatrix"),C.setOptional(Ct,r,"bindMatrixInverse");const t=r.skeleton;t&&(at.floatVertexTextures?(null===t.boneTexture&&t.computeBoneTexture(),C.setValue(Ct,"boneTexture",t.boneTexture,ct)):console.warn("THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required."))}r.isBatchedMesh&&(C.setOptional(Ct,r,"batchingTexture"),C.setValue(Ct,"batchingTexture",r._matricesTexture,ct));const L=n.morphAttributes;var D,I;if((void 0!==L.position||void 0!==L.normal||void 0!==L.color&&!0===at.isWebGL2)&&St.update(r,n,S),(w||v.receiveShadow!==r.receiveShadow)&&(v.receiveShadow=r.receiveShadow,C.setValue(Ct,"receiveShadow",r.receiveShadow)),i.isMeshGouraudMaterial&&null!==i.envMap&&(P.envMap.value=l,P.flipEnvMap.value=l.isCubeTexture&&!1===l.isRenderTargetTexture?-1:1),w&&(C.setValue(Ct,"toneMappingExposure",x.toneMappingExposure),v.needsLights&&(I=R,(D=P).ambientLightColor.needsUpdate=I,D.lightProbe.needsUpdate=I,D.directionalLights.needsUpdate=I,D.directionalLightShadows.needsUpdate=I,D.pointLights.needsUpdate=I,D.pointLightShadows.needsUpdate=I,D.spotLights.needsUpdate=I,D.spotLightShadows.needsUpdate=I,D.rectAreaLights.needsUpdate=I,D.hemisphereLights.needsUpdate=I),a&&!0===i.fog&>.refreshFogUniforms(P,a),gt.refreshMaterialUniforms(P,i,V,U,Z),ma.upload(Ct,Kt(v),P,ct)),i.isShaderMaterial&&!0===i.uniformsNeedUpdate&&(ma.upload(Ct,Kt(v),P,ct),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&C.setValue(Ct,"center",r.center),C.setValue(Ct,"modelViewMatrix",r.modelViewMatrix),C.setValue(Ct,"normalMatrix",r.normalMatrix),C.setValue(Ct,"modelMatrix",r.matrixWorld),i.isShaderMaterial||i.isRawShaderMaterial){const t=i.uniformsGroups;for(let e=0,n=t.length;e{function n(){i.forEach(function(t){lt.get(t).currentProgram.isReady()&&i.delete(t)}),0!==i.size?setTimeout(n,10):e(t)}null!==rt.get("KHR_parallel_shader_compile")?n():setTimeout(n,10)})};let Ht=null;function Vt(){kt.stop()}function Gt(){kt.start()}const kt=new wi;function Wt(t,e,n,i){if(!1===t.visible)return;if(t.layers.test(e.layers))if(t.isGroup)n=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(e);else if(t.isLight)g.pushLight(t),t.castShadow&&g.pushShadow(t);else if(t.isSprite){if(!t.frustumCulled||j.intersectsSprite(t)){i&&et.setFromMatrixPosition(t.matrixWorld).applyMatrix4(J);const e=ft.update(t),r=t.material;r.visible&&m.push(t,e,r,n,et.z,null)}}else if((t.isMesh||t.isLine||t.isPoints)&&(!t.frustumCulled||j.intersectsObject(t))){const e=ft.update(t),r=t.material;if(i&&(void 0!==t.boundingSphere?(null===t.boundingSphere&&t.computeBoundingSphere(),et.copy(t.boundingSphere.center)):(null===e.boundingSphere&&e.computeBoundingSphere(),et.copy(e.boundingSphere.center)),et.applyMatrix4(t.matrixWorld).applyMatrix4(J)),Array.isArray(r)){const i=e.groups;for(let a=0,s=i.length;a0&&function(t,e,n,i){if(null!==(!0===n.isScene?n.overrideMaterial:null))return;const r=at.isWebGL2;null===Z&&(Z=new ee(1,1,{generateMipmaps:!0,type:rt.has("EXT_color_buffer_half_float")?B:I,minFilter:D,samples:r?4:0})),x.getDrawingBufferSize($),r?Z.setSize($.x,$.y):Z.setSize(Rt($.x),Rt($.y));const a=x.getRenderTarget();x.setRenderTarget(Z),x.getClearColor(C),P=x.getClearAlpha(),P<1&&x.setClearColor(16777215,.5),x.clear();const s=x.toneMapping;x.toneMapping=0,qt(t,n,i),ct.updateMultisampleRenderTarget(Z),ct.updateRenderTargetMipmap(Z);let o=!1;for(let t=0,r=e.length;t0&&qt(r,e,n),a.length>0&&qt(a,e,n),s.length>0&&qt(s,e,n),st.buffers.depth.setTest(!0),st.buffers.depth.setMask(!0),st.buffers.color.setMask(!0),st.setPolygonOffset(!1)}function qt(t,e,n){const i=!0===e.isScene?e.overrideMaterial:null;for(let r=0,a=t.length;r0?v[v.length-1]:null,_.pop(),m=_.length>0?_[_.length-1]:null},this.getActiveCubeFace=function(){return M},this.getActiveMipmapLevel=function(){return S},this.getRenderTarget=function(){return E},this.setRenderTargetTextures=function(t,e,n){lt.get(t.texture).__webglTexture=e,lt.get(t.depthTexture).__webglTexture=n;const i=lt.get(t);i.__hasExternalTextures=!0,i.__hasExternalTextures&&(i.__autoAllocateDepthBuffer=void 0===n,i.__autoAllocateDepthBuffer||!0===rt.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),i.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(t,e){const n=lt.get(t);n.__webglFramebuffer=e,n.__useDefaultFramebuffer=void 0===e},this.setRenderTarget=function(t,e=0,n=0){E=t,M=e,S=n;let i=!0,r=null,a=!1,s=!1;if(t){const o=lt.get(t);void 0!==o.__useDefaultFramebuffer?(st.bindFramebuffer(Ct.FRAMEBUFFER,null),i=!1):void 0===o.__webglFramebuffer?ct.setupRenderTarget(t):o.__hasExternalTextures&&ct.rebindTextures(t,lt.get(t.texture).__webglTexture,lt.get(t.depthTexture).__webglTexture);const l=t.texture;(l.isData3DTexture||l.isDataArrayTexture||l.isCompressedArrayTexture)&&(s=!0);const c=lt.get(t).__webglFramebuffer;t.isWebGLCubeRenderTarget?(r=Array.isArray(c[e])?c[e][n]:c[e],a=!0):r=at.isWebGL2&&t.samples>0&&!1===ct.useMultisampledRTT(t)?lt.get(t).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,A.copy(t.viewport),w.copy(t.scissor),R=t.scissorTest}else A.copy(W).multiplyScalar(V).floor(),w.copy(X).multiplyScalar(V).floor(),R=q;if(st.bindFramebuffer(Ct.FRAMEBUFFER,r)&&at.drawBuffers&&i&&st.drawBuffers(t,r),st.viewport(A),st.scissor(w),st.setScissorTest(R),a){const i=lt.get(t.texture);Ct.framebufferTexture2D(Ct.FRAMEBUFFER,Ct.COLOR_ATTACHMENT0,Ct.TEXTURE_CUBE_MAP_POSITIVE_X+e,i.__webglTexture,n)}else if(s){const i=lt.get(t.texture),r=e||0;Ct.framebufferTextureLayer(Ct.FRAMEBUFFER,Ct.COLOR_ATTACHMENT0,i.__webglTexture,n||0,r)}T=-1},this.readRenderTargetPixels=function(t,e,n,i,r,a,s){if(!t||!t.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=lt.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&void 0!==s&&(o=o[s]),o){st.bindFramebuffer(Ct.FRAMEBUFFER,o);try{const s=t.texture,o=s.format,l=s.type;if(o!==H&&bt.convert(o)!==Ct.getParameter(Ct.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");const c=l===B&&(rt.has("EXT_color_buffer_half_float")||at.isWebGL2&&rt.has("EXT_color_buffer_float"));if(!(l===I||bt.convert(l)===Ct.getParameter(Ct.IMPLEMENTATION_COLOR_READ_TYPE)||l===F&&(at.isWebGL2||rt.has("OES_texture_float")||rt.has("WEBGL_color_buffer_float"))||c))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");e>=0&&e<=t.width-i&&n>=0&&n<=t.height-r&&Ct.readPixels(e,n,i,r,bt.convert(o),bt.convert(l),a)}finally{const t=null!==E?lt.get(E).__webglFramebuffer:null;st.bindFramebuffer(Ct.FRAMEBUFFER,t)}}},this.copyFramebufferToTexture=function(t,e,n=0){const i=Math.pow(2,-n),r=Math.floor(e.image.width*i),a=Math.floor(e.image.height*i);ct.setTexture2D(e,0),Ct.copyTexSubImage2D(Ct.TEXTURE_2D,n,0,0,t.x,t.y,r,a),st.unbindTexture()},this.copyTextureToTexture=function(t,e,n,i=0){const r=e.image.width,a=e.image.height,s=bt.convert(n.format),o=bt.convert(n.type);ct.setTexture2D(n,0),Ct.pixelStorei(Ct.UNPACK_FLIP_Y_WEBGL,n.flipY),Ct.pixelStorei(Ct.UNPACK_PREMULTIPLY_ALPHA_WEBGL,n.premultiplyAlpha),Ct.pixelStorei(Ct.UNPACK_ALIGNMENT,n.unpackAlignment),e.isDataTexture?Ct.texSubImage2D(Ct.TEXTURE_2D,i,t.x,t.y,r,a,s,o,e.image.data):e.isCompressedTexture?Ct.compressedTexSubImage2D(Ct.TEXTURE_2D,i,t.x,t.y,e.mipmaps[0].width,e.mipmaps[0].height,s,e.mipmaps[0].data):Ct.texSubImage2D(Ct.TEXTURE_2D,i,t.x,t.y,s,o,e.image),0===i&&n.generateMipmaps&&Ct.generateMipmap(Ct.TEXTURE_2D),st.unbindTexture()},this.copyTextureToTexture3D=function(t,e,n,i,r=0){if(x.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");const a=t.max.x-t.min.x+1,s=t.max.y-t.min.y+1,o=t.max.z-t.min.z+1,l=bt.convert(i.format),c=bt.convert(i.type);let u;if(i.isData3DTexture)ct.setTexture3D(i,0),u=Ct.TEXTURE_3D;else{if(!i.isDataArrayTexture&&!i.isCompressedArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");ct.setTexture2DArray(i,0),u=Ct.TEXTURE_2D_ARRAY}Ct.pixelStorei(Ct.UNPACK_FLIP_Y_WEBGL,i.flipY),Ct.pixelStorei(Ct.UNPACK_PREMULTIPLY_ALPHA_WEBGL,i.premultiplyAlpha),Ct.pixelStorei(Ct.UNPACK_ALIGNMENT,i.unpackAlignment);const h=Ct.getParameter(Ct.UNPACK_ROW_LENGTH),d=Ct.getParameter(Ct.UNPACK_IMAGE_HEIGHT),p=Ct.getParameter(Ct.UNPACK_SKIP_PIXELS),f=Ct.getParameter(Ct.UNPACK_SKIP_ROWS),m=Ct.getParameter(Ct.UNPACK_SKIP_IMAGES),g=n.isCompressedTexture?n.mipmaps[r]:n.image;Ct.pixelStorei(Ct.UNPACK_ROW_LENGTH,g.width),Ct.pixelStorei(Ct.UNPACK_IMAGE_HEIGHT,g.height),Ct.pixelStorei(Ct.UNPACK_SKIP_PIXELS,t.min.x),Ct.pixelStorei(Ct.UNPACK_SKIP_ROWS,t.min.y),Ct.pixelStorei(Ct.UNPACK_SKIP_IMAGES,t.min.z),n.isDataTexture||n.isData3DTexture?Ct.texSubImage3D(u,r,e.x,e.y,e.z,a,s,o,l,c,g.data):n.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),Ct.compressedTexSubImage3D(u,r,e.x,e.y,e.z,a,s,o,l,g.data)):Ct.texSubImage3D(u,r,e.x,e.y,e.z,a,s,o,l,c,g),Ct.pixelStorei(Ct.UNPACK_ROW_LENGTH,h),Ct.pixelStorei(Ct.UNPACK_IMAGE_HEIGHT,d),Ct.pixelStorei(Ct.UNPACK_SKIP_PIXELS,p),Ct.pixelStorei(Ct.UNPACK_SKIP_ROWS,f),Ct.pixelStorei(Ct.UNPACK_SKIP_IMAGES,m),0===r&&i.generateMipmaps&&Ct.generateMipmap(u),st.unbindTexture()},this.initTexture=function(t){t.isCubeTexture?ct.setTextureCube(t,0):t.isData3DTexture?ct.setTexture3D(t,0):t.isDataArrayTexture||t.isCompressedArrayTexture?ct.setTexture2DArray(t,0):ct.setTexture2D(t,0),st.unbindTexture()},this.resetState=function(){M=0,S=0,E=null,st.reset(),At.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return vt}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;const e=this.getContext();e.drawingBufferColorSpace=t===et?"display-p3":"srgb",e.unpackColorSpace=kt.workingColorSpace===nt?"display-p3":"srgb"}get outputEncoding(){return console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace===Q?J:3e3}set outputEncoding(t){console.warn("THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead."),this.outputColorSpace=t===J?Q:tt}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(t){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=t}}function ls(t,e,n){return!t||!n&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)}(class extends os{}).prototype.isWebGL1Renderer=!0;class cs{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){const e=this.parameterPositions;let n=this._cachedIndex,i=e[n],r=e[n-1];t:{e:{let a;n:{i:if(!(t=r)){const s=e[1];t=r)break e}a=n,n=0;break n}break t}for(;n>>1;te;)--a;if(++a,0!==r||a!==i){r>=a&&(a=Math.max(a,1),r=a-1);const t=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*t,a*t)}return this}validate(){let t=!0;const e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);const n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let a=null;for(let e=0;e!==r;e++){const i=n[e];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,e,i),t=!1;break}if(null!==a&&a>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,e,i,a),t=!1;break}a=i}if(void 0!==i&&(s=i,ArrayBuffer.isView(s)&&!(s instanceof DataView)))for(let e=0,n=i.length;e!==n;++e){const n=i[e];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,e,n),t=!1;break}}var s;return t}optimize(){const t=this.times.slice(),e=this.values.slice(),n=this.getValueSize(),i=this.getInterpolation()===Z,r=t.length-1;let a=1;for(let s=1;s0){t[a]=t[r];for(let t=r*n,i=a*n,s=0;s!==n;++s)e[i+s]=e[t+s];++a}return a!==t.length?(this.times=t.slice(0,a),this.values=e.slice(0,a*n)):(this.times=t,this.values=e),this}clone(){const t=this.times.slice(),e=this.values.slice(),n=new(0,this.constructor)(this.name,t,e);return n.createInterpolant=this.createInterpolant,n}}ps.prototype.TimeBufferType=Float32Array,ps.prototype.ValueBufferType=Float32Array,ps.prototype.DefaultInterpolation=K;class fs extends ps{}fs.prototype.ValueTypeName="bool",fs.prototype.ValueBufferType=Array,fs.prototype.DefaultInterpolation=Y,fs.prototype.InterpolantFactoryMethodLinear=void 0,fs.prototype.InterpolantFactoryMethodSmooth=void 0;(class extends ps{}).prototype.ValueTypeName="color";(class extends ps{}).prototype.ValueTypeName="number";class ms extends cs{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){const r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=(n-e)/(i-e);let l=t*s;for(let t=l+s;l!==t;l+=4)re.slerpFlat(r,0,a,l-s,a,l,o);return r}}class gs extends ps{InterpolantFactoryMethodLinear(t){return new ms(this.times,this.values,this.getValueSize(),t)}}gs.prototype.ValueTypeName="quaternion",gs.prototype.DefaultInterpolation=K,gs.prototype.InterpolantFactoryMethodSmooth=void 0;class _s extends ps{}_s.prototype.ValueTypeName="string",_s.prototype.ValueBufferType=Array,_s.prototype.DefaultInterpolation=Y,_s.prototype.InterpolantFactoryMethodLinear=void 0,_s.prototype.InterpolantFactoryMethodSmooth=void 0;(class extends ps{}).prototype.ValueTypeName="vector";Error;const vs="\\[\\]\\.:\\/",xs=new RegExp("["+vs+"]","g"),ys="[^"+vs+"]",Ms="[^"+vs.replace("\\.","")+"]",Ss=new RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",ys)+/(WCOD+)?/.source.replace("WCOD",Ms)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ys)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ys)+"$"),Es=["material","materials","bones","map"];class Ts{constructor(t,e,n){this.path=e,this.parsedPath=n||Ts.parseTrackName(e),this.node=Ts.findNode(t,this.parsedPath.nodeName),this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new Ts.Composite(t,e,n):new Ts(t,e,n)}static sanitizeNodeName(t){return t.replace(/\s/g,"_").replace(xs,"")}static parseTrackName(t){const e=Ss.exec(t);if(null===e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);const n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){const t=n.nodeName.substring(i+1);-1!==Es.indexOf(t)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=t)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(void 0===e||""===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){const n=t.skeleton.getBoneByName(e);if(void 0!==n)return n}if(t.children){const n=function(t){for(let i=0;it-e);for(let t=0;tl&&(l=_),ef&&(f=e);const v=t[i+2],x=t[i+3],y=v-x,M=v+x;yc&&(c=M),vm&&(m=v);const S=t[i+4],E=t[i+5],T=S-E,b=S+E;Tu&&(u=b),Sg&&(g=S)}i[0]=a,i[1]=s,i[2]=o,i[3]=l,i[4]=c,i[5]=u,r[0]=h,r[1]=d,r[2]=p,r[3]=f,r[4]=m,r[5]=g}function Os(t,e,n){return n.min.x=e[t],n.min.y=e[t+1],n.min.z=e[t+2],n.max.x=e[t+3],n.max.y=e[t+4],n.max.z=e[t+5],n}function Fs(t){let e=-1,n=-1/0;for(let i=0;i<3;i++){const r=t[i+3]-t[i];r>n&&(n=r,e=i)}return e}function Bs(t,e){e.set(t)}function zs(t,e,n){let i,r;for(let a=0;a<3;a++){const s=a+3;i=t[a],r=e[a],n[a]=ir?i:r}}function Hs(t,e,n){for(let i=0;i<3;i++){const r=e[t+2*i],a=e[t+2*i+1],s=r-a,o=r+a;sn[i+3]&&(n[i+3]=o)}}function Vs(t){const e=t[3]-t[0],n=t[4]-t[1],i=t[5]-t[2];return 2*(e*n+n*i+i*e)}const Gs=(t,e)=>t.candidate-e.candidate,ks=new Array(32).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ws=new Float32Array(6);class Xs{constructor(){this.boundingData=new Float32Array(6)}}function qs(t,e,n,i,r,a){let s=i,o=i+r-1;const l=a.pos,c=2*a.axis;for(;;){for(;s<=o&&n[6*s+c]=l;)o--;if(!(s=l;)o--;if(!(sao)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return no[n+6]=s/4,s=lo(s,r),no[n+7]=a,s}}function co(t,e){const n=t.geometry;e.indirect&&(t._indirectBuffer=function(t,e){const n=(t.index?t.index.count:t.attributes.position.count)/3,i=n>65536,r=i?4:2,a=e?new SharedArrayBuffer(n*r):new ArrayBuffer(n*r),s=i?new Uint32Array(a):new Uint16Array(a);for(let t=0,e=s.length;tt.offset-e.offset),r=i[i.length-1];r.count=Math.min(n-r.offset,r.count);let a=0;return i.forEach(({count:t})=>a+=t),n!==a}(n,e.range)&&!e.verbose&&console.warn('MeshBVH: Provided geometry contains groups or a range that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),t._indirectBuffer||function(t,e){if(!t.index){const n=t.attributes.position.count,i=function(t,e=ArrayBuffer){return t>65535?new Uint32Array(new e(4*t)):new Uint16Array(new e(2*t))}(n,e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer);t.setIndex(new Ln(i,1));for(let t=0;tf&&(f=a),u>f&&(f=u);const m=(f-h)/2,g=2*t;l[n+g+0]=h+m,l[n+g+1]=m+(Math.abs(h)+m)*Ps}}return l}(n),a=e.indirect?Ds(n,e.range):Is(n,e.range);t._roots=a.map(n=>{const a=function(t,e,n,i,r){const{maxDepth:a,verbose:s,maxLeafTris:o,strategy:l,onProgress:c,indirect:u}=r,h=t._indirectBuffer,d=t.geometry,p=d.index?d.index.array:null,f=u?js:qs,m=Us(d),g=new Float32Array(6);let _=!1;const v=new Xs;return Ns(e,n,i,v.boundingData,g),function t(n,i,r,c=null,u=0){if(!_&&u>=a&&(_=!0,s&&(console.warn(`MeshBVH: Max depth of ${a} reached when generating BVH. Consider increasing maxDepth.`),console.warn(d))),r<=o||u>=a)return x(i+r),n.offset=i,n.count=r,n;const m=function(t,e,n,i,r,a){let s=-1,o=0;if(0===a)s=Fs(e),-1!==s&&(o=(e[s]+e[s+3])/2);else if(1===a)s=Fs(t),-1!==s&&(o=function(t,e,n,i){let r=0;for(let a=e,s=e+n;a=a.candidate?Hs(i,n,a.rightCacheBounds):(Hs(i,n,a.leftCacheBounds),a.count++)}}for(let n=0;n=32&&(r=31);const a=ks[r];a.count++,Hs(e,n,a.bounds)}const e=ks[31];Bs(e.bounds,e.rightCacheBounds);for(let t=30;t>=0;t--){const e=ks[t],n=ks[t+1];zs(e.bounds,n.rightCacheBounds,e.rightCacheBounds)}let d=0;for(let e=0;e<31;e++){const n=ks[e],i=n.count,c=n.bounds,u=ks[e+1].rightCacheBounds;0!==i&&(0===d?Bs(c,Ws):zs(c,Ws,Ws)),d+=i;let h=0,p=0;0!==d&&(h=Vs(Ws)/a);const f=r-d;0!==f&&(p=Vs(u)/a);const m=1+Rs*(h*d+p*f);mi?a:i}this.min=n,this.max=i}setFromPoints(t,e){let n=1/0,i=-1/0;for(let r=0,a=e.length;ri?s:i}this.min=n,this.max=i}isSeparated(t){return this.min>t.max||t.min>this.max}}uo.prototype.setFromBox=function(){const t=new ae;return function(e,n){const i=n.min,r=n.max;let a=1/0,s=-1/0;for(let n=0;n<=1;n++)for(let o=0;o<=1;o++)for(let l=0;l<=1;l++){t.x=i.x*n+r.x*(1-n),t.y=i.y*o+r.y*(1-o),t.z=i.z*l+r.z*(1-l);const c=e.dot(t);a=Math.min(c,a),s=Math.max(c,s)}this.min=a,this.max=s}}(),new uo;const ho=function(){const t=new ae,e=new ae,n=new ae;return function(i,r,a){const s=i.start,o=t,l=r.start,c=e;n.subVectors(s,l),t.subVectors(i.end,i.start),e.subVectors(r.end,r.start);const u=n.dot(c),h=c.dot(o),d=c.dot(c),p=n.dot(o),f=o.dot(o)*d-h*h;let m,g;m=0!==f?(u*h-p*d)/f:0,g=(u+m*h)/d,a.x=m,a.y=g}}(),po=function(){const t=new Lt,e=new ae,n=new ae;return function(i,r,a,s){ho(i,r,t);let o=t.x,l=t.y;if(o>=0&&o<=1&&l>=0&&l<=1)return i.at(o,a),void r.at(l,s);if(o>=0&&o<=1)return l<0?r.at(0,s):r.at(1,s),void i.closestPointToPoint(s,!0,a);if(l>=0&&l<=1)return o<0?i.at(0,a):i.at(1,a),void r.closestPointToPoint(a,!0,s);{let t,c;t=o<0?i.start:i.end,c=l<0?r.start:r.end;const u=e,h=n;return i.closestPointToPoint(c,!0,e),r.closestPointToPoint(t,!0,n),u.distanceToSquared(c)<=h.distanceToSquared(t)?(a.copy(u),void s.copy(c)):(a.copy(t),void s.copy(h))}}}(),fo=function(){const t=new ae,e=new ae,n=new Ei,i=new ws;return function(r,a){const{radius:s,center:o}=r,{a:l,b:c,c:u}=a;if(i.start=l,i.end=c,i.closestPointToPoint(o,!0,t).distanceTo(o)<=s)return!0;if(i.start=l,i.end=u,i.closestPointToPoint(o,!0,t).distanceTo(o)<=s)return!0;if(i.start=c,i.end=u,i.closestPointToPoint(o,!0,t).distanceTo(o)<=s)return!0;const h=a.getPlane(n);if(Math.abs(h.distanceToPoint(o))<=s){const t=h.projectPoint(o,e);if(a.containsPoint(t))return!0}return!1}}();function mo(t){return Math.abs(t)<1e-15}class go extends xn{constructor(...t){super(...t),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new ae),this.satBounds=new Array(4).fill().map(()=>new uo),this.points=[this.a,this.b,this.c],this.sphere=new Ae,this.plane=new Ei,this.needsUpdate=!0}intersectsSphere(t){return fo(t,this)}update(){const t=this.a,e=this.b,n=this.c,i=this.points,r=this.satAxes,a=this.satBounds,s=r[0],o=a[0];this.getNormal(s),o.setFromPoints(s,i);const l=r[1],c=a[1];l.subVectors(t,e),c.setFromPoints(l,i);const u=r[2],h=a[2];u.subVectors(e,n),h.setFromPoints(u,i);const d=r[3],p=a[3];d.subVectors(n,t),p.setFromPoints(d,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(s,t),this.needsUpdate=!1}}go.prototype.closestPointToSegment=function(){const t=new ae,e=new ae,n=new ws;return function(i,r=null,a=null){const{start:s,end:o}=i,l=this.points;let c,u=1/0;for(let s=0;s<3;s++){const o=(s+1)%3;n.start.copy(l[s]),n.end.copy(l[o]),po(n,i,t,e),c=t.distanceToSquared(e),c=2){(1===a?n.start:n.end).copy(p),r=2;break}if(r++,2===r&&-1===a)break}}return r}return function(s,u=null,p=!1){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(t.copy(s),t.update(),s=t);const m=this.plane,g=s.plane;if(Math.abs(m.normal.dot(g.normal))>1-1e-10){const t=this.satBounds,o=this.satAxes;n[0]=s.a,n[1]=s.b,n[2]=s.c;for(let e=0;e<4;e++){const r=t[e],a=o[e];if(i.setFromPoints(a,n),r.isSeparated(i))return!1}const l=s.satBounds,c=s.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let t=0;t<4;t++){const n=l[t],r=c[t];if(i.setFromPoints(r,e),n.isSeparated(i))return!1}for(let t=0;t<4;t++){const s=o[t];for(let t=0;t<4;t++){const o=c[t];if(a.crossVectors(s,o),i.setFromPoints(a,e),r.setFromPoints(a,n),i.isSeparated(r))return!1}}return u&&(p||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),u.start.set(0,0,0),u.end.set(0,0,0)),!0}{const t=f(this,g,h);if(1===t&&s.containsPoint(h.end))return u&&(u.start.copy(h.end),u.end.copy(h.end)),!0;if(2!==t)return!1;const e=f(s,m,d);if(1===e&&this.containsPoint(d.end))return u&&(u.start.copy(d.end),u.end.copy(d.end)),!0;if(2!==e)return!1;if(h.delta(o),d.delta(l),o.dot(l)<0){let t=d.start;d.start=d.end,d.end=t}const n=h.start.dot(o),i=h.end.dot(o),r=d.start.dot(o),a=d.end.dot(o);return(n===a||r===i||i0?u.start.copy(h.start):u.start.copy(d.start),c.subVectors(h.end,d.end),c.dot(o)<0?u.end.copy(h.end):u.end.copy(d.end)),!0)}}}(),go.prototype.distanceToPoint=function(){const t=new ae;return function(e){return this.closestPointToPoint(e,t),e.distanceTo(t)}}(),go.prototype.distanceToTriangle=function(){const t=new ae,e=new ae,n=["a","b","c"],i=new ws,r=new ws;return function(a,s=null,o=null){const l=s||o?i:null;if(this.intersectsTriangle(a,l))return(s||o)&&(s&&l.getCenter(s),o&&l.getCenter(o)),0;let c=1/0;for(let e=0;e<3;e++){let i;const r=n[e],l=a[r];this.closestPointToPoint(l,t),i=l.distanceToSquared(t),inew ae),this.satAxes=new Array(3).fill().map(()=>new ae),this.satBounds=new Array(3).fill().map(()=>new uo),this.alignedSatBounds=new Array(3).fill().map(()=>new uo),this.needsUpdate=!1,t&&this.min.copy(t),e&&this.max.copy(e),n&&this.matrix.copy(n)}set(t,e,n){this.min.copy(t),this.max.copy(e),this.matrix.copy(n),this.needsUpdate=!0}copy(t){this.min.copy(t.min),this.max.copy(t.max),this.matrix.copy(t.matrix),this.needsUpdate=!0}}_o.prototype.update=function(){const t=this.matrix,e=this.min,n=this.max,i=this.points;for(let r=0;r<=1;r++)for(let a=0;a<=1;a++)for(let s=0;s<=1;s++){const o=i[1*r|2*a|4*s];o.x=r?n.x:e.x,o.y=a?n.y:e.y,o.z=s?n.z:e.z,o.applyMatrix4(t)}const r=this.satBounds,a=this.satAxes,s=i[0];for(let t=0;t<3;t++){const e=a[t],n=r[t],o=i[1<new ws),n=new Array(12).fill().map(()=>new ws),i=new ae,r=new ae;return function(a,s=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(o||l)&&(a.getCenter(r),this.closestPointToPoint(r,i),a.closestPointToPoint(i,r),o&&o.copy(i),l&&l.copy(r)),0;const c=s*s,u=a.min,h=a.max,d=this.points;let p=1/0;for(let t=0;t<8;t++){const e=d[t];r.copy(e).clamp(u,h);const n=e.distanceToSquared(r);if(nnew go)}}const yo=new xo,Mo=new class{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const t=[];let e=null;this.setBuffer=n=>{e&&t.push(e),e=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{e=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,0!==t.length&&this.setBuffer(t.pop())}}};let So,Eo;const To=[],bo=new vo(()=>new le);function Ao(t,e,n,i,r,a){So=bo.getPrimitive(),Eo=bo.getPrimitive(),To.push(So,Eo),Mo.setBuffer(t._roots[e]);const s=wo(0,t.geometry,n,i,r,a);Mo.clearBuffer(),bo.releasePrimitive(So),bo.releasePrimitive(Eo),To.pop(),To.pop();const o=To.length;return o>0&&(Eo=To[o-1],So=To[o-2]),s}function wo(t,e,n,i,r=null,a=0,s=0){const{float32Array:o,uint16Array:l,uint32Array:c}=Mo;let u=2*t;if(Ys(u,l)){const h=Ks(t,c),d=Zs(u,l);return Os(t,o,So),i(h,d,!1,s,a+t,So)}{const p=Js(t),f=$s(t,c);let m,g,_,v,x=p,y=f;if(r&&(_=So,v=Eo,Os(x,o,_),Os(y,o,v),m=r(_),g=r(v),g=169,Lo=new ae,Uo=new ae,Do=new ae,Io=new Lt,No=new Lt,Oo=new Lt,Fo=new ae,Bo=new ae,zo=new ae,Ho=new ae;function Vo(t,e,n,i,r,a,s){const o=3*i;let l=o+0,c=o+1,u=o+2;const h=t.index;t.index&&(l=h.getX(l),c=h.getX(c),u=h.getX(u));const{position:d,normal:p,uv:f,uv1:m}=t.attributes,g=function(t,e,n,i,r,a,s,o,l,c,u){Lo.fromBufferAttribute(e,a),Uo.fromBufferAttribute(e,s),Do.fromBufferAttribute(e,o);const h=function(t,e,n,i,r,a,s,o){let l;if(l=1===a?t.intersectTriangle(i,n,e,!0,r):t.intersectTriangle(e,n,i,2!==a,r),null===l)return null;const c=t.origin.distanceTo(r);return co?null:{distance:c,point:r.clone()}}(t,Lo,Uo,Do,Ho,l,c,u);if(h){const e=new ae;xn.getBarycoord(Ho,Lo,Uo,Do,e),i&&(Io.fromBufferAttribute(i,a),No.fromBufferAttribute(i,s),Oo.fromBufferAttribute(i,o),h.uv=xn.getInterpolation(Ho,Lo,Uo,Do,Io,No,Oo,new Lt)),r&&(Io.fromBufferAttribute(r,a),No.fromBufferAttribute(r,s),Oo.fromBufferAttribute(r,o),h.uv1=xn.getInterpolation(Ho,Lo,Uo,Do,Io,No,Oo,new Lt)),n&&(Fo.fromBufferAttribute(n,a),Bo.fromBufferAttribute(n,s),zo.fromBufferAttribute(n,o),h.normal=xn.getInterpolation(Ho,Lo,Uo,Do,Fo,Bo,zo,new ae),h.normal.dot(t.direction)>0&&h.normal.multiplyScalar(-1));const l={a,b:s,c:o,normal:new ae,materialIndex:0};xn.getNormal(Lo,Uo,Do,l.normal),h.face=l,h.faceIndex=a,Po&&(h.barycoord=e)}return h}(n,d,p,f,m,l,c,u,e,a,s);return g?(g.faceIndex=i,r&&r.push(g),g):null}function Go(t,e,n,i){const r=t.a,a=t.b,s=t.c;let o=e,l=e+1,c=e+2;n&&(o=n.getX(o),l=n.getX(l),c=n.getX(c)),r.x=i.getX(o),r.y=i.getY(o),r.z=i.getZ(o),a.x=i.getX(l),a.y=i.getY(l),a.z=i.getZ(l),s.x=i.getX(c),s.y=i.getY(c),s.z=i.getZ(c)}function ko(t,e,n,i,r,a,s){const{geometry:o}=n,{index:l}=o,c=o.attributes.position;for(let n=t,o=e+t;nh&&(h=s),od&&(d=o),lp&&(p=l)}return(l[t+0]!==n||l[t+1]!==a||l[t+2]!==u||l[t+3]!==h||l[t+4]!==d||l[t+5]!==p)&&(l[t+0]=n,l[t+1]=a,l[t+2]=u,l[t+3]=h,l[t+4]=d,l[t+5]=p,!0)}{const i=t+8,r=s[t+6],o=i+n,c=r+n;let u=a,d=!1,p=!1;e?u||(d=e.has(o),p=e.has(c),u=!d&&!p):(d=!0,p=!0);const f=u||p;let m=!1;(u||d)&&(m=h(i,n,u));let g=!1;f&&(g=h(r,n,u));const _=m||g;if(_)for(let e=0;e<3;e++){const n=i+e,a=r+e,s=l[n],o=l[n+3],c=l[a],u=l[a+3];l[t+e]=su?o:u}return _}}}function Xo(t,e,n,i,r){let a,s,o,l,c,u;const h=1/n.direction.x,d=1/n.direction.y,p=1/n.direction.z,f=n.origin.x,m=n.origin.y,g=n.origin.z;let _=e[t],v=e[t+3],x=e[t+1],y=e[t+3+1],M=e[t+2],S=e[t+3+2];return h>=0?(a=(_-f)*h,s=(v-f)*h):(a=(v-f)*h,s=(_-f)*h),d>=0?(o=(x-m)*d,l=(y-m)*d):(o=(y-m)*d,l=(x-m)*d),!(a>l||o>s)&&((o>a||isNaN(a))&&(a=o),(l=0?(c=(M-g)*p,u=(S-g)*p):(c=(S-g)*p,u=(M-g)*p),!(a>u||c>s)&&((c>a||a!=a)&&(a=c),(u=i))}function qo(t,e,n,i,r,a,s){Mo.setBuffer(t._roots[e]),jo(0,t,n,i,r,a,s),Mo.clearBuffer()}function jo(t,e,n,i,r,a,s){const{float32Array:o,uint16Array:l,uint32Array:c}=Mo,u=2*t;if(Ys(u,l))!function(t,e,n,i,r,a,s,o){const{geometry:l,_indirectBuffer:c}=t;for(let t=i,c=i+r;t=0;let h,d;u?(h=Js(t),d=$s(t,l)):(h=$s(t,l),d=Js(t));const p=Xo(h,s,i,r,a)?Zo(h,e,n,i,r,a):null;if(p){const t=p.point[c];if(u?t<=s[d+o]:t>=s[d+o+3])return p}const f=Xo(d,s,i,r,a)?Zo(d,e,n,i,r,a):null;return p&&f?p.distance<=f.distance?p:f:p||f||null}}const Jo=new le,$o=new go,Qo=new go,tl=new Ne,el=new _o,nl=new _o;function il(t,e,n,i){Mo.setBuffer(t._roots[e]);const r=rl(0,t,n,i);return Mo.clearBuffer(),r}function rl(t,e,n,i,r=null){const{float32Array:a,uint16Array:s,uint32Array:o}=Mo;let l=2*t;if(null===r&&(n.boundingBox||n.computeBoundingBox(),el.set(n.boundingBox.min,n.boundingBox.max,i),r=el),!Ys(l,s)){const s=t+8,l=o[t+6];return Os(s,a,Jo),r.intersectsBox(Jo)&&rl(s,e,n,i,r)?!0:(Os(l,a,Jo),!(!r.intersectsBox(Jo)||!rl(l,e,n,i,r)))}{const r=e.geometry,c=r.index,u=r.attributes.position,h=n.index,d=n.attributes.position,p=Ks(t,o),f=Zs(l,s);if(tl.copy(i).invert(),n.boundsTree)return Os(t,a,nl),nl.matrix.copy(tl),nl.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:t=>nl.intersectsBox(t),intersectsTriangle:t=>{t.a.applyMatrix4(i),t.b.applyMatrix4(i),t.c.applyMatrix4(i),t.needsUpdate=!0;for(let e=3*p,n=3*(f+p);esl.distanceToBox(t),intersectsBounds:(t,e,n)=>n{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:t=>ol.distanceToBox(t),intersectsBounds:(t,e,n)=>n{for(let s=e,o=e+r;sd&&(d=s),op&&(p=o),lf&&(f=l)}}return(l[n+0]!==a||l[n+1]!==c||l[n+2]!==h||l[n+3]!==d||l[n+4]!==p||l[n+5]!==f)&&(l[n+0]=a,l[n+1]=c,l[n+2]=h,l[n+3]=d,l[n+4]=p,l[n+5]=f,!0)}{const t=n+8,i=s[n+6],r=t+a,o=i+a;let u=c,d=!1,p=!1;e?u||(d=e.has(r),p=e.has(o),u=!d&&!p):(d=!0,p=!0);const f=u||p;let m=!1;(u||d)&&(m=h(t,a,u));let g=!1;f&&(g=h(i,a,u));const _=m||g;if(_)for(let e=0;e<3;e++){const r=t+e,a=i+e,s=l[r],o=l[r+3],c=l[a],u=l[a+3];l[n+e]=su?o:u}return _}}}function ml(t,e,n,i,r,a,s){Mo.setBuffer(t._roots[e]),gl(0,t,n,i,r,a,s),Mo.clearBuffer()}function gl(t,e,n,i,r,a,s){const{float32Array:o,uint16Array:l,uint32Array:c}=Mo,u=2*t;if(Ys(u,l))!function(t,e,n,i,r,a,s,o){const{geometry:l,_indirectBuffer:c}=t;for(let t=i,u=i+r;t=0;let h,d;u?(h=Js(t),d=$s(t,l)):(h=$s(t,l),d=Js(t));const p=Xo(h,s,i,r,a)?xl(h,e,n,i,r,a):null;if(p){const t=p.point[c];if(u?t<=s[d+o]:t>=s[d+o+3])return p}const f=Xo(d,s,i,r,a)?xl(d,e,n,i,r,a):null;return p&&f?p.distance<=f.distance?p:f:p||f||null}}const yl=new le,Ml=new go,Sl=new go,El=new Ne,Tl=new _o,bl=new _o;function Al(t,e,n,i){Mo.setBuffer(t._roots[e]);const r=wl(0,t,n,i);return Mo.clearBuffer(),r}function wl(t,e,n,i,r=null){const{float32Array:a,uint16Array:s,uint32Array:o}=Mo;let l=2*t;if(null===r&&(n.boundingBox||n.computeBoundingBox(),Tl.set(n.boundingBox.min,n.boundingBox.max,i),r=Tl),!Ys(l,s)){const s=t+8,l=o[t+6];return Os(s,a,yl),r.intersectsBox(yl)&&wl(s,e,n,i,r)?!0:(Os(l,a,yl),!(!r.intersectsBox(yl)||!wl(l,e,n,i,r)))}{const r=e.geometry,c=r.index,u=r.attributes.position,h=n.index,d=n.attributes.position,p=Ks(t,o),f=Zs(l,s);if(El.copy(i).invert(),n.boundsTree)return Os(t,a,bl),bl.matrix.copy(El),bl.needsUpdate=!0,n.boundsTree.shapecast({intersectsBounds:t=>bl.intersectsBox(t),intersectsTriangle:t=>{t.a.applyMatrix4(i),t.b.applyMatrix4(i),t.c.applyMatrix4(i),t.needsUpdate=!0;for(let n=p,i=f+p;nCl.distanceToBox(t),intersectsBounds:(t,e,n)=>n{if(e.boundsTree){const o=e.boundsTree;return o.shapecast({boundsTraverseOrder:t=>Pl.distanceToBox(t),intersectsBounds:(t,e,n)=>n{for(let M=e,S=e+s;Mnew le),zl=new le,Hl=new le,Vl=new le,Gl=new le;let kl=!1;function Wl(t,e,n,i,r,a=0,s=0,o=0,l=0,c=null,u=!1){let h,d;u?(h=Fl,d=Ol):(h=Ol,d=Fl);const p=h.float32Array,f=h.uint32Array,m=h.uint16Array,g=d.float32Array,_=d.uint32Array,v=d.uint16Array,x=2*e,y=Ys(2*t,m),M=Ys(x,v);let S=!1;if(M&&y)S=u?r(Ks(e,_),Zs(2*e,v),Ks(t,f),Zs(2*t,m),l,s+e,o,a+t):r(Ks(t,f),Zs(2*t,m),Ks(e,_),Zs(2*e,v),o,a+t,l,s+e);else if(M){const c=Bl.getPrimitive();Os(e,g,c),c.applyMatrix4(n);const h=Js(t),d=$s(t,f);Os(h,p,zl),Os(d,p,Hl);const m=c.intersectsBox(zl),_=c.intersectsBox(Hl);S=m&&Wl(e,h,i,n,r,s,a,l,o+1,c,!u)||_&&Wl(e,d,i,n,r,s,a,l,o+1,c,!u),Bl.releasePrimitive(c)}else{const h=Js(e),d=$s(e,_);Os(h,g,Vl),Os(d,g,Gl);const m=c.intersectsBox(Vl),v=c.intersectsBox(Gl);if(m&&v)S=Wl(t,h,n,i,r,a,s,o,l+1,c,u)||Wl(t,d,n,i,r,a,s,o,l+1,c,u);else if(m)if(y)S=Wl(t,h,n,i,r,a,s,o,l+1,c,u);else{const e=Bl.getPrimitive();e.copy(Vl).applyMatrix4(n);const c=Js(t),d=$s(t,f);Os(c,p,zl),Os(d,p,Hl);const m=e.intersectsBox(zl),g=e.intersectsBox(Hl);S=m&&Wl(h,c,i,n,r,s,a,l,o+1,e,!u)||g&&Wl(h,d,i,n,r,s,a,l,o+1,e,!u),Bl.releasePrimitive(e)}else if(v)if(y)S=Wl(t,d,n,i,r,a,s,o,l+1,c,u);else{const e=Bl.getPrimitive();e.copy(Gl).applyMatrix4(n);const c=Js(t),h=$s(t,f);Os(c,p,zl),Os(h,p,Hl);const m=e.intersectsBox(zl),g=e.intersectsBox(Hl);S=m&&Wl(d,c,i,n,r,s,a,l,o+1,e,!u)||g&&Wl(d,h,i,n,r,s,a,l,o+1,e,!u),Bl.releasePrimitive(e)}}return S}const Xl=new _o,ql=new le,jl={strategy:0,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null};class Yl{static serialize(t,e={}){e={cloneBuffers:!0,...e};const n=t.geometry,i=t._roots,r=t._indirectBuffer,a=n.getIndex();let s;return s=e.cloneBuffers?{roots:i.map(t=>t.slice()),index:a?a.array.slice():null,indirectBuffer:r?r.slice():null}:{roots:i,index:a?a.array:null,indirectBuffer:r},s}static deserialize(t,e,n={}){n={setIndex:!0,indirect:Boolean(t.indirectBuffer),...n};const{index:i,roots:r,indirectBuffer:a}=t,s=new Yl(e,{...n,[Ls]:!0});if(s._roots=r,s._indirectBuffer=a||null,n.setIndex){const n=e.getIndex();if(null===n){const n=new Ln(t.index,1,!1);e.setIndex(n)}else n.array!==i&&(n.array.set(i),n.needsUpdate=!0)}return s}get indirect(){return!!this._indirectBuffer}constructor(t,e={}){if(!t.isBufferGeometry)throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t.index&&t.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.");if((e=Object.assign({...jl,[Ls]:!1},e)).useSharedArrayBuffer&&"undefined"==typeof SharedArrayBuffer)throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=t,this._roots=null,this._indirectBuffer=null,e[Ls]||(co(this,e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new le))),this.resolveTriangleIndex=e.indirect?t=>this._indirectBuffer[t]:t=>t}refit(t=null){return(this.indirect?fl:Wo)(this,t)}traverse(t,e=0){const n=this._roots[e],i=new Uint32Array(n),r=new Uint16Array(n);!function e(a,s=0){const o=2*a,l=r[o+15]===Cs;if(l){const e=i[a+6],c=r[o+14];t(s,l,new Float32Array(n,4*a,6),e,c)}else{const r=a+8,o=i[a+6],c=i[a+7];t(s,l,new Float32Array(n,4*a,6),c)||(e(r,s+1),e(o,s+1))}}(0)}raycast(t,e=0,n=0,i=1/0){const r=this._roots,a=this.geometry,s=[],o=e.isMaterial,l=Array.isArray(e),c=a.groups,u=o?e.side:e,h=this.indirect?ml:qo;for(let a=0,o=r.length;a!!t(i,r,a,o,l)||n(i,r,this,s,a,o,e)}else a||(a=s?(t,i,r,a)=>n(t,i,this,s,r,a,e):(t,e,n)=>n);let o=!1,l=0;const c=this._roots;for(let t=0,e=c.length;t{const e=this.resolveTriangleIndex(t);Go(a,3*e,s,o)}:t=>{Go(a,3*t,s,o)},c=yo.getPrimitive(),u=t.geometry.index,h=t.geometry.attributes.position,d=t.indirect?e=>{const n=t.resolveTriangleIndex(e);Go(c,3*n,u,h)}:t=>{Go(c,3*t,u,h)};if(r){const t=(t,n,i,s,o,u,h,p)=>{for(let f=i,m=i+s;fXl.intersectsBox(t),intersectsTriangle:t=>Xl.intersectsTriangle(t)})}intersectsSphere(t){return this.shapecast({intersectsBounds:e=>t.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(t)})}closestPointToGeometry(t,e,n={},i={},r=0,a=1/0){return(this.indirect?Nl:dl)(this,t,e,n,i,r,a)}closestPointToPoint(t,e={},n=0,i=1/0){return function(t,e,n={},i=0,r=1/0){const a=i*i,s=r*r;let o=1/0,l=null;if(t.shapecast({boundsTraverseOrder:t=>(Ro.copy(e).clamp(t.min,t.max),Ro.distanceToSquared(e)),intersectsBounds:(t,e,n)=>n{t.closestPointToPoint(e,Ro);const i=e.distanceToSquared(Ro);return i{Os(0,new Float32Array(e),ql),t.union(ql)}),t}}let Kl;function Zl(t){return`#${Math.round(t.r).toString(16).padStart(2,"0")}${Math.round(t.g).toString(16).padStart(2,"0")}${Math.round(t.b).toString(16).padStart(2,"0")}`}function Jl(t,e){return{r:parseInt(t.slice(1,3),16),g:parseInt(t.slice(3,5),16),b:parseInt(t.slice(5,7),16),a:e}}function $l(){if(0===Mesh.selected.length)return void Blockbench.showToastNotification({text:"No meshes selected"});if(Mesh.selected.length>1)return void Blockbench.showToastNotification({text:"Multiple meshes selected"});const t=function(){const t=localStorage.getItem("blockbench_baked_ao_settings"),e={sampleMethod:"random",highlightColor:{r:231,g:225,b:164,a:.4},shadowColor:{r:36,g:11,b:55,a:.5},samples:1e3,ambientOcclusionRadius:8,retainTextureTransparency:!1,sampleTextureTransparency:!1,shadowGamma:1,highlightGamma:.5,simulateGroundPlane:!0};if(t)try{return{...e,...JSON.parse(t)}}catch(t){console.warn("Failed to parse saved AO settings, using defaults")}return e}();new Dialog("ambient_occlusion_config",{title:"Ambient Occlusion Settings",width:400,form:{highlight_color:{label:"Highlight Color",type:"color",value:Zl(t.highlightColor),description:"Color used for areas with high ambient lighting"},highlight_alpha:{label:"Highlight Opacity",type:"range",min:0,max:1,step:.01,value:t.highlightColor.a,description:"Opacity of the highlight color overlay"},highlight_gamma:{label:"Highlight Gamma",type:"range",min:.2,max:2,step:.1,value:t.highlightGamma,description:"Gamma correction for highlight areas (lower = more contrast)"},shadow_color:{label:"Shadow Color",type:"color",value:Zl(t.shadowColor),description:"Color used for occluded/shadowed areas"},shadow_alpha:{label:"Shadow Opacity",type:"range",min:0,max:1,step:.01,value:t.shadowColor.a,description:"Opacity of the shadow color overlay"},shadow_gamma:{label:"Shadow Gamma",type:"range",min:.2,max:2,step:.1,value:t.shadowGamma,description:"Gamma correction for shadow areas (higher = softer shadows)"},samples:{label:"Samples per pixel",type:"number",min:10,max:1e4,step:100,value:t.samples,description:"Number of samples per pixel (higher = better quality, slower). 100 recommended for uniform sampling, 1000 for random sampling."},sample_method:{label:"Sample Method",type:"inline_select",options:{random:"Random",uniform:"Uniform"},value:t.sampleMethod,description:"Method for sampling ambient occlusion rays. Random is slightly more accurate but noisier, uniform is smoother for less samples but is more prone to artifacts."},ambient_occlusion_radius:{label:"Ambient Occlusion Radius",type:"number",min:1,max:32,step:1,value:t.ambientOcclusionRadius,description:"Radius for ambient occlusion effect (Bigger is better for larger models or higher-resolution textures)"},simulate_ground_plane:{label:"Simulate Ground Plane",type:"checkbox",value:t.simulateGroundPlane,description:"Simulate a ground plane, adding shadows at the base of the model"},retain_texture_transparency:{label:"Retain Texture Transparency",type:"checkbox",value:t.retainTextureTransparency,description:"Preserve the original transparency of textures"},sample_texture_transparency:{label:"Sample Texture Transparency",type:"checkbox",value:t.sampleTextureTransparency,description:"Consider texture transparency when calculating occlusion (slower but more accurate)"}},onConfirm:async function(t){const e={onProgress:t=>{Blockbench.setProgress(t),r.progress_bar.setProgress(t);const e=performance.now()-n,i=r.object.querySelector(".dialog_title");if(i)if(e>3e3||t>.2){const n=function(t){const e=Math.floor(t/1e3),n=Math.floor(e/60),i=e%60,r=n%60,a=Math.floor(n/60);return a>0?`${a}h ${r}m ${i}s`:r>0?`${r}m ${i}s`:`${i}s`}(e/t-e);i.textContent=`Baking Ambient Occlusion (~ ${n} remaining)`}else i.textContent="Baking Ambient Occlusion"},highlightColor:Jl("#"+t.highlight_color.toHex(),t.highlight_alpha),shadowColor:Jl("#"+t.shadow_color.toHex(),t.shadow_alpha),samples:t.samples,ambientOcclusionRadius:t.ambient_occlusion_radius,retainTextureTransparency:t.retain_texture_transparency,sampleTextureTransparency:t.sample_texture_transparency,shadowGamma:t.shadow_gamma,highlightGamma:t.highlight_gamma,simulateGroundPlane:t.simulate_ground_plane,sampleMethod:t.sample_method};!function(t){localStorage.setItem("blockbench_baked_ao_settings",JSON.stringify(t))}({highlightColor:e.highlightColor,shadowColor:e.shadowColor,samples:e.samples,ambientOcclusionRadius:e.ambientOcclusionRadius,retainTextureTransparency:e.retainTextureTransparency,sampleTextureTransparency:e.sampleTextureTransparency,shadowGamma:e.shadowGamma,highlightGamma:e.highlightGamma,simulateGroundPlane:e.simulateGroundPlane,sampleMethod:e.sampleMethod});const n=performance.now(),i={cancelled:!1},r=new Dialog("bake_ambient_occlusion_loading",{title:"Baking Ambient Occlusion",progress_bar:{progress:0},cancel_on_click_outside:!1,singleButton:!0,buttons:["Cancel"],onCancel:function(){i.cancelled=!0}});r.show();try{await async function(t,e){let n=!1,i=!1,r=0,a=0;performance.mark("startAO");for(const s of Mesh.selected){let o=!1,l=0;s.forAllFaces(t=>{t.isSelected()&&(o=!0),l++});const c=await Ql(s,o,t,e);n=n||c.anyMissing,i=i||c.anyWithTextures,r+=c.totalPixelsProcessed,a+=c.totalFacesProcessed}performance.mark("endAO");const s=performance.measure("AO Processing Time","startAO","endAO");console.log(`AO Processing Time: ${s.duration}ms`),i?n&&Blockbench.showToastNotification({text:"Some faces are missing textures"}):Blockbench.showToastNotification({text:"No textures found on selected meshes"})}(e,i)}finally{r.hide(),Blockbench.setProgress(0)}},buttons:["Confirm","Restore Defaults","Cancel"],onButton(t,e){1===t&&(localStorage.removeItem("blockbench_baked_ao_settings"),$l())}}).show()}async function Ql(t,e,n,i){let r=!1,a=!1,s=0,o=0;const l=[];t.forAllFaces(t=>l.push(t));const c=new Map;for(const t of l){const n=t.getTexture();n?e&&!t.isSelected()||(a=!0,c.has(n)||c.set(n,[]),c.get(n).push(t)):r=!0}const[u]=function(t){if(!(t.mesh&&t.mesh instanceof THREE.Mesh))throw console.log(t),new Error("Invalid mesh object");const e=t.mesh.geometry;if(!e||!e.attributes||!e.attributes.position)throw console.log(e),new Error("Mesh does not have valid geometry attributes");const n=e.attributes.position;let i=-1/0,r=1/0;for(let t=0;ti&&(i=e),e{Object.keys(n[t]).forEach(e=>{const i=n[t][e],r=parseInt(t,10),a=parseInt(e,10);if(!0===i)for(let t=0;tsetTimeout(t,0)),o.cancelled)throw new Error("Job cancelled")}c++,s?.onProgress?.(c/e.length)}let u=0;return t.edit(t=>{const e=t.getContext("2d");for(const[t,n]of l){const[i,r]=t.split(",").map(t=>parseInt(t,10));let[a,o,l,c]=n.color;s.retainTextureTransparency&&(c*=e.getImageData(i,r,1,1).data[3]/255),e.fillStyle=`rgba(${a}, ${o}, ${l}, ${c})`,e.fillRect(i,r,1,1),u++}}),{pixelsProcessed:u,facesProcessed:e.length}}Plugin.register("baked_ambient_occlusion",{title:"Mr Salmon's Baked Ambient Occlusion",author:"Kai Salmon",icon:"icon",description:"Baked Ambient Occlusion, creating instant shading",version:"1.0.0",variant:"both",onload(){Kl=new Action("bake_ambient_occlusion",{name:"Bake Ambient Occlusion",description:"Perform ambient occlusion baking on selected meshes",icon:"cake",click:function(){$l()}}),MenuBar.addAction(Kl,"filter")},onunload(){Kl.delete()}});const ec={origin:new THREE.Vector3,direction:new THREE.Vector3,normal:new THREE.Vector3};function nc(t,e,n,i,r,a,s,o,l){const[c,u,h]=t,[d,p,f]=n.getNormal(!0);ec.normal.set(d,p,f);let m=0,g=0;const _=o.samples;for(let t=0;t<_;t++){let e;ec.origin.set(c,u,h).addScaledVector(ec.normal,.5),"random"===o.sampleMethod?(ec.origin.x+=.5*(Math.random()-.5),ec.origin.y+=.5*(Math.random()-.5),ec.origin.z+=.5*(Math.random()-.5),ec.direction.set(2*(Math.random()-.5),2*(Math.random()-.5),2*(Math.random()-.5)).normalize(),e=ec.direction):e=l[t];const n=new THREE.Raycaster(ec.origin,e,.001,o.ambientOcclusionRadius),i=a.raycastFirst(n.ray,THREE.DoubleSide);if(i){const t=i.face.normal;if(ec.direction.dot(t)>0&&(g+=1),o.sampleTextureTransparency){const t=s.faceIndexToBlockbenchFace.get(i.faceIndex);if(t){const[e,n]=t.localToUV(i.point),r=t.getTexture();m+=r?r.ctx.getImageData(e,n,1,1).data[3]/255:1}else m+=1}else m+=1}else r&&n.intersectObject(r).length>0&&(m+=1)}let v=1-m/_;const x=g/_;let y,M;return v<.5?(y=2*(.5-v),y=Math.pow(y,o.shadowGamma),M=o.shadowColor):(y=2*(v-.5),y=Math.pow(y,o.highlightGamma),M=o.highlightColor),[[M.r,M.g,M.b,M.a*y],x]}function ic(t){const e={},n=Math.PI*(3-Math.sqrt(5));for(let i=0;i(-n`IWq#}>C$v{D_>>h89s z17hpgbu>CSbe7OSG&H-xXe@Cf?{1c0SfkNkBuYxwz--AHi7*hDm4ShQ9q7Wqz_1J! zEX>6~k%AXuFTCsB{sVh?_I%FsK5sL>s-?Q^MIJc3le~GK=X}5Cdw#q#GBRAlHC)3r zT*Eb7!!=yPwacoi{Yy=Dv30c*x6Qj<77pRqZcg7ZK+dYohS$N>51o?dpBt0&f6dF< zg{EAXuglV0&8{np4Y{=1miOO2^M41@Q~P@4#!SlIy?bP_Uz63PrYz3ZWUf<@`Ciq& z>(5jS(8@wXRu`LU4SDA;sh<_Zj*>WV|2LL$ZJ0FQR+rKPt#fEs(jH zvMk`Zf>`R;4Z!k3-2f~rfVJh8EE5q0x^ZzvPXG2PzsJATKK`iyM9x1w{%iT-^Rj%i z(KUxIt+ZseRhDj}D4lvS0?;fLq#op@UdYR=fsF*$E=V<(ll)XlfI@odb?VXR;3_~Qo)>!Jvb?u zlL-ePo|a+~5Lv0HwJL!}hqHtJ`ld z_N?R-bnOi}n?5B^pExoI5lNio7bsxZcXW19#0mWzb18_n2<8SV*snp(nD>(?_-5&$s3w~UF^Cdl0 zHJ(>z^SOxex;d_v%^AxtWIof!Juwu6##==O$B* z&Af{gQDZMpNG&9y5dtae{q*s;?N23J)M7!-ST9lg+qpjsg80W)0PR8N58QXJw9A3a zsAO>3RhF!jQfbMnJn~aXGeBVR!_)Q~@}#eaEl~f}l263#IhbXiQu?});M}VMP>s)a zj^1M*>mhT_+WMK|@yUA;i0^iE{@T@9xvY(4?SiY-lui;3J*LzdB$8H%WG2*3#!d6E z34=4WqOk@0^J+9Roaod`k|sAM9B3jFOuNXzHrJBoN)Sets917`>@Rey28c-2RE7gY zN9!xTSY37<63x-97y;M-=h*;BC6sCO4w&R|2Y{05*`j9vpx-H5zu~LVr?25Az(xb>k91T<*a5)hj)_+We!P)*_?esA^5i zm%xm~1RUfI4u3=d70^E@Bv!S8?fQ?{XQQgsdRMc_dKmSy4$f13NI>-e#Gdhx^|~<( z)7XE$pED`0hEpdJvwZ5fM68E>q^44VEH{=Yn0jCx+D)-F1CE*gmBgw(^XF{ZJAZ8x z`+s`%C0DCM05Hy`#(v;xHKmdYLgK~`Pg%GLF#wPYhasnHSNjeCb5Gw%!z$SflPg`f zVu@ePW=&F@K|YWd%uH5>!@-e6?xO;Y7``2O?2rfW&rQk8CNvS>a0nFu{HS2k(XvN} zq>M86TvVwLZlr;e$YA4QTfYCM7Y%9L_s)}umW*XLu;n$9>}}mSY-GL^BOAa_#fYv| zpv~3i0S_SRyr~ynbe%GjF|>d{uNZR;wI8F5;xv-LIS%nJELYY$1_1q%jNCU_gq6gX zV~8nQ56D;~yw$t{H0pr#FGh`$lkraFbJO_n*yw1~NQ`;Lg``Vd=9`zFJT1>3{!KJh z0)i&z6ObN4^*~a-l-diAnqxm7$pJ^Lfzg#y;pA#(XI-T#=A+>e>79-} zhYmb&Gfv;~e=IVC8_@}0nVz=FD|`f)iwqlx_AHnXr}jXRsf(F+)0jaUBO8B z>gjFlSC7jF!RzwK!EK3oM>)QA-Kcuq(T;Cj$JD-5`)_zXc6;3!uHpK@^*^E+QXgu5 RfCT^m002ovPDHLkV1gr1Cujfw literal 0 HcmV?d00001 diff --git a/plugins/baked_ambient_occlusion/package.json b/plugins/baked_ambient_occlusion/package.json new file mode 100644 index 00000000..a34c8a21 --- /dev/null +++ b/plugins/baked_ambient_occlusion/package.json @@ -0,0 +1,23 @@ +{ + "name": "blockbench-baked-ao", + "version": "1.0.0", + "description": "Baked Ambient Occlusion for Blockbench", + "main": "dist/index.js", + "scripts": { + "build": "webpack --mode production", + "dev": "webpack --mode development", + "watch": "webpack --mode development --watch" + }, + "devDependencies": { + "@types/three": "^0.160.0", + "blockbench-types": "^4.12.2", + "ts-loader": "^9.5.1", + "typescript": "^5.3.3", + "webpack": "^5.89.0", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "three": "^0.160.0", + "three-mesh-bvh": "^0.9.1" + } +} diff --git a/plugins/baked_ambient_occlusion/settings_reference_guides/ao_strength.gif b/plugins/baked_ambient_occlusion/settings_reference_guides/ao_strength.gif new file mode 100644 index 0000000000000000000000000000000000000000..177d4b160b882aaaa169c724f185f8b8ca61ecb5 GIT binary patch literal 140063 zcmV(@K-RxUNk%w1VORo?0fztp0002v+Qoc!W^H6%Y+_w&VqI=!UU+e2YG7P(X<&$h zZFg{EhkQg)Xo7uefqZC@i*l8Zbd85_gnepfTw0Nga%NmxV_8{}jdPijc9e~DW?EU9 zlXjDibC{8JgMDhAn0kMCXPcCGU{zO^kad)fb7fjuUQ$+pduf1qXJAxUVpdpVS6E$8 zRh*T0m5+6xntOnHX_u0AotJs5rGcuXfm}~jT1`}BSXf_ER$*3HotJpw*u zqMUquYJa7leWRUxuBe0D(!X+GZc;o|P&!kXiHqLU!L_KOy|Jjrys)gEo8Z>Mm4%79 ztff^zSD%oP(Z;xreuUW0y=GEm%)zvqjE%pus&`~^uA!Y-OH*37$=jeTxfYj9m`VNGGXucu>AVvBl!Tt{87qo35uxmiS7iFkirN?*>#u*A5o z+RwggS7@e}mbQ zu%N+%2oow?$grWqhY%x5oJg^v#fum-YTU@NqsNaRLy8 zoJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXeNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCLyInX3zBI_z9KQhG!PS{OP3~@tVWB{uttrlCDe3_ zC#PVPR{i+ls*|IhycweU6=}5dnXMG{8cuyUrGd++vtmsWR`nm!5GMcH^kY+{oW{OW zHx+2-`10oyrVsYKzDrWmhi}S1yx71~iqtY3DkVvxh$7kjPzyqoQ0K}`fn=gyb*t>u z;BXHnB+L)j+2i%LfKHK$W5eBcS(DbR3nLi zKaiqRjlNKcAq8#eV zaVJe8OK5?Bg3E_7GD2xVrYsWW4`D{~NF%{ed5|cXY)D)uX(s=KN+*q6LTDhu1xk@9 zok*hFK$V!H2ra+vMv7_2q0-1Nja;e_B*W=~kSvF`auKVp78mP5nm}UBBC06zj3nGe z_E~TVr$)*H}lJ#(myi6S|1dU!@FXa-%jCM~?2#G-# z!lH;b)V)4jcnV4QLn#S4`5-fg>SyuN!?EHgL75L{%I2Ma3HpC<|GeR7b z5GKg$m&qfh^(K&a-?0+3@6^?j_Cm$5(oiQ5U#=1Qzz-Biir>*f5wr=b2>=Vysvk%z zA)HvmCq9IWVH8hA!y=SH&X&A3Jz_X*3P8$!Ai)4Qf;>|j2%P{X3DjUB6Q)~{KuXaH zTD1!lhY}gZi1e~Wv?~CzKvIVYVli((DFB+F#drU#v5;pdNFf9J!KMNMiCIub8v$TV zCA>6?4r-7(9sFRB3Nj`cQ7RDC`++ms!$KEkDuxE3*A%~$w1RLV5DWXkD?W9KL#ZNY z4Z*}BB;k-rY~o-X;RJOMH;{o@B0kj^)5Ijw3Ip1tkq0D5A{G%zgn*53^@)TrELI&$ zR8k-mbOzu80I{11WNaDCoc{(Q3Kik;T`yB1LRK-0=^5k{AIqOWgt$N!4QF-)5srEI zxDY4F@|MHVWiWow3mFbX6BZ-pDXEjnAFNU!fq0oJ+{GvA*fN;4Ob9O-G6^J^(nOYE zLHHt{Dw4Pp%Y83bB{WKtqDK@3VP z&6xse&?43u03kv&M2M2jKr)x8fyB|C19_eN6jBRInC~Etz>pOKa6v{CBoaSZL>ryd zQHEUN2mDM3E`QLsW%8~dIZ_2dFlr2qVlHmL8qP}fI2=p7GXNz$sX;6@BZe$&7zFX> zNF8F0Srp_EzjzrdLU>9z-2xP}dPSJPDps;4WEhKRg)n}Rx?=`l7_)fiB($N3RXD>G znc!n5pjHb6@i7s&$&JuD;f>X_CKh0G1u-6vFyMJ_RC*OEjVriMWI!h&b5x z8FnD6aM&Z5k&WdM1QT0)4kiM4kVO9&(Gp2BTuli=9$+Hm5!uKX;|OBJMHrPJH}#J~ zytG4u;9@ulE##L9k~v2Fa3E*ftwJ(qSAty7sRPjlheqa#MPSmq!5t1=J^F)X9Hc?T zfM`LOn-K5xt0CmMSs=Vb#D{ER69f_D4@@D61_4qa##rTrhT|{+6WG8DA=!SiWpHrNJgLMRDu!C8rjS2X}IPNBu3jZ5h;qH3Ra}d5^%%n zK)}}B0NfPANBTj3QThXy8YKTkTNTJDN@j}J9*VXLK}E@;Y>>fUBi$!=ol(@zzMBNmY; z3E}a%@`QA33j&Kx;1O5Kl||;(YY-ykLKATWo-t-2O;6;4n3|B1D@s&}dJ1F`whLM* zAhwBGq)FGqHAr@Zu{upbOL0OEZgL7e2wKyZ=~%b-LfVu6ZD{6NeC zAu~eG*2{zl$jSt91TBJbUS_}o-vjZT3`JqFemCS$qa;X!etJ)|De4C@bT{eZJ@0zo zn}@@BB}D#>5Pu%AA+rCNPKm&_>4zBO(U9nctpx(D>zV?qnOKA_X)bd-)?6WxV8nGU zn9oH#nzI%+2wd9~2`D1npaOXvdjfC@VOYW!BvW?)GNIf6WNsN>goTm<;0tqal&7Kl z0o0Ab2xrPd!vs;pCqv^;fb;eTzBTg?oL-P+(l(9=SM?7Z4mVS@Q6S`T_(6nYcY*kV z5v#}>EmYBRfkeVp-&sV&6+)+MoL3+gt7M8AUn24x|eZ?w-h-QND9umGU*>w*Bt>@h|(5?tP)qk+rfm~1+2U5f@ zt~)T=3&ept7s&r}XTgj{JR=hh6_r3h!9jx5VwKR^p_5wI{e#5Az5hYG{w(3v(B#Pb z9Fru3!(j)pFs3vn!;m-CAZgY|Fa_~kgSQZ40)S)}Q{NN-DY9FWur##*B%5Fj=hP54 z6@dmJ3ng<-IbwH#fIC!zfC|Wf0?|mna}dLDUk1q<BXM$c5Ym8f_69huBvqo(Y@Sqt;`IYt zm~d*hVTb=S5MvU8CIU9@L=fqb3+_^A7_tz;;e(Pi91*unmDg;HAPK4F5Ro=uN#h9d zP#*3AEuI(v3m7nwC^wYoF62>F1d&9)aCidIi3l+Xu40B=BwqtjHT}mBv4CcdFbkV- zT`AQ!HIfN|pa{Z{Ma~F~`iBszFe0r03GpC=4FXb>z-UWW3>jpCaKdkv#|peg3Eh^B^=pem;TB(CsHF=B=U zF(%odQDb5ZNfRN|k!<+aJlRk#DmEOfcMx8}3Z_8{rbrMnSbYHy3#?#+FeQW*5eP;! z9K`yY=BuJLPdcGib z2$2gm=nIRGHqDbJWjGMDP-ep*41CrK;g&h&5(tdYWU5dL#Lx=5;Dv)30EHO<*`Rn6 zMG)E$i=eSn$#Wp4qh?uT4eTRFCDIDQQap@sF#FhM(jaf9Kpw)yU)WSVvtXLvVF`*L zB(iV`oe&GSK?x5;9m{YYkHAU85f20+3csKT!lekGa2$c)9op~;p-BwVpa`bW2wwk~ z5Q#80>cMvdv4F$D46VQ#oB%PEG@Fc2n~iXrKaiVh)_`A<3+SU>cr={Fd7Q~P9Lw1n z8&n+>R}f~I3sBb(*)TOGXbMn*3ZPIj*1!sn@GZ^|3++K3uh0ms5TO%Vp=!1rsJBeR z5GxWw37}Iw+7O1$0Cot$3b9!Uq!0|k01H@x2^;bWjX)mpkq9)}38_*LqF@Qma0x+^ zBO?_FF)}rQPz|m?3#{=8V+TYl6-7Pzqtxd?u8<3m5G&B~3}K=Pi%^ozF$}Ii3C>9z znNTbOkwia$JK%9tm^WPk011nOla$~mmB0#?&W? zE)^r+aWJL8kJWKAlXE)X5f38A5SdyXlyGd_05s6VI*rx4)@%RnW>ur!uH3#$bSuRuWxQVMcRQvXs57w8ayun7vwEvAt_fj|tGz?f)C5%l7#k$@XWqY#hqwgu4% z*3bx~&>p8EDPc;dKql+A|Fl&nvue%X4sEF-xHjU>Hm=Jz>0b4G) zOyda=KiRrrksj$v5HXTd9ia<~mlPxU1HrJ5&H%fPkqDN+4AcMP3y_ct-td*on-{P1 z2~Tx<4SErmU|mf?PvGGlduSPwKpscfm6@=7=c^Z`@G`~l3%Vf-!O#ewAPglFtR4{w z*+B^byA-%!t&Gr$-jJn~Q4P4E3(MQTd+`X%z#rA&4B8M3R9O+a(4RQT6t{4iKd`GD z{K9C#n3>?RZb%B;dl3_xSbW=Fe8+g4$9lZSeB8%={KtgR45=Uhgq#Y^01kkh$Y1{<$b{U;j{L}uY{-bL$dtSk z%>c=moXMIT$%kCYo}3exyvd?G%A{P#sW8c(oXR9I$fexMuKdb{jLND!%M`)Nuzbt7 zOv;i>%e;ILww%kr9L%ts3ZD!QUU1CtunV@3$c!w^&iu@{?8mzx2Gm^5VsOmZ>;+b^ z&D#tQwy?}`+|1BC&g2ZscDxIt-~{Tt&g)#w8Su{V4A0zb1xZlP_M8OC0M23@%H`b8 z{%p=}JPKVf&;(u3UEl;VkkAUf&@uqeDDcn_9nts9&g(o1`fSC&{LdP_(V~3Dqo4%_ z9nuOg(j;BdB`pI-kkTr>(nk={E)CHXJG6u+&W5)H0pT$o$Q%YtuPh)mE*^SG)^7u+=>P)IVJWVExiA%>WF5 z)Fn*=Xr0z-jn*U0&~DAtLJ-$-J=fSg25NBEYA_1U!OvIS*M7apPuvYvFxXYV)rQU0 zIgr?3z1WNm);{0^WF6U(J=v5^*)$LZn4Q_0joArp&7Lg=b6o{FPy(cl*Lbbho59zA zz1pmu$ww^MgdN+mT?G-H*tUJ!iT%)zz1zIK+b9svz#Y$(P1%_3)j(a%Juup&z1+-g z+IPJRn4#LOJ>Aqz$V1!>qcGdrE!MSd+uZ++0=?}6VjbKWFx-`G+{T>&D!|>yWgbfA!-QWHl(dPZqP2JRDJpu-P;O1@E=-tyja0M)#((N7L z&aDRDz!=h9-xyxq9)jQbZO}&W;UFI3{tX34P1!^};7sk(2fpG5{sk`n1&4juT2KTL z{@_Ot;q5))70wtL-s3p!0i_HYqrl-EKF}=A;vsGXDzM~C&g4UVNLyt^!AX0eGJ0 zcwXl!@X}Cj;0!J1rL6{W9@{w(1!Vsq1&Y4tUf$(k&eDRu+!KD$iE-wZj>{>K>1od9 zY98c|fzA}o&a%ztq)y&?e(I-A6q^<&+P2TYQ0^0rpsE+C%KJC-K z;6Pmk3LxuE4(_$i=(nEhD!uC^VA`bZ>xU8S!M^6ie(%L@?3>Q%o<116aLmsh@K_G+ zOML|fe+8SJ@KNy4+uraFukA@5@gTm`F&^VRodZXJ>U@sw=`IDg{^jj$4A(ALh)R$t7RrDBs#Upz>O;^(^o5!w&N-Kl6f7^K?-5bkGH2@ahwO z@Ivp<53TT;9o!Y4+(mx{c5dKGuk=h$>mC2`?B2>%&*N8L)jLr5hF|zwzx7@3^d^~mn^`EKlCuk3^o`DSm>J)q8?9sC)f`NUuR#*f*BPS}R6-c9}IBS88ZU*{a3 z?x|k_!rb1D;riuV0k;1i`-VUJD_{GJukX1p00(gX2LQ>$To}Ax_P&4EXiv?Rf7iy3 z^DjQzSHRrh?)=cd^wQt-03k)-z##>P2tb%n;X;ND5te`$F~CHM6)j%Gm{H?KjvYOI z1R3(8Ly{#;oDz@02-91hX@f497TG7VJeYL zoj!#cRiqcHROwvB+C{6@9$mdw0b9k16E$Vcs;Qdx%UZTG~NOGt$rS@L9&j4fZrY!bp|&Jb|6^eNM3&Ce`{>I@At zC{PncT^CJ?bSeL3+O=(mOzQ<})~#K0t_11uqK>cYtjlh&^URw|fdEfLF)H##WHB@L z)Z>gj_a=ZZzS8ECsRbSF!|y)*VB^of6o({|q5%ms5Wxf$tb)Pe&VZ7_vo3rt!wu`| z(8CV_Q=vr`6#z5LBF7}NqGr5AlOz(>WRtxLV2tsz8Ece}Cz^J|lgA!^G%Co2m?|?+ z@y4o(Ksx`DM3BiQolGN2DJ!HBL+GxQAj=W9ydX_9!xU3cPf^qq%>_nXfK5|La1+kW zN}ChD(uk-r&mDX8@kjoYTBw;%ccpDCUqL{!HzgHiw9zvjg)~wtue21fP@m-#OkSr2 z@7eN5#dg$F+k8<~R^6+S2yw?1H&$6`tyRBU8Pb(ncc1cgEa!OJO35XIE7s9RBW-Tk z4V$$#;Al;Jx8TSE&MaGOw_P(;Z{-AchYu#6m|Swr%@f_$Z1q#2b`1uZqfz3evIInb zV=~`kk>yv?xhUNWVVMOOIAoifn%OdiNo5$-ZsGhkv=b;M+Tw9B##3WH*Uj~2r!Cqg zUMK%9oa;c86;v5nHCp!9uAIL{sOG1~)(C8scGi|*hk=Ip1h?NFn&^s+h7~?p_1u$V z2ln2ZU9z8!nq&(di=uGg@MTnADY=HuY{$cn_HW56di*4`OI7=47+Xr9^90}qUGBM! zMtW9sUE?5i4)|u>@5ybJn(Damsf8d#+VlCMJ)q##ws zpg|%QQH1MrUk*cdL;;ZSR1RPv3h}4H&+X5Jq_YVE5CA9~Or%$w69Ch?3(DrAOIilbytAwdMb07_;lMqMXJwe z^7E9|yr$f;Ny80@)TITz=$H^1t%cT92DFo85F?sSidIyUF)fqtHmb0WI&YaP$REXA z>Qa(I)1=i@D2CPTAC}Ih|ltB-+!jMGGNX{ghCLimjr8?x@iF zz*Ps@RB4(NrK~JKUJFoFzRDG*XhqQ|W|>g07FGs&G3QQuN!FYx;IIFHC6ij$I;yt9 z&3-e$Y-ZsqR|C-XsdptBRrNYrzFPIFkA>`ib}?9*8rHQSfT$P7%Gk%HHmDk%EM-5* z!p!y-vzwKxXYK0G50rMadMzzg{hC$V0*I?%a_wuKvrE|)u`sl)ZF7qx*~u1FhQ94B zaIY#{ehTsd=S}Vgj+@u?E>|JibuMee6kWq!$O=}dZiu>sU9-WLNZeiP0Y#ck9e`J} z(Bmw5r`dt?HW)wR;S3Fw4Fd17*Uz<|tzWNmrf5B$q6ajdxoF%Y&cKV}6dPE)OWo&- z=^En)8+W}m9_RqHe3~QQX2%%*adbT_WDplQXMpOmc#=#i70-al*;Mh9naWSPGMLIU zzVd_(pk+RDInA{BvKG8*2118<%tJQw%+UPj?*LdmZGLkX6=+Siz-^OWxl z;p1)r)W;6BsJA>6S)2OHs7|#Hq%G~jwpzchhIO-VL+e`K`l`8(^QM1&=}Zed#xveR zy48*BV=H^vIM%jQPHodvM|;{nIKmNXI_3oN=@^gO z(&dKnus09{iU&d67iV{}l}&1aJ7wNAt+%T0oo|vKf#3fAx26K#aTReJP6%IWlNnBB zhXb3Mn!aUHMgb~waI+TbRXy$L$sInRylb9V>5>K-AwLXD1er7vABAaHtNI3@L|zx`m9 z%esNL9^nFfo#tT=wmv~^cE+Qf;%Z+zyML||Am|4f3iSI%M)7QVhn((8hmI9M(9Wpy z9ZkE)yi{BcBZL$FxQ1^y;&0x8j5FTsj<>klGtU15QLkVJFn|G{UW1I(V`TF?W?3iG=_(?15V3wxWky8FKX6u|P30y0pDRIr5t3<>P(jKN#L z*K5FDyR;bKK?t-a2`sM0L=@k*J)X)3PrF!@~QzUn|2NjKJNSK(yzC8R325>&Pn8H5<#1=8cScC#7n1)0Q0N-K60dPbxq%r~^fSQ{` z9<0RLD?brP0Nm5LK&mrnx~dux#ZUx-XpBZu%rR3W!NUj){mZxK^TT#}#e|RoGhmTf zB*$_jM{%$|Tx7&uyukC-6g{ zbW5O=x-0x0N&$;e5V)k=$fZ0kvx7X3bjn|Rzv z4zUCxFu_B!%t^FV%e8cZx8%%MQvxMmA_-8Gu&~QgBRH^8N(G$2Cg{t*1k7;@Mjs4; z6;EyOEZ9z>{0*mM5&phCL#5l8Ig$*)2?n%(lBAtdppkhOim{_f)iyQGoVsT zy3#=9RJ!e_@vgouvWmZ z&$Wz#Rh=1E{U!f{CS(CNBOw>om(^OT`GLnTyQ3FoLoLL+&+p{&>n?-^K2$cqK+lJ8D9oq{9 zC{<~@R{OMqD99P3#U!MgwxlfxGN1t(VA`gATD$0t9B8(Xb=Rx)Rb$**$74861zV>a zjj{dBH9_0W0> zNPy0CU*v!Z__-F20cE>Ein-AL z-GToy_8hOYVH~g)KH=d6&S8Y0y3uW5z2MBI^#SkQ$t1=MzI`=9R07(q-6#IcD3)UV z3*joZ;u4nMXK~jEaDbQPvoMxqy^6z$Q6ZNcrG`*rXSEhKapMDqW7pBHARgiuz}+yB zU?isC#aQB$Gg?C?k)1<#J1RyLX1RIBV&)*7 zVCElrV;_cQ?HYyP5MpYs=5i%H)oo>lpaRCif`KMzEFcLf027Dk<|nS@{NoOBmQnwN zK>~9gMFBV}DOzWCrf3T==64>7c-D`323;FSq~_`d1;LWMSWat>J_X1CKIX52mT8$r zh$$Etg^uD`j^Yu4UuhXZYbjTRxsoDYzGjd`|#rzUCUf-jWDi&%uxBMBkQT$a_gNCA^aHIxjvOp-X6Su zYQ45CzODML#zal~NqMHp{9=z+FaCQxjJ=;qZ%>px@HP8uq=uI&FFx$M(m zYS*wK&W`H$vM|t=fWY`nelG12wvZ@DZA0t}O~LAfMhGdG>DP|!gz(_9s_itpZA_AE z4-g>>&=?cw?T@DGqR^fL5^m2JvAs6z7x`kLc#ineCBrjfwD`s1Y3J8yzQZ|B9C?_;LTg2=c)0a3TkR zegoQuMRJA!G15DNy=d|yF!96|aQ0DgZL{*3v7szSmn~P;F5jjK$Lk9REUCGGGQWT` z4-<0alr$%DwNwE&Z`dJ&I=bzUI=^#pMez>e6fD3<7VmQ}(FtS%bXvJ=nI-fBVsEJC zo*i#4sc{0o2yGyDbOoqL1(5WXY1lPySVh5f6(}4_839gzayrCW0!ZCW`dY5=zCA=e7B5k;rCBUbrYbNfCu<&CwNy^A%q7({~DQi0Su&r zf?U^ibHrT+IQNPV;yZ8xC-SoVJ7CG`LnXH!10xwzc+G3-*NZ(rqw@RPxqm}gSo#0rMLT~?|4g*cWjgCc$<35 zNgJy_jeZYBxZ-+&|5rkvqWl?q0m!k1*F&A3#m{8>a{T$Xj})N~G`gSrySIC$*L$Z= zxxSbBzn7nEf!?df@=){~!{>UhuZaP;reO;dV18|~KQGM3204j2Qmxp;}n|;RLo*!jwx80yTsvXpq2wgbD|& zXy`Bj#E1zTP^>86BF0n!HgfFf@gvBPB1e)eY0{*YlqoN;Wa;B2OeivC7O81-=1dei zcQWYdb0^RYLWgEhsqzj|q*j(PWg6uv)Tbk+QXPTuD%Px8w{q?3^{ZDbVzInDY4$AI zv}({(4t4DHL8WGOPDWl(zIFR3GAFeQTY5hn|4p4rnMwh+O%oZ;8Wug zFK!$zS=FSMGjCq9+41Pov(9yk<2qive76JcPIxfl@Fz4wbnF=NK+5VZC&b*4JjKqP zKRd5)AFb)CBUG@LVW$ZEJo@N8cCm($o`j}yURVgrJO#ZnR zV1O(EMIZwPGRXi4rY+c@Q&4qyC6-!M_#^+9U3Qcum|A_9m561MSfYswp!gSgEFMN) z0xv!$Bb_?XSQ&fntq{>dJI;p{I9>|6T#!@^d8iMpLGd4wu(fo7PE0z6loRDdL$2q^VbT7`Tc-n{L8so&mMiN#~si<%!t_Hu~uqprHzj zpHcc9daRK)HTuM(ER8_mqy$=OsTG<2CIPmiYAfNV!+I;)wqTZe)u|z-s%n}fyt*!| znz=ciiyzcFuK~Btc&CjGZLn{zmi-FsRe^pxa7cwtbu7X&G1_Re&OTe>&D6=ob=9X@4YnI$S=R_{hO7*AAh`?u?Qo( zFp>>lP*sx=OFQwk7%MG7$W6P|vCdI{X@zNPnJ-C+qy?ywXgoA1IxeK5t(AKVY z9bN*thF$O2xejnP=V`0$FWUk{FuL1_e>+Ota?@S6-OCEC-v|OmD)F>Q2hOzOxeEXj zMy4aKJC=-R_v+)2M?U!p9dtnUYl%cG%j(4-L zFWWcLfZq;0`xkBhcKaL(zjgod8bsc%Vu&ffKl5QbKN<7_C_S`M4|LZ%VD?7$zF~Q< z2Sgcx_#&u)B$ZEZjZ%RMj#fMM1ulNN)5rpK=0OQDE^_s|Uz_%)!v49;c>#Rk03YDF zel6sHHcVjYLO7@f5+wr?{9)cKh$IXWu_u1BT?a=To zS7KuLg@RM#N5Nl#5M^eIW1YNkP6;gT7 zogy@$qmqIE`lwPaMF*l0CEP?)_PB;v^rGlgCyfvwRgSt7n4DVzRzXTkks=ca6!4pSk(WK;I**VsO~+}y5cL}%h5N6_nm5f_sd`7Le`Ql-~o;YJm4Mdz`%DIF-R7y zpO*9!yAjUrfqJ4S3;U#+8SX*}$lKEnj|#--WdajK4CIrPn6?s4m5Sr5+e1z!hG%7j@nn@}op+GDyVmYoT3dIDj_t!`;#=H9-zomypcar+BW9aNUiuBLMb@GR>* ze}&I^?cSdo{HU62chC{O&5{vKpi)kS(NX5`qeC|7Wl!4DAi=bIJ1y-`>&c=8$knLP zY{UOKLl)I;CT0P2e1li>K$o-T@nzj2-EL49HM{2ZgnfrPW%bH(LxX z`>hMCi2wcX6|YIg%b*R$pGvbLFZm*T9qf`H0`xVH!6%vBd!MH{>P0Vs(sQ5tumxx6 zRqyHe+UV|gdN`_KF#9zRSEOXbJz}A5M&7Rr`1Uu!Thf>e#v8x?ZAiXrVBQPZ#IMoY z^F<%@We~n~p7mW{_T>)7be{zFfEbV!_^qAz=?R{&hxv)xndzPEMI1*-~&2M+im|J_lbcL zjsjUZRQRbLW~@i~x!(Da8VIu4`enfegj5Mu(qx<~ATl9YJzxfE&J_C6ox}i|r61pIA!J3C z7v>6@>4{=h#26mO86Hj=_TL)Tpa2Bm8~#WC?SugO;1G~k^`*}BVV@q3ih<-&4qU+% z0HPA^LSA`@!O5M^)e70z$N-pM3MQqJ8qDdS}9kHTR9G%n;bPDn~E5Vkbl3}PczJW52WL4FhM)I<2%~IEzTp)DN$45BL~`0bMd1v`s04_KtQG+am^F_ z(MZPO*48j2MO?{4zK_xrpBi?eRxIB|`X3oQ1+pYxApsJ!Pl&vvA;zSR(d00`*gpn=Tn2$o64wWwpza~$7&hcvoTa*@(b5P& zQm!FaupAs>SWOYUS94`0*s-ngoz&o=0#kiQg+2*I%Q%$r4NMTT=|S+ zI%W^BqGV2p88l~eQszsH027n|W@hGBzM~*EAyz;DcW%XOiKb|VOb7@-$(W|hScY7t zrduweYqsZW4%eu0&V9`$ZED8-z{P07MQ$ohR`jM5Dr&nGlE#}-xVgz?)s0U!hcYqkFDsnZ>8{ z(5LdiiDJCUw(O_i^k+7{MG?$k8w96t@<)Ll%7HpTf=d4ggC41KLa35PXmx5PARd%B zz}9wVCtl*$C9hD4b}Fjb_V)1ZZMb z$VC)qV;*RcatM-|K@n8Sl0vA2PUuO_Rg`Yllxiqp2mqFb=f-Sld3Gsf&9sJ1w2xmc78&CsNZ zTQI(XPO9e84eY=wW7s_F03edIra%f*O^8@)8o?5rV#%p?>s7qKorbHpb_J4hMG+){ z-+;iZ25MH!m2}<3u2N~d;sr!`Xs|x&yhzUseW|hPm><-ojKu)K?(EKjO;gp1Wnk1H zkq5&TEyHHXsX%NKU0|39sKs7H*a>N?ZfsWU>4IKGb%yN7V&+zuY`fwGynY9XxU5&i z-Gp$dnaym!GM68G5zg)x&&I6?aKO*HjL>2fL>R5!8tqj?fOM3L(&~^Cj>?bnM^<2- z0t_kDYK7GQ*V_(P z+zRc_wt(xp?%f`eQSB}5+N*H@?p0*s?`(`#9xmqPKn`f^;xg`$G63*Cu7pOel7dC$ z=GEn5E_aG;cJPJma_Hy&?Wv5;=<@4|n(pboQ0l5K!N%_8ysr7euFw`7?G|kXoNdzP zt|n29YWS|?9dGasuUEjT{UUGH`pxpX1znviUdURn4#wv4g#(mrXhP9-;L!GR?_6?0 zbA2!LC`9-=RqP&8t(-3hzpm^S9AD{e^|}SHn#%iP1T{7h;k*R>*6;DQ0se9Y2<$Ka z_V2_HM|lZ=0N=%|VSwgN?{*9&Xk!0qAmNbqj@r!9tkb=djnw5i#jZhwKnHWMUx2U` zx36)KExDYqT@>X4d5{3Ufc?U73}1x;SPBgXD#%VtaZH&Ge=QHo+N%i00VA+Qh{>;x za91pV5sNMod(Ip9fzt`t79gwz6Ib10@D)WdBTF$AuZa~m00u-yz1l0_;)NH#Pwq&; zT|un?j&Vr(z*{_l-=s0*f&hm|S3NxMov}*@0I?nO12(#bmYQ%!cXTvg>ohO)UHz^@ zXCHLV??p^B#(1+uV`lVaw0Z?KG=uc3G%`Au^md>$c$!GHb_EdhaSZtZ&D670!6;43 zNv+ss6kAP*bVpbl2Mg4-PZP8NIDl0PH9|`>;TUx%TQkeq??cxdPAoM{$iVGDwf!c6 zDRxK-=ha>(0G_1`BU}G~1;lbitV&td@^(DzR*ZEnpN(11thk{W)Va)B!^l9`W&^-A z?jA>7&-Pt6b4Bd6NB@{#4-Q}-E@AVVqRfO=D!|n(c10hr0GJ|1b4adk)?`P-4p?>+ zV>V{%MLMs_0?=zpf3}Edg=phYX(utiFc%nRQQgW36>SX&!}fR{#{tYXeAhM-EF^9Z zbs8zOQD?;yBz1=ccW}c54G^DkPYm#0g>rXDCNtD?Lqv3!vq4aIbze7jXSZkb#R+2s z0T{6XEP!}>4j7_f2MDuy)K6=(OC-PcsWd=)8;4!MH*McFL)Ld+`w`QI3}6TLMFdC= zY`x`I6kZs%J2NnJO)xaf(A{0q-62Q`2uMgOokMpsbmtJ#NOzYANUM}cC_h9bMCJ93 z^`3RkI{(04Yk$}u?q^@mebp(n-ATAWo_gay=uJCKplf|hEj#T=BBH2pqn}+9dHsz3 z@!jvGf4&u%Bs~@ApjZ$u5fp*4CwSSE2S~_WNqGA>zVTm`KwQ%HPla&PnrBPx`;OS~+y4-Beg?p3G9qMuE4xB&vpg98ZEx}NvpO@mcN0CDN@*ivceZ^jhpPkFHneH8QEh5sf09fd1enPwmgXU{V6rf%`yc=)^Ps=|MMzA>#WX9N8>78K+lU z(R3m0W<8HNLkeC@d2$9AHTXceIJ8|& z`^kB+$IibCK7E>cR9W)X-J!v2UEm?7a7ZUND94eb)UqWr z>?acR1)Z*1Gb+<=GTFrwT?k%Ez(U=I#{yCi~^{ z>PW@7usp~!^;D$cyxT@ zOv_ZMFC|g08%~B@|Lg5&OM37|FZIK?`|0kP^_8<1&mi~-tCnd4*B{+<2Ahs6d3!0Z ziAH9~%T-*bxY&X~!vHXAx&n@+@zNZa$;Utk-!aL4RD@^Vg@bz&UY5_f2iH@9YC61@ zfFerRrG;Rs-XT#-yOG?FRkSMAQ7$4rO-P}!iJ&*fVMH?d6hpKV#eS5 zG#p4~zAIBKL%kPGW%KpzIit<)z9Mo)Mjn9_%)Fa#Oy%{Xx>U5lf2ObdDazp!qewL{Cg`2j-pDTB+Glf6z zN8GJ%_qsl1c=)co8YQIgdApgwzx%Ve=GOm8J{0mc09<8!iJ6imll(7Gddc|7UpVm8 zH_l?Jm+_h(zkqgvG^(i2qGO9?&^3ooTJL_iYc*HteKCn6=qm-lG52+^>2%oj7}NRn zI{0tXtiK>h39-BCFo@Q`1xMQ!M0498^$i&b(;41C`i+pCss>Y@A?>BVuq^YbMKfA1 z6Y0b=gX+9O-R4aEBW{(LoZ|g{Hk6ZkW0V*En}=#gQ@>3-1QagLx*1fZCng=SNIK=u^h!=IP@kMr#$ zt*~us(@uH4m7~^33RG{Jlb-1=Pjcc9Bppq%h9pPioG=)LVEXKx>NTp>l`a#XL=)dB zamwpBEr&e+;lMG|J({JPj`@|r7Vd=6GLg7;o(MC)=xw$cI-0+Q_I{V_WxY8 zNNP-0_f;TJGyzr8VM^vqsUyEg<`ep2wh8rxImvGYCG$?1;=3w-N443fxTNSE$wi-n zA2|cswW?yG?<7$N#TOw8vN;lO4)1Da_*0KLwU2>Dp7ADND)7ZmbUUD$Wp%Z)lP$jKhr-rSXlsVA^*BDI%LW82K zR&Z~){{3mK)JROY*osqAcU@(dEvT&dMkg9T8QzCzxgRS(+^#keaWs^TEJ%KPZff?r zzQuTd$+qX$Vsn^j<1@Af!YuKgj`|z|+Bz4f9a@WX0(O~Kp$>{HdF$6-6Pv*o4MsE6 zI5tFxwi2xKvlt)PcxF~50~qLmW4DNXc0VILu$)d$p(fl7M!4f-K)AGW#V9}w%^ zQ`RLu*4s-UNh(|BalmsKx1#Z#>0XZo8-q4W2y{BWkD+7Ee@q)Q3rH@&$O(wQr`z8& z(zm)JT?~!c#~EMtPvtz)Z_?Spy1~1{H7{>`8%lJW+elfQ>q=|ECV-WPEyDCVi+90+W?PKtF2 zk*xL^0eQ}GWW^QsCS!MzGGNgAP7i#ZOouqZ{26%IWkA&nK97{#ej7zVYP(JZUxWWY z21Z2n9X(`ab*bLz`c(~1<&pNM*#%Fs@54UH3No-Xi=dApxV8(q%yf4Ti7-v!a&PzJ z5+z$%MvV@z3dL7d%fR^b#mlPoLIs=TU&>{E(>c>8E-s~;n@Vvd*G=LY@S6+_vW;C5T3 zue((L%5^up(k*7`b;^#A3VOe>1$-vE?0H)Z@?E!Je&ctO>6_wh!y?`J^Yu;3$rZrr z^u9ss^9>%9tTy6l!Y;V>dV~Y|a{cG}Dp{$>IIO!Nfk(ZUib@Js$>7k}zyAZ1r;kgT z{N<3w;vvV-8x!_EA6{5lH-BlzqEw6%dcA*FGA+JtWU$T6nQoK(L1LdNO1GjMCO5*I zDBZ2pcNNd8&8!zLZ8;6~#i~n{W;OHs7Qfr9|8C;c ze>qq9L3hX>CD8TlrRP25s(h%uTT?$rcJt41-4OO8YB?zWmf@l`?N@)X^ZhnQ!dcR% zKf^(vmZ+)2tuC7S7raXXugPEUS^5Q=?}gpI@EKn4RWb9x$qLXXeetlv#IH{foasIMestI_GjN?-pPx#H^T zd8Z!X>T&`fQ~cal1~Bn5%X-W>v=F;o+{+@Ty)G{BhMWDC0%T|K83YKjyqHYPAr3kLh3R4-j^5DxnC{-I<^|*6c1SZ6O&d7O9=DTKBZkN#BO09 zDfHVTtoWlkO+8NS3o(#2O;vn2>cR3MtnT*iFf1`uH)kj z$|w2&k7y=GK_d$Q66cbuE)L0Ii0@5^qWpqdiAT{1dpRr*%#KiVT;g%JG2cVhF^5voo#K5YWZ%4Cx2|JHP~a63v+$&*)K9uIrQcyZp+&F&fkos|JzpRoGI|#P2^c4z%Nsf_$4m~pFXu9 zP{&zrRhW50SXRRaz<$npaLEOa6Xx*dczRi&U|c1er5p5PIbe@Rb44(N5AT(N5c!ee z{sAY$OGtygIE!(QS33##r34{T@=d)+xQJlKkFC@U(ZFHJ3_iO>AE_ob;i7gv9^|ho z*ho+dyz;W(br$}QOBole%pA_6e0NFwEWw$V%k*(9#ZIpjmc0Fo~{J&cXV~P zE1{Uxp7AS>_$U)Q+sa-kE5qgFj&_jyIKnJK25@21RVYV0x8J+w*FWUlS0!9Jm@D94 zeMAEvzgB;ARTZ&np|XgIHxUp#)|mL#i7}KSI_|`6*V28Vl@zJF@>-Nq9n^UhI7nn3 z&3%ds;A)Q7xv%~>-vMuhDWyU5hURs_!v-vARFg36&eyVUuJnGe>Q}x7GtcPj@*DVO z;}>@rP>M~?zY}@%{+3?sQ-J8Wyb1oTn^BbLsnxC#<&}Pep0QyHK=37Z`70Ag6BFO} zw?0O;tOni&Vn%mvD%O;bKN$aZ{#o$gK}istv*~*Iginw;%CyHw?1nKyxc|!hUi24{ z!fzF%K~DXXYO%ff*H$qt^owcg37y@?${M);nfB#y!||;kmz{zzYnX=`TKj3%l1Yx+ z96i2e&je_n@^Q|bO%mkk)8(flWDCES?N&S{CE>%kCZ;bv-;s6c19j}^I<{#~i&+t0 zZ%r}Gehw_n_Bf9f2r-r>6bFZt!Fs#67(=@^9#(M#jx5bjeXn7;-z5W)&#c!T7WtgW zZJnNXIZb%d{Hc%d>3rVI*HDI`H}hK#TDFc`leE>f$w0W|tR4E9e3B&umiW0gH#vw+ zy;%8fHUr%x_|bq!L0Ff$^sge$HBPbw&N>K4;Ki~IdYS2^DdKU{NDh~9k?E?sYVyev^y4&pB}4I&upQ48sp;%Z zDxK>D>uNwQyxJCYccJ2GdMs<|@5>W~$ldkLs{QC-*5mPp><{Kq;*Ef^j%=WM<}}vdHuDBHSN*E_4e9%&z+!*@$~P}-bAuGkY_I)-!_yuwQHgqIiw>Fj!ffA$ znR(MKT|3-_tgqjSss#VIfql3MU?!z9M9z7!?k=g>AnH1m*>m*hjd% zjd zfqPLjE%7WuNl_w(Bh-4$sKhC+~X2z zB-8%frb&URp=I&Fo^;Y4W5(Td%D{|&Z6pkL87Qetw!r_{K*D#IDI}F87MLZ~lV!~b zfsSOU(j*%yQYYF$)ueKQ&8evO@NI!PrhyF#QW(!RXwV*h*e=AGre5nVTj&-6Lh~>H zVe+_8X+?;nW)7|Lsh0HL5IclgwM2m)pV zd=DypK*PI-FO5RI8lizJLa0Zm4N$0gn&Mog;>|nGsy!-cTuN~?q^ca!I6@hQq$UEv zY!o3jXv#2KNZuaId<5cpRsyLgW!uDfKgoqiQZ$Z~5A4A~NQlA+b(k%p5lDr{46(Sw zR|(>>x1$NOrGZ95_j?d%A7X$sWg{;P)&+GGz>{4eMl3HhT;7K4M!-I0+A#^ z2*e&fts-nVAMV;vYrTbx->Q?Lpu|Y&iJ~Y%$_tZe@^kX@i)nHz^EYdr5QLUfaiftB zP;@;ph-&Q#wdjaQzanKS2v$aey7+~E)hqJr7bl{e`ig}jY#2_o4-YG&#M_62*;0dm z(6BOE&@df+Ul(3q3n_DJ_*+;qii%OXwo?&#)l)1p4xy*bZAYa5EXoMC${;~VctJS> zZ3SCF1!}H>98?*z^zWQnd=M3=56P|wo!%6Qw1cHGLxV=T$?baz3q?w{IYmcuN-ZRZ zd*CGdG*x!U*ggDg+9FjnH8nafX0DgqzR#|_&sUGCW{c8?Hus4lGP0mXPK64-M-xCPp*!*IVO!DwK_FC;9{Lb+kA#-f(w0MH zQ4oGbh_D^9aik7b4r@arUgsknMre5H-^lEY!I;O@`^WWVCva>h)VC(=ije#xW!^nh zCW??YbR`Y|j!}e|ms1OuLs;ohv?I-=70@C(vl{Kq8NQ6l${3VW0YR7q!f3D|y2=Jy!5V!D)OCZ}jdY!6DS2n9vJ z)OKh~fN&%+Wmp*^-VSMDS2*^orP2Wb-;SZ~YtNN#14p*;(Y1>ew#S^c-$-{TTNCgB zOYxN`&FNqkw7JD2FtSKk$6dZeIl_ykf2at;s7U!RDuo~cQAL+eipj2r+pY)yS@)LO zh#S~QliS3PM2z0yKURcb6gP2(VP1ih(R=v=C{*%DDQRTeW+8&Q97>CZ#G?>as7Y7_ zrEU3kK6=6N7k*+nRL2fNjfObyy~nYGjpx&J*nMIMMS{>feINQu<%+69xBLEVkI4b9 z|KwARK%`McV<9c9d-x^gNZ}DE0drqvG-Wg}eo&@=N(L}{-ye<~Sl=Gl*+%YK4sLq( zJ>R2Lvw{lmm4Qbguk6O3p{T=#X~`=3{R?0=c7;@S5N1UrZTSulih_L)hCmPCgNi~! zkm)uj`5#Y6L8nZir+nq7&GKghp=S?$f6wqMpqzHa&4Wnz9{#u-#lQIL^cR`D*G0S! zu>~%vqRPz5p8yID0evwgN7ucvb}*&_+NZs6jTxjM~qNj_d+);kfL_5 zehXwgFjvm5S@|!%If`O-5P}&zAs#*dK8R!nLOJ*FtrW31id0rTPy*|!X}Jq9GZcYF zM)XfSrT=uYv-tftk{Jz6E{8CdQzGmTM5FWXtQIz90eXt}&&uJTJ-9|W47mr%Q=Dno znJKrL#mb^y|3-FLA$zTm!&dV%Rww|7600*;1sK_05Ze@Dyz!h@EvaI&>Q57VVmhyPD-mD#OW9z5eMoLdK zc;WgWd)#a?w!VO{W0~Ag@#&x4al&Q3idaqekn4j?CCx|DnvK_E-VK;c7~Zpg*V?Ng zlz5}V1#w^MRpM|zEu;`xtn6^x)^l$)c8;;9T(-Z`c)#2M1iAkjiO&}|f8@l&I^pax z_XKJw^mLZQ4v@qbW9>SV_@23X2o&Jjqm^gmshpC7PlPaz_>@B{#Eh6TRjypCey-oG zqdj3_Kg*o_AgGkYPDB$|++Ns_{nfgj5fdiRAz>{{7~kB60%n+wf(**F_1XA9ZRkFSx1qs z#I54snrsd=;eAAaqs7~*5Sb9E#C54fBcGBDr*3A9;%_Oq~M&%S5EWHHm&h4HFf5`8A2%(?S?GJrqF5D zQeNh#fXF`zno0#PGUw7QZ9tl=x%6L>m5O-V2-tE=mS=>M;RlthncbrV9I43?)a;$S zAXh-*gF=o0vMT$%ji90&XilTz#ppD5&hBX9GqrD9XU!vIXDs~b^f$`v8D5}S=GXB( zt_{F`S~sQfj>CjV_BLodOYc{>w%{Z4c0;yobK!Nh3##1&nZ=QxtrE~6~lhK)!nfDWK)rM%Br3jRm3%J5n4?di5TK^Cp{H1UUsmw=3p zj;F50uQC(3KmKmfU{fB*tWw!Dz=!h{?lP0Gtr@YI@IBI2!En9h17)+m;9#B+Mxvh2 zllR$OD)V*Rk*qF15*>KQ+RoeC;mE`kX34h23HnanP(`p_4UBkS=u!;6psDbs8(bpq zd0=1Nc$UF+<>l=8ch{7Uog>;T19ScD&u--F@FmO6g4 z>P%anYD5foYZ~zDcp0znxy`(#RW*Bxu6=Pt-Xp3s!#m*2nlUPT)@bMYC|hckbq7cF z$IV{a)4>nWasi0>qj;%19gpvr6xAv&&i9g*i%uDx(O!{|CW1+JrI$o~xD%=l+PdPu zC?nLal$?M|V2txoqMFG*94#61=Q@UdxbwfzJ2%1yMpWOOpb~=ql=P=ZH)Muu9Flz; zb6v&SzO#l!4M!X~0Bbc!F+2E{OoVWUm7;v{(;40yfe zVgjNNO0ChrKWq$UdD_f0?I@#5P`2u@6K5*!>=1@|CdI^vS<|~16LygW5X8|0+QtmR zl`v)=Rq#g|4oWIHv-RUFfSM&LwhaQf)zzp``)?o%Oo^tFixrk;sUoCSkse;n4VWT4 zVAUuejegaZ!l(I}yIpNg|HVprOt#uDapRz8BBvX62`r-*$FBq__hEzU&;j zJnBFB#u<`Dy|N`CS#26y#QTAOA2E`g(ij=4V5b76gbq)XfeIAL$C)FGjTt_qr zIm$$c4PNmA(iIkYs#=pjIz&>Yc7r(>jZ&WA#nXro;!fDWlPvRa;ool+g_wbf>Z0~S zP%Z(M#lnx#jc*42i%|)oG)lZ%yBRD*>H)&MA(2;+N~4AodbEabOuY=4izpU@6nDzMQ}zPfZZK2ZpP+3-HJgmXsFB9rjno)krmAiI$C zNFqkZ2!*HCLMp^7yk?}qY{AX#hkZj>vgr)_`*qh>0GsP5XUx28GVRCbqSQv1l?N^V zECd@ZRz+8^vFOJ02yxFzuM3;hv2OAQ=chjAria?JP&4zEdDov-FePnZc~es*bJYyP80(H^XBRmSnw?ac;z3^7G`4=r$Ob zwL&*ry=BXr4yY|lDU@VEa)H#a5O*9RVNklhkPYkopyLj!gBgnF{6|)b-kkWe} zlJ{RUG@~aOuw&1W3ve}H0X|D$1wpF-G4ps&16o+*QJAUzBb;4gr&mgf*$KU?LXP`7 zCi@VFr{l#ezj1yc;znBuF4L1p5?H3RXC^lJ_n3t0Fy_hv=yahJ_o6o|_qxIf)NiNZ z%X{Q;lGjp-op3|?DawYA6ITL5Ulzk3o=MdR$sRo;vJX{pa?q%8&^dB2V0Tn7bUgNT zq^WUi7gPW18$zQ&hi)O*GJdqGsz-l}9{+)ZtV1i73l>YrWnP4FNWvSgEVI&y6L%x? zpd>A21dB`1MOzYMC}0lb)>i|sQ1EQ>^StZwBo^Y+`c7D6By!pXPul0CU||t`X15mW zzT4`qnqlw>;X$wB0rU1y2gYcjVtl@Pd>6M=-GCN)MgKz3{;7dKU?_m=uFYy*53jrk zYrRO!qQa-qn}q8c+=oTHFmuKTiGWoW{99A3Gj-LlA`)i@FJjtfdh9+exxz zt69mOK59q;{s&qmC>H~uNblz>w*-iCg4W}7nv>MJ-T12j$;^N>Onkz8Wd@r|CPzXh z7dA7Tn()Y6l5Y}a^)CnF65ZH0gxe6*Z3#wfTY7+{u*n)s{}b5SoNVAL_cNbic@&TJj)ZhbcSqEw?q=gI5kT;D&g|J!gt0-Q^+ z42VBjsey^)kM{n2Huaoqt|mn4#AK=a<=MxD!o!X&616vs^59OF4yS~6kFkC!pLWrT zl{`K=_SG}-te+nj2T=W@yL-M5OaiNHUU>q`4NvuVu)&8~`*UW?{qjHVw5rZ>8E<~i zF>7UTlzH??+U=tCB5G}E38aM*`TR&ZQ7X_Br#UlAh z?^-?v0riget^1NICXz*$1IlnEkMdX|pI#jwP>~NxqKy8Ii0#Mg$(bSIXoP>FUQRR6 zSnI@49w|cvyt*rb_=rxb4Ju7gM|lp9%T@85Yp_muQnR~9g}Tz?DfVR)tB>89C`26#-IY1xKYs&bW0OuB?33-zd;ZNCKWcY%x$(G;)K83O=?^*y zw3w3wW5T2F6qMW8X5Tb=r%M-}kKp(|RF+*0}QLe=EO_X*1Im

p;gH>) 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�VLQ9)UN?V3X zpJ1f6qyQi-aY!_z!yH*oj_iaH7t!MMvP1h}Wd$k7A#+4C3L*r6kCT^`NR%0fAeXg2 zPctF0l%Z{BV4*X}MvC?{Iq}E=@&G2h#aE6Agr;XfGPB@5sB%m@_>^tAkTCRMrVM)% zlBAE^f)US!mMy_5VxIvrqM^u2NK+O(hrI&e4NFBqrY0bB8!#aR&L9ksbOsAOgCWnr zVJMtT6f6=^0hU8_lEXu7q1be|9cQJGABbOW<-eCI>*Am_(a=tBXp|BT(i?tphtq|E z4!Xg9Zoop=(d9J!@USy*L>4sW44ijXO|OIKOo7bbfeV!oacAJBiIQ`3#FbmcZF9xL zLB$?Dw|B>{gG5q||)OBL096`fq!6HJw%w3_9xdgUoCPglbUC*~e5 zsQ>`D7 zVmh@_skNZ0S_KN^M~b=&**cA|I_=@Q%KLgSu>PxDz44EFi)c?TdGQm2Hoy@ZC8 zu$ND3L&sS2)t_p(!}0y?p8%A2TQKRnL^++Dj|~Cp`D?y=nXg)9jr4NE;Ioz z1wb!SkXdK2uq;Su7H$!u4d@Mx26RVnKxW*aG(XDQvS6XnxKYAoDYnoES||VojhLt! z2f(aS8h-F2JnkC+h(n-HDbxZ!BC`by*7H$x)5 z`_Q4NZ=o&C{D@X&WQWCICtoYrp!JE+I&#>mjng(I*M@D^RvFz^$X6MQg8X6c?lQ+I zVlICwu&}Ve$Xj3u-f$$U&W)woqXiPL1WlNL4x=Ewv~`UDDCPq=839cLz`{0QUp_-q z<)K|A(9~%7wCqy|2%3TbRE@xVHXzNyJyi%CA$?pB0Wv`tnn(dXCx=E0LxnbA0~C;E z@3MrmW&`aGLw>|6ID7!04X^V#Q45=sDBYbWMpCkE%6s5n~pGG+V z;usK88VE`o2s@haQ9?zt3<@E7IztCjMg|qapqVU)Y=I#>-JuSTq2kt|GWYTd%Hch} zVTY$-#10oa!(qXh2IyCdP$82ya1`Va?Uj&41Y8KQdKk7Erw>IUS~ibyx80yZm7UYg zINci)RkqM^a%g8I3~+{?Y}&xRD?ygp4n;(Cgz6xCP>`Rr8yG-XI06bXzzL&;fAXjr z!x`=58?|;H1;vbpSB|c(%xzG%Zpn}BhL0WK0FI8v&RE7Tkxf7)s69p7{mOXf-MA29 z0_;(a=`jIqo501LL%f;X(w-zqpHv)~tlXINCI_HD!~aswctzAiPyrU%;b1v^dRgB`l7oIk&FOKTpVt&}y3nQ6crx7g$;6u$AZ1Z0Bb0_r2QcNbYf(4kzpt=AB0S z_q1!qSJCrH)C-+_3wzoNU2Y3s+83aBfGDa(5XWNh(rD({q>CP|2i`Q$8(uTfcQFJF zpMZ5%LhsyQ;g9iU^J9;6_Q{J^HFM)b#Dtt?7LC} z;!u05DUCv?ec&17ixn!I7G8S>#%0}{c(Xc_j+}qKAma4pe#ZQrBnpl#-4 z_3+PX*QM3^%_F#Cczq5J0LWOM9X&eN-N42>1XONZ|Jxw=Q1tm8l8<^iScB0ncTN8T zXHAr4BJctFuv)x5tn)xmD1g@$RF6H>}7wVKi)M zsQf4G?gjZ8H4Sp)46OVC!H9;c2o=d$?tm>8$-q!~+FgwEd z5!M5MCR85lD3%FFEg-_-c_@f&#A=t@WF31qs1r(4x`_B;}$h!9MZQOs{A|b9Bb&YJ{l-L z0*yUwGsHw>{j}ckR_O8K=Vp?&VcIn9X7`V*$%6Ss^igE`;!hV;D3vyt+T(%B`%LB^h7aT zArfk}Q$QH@n1`{i<)Z_MMlgn-c?%bKPSDSVsEev#0xkV7{U({shUtkOu5v#W7`J)a zs+4ffMSa!njeMyyccfKoHd}7IJZCkZ7bUBp(o7&+Ow;)jOLJ)-n;}?M=*g%YIwdBH zY+mY}wTNM9m;E!f#Qa+-ry2OR476dY%%SEO@`zHioqo#i0p;l>oY}Sc{_77K^HJvbcE(@pOi9bjefY|>caD-J(fLd?j6|3+GZvACB#aML zOt#*~p=nGh>S51%beaf33p4vOY;qNxd^s3!VNnfwSLvUBJeAC!S((a6CytTQjgwZ3 z8(_q5G1Z=l;wrtq537a zEC!*9u-0>LNlmf>B546T2tbk52T3m>&*&fpa5pH3L(j1Ae^=1ZajZj5hj#kMN|0uY z)B5sANYe$riZIOyWxb>Oj~{#i@s5^c`kmLN_I2=Ol2Oj!t2BqZiq{GO^g|4J)|LlP zN~xS7CS>haNohrwo1?DNa@oaLx$mtA;l{?}yJyZ6b>ERIf$1+uB+iLk^fw~!ZJTy8 zRAu=NkQP<6$Bh@|nv#j`c_{ypQs%a+r5{lhH#m9YA093Zt2@x15L*-oU*5LUm(os& z4$>PNE$aJyuBq{CKvaTMPTFHwFJF4`-IvgQ!h;|!e_y+AMY*g+que2^(u#b8Od80b z^Oc&9RRE%RC9!_lOM^4&2!|m{)|u~{CWa~yGLd{~;6KXLYby}&`oU~J-AHuEbvLiZTf&&8e<7&rDasvWit`FzSd zjuH$Ot$S6}F&_!`)#h~_O1Y{&cGYU}qWXgB|+$yoDn-A#4=cRT!!hWV^>^{Z}i z_p>kV*B;Jc?&m|NYHM=2Sw)FIHVk)3oH_voe+3^>A>F>2!uiNmki%gQ0OBCD#Gd!vAx&DGN6LkF(7dizxURv!Vc~ z#IWAV_V@A}E%$${8t4;ksyCX+|Nghq z^i%EWI?4}D!dnvhXS-jnMiNQRW%*zEGI6q^N4?`>e5ys1RtUPOGuKw$8*>1LUS^TYuv|&FK??R(RUEH=ZusFhy~z6P zE3v2T&R|ru8HnWA+zgW62+DMNkrPPi%}~G)_>9+kV=Ii69I_ei(qu%d2p0V2uVSQt z>FvjvlQ^d$&hac7(2+TG45w6Z4^+LXqPdfa#^}(h0BZLo<~k=VzI867qLb zm~(i;CrT1WxnNxp*~F#FcIs(v$-j%@qHd^Jd5-8GkL)ZCQS8@6S&XH~-4!NWF+fhW02RmxaSY9+j@lotwcm zk9D9t?PC`_!kfx31iFQ{b%P?gBY$n)Pu&K@s4x%iEvdF(ac9ra%Q_R$N_#iu${x4b zx~`?)rfo#rh25OAo}SFiQ)Agok%I+ z!Iw6!W@dT|`a5*}GHh(Q5WO4L|G4-)B0eww=xoXfz;u+U#8$3Ux=nk{b~#(hZ(ixU zXZsbCx#u*1J$!xm=!Fl%!dW0s&!#G6BIiFJVJsZTR|Gm+4YmC;%HHLid^Y77u#xx7 zM=KjX+^kfh;bHON^zEnbdKx7Ty%_$o4xdRC_P#shvEsjpRdQb0$ZBbl_s3Fj z$j1oQ=H-)g1d|P{Ryem%<^+I}6&?X`Mpkq_A7q5l@?Xg>lEUQ+-YS1>>F=46NOmiH z^!!_{xO-sT``-pzgIUwQ%RBJKgKxL@^I|)d{4^%|@E0^cyJyu6ME&H#MNdh_g~r}R zKg-|OvJ{^7Sc=blWGUc?Nv`#=H}ZHcGNAJIs!MauCjVwQv*4ls2|&mM{RHr~(03C~ zel?MU)%h75*QYG)>cB*+K+s-->gGtgLK(Te-y9nQ4O6nkr!LF6+KNAX zFHw~^e{S~Sm$b85V;5U3dth)|7tZGQMu#N?(|<(1_&y6#P2^Q2*~lW&nvxU=*+FyN z0M+9Gt(5etpa@0bQuE0YEUeFT*p(4)EZ`~x2~yI{1|1lLElxP ztanNUP4k(TNriGxa8A3l$4gSS7ibCEbOWsdT1zy%#3y6{S zMf($|8GNgbV6(E&S#{CAc6mNf;dwE<47qt<;r8p$793jpAL*z6zNmK_#~;f2_Dluh z{Yie~Rp2eyHQU~pz+fU#u&4|YZsdP?*4@MZ>fCp>^{a#p#kg%C#}SUipM+!g-xjOI zgq0wkwNuag`!5s#lEO#Ivu^>Fh2U>5I`cgsEtGHr0P@+ZWV_cY76Pah6YiRk;k^&H zOP{>)$SRBEUz)u$)F!Hl>1Fk-BK=CaOg8@$J!HiJjNB9WMs=9jkAAH3?l`1tJvSql z41~lEj@0;w*XNZ!Q<5bRTfaLwZ@-#(^;7C>8F0E-K_98t7A;AjPRQ3AVE2p6Eo+yn z#$yZWy4bK)To4&Ze+>k z3h~j&o^;!2O}<^a^cm}jc@f!#v7Y7byTa_5Ldm*nicxROr27@P%T=l28w>vJ#fFAg zyHLF9LqTBkJnrpP{kU8baY6k;$*7OT;*o~E;Z3tf0bW^z*`XOWZ_gK2>o)oj&SPmn zFT;ToeEiIcD~Nv)DPk@%5n=7vlCtWEc5*Ju_fW-2+xW#^_}9xd!X|J(b>`vZZ)o=h zCZLg|9phtNCr!G+!!!u9MOzz#lyK6LaKP#^OG1v0=t=neE_=Dd7 zmb=c{p6biN#2cNJ+rPaOXcs_&g;l3$otV!+ZxdxbKPyE4rtPgK!CqkJH>+nzg z>)%v{a@Jhd7IyrCw&zwN z;vo_E>z7*viR?#fXXcDn1M`v>^knlnf7O97rDMEtO ztLi5})+JaT;-gsPp%m=Xj#d{}Hw^$+xi}P&V~RMF?FBGP`U-#Z4e#T>R}0KB4P*=s zJTDBK+|~Iw;9SB@&`#8iL6|mTc=K_1r}DxrB!_2ItNP15iN7AQ1ac_=F~c zDwrJWk5@`k#7ojZrVYo{n+PM)NK{hbPO!8>QF!=3=nY8_S0g)U%FBr~%EdHHPbum; zI4ZF)YVW7hqe~nbEgcRl20n@4c6nmi|30bLqQ#q{F~z?Y|Bc2_jbOPI{T<}UM6cs9 z5QfT+$=i2ia`C^-_aBgs&f)g?%@Cll1wLXR!H5UeFp!;->Rcv;amXZaCm@J|owygH zczMJ57vuCooTzByJsIQ0lcObNgr%X*vQ6<|yCAj~Iu!kO{M+=`H$kMgh8lx0hke$) zrs2Abv6wQk_p^o)YCqp93!5>5EucD9j65-naduh=S)N2vrNjr9#IB^o)Y~}H31IW$ z|5Za5M`J0A2WWi{8jRaI6Vui*v52U>30`eCFE1$&Byy?K=LJxH9#6F}0m6$KB<<@euoEEjEyf@J3Vix=h#`-YB+^ENF`B zU0%%LV#djB)}Q2HEa6O6+05&v)EnOTj;74M>C86bXMh71433O5)hyEdl)d7tmqS^} zdl~;AnJK){X}sABe^ZIIg>%TBN%UlExIH~f>8eiImqch3XYhyQR2S#SnFCDR3fK;E zI7(9A-KC;_hhxkDc*spx$+AG3xfQ=+1!;3yq;u5G^5E=l(y|4?19^na9yieZCB}R> z`hqaGI9sDR+e{>j70M}k5Cr>^|C%q+uO#o=U2#@Q0ef?Sm3A)HB%mmz1lJ6)DkI$Y zJ9`J3^TVz9KfYu)uFwiCpY)VCL`iU(Yi0;}QrJ+@v-y(#XT`B8uQ1JvbzuIu*~JD! z#f)x=S=wcpOeI$`C7mUiV4zR&(`AV)qR(95$r9(Hokh2V6f-aV-Bi5PPzq?undQw~ zB+t#)&aNVsW~_m4AAko^kY=4imcKDaV6OVxjz@R2Nw1%&xrtG^A0U!la|2?zVg9b6g%L!*f$)WwD-Tzw-PI59y_KnK6g_C{I&6$t zu5&7FJ}s&4zG<#JtTuzyn1)3Yq5LB+o2*63dG0an4u$f6Gz#5C{bnOe|D9}R=IHsMlwOxLp{q)dC^{`^GrA;diOW?4kEv}=x zr6cx7bv#AAqf930N^3H6?u}L%^r#7bMD9me{Axsq;iwJqC&JeiLA=sj&Wxh4MNlH! zaqU{j@7wzg8mSLard2g&XNoK=t*k2@O(h=NEj_zGx-IX37}0%Z$nKfp?*2}cABbk- zcgspkFJT&i^<4oGOBIQH-&`}$n{q($p{I_b_h=dL_`GWlP0<`I*YWtS=kIiHPfLe> zn!g!IiAQS#8B0sEOpE!$pe3abY^B@!kDyZ*KqL(#`k@A{T;`gFa7Xr}xEJ6n4g0tc zD_A1@KM&v#_(0Bv-SY?XR*272he}(!Vjp^oOZ_j&hRw9QE163$Du*+Xec3oZxet9d z219@7#PJ^n%-9>+auG83Ly*l8HgZ&5>lnWGurG4hzqP$XV7yblw|j+HeX1prrN_xq zDE6T-9vR~rHYRb{KlyodT7Cec0GNO9UbLkAAkR>;CG}rc@74%EW=zMgqk>9gZL)jq zQR~png39h&86QBe^s=%v`S4CqzZsT-xA?S9%!E(i zwt+A>g8%DCc)Ep=NQYT zo@Qbfa+FQ?rPJGv^^x(kftB(uiEn zy{3G+tsWuJndgfb6tJqr@?P|am=Mt&<+GggQ{bGL2HWCHhrSVCveT4$zF1{7hV`fT zsC7d7xcT$w{K@AjqsPSsswLy&WmBsq1Uh2Da&^?xXtH9pH#R-mDPkV8tzlYl%JZ=Y z?op64y80--5TQ-}QVC>1wYJr^FzT~1_-1fVH~!P;?1aZ6UHYOTa&-ZBX-RMif|^oJ zosm^oDOsH<>Kq3kX3+v0l+kMkRI5i3%Z(3fl%Gd49ycx(wS;w z8cLW_FJ?jQE0hWduCwjwM*ueK>Wj!>@Fa%x8pe_b7&l{!seP;ad6%H=IE;P!v`TI? zd&sPEGdP!qYHV8^x`pHin1^p19j!G#&SONcW(zL4&u)o>w>k7cah>ZVC+j7XqCC_a zySTePx7*%$`ywB9{>#{CJX(}NXY9+Z?R#NSi7cCA+JRW@(x)%aKJ+k*?nf#v_4IJtQ*YOEOp<2oy@}ucVqGRqHswRT?`ORz zZoRLNu`koUuh723ln#*Is7wno9GHlndA40-wfRZ!(A5*Oac!@ebvdVbo(}gYz;n0g z-yl6|qknBz2@hDALH0dky{7y(j_pdr$!~JqvRaBA{E0)~53BxoQ-_oofbo3};Uj75 zBi#0#U15x!;Uga6Sb+5W%% ze5ySHp}kX9nz=}F%lKmtbo=m4`Kj>O>4tSJH{eWw<}6(COjhsQ(i0%3*nUHnjP|vu zQrwF**n5sXXZQLOU3Of4RPg=_xI=HWU~SeXd>_N+%u;dA8V`uOf#q<01h2W2|43F6 zOUh+^s6l(d(mMQ?dgoK-l{UK4X!SyX?MxW|I`bIFSGi+oRr~HB(E~y;h%l8~KcB_B zx`_OvhF=05JbWMZ*BI}dUhwD(+a(_B^#$?>bK;1|`?@#hIucEdG{AUI{nuR)qmt&{ zfepmvb<6W*R7Cj3{q!R3;}Mn@;EnA`wiP0XE&eV+DC|@<;tNG> z$KM9@AY|=AX#F-DJ$jIBg$Eb9`)(42kN?`d<2rWoIt)lOetLIrKvPA7t`xejt2osf z|J&Sg?>YX+;DG~2U;qfjp33lGAfQcdN(==aph`5;`+Y!aRv(n;w0}I6-p<+Eo)W(9$jn1{auiP_$bscvjGnyMZ3-? zJcdrp9U@YXwoD+dTcOVX^w)aL?e_XiC&x+ur~j9?Sy~qbis>Klr85L-?Wcwn3gseX z>n`>ta(bO!?Qi;_#>}9N5}E(H4Xy)wuL5a0woj>HN9a1~2j4$k$5!vLCh7)q;;fso zODu+J$A`MjYihm%!h)giv!X>Y^R?fIfw4%1h4C4a-iQ;>W$nLz_OVCd1JS3}!-kE( z|00EmVpAD8cAd5cxj+GLpOP3jJ$Ou5O@~7*r&EOc-o(vJ`21HBVMT4-M*D#h%+9&v z?f3q}Y?A--9`J?x1l%qAbKH>DP)rh*r~!J4BK9#D7yNAr4sTDK*xL|q(;h^f8bCs1 zwy|1C3=OpX)5{8un`HlG&9apx=qz5tM+=>>l*SIbWG$N#{-Kn`=Vu9jAB2*cZ%rA+lEFRVBNf<4Ct|`V#$D{nr|*3uPO#=03#k@=oB$MEh&47^$Bc;JA

~ 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�K;!P1_)mx1vYE>EdRu!AU=ss`3^$is^7UPVGUS zQ%QXXef~!tb6Txk$7XgZYketT6@uypxbxuR3}sMkdnZhqfE@|Ixvg!S$Cr~j)yL*q z8+l7L%!S4!@xubvz2>MO@V!YXK+%LXEuci{HdLTiPHHkpJkV0QP)`jaB7st z69tiLX_G|qD`$p6t^lS)Lq=8-7|ZApomgQ1M;l44N&w`;jo{UH)66SY@e`dZxo=jN zw6$_7trr}>>Qo84AJ?2L8s{x?Z@6@vwa_>;6jy+c2-br)JmWkztvIf6*Pjk=Y*hnI zso3mMT^r?lbMc)W>}1W}xjOP*cgDE15GR3?{_U#VE?4oml`5@cB_KDPRiJ3*5eU%N2KvC*_3-2K)4KG%A~Glzj*W*dFyyw^&2&Qo-`Vq%vwlC z{DN2WBf?;qZr<;1Bq`l|2>X0E?<`<`CY%5TwI(|gIBS5JTUa%3h4Tlm!A8^%Fu@t# zItEPrL^mVyH;!ucmZ^%Nx5U%~-m0JvHe*c~i*A~`cYa}S{4(!-Ih~9F?yRL7^DXs~ zx1*C3?lFV6UV%5AAxd!{8;vL=T-~-8myIJZ(@y>m0 zX^YdXc%*WA*4jPr=d!y> z3KZFKnZ_27-@4#I5jF&Vq=^euDF5ixd7d+A zpSSw~u4BcLZU*EHH%2~>CqDN&Aq(E3`YL z%Ov+tx}+U{S~7jCUKd)A?2wRy|5NQ`GeQ24^-e?(`wm%L)E5s+1-9u;A&!bk!4gFm zEdvfEG%y_l`k6>U5k&&j*kkfS7~Yq16;;LTji9m`bx5$q7Gx6f+U?FZtG-7_`RF}O zeeP|poco&lm9C1jn8_E&63gd^e>K~%zf?aARo6>=sr=Lxz`b41h*N7euCG=~@CMLm zw>1zikZ8N+jfhU-1u-%b55#(>psVCy0}dw+g_jUe$`w)Y9pVO30Gdv(`q0L-~1= z(B7~cLRlvCM9D6NLro;`7NnJLni%(WqRu^5aAF*Js_=G+xZ9jOTU0SgDdi_3N%4g$ zIrdj8I9c6Sq*A68>)vt7fB-oqQ9wa+Xja>{cEoEGLMN;0sHha9^|X!?l>es<36nN! zgww7zZPo;{C~p%|F8q))0>|u}dwRs|0<=?NF(a{F!g$vS&{T$yaeEjmcj*j|S-Tj* zx`q$Y1j_iK6{RXLjOMF90_RwCzvXc4loUVz)A&9)Hnl6qIZkL{J|j*i?=i2l#|7jOprwklo)o%_kOO&e&poCEQ=hoB--B^R+A6xW9;hIc69{dF@O7~ z|M+s&KOg3m`w5_q;ey_(8XgX=J%y>yQ@#_VYc2pgXAQs4O||{aP}z%!h!;!Cnf>Yrau>gu8@CegSDfIJ^JnftQCo9h?i7rgQ#8aPkydJo8&h8p&#aSH zM)z)4S&S8lW12=?SAsY6Wu(YgkD2ESg)DO~^=YUvwB*cuvO_|G^mhj6x0zkij%W;^# zarN`q+-}=d+FAje`Mbd0OZ30c&mT$t&K5_8{_S}FbJt&F^nSGxO{gUWxmi$fn2h-< zd-L|XKX3JU(|;j*fBa}c_kgNm=-oft_MUEIdzx=8htZ`Tz0LX?Y|z9r2Sv*2$MsK^ zU-BR5|4{43jxA8W=efx~`0*#yKxInf<0JWBqDZ4BiPWGld2BQo?=Gb!y92L|zRGsHbUe|@X_g;*iBoc*YEb~P{GZ$|g z77ACzm(Vun6>k5E+7X<69pfw1NpJ7jI=yu(P1_Ahs01HeDLn8bNg;Cm_Ei#G#FGjt zr_yxz^|X>h2uC9NbkuzwHY@&#WNrv=&x--!gLT&JlQE*ai-gxs=%~rE5&|UwJD;)a zHhnBnmGQ-I#B%HW^Pk8=mXVLS(=OJN@^SEo~Uy2lxj|)W=wV(BL!I5{Mn9I^}8>c zso|*8HwQ)>t@i>4E(stJ^rWAB;~2;H3B;66^mf_QH!ZgVpKYi4XYeTKB;BV}N~E%j ztu@58h~dhbm*3J-Ohi6$hbX|k@bX$OXbfc;CQ;I8^WBj?LC%AP3damlc-3~$o`$ht zh~E*Ap7UIGvsJ-uC5467=HgT&U$RyHsn_-$>T!oi>Ixs^2C3o7=qzISrqz`IG>cUM z=PEx36kG(zN<}I^jr)|~%h;&XiEk{ACk?9?eao>zVhUNvbL2wBHDaKY1ZyI^J>6_;R#= zonTr#h4^4u?OV*_F-T#p{xvkpB%z>`HHZ02FL=B<1pwel&o!AYQEkvB2p(Z3aM~;J zJ%Hn=J8?#_e7e$>?x={(`F4N8io~diR!2Zw>2G7LBeGI(+R*m+bZqPSIC(96z>iGM z;y`1#`kXV}ar2eMMC4M7f7S*9P&7I)!ro`ErY9dt6X%vA)T`XIKFF&kT z))?~XTk@;kgnXU{yEjooQ5+CU+DPfdo15uwu1X(76Btz&8119kz1?eLNT{03QP=E^0ld>Wuy z&tL4w_mAazEJoY+0y)Bkt0J&@M}HDJ4$5MSVw5>uar9_+iY_bqn|9!p?$N9|;L>35 zCY6zjd-Qq7xU8A!&lyL{YUGV=g)1{7XQyYWm5X9q^{s7Ch;uK#kM#CAx^bCEDz7V8 zuDU4wGLAP6f!X!GQ&h|sEvW=~wS$uI;L?UApi5xK1=j2xVY?vfvEBI0t-8)^P0>j_ zLBdm``}R`*8?O%H;9XfAXQ?9{Ct&}VKD!Od+s#NyvfnWm_X4Cp{{&_Zgki(~&g9YS z0t_bs+HrqU2dI{hPIv}QDO_(XNenLqswMXP7x?9LGw%8xwZO#oPh*X1+uFx5EIRXF zfovOB{;yR7(aBMZwn0cZZCFyoo%khghU}0d5SFJfZ>fEsH6{esEB9WQUtp}Kw2^o4A=?8tTQ~+9 z<%8m(i^x(&rJ@E5U}pGW9@SG}x2DFL(`1J#Z}>NB9{`J@Hm!WRp#o1#?#{A;78H@- zrAYXS3cG(V4*zyW!HOOK@M%Ngby#oqdfz-u!qIa05UVmOWKoJMAIc^_S1BSm**_km zA7{}b21ap5oFjINAvxR8q*dLDQNHBagK7SPgX|JJY#_}_!f&@Ba}oF2Z2$D_rDNzC zwj)p=02D(gI`-5UiXnoI1*+>5YAO;?Qu)n(6nD-hUbqrdoIQT*)Hw=9?z$av8zmTy zb^7O+scdS67O|&J2|iW6 z>8YS%DToc<&JO=VY0uCB6JHV49Q%^8vLD4E-L#BQ@tm+&l8BHU4Z#HMowBIH(O6z2 z4)bpuUuIlx2LMlW>G!GEb^l|9GM;zTaRWBKvhrKa3yOum_&Q^I=DB3!%9}uH!W}V6 z+Hmp}<<(Wxx9`G7*QOeN)s+{6z#ZZnV~CF@xbXB-M>)ZC_Fg_Zl!9B8B9uL z7^u=3(>aTgi32$wLO7$GSj7fe!oHuTCfZ_W4RLsTqAaasfn#C+?*2D192@$^@ex=9 zr9phc!l9_Iej0Z2HRK1MT9sp3guFwb1#vC9&B)u2Xk z@~x>*J|ZBSPjC(+0#7b;w{zmpIaq&0(~zD0@WX~aJ2FsEvIQT#tybaDxriVFKQQ{D~4C-0?GQ4mnIe%%Ep{O`T@S8!YA{c4-P?An&p#!!#{fY(e;QK zddx3ZiwKJlcx2`6R7J+BD^WT^xV#W$#ul>U*kT zo2#bAViCQM0aX;kMP(BCWcHn=p;iRn0pM82*T*UP3yDadlNJjg%^WRu5hKPp`1V2AM9FLgzEFESFL&Zf**vr1C$$gG*jLwZz>Kx%w)&_3SE8L}3(<@>^H8 z2Obakth|G&SSt=M^Q`n4mkc%si%+dg;8lf09R8a*2^}UR6+GqF%$}r!a`H$#nL6uu zxo^vi045&W@7cG+aq?!y58q;WoMHjAT)c3BNrk_0bWkxx>>636IYpf@=H)E)*cnh+ zmlC?V#$M!`58susbCfSsAde_25H2CQ>o0Z?)df7-glZg$I#p+=0{!f&>9kferuG#V z$5D=Axq3^4=yRRAZ2qWDY1~J%dSuEO4Px#bM|C)V%c{S!q2* z)z54R)bwcjfzA@kvw|CV3W@k?-V=y-^#-Ao+6XQz6}j4|H=U+8hOxLBb_BY6k!GGQ z>2v_|@i1~ek$WZ$l}G|Xa#$&kizu9b-oy-1NQ{7YF89rD-Ic$CJ*o0wkm?k zy%NvYNXn-g4Hno}Vcgr!IuS^RhLQz=BUK_@ZqzaZA+yVo+0KY^V1u!Zn$Wg})WMD3 ziH2yi1l_-z@An!)V5k8Cuf0wp6vPYv_s_l(Ny12j<)+(VeBm4ZyqYxZ+2>2)?EE3u zf(_p-jbNf!urg!pO+CT)*F(9QW~vGsltOazrj3N+>O3wx+m^ZwF8L=e4vp%hiLS#g zX86}1qmi9VAXnRspPFaP&u&HFSGVr?$aYseLQ(3bGrlPK39x$C*X|A1;stMaqpZ@! z$RQ$RV!?rekf+4&2O|-PZd8{(tN|L&am>pb$?dnr?cr~1hrq$|MBu5_1T(m!12?MG zYj_=Uf>9>C?RZ^DzXZCvNxpA9_aP)?ZFIYcX;>z3r!RC8B9eNJp%MS$N4QHO-RQRz zFV^pe^M%(_XVKra%ClZ6!0dxpvzylrVxSYzkM?*bSbyLdoG1$EOB5<`z|uwhI7344 z)rk3$clW)QL-W+CPny*=)0kG!59TD-xi?`SA{?%gE_jpU`9xto$(h8^M>k?cp7_#a zF%VyBV{&Sx?=s$PD(OMS}&Vp?ub+UQ(7heCSf0s!%ggkU1awtM49_S>tbj8J0U zgPzF8$P~rpOjT`2Es?`6WwhCSRy{O(oG@{(Cp#av(1|}MCpsK~u!!9Q!0%r4u{rmz zrpF8t9g1NdJ-a=8e7tz?pQ#pK>Q!XE4nHURae&FP&YEGBmG-T~MPAo3q6+5ExuN25 zexa`3*rNpQWMWk@4?sdn@%_DNxfarYnL~d6gjjiiaeMUvZnmf@q8!J6i8b6v8(BdRlZ5Jg?+dSX7izcrefvJ!r{WO73==>8>X35zlIuAZ6*g zsHoyE-4T%V6_5E(cKosDQb12ekTz|vFWS8ZRZv6o>HR);_q}H~Uu!oKFM{>!?(rKh zdO<1zzQAt8-gKQ_Ef{brt+!C8kdCX59*rv|Eg5^WPnE1Ontw!YA+ER$$wwf{EUhWj zbJRhwsiozdtz=OC(Lwq9heg-%?&a}7&2ZtaVu8(S3!mZp3!=s*%np1cUx&Gk;{GlEfblmHThl- z>&E(Ua-9J<*;M1xK;&59^2#}uPywOD?QC297;zsV=}#%ai6cTfHoZk&A(Q!?nZinx zDWO?N*UCG%TZdXO_3BJfebFQ!IN)qOHr z4Pln^w5>v~hZx;$GvQI@mzhJKXN=z0S|1bt%h)sdZm6^Z#dAYk$8KzzP@BMU>EJ4S z@_A2QSmkqi%2Dq==KhC=lsVUqgWm0fQVEFv+i{!cwFv!i%hZL$b)59K$6NZxzQ+2$ zpZoFCI2_ZbQ^nf%D80dY2ZcK>#C#$p?dNbIz9xo?a4(cP$D{klO?s+JlOhYfm%Y?1 z5cH=3%I2(`30H*YUx%{wLZtIS!TCyGatM4m7ZF|6;Cd^0(^HQzU4QTE26KgXV121z^qp9I*=9)n` zuMj=cmp^XJy_;dlT&Rm}7O_ZysDkc2cc6d1Q`zreh>|d_VikQr3jYrxWHmFdZi&1y5TO=nm5EyKzt3%mnQ_o>OKZzPe^mTX@6x9ClmGYb4|5cJ!sGoiNm z8)~U}i^BLq0xQsua}tT_aUN2=Ki!1W((U1gD|Y{|vq?nz$L&`&hVS3wVR8r)E`0~B z2T`d3trv)WH^M)qsO>sOQCitZ;-^}lx|@>*xyxUZ+W%WB+zxp_@5)qUL)5(1QKr@pycqXx&J??&=A09Cw z%lI`Tdr2aDxZa%v0a*?B-UR)(Rv`#Nrjr;;9aVJ@R8Y~U8Nvv!8QKZ`7FJcM@ec3w z7iYVASv9uYsdB%ufv&MEnKctvJ6C@f&k*ajc8$}g?9=aS$}%L*TI^R3`^{o&Pi%o% z{P)q5AI-)Hv&1nq>VDr*lHX2CFUjARHC-mfS*YtgGxn0gXSkFX41Se|EtyeC25hd@FPv?EWna4Z)cV1wGB%&6p_a72 z=xjc8SnkgX_M*T+$16zbi;bfN*)E)&u2r6eXVg)~t-T{fd3llB zz7F7Fdax{$VxR2~XAn>V(0SLcK!43hjA93bol1stzQii2RS|S#!&tuOkm^Z=!Nh9f z!+$VSPb}-+wq< zpjHyW&aX+s7&(j&>c{yq?)7cYu|HSmg_Qw{N5zV|BPX7q;$CEJESfScYbwh@@Ai3? zdo@^TOhh(CCb%25+=83pn`-Jerfgp9WJ-q^I4;G08Wq2L{lpYCSLpd^ZiKzeq(_d8 z_6ivdedkgc&kb$_$W2yc&1LW_t!18IJDPZO56{HWLFhX}ddX2Y7*ZHU(rAr0I%2+Z zwq{W-Tb{{ZvE>=2%bZ`z$@>o2Uqsx`F ziFWXLm=C{^AWNPC9UXIdX>oR&yHdQImM(JHrxS7B51*9Dh%-bsAig&DT=mqLDpp&_ zwjQ8@U@Hs3Rld09j$7qA;dM9}fJ3S4;D=<)7CQ{no0hzczxnp{{Vijwdo&tgl9@KB zI+}e=U2j?>tzN_~$$_1pI-&phVu20yO9H8+u zweawzfsMA?9f?Mj_xNUjDqr$!F+LZeJ5){SIF&2~22jdg*I8d_M zwbQCTHHdIRm*;OlcUuo8CsUpB3*6@V4(+I*h`48^bYH(dcnfV*iy7sxE*&4ekfn!r z`p-X3KZNpybM2(5n!T<9R4+5qQO=P|8ty!IQHx@VH*K&_3;~f|hsfVO7M)+XJel#v zhwkR*e`ti5(^y-G;wI1idUKN~V12-TBHb4ruoscszG*e26x&+BRsxE$uv$r2?Bltq z#?G-4%Eep#^Zh)}Ne`CVbpJszf-@%j*w#jlWQ6L4r=3_=szTyG7FR#0)5Zz`Qsudb zuz*0g_dMqt$t94pH`Z}|vTe|rGV|wWqd&^qC2T9NJpe%K`{j>6acZR7*ok+2q0bi5 z3@d?52gOYn<>%(&D_^q5>I&d+y(pJ2WJ{^KE|c6C^o~|<_Qem<#$v&zDN;}SAIvTz zbXooun&BS~votop*2fnM9_Mgb`D#WZF5E-X_bxQRW+k@u8|K<4+y^b`g)GiTW9bzi zUGryE!(Aqb_0|sCn^$mEZsR6B&lw{hM!i?}Sw95>y#BWC=wT68z3<&~$8#oeS=;9NS{>*(mG`&;fOUaLdF)Az#A--&lO#dEKt7-_C?L-Whpx2>(= z?_9Q3h5tc4vu|^dQ8rf6)(j9^|229#v`V>MBTqg47WnH`X(e?x^Yn6d_U!z2`1f(! zg79rVh~svW_t+lw>5lUk{D-nJ;D*pM>;2CJ38Z}{>y#*)$Xijp4-eeB34gK{ z{hC`)KItc5C~{`(_VFq76)f;hGx|Y3M6iVFa~tSOrsfBx`z3VfONZcxJ%}Uz!AsfP z57o^_<_^}006_j={W1QRZV~M13qb9w83e)4tJ}wX$m}K14`cDY$)X?Akh-Irw{CZU z&7$YOZY7qXKtV}w19JseX_)vBzMp0gNn?PTxtXp#W%XrHbc3XzxdICojoXl`M3%q6 zc2HuIW6Y2#rcyAs7(8T*$3Iom-{vA%tjND~$iJ;hb|4_crwOkPXlr>F_!cEpa}md3 zDAbWoswpWXRyFM3eqaGG%%muEnk!_K&V>>d<|7@>*ofb0ZU%@7dyWZ@yt8N?BJ9G7 zU>XenJdeBqBtDQ1arqR%WEAlyD5B9VyxZv8Kk1ORO{0qskq<+Td-h?sz`$J8s5VUu zmZ(s;Ta=<%I5J<@$YN9*kn{Cq2nZCd)#Ohw98ErKMl6Gjb`(t|6N82lxu+RJUmOFO zkGyP(VFks8_eT~H#d2H33aLl)7RL$<#|jXCJi-Qyym9XL;uN|D= zU?Gq*1yUu(M*#dk`j!Yjf<0t<3h!0l0^tK9U?3M_d_($#Sf#{>Vh#ku(tmiZuGk!r1hwCZzlf7sLHPdnNb;hf-C&up;tcMiR6rCcv9e z3ouXrA7U%KI4K31;9(Klc#ae=f)*|UnzV-`Ea43t<;qv5jcX-N(WlQ^q~}%T#Ki)Q zK!C!k)a7J|K}$@64ESRfy1Ws1(l9eT3+$-{n%K-NtpdHs{1>kkmGs3SJ}(M13PtaR zK^}rZI_~kWwpJSb|F*SIaR7;%;J_tFNfvMkkT_fnN}K{-2d8D#QYV zHzf%n3zXWGeya_Nn}U~?m1IT(K&;1LVG>{qG$9_E3J6ZC!~)LQC#WzK?rIg92NxR0kKt}!Q;#}t4ef>^!DR~+9{CA zNZIavnYBRqoJaXmNWtoHlRQF&ax>b2MaALB>kX(dzpuF9ue=`V$kEFo7*8>y;5B0Sr_D zYuKXGHWQMSKv7Ykk64g1OSEoSI~{2}<0z2%u}0qmpUbK?9suBLtrdE#J)p0Xu&V0< z1BxI3yOlb#WxT%4gbYC08#F)}7BC_Ul1K{aK1Z5oOI8-BkF}`REUnjtK=ebq^4$6k zf-^^qpj3HQsUfc#cNu^B#0hC(IQ(Jb2TZZmis2N&g zwOZ+x@tSqo6}nqrr;rYg#sJVZZ>;z-xm$N54I-0YFMe(DX$uqA}Qci!>T^b zY=QM6*!NXT{g;LXEydF#hs#u)9cM-wws?#HYq~nstfJAMQcD4YB{CVfy7`I@-LGKV zg8KxtEtM)Pf%X&JT zU~`#~R`(I*;*qj4U<@9!?*fxU`&I>t5 zr#^0?XNtV?Y>;Iy$cMHm=-O1}DOwBwRL+)CZ(sC6Us`3K`-L989#H1J39hmSW!N_{ zlGRmhf^LtS+u4e2w7Lt5yU|CYT|5d-OMy1B^Piva%+SHD#q-wB4R+-jj?cZZ77OOd ztz?gQUhPT0^b&o@Ge@;?-L`t0k7M?>A zpbfXjz$4G3vC_<(E?|*mbR~2w(iU7LQUFj|9ZX*hI@+8J>mzDMdj;6ewAQx9Kuh5X zt9pqW1BDXrJ&OTlHp`KZ&f z%|_*65Z*B!``a`5YBX+zq;`feMmU~#*N!m8Ze=*cTx&NUE50ad_qFn>_;yeK^PaaM z_@fAp4NJ9?9$%DOALbHU{VGY0SYp<5ek&AILm;9 zY_8N~p-(r1?H@7#Sx0GqjyT>Oo702yA_@xMb|{|VmA$R3e0yT<4vAjIYlt{$sThwC z0Uf-)7sHPLsplM83|#AH6pB>xwpf^ttuG;Pq@I z-NkdGz5s`EMrtsO%J{HKCI+t*Uq-7@(8!oyW=2%%FL+H>*TZI`vj71|Th{U?SIkeG zFh@_o1sc`Vur#n=WLoOFScShFz(~ z=#Y!QEojkr=2X|qcR*zB)~dOaT#E^kb+dO}L`Px3!!XKn8G_h}6dK0LbFG+*2X=&i z-x+V*@FA^e+KCY`Z{7!5Ge$Wxk<;JPizz8(i&QIb+ zF=Eue?WOVt82`2{PoG4J2CXt83*U244+~qL&s0KRtXEk@Cfq(lVt<2i@}peAj;7?U zL0;0aVmTCaBJ}b-H8_4aTR1(>^W6io{9m@G!~r6B4p1EVQ@Vb91oP@BLZi6o0WL_7 z@*w}X!1h{NZc6quAkl|~pji3WY ztmZc71XOpOuR2T0PZyu>9EJb=?@ys`K%<5Ti#2jS9cZys9OGm_`S^M3t8w@)S3=pA zDLs&o1>FO$Rbj)U13pMT}$UX(PN@Bzx}xKfU-STrG#IjOxzUYS9tc&025v?`B@0GB^st_uUZJm!o;Yk3$YV&|kp~ zBVY5el4jCQz`yx?y;vx6oTQKT8{>4?Dxk(xz=&_V1;}#&TF)xcqGVg3EwsQ7NYv8% zi)uY$X^32_0>A|6AS@rD^Y5daL8&-zgaEHBjmLcN`eTki)?aT$FMsHU$XFo#wSTyK zt*@ro_IvSs`|Te-{4t^~zN}LJ3P~0i{h5@MLnK6k{SizQm?$YiM682_B(Ii4RN|Ou zKSe+rv*d|T9YYP%sqB<=HIXsJy2poszQo9RsUin7Sl~iER%93m62ph@VITI!Av+0x zB`*B-jjlFQ7azuOwOCnh(3Vn+cnwjr%&fWjcdy^{U?VAnPt#Cx6%3ngp0^NUjD%#h zB)nVIeji=-(3zba!fv`x7WjD*2W(U%bJAEm1iRs9R%@b%cO!iJ4v}r9!=_o^G48Q# zRMkE4mNlq|E#8JeH~F_jXtPUH%zJn%;MP02V22K$CSOe-rKW|Yfzub?>KD!g5gUapIYOJhzvn?cj?o}<4ASixD2Vt+NhL{zV~D2Y zD6AfG(Pl!r*z_4XaS-&JJGBKDP3#I3H4_MTSawVY5xKd*jJq=d$Ipow~dOG;>#zQ>; zd7E6_QX565dUR02mtBG;z>Xol+xhMj-VHcVwYD+K8>^RR1%_^u!>%UgQk5G^Ea&?_Me6?dLhz*p6+7+hGTwF3f}G{Agyq@745^a3 z>|?$%uy%ZwxOVWSF+FX!jIUoLQ6t^sGHyiW*`cJCWnCig*Yb$Xn7F-aOr$uLU^ zpVzm!mP}w8@NVBW_U@=LN3_oS_RILFU)M2)PCA+ZG9J-jZb}pK6O185k(&B!Ya5nS zt!1)l`?NPOv%jr4Qgy1_>+SZ{aVwSk!V47B`G2k|QrD!c3BQoJNPG6n>0b>XwjY0G zb+5i_T20w0^-lj2D=b^8{hAt}HQK=ZSzqfMSx_&cj-pskP=Z1hS2Zs8kwCU1_3r~*hxbf-LuuF@s zJddB<&$x5z-p#vYI>9q5qcwZFH0(~X&>&?Bp#$DdS z1OJtHro8#{W0R^!yS%+}*j3`ouj0Oal>7Ig>xUkfy8r)k00PJzmWgMeZo6oq;DTBh zgcdvpM(B}5v&B_j7Z_%!VHZi2;NgcL*2mz2^UbH87x<-k-&+;p5k_i-6)541ckMEY z7&zvbF1{i_v* zpP*tzpTin>$Mt*}-YK8sdr5Mry7OE0z9o}7-EyXvWT_S-Lx`-1pfuI0&9 z#+dCU9Bro4jsc^!@DYH%xe7h1q-x7`XLoiLCVTmS4{g-NC% zMif=+Z8*DqFI{cZYWKFwhQ#KG?$nf5PW1>nr|ZK7oOkYd=Tm$vx(bmQ`!VVD^Laov0kFyP&wc!}{FUs|6pI z7fz7C=dO1=t96wsHXtOj86p_q++@pqcsinOh{@N-v~=cr4znvg=mzWRA%zUHb(A^ zC_qzcpfj{H?9dBVXcuyZc!44s5ot)=R0@_z$R#$Bfls{3C`QpnAY~|ET0EEN4nn;m zSkjUb%#;+hpa2GV@{!qAkFWUaMMvEfs`6bu|-K<7*nQ@ zw#Om*@sCN%6bn*7%wi6*kcK>DB7ZW9v&lzDHY697_^7kHC8UCv%w{$P^1Endpp&2s zCn!bfFEWDYY)(t1AyzpWR?-BP@SG*jY)Q{E=+a`mJPsd!3I9yQ^?(Hc9i}mfiOgg+ zahWLrkJ!FYB7E6UXMDVX9VR-_{AIvu8O$IE8j=GP=uDg-4W;NtNsv;?C!MKWr8`*( zPgn-2j%|rgak`mL*zEIq{dCp=c6xw-26UhVE$AVwfY6Y@!%NaR8p%FJ#UVI#2o#N~ zRF7~30vgYV0|{s5LMl#j_RE}RlaH%tbuD$O6gYr@O7P}a$0VsC4QyE`O^?<~@9`69 z6v!)2_u5mR3Ur_aWuh{Rx{+Pn;SOFpNjYX%32m#IIo-h!ih1sb?5^CEp+uk;}zpJSbeQ7)k0QbNL9xycAdu!4zO+~Yo2xlP>Y zgfmj%I~W8<@;nWPMJR(0Gv*5!2GSMC-~-X2IRCuk6(?w0OiuOASjIJWuiaD&Ds`?? zCiCU-c?K~ELJWC_MK-c6k&I8e>eF*ijx>~`9NZ~0xUW9FvQYELt}S!9!e7==4}i2# zF^_PBVJkJ7gA@f7far>E25+3TT3$MHYyr4lz(MYe=R8{zz9|JXD@CIuLL2(fMDFix z!@%f;DLFC`khHX&OzBE1_|jGeDj{>dfP^K((-7%$sB>ho)7Vcz{pw~9ngak8;Ad5^ zj`gfTIp>fbnA^GDHLvrGTDv(7DynSlumwG6WD6+Kik?)nqlL5xIQ-!bpZ2t?J%K4x z0NV~WrazKUs265COugwK-T%x$6t1ALeT^^HDK^N8(-qDZw4mA?*R?@- zyTO8v7b-+P#?(vT|B;*7c zmc?FKnjSPH2^U!T71qx7mcx5=FrW7)a~6US*!=D`$2rIKeP@3ET4KL}3Zw#!t70P^ z*-Ae$(=!G2#zS4|52w1Mt#0Y!uD}79&-~Uo-gU1p1ndJ5JITp@nlpF-0BTS`bc)0F z*0bDOE{D6kRV>cB+urtgzq{V?&3796{8cn?THtA7ETUH?P)ARCqL<#B9ytE_PltTO zCI4i~Uz?{Z$o}OskNM5xyYrq;2><8>BKl~-vN+~hsO#Gf`?tG!_A+% zZQvJv2T>NzHEuXEcBEH&XP|!T_j5lC&6<^mNsg%yZ_+Q)s}XAoT1F6`rh2!R$_ z7J4IRekEuc<$;1J*nX(;awnz%Zpd>o7K8LRgLYSg`L}mF=Z1R7gFEcKuo#ONK!>zwgSgfLxtNc+_>R5UgHrN?!DuYQ7)VBEj6)VcB$JHG$c#?+ zh>~^!)0hC!IEfL7iPorfn}~0B!;RfY5W4`1&q5_)K#H|viYJJQskn+BQcM@=0PpyQ za43)SID_>_X|$-1`Txj|z4(g~1B8K?A_!zAf?$Y^l#q(JkPP{VC$N-E36aw{k(D@& z7HN%}r(he|kp}UR;K(kgQZ?i_KPHKW>*p;GMocaFk{S??u}F`0H~?4HcIc0ZK6_Y6tl?eiuX*I23l5~KQYv)&? z*_|dZnx*-Ur~fH~w#S_2*_yfcnmWmch;jjHV;PeHDFeAM4WpYy$(w=co6v`e*(aRC zxs=5@k;i#~1fZM-s+`OjnRWx6(K(&e2_nYR8U$gEXONx6;UUKrP~It;Wf`8kIG*z7 z0_QoR=!tjgNteCoJ?~i=tHCAnDJ|1tpKSz~JSUj^d4c}7Y~+p^jk?YcU4X-K^Ckn}67;vNfi4gzkl+b9LR45QXdZ$4uq^n7!uVSQF2{&dDju48OOIi?X(FISM zp;9`f5C7(&uP9?dnwVL7o?EJqZb*sJ_N6ZapJFPKIC7hOnVV=jqxe~)2Oy7biivQl zqfa@J18@*``lETeoI~oI3mTmSQ9ETJs2`%Fjlra0;A*P^rHlHVjasEIIjcG#sguf_ zm70$enW>+%qH+Nno;rpwx+yaHMKtOGGAW0tYK5yhoW;qSuo|mC8l(wotFHn8e%g`q z!!cYrsMcAi1hE!9kf_I1tR0H18i0Yy%B;=0nm366279p4>ZQ{vd|}$DA3`h|Vy4Dz*KYqdEJSS1YSo%bHwUxn1kE2LZMnGqz$I zK2;;3Et|G58?zfqOz-%%n0T|Unxz}?nswW=cWbag>tsVqt#EO)NINXtk{X8~2!P;9 zuY|Z5tGM9GxGPW)`S`fzY7pp}t_RATmRq@)o4K|lI-L6g9b^Qcd#`Juw%i$-PydFN zsB49)8;$0<0qC2)uKT(^8@sdHWS`?njiXk$`>?vZAuw_XchFM8OT5L)xUXpd%DbA8 z>!Svmz8e6&(Mtr=YY?MQy&rSE*$XRY%e|tDDlt24;tQ2>5!d$;dv z0T&=n^Gh0E;IQ_qBfHDHc)-7i>%TFWs;n8n0}Q#$d#3^s!sx5O(c8cUu?r9!wwyb` zcVh$=oTyT&!7n+!02{Z_2m>(Cyg=N#Bh0?BivZCo0$>crAhp6Y@ftY*xc4i#GEBq$ zXv6czpXaH=JM5O{S`b+*#Fk6M1);eraJ|^uK}#Gy0KgVh0!qaS#iz@`ssB5xR@}&q zjKx5_zOUQGli0Ii9L8e|kY!vP0+G8gjK91K2yEPoZY+P=hm&#qnsZFY197kiamSRq zz%YzGa0bC>&!uc%t7xQQt=#V^Gu1_XU}(w&sKcQ2>;B_Yp@1g%*@R! z(7?#Trg0D*Bm^;h7>BUXuq3?0iviR4&=T#IO}&~m5Y-hu)!-bv;vB+woW39Z(IMR) zc5}<@oXfgw1@OG6h`fsv3C1wp#WH=x`W(qPxdk^p*EgNh|Gd-TG!0}-(4_&?90VO| zOw{_z(83#$70A@8+|7y2oKfA_H9*xCZPge(&aoWATkX+Zy&Naqxncb(?o8GyZPvg1 zk^rsNYaP=vP1EYT1+3lLbUoL0UAF)&PI?W^(Ol359n|{K1q!{tN6mwcXV?jV*m7x} z-pm8Y%>$0z*pN-p7j4Is?Uu=%#g`4z(<{wL*{<^0W&i!eP#mkJEdr;F+W1V< zOOW2Jz22`~*ZwTqcGYi2vRJOTOey?&OXQ<Dx09 zV4g=H^#mKuwV{6IrJd$kkm}~H>TJ&HZ!Xty{q7o~!fp^anZCtd?8lzu$-dx_Zm>{Z(a%ohm2TM;KD}K~?O&eZ*zN-bVFXM8 z0-*E+BJb_r9`2)#=BJ$nDu3>&zUu1!=C5wB@BjYp@h?6-S2qt z@4r6eg^mzqe(=Vg@C*OsRPFE&FX<6K@d)hEZGeTy@UC7MMO$v|9JKKqZxCTL@?uZ& z8*TC@571o<1}eYyE6?)iPSvcw1nd6VtUdE~U-Pmai_W9-8)8>J{~Uh~7XVN65s8cX zc=SlG=t|$@%I@5E`}9!%>{4$5%3!c9nRzzekx|qInZEIvs{&&$_9b8D%}W3%FYjv4 z_HEDdF5l*J|K@f-^LRh&a=7>S-uJzQG2p}Ry)O7eAMDfUqehPSNT2XbF5!+{<@OBu z5Fhmtehdk))|m(Jwe5i#()rk)xk(WEBmY18SzP+f+}fy5=c>Q@=id4(-r9D*?y*nv zZI1eS|2llHA$D~&KA_(~j|YPf{LMT3S)BL)(V@UVf&+ORM95>!4TcSGAb=PVVi1ZI zEn0Ng@Zhl^Sv-D}D6z#zl1EIQJefo#0G2IXzJwW5=1iJ3ZQjJ0lVum4JTv_Kc|oWV zqCSisMd~A_nj}x0K7C3=>Qt#4tX{oJKA6C3Wa=O#AM1xgkTfDt(vj~gXG8*g+jI_V6A>N=yc+m5@aysHYlfzZn$zAelv3pn-C zs^||X|6p>y_~xr`2@A5+Yd;je1oO*ja3s^lGtOWvGoGkJFu|lQ!%Q;=AEbhc3GbA! z!mTbmEyE31bj_gHK$LB_5&sb=(INnjSz@=^00p!K7$>EaQk8nZG*eA$EVENjp>s^S z40z-Yg`|KKa!4Yr>aYMLm1GhO^qy=Yjwx@g^1UnHa|_EXX8<9mt?kf?*x6^@EdL*%`T=)Gn>XuuA;7n5uSviZX0gxg*JZPB3V6E6gd7$HR1==+ z!iHUaIKEiXt2l34FQ(ExUCEP+0s=lJ9OU;xGMVI-RAyWOmd{3ZY?){7;#mZ7mUic! zul+gCpoPv5jH8cE`kmyJEik=F3X34v?#G?+HH?@fm7DSpoCUKmS=nJQ7+VNXtXv@|yR&x{=2`vSCv7EXKEt(M1R52wC^Q z7e0w_z=uENfJ_!JL?WWkh?n712bm)|_gMjcPdrd%Fn1Zv;SXCs+uwy66083qt#qf` z%`sMxsEW9ShY)ccO)BI8Hnx$C5-dR+GRPLK(;` zg@;^WtDxt?rNvN&*UQ)pbfCA8{f3980b(Y9XaOR2(vu5NK>ehZ#6IRE9qnu46QB5# z`5~o#RkWi1g61eLb}@ipyumS!L8}tgz?Z+|VQXr#17f<-m~Onl9F?ieG^l|N&wQpH zH&{vz8viJSf(#QOjc3S1qA-yiTBKLraymy=50ZT8gA8SeBugTod8Gkjy(aa^wxK|j zLa0I&sELzrpwfM+grBHxM!(G6FP2#3ic1`IgIfOYmLJjq5Ew!$TK&?Z7xg6qAhn^E z5YwX{EhaLpnM`FmL5|QwsWkVvPv22T0xyLO@v^B+Zg!J-LSrFt)38-W$=gir#&WT6cm zT>u5BgJaZ&qD^=mMlZURjS3T_clD?TMoOJ!#u25^RB2Uv=hBxJR;FOmW+AO$Qx)P= zk^dgy%T62F(??E;9dN)b9D-UnhA7D{8#rocMLPfk;8m%UYHDg#>r^mh00ktJYCfqd zSeP*JeOnb32z1+3AH0$fVLj-b1~QYgGO3H=O4+mbS1FlPV6t#o#~TiTk^mK06>zXTJ_up zx+HcUy$KbtyW$mZcUax^ZeSPOvhf!7B}W)!39Y~Y#wOCek>wIkDN6tge9yl1W&am* ztL7)Hv_O+j2CxyOtbnE-K{^IT@GfQ?lLmMB45^GTP$sO~3U7`AXKt8=cZ1e&nP323 zVW(LDFt-ljL@WPAu}j3t;v%%+B=v;xUuC@IWYzekH#P}kX}aSc3+=~D3i4#lL*&hV z%)aZY4Fj1>oG1Sf37?*_l!J%m*lL;3F6nZYRdQQZa&^r00|X$(K!r2cy4GoyNpbxL z0}6O{3&5F4t6Y>WneYeCJ7`0)+aOkJk>Ldo!g1RIol@|g8d-)euS*`3UPjyWG~Ro( zc_JO(v4|iabg6V7SeK;^kl1w_7`BUi_-T6Ao8IVCLB3Tm>ck@0+Ac{)s{hMy9GL+$ z2dl(2=hSSe>Ms9=z^|^_gXi|uIg7Q|zm8^Ho3%FPIKT$ZDE|?(Z~lkFnH}3X zjsxNspZIYng9@&2g}T@M?kArkG*d8rzVF@de~+!xFEIFQw`ALi6@v;EKmHIj-tl0_ zk^|1q1v0k9Elk!>YZ3=6O?uw*bT7h`N55}TkvgAIxIWcez0_(wF?&5}i8Vl&J=)8# zTJ1-_wB$yujd_7nU%-4(vcPP`>38!RE8O&cHimn!XfFf$9qbc(^_Q z0X(OBfx(+On$spRNCNU(Jo9rrx1fL{!>m||fgvQqL{Sg;+kgp~zmmZM`vW=rt2@!# zztSV2D6m2+3_zufn zSA0bP^g97Wj@2@__ZgrM{B&sL1aNg+(za=uqyDzMRYor_&!1s19B`!O5}?Z*Z_)I#}5gD-Ghi2 zz`WH+i;ToTJV8lov?(cYN-4<4=G(`o%YaV$$5sqTft)&mJPv~ds2TafTqKAP@BoOc zjlu|)iWDuWpvP=^s*QXCn*m8X6iMbI$;NJ_N;ph_y;Xe!VA zOt?!$(bTuk_@o6e&45JBGLV^q^vWli5!V#ZF%SY=tTi)mfCN=g2VgEdv57mu&0z71 z^W06}w9qdJJOdfdxqL=w+{5GqQRU3b=IqP8O9Eer&cKwa!L-BuyUrIq0`1Jnk70){ z^3L06zpWt8qoUB=WU(J@06=ul)q+o_1Wl5YvIx4*{CvgzbRU&iO;rle0d>tgP{0EK zf(6ym1g#BGl!?w+LXPWEsX!SEwKp=@tN#rxPLXWB1PxITT}~2JK@(L86ird*fJy4C zPJMgP7j+7o#7P|#fM7ftiV@0+h#lP=Q>y6G7X{J=kOH9)u=gy|BhA0_QBWoQBqoK$ zflRfms)GLn(AK2VJ22HA*wR#;f+=XrRt3`;Xge{T3dT{Hq{{#$D6BM<%Qf}TEqzlF zy-GQqz6h8RJH6BAP{eO^x<;h|?vR1RR6GFifZbHX(KsWLVM7gA)TvGJ|a;f^c~t ziHOh&(SVg@S(f!t7V}mbxBv#&t8p#Ya~-(~(AiW~SF2=K8uZjpb)T0!NKzfpe8tyi zvO|AmTBc2aT>QETk)R0T4}&vUm1(+m<-UeRkca&`iT%}z4aDTc*s>*78QEAH5sE#{ zH)ajl-HHMVWrDe-+t@jQyN%FbS%8-1+rA}&M_n-*n1;Qg4x6o1kki@3-Pv@loh9|h zGvmJfwsDc7{sZq9iXsUs|A6qyuyX$TFP)nBAPw0 zebb74Q?t!jv`t$8p^g{$*#AC#+X-U{8z2I@CEns?0#}&Q+(pcRDLq=v^)5Ad0e|%oq?kQyoIcWp zfZ)l1(|w{Ia01n}Le?EAHGKh3id|m~+q|4u+dW(4$X(qfEItKU?%2AQFka(jiRHy$ z<#k@?)qrv>((9sLBeLGeFx;n1(7WQ^#nsZDUA*uG+NmSo1~cE-0!bM#S^?GE&HbwZ zjo z;4zDd3@Bcj$lwjWPyZ!A<1|(R4|Yl{u)|OrVaPCCEk)rJ_TJEtL>DeBghm9W0|kg*`~~9aQ>G!_5g|z8Nk(G-jRGdt(8>5HDE?Xlep7j}Vzb5K zEN+f1CND3BiV22^BoJeqNM18`UNx5Ga(#kDgyT5AfN@RLI_BOx{)`>SA3omIdWsRp3!3 zWt-4~nK0$T^33b}-Q9`_+@*>0fn_360a?~(HKqY2n9Ey^W7QhJT?VNXt^l3|sbIFX zVSYgYJm!27WdA}UFC1>>9e(BkRRd`TiUz@hYF4Hz5QBTt<|O9kt%VFazN>JywN!=P za<1JgP6F~uXPnT2nqKFZXy=zI(sP^1SC_dpGXz6+h<+6=wnVxBNwrMSBL_ZQd@+#8vNoC+&<)1F%p`J>k);A>pfWBht zDU0LegzC8_CWCeWld)K0zQeB`JP;6TXd-JWO~5gbfebk7+D7X* zih?R&>;K(O1GgUOk}j-NT~KhY>#x15ysi{;F53xUZt?wVnh5NgwlTtn4DN$ZDSHAi zUToyBS{Vqn3W97Eh=Q~(fy$P$z53P6-cnxH*_BP4&nCa{g^EMuN|lf!h)!m0TG$CQ zRcC%}*G$0Jw(Ya_f-p#^6WK@E2}#HxFz$50fGoybwnpJGXNMC~*^~SLC>ZE}#L& z0DzYSbQu3Y2lY@l z1X3q;Q*UcjAL$4%XccDlyLR;jfQeW?ZZn^h3(R0!XY*WdiCuVe@){PBb7wjacK=~F z0`y^t8A*bol@X+UNvV4FrH*z5nD&pa_G>3UEmccyFPXa{7E(tjD z)gCka5dtP>cXxkxcrSH%=W-_~+j~Fgd{ZgB+sDG)cue&w&Oew>9 zDLVpV*Yk__`mYarvA;unA^Wl~^t0E&9X%?w4;I943Aa~sxSu+eBKNv)0RQgG03_G@ zo)M*I_IoHN1i;U7!LOewP~f1ycf6K*|Gx6 zm@ysDtZ9>`i<|&<^6cpofQFz#HS8#A)WCqGN(bm@>huKEs3#^+tttTsR;;Oha_#E% zE7-7N$BwOH)-1t+DAuwq;?}K_xN;THt!v~i-nw;<@a=mf2jIXtlK&7ceCP1tvx?1@ zXzchgWD=4mQ#N7wvSkmNH+!(*`LpL4qDRkIYTEQrp`r`0X8rSY)v8ZsKf!{9EbiR8 zy{4Pv+jn8YkV`ZuZai(lg9aBeeAsXzbcz}?b~FS+BzBV~0jTUg#U*%|;&0l_Y2F3y z)Ip0HXy5)cQ>RU(Mvc8QYu0AF_w(=He=%Nav9;D)Z^;#xUUcD=SAu@^RhMAF5r$Y| zi=8!GWRz)G8D^Jpwi#$PBrqarqrnHCdIYq#;%lbGMpbRL+2$XOHS+Y$Z@@_inQ_M< zr`$ozf#BS8(HS`%M%7)1-ALN;0M4b-ul^|deCPCpH7G8+q0UH`RS%)5e*x87Ul2~GC zC!(eS0hLy|Vrwlf6$k_zIJi!Rkbo29O&2-v4P|>JSya%$8}3z%hqPErZs^ zDd&OO@^n|8-qtzbgcOon1-eD2tL}#En&82^O~V`Sqb1h60oC{7d#S#f4uAjxr~P}I z%rO&eaA5@bnAXCq686x;5KAoUA%}2eaY$a+ZMVj{cI>fCE`=>I{q(2A(ebZP{zH^{ zG$6nM#;br^dmsX>cC`iW1O{Go-~%J*sT`{53}&q0?|_FKJFt-;8$5`gt{_L`fl!1a zBw_TpGCh}IppO{Xn+mhklhL$ra3+hPQf@cHtBnso5g;QZyV8S6o`r{c@u3fa2tOg# zWhe7XQ0I`C#3k;piBBX!PNFD90kSRukpFtX1G$z(E#?bTH~8WgV=2Z@MY2X`G-C!X zxJEV-^Nk#okQ|fwusVtmk9o}1#v7lbm!X03JlY0g2KIq%0->kQOXePO+7uc>q8G8cWz^QGu+v0YY(^%P{H= z3qm2Me|~v};`s@K#AG7_GP=PyCNr5)hz>KE=gf>r&pVfyCN-~T&GWS9h1v8Tmsk@^ zZ!$7`1dtL$d%25qPVxd5s2N?>`GR)RC4NEdi4o~3%6l>~pBuW8$oR=hs1+cfRvqXp zXNS< z1{A9WwbT+)%hiN>RhLQO0c=x)jKl7RtU&4$Va|F{wW_tO!Evh`mzX@cHq)6JQ`%ko znAh?YuCFa5+yVpZli4ZGu(ZWtVi(KU#tId(l%1?(J?R&^U>1o?jlyQF1l4_lmX!-6 ztw3Wr%hb|WwX0Pq7#|4R{qjJz*UgP>l@lQ~5(KRnDshXAfBCd|7*VNYL{D&C8`2^iq!DNQ%@H-A`;(v zPot@~JfBsM>Zm4S_`*`YRciv0>r3C&b`_VnTLYB&8{47GR>fnH=tKo9m>diftqA^d zFc<9B20JEVbB!_QOJImFTJ=1=N;;_8CO%I9P8V(;|g_tiza zJNd479kf`s)KkZ#JXeobiY0z#amet+Dv~qZ1SQ*-tN29#ltaA+Dff3M!0@wJ(h*>T zY&i!98Hjn;$SFu--R5;24aJV4lPLh|*RfqmDO47=iez1p#n4cKmS zy4iddXTHNG?Vq+ut?axuwk=y!pAZq-7jS|o5gr8<&|KV-KF?6_b?*0GnrrJ`ce|6! z>3Dl_-t?~bsHKeWkbC7D7&)WA1p}m=cv;|TB{wuRxpUC$_PL&rcL`ZPfY+jkQ9ToUARJ^6s;-NrWI z2@in8Cw}paHxG3y^>|EKH4EmK{Ld->?yaJs{g|J(=I`zKC@y~|(@{w2|2=h|s6L~t zZ~Z}d6zmO$?9CqSjUCxZoN4Ty#m#^K{hpqQ*zir@78GBdDbBl~5KAau{q+ZQtVN*l zoz>OJ^f`zRoM83Un4%3{_H7^c)tvX?L{5aC&Q;obnI8^j0r~-5(7jvx{U92=-_g~Z zl$oC@4gW>x-QPlFfa&eujH%xL0ibfoTolBf*Bu}NLY&gHz=<#*oISu4bpQm`*@|cy z1rlG!86N>0Kp67M>2)A~d>~tp9JQ&Q%Eeg9nIHbtVnpcADjFc|xgspe;w+vvF z?6sop86;PB;qDPxKrtl7ffz3FVnlYF0X$?As18>ea(+jDj4p1#QemNIHm0 zEEe^dq)7q*3lbhnl1Ej%BuvJn_*IPvEM`rL<4u-h6X>L5@}v*~rRIs6`4OdNYX4@B zAf;z|rcy!_Q-Z*o(10i&T7tw015hQ9M2F}=MgeN2nsG*3%A!|(Ay`_KSmH|!;FnpR zp^_y4*QlkYAwX@mB|@kQa>S)v_Cz<-=<}FSUz61e>;uj43CIzO}6~z+e4b*W$ z0E(ihat@D1Hs?-2CkjaCbk3ScdIt?eBX;tkcKQ@|VxxC{XLxSoc*cNvmj5Sure_XH z9v3WWdrqc0&RY}Arq(m5i24rPe&XMaKz)?oyI4v2t;DGd~;0vxFRV4Z?W#63Bv z*yTWkYQ}`#rU8&2hU%tg}|KwsMUF6e_r?=&HQYMly#GG^(T0#t;mFT1Bc#^#AG+R4NK`g-Wg@ z%_Rt@QbmwS@eoT2FK<)}*XVEnbSc;)DT-$X;$4`2Q@^0j(PZZHx{r(H1Sc zR;P_Bt#MT9Pdx3n>}>V;uiyr1p>rmYwYVb#vs`VulkCt=AxSW!vC)uoJ+dSFT3*A5!|ooqKXtq zfi&)K_VusSa-&rR@b(UHk%B?j9x&G`tWMGw11~Anhy~3eKu|<*p{8&SB-R(a@hHU1 zE*P(J6o=e4v2kop2#+ucFQ^HNEDBSv$=aq;xG=iG7pZaY3_BT~hJ_a)rVf+u;;k74 zPtp%(ZoUmM{1%OjBJr0sK@00SS6oe?T7WNGfEt4$8v_Oays*1LG%a;BrmGy2^BQ2^FHrEs43r;K_L6B z$;uG+9x_1HKr72IwR#Z(Brb>kgonZab>U|ubN_%JEnW#!GTUNq5c`=Xzpv3Wz+HMW zf*D8BigE*xvOr5Q;ZgC6Bn1oyuq#VxEPJuozS}M5a_sPgA>z(2U$ifWYv-T<^@4!t z81oy4jWQbqsd-9EE} z5D80DGmvD|A7gV&YX;QNbT{kE4P+cnOaES;@<1l`bP!w(Pg%wD*v`}%$j<)8WbFPd%w3&92AqyH(9%Eecd+>vIb&$ z;Rj5pK~58Z4+jHS1c9e-{k^~@$F@<@uT?vET@rkpVpcjP&w75{MMIXcXUh{R>)VN|S0CyWlj_df27e`9__>Ygb2n+c^ z5V^>%cVHYjs3$o${{)lC_px2JEz{S1>r0iR9ROfCS8n-mSVTp9Ip&5r`$RRF8)XAD zc#qTx6gV-PbKgWbfdXKsoFg)Sg=3vhsn{NAO`0mSE25HxAy{5%pzpxH5IXyefD+_D zvBo$^BXi7j!(uD|x|6hE5C1mARk}l5`j6v)rW*vOA1f2&0I26X6o~q1kb0?``b{fz ziKo_-L+*HP7*|ZFbZ)s1qyeqhx@zD0@~u+??7C43fB>BNuO~>pkMgi59(3ervXd5U zHDbxg6o{Ox$t^%V7%QkKy7opzDszUPlU+B2a$2Xk)Hf~F6k1~Cwc}jv||d) zhxW{WKttHP&9~alC;$2v$bbxV!{Y#b(64nE<_K^)Yl%44yVDI(Yxfa>r!em0EcAAv$pez@xo=C?oOaK6yXU5Rj4pFR%E#$rRg$g+Ox?>j&w5I9ia0D}W!B#d!`VMB)x8PEIL`qu~Z{Z4&E7wO|yLJ!e z9q@olU%y%l zO=H1w1VroBIbg@0J2y)0C_sS7(5>56RNub=R1q$GLGj`dkSA}md^r;5&$C9?+TipE z>(@u%(7yd<2Jaadgcr}CO!+cZ(5632kp01q5aBzVD6yhTjrT7~^teA^N&h2JVoAW2 zV4}&uns9nzr=5KINvNTUA_@njk^;`c3o$$ZCaS91Dmt#N`UV<*)<{JW=8Q#&(Oknj6}>+-MwU#dK0aF^ zJ3YQ&=y}$<3dvQkTX!FH5!&WHy)LDRtR8qBw~?(2MTZ4oiyoIXSMi_Ly#`g0`YE`? zf6u(*lDI>WvH$u2$QZ*Zzsz-e`_D@2S~8X0ekl})>UG?wY`fqfjY6UJLmDkVIc=c0 z2UAZM_G^5C0o!6HRvlOVCRPq#lU`MmXvL~Xo~S1LinEuyXr7A#8Bs^^P0Sgd(l|4n zj*+dH?1ItzETqP9rs**$m6eK`g$efNO`S+>9!eS0y%F}sDZY7US#|nV=ijWtwQ29V zkz5e^HLj;*HD_CdZnZ&~`AgZfpyBJz)OtiDyU?b{bVVne!u_HNLAgTwR|8C`ifcVs~E#hoznym5S zEZ2%-0`-qev(tU57r!*$8RIrhTM8a_EPqf<4k1`M;UVD`Lhzb5Yd6DH9@5zUNRX~0 zEt*EbbwbE6a8j$KZ~&q4%uONzW9|%x7q&t+L<6VnfwpYa8+NU2jsH zwBPu1AG4(Fnw#?Up6A~QY;6+&K^=U&pcJK3&?3R*T<~rsz@+xm7b8{skjh+w$zV`{o6(b;_BFR3QyQdF-LV@nh07 z>)=^fN`WCiCFjvIo!qUI5QYCJA>PR}tciEDHOP^q5!31ol@b!I>97q}ai5qO(O7oP zDSHGzJ%P%2s64MuctaRH2>CaO3bq$Kljcb35wTL^DG>$B#hzIf6snVRojzgmQ~qNI zr-8y~o=Udu9XCX^iHI-DC?!+)=dCIPWf4OgT*-4BIYrTNPCFHNp#E1@0rQj)ak->S zuYv4kNzkq;m*@{;uGX*0;%E#?Dm}2MK)HsuAUq#4;80JmjaNE$rXX_a@U8T!5_!ZP z4}fY4A3NupO4ThK6p{`#Kho+HpWpq&L_}FM@7i=@5hYo-3xy1L&@1@LK7N3E>fT+FG$QRU-mNA(&G+?SWP8tIh&%d z|1>-c4DnZ|a{d_&(5tNCL&Enu)cgJsP`ePGHKRQ*arIF)C{!R^o2-)+N(~OH-pr=5`(fU`l#pgi|RAIPTJ2F)CZ7k=4<4$I*-rhZCham7p z$)mKt=2Vqy5|7i>2Sm%=fF>>`83z3(S>kE zwRJU7V;rSau#L_5OG^xqJAP8MKs=SFRWK6PwQHy9ekCc{xN^Y}3$V|I$w~KR;$5bO z#3lx&OaN9%u{S)k-5DX?SiVizewkooYJr#JcdUcm!5{7cI|pjv__zOXKJSaa$K;L@ z@hO89+^a3Q{(GFIBxWk~bvcs##6HYqcSB|pxa?yI9!Wo^!SC^xRr@YXXL5P}RpN|P zHiDeLWM;Bbvld^EV69Lpx+XpSG(T(Xsb_Z0q1J_p%Cwtg3w$o1saX>O!RW3Z)-Xa$ z7c!zY)aSBaooe2S%66E2y>BF=l^PPx=0D^fZf#HC0npAdxDt`%nS|gePgRMF+|)c*#8l+~e&y?sSE(1p?4svRE~U6RV=) z?w3^y{VYRq5AJ!1Mv zTlxU~SZkeD$_ojvZ8;kp2_A zj#!CjRV5@lJda_4#81c6^jwdq(UeFrEO+ zCje^Te|t&)k`J!W-2iu^+QM!x1B1VLcU}NmHwsArj5$EU`O&&OkVI>Xd`>kP_zT>C zNUJsMn1nzewauB_A{8wscquYL3z~wU%HhV0m7NwKxZ7*EuZJy-{6O}21=%ilWyVpa zosPX4zBRpO92Ja8^@@AkaR#u{aaxs=HGU?0CC3v5kymAJcP3zvz@v|Wu zC!bD#9g5qFC#*Ght%J)iSP#AlC9#;pqP^O6x5htnRg;016BlvlUe}G{2agg4| z4@RdT;Wk(%ryLKJs=?+}p)|k}6|N#}Y)vbKN)Pb0drRL0LJN=n*Z_6Um6{(X>$M`~ z8YW;OMH2-~H~fPU>_Jt|=(MTL5<3{bpVCs|4E}X>A)Er1i@SVCVNg1!&Y%SkFRT(L zu_eF%so)yG{DGJnKs(FKRTS#Z`GJ!w72}qM`9)L*)2M25oq;}y6Npw$4^nrg1vB*8 zfTN`p%<&n}0G~4Le)DSMyh0U%T1-TJg3&l;PxV-^f%2i(3-bc^(OCwI5n(zX3sBJt z@EI!{SZ@<0>K1z69=&PR;Wvg*hd4rQ1T zK`+i65c)(QyuwAKS&0<=yEOi{Y$KTDCCf@g7Ag}Yi_roW)w@9uL}sqxJL&-dThmB8 zo5hrMuoP*rEMtjGk*#L$2;?n79*-0 zOG@_vkO|WvGGO#2{Eri0T(1^vm(LGFf@VsHv|bE4H6nuxGJhu6Fh9tu!ZlDK0aE;$ zdc~ITqMW=b^=t%rWFmQkCE7GF%s8Fyw&wL=b(_p7Duch#)BNLE)){K4$W@}KJpeXu zLYyOD$SY-*geuiHN>JDVzcDCh=mKFkzr7;lM1BdC-E@-z>Qi_4V?0!yl9^HWRK;A& zudUPsJcjO$=^Y99g&oxO_Lg2)2{mS&G*ZenN?Vbpq%~`AWmIl7l|8gN^|T6`2k>v@ z&mg8$0=FfDfKnA5xAZwLDOA>FQ%<6HA+qntn%_xg@VuAORm{+JOLdQzRrk_Sb}D8! z&Jb}P;S7u&gv7AeW#}jL>AQKOv@_9rd;2j%H3Ku|juZ@itJFwhc#sj)&5pp^%0gjk zVE;v-d`zLKRE_dhji^3jJ;eGV8PS&8o)2&n?{6kJdb0!G+M@#Y6wBIwQjv7j%*Z0m zHkQp)Wt{hyWmXX-fDoPwA_h4)<-NDXpIhBg8wzWANHJI+dk5lTH%zE63MsPetwxK7 zyHJ1Auhfi@;g!nQiF~O;w>Eiay@)FK@fRO97TH^33HdwUn*p07AF%0wj0?oJd7pLc z#I`hp+3HS~<}Na4&)Kcb(MMmaRtkXEDle&HAJ+D2bS))+)6Vp9_)f&|Sy1KpmfjqJ zvHFf4oBgoKM;8Yn96f5B7>fKwAHvZL9J}NE^22#U-sLbBxcSY6=59CE!S(Z~RS1UL ztUW@Yvzl}<<-ayVGEes)MJ|0QDYYyxK+1!x-GgGsgQguR)(WkP2!pjfJ#)Yhr*FK9 zQBbhmQ(^@pIJ2}##%nyozS!DGGgFh?4q2z&%z#8Bwb?t!8W~l_(bCGtA#3_!-$zo4 z%Ln3{jj2C|;QYd|C>DMX8K3lXL;jdSgPNK3are&HaHo`6&}oVAzC!4eFm!2#pTEU- z2pSTAe9tGWte_7L1Uvi4*(Fn;z4`A<+)E{N3>mLVS_-eh*qe!-k_CnPG ze)jX+Z1gSAwPNi^zi0xOgEFlMWTn-{^(2OKQli;t65H;-qkP9REHXU^#5Z!+tuL%iE z68^-g8}s>nK#_M)K8$$?5c}iaxJ;O>Y$&!mlB$K&)FgfI3(OwNx4q#kepWc)Z?Waj zVnQJ;{|mlUqM6m(b0SGIgrsJD1%(W!M?YKQoh0jsp68Hc)rVxwj>4+Ql#RBJ@=U4I zxI!IGscUpdDg!%)++1>W=897Qgmy=#+`6YtI-47e@7^ zP@g-~O=fxmvOL$`M}+3Dmu8J)iGU;02_W?0WC;Whsg22&iDcRNGW;+y0Orqkg(5iw zJ3hx{IaCq8^5w$%M9H0NxhdrseUJKtAM?h^tUiMBTlx3xVVciB&;>;JduDs3euObU zFnkqCfA#woTk~IswU9(JlqcXOYao2ln&H<4P;F7#Mn}eV&#=&>BE;f%a5cd$sPbO% zi?pb>JS`V_WPy4P%LENSBO-&^oE8MiWAelR$;oN{hG0*gn=mLSvznXKpW6*-V#zJX z5ur})iyeP-QB}5!%qf|gV~}x;EYAWHKIGS<@!81n=RCE^Sfet-07V{EzeDRR_Nr9Z z;^h!Bnh#0=&xL^smNw8-|;CZ(OGAP+Iz?)vXA!`3=bO`I7;h**Jh5)(Q zrZz-;#4L1#CF&YBKO8l#G~4qxSHlI62d2JwPrOFaS?u$);& zDju&9!Wvx`MS6wD_7=YuH_20ttL9s2{0)Bh_rB;kuU#?8JfH3G{kQMga96Ve)W9wD zK)xeVhQNHj(EK@NT42@qDiyP8U~UL@UrcuI+JymiiNw!C@NDVdK@jhdbod}QJgqBV zDzj)Vq7yJ8G0y?fo&8&aC8Y!|=IY6=-a((z-5ZhLBsT?DD!Y>91mfA8M;4rJa5 z=~_S!wp9?@y=9Ik4W`f8fxig`G=VWbnC>mt1ad?(F=9#XXqM=Sx>Wu*Ii0-4XwIo@ExQ zt3h1>v~tz}Sn%(Gz2ng#L~*I_X@MxQ6H6|)!SA3a$#Ee4gRrh(mK%GE{sNeM5h(EU zY1S}!=HKb!zqzJAe8SeHuhRrk4+p9P$VcYwXK(kf%~@85GP1WWUd(@@e!j$#%z9zJ zl79v$RbS=*L4p^}iCAA>J^66Gu&@s*{wqRhn7o&eTwstOyCK*dqoZ&ZmTaY@_571DTw1&fq<}sX;Ndqf19+SNAq|EO==WAP6oBcs2x6k!FFnkElwL>T>g+JZ8`bh zA0SXZ%M$4!PR5Q%@R$Z9T|&y!10%5s8pyCks%ySrI1+P$R+|%7(m_< zVQH$iET3ilF{VFDKKieByd@((@18|G$G1M~Bz3_x+YCJ|;QPFgJ2D5hQ$rJDW1=x* z{dy3?cT|KoF*d2}R|gy9{lNBN;vu4_?;!&0zPg^%{rqNGb7vh0K31G?v+Pa0eKVPz z2*pu9{GU5k3Wwh51&XH`HoH1AM9LOH!padA1n@tN9H6POoXg80Al3@WX+QItE&qc34?AIhMsk?=LMFMB z6pBb+aN~HpedCDWa!Hz|0?W^IZX|M9%<&hRs?tnzpGqf~wZ1`_kEeH*9f?!qp&dSZ zN6tW=SFo2pnr~`4ld3WCqx5HrO@2Li=&z{Hg@&1)HI2Fq_eaI4ALJcMaX&ySF_bEQ znwOKFH_%kng(_85R+Po=Rhf^i7F9Rs2s(|oI{G+aterolqe*jikUI&XiPbm*zX!6v z{UR}r+^nqua%q{cG;(QOQD|>!v+`lnGDD7FjtqD<&M87sl(#W#}Lw; zKh(0!Cbu}Gf1y0q<(*}BPH}XrJ93+RdFnwX(IqEwIX1xm+uFLq7&HJ<<->AB(MtNG zC8uYQ!1+zhdF#CUth7b?*UbVG%i7xzVC33A#);0x#4fD+k`HlGfGrqpZ2J)5=D5!H zBYonc5lUb2A_TBOrf_^M-`kUM_%z_tf`tHs&`+stsN_HX$tbno|ES0L<{~tNX9qNo zRYnn)O6x?bO^i-VeW}Vm!ripdNX{rfbZ`80)#%yCxqu20>|Qw_y31*`ynHk`+pqjIpM3$+1S^4I4xH$nDOTGvoIsh0xeGibLmB$L>%7O18etQrnSVj+z{4~|mDgh-)y z__ii^HH1+wNqv@M{(M9P)-n;MLH{G4PUPPhffoA407Be;Oq5_LWU4{pM6-UXhT*|V?Af80I2^fTa)z^Y0GH21E{5xLri_Kz?fvEhhjW=qXy zj<`(KDNsb#X-$QLKjRb=@{48hkaH+cQjFRgFeH2WqdFhK<&>aIxruw89p$k1G;EzG zw=M@D)HzG6)~#cu@cl;lMhY;#(&S;UtAD}C(^y1cTV=*=YvAjpvm$U>9KNn=Ol)0Q@snyE*SRY{+K=(@ zAeJp|vJ?7{_WpCu#0HgmO-pN)l%8$N`tp;lbz{PrvqPNRueZrTOh$&m20JFkcJhV; z(|ZA2HR-^ajN;x#HeO4Z=rOhw+v|R6mNDz<8L?olJ|dUj@CIkD5=q{!vj*8BTP33& zalY&DWg{BBMQu8dfv(b?yBdmV}`%FnLWVjEX{fk|!q5{Siy=9O@N2ZxY2l%hOy$k@FLID`X{pO)w8HxztEi z=~2leH2C}Te-w~w?{(R!$(|lZ7|h+W%S%lI3Miin##%Ofv%kzTthA!su4 zvvgLYD9Aq3&;+`U@=*MhO6U2b&*p-_J-XC8d~cz7#KYe$j^EX7*@PmtYsF$Ch(|(H z9UZ>YHe`K$X|?$PO|ssJQP}phBxM%)ipdg;EI1TV`##npEteGM;+tu+$9vyE#F0)X z8w_}Q3Lo1sJNszhyMnI=tExlkp|%U|a`@TJnqq)9k(uhA<)QPQ`pL)6u&*P(5Jc`po$%wp~&oeYovezhfo$5lK zW>6x|GplaXD!VrQ7(O1rm1gVw?^r8tJsSF^2T>E+8&He_sEoVRCDz;>84TW7S+(EC z0^LeU{1U)aTso*PIFuOWzbT~dZIT7=EnetZs2l!8%-MgE%L;s&J^^%i9uv@Q1pC`f z|E+Z$cpS@M$74u6CseD6OA z;z9YCq>-5ejhDUAJLoW1p-w5p9P@!Ky00%x0AZz1E50(S@Q9=$F4x~7(hIuvG*tAf zLZ}dIW>{!IiL=doC>LoMFR9Kq{V*r@Fnw57Oi1i5z|=~I7kER0>l8r9J*&_Yef|i!kE=qWhxLL^{*fmeNqN!==d5WsW_O zb<*uS4bougHl68Xi|HCH3fdy>#-yRl4%7oEtUvu?OW*65f>P!WV!z;Ja)My)-iYr( zF+Clb(pO{@_nB^FS-$*P;IR1P=q#Ila6qTi{3;P3E&I1&N?5k3=^W}-huwNK;YkO~ z@DWDKm|f39ls+Cj{vrEPDEFc@`|d%2n_FUrmc0Par}#LDZJ9&-IF0lk$XJ<-zmPLy zpB|*_GFh44mTel8oSQ_O5#|8+;y~@vPm`z|%)byixJEP*L;Wo?uf_hQfMf(?#)w~X zH~UGNj|!ag?a^SpFyHIgif1=pZIyesl8_tMYJV;MMLBZ?9@Ab~@GBd9CIXX&!=}Hn zcu9X|@ceu%48Sbf%aj~*|UffkZV zhz=O^D4c)D5-^UV$|<1E$)#OSr}&w|=wF1o1B-7iBKTEgK2E^HS{y^1spV(~bS#`b zW=COVH{LCFJ7z#&$=XonQivr?Pc8B9#7B6_sS7EaRECMmmQwq}=weIj@qE??OQq)I zER2b#X;?;-%XmbK_3`Q>3QQ> zh{=@)AhmGgipUA=uudc=6d#Im2|_5K_NG*xuabrcDMO_!OSF1J9~*JKG6#)NoSa^i zyQ)-$j?6130|?xxs@kf|LE)CI6D2~ME2Ft9nS4rZ^RMoxs@6FUHD=}Mf2tVB79H-Q zpp2-=bSyh^{P0TQgn|L@2thxsAXK!+IwRD`6Td+UfSPS7eS76 z#+rc)sL!XZKlMz<(5-RGthcSoBiyJ*x~vZ)Gs2M)F{Uj?oqWqamxkfgjKxOt8b>-d z1aQ+gDn&Kf$L5l#mXeFPzY8Jw`qXHSo{J1_!lcb$2zY6d#&GX}H_fi6zj}Mz0r|X> zZ$Xe|q3SA;>gE=k)Q-DmB&pUAQEa(Cg$mtvW|jnByMP1hMP^qmrZnz|Os)Sq+Y+N% z*DG4NehZk1Q4Nr{VFr}j0Ax8z`!6`+ZqDq-2)-|cz0-Myv+)KiL*B*~Zm2Xo2x!R82 zq_RCO4CvT}pxQy=-;p%YRcTC*blKJ5)Yi1Y)N(>F7T0uA)lD(nEgVDhRh4dmrpLlF zcfz)ZXQDS_tSLngaayc^HoBvRjbd4+*Gj>cnm#%$FYAEF={;W8T39|-*I zG>j2BEXYRnx~{;1p^>yOGNwAg|Ma3o3| z#+_sEGv)qEY!omxwkbAf96cu4PZVZ425ovFhz`un$AqmkP$yxAAc3tQwt$t;aWw7( zb7!uq&98iv6N5BFB{c(K;nWqBlo~aY`ePH)yA!yilgJT(mZ?FIOoVjGQ`JbQb3Oh1ZR7Z$8JfK5cOM9gmB$u=l3ULMXV0I1OyLIz zk5&_+9+`5)md|v=&&r6q&x8`XiOkO9$=`{)Bi9z9E)Yr_kwb=&0qTHRp}7Hsc}>$G z%80qi-6RYwRqSbPDy&l21fl2q`6KZV3UyOvsu3{Otf352xT!w&-)UZn6g{5#yM+aF z+Da}g4T9mtAW9^f1cqQOeZIMAv7nbFf{$2|TTGN%S|nQx)L<6=HXsh9TYI`!Ab~-3 zZt3ZI8B$xgLr?4yzC4ddV4`kqUpwLWi$Goen}`eLdybWt%5M%=QZ7_Vc;hnxwUd&T zE4F9m;Z!X_3FJ)f^EU`9e1)rLn21sNi)p=W@d@On@T!!AwTF0SUo6$W%QfBVH3vMT ze2JJ+vpMTpt&-{WGIeSx1H>xz^hUF}9w=dv1Y$$NhOP-Vzw}0%8NmPVhNUSsiu=l! zpiQSq3<~beWDcU~=|xqktuYhqc{BROpslU5t>#YdRx|pMzgs_Dww0sE_oxW=gSOAk zw%;=n|C-*uQ2%~wX4=;WY;}40{%88TvjO5?tQ{cd4x+{mvg;0N;tr^82V-Uj>wE_X zdl!#$mq25e$aR+_ahI%am*UF`5CDkj+of^+4uql)Xkn&-_uPM?b>Rh3qukBkd#8_2togU!CxWl{R6W9(S)^rehJ6O*1|{t zVzSZ^S+?R9RSNekQ{pDp}{olU! z8%*~9ki(FJsY_7J4jO<2(D=&u_7MWXSYL5>n!uO|J4XNjy5tTf7#omsiCEfjJPXFk zojE2V0$98`ur@z{Uk)b(a)Tt3 zF@W2zRxz6Q+g~Yg5c@n@72qsm2Xiiw55^68lZgJR^yYH@U!@meRwTzAlmG?+`#=c* zz_&|GIQZ%V6(ElDm<@O=Id=qy?ixcGuLjJv~| zc+~}Y1y2t-EHS?V&bX6aK-6EECn5X8{|)kY%@CV#4O0iDKXYq%FPrd6-OW}vWozu0qn38=56P*7g8OIcyr-4E34TP_Xu0-PL zvjk=hE@m7zhT1>G&&fw4+&@*X&|X5qyx%Kg7DegAh1|ggMB?V*NJw;-TR5kNM%>f9D40m}_6qbCb_n`tCZlj#{Mm z{(~I*Yh11cUw*kf$M}AUg9Ez2Mz3!`i-n`DL(z*14wC_(*1BJ>;BnaYe}l(;Ki3jp z9*90&k-h9wy=(~K-~!lN2au({RZ}->0Riw|+JHzrpzae5dXZc_nSg6L^RZ%i9H8ni z7`bs72av^yVok_QuL$Ge(O9=R-BVKLvOV8lTRhZ+ONaUB5JJ;9t<&-4F>(7=x#HES z|Mn3=iHlVdNb%x+I;KtmY9Y$c{WTD%Eg+b%+QtzNpwPn4gNbXuh@&vo(*Hyg;|kVf zru+BM&jMgn2+RLyr4o0_DnDr@KvjJ=N~@Spicfr?bo73%P(BGI;2wVwkPr;BsyNEf z0A%NpF-~7C;8<{FVRe(9ER+CJLTjIP(R|M0;iU4R_Rc9aKgLQm%d!1Qt6v~-b}m*o zKL{8B>IukkWB)kpAjgP*m2E*p{4k< zRn1oll)mVFx$>rtRV+rqekiZast}G`qaxYFba}7T5@i5>iVc}OVgDqI+H``aNZHPa zp(81M^Me|%;_ri~5Oh&AKt#@m3h`LE7<3wdaL7J!;_H0m+p>bk-Ih!7h4{LZJq%S2 zDMScM@+IybcaOec^;JE!)i^WMGpD;h#*gN8XiQPj0PUx<59gh;8rh4?8|vhG6Voj!=uW4XnX+jLYAD>; zrZ`(EN0+EGHHK$Y^xQ_)Z3L2e2z3P_Y6$O%4=zzC9MigHRNy~a!YU9fhf))AbP`3% z3j*#S;g$ooX^N8hnT0yRXa@|-QkMGsNe^kvXt!&&9&i;HXtOv4N5admV-9hsU%*R}#(u=ro&mn9_&Dhdr=pfvs0x_lN~QSK_L zo)Zf`$wl{QZ`+`^ZG(3`Aa*+&jq4vls>FKbeHbT;F;(;u&7UpLpzjSDPw5uFlK;UI zg9u3N7!;)Je3z9Pt!E%zn^X7Co+^bv!5CymkfkwyqZ1VLh9}t>jCrA-HMk)lZea%0 zH?%TaK&r2?T+jJc@kZOJ?($6|)d!ml`78Gw`P%S|R>G^my*OcQd2T?@BfSA-OhhSR zv{p)4COV=Aa;B|v*L zG>Ix9xR~0sOzJU8V9~}{dEp;qbA$7`u(D{QrO+2aK!-dhQge(#-X2M&A2OB)J-UKn zO}Hxi^6G?Ll{~zb#nC!#2-pjr+Le&-6KwVMf^?5Lrj~*DKpVvr? z3`)9D!FzLJS8+P@P7PssH$Pqmc`VitIm)tkWR?-;%9eIaD@(7tEKpRF_ zc#-yl{=FJ~3g|XvJPa#ajx$zA!*7Hh!1SVv!KMp)ZJBCCR?~kwUqS?ljQ_@STf_VU zvy$!E(Tegq-nD}=%h7fX;iXq#MrsiPjBu9<*WKeO27g2kIgh+!k=gsZ_fh9VYN&Ca zHDfMJge-l8pDr%1G!Z`~&IoOoIf+}IPPAXOOBi1>p+gSgm^M!3fCVoZjLdABNv@As zOq8r;=O^p|GUC?7ljsfiK!7T%qd?Pm8Q4G`co=%@2!_W~+AM1O@$z#6!nUPs%+mW= z$I$`=QBJX_)@vH_OL`5KbSiT8{og1h2BKp7kgZVT7W6=a_-Qg40Nsg|zj$`UTtUw7 zCH@%AtuqT}&MBDB=IBEr)Pvm;*j{X9{}`{1=(kxnX~_{zZds^Le+w^@}#EJB-TB&+}&U zw2UPE*qhz4iK5|$=}ON?FK568+jrg&k`GV$Zr*cF->*ZF`wA^D${ymj?(W*_UZ^fL zPsMT&C|3JW^|>8J*esq!v-%0m-MpA7chK*B264_oP=a^}ZaL`?4e@kDf377k%4S$p zf;;|x(rTy6uv;*5E1K<(C5|WQD1Wf>NAJLWysy4r#o8KEC@?!|{^*Z>=b-d`ueJ{w zH5k+Oxs1D|*kV#79VTV;gyz4fSuuMWwY~dS7mzYFKtI_r^(@g0lPtAE3ov4W9Pp*_ znI14qX3vC~Uu9nPKqRtIX)X2Zb2FZg7(YFZ`@X&LAqsL(DX*B;^>Hhg=yj<5c|4S% zL7yuoaVT}sIUC~B{0&mPua%ZF0=sL8kq&Zv&UspF=S-@RW^>TvdRmreY=Qf_*n#8L zS56WH>X^(96|A#X7JR&uv#_=x7VF=-ecF6q11tt?f7agu+uGW(TonhOHkR~T^0fKR zN3pxM4()uqJoD|1J&gx0zcp0d2L1GZS=)Fx_ipXSau3dG-qbA}vNQ%Q#a2EN8r0YEfLr3QF^7#abq=~zSIU=+e}P_e=lg@n=npQ&6+*_M#w zwx%soO3P7`yFYrg`VUj7(o&(F@QlP_Ho<>TSguvPZBym-=4-xUv*Xr8YxPP!MEjaT zuC2zXDRij9Y*L?NiQoOlgl$!Moteb_xh2+Qd;RyXP(+L`<%c!9(v~&M=2L!+qyouw zs*#lU@joYF7YA!oADhkl;j(dW)Vo@w2Yk;8um-yXPDWx!#|k8juJbp1xlh`jTbkWw zi0^aWX!LYk{h&D1E)5__`h7TK)?A16vF-N6+TH1Ef=JbUxou(03$^AOa>@OpMcMEu zifzu@%i$R@Q=enk*V^OQmW5c%%ZoBZhysj+@AuvICcjkiO=wA(VjwPUyDABx{_3!g zZ(w0zWU<^)q0BRLJLNkY%ML0#gOZB9*gvH_199Am05Fuo)o>>PiP4^vCi3RUIte?N zdEeqf#Bx7HQNLm!RgKq(&bxS(x5VT5*}gPMr5`2NN5H4kD%L!l#SX?ZB5VgU`&RM8 z$aap#jMM-jdp+Ij4Kfau-$5l4l?HU@@G~@YZXd3$@-5R?``hD6pxy9Vab~hHja`mI zsQW>wRU-7bl)TO%6Kr|(SXL~}>gcFatXuf2s-{X50jpu;h1IDBobGUv8iKN(89~J8 z&#LtdFC!01mG4?D%PmVeX#&Hd3t`_s8hoaCZ`jUMP;7p@6ZX}od!AVaZT?pWIy0oY zR=%YAyz5sYWT^Xcy24?AWc{$HBKtx~dY4Lk8$Ns3ykdc^+;0KI|=( z-8T>)oT#SKx^d@rmnJFpQI7Ua*(I0zEg!bz{_Vi~mtLXio@>#jDrHPvlQ|iJzZ-iW zm$XN7lbP;rtQ>_)4EO8wTw1^eZ{M1%TX}KptWY?a{91iiP}{Yp*blf zCfr;xp`T-Q+xb#Oq>--|KTA9Q#-f=Iqu7L^0A3J}auLYqp_5K95<wZa)!q`L`rAkcjf1ye zdf%gQ)}Zv6Ca(k`J}zoDsvLbiAGZjcHv3+jQD;^Fc_1h627)GD(JzYHRRrZkwUk9gdM=FA z%&#*Vg{M}8o#OZ=rgyY@RhXHq;iWkHKVRB|9i=hSf9VkECWkPS-oSf%`nbZzODtu| zEJnobc*mQjV4Dm%q}~UBN|r&{C&mEF9Y&uX5l;6u`MlPc=_k%is$D5n zPrFT-I$~MRx<-rv=Njfx0y6mjl$VN#1weF{K*G$4r7%%}LJXJB*cdt#(f&uUO;|-} z$q}5+-@BOQy5hPAOqGHjT|&BPLo6hmi`?N2WVfwUwWykbO?c5?LN_n+{I&8_rroX= z&C-rQbdtzzL3}EwpQLsWQ92STlOqr;u+Wz!c)k3@;^UWU$Z2XEGu~EK+N;Gg>wm{Z z;Dhm+CfO9nZCM9S^R9Y)TGPxKPt}^5&^wQx zFy(kq)B>H^+T@C^O%z--u`(+ml545X$c#0Axmq$q)1JSMKFqP~8+5?&iX5xF6ScR^ zP#)e1c^bL<(o|Y&;u2uubs!ku{dX*zbrg5(`8tcaXD#*Ah*N5qKw0iK34NbJJWDi7vk<^hn)`8CJ<$wNAPV4cpRnCNWPv)g&Kt}@k}OdeemvfHUd2uO<6PY`BoonJ;V$5IIVwkJGI2I zr%#$Wk(kTBqO?F?&6yRsYYqbb{jolhG3UKJT_}=zgeq2uj$p)ZqYF12Mju*Lq%|U> zpKA{{C0}&zZmu31dAJ9d zZtkBqR5*z+WP=HoK`%PDRXCs%!wb9Zi&p5=drr^5A12@T&hNj5#m{7*n+hRu`6*z( znN@xn4MyqLUA#nv28aah5lW7=aus-#cl9At&iao^{Buc8+t{S1PDRS^bfszySgx}( zojen_cD>6z;BSANe(ZM3e_3rK+W9@pL*P{?8Gh8sFZzm|f*JH_&<%v67a87qgsV|) zEK>CW>NFm!og_|7FS_bvvG1zXj~RITk0@7b$yx@*wwqkLop-h`(EEZ8KFkVjdCoZf zZ3E2t3yt;t#m4LVp>rA5jtgFQLI&CIYM~kR^uo{m;w((B=c0mtvV3~1_1rpvpFc0v zu+z`I4!7YfQW2+AgL&As=w@j-ZZOLOB+Q1o8Tyg{#Y z)b7sRpKHWNFgcX zD=bp5FO;(*n1}gOR~w>!bl81Vz;ml_mbTj43S5^I;2bgZpJg}{8m`>or)r4n>FK7~ z5lw>|f%769k!BD<2>S>gjW#(_WFYakFqF#LBlm6;uF;Q#w3zj_0USF*&sQS3(LM#X zA-?``trL#&T6Gf>#_cYQ3W&xH>JUOhjSf|cMkx$WVDfGpjn+JhPC^U8kM>UU3lh5n z;6UQDnANf$g66#B@`YJ#Dty8ru2@>J<*-oa)!=H<0Jey*2DG@Q=&%;QsIK>9a`HHx z9k|7P#D58qzbc0FUB|)Ga0ir3kt_iS4uH$|@mkUG)PR^t`-p5Ngt>?0Ip&1y(TF#D z5i4ks)(9eR2gnLLgl%^cN>-hAJ0dHU65UZhdD(wDeuzEs3p=wnLG3ra7ES`;@!qWp z1-=M`)2A6e!vz0T1pc)_kP%6iQ%)YXPe#j5e%Fz_%!Huvn2rrf!E=Zqh>5W(k0BY4 zd0&*GkATGh)1E;}-62i<@!(SpOJ(UyZ8QvGc}(?Sz;$Oz<2Op{9urC%rl%WBLllnw zYY&ZMN{5ocEiHEcdsO?ybXTgpkjV$GTm|9}%T#koG>i>@oq3OAuAyLk@ZI(aAix zg;*1LI1{irmVClr9^B!D&P9cYE%`f(8FO>l)Q{P_WI68TKs(1G``Dt=%A%u=f|}zZ zO|oKc(c%W9Vma?(;i_Wf;o?8X#Ynr{<9a1BJ|(i*C5j*OcwYIK^^&=l$C631Qe@mh zUB?(Ut;$UQ()8@o*%oTgzEZROQV4m`lRzpHq^!)b%HF@o(LcwzD%CZ|JA=IN18cFD zWBE&XxiC7w$s;Lno!;`k+55&3cui17O*)vPrbsi#4}?)U+d~+OfYH zb-DORAJ;M!7@|_cDPJ*49x&nGAkRG1z4qM`O#7)W!@pK0wRWAHBx#7;;JT2E zp$Y>xo5-;0z`yJ$2k>jXs!kM!-;Hp^TK?Oy8th)*i4N!u%l-4RUj7%oW}u55L9AiK zv4XGxNrtTjt-1z1w*vD7uFYCG`vhlGZKNJxwhhtVV5M5Ws{HPcw#(`$2!+$&HqnYT zF*r3k3}9tv1rFAFdb~n;Pfft>7n1hoe@ASQC9*9aC;<^90bItbuviN;w;^<+LcJSi4@HSK>4~LiOu%S; z!%J*O)0yVfx^boUmi7%SPFtTl)hrI4f6{49(ZvBRD}FKQy72F6A^(h$oLaNdg>uyu zgh;1$U5!Y?*t*dyQ(4y8-7SaFp*UHQa9m-+-2)Ks8IJ21o$UBO09!z$zt*a}9-^ri zi?PtF9T+7ZgWybBg1wv@vYx8}-Fu$USF+(toM{W4ql*E9iN1lNz6Zg+d}Ax{D-iNK ztO6T_>UzKU+q?Vgq+4*qI2^zLJiv!rz|@+&aWe%|P$wkfybSCb7?M%YkOq-L!P;xV z+*`7cH~<_xtKwU&E$f`bNy30)!t2XBe)BRYBfIfSyDscf4&VSu8N-T;zkjR0zbgW8 zFvoC!!*;C00?flcyqFTp07Cr7Lrf=B;T+J^B9t4w4{Qic|2&cvT&_`^00uF|RV=4h z46jfLjgY##7qGl&Sc09j2lX<$dKa12D!Z>n-G$Wt{tqhrYoVC9Hp9!gPh#S zG`l z#2U|w#E2YC(4Ys49FC2gd8XQ!&J2l@e6}8JsnYq7nLNUqT*BHs5MUg}JtfLia~q`$ z0x?6*sBF$C%F2FQv|s=R?99&YJjd|-zqU-zPrA}v|8UQ}oX`8L6#eWPX>iC6{J_vq z(5HCN-!>2tDgp~Vg$)g(#0dit4YAft(b#O!CcGh@%*`4dBQR4-x1mZReaa+#o+jP5 zDP7iOP1CU4(sc~a@_ft7slzmF(;JY_fjlLHoF8u@1$x~YCIZw#t%hD30tj)`NezKZ z{hk5|1B$)aPc4-bU6dp|TbCM*b-QMnv$FY6S@=f3NEgkr+ z*Sc{BK<(cXoQ4sw<2x?k0Z!o1Y2XZ9q6kpr2mrVWuGkFT;95M8$_l9wUe(o2;VN_C z<)Yo({nbhN0i_AzUJl|SUfLvX;;N0qesJdUtl}#U*YGXde_W}^0OPiO-}t>7%kxas zt0g_a<9yEJJ}%q`anwj%+*7y#Mt7>0kcoAui%1uF~l3&T(+&sE+0-uHx^_&T=iWaZV?k!OwFp<1=pO2bAX)v^ss> z=YKxnfll0!EZ2sP=tYj?i@xLqpsDF!*>_L^8?NP@zU|u%>YyIx zqi*8d-s!21>S?a#t!~fd4(oMt55BR}t})~Jts9E88F+w4X4C6@{_8rB5W)@s(MRmX zZtTde;Ek=^N89WWF6k0J<MRb+>^<`APABf(8J1D&ts(EY|IR%2j_>)d?-9W7{$Ah!4}k)2?8mO?1}~iop72E* z>5|>>l>YFlG+A*oHMfxj>NB<>@97!uvc}=2ecW6VDo#9^EwaYBCwcK{PRFx@XP&>#hc_tkFZGpR-Ft`OFt0P z&R26I15rQqC0q4zaP?Tf@hMHmUjOkSAND0r_QPxTW{>vkuJ(%J8@q8(F@NiFPxE%Y@JDNAK(lzyK~)4>FsJqd-(&U=WS(RBe<7 zQ6Tx~O8J%#<|4iaYQ6a$|KIr||M`Eg2YVp;o}nmtvm!oivq4j-;vxh_@eN9RY#R=hD54*ZF?_Cjkd$?2PN8 zKnyW00(=azzbIo6GY2(0%{1XaBTb?RQCm&5*IWx?w}fh|?KXmPL&(F18fYR26<3^) z01jS+@i-Ylps_z2Z^SV=>83-W$LEa)pwzCF;xO1-Ywqia4U zon#U&`~GmxE)SG}kppCKB(u5y@(57C>k2#!rp6MiBQgdnbMUeYC2X<6i0&L9Lk&4x z(Zd)(q)kMD|41xxw*xp>u~8O53o}vmimPRB6dlylA= zE^DD$Yx(>vPd)kcbAv4$4b($IZ8H>6g_N;iLj=GLLIii;9Tr9#=C!omO4B(uUrjsp zG}In_0C?1#t~)i2R8?hfDp%pt)k!F~s#PhkcBPNvw|d=YVYI@0p<|CbR!84__0R*b zG}SbWO&zreqvdBETX4=Iim9z6?<$Sh5){7Q_nUy?W0_CJ9&*? zZCJj!>6X&&wk)3XqK6BoA z0HZkvTIkP<7U%$TKrEd@LZdnYrtU?rLm&cWw7}wE?Mx56o%kg9k=+@=U!w9|@Pb#c z|AQr9L&fy#Hk)8G&?Fh}ha4<{XCT5CY~wuOz*d2oQiT8V={yby{3)IqFevwoa4+ zZ_Q|2Gl~V5)-?lwVAe>F300AuG>zH0AWMViQY*kTrZ1RjP2u*IuD~j%|AXAAeE1Ml zp(1H1W(nX!LNf!-cDA$aER|E8T2g*Ym3CFNDoC0Y9j*G4s{uU?NWeNH_c38P{1i=}!_T1=BS6`#>>vh?f zT{&{Ju!lt~Hot3@P}I1_;l=5A3AqArnvkfj0t0({lOH16#k2B7|8kP&TVGGz7pnHu z8fvRxl9#krz^|=YLrQ|+unKCdoWpxY%=9%9DIftUssT2)xy>4`tA~-Rg28l> z#CkPxzEFHp6?@7Je+F0_TP)2NAJ)5W3#5$|9SR&X>9KO48;>8Y)2{p&Esum@054SJ zyHLT?o>p>_qW}Ol%EZYfg>u%UjFK^s5)ok-a0>#sWiHo1!6N$E3YM^IUh^7sBbg~h z)2uoo6x+?mc5@2s>QXwV$x#EeA`V#UYqhC$>(rf=}1m-c*q92#&DtBb3?*PTj?m|4plE)UtXE2M6%0ix>ii zXO`AnzO_JrkbtK2+Ty(~z)CDUQPdUN;~)3R$4QHO+)@(nW4WLM6XvwtMJ*k?!4MpIlfmitzBd{8&2N7LT;Svr z48i+*l7n}B3?%bH5g0!9u{)e3wYIgFd2j$FRovpfRY`CW2y(iIs^oVkxfxU-S|_ZW zc6T1>%VExEYqOE&HMe= z-bYRbW%AwcBZjsy4{->=Z)!4sExey;p7_LriqHT!Y_H@3d7sw`Rx=F3~y}5&Ju4nZ6UGzUs>q2I;fuI6UsNxeJ;m@avdJ z5x=+~KXEfZx6lE}qMJ7WLLgK>HfWpoGs5>n0Hsr>`eVW-ga9(ozmVWR)KfjC;w$|c zK*s2TE!@H>lRd8^83kOxhBLbZL$DJdf*Tk!|Jta)(SVva1PQwPI4=4kq6KmTJj}yq+(RMgLuaEMkr2c~meaG{%kG$YfMLWt0&HxPp;%#%IjK zXq?6X!5Yl4MnTL*ZNw37^aut?OI zD2((B4B*JP?8uMAyW$XlBOu9=vFh_KXyvCOPvI0mGYNYAUt{|d9P3y~{~lFJVuf#XC@5}-=~kbxe^%e>snlk7{U zVvPE$lL!dR6C6y!^{bHOmpm&$I^kxti-DL1Ix6`%=Epc0GiIU zPy5^uIRnkmBm1rRY91L0P0&7|s+r-U==!f0p&C^jG z&l|gq%cTMx&JV?a=!og*;N0!7fQRM7Tm zpICIz+0+p{AX6~B%`wD?{|jx6waie97|RW%s4SJ!4`rYcMb0O z4-_-RZbVERr2(7}NAr}_KOh1wu-AL#0_=IDOZ@{)_17gZfHsVXP$k%c1y$rKRn$Ax zR1MINKsIRIQmv%b|60A(TNMlkeb8MUQ(x`X+XR9JDAtf2R&_zPHXAmQ7)xhW*=LPb z1C6F>H4YWX)|ur~ZvE4f@(6JKRzh`_(pB{c1AW+6jab)&s#-;aignvC71QY8 zSYJH@k+s|6DA~Ma35HwQzFpZYUA8$|pe`r^e45#8tyvW9R*}%zaBaeI{RkUy+gkcY?>Qdkh-in3LjWu3hbquA1S>wuo zwF&mp{|a_nrt%nG&0q~qkT6)r>I&gGZe9`&S(icKJg#0V@F+2AVHbvBjGE(-Xxs%L z)Eh?R9G=`A=Hbls;g9hFclBKP9f~~k03`0<*Epgjo~YQF8YtEQK^p=po?=hS;#1z@ z{=3~cq&qNfGiWuEGG;xtMdONfsuy76HYQUzse>~xgX4%sWuoIbwqp+vqA<|o>g|D6 z>*Fx`$VonB{l4o7W!=OHM9o`5|Tg=063Xw$LWE!4ug!|XquG_%=l;-4(Z0# zu#&#vY_8apR*scMftDtcn6BhMt?8S-X=~x>#op=I`RSVzG#dDcqCV;awr8+~)}{tI zSJnU#km{%o=;^R(sM4#g=4z*6mM;M7g}%ne=m8f#>*nQUUS6NJc59b`YbkT#{}Z^* zx&~oF7F3YPYrW>{TlMR{SkW}{7s0NHtgH#bp6R{xt2RLF(3=j%#%>&tfX9Ap$qo|A zKI){dnamD}eU{VCcAC$g>Z7P?6VoffsO7FMkj8AxHfC)>gp)FW?QA8V+2-Xmz=PWs zqTEKUZ2j!s9!`)xiQz73MfSSm<_nV)g5?ezoRC%MzKL%2D-cis(epP?!EOl<@evpC z$7TW*_=q4OYN)Gh1dbo_X64P!(ujZ>^*({nmWk0WsrMd?3YKrgpzr!N-up(u*(L+@ID>|(PBJrVTJ zj%DQvpXuUp#$c*jUGy|)^u{c#!V2pIxyI?^WlA@9K`4Vv@9)3(^mY$*+#dDDHFe&u z6W?auqL?98FD~Mit5}zHmY{X{t#C8X%5aQs3Eyyg`3MOx0%;L;{}I0cVkZe>XYo_c zTRx|pXw_%ofcB>u^rP^I4zqmggPLf zLwKNe|MYin8ISsiLY{Y2&nO2ll6)75R!8JE8%}@!ca=y6F;DZ3!S!6{zJuq>gtrut z$N-0*j1?XBVpnm>zW8HXcBcLa`U!N8mv)g5d6G9KlW!`oi>K7?_LeU!X>yElKLnYd z`I-lOL?9z}=lLi1c`>5qZyox2&!{$26{HV|R!6p`|MI7Yda0k^n~(y6A4r48i4>6T z>QZ>HtO7Hj3=pWUu%Gy`x3{t{*|X150PwtyPw%KkosoEZ|7%C|01>U(v-?KJdn>4` zn1_>@r+L7q2EiZv!Z-X-CxMa>dQ(SmWPAKoPx|4imXf9X2eNC!3ue`~bJnK<*S~n!rw!kv{dXxK+*htV%Y)qqh%*AuI4Njw3_^rf z(lBKBtVG{t( zoH-Zp?783s(4avh5G@)(1Ja~O6EJO>zy;K(E_CLkK%oWJ7D|(1=;{?i!h}@Ek}YfY zEZVec*P6}Y*6oP6aTU<5E9EX-8G83V>Fc*{-4uca|K|{5_^=QViWid&I|eai36dvE zHp}2L=F3#Ja_+1&E9eTMD>NzHgaGQ)s#6ze?Ye-7*s-&8sBN1pmfX47^6srx<)GjL z1sXgUmg2%R5g{U)qGf)HsWcknMlBEuFaMOi?-c1mTtTGH{);H4M$LMPB_+_6;~`LQFG5(Bps2} zS$AD_+-$c}cQ1Vx#scC=NnUwBod=Y9?IpmT|CaATg_Dc&%~zj&VI6VAG&HKYrkXvt z8K7JQDq!GUKG=z%3=8%pr-OoJXxM}lj^)^ehGjU}hFX5OC{m!+@F2> zozFuovYqX4m%DterU|{f;P3nuyiJj)cm}iIe&EKi1nK2@5tG=DsK>YK&EY#7D+%`i zaWbD6ZaifPQ47jftgJQ8MC+Rwvm~bh9S{+I?UA1^K&Zst;4gnvnN$D#XD0yqNq_@P zouJlrp`{IGf$(aeQp^Uy+DTA%1Q^i;dzV3gWy(c7;6bE3c(5h%Muegwp$w3q$Am!d zZa?}$OfXVC7Pjy^h(JV11i_@2%&;dlq>58;s6&?VFe&>Yzz>%dM9?6hh@Om}<&sFp zQDO^d`Fp`wiV#I9%83Ex|FYs0(WQn19>xf^=yWx}z89wg;j?0Cln>9LxpI-#omNRwB=ijYq_^4fLs!J&V$?88gdoP24#g$xyx73h z{4$siDC3CWpiyHUbBzH*12f+k$7kmAEP7Dh@<>?CYN`R7c>B?J2Fb#2g0l|elp*54 zXE=E!K%M22S36acNt(%1p7g9|AV4|5}SlqGOINnOQ&sTtOPrkrr>MX3+y)Pr5wj?PaBUVTx?DY2ifsTHbj$5fMwHrSmp| z_8qNrNjVDBo;I~mU2PF!_r-$L+FV7Tywg}YIX zrtx2X_%L#l|2tP_;-D${r3!TQ&=BeJRWE);f_2rf7Zfh%J2w)D7G{dr?~b#P_Z=^J z(`jDCp(euV#VjV*hnn}oH@={CN^9<6LaYL-!<(fuIRL)6?SIiKVRyW28dTB&#d}A#z zI>)l|?jgZT7M@7?$3T8;dFP|D)vTGf?2XxKm@I<$&hwKANKvKn`)4IuxeJs*rIuOC zWg5`>PGB}LRW1|Dt=87eM#wF^W*}@~ce=M?eDlBJjNv&Gw|8;HGl=!9T+_t0J;+!! z00J#&|2Oru(ALFcc4uldyKeL+xOC#7P6*KRBZO1NYtc0YNZO0YHYLG z${F%!P5>O>S<|}Uw`Rat3XD+2Sl8DO9X7<(yk=tu>;Y?3c7`>auMoo(+IdFqo;hx9 zY-@YPKy&d*V=QA5A|%n;y-~Rv4Qa)yTPFv&IlJ5K?o4B)Hj|q7C1W!wdpo&^Z_M|; z`E9>e|2wKU0Wg=lTyR>mfCYdlFv4?<^%C%!t5+~{pDZAD3q*X_KyP!VG`dDOW1QL4 z=J>Or&2eVFq3$Ag%C%RWVilX5bKb5k9vuV7mk%fAjGnoqZ?5 z|C`A}XELdki}Xq>ed+$DjKHBz@Tph5>U6<+!na-mt~0#0UvIEr#xDD^6PxlA*6`Xf z9$byXo#P&#d)J4BC zSl8=)l?2G10@9wuk>6^}nc7`k+ocs7utD$np4`P1AMk z9}22m;6}KkF`W|Y~SK_-_9`w`0XGEh@ZSsp7{kK`l(-MwVx5X|6fRL zo|MVo@zCF72;BYQ-@xhL{`H^#{a={r1lBPC0j{1ExE=yZh62tW?VTM2qE+rqARJU+ z1zuo?{T^IxAP08f@P$}=gy5?2LvZAk2?7lYGG7%`!M8zQSj3zQE}G%RpbTOkkJzB% z;ozku01xt@51L4)1tBI5VdcHo5gOt9q1u$;geWm#&q&9W)!%AG;r&fvZtNcoSRo5A zfh@{m)@h;Ybs*qS7TXyLR~jlC8y2G*BA3U>p&Zg-9U_-gNP!L11GWXn z9`<3j{2?F)B3G?oA;z4nz+57JM~d+XMK~hP<=my=#3WLpDV$EY9LA)*?=9VHbKKMI=GH^rG1PVuZnCFbbmt zURdxIBO4xL-1&hVgrqWVATx@bGS~o0rX)&I88rrn7>GebEFU%oB288SHztJP^$qof zBTbAWIclFdLLybH;|^9Lrx^e|CM68Wqxor~iP$4l1_3@IAv2|j2*iv({v(m(#uM7# zKmwRSS|LKxVwf>xLm~%6nu|n|T^U-IQo_JRrd96IAxE~MN1{PU=A|5rFPHB|upa|7G~K<7yPZTP7t_ zo*z9@6sAPwJ>uj0VSr|lMRR54jKE5aNB|UmrNEJ%SdJy?-68=Z2LME*L^5D#T4Y>C zAlWcu-PNT9x*<6C{r|>Cf?=`20lEZWEWps8R7u@A_t|*HR zC@E>@c6O(Cx(PNmz+zUxp*&_znkPfFV0z}2WwNJxz9(65|7H)iW2MmNXrkXQWkG&U zB{Ok=z4)ih;6#AFCV}#XfgUJ=7QsMD;er+c6yzpCMyLRuB}J&fg^uA2?AeBLsE5*J zU4~c%j;M2%C|?F249qFqr3j0%sGU%Y62WMU%4iSN=#3uAOLk*N(W>K5SVld9$iNYJCKk68q$;f+F;szox$CYR3Qmxif7L4mE7 z-h-NHW=H^hTb& zVajNCUI2L3q@r%;7(gbEuGmXPsvb7HNET|A1#{s*>6#sDi4fqGl&@z#EyW z*NA{x;6U}o9ILi!S#$%e>c&_Kje^putu`zaZb?{s|2B6c=1HQHrgFzEx}TS!ER-&%A)5)A+3t3 z!$N@)=w`$+0A&mya{MYUT7a=&>~PK*8f81!s&qyf-+|3$lw1rM%<(dL_yDy`@)0n>i!y+S1b z)WEPR7y5}B;egKqlv~!$F74*W)(%N@a9P5h(%6=**($-=l4Zmm3WZkep`eqz$Zcq* z6>{0FhxToq+UawmK^DjX^sb%BqO6xl1-PKg;Py;)6ei-r?BdQWWz;NWm|M9v1m#-p zL^MR^2CcDJs)>AVk`CwSif-wKs?$QH2yB48tnM4lW9!Ps3BayTFdFSH@a*0$bm%TZ zp3)1@TA2DS@Ln*4>Z-Z0%0wWFPVkiSz9k&Mo%1r|9zZV}=&c;AL5W5y(_$|dxXAWO z#bbFdx>$>mB*FN~=$BrAWYA=|Ixb{H|E|u~Y|lz={NjwzlEuE*?|dqyY2@$HmM(ts z>!T>wXp$zAUC9B1&-O9!0^`*^5a@G2!Phc@1W#S)`R?yxaN4SEhAc-}fUujsrQMNm z3BSP}?C~C>Ftf5S$m%5|1bJNhM>ucCL3`HYBEE7^8Du8D93B1YysGu^8RAV zRK|d*RthX{zy~CBLeDZ#ScO&C^38ccF6XlRB?CtIE-(v?D-Ltn7IW|(Gu9<@M3_bL z?iq6S-o~<_H1jbE`@ym5rH7U-TOINa)U-{5vjYs^IB%yK_=h=Hhs8*MBuC+)(1~Qc zGh%466G$#S=hYe5Gv>yxpM|nMPm29A?LSL#>B7K3Ph}09tZM|JLXWjVpNB)AwL?4N zUP*K==K&(@GQV}hMVGC?%;G6+G=N!fF+V61*iwOsG(?be+%D4^6!sdNG&Faha;|hA z<1HWO@v*YiOm~1yS9WEO|JQ`-G*2tkjC{j66NzN-@H$h5w@3g|ABIvdwYhRKbUn2_ z<1fVFFowQ!g9381xcQ^4Y_HN)&3IKef)&9%c8 z4;lxvFasD9bhJl5s8?YIU_XRlU#ww=H)3-f9r8i6GWH2as~)2_WOrbAuYqLqj!sxM zed9!CH>7pZ$Y)CjWvH_%7PYtN@OEB^?L00d=dfb<1MIdh|!nVuN+}7kqb9w8ncI z_IQU_@G0YYGxm?8|F<;fagM+D1(^kX?*Lh3b`q?fb?w58?00lz2=o0nI|sOQyd;4O zn!`9j`#LpLXD(2bg@d0+JmvQO;%~YZUommm~@EWspxZ8@@p?3OOIcmGeS+j^999 zRQ6fi_mj^ELVQF}Q^p_OAAr+|#ccVCb@@cFHeM+>5_iRwka<;`NDTmVnn%j$!a$^0 zv1h?~YRtK9Pyk!t`Ce(vNRap_@*7=PgzpA=RN-}@k7XNVccR}GjSF_AK>Ciu6?Bed zrL(kSuXJJy|DV}-`WggbTHqR5kUAl1&QD9Jg6WE}ox(o?i!vBSN%e8(?GrT^EnQ zu>gx_J3_Vr%p*ENDmrB-^H{uqri#0y(W+_O2n>cE72?h+Dfr4x#((4Ycw`OAWRAByjCD*<>>jx7*|x zZn)rr^OCpX`~VX<=9+WPx#^_C&Q0uAh|{|{bx=Zy@$hs^N+Z-;kG&EOQb7fAd~|5O zF&Kg?qx>4;&(Z$?6p*Bb3}gvGnEV=p!JQoZ$)OD!PQq? zFmb3IXx%}@Tg7lu*A`{$RWBO%vQd!0&M3CfW06e^$nl13*2p7~R5G#@m}J7qC!vfo zH7c#_0n02)#4SuQ`7l#BFXh?8TyxV@(_P)5dsE)(;;h$RI_=EY&OCu2|0AJ2`%Lf8 z5(F){n`9L_G|{;5V{|`9`GX=-NgEnr1OqRfsU}S~<*C!276K2vP$gUysZ!%u0@amm zGkMgmV2%0JvTCilR$Rr%S?64Lt)f_8X9TtkVT&zVM}(2)5l97?ZPtdKHbasHX>mxw z>L#7cw!A6t>-O8(!ZnxNa>ec~6z10b?T@wBe%D>o+uB+7oOLxC=wEBJu>qrvP1^UvNLW@#r+u<4T4}Am|JvGXwT4o)uC4qU zHWSw!yLvwSK~p(1+3x-iw{?SCe7U)(+x&W^$Xk6S`0iWEfCVanNx@Yh9BCHjTR1NM zHewv&#~&9Uiczj|7JCWiHl{f$eCz}S@SNvB7rId~g$<=@%F0aSvWBqkRTJ>w1YY+# z8OUIECCr)6cy~LY)g(W>JKFDH7?f0yAb3n0Ub7qoEzD3YdC9w08=40t06@<*(tAN! z;*iAaiOF2q(;k}C<~=E@NqkkT;@r+xH~)NOeM(S<3>@OOK2?he^z$8N=%WzCQ2=84 zQApz)2f)Wku3`nWSOXA96OMJvL1}rQ$RcPmKUk2EYmil0|B_;un0=6u9}M9LAvr=5 ziXjbQ2!jjHph92?LUFs}T?|3lkQvgD1Wm)CgC=l1CH2s12RK01f=C*LuqJxa8%h#! z8HXi$DLC@*!!LpP#N<>_ipA`M6_F{vES_(R%}iguA{oZ_smCK^G-J}Fra!pA@nQdy zBNR4b5{KAv1o=sjUliDrw4mjWpCeg?{D2igI;8{kJS16k5T8cwlaaKFL?pTljlajtx0 zI> zCUb2x_3TWmh*QyumTo*X?P;A!0~D+_s11=43z})vf*}<%j#A_Pnz~T{z%iRH+eD$s>htny@vS)p6jvZQr84r%Lk-TKyS$rX}Jm_uC&dRJe;aj(4d z>t90|SiwrvX-_k3BSVnU9xB$Aj)^5Q|4CMfOZ10j0c_dK{?fCXg&PkL{8&!;`-Y-b=dBS0Zj) zd5!iB^rn}T>y@ahPU(| z4E8gFAAD0*PI$ssxG;t@yb!6uc8f-(!J|XW0yw&bsSu;@0V06ni1k)+$y*3H_u2qo zser~bJ}z>TYZM-@n#W=l%d3T4&p$J`|HwLEWRj6=F~*X{yHI|zl&73RsgYNqy#vRV zL8;#L!pgm3hA)}ReC9OcDO+rIGk?wG58%+5+g!M_g2Aw7af@4~vo?2wMSJERPIw4c zaQC5En`i)7ZPAVP@T2h^=}E8UEhav3rcoSKspjX*008xidu4}G&-m01{No$^z-o!F z`UbDIxW&zS?pb^1tsYD=Id$DUD9FgyPzJUO7qDnzEAE8=I5x6j7y)H}8CC{(FC(E1 zZ6YLgqj|bad91x(Z2v~v=HhlJ-t_I79(dg29*V}z4Fz?pn+!*A_tgyzZ@DID|KK#i&x`{*hT2yOUwDnV`oN1%eAQ&R_}>vAYpBn< zQ6`*JKy1m;nc1Y_R?QKcO+7;XOOnblsa_pqK zBNNI!p+tZOa#;uO=QtI%uK5!@JLjPPyy$xlPZq5(q~O|0%9mD;^~k3>K+C|wZO;xV>I6>e)a~|gFZZ(U z&;ZH~7&2F8jRi z)p+cl3gF^mZOF{+d~`va{eTUQ;;)SshyJ!q`7kg4{*3>0&i{yD+Qwti zhR-1iF!ka94KQo(B0&1`hqM-V?3ILR12fvREi6RK0i@|iNUKojA#KVqyz}J+J z2?=VWoKWS^P6}a8`9wej1S|7q?WR7c^E^)rFHHcYX6(Sw%~Wc@e#uNSL@MMZ4XtRM z?#VyiP>!wuel9Tg|8`FX4w3ot5J|$24?%G32*r00#{~p&5EsIOlFtyMk%r(-5v7GL z6vtN{@$S$94qOKCgzS)F1`|7gkv1_-puiLJBorBM6dBKw=<5{EZUInG6{oQ6TCo*p z02cpDv?hQSwQvi$&@sGF_!uG|K4u9lz!xzq7(Egys)HD-sNvR-HhfA71a1Vbjv46? z-dG?SrID2utyB7N>|QQuw((U6GVQ+cgItLPVG^P?LI#z@MK(emtM3g`XA;AL9y_2c zILK9k?5(m$;Pep)?BER8PYIW>~bu zpbIN<>{LJ@|F*y<)*uutpfCNBBgO3_r9v!3at27!7*BGG0EiuOk0mj1wU7iRIZ!4q z<5g(#8Xs*3ZW3v7(p7fS_)^Gy*Ke@-l9vEYS-Y5E3oL!d1-8!Q3(n{qNE~h$8C}-)8F= zPJl1{vOE8BrJ7F9J`(UY%gYXv02U%KJ%Rz~a2er;4i`-_eJ^G%Gx%trR$!xf2YTfgW^4e!;OJ;ME_tX12X@6Z z>fj0>ph2r|#wsKt{ZGgSgM&;UPUX}>L7+}S07D-~4Gsa5I`nq-3PjA9U0&rG`iK3@v^%EGR%oNma1W(=a}Q z0RkpT-}4Ftq)DUEYT6=79fU2qf=d6;N?~PC0YFRJq6NDYqLeQM!gNfnWF6C##@KXO z|B0ZU5Q9SHG+Lu|pX{_+?Q{Zr;1INxPl2;nHtJ6=t#M3X-$+y;z|v5W1uY@~Ez?pg zoC44u)h!2LUL#c^C$*8_0!eBVQ&nIw)}TAR4l|nW)OHYYN_D*s?J(9rNgES>BnMUx zQAKF=ClcT*aMgF%3NEfRMOL6cJxE1pg*1g#`5?nUU8GxDLmrZKJebx0S<}ic$fQ1@;wFf#hE;AYhS1+z#{N)(9>RcJ~Ma1u`H57#8c`#|9o&YGCqK|0dQa zMC4+VCS%`XW7{H5vb2#vHe_AUOG&n5Q}aMkb`Dhb?)ar;W!5kbab{=Ml5X~LL4ap@ zmRn0sMlLOAiBnpQ)*At!R+N@$3neXVV^Q7pLgKY*t#$wkKrZohjk=b8mPP>(Kx`N7 zJVEtr&lX{K58fD}58AeE-*zR_!)fL=GF|WkKEQ72(na;V3n}+y8$vQ;mU4j&bL-RzEJ<^BmUE#@Xb%8%>1$?3 zHvwMf(wYHveMEI{qg`9KRB(!FVb^Mh;$9i)Y>7bl_%(MGzzB9XV9Dt`|1kr2&vtl8 z7zF^}cu_cc-7N>&OKv5lNud{dr59FuqI#?Mdhzpjuq#e>^>67$a8o3N#uwmP*aptm zN*Ip=*w-=MmvR9>ekC(nfepND7QFO#TYa{F{r7)AbfelzfCZH;TA&3An7)7kfqO)O zal_)~X$fEef@4>9iNck%7I8q&E^#+^QKN$~;|NbJU`6-{0X81V;RJb*OL(;;paf7j zg6ZlEJrTMtPJ6^l;k?qUZu;`H}JN;0{>XF_^JWoH!_Cxl(G` zlJI~KYWa$L)@UwZmw8!nlI)iqC76SGm^Z4Jjkz$888_fyrNg3)okCt?mo~cMgDf~A zF@TzZWKWF19I)A9E^M2T1n^EA9|Ad^8w^h%Xd0&+UQiPqOS7Ki+o~?JD={1J# z8K3J#pX-I4T_BWg=AQwY1&g>e=fa@bZw?Y#p_Ld28aiMimoOx=QvX__mMhw#rx>Go zXD&GUTQ_1YK3ZlQM+Zb&m~Do>65ynHM2&4@r5)R)FT|P4;wvVgrnT^&3r2%=+TC~> z@rIXomu9Gi+8nN6U=SIp;pYIBnyF1<0B!}URRjhsj;ci@c0p-}?WGmjqHds?lL=Uq z#To-FK%kvQKuG|t*>A1aS_aGc)x-UAH&%j0cnu{BtEdpC~7oa-| zn~V?Jm5x@iBY?z9v(#E6ty5gZi$x#cM`&ndFbus6V%!O4yv7~< zx_35ta(tJ`>{fdGRerp%u@?YRWXOq}M~wW)R~oYSY+jkX$qOKwpP<5|>W*Q61qUjNvNZseRh;-t>){LX15xP{w0 zC*YJzeBl5+&|N4865Y@jqT6YtQXGBUZ5-Gly@w`UXmifekt|MOg-(Ec2Nohl+Wgbw z<2PW0VpE{C_BG@Iodi5O+iamzxMFW(5+2?!(oc&c4qE@6mM?Gkuuf5c40L4=rlfd2E zcRt)(g51gdqSYrPD2q)C>&e6zs#3mAdmk$z4ZHtEo%$Hf&_ICd;JvWUr)73!cY z;=>1n1TXd!Y9X{}3lmD4-m!y(YSj>0yN1v)YoTQY7KSa8#<~!qQ7I!9>$cfB)f>(@r|Q=a5iC8AX&@Ng3f)Q&CAZ6;>Kn!4+2( zHYJu?XPqVCT5i1s*IaQiIDkNT<<%EofCWYvN&KDUQcL%B^cZB3NmiLcm`%2xXLVsP znrNn-hFWT@z1Es+ZLz?DZMW%`n{mboL0p%_A*WoJ(2dz#b!Os_U3T4Zr$KmbmPej^ zEy%atK?)JT;6-fDnI?AK&E=+e zaGEC&Lk!Wm9zw$oo2Nws6_jhg{(cl_jUkz2=pTpz$cCZ?8rbNg1+ds`P?R2JDN$Z! zs%Z~vaO!DS6;@y=S)@83Awj32m?~X8@x>~Pt^yWE%(E88pMSUhTM;rn_UbFJL*C1; zMGU@`}^=*s@+P$ISW6hyN9PGu#pR$a7>h2>G+xE*RU>sY))3G-^LVDebgPQ+e%fQE$sT z)xlXE?$uZ)r#07Hd#zo{Vvqf<+49nBkg#gw$#z8s6e)W4jNuc~tbx{jFy49duy7E3 zx1=E8%?e&I;ZR+aF@}h1sQ6QjJ8miDl21;#<*sJ#sw{A>bF=!Kp+cuUWR&hlHE1A0 zf;GKi32kVuGg|C+@RJNiOG>w+Qd+PSwKDK-gn3X#@J=YM;Td8~05G2M(lwrxwMlH{ zL6P&$wx@znCW83_fB}ApJ?#mxBZ3-Ke(>fWyNOSH|_v!2uh83?}$h| z6rz@hx0o>sR<~M$`kM5fN|k70)UinXq%uFObZh}!>|*}T;>q=dag1avW6Su0#x$x? zR%|Sk&2n^&P(oyZbDX0l???au=<#Hl;bUno_{R)lfN34H)EPo}$f+e#c*A4PMIL#s z6p(F_VhiIX&oh8vNpF*NK|m*iSuAM^^dk5mOrTI{u<)Uhb2M>cj`9*kq_L=q5HeFl zZn-J?asOoj9PQ=(yy$>`UQd|)D`sCZm&{}?lbQQzqZ@TJPym#!nhg}p4zYR-(YsyzCaIVGjm;=2s)qE1K2-NH|rSHjl+ko_@fm;Ut2C#>tkUS_&eDG%8Y6_=1cul{!w1 zVXEBJ%`nb@ssgFYRi`(AUTu{#<#_C44~oi=AZ(#(e1lro`XYz8^*srZ5G~L3f?L|v zD*t-bD_{F6Ap-mrumusUO$f`fCLH##iCyes8=I1G__iX~Fda>MRarbjq;;9)=@0z~ z)X$Dnv?Z#Dani}H(}w8<1WxTzAK6+-zV-x~l`T~nbXz>~Y_~yM?{7geR^XnsxNk7- zUs}0@%*8>XEV2wzo_nSOXKcDnscv4cs}{9w7mPDN5P0`8-tjK;4dy+sOaGu=3tObU zl7(-4vssY=>`}A-Y*uIW8zb+98j+PURH1z^XM~g5i`h&1%NMW-|bbA`DsG ziga~CwlMeP5ZwImfw%+gu$}wXN)gAbStV`{ip{j;=;G2UUU6|p`HGYX&X_Y`K>yHp zO={;HlQ(8|=5dcd7vwfyq{v3DtY_+L-zNX`k5I+{d72ioi~tzRi463XyL_eud>PDg z$)K2}I@N!k8G;s>@IQH>={Cc8iGkvSvFFT&9as7dXvlNR)QFlsTjqxqg|4fo0xCoA zwU;iy=AsD#hHyK2uw-1eq!GL99{czt!PdxoJB?E#?NrQL9kn>2Tpntr8Y50HZ6fdB zYAzqRIun_-f;I5RTRT{!yB^X-eEmaUx4X^6F7~mL&EZO;q1g|8HngR!kbf41YXMJf zwhhf~f_VF{;10LA9UZ`Bclg|BM1#!L%~+F6oFjAO*^ycImRtWd0r}PMyZ;7B<%>9B z>HS7z@N83Z1HY3x=P@{W5FSp2Q*HoTZMX;`^KdoqyxrmplpKz2?3FHi;~RI0p4ABQ zgou^ecAooudV;a+1nVO7t={F{pCuaw zl5P>EGhLl}uoA#au3GuX+Ta}EKxc`d^|#ce>k$6>kHY@?#7~^87QZ;gIk$GUxBcw{ zbV*&>ql3TJ-PL#hkhUAQ9=>-nW`2J;%w_Z!!An~AhVOBvWxtX3{wRWxk#CaUqZ1}e ze)66*`nxEA{>!H&BbwJd6g*Fxs9yyAq91*NOJDlaYn?%?e-FX7I5Z(cY2iob<%Bj^iKoSe2oTpela7`cUTE%bLnPYmmq-j z(S3~9E3D%X3ertOCm;BBe(8sPNWp&Xw{-6ZfASX*Hduf6hkyCkS+~X_f8~Fr1AqvS zg0d%PXoqa66bA^Xdw9btE7eK^@PJ$8Ce=}L6li=FxG%}4fd;Tl9XM_ez&9`;f;C5i zC0J>Tg@R4U7`)JUEchc2@OVA(D4HRI=YbHFSA#Z)gZ!q0PQZhn=Ys%XgA@>iPBnx? zScID80!P??xwSw5NQc-55>Ob0;sb}wMuJO}7g*RzV9*{A*#9m#@P#J_J)D6}D-{Q5 zh#)Poh9dZeY$tPbxQQyreZ686-&Yq7QviQ>7YZR1me+{rM+AnbgNbM*QMZirCwlMl z7Lh24S=UVkVTlYEM_|{By*Lh@I97$%VQ)BArg$qZ7jj%EHY6~Cpi+Mr7(p=*1F}eq zHjyKIBXe&+c)6&Hb{39(QVwdvGdM9{;O8*IB2uDf8BsQfjhI21cZkpkb*?sz>Gz10 zgd*5zdiu8>-PlPm@QvU&kiCd@ukkt1EC;2D$a*znZAjBwRKje_@!T&tvk&)pP5r>F~@b`HHmXVG4 zh?L`zr`G{>B9ehol1!+Sy@(ISrjkcFR%~Er40wtiIFoL&8mduXH+cm)nUg!2d_F0d zK-qkM0AfV>2KjN6Ybaim z$rB*Nkb3p7?h!ZMvRjiJ)?7l9yViIx0RL zrl&p1r!DcPfa(zM_@4-HsEB$V1)!*lx}=<=dysmVI9I6~XRFzB4U&na8}K7L;iE(fSwz#@a%uQyAKI?J;FS+J-SwD|$Hq4WUPx~ef_iHR(OFSTuG8oO zB5Jj7@lRR1t}fs(vpOSrd#PkAb9lq6FKZZJu(m8R0Hp_<4`8I@L5#>6us*q%XaK2k zdAD*vxzfZ758JnE^B(I808Xn}3h_sV%ds|C5Q@vHTjjWI+62TXxiIj$(`u)fd%5BYz z+cmr$z$(UzoG>79;9I%OyZ>x0`Mib^y$lkGs!_d204LZRu-d!5DPa=ct8V%`P_c`& zCCMVTd%mzGX23V1UL&;v>b~z=wJSOU@*A?N*)sMkm=MgcW?Qepm8|>`!0&;LBp|wE zgTTGI1PZLWe_$96yjUviRppSD2+%;~+ol%*9)k;f9>BqeS^*fCxFHM?r$WN&nmNTA zxjqTRD2orxTXAy0r!XwD0*sAo;8Zt!D+)|AJv>(CwZ)I6eQ{Jx6KlRmti-CM2 zH2@ZDB)Pl9d926RA^){0S0^GWTY(H1giMT^Ot~z}$c_BSkn9kWe8vvL10a^e0NG3@ zF;=iFWYi>C8vx3}n7*S-%6dGmeC5Y~bT6y?R|LQ}uB;%!oV;(4VP?k#(7U#X63Jzp z%R3Phyqt?Ov&O(IKG-Z|cE~f5RRfb*$9vdKz^4Ptyv!?bUC;azY9q~CwT9NL6YQM4 zIQqr;fhZ^O&HDPe*ti6_tSGx|$q9(gw4%-g9c+X#cyS%g)D0Wj43k|3q`Ost&(J*1oY**2k%x*8;Ztg`>Sh}7b9d`(U z&!jxk&Ya5Fg#XfUy3#G<(n9^Zc=Mn(t<_wxnvs~(Slb3^FX1vDA6o)E-qQ27pu2e7rN#GHLzBSq-RVwbfj`p7{6GA)q#5&C6ze)`;iV zW4F=QioAPR7iyCbbL|0jjmj?2xKK?w8^EXmofnV&#&3qufi2it{i23V9@C@Pt;E=k z4F{wxdqsV;lbeumJw5k4*BwC8!t2>6Vx6H~&9n{6r)@XL{mrn-0S|pguk8}CJu5?N z+?sX`bJW(blH2cbN0{x~&OFV*Jp&g?+}d5;oBU>L%gxITt8ai!uPxovecmb9K-sO` zo_j}SvH#TH%|)RR$R|DCSX$nHG2hsn+6VKX2aYJ~Di80y)A2nk1x|zhrb1*6X+ymm%@%`iBSPmDuhKkY?7)~l3kSzWk-ox@JN4umxzU1f) zAPJ620Al131QR3}+tl6Vve)F3`Q%VO08&081W@G`P{j_T<;a=lY0U*-K2~EsJ?H$> zXrAZT*W_&;(QtkiYcS{XTe^2{kAwc$Lq1kI(WVVPJu?C5Gb8AbE`WxvC^|7ckfZ2T z{{L41P`U+h=bTR3CO+wuzMhtTFEo+q5w7ZvS>Zdat@i>sOR(tw6cML>w6#v#raf$^ z^eC$d>kBjME-viS2^eC%kh|XN24E4uexc1?-D1`13eo`$UOqvP>6?!2bodw0?l96$ z>eOECjXs&Mk2lW1i z_+Ie67}3NiFCzl*qJe({U%Cx1;RcO2#F+5ko`4LG@x8e3F#+*rV-^!1i57p&A^+my z!|@8wb}S#SB=0bn<**ZCPxd*_ z_Ra409l!Q-zm{kZ_hpaw!tT0#pSU%1cu8>|iNJ99jqmsZ=sb#FdW`@0 zm2deICohUm`Ipc6oxfhdF!o6A`J+$zrEmJDkNT;v`m4|St?&A;5Bsq%`?F8`wQu{k zkNdf=`@7Hkz3=(;S(taIe*wEoah!G`Dq*&47MT`z_{Qz|^Kmb;{GL9r!(&R~$ zDOIjydC}M`Ngo4LDz*qyOPnnOBw_^M$0>#ZCjH2j)96v8C}sV~#<0|nR!J=ez%&UV zDoDP9iVBwNN3T_oq>d$9)~rKMKY|4?7(mt{QfK7`#bxP-Fii~uEGjnF?_ZMvUj3le z3KFSIu!;o&Trj{gpT#PfS_FU*t-J^WZTi88nKoEIBsC^o+H}E<9ovEwd3vl+Nw@TB z`T;AEYuuy*Jo?eQx6ekU1K@(R$!DfWoIovdm3O93N(eP=Dw^B+b^n}8n;v``6??`2 zpk6Ifq(~bo$2S2$g5=2KC07N%s#28g(Rchtt1((cDN>?JUYSJ|QA`U!k{>#0tC}C; z3LvT<2tp_rMi|TQLJTDmj4;CxQ_R8)AqpUnv<~Wx6RLWW&lykJqQ%5j6j>&g5NjmK z8UW%t=sr^nyyOS1+FE89$6~o;k^mwJW|be@v+>Cbck}JHAA*BYFJgN0M3Vp%{DGA~ z91*FJSc3Th$F?e=#I8uLbh9F9ECJCmR%$Vjl*&Akq_UkPS*E<#W=pKz^Vxs9c0GbW?{^S!B|JCb8=_-5Tj-&i?>(u>_$^esHCcN=^yn zltDSQ)h`@%G>FGd1IWc25CdRxm7o&&fk=-6VPw@?ZDr<%Oc<&J09Xt}kW|MqStS5R z_(IRIEY)jvT&dzD6eK$frRs-tHPob+Pl9Um2dl^}^qJo*tVB}1Mek091Zx z4IxK3^TZcy?R9u1PeBDh)E^p#G632bsW&2_;0@}&A2QqRzK25;C7vIAS|nuvqBD?I zSW3A{np(IF#1&XB@dOh{h=dlF7E2cTq-Uc&XxeHWAq%%cksf82AZmI5vO&U4n7spFpAzN#_C&D*nefjM*mLFbm z%#p!Vff^x3R0(PlMvg`3lL+(9P^R1tTqXe78o9(`w<5V)a?mF_IprT#F34p^12Kg# zVme{PCtV$bq_bC~S*A^de)%esWqSF6?a+fi=|H1}H$Ek{g>GtLTzPY3 zjD~J+XJ2$|Vv~(?aA#k2ZDNFeYmJ9*h*a%f&$a%y0ai*jvaUXF-xb!%R6YGH71UU6_ zY*>VOYK4bza%WqGdTWM%Y-n9ug@|x%UsZp3XM=-ne0FA)k93rcbb)|tdUR!HTv}*r zSdE8pjD>H8igA&Da(8WCh$!?lZ)cCezIijj3`R%e)ri&;ckWm;Lwzq8TCx6{eFzq6{swyegxuhz@E zgmZjdNL`M8gkVfyl7feMXLFp5j(lo%ZCPr?xvr#@l$M5x*v`F+dV!gVjmf^TfNprG znwqShn`2L6W>RE+d}ybbmb$Z>RX|s!osZ7Ou~$J@u%e)FU2LI}l8AVJsG*2eMkdTOfc5hp1siBdTgpi`5iJXp=hQ zu%N+%2oow?$grWqhY%x5oJg^v#fum-YTU@NqsNaRLy8 zoJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXeNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R z$B-jSo=my2<;$2eYu?Pcv**vCLyImMERyL+vuxp$HBeThZrvuCq;-uRE?2H8QC9@2M*8w9;aMwArP%780YEYs0612)G@BQK^LZ0k`=RzyD{IWnG zi#o|H^n{9CH3Qkga)cGE`_O#WFfNUIlVttGEqh zKBBV4K+0q(f>^8q+wuf@>_ZTQX+jyOk%cZerl5f=2UVkB6w73Xtw3Q26n48saNI_a zZ&Uyn!6L>r#>0z+7;a__8IqZ-K?>6(qZlm9#qIxw1Pa$3M2EZJp$~yLK&RPaJi15} zcFMy*{RxC$MSF-WmgkU3Fe7Cd@x?Sc6#!^x4J0I6#*S`5jZ?%a0GC5~PkFvCi%813MRH2O4232m)VGB7z7gbO8ud1r#_C!(D?QBpaakFomHG zCZrm#a9lxZft^-dN+2`zpFmiYMF*yb6nR|8=!(RUI1f?Dag2xYK%!Eqlgqipy4l&%!!1;fCfQ+fjyWdBN>|% z2!w)#x@vfWUdAvdIzPfb5~9fy#2Cde0Ji@gf-p!+2AN?$1rj1dkQMzIRw2~im^Os6Qw6G5@bIVF@KGo;=@hEWXH>2RU~vE>*I!az|ftd|B+DK$Yx zLKs!RK9k6i0XuOG11h9K1R(`7FtiIlMv`#BSOuzzK}n$!)u;st6D~DDxKU(-sRHSQ zFRt+mMag0n=^#=F6T&Y$-olft^4BQv(TlV#=QPwjMkKOP0c42G6UlIecu03afxOi; zWQ+webOEtc)G8YTZA~|<<%w?PO<_3Bl8_3P(B?dB`f7yK$WZ@7%J{T zev~C#{6cE3*bzjSLCZ`cLm8t3qdPVIvZVd$UtsNeahxNxIH2a3in*V@JEe2-PkkvDYjq z$`u2|5;VH=B~T<1Kctv#Li$tzh6aFbsVxYMf|-m~d}9|Dg9hq$E0C~?v>=6Y7eazl z%$UmdASt?W0BRvIWEhKO_OoG@a%(1m3`s@{(&YWJbl(6xIUx+n#U?QnO=Z#J8l=!f zH8kNf%`!w2MivN$D61fH0spkYBul zp|og)i3>6d`Bk7AxQLr|rZFoBHBzoF>V;_y0-?+WU=|292&N;s>46ZVNz2$%m>4<< z0wyOGSYk#lj5yy98Sab_CGBf?$8#0M-3hE)h zC?@-uAu0Bu7a7UY1waY1?|v&OA;bJeFK|Iu6L%xfPmJXxK+(-?ml`3rVBR%^x2<2C zLUzL%Znn!UXf_*!Waa-fh%U-)I88{Z)ifTK{S0TobU;-!Ws0^z&;!Xr^>`qIwjUO; zoze=Z5_RD_2ztDYkXGrOAhS3H&;t66GzZOR;{in@8wODcC!lv?VAiMYlGSgp9UZn*V+0)bW!mDbiy>g(1gU$Ta0SVP#f73EBrSztXAg*O$LC~}4gb2gx zQn);Lswlk3Dz-9^VbSwGzt2#d1VJOc@FXFffv(O5lU@nvcjVgm3 zzVIZIAW7Uf5IjYW2oa1&NRRed5V62A@Q4uj(+kJY2|Y3iNm7amA%k1uUTHIEiPa09 zCxgrIBoIju64`(dw2b;!c=)&`p@R$4fL@Vci3PC>*>E$HU=63xd%fUn11CBakWLU{ zcI5w4Dh#5G0Wdn7WH{S038$bx-;fKV5DCs8a=Vs=(!n~Sq6z6hIm7{pyfBUPQzDU2 zD?@V%_>zmVr3o2`46!CE#8iU@2$i~c9UEpJv(OF3unM?A4+3-@ny?rRn05E~03wg5){S;zM6;3*(F^u*3!s1uOL7aVAThk~9ksvqyQWpqYHWo4X0eEr$-g=4H*AK z4c3u#aI_4q5DBisKDdCGFtT~Luq3q*31NkK;nEtRk`1na9v}Fgwy`9(03#H%EX!~W z;IVL~Wnp%S^|-k+3^bWpc|ynd9H9!ms3}x za7@tP9}F`d$k0RblTkKBV3?AYcDP;RQDGgEPSrF;N=XnE4cx~v$Y2e>h!C_eA*1j)&~OcFl?!8nKxPsP78;t&ob7IO;Oz)(aq4bVUf6UQ;okP35&3n~9{3Y+sD zB3FgiQ4N!zsN=z?vc*8;7XS!z9juXHATtfc@Fa$oCNFafrh!uI#|sA%3AkWCwcrc4 zAPlD=a-Kj7yFzcPa3J{5Pqd&^m-32PLJy;0Etyjb!;nX^&<(7r2@BRpvfv88VhlYb z8!99mzCa75(h0QC4Z08<%W#U*LJGpbddfly#lU@}n1bKptP6%4)({M%kPHV>42WqW z=&G&;IZCJ@uaPhc99R&oU`Ml%rPIO;;#v^h5($?w38T;rk>Cmq+7R<;8YR*RqcCrt zfGV+c48~wZd}IvDz>5em3z1+zsbCGhaIyknY^fRm#z0l3aVe>wE3W@QtEMrWoW={T z;0#X^vn$K6kK+t~hbqQUBB?+MM>#8+zzmIYoX$WGuW*qh(|>6K6t~Kw8R1c4h&M6f z7qVckoB>&LIA~ikZ&y1OY!iwqMt^BL7oGqO_;52O+X}#7uy5-Xn?rK!cO591w{M{g z=rLvz0}Z-BvVbcVv5;K9pc}L53cWB5662YPI~TNI3_Xjsl{*%NNi?s(3)Y~un>)Is zD-sbqHO@*8^HjR5+q$m%y09C&vOBx9Tf4S4U`bQ*dPtfTfLR>3~rFU+Uo|<+r2gLz2E<94(33;)?2=T@eCi3 zzUr&K+DixS`@ZiBzTdmO*^3R&K)&Y76Z2pS{5ucpfWP^B66m|W1gyRzaKH$hz$5U! z9MHfH?7-Vwz#m}0035(5u@3Vf2pYV>g22BXYziDK2>x5a7EBS(E59fVz8GKvEZo8_ z%)%pJ1~NRuG;9VAtiTE^!Rt%GCCm}?UY#$sFmIE=#t+`VW#y(H|!1hEdE@WyZ)$8c;1 zMNr3fe8)v##9pw+eB8%NED9m4!SgT=Yn;5#00xLm#Z>?71C0Ctj{L}w`~Y3t#adj+ zS6l!OoXIzQz=|xzXxs+t%f=WS$bswyOK{4loXV(N1by7fu6zlw9LuuI!GHY6gdDsB zoW6*>%e>6UzWmF;>;qb$1(WQ;8F0+VoXp9L0S?g2&iu>{;J}^S$!=f-H*n1bY{Baw z#6n!kuB^(Z%mv~+&aTYIM|{rXjK@WQ(dT@}6wSwP z{J|pa!Sk@W&pXfS3&{Ze%GyTFlt4Amsi*pB_!=`044J=v3;)mKf~lg-tD@X@Xu#}duWVU5-wf(DpzwJE%;f>w}P~Mu%;b5G}NS(~;``zGc1O?F6R$R&S4czuE+)NF)qrAZj z?%y`f1=1biBv9Zy&f}cj$925mp#9hnuFer&1QQ+^P&~~9JjuRY!!iuw|E$RmT-Q{t z$u+Rnx|{*wt>P=L#Vroa!OhV4{UI~1*c^Q09Q_Dv9^K8&1wZ-o#k6`NJ+~;zR)p;(&fRNR&9_J7a=-f>h&%gp#R7fhS03A5-qs^N;&eUfC++}|4C0us;+nqGoUYIe%?BgS8S79A+&=0WyvLfo z)wfRMt?ugN%-KXf>p*M>aNgK z$h_9_YXoyp+bRz2T`uh`zUg9~%zQBM6hHCVJ{kMV?Ha%F9KYE=4(??T@*+R-Bj4B` zkI}d8%IXfpT(HM|{_gSa*t!1>;Pp-z_wMTjECbA50}VXhK9Ab6{n~IH-nw1DHE;uB z9O(2`BtA8+n)6v+|J=%#N)jAdh7+BFZN^K*eg%xU|-H_U*~N<^I@F;3DDz) zF!wia_uHH0TAsdh(C-iY_kd5o;0p$XpTLHX_|MMt4e#_1KLK~J{Er{`kU#lUU-^l# z^`&6ke+^?P@-J8ctM&}=~AXl zjXveFN$S+8f~;N@R0IzRu3f#7C=*t!*rs2*;z64hty#8QFTH)sg2G(76cXIUo50Xs zzJ_xC1squLV8EOV8~%`3u^YyWWjux)xyEG5lqp@tObN_p&YXRioDf>H=n5>eZ=U z-(;vrk+$8(elN>bt=jHiDX>7FzAoLoc>D4#9$)_azlRYkPTbgWWd4sC*T^iu%)s~! zrO^&NEy34di>)=+Qd`Y732nnoBi%gejkf|*qOU^_KXmChpNRUTIy;!dN)#1Wgs#O) zrZO?c>a^oxI~#2*kFD><3eT+Z(qd~py3$im$oB4fZ!Zv+WKuZ$IKeMJ{raO)KR2}D zgpwM3s3FP^Hq79_(Gomu!PsPLZNUlGoUp=GUWw~8b|++$t>$_l#4N@?l@7LEdme}1qoSXY)jtmWR$&aDgwFZmiy(GV?I~N zbZu_$J)^b;oG@(gOYj4Hf%eZ-DE9?3Or!x$ZHp~3blPC3Yn6KH3O&lA^DHjM`k`P0 zC!MgazXtobXV11O?U9XQ+vJl|_QDF=Z>O7XyJ5zA=DpW#4_kCfC;q0v6(jS8pMe&7 zaa9}lH)(<-r=If4557F}H7g{;bI(C1DeL0Lx9N1Ez&25JXIV!(b81US5PpJ_5ev89Y194HT$AHy}<1Leoakp!c}b7>s%soLq0NhduwO zX>USg0AUEb=e^HeEqtOYU)-!~ zv>p|xKvM%$VG0jOxCAaxfewJ8y&xz-R<&w_1;b$VGmLLZx=@806QId_$};0wI%hu9iPD5(HLKYf#+*u33fyK$xtYl; zg42^vgPIV`xl(kdvy|p+XGmNyQ<^?wq6M5MRqDx<)WvXpwY=lV()CY(sz9IwEvO$4 zYPU%-)Ts=0=rJK`6p7vxa1|W^Br)m$jZ(8So1sJmp$SrvZnK-;$Cj_>(Ri!H} zV@uTu)2m^SrZu%H0qMEZr6en#`%IFd;4oM?3>7^^E#fYb`b%K?aCiR-cxq%D%EO{g zl?&_0E9oACyaZ_#qh0mESHWLKybt_!siq5%~(N=BcbVru*S)#btu(kxyx#&BDcai09DjPYy==h1 z2S%=P3CmpPDwd#(m0J!ZJYj-X*QwWiXm*Vv1`cm`zd7SiLM*z#t%7#Elql^D%!}Hy zu9lPTWovt34Bz;Mv6NV-Z;tH?Tm0TtzaI`VfWNupD*jyxq7!Y3MK{{OkA`%*oV>^SRodE^p0cJlP2Em=nzBU{b-2Gw>M;}hQ>aGB zfe13qR<9Ywj;73Qg zsJY9bwIyz8Y-d{2oX+z7j<9iYcbovE7Q?Uw-YIk+MBNWjb7$BLO;~RPVe_W92<=^G z_rkRVH^(`@b?)mF{QH8seS*kGE-VyzWypwXSHju0aA+5HsECCCQYU`xifjAI+|Kd} zHokR^dtB5Y5BbnPg^kFp=HvxI$wpPK8F-g<3tcP(%+*PTnZLH?o$E8s^{#V%^W5ju zdqUs^FLrnp-78C2!cGsq7p0eM;S5)Bq$4Z!sZ$)=R>$~4SFm}`Yn|&|_xiX=Ep);! z=^15@$k_?9p&P6n3~kRM+~uy$x_b_`UFZVOQ=tF%ob$ckef~2E1wZ)G56kdfL45KP zpKPQjsqxx+JhX`<>grN{>J_)Rm9cCC?sLEMoc}!NLl1V+7ym;g7gK5qi5J_cmK#WRHGL$V1RteCMt$+EtQ z!#>RWzz+<;?i)eR`@9nrJuq7W6->hTh?4&o91ZpR4QOfu4oI;Zl)oILJ-5=m94o@y zd4XUdq5NlrT)| zLNEM68wkS^B*TwOz$GxmC5aLQ)I+OOu(in1v@B8 z26RYEgvh6|K8o~4i~K~46vxlw$gIptk37YnoR4%=$B1~47<9*3Y=c^q$Cd;mm}JZP zlF7WgIh&MAo5V?B+`mEONx{Piulx`b5rm;kz@kJ*rYMD_WXeZ-NOFwGUXn_wq{=R| z%J17ct)$G3bgGZ!OX2{_Rus#IC;(Yppf)(mcudRN5`wlw&6q4go}0_oq|3V0N!&9h z3CYY3i4njw$ORnCrASJ{1cd*l?4PG}s`?4V#-zx{1jR4>J_9g-%5+Wy;K~H7P0bX^ zk?hQdpaVKU$r)?|m4qbto3qqxOI~!%@|?@Mtc2J!!YtrD+MG`LxJ^aOO`}vkq!a|- z1WvpWP6%L50{}-GFwUv0IEoC#6X?$aea^~^&g84A_Y929B*}zmjqIdQI)KCOB+Y~g zPw|9F`~!jyHO~;eN!Ywg+)INK^+We`P~wQswopJu+)btU3H(G%r|h@`#nJx^&`(6p zZ#;n?1yUSk&IF~*1x36DUD2F?P*;@DiKx)*Jc-bxMQGvyxZ6+;)x{F{&@BZ~5j9Wr z+`khQQxx4l6;0CMXwm=jfYGBQ%)&Ix{Io(Z`$Qq_PaWOS52Q*B&{GWn(mthABGpPG zRe^RmQ^A0Y#285?l?W$&(gG398oU7>kkm=FQW(S1nbbQj-BK_8QrH~RPZiS?wT(g* z4jGXj`b<8gbkn7T(-yEcsiafpw9`A~Mr=EQJ;l{N4N@Tm)U9+XfFe{<{R^^#j1jQT zCdJN1{SDFNfJt@MD(#{x6;D6RR80i}PAyM<+)_~GR#B}DVI>Sxm7f?*ik+ZQ3M`k2 zgVk7_)jPekKE>5N)zu&U(_V$ngIXDT+m&G2rX>MGaige3)oQF-ii}nNoK>wP z+pRU(TSZxw6RlVbb4~0L;xrft*iFrs<#T^+HaYn?0+zf0?b`8Y@72U3#*RSQ= z{yc*-0Nw8uU9&x;azoyhNZrz4-L{pcg}B+Ao!yUsOO(-`!T= zO@k~Df`;8v>RGY!RSD%a5ykb2<`sqKU4rPHNUJ^2FJxKK&0OsbTjuQE?)_fS4PVkd zCh|34l{nuKNZ;1Qr~**dlaO87MOaLw-}$xHLCD`4*5BTp%ZQcOKfnS|ZP+ndv28lt zby(h}Wnc$>;QonR$ramPz1|Dn+&+Z?7}(${?%>b;-~$CH5gy?ZKH;q@2q=wR(R5*i zX{-NUjN#n<&_Q5hHn!pX-QOH8+A+m}6sQFMErGccp&-_#7-1H^$#Mmdl7`1oRBXz@^qP%8;_^s&^1pKvq6Q8RX|JWa<4xc{N!@=14})UOgRx zW*!1aeq>3WOe-ouOMhq-~xljo2UN1sLou5zTT_8 z>a5mkineI4*4lhv0E!;#i8E^sLu&_B>xTGZX-W;aZiAKnfw{)pg=OWtj_LorrfGi6 zf=cLXE*%6f#W}&oEpQT&R!QtDfDFb?VEIgH=;n&Zp6sSJ7aE{}Fx))MK4z*GUCy>@ z&wggmmgWx5hZQL8t%hU|{8)(tJ5sZULTzn^5P|w`YuHBVyNYYMK4nzqy_~jd9sbmu z*6Rew0*SR&KP*q+Gw$Nu0)J_hIp7cHt`6Lc?qyWI$Swjx#_kU9aP8*qh3?fVAo0xx zZ>-MhtqyI{zTWhnV&j}RO9Z>`SnYGf2K{J_`qps~IB9ZD>Di`jpS@jo9#a6ee?h_Yp74P1B0Phy3OyiuJYLpoYFzc|W@fE!B#>nv<7lCzifY|=Vuz2iHcyEhm!bSj^N0=V*0m+%SyNfhCNFZc3-1aoXD zg(4{PSvT`D|8Nk;U=im?Nq%!TH*xTub4cE31~_r>R%8zpD7i70!v2nAnFoP<1{|LV zLqGI_;DP+6Dbaj@AivwXjP#s7a!MbB6mW!3?d!SJbSLM(AjCBQrgmx%jnpu8EJt;a zRCS}^ic{?JB^a4lr}bI4^;-|aH9uyHK7(F|^UE#vV26QthzI|&E%rG0UO)}CWS^VD zu8T5wp=UqF`F;Rue~4!-0NLJl{&uSoMbB@S>2N>MJMiBVb=VNybfD$6cFzJ$d3PS5 zrq`JFQ;!TSXAW#hzfgh&>Zf{LmzGJ*z`AL8IG*EEY9HYE_FWC|SP0d2mQ}K z?THILm-+hB_j<$|vKZm`G{g@#n07-Cd9^oz+Mg-WY4bDQwtqmBfmx{Qa9R-{Q!L<4}$> z;4uP)=-_1f5Ly#Tso`?j6jy60`}?fWQ|Qp;N0TC5I^q8W!3j7ZfdsDe6Y9YLKBaUUL#RVWe_IMj^y5+V`fkhg5 zWB|k!cN`rV?6jP7Q9@@zLDNx}kaZ7XN0I+_X=KzLc;AUP=6L0mfF7DD;jkuq>q!6~ zobK^JAAR=qgkMnl?Z=-C0RD$0pn(#Ipdbn^$RG(}#Ref<64FJXT^LH5p@xKUSXhZG zgg7FnB1VQHs3)#CK#Qfi2%~4D$w=dAp}3l3jwJXvE0DGcIi#Su>N=H@A28Wu2EpQ_ zUzE*FS>=^jW(m=jm1swXBVLBN5t-FiYhIdYuDLC@IMC#%TyXv%f*EGeS*M+N`k-f0 zjJWIPpS#LCFI0pYDi)%N-Wyhg;7ULt0s$j1>7m|3^Ar1e%DI?kIufPVI0S{0Xdu&0;Dw}1q&ZglA7F|mF zQF+#mnF7&7XNyI*Nq6h7ziO2Gw7KVEU?)&`>ZgXgSu+CfHY$59sJ;8<+g6Wb^$V`R zX$MTOqz2D$X<;6)%>bvPW)^D3qE#FL-+l9)cLIS6?y<*Z;DHCCBL7&c$tZvQIB>oC z%H+$zMoCn$JkVT&%?vHOB_kyHteu(V6@5DDMkB2>>o_p&s2W?1vXV;JmKOmuih>a-OBA+dR2hBIHcG`1a=(b_`SO5$5*-OuW-I$e{x2g&#;5Yf? zHy}9r=_l~&;q4ZSV{hC!n>i2=!zg#|J& z3#mKZOj@@l!M#o{mXI9=XGgoJor`LC+5+!F=)2zmD0uZdVOF~Gm01}Id1O)CTbw7u z=Rr?k+oP0*JdnK|@=$xy^IpYF6+ZD1v54g(oU7CqxJNM2eeO$K{1_*sBA~E}QMn)G zDwjD2aFKtS^Iy#Z_z*?_p^QLCUD7E){QdPXkO8Gr+=P-G1X z3naxNNlH4;lApXGWJ;u%9oqArez5^S0}4=4X3UgC+yFumno5p|!3(Z@C@kLxKathy z5x2Z371de4XY^_gy?ojJfGJXegi#?|pa4oKfXtPaF(%7=sY{Nwk_Ae$rZ&C9Ossj$ z5NdOqeDo$bgBnh84pM|8gqPzqnn(oAGGAy(-mGFsPa4*6ZYzj~iu9Qn18~&<{R~)( z1S;0Cf)8T~NGShW)4BnMdZDdteW)uVD$Dr66{EOR>hL(Kq@)-pfBJKdNCWGD5pa$V z2}mhoQ@YYN!ITWo%$6H(YSSN3R;PlyBRTO%yKQRWr*sOWP=iX;qVjHpzZ(H+lZsaq z7SEk%dCfZ`sk})})dTjF6b!nT)hcwgx4u=ID8njNgNiS2Jvc6M)r!_o9L}xIg=-UG zIaeRO;04gNYerWKxsLMHuOSs|7g76z#FAIB)Rf6fp4mY3s5c9er7V0aOGgZFF|(S5 z8fQI=0da;FoTDYDX(xc%)M~eit(_Hvas*W$Np-5X?Mpr`pxYIR)wdQVO>ikj0OFdm z0m%I@h>!n^P&SCciOzK^bYCgm#8tP&)~%~u3%uRE^2Y@(@Fifu8{PqDpu8w0^Ear0CYY!or}28P=wf3d~Tng9SZ0bCzjAJhA~EG ztup^bBZbk7#@wSJJ=j>|#{rh+U2`&h(?E8PI$7|vr{POqahp4{P{!aLQmt<)vzn;9 zD+ItL8*6P356nG6)R-BBhuMnZ%q_^U09It-t`3{nq@fYAkG+;PkmP`cex9egIY+>yyjpy{LeE-Wu7}iPkM5W2$VeZ`r7}S zc3Y5a(owzi&<3)BPY<|FXWsX(RsEs|7c*?N?!;1f!2>O5LB{D!v9i;?_GY(m`Tmx- z@~s^;u5>%_gRhpkyD!>st!>_2y!W+?URPJR0&)1$a+eF9%YrSux(=`X8^Bwzix*_9 z9bXhn90b%qn0&p-SuUbtKJ%LoDh}NEd8mhe;LT52=`mWC*Cre-uxu*{ctPwPTN&7% z0oq>fC7@^|An%z*iak{DwU6)-AGC>FZOKsbwHS0QfZN@lpgbQ4N*~}=AD0zCV3Aw) zY2V=)0Sk)2~h1!5q1ot!Ia zAqUEa5dsPbf*@)wnzxbQfEh)kp_bvPAQ-S9AZEb4>Dd3&Kn%v32}oZJnjiY{PSR0X z`#mC2Da|v@9}$iKfW+Yu=HD%m1qtAq6Bgfz84v8iN{(2e6qb)0uA&wupecSK7d(O( z?3ojhAqBP-3*=%hrlIp>V4<<%8^(qv9?2X&AD2zvx8Wgb=?4npi68zUAOhkQ%z;Q1 zqBR=g%sqf2DxwXdUl01AAVuQ71(F0+;t**px@?y!YVRg}-KXxEH7DzE(L99`q zGLC?Lj2j=OpbAE#G*06KIKVZYBsSLJHgY2)(py4&BP8;m`$^E6nB&u-V>-f1MG6Wd zdBr=9g=~}oqR^vr%~BEI$iBoLp7rBD8e~BVq>h+{Qx;@IB_u4p9#%4>E;^(Kl$QZc zWNe_rP7;VY6l1JC0b0J?Ms{R)^XwOm}XX@rbFg{LAB;8z9x49$1|8Em)YiRuBC2@l%E8} zGydj9UI8aWC?_N*g(By2GG|M+n?gXRIN4N6ut#;uA9`q~P6lX^=!Q=+CQv>IS(Im6 zou|nFf_n1EEcpnY!KY@*V(R4!eb!Nph=n1WERL27Nlt=I;w!Qsaaf9V=js( z`k$Y{=&j5WjVcZj3IdLjfNkJopZ=)?E&&(z&7h(t8p;p|fWV<5szkab8(izP5{ay4 zMImCOq#7ut>I6q#Di>ucFhQe8Ua5pq!lx={s3QNx{5f5zzNGtY!Aq&?dX(b=x$3JL zrk~uywgv~SKGlli>Y)&9WQvT**a3{*5+DR?uo@(>){3#tr)G}kvfgKqI;#gntH(;~ zj1ZT9E`StB0k&eRY6UD+SfhY7>7*J(awvx$Dk!{wSGsm;gtF_WzALuIE5OaGBV=A< zkpaF^XVSP4zxwM02oAuitZxkLS-6#=#3{Zo2wBiZo%U+h>V_de>{r;qCwv0Q+(yOn z=*4C%12!u|ek|Kgt0{eD$;R!;UTexaZB(!vGQR zwfgLr&TFa-ZA_7AzHSTAJeI3|p87Pc-D>{@)S88J!KuMkEy2o`!rJNR-pVF;ZPZF0w7{x-DzkUJk^q+|F&?X0B7qFYMCwqkOaYuss86H%ZdPn=06Nz!e(n;6?xD=e!t$z+n1cJB zt{|kY{EF@BmhER2Btyb(0tRUZ(60Z2ENU3(jOcF3B5v>cF7W=xe1I#=7OzfBY2b=m zP!uDUHt){z2lURZ^n&S{RPRe%uS{ew(z+^5s1G`UFII@JpBdy5Jd)MA@L2%D`fjam zxUUV*ul%m=CD<>6I4cY2Z|;?52Mqsl|Nd{=hHNPv0jm(O$<8ebOGN@tz`5{k13T~o zJAk=LFn&BAmLBKMW^e{?aIz$g2S4t4u!jh@(b0@a38&8qKXFwEf{-A}3L9h@c6?3FB#(v)$kLM~0D@tK~7wX`w%9Izz^z}MymgVga; zzQ*~+*1_(vLFNYg)-WIovg+1v>yiKyOTi%{as-UVA`@{Vf9#B`KqPPT5)*JG=W+mC zqn~7QP80wqCr1YTNAjvma&rFyDYtJj%eXCmuxhnZN^md5MQ$+=fGZUb0l}O z?w;%{f^(8!GM(&1bDVQdY|}d935AY;Jl`}uBW}D}Cq9$0D?bn#qt0VlM=cL@;1o0* zA2eF{@-M$eEamb3p~b~Uw2v$-AO~_qGxKY#Vn#!=v!ZPd8UXU~-oAmA) zq)PA7a1;c*oQq3C-Z^uY(CJtxQ|L|0b53h8zy;wm<+I~HP|@_WERRW+6m?FaPa&xE zA`uEgldnSGh!Zt59uxmFL~or8o6J=!GyRUOYxrYVZ*&5phFE*_H3O7cpEX*mwG=eK zRJL`m#C1#0HC;QfUBef6<#lrIbv*a=$+C`m3HCA(cIp_mP-j84BzCo|N8mi2V@m}) zeFYs$wjJXLEWt2l8)QTk0cR(3R@X}4{3FR`G->zE+MRYa`|nt-wl=r+B)|4(#5OqV z6>-F~0@t=q6pL*ZZ*Iqzr~wmiBd2ehGH^?ia0j+eyM%Zc_i@KE>ZF0tFgKadL>J6o zbVtQ>dxcZE)l@FD6KS_pPGxsr)I__lXWxeUkoRZ+H$ce0e{}=WhWF>e{cS}oDi-V(%VT;6s6LoV7 z0hwTUhSv*%^y!FSH)V(TWrsO;!xDDcL1znc5m*z8o41R1A*;l=B7*>o)VNvSxM{oy z#_)J9`?znv1A3riK#(^_p&Pmg{CB8LNdd64UN8B{hGV2tqJpnUNm%-&!%?Pdx^{57 zLy$=sf%@l(`cshqdY^Vod}4R1i-pAcDT$*wcD==0VD%?pSFMXSoaZ{g>-vk&NR0nF zjf<6gZ*y0nO0l!GN+WxLFFOx3`zAv>WhuG|6opV!Xro`NUuOH!1~z$k`?m`LGHtrG zWXVdQJ9Mji0CX*Nm%7J%;+VTnTj=R5+Phuh`&+y^tt-)+GjYHV{jSe>#u)saBfO1U z7_m2eK_0u3G`cBsQBDy0@Dc?V>5-8ux_)qcfiIrANqVcMM9^5vrL$BSq5N_?L`AH8 zwS>B;8-m<-Etr!4;V@x#lZ9rgMP|FttMhy*`1~!=QP4}l&>w!T7d?!V2GXMno0+u+ zXu!lZ{f-y^WXU>q4Me@v1Ct0?Jp&g7Fk#TvOMBP%_SeT`lWRMAl)aP_HrgMP+LH+s zh=kj3dAhs&+{^tE$b82PWxR*Q-p5AHyZXKJyx_Mv(AzrVFTcRcIgB?x(m(zRL_YOT zKA-nF0b~CEe1Oz*fJpU3lu$hAi`3{thn`fsZ-YI^b4v=O3G0(d>a_jqn^Ej*gm%>a zm^hsph*LkreeTBwK#&kPkVGhh2MG!+vk*^1E)OA!kvLJz5{nltHq=;zW5*(;K!Wr* zvPc4xCrvI;xpILOD;HqKlsOY-1e-S_SP!r%w$G zZ7_BJDhwD>uwrc&fNNK;U%`eIJC70f& zYap*-$A;aS_US>lZ_{=yJN0P_lYvK0JDhlNHnbU-n}5Hsw;z8Z7P!MB2=?6S)?>#VcTLMx55-cHm1 ztu@(bd`(8&a2!NN8d1YRwh|*_Lr4UPEYis3m}`y;f})cyA?m2R?xF0o+pan9ND5E9 z@k%N$CG^02X}$H@vkAWV;-gPZpzg!ZP5qSO pRtW&@Njm%R|@x;o65JE*2Sp?0+(NZH##@%X+t+gCU-BC6&LWNB-Az5v8 z&sSj$3rRz^yH21cr-QPLld#Lq%I!$VGCVuDEN_Ej!vu3oGI3Hs0W{HEb3OpwtQO9u z0ybiw~TYR*abG6B5>B`XQ7o(TA;dxq1rd$l+%E1i5{TmZ^6M>={(Kp^G^l|`+);> zCu|pkxfFxdooFqusUCXn`SCcV%PUY{s@Z#l{V|Hm~nLq&HW}9=?dCeJS=-KC=lM4E& zMo=%B+it&I$M4sXYg)mlU5NSzstL6^FbpA7l=<^W$RnTJ<;umJ zIrGdnceZn%)C4-viH>xo)6eNp*9g@ajdgc&UHBkqmS;HaX|}TqV7R8Y-f2xSzkAEq zglDhF7>|U=%a`)}g@qbD?^Cit1uCRBy-!`QVVBz8-5lWv@98aqep|;THnE)YK}1*1 zF7+k7vSt@ry;IS)suHS_p&}E;5F0>%zcV z6F22?MteE5WDdQj1x;=e9c>&J5P`U{i*)R87f}cj6W5$FFtLdQdEyg`AVpbH5oT7L z2~e<@#s2+IC{OXC0Kxb(rjU`03p`^QUyw{?zQB`hd?VE2$Tc<4v0b>sS{?^AA{q1% zF6;ti2?dElENtqKE*jV((b>ox0RcylOao~q*_lhubDkL36t?bOm(XG#ODV-fDM!ush^wZ&Jsu|P*a|AAxTuFSl{QwCx*hI^rI#I=tEKd z?J{R45Sjrr8aj@;=?s1SC^3x*gL+tiu!SY8NvWjItzxWCnuH@^e&|jkF zbJLsd5Cc37qzQoMQ=d92Ql*EzMhexbKFya@sTy0VUKOjg#p+@U)Yb0bK@0&! z=*b3B)>NMLx4>1a9oX7d$w3rM?}@8iE!vY4On16>%_{->n%y(}wU|X~fMLN4UXoD> zx8iE-J#F^`X-d|me26IqGuW=ac+jSr<*a8vOSbF(jh04;H0@~-MzH9SinW`%lxzQx zVA(EM0wb{PgKb-0;^?+J5-}fIE%GF@4iv)~ehx#E+t#x ztf3))Wm8&ro)(5U8tTJdGl&AaD4t_W@R`xP;1R5u%?^feZMEv-vrxFg6X8NBjXMyF zpu|de&htPRN&@9B*M22-?tJ8`xtlpf#VTg;F9Bp@2E5p>F;1PNF@0mhQian~+3`er zEN24&S(B|A%zD{-WL5J)$xCLJUnHbW%}Uw-dsG&JjIOLU8YRq~t>H3mfKUlx3p-VF z8}n!4*_k__nb~P>^RwCf<~WO*EOgdLb{^5;=U~JneeQ580sTrrD|d44F|Fsj&07T1lrUlSxee3ws5}|g1NUep5skfy?UiFcm0N?n^7uFAu^-XEL zQ_tQS*ZbAA!Fb*4H2k^*!}d6_Wn=M8u_&IGX?C;K0Bx1u;K9@WcUY|55Ntn!<_iH< zLbmgWgMM3~fgbb*%9N9Hn;6j)MS#%SUEOyJFoE}$_g@9Dz-`^TbNg;U3$Tv$Ptz~d zFE2~LDJFq}r~2S~nd8D=eW8a(dCK4aUQ{${TD#1RUcVg4f*rQ1yXjC*Q z%b>i-DOY(7j9`QZKf~){S&lzZu z{lX%)YT)-KX2FJU)hgr(EMWxysVVIgL-|nfEubs|rc8OF&w8d$hBOWpzAROSZTq+n zMozEakiCu%3{>$574O0RkO`a631#m6qEP;*@bciVA&P4X1wspb(F--A|AwxY zo`MVqP)_2|0G>__G3~|w44}r`@RtT44%hKz|5d!egq?SpR`0yLS5d#A;wkUuC zO05HB%McN+LK3kZk?%qr5d~Ed3}k=>4W&XRafYm?%hU;yFcD$;OKq;_hCHzgvfv=I zKomvME=;i@gYXIFaUNL_!d{Up#%DQng-UACN-Pf-CvUe_$rgLj7X<+rzYq*X@2-r| z^pLULdUlCmXRbE4b05E&&{YG910m9%QQ=%TeH3#RJI>1QD?v zEnyLpFCHf#B10hr_aYxF4hoJcsWNUx$ASDS#0efmM`JvJQ?9tkNl;a$TY_ z9;wnQCD8@{3&1SVE7b`s)n+WU2M5lwI1v&DjPG}XumIY!E#Gn#uXt z$q-3@DO1xBbr@h%qmc|h^#oQRUw0-1NEJ$1$ukXsq3nQ1mGI@tk*ZKLHMum+B!E_7 zRRkY2SM7pV!N6BTuxuPAST&SXh&8FU&%nw?sFYP9QKDJzDF~u9TK&{5-!kz~;#w;b zN(^CJxpi{B6r62?#i`VM-v`ID<4sRul{BB%Cz}3^!%_bXp^l54;3sUr|?jfM(0Ue!A^fz%>+d zHfOzaTqOb+&vmz0B@8K5Xb|99kTz4}AazsM(wufBrS^4S_b0A)cCQvpBv(l~qHB3n z5Oxn7P%{h27D1aWht77@()J`2QDTpeU6c=Q)s%+lc4M;-AVZGtdc$u6HxviApdP?* zy%%K>cV*{M)f(3k`6gzeqz58*TPe44x8rg%H**^`J3JRsHKJ8SmuT7X{Dvano0Q*H>5C_axpI zXX6(ROoC@S*9$+FV%Q*mi4iKYi+@j-(qKSi;sDKUF>Jqqr7&ru|L~=>M5J)0| zNpgaX@+=ircro~r{s3)Z)l0+WxIE&q9AFf3fmnTocyhetSS|v7j~FGcjeeP!B%N4Dp!htMkh^5~oYZElw%>{fNzPbcd6WdyxEzZU2QK)`=qbVf!gP+ygQ{}X zd+->KfuxVw6cqqDkcVxM2{|+j*&vTIaD`-%PXYs0){((CW!rKxCi!KR&m@lFl7Bdp zS7ITC_#|G&B8)hG3yMnW*B4LuiHC70i1Z~}`Ca>pQ)QW!OV2-SIhQv_efy1EHRhKY z$`=P>m?@x`Gowr27>>`ZR+$+k7R>mdIhv;#dTHdEvHAM6`8B++kW*ts6H+0acyKYm z{L0ypZ#X#C`6MO)CEgiZ;~9uqVgc&8WhSQ#n&gO)*h~1il>PaXq1b;3+H`*j7UFHOWGkLu5pbR)-q9Isdp97;a+AKqn*^-&rLi!~C7>wXtja{Po3QqcZ zs#k6TSw#jpVqQ8lWcn;KupF*lT*8niV+w59so1i%d&vz66BmQy#c*wq-b zMNMcR!NJ-jXuHA98n@BfBVH+UeY^22gP4U|GY~St;`-$OR8zTSE1F7LnxR{6rkfLo z&2Q@lyIG`8W!g)+yDh=n2*lfP%Ud#Z_%hTRM(^Py7DBAwdnGnNvtQ2Tvy7`zLVTh1tPyqdA~a+%H@qI)Pd5fJavf%%c0@|SRE?7Jl191 zS;RR3GI>_aJi?1WebYQ4)bB*FAj31GIEBEY=lsn7=z6(rXPljz#7iV@x-yck$ImAT z(8<8f1Gm=4d1b$QvCCPu79FzrKwlocJSN*7%EKmzy3!ZmChU2>sRK1L_r9|uA@HEd zDMt24ot00WJ+rt0g=RexlK=?5;AK75wf!XQ;LJzj%*DFb2SWEm4cI>eErxi;QDU+KAl+}G z2iU#caUuci=Wr6X9O<1Ro`WNznpIdr-%C5Y)B!(|wmwzIDK5v=pQ7NkUh8GO<;&oe z7#_lrWCLa!;srwD<&5IL@8ZqU%r?H+Jf1NB3QFXGV-R{!;{eakGlAM8rm!=-0zN-GW98_ zep@Wy>S4kFwtn>uzRSIyp~Ai+W`*p_{)iL89@MWLE`#I{dDt;tUx@qd&rCJ#eA&Gu z2%X*T>vUlJWs=-3o(duQ3&HOZvgPmKhPhql5AN_Kg;H)_$4x>q8XqOvgAOY_=&IIb z?6T;o1M@vy^E=`Zg8cJc`3$1IfB;zDgr+jXYi4eS^#Ou_z=2}KBshpLVL~x>8alLN zD569|MJig1xFO?)9vnONfCDlliIE5Yj|Di1GNsCuEL*yK2~%aeJ2dZLxp^~%&J;MZ z`1~m(XwaWo{un)q6e**nj3h|-0X3?^gCeSm7=$CM)~#F9c*O}eES8-qGMPP#mh8?# zY}>XaN_47Rgd#?an1eU(oEv=m-Y^0?0f@lZ}N}FB)I(3NEAvTnG4Z945*|cMqNl-9%!I8X2S}c;_^l1Uaix;1P zJUMc8Lz+8(4*iUQ>C~%NAAo&;h3(wCTetu|yn^xM$qzhFK)3F>3F<|B*l^;+-xW1# z^w=?^$b=?2`~SZgIFE&;mJo3NMP?veNiFyXQ%prA)l^nll?7K8;&6~y8s3CfhaP5< zf?Fbr_!E0`kztozdgbL;Ux67xn_-0|=2T-^O@^QlI9k>ZfIj}n**%_tHri+eoR%7B ztg&XBY_!eRWJc=s#@lbf30InNS}He#Ixu_*CUjyVK&EwOQb(M3YIav%n{EoEUYrFj zBp-Yb$rq7D2-%krejn)v$5cQLN@xH+(L^9wLID*STv@Qi;86}PWfX*RO=y(^|6C~7 zh8%tfY9^13NNOR6m^f96s;-Dvi+sWOV zDQ6LQ8e-?X6)D8$M)-x)LcfCk3b1BGiKS?x2s-Lkq?0m&6jYaDDuM$N^N|&*8G;om zsJPNps;P&3{4uIz@TF>stnSs~7SPIS7_Aamh-;2HS_V$QHvb2X6gnS7Y_aDdo8+<~ zG)uITPfBZ_7}b*S+auU!sjWH#cuTdn;$D3#oZZ!0XOMc-AXl3v%V_ zCmj90{qN0kuS66SiS8uxqHu}G;KE7$@GzzlPi!$lpJwdg#-oY|a^oS(aeS&`7A z0u`ucS*>eUX^v)_d~E%)zfFJSZdm=r=M~-2i_lv&>@pH!A?%2uInAi~)&=#|27(27C-n>IULM z2}Xc*6+8`;GMF!gSgRsV!`1~x2uTrsiCkt9mkKX=Npl4pP}PX|l|i#(IEQKKw3?SA zOg3R=6YR-S2#l$TMG-hoa?)T0D|p~}0?NlFRqzE*i;V{5vV$~RJdZ>vngAB)^{BskB`l$!QH_31dv{C0qilI0 zrc7~V6cC&*Q3^~BsFbBH;DBW<>rxr5Po|tLqXTTJM*Qh?v^>4$PcKBUp*rRBqwX8+Ev&jaw=KXDp%>*)dh?&ti;9Vnaqk@v^GGgd|YcF6XRBD!S#m! z%7YeN@r9nd?(iUb-D_(JMFukb-nwzt7OO>s{wRs$e+#bv!Db6-q@fX+}(Byh(iE-~G>O2jEEyDmalfS!n|a);gR z?t}*wUh!suyyi7;M}qVIcc+3O7=?Eru;Axh2 z!4`UQdb1Z;2_M;J_%t1JFU-^&XxN1>&Vh%6+X6meb;McqLU7fC;;z~E^}WN#)vdi(~WHA3W7AGmJ~Eu&ZqtrSQ&Wd3$F{1 z8)ojhh*shSyv?1wCG--!fbIjFCb}plb$1y})*wQfoVt;;Q&wOIOY0lc7I7J;w@d0z z-!(j=F0!es{U3Rxx(i)^C99j9f;UGQF3mOyt!LAi!Qqk(ZyCe1%Of8-W$DnDlNTGbhFO@hmu)MTXN99~7HZogJQ=eW3gz2hFYY~Qc%>tUub@PZexO)+P9mMebo z-E44rkq>#+3Li+6ul!Ok?=`0K`R88y44`)yK@ppK^rX*6L92!TdPT-BtG7cW;Cin& zFZm{WaD^qd_awNNd+sK1ZQ^^tw|<&Yd}`+vj~8umM--8FjmVgRqbvJYn*y4b*@oBnu9_>iV@QUy@+6-o5NJpMDWrx3S7Z^SiI|ag#@7XMIEN5N7RIL&%!gib zw1;FM1kmD#4w7quNPUAih=n+EGT;X1n267`h&RwvGV+LOFn-xMiJqetJQx;bw~WKb ziPe#3mWr?^R0P;^k}1+2)B?of*zR0Ogpk#O*kTzGE$r;7_X6;I=D z!gwBDhe>X-hJloiF`;nI_>6LxQGr#5&S;H|w>jA;6i?EP4nhIo*m2@0j)j;7=!lMr z*nN!UhznzbLXeF(C`%nUbI5m(CCM54XdOoQk18bpkfc~vrD2ePWCdF(daKBgQV0lu z;E+}*N)rhZH&l^aP&Nvgk@_Y9a>0=_Vg(-gk));o{UnlN7f?=_hV@?5=zla!H zNtY4WUE_h56i9Fuu$QF?6UO(K7%(Hi!cV;+deSl%k0fq)DAFaRB>iT&YR_CZ9N!D&(5$k}MIhVi16T0!5p&d6E40 zm0+2hVQBzN!*3CJmYBAizag9%Nh8PEfD*8vbGe*dr&s0ioV|Ae-7%f{`4VvmjpPLc zK(G@iNnTK(gPxKVN0}p8VHu9OGUn+6=$W4Csfcvfh?oPP+9;p$xD&|-nt>&UO(qsB zYMT4GpZa6~;*tY+wgUZRr2{&U$Tb?#qo5&b1ut-$3>l#j`VSRa1e@TdML+_;c|#kT zfG*>q!eOQ&x}5EDqU50_D@vsF6qqV5CP{7?BuWGQ*@xDVX$G0)Hw0rC~9sFY%=ZfTdS+00Ejpt$F}qYF5S4FJ&5{ ztz&c#$^~nhn_E>j3AG8uYOHV?r}SZ`6G0nzx{*lo8GE{%eB`GgNgn5-qMNj;FL4Pk zYN&^rsD!zwji(_xiXdFE7?T<+j3J0ZiikwoB23Y#G6<@nnj=gqjr94K(HK~&x~(nI zs;??8RvKGg+Nu`-n`LEA5D;SrX{J-PkiH76fIuI^S`o*JvBsLL7O|{`5G&5A5T=nN z(khHfRjrpa9>x)<+WN1A>J>10s6YS(;`&!kCIp^>6M>a#J8B_WFrF*Z7?O#e?^>CD zF)8y(G4+~cqPm9&gfrCr*Z2OA!raiHeZTw3|CxFxZ` zDoXBqeJKv_5$Q$i}Hgnh8p~v-c{Aq{@;V7_(7pUQ_$G0Bg0^fwj9cu&rva zUn+J6DyCvPwh^?aQ$OK@RZEX+l_W&3Bi%Zj=yO2x{%y(92vd>F!(u=<=aYXbhvws!1f!TH&@^C!cxIdx3 z>*_}2OTIcexjLM_R^}mW=DvHFBONHeI>EyA3ym6;!Y?5Y`n$i`p|xLXNew`&zE>Oy zE4$3)0SLTK!U3UcO035Ez{eU75-hx+)l0wR^|CPhcw#ZbG`tm#atGqu7&@%OL+Z%rYq^XCDyKEXkNTvnhQvv%#B%7z zCh4kCEXDrYs#tUX#bT!=9N*=n zQOVeN$%;vzo~u!u9J-#|%$Q*&_C(57iZ#>Wx~QxrtNdcfwUw`ooDn+4vuw+@?4}1{ zyDy;25?~}j2FJi0%)(5^%rzd}am>ifH6tW;`1#H$alOzSrRb-2Im>D?b0La685qaS z-Tckn{KK??6y`W z$}1KDO8udUL9tGavF-rXQ4Lp9LDg`(u%9-!S`Ew)9ns`u18VZs#z7`xO>l(W5@!ud z`?`T`hmvhA6l#~qalJ9s1kMFu*N&XNk@6uHaua=>YJVNSfz86O?H>kk*w}#_^bFM2 zfzOVONesKslKmN9T-k|{0GNHOn!VYbEf=31D-p1;ynG%>LfTqw+DbLTs$J2<2+aGOSin@{|5a1|D;FA%li}BkD&e9I@7!BSbSs@mE-31d~(^6dp&--AZ`k#+l+5yS6Mo(7%BnFrLd4kSy!{X*Yi35N!b!z2hVN zC0OI*Uk(#cFywL=qeV`$4wvN4coRgSI2ZEU!R^D0urXAQ78`QTYB%9c7TA|y=s=SH z;UgsG3^3+pf~9AUNn*!GEH=0HcN!Rs5N{gin?1pP!Vz{pRdcK7=fUTEKF8bv==9w! zgpSdp9uwV~=rOBNMqaZyf|6YT7KgGi7h>t&49@VQ=}E@v?(2+y{cty}?1KVHTrvZw zJ}y|Q0U(a%X-)&M9_zK&#&S^xx4zlBzU${bRXO16G%gUqF6jS348eMdpPaseB?Hr#0y_2B82X!uJTxF02<)( z?M@saE_NNT=JQ?}w2lz4k=al!h5FtDy#509SD<<>@B)7X^nJ%_G6PhD>;vHcDx!TPN4`me760IWj3cjL968s~xk;_0apj zj}QX|5IF=6%n`xhL4yz!f?&w7!$XJ>B?_Qe(ZWTH7Hn+XIAF#{kT67!gn__h0F)_J zu4LKLcpxf9Aype2M3Ez!m3(Jok&E@jFT$5W_J`AntC2MZ&t zSsC5o+O_K+GGWDz9orO(P^4+oreMnxXi%ahF4?48*X~`sd1Hc{!NBidzzhrwCTu{% zVZuE)jnY12JauU`FG#cLG=30h7F zp{y~ktxEN(R;*sd zlOyXy?S%_@#VwU*EjHe!G#egR=n6T@wqOF13aLX+s#dx#GH;sZ5ZaBV-D=C`!QdDupl%kW)z3S4-&MYB>*bay8 zruq&%@wlq7JRp~fOFgw*oDK@2SX6RJCIi6lNy7F!tUtv73{bKGvnq-0!lafmRlPCgEz$~?-txL?l{8GU& z%P7-9G(*sJP1xFWGlIq#ixY$mQQgf>-}Kaz&yhrR_F0vpA+%FW*J4XiEGBIf$49{n z&qr-5C9690h}=}C={|*aU3Oa{H84~8tFxjjC2BQG#w>%C09j=Pt=3ynOH)^Zd40{- zV1pf2vd4_IQ-F(*E=>B- zzIbM6qj}e_D5pf#PFC*?7NLFn?RNu!%}kA8q}4RI!iN%uGfs%C-1%XNt0sLs^I|w&)I0Mkt_QY)XM-xmu%ydf6xcnX|S#P;YM5PXmWNGyuzc4@mf+ zpoRXD=rIE}?S-U~HaNC{B61qTg*&kFf~h^6q3Vf2y8Ck#rA3$Ppgabzg;iA_`n^rz0rb@C}k*FyI%OZ@l28bC7KEVL`YY z^UNs%iF0LVs9SgNlN*%uw<`Ji^qm$}eRbBadj0j-$BKLQA>*1meEk3Hy|5vMnAh*% zbzpdtYXAgbWw^s7PkE#{P4gW1yj>Y=L)6RAfUfsD;&5+7-^*VI?Q#k7{iG7+L(1vc zlfG=Nk9}Lf!u#MiHnAXuezvR5xj5)S95(0wK7|=f|NPe>JMqu}1Du>f4Co~UDo}|V zsD}fc$T$e{Y6UBppwn*CstcluPao0X4RiR#nS^kJBRq-;Q{bYpt*~q@bm7`i78bS4 zumn4)p^Ll-Mm*w$cR1sr5Bry@Ao7qRJ}aUTkBC4IEKz|Mc;W-22%9NRv5E;}NZ_*A zpEzuBb5+Y@C+kAKF_LjTCUj8>RLDLyx)6rxnITW=*poYYQkFIOixB}HlQkX|5rZF3r%w#UJ0fQXgC8HTl zO)86>3v~$yr=!gg3I%=90o$a&nacM~DpT`Arz`E3PKJh*F5c)PJbef}LE6clzEnU< zk*7$07V~+S0jM%_(-__~^Lhv6=`=?qQlP5jp%5j?$GUksvZ)cHFWhMD;_?$h)i9`2 zr3p!UXi`5?M3>02fYa`Y&z8DWR{QKH(z;YrN#^EZIt7qlczRHuQdO=%foLV-azdV% zF$LfxgE*TiL!nG3s!5V-VPkSttom`Q9?D3tz8Y4@CUA){ZKSUDg;pv`WH4(j=wkr$ zR)q4&u!V&}UCDLS(>-N{eSKg5CNlBY+HK55L{aBx<(k-Ap5O#2?Tv33^H|72maL6j zz`kgT)`-m0PCC60Xr=j)+S<07ULa~mb)wg(td6x5aII@$+XYU^_MD!QZh2c04cz)r zx4ivOV+(lC;6io*iX^5J7f@W|ViqFo-R1D`<6MwL*SxdT=4mNv#v5&+uifqLUki04 zI}TXFEJ?3!ExcLA;t2upjc-fuJKsgx_rt~|fPRH&0M2F!B>x5N4D>PK(T>r;J;Cmc zy1?KDXKHH@<_U~_tP*b|*1{L&Du_(N(he)&!}m=dF_(N_64z9#Cr&YOSj^KO+m^aB z&MSg%Gzc7fS3O1&FA%c-d}frO7oI~Na*;DaC50qe$xmLu1?UXr{6-R`i_Pg4uN((7 zOP9+&@$z=S9Of~Tna6<+bddeXW;XZMH^u^MeD8dKJL4BtdIlh$DRKr)vRJ^3w&o>1 zy5rP-In1w3&$Ko+YEs|!(U5NQos5jCN(cASna*=Asmz-*fZET^jkS4g_adNt>_#{^ zG>#LEY@oop*o9Ruts|{rhjn<@cQ)?Bro7l-2Rqb(nYM)G2JK`oyV(qW_Ku-Y?r9If z+K?W=tuv=wCeZ0`jR`Y^;~w{>p|zs+Sv}&qnmIa>_&KyU4?C_&_^!;iM#ddN9v+HfvBgKwR#<7I5`_MPAYt(EHcV z@cCGmo%7`JJnTWQThWgm=kyF50*tGAi20`VBDejtH;=x~AEo$)mwE0-MD@VI;`cqr z6YIM!@a4n*`zPE?e)ci%4d)9-11WBm^iw~)>RVq*;r9N)xljA{!yf#(M-1=pWqw!% z?l9?Zef%RX59A{Y|0_QF+mFR-l{lEb0of1!lac|1Ij{kOv3S7j(;&SQfZ<8N^Xs|> z)BwMuzyWKEumHjK;~dJffWXnfF1dgctUeDUL9vquGlRkSlb9B~7Zt<|$Y?=4p+O(~ z!D*Yn5#d1uJP-ik!HfVxC0s&A8$!JUkps}c%Rxd5U_vXrLLUP^D!hm|xE>aK!i)Go zEF42J%%d%|fG)hA6D&hEY(vB1KoEfeFVs6XtV25lDk;GeIaEUjyhA_yLu*0|J)A?t z07OIoJj71&1`QZQK14)Ee8e1zhB&+)aDYThyhQx*jXi{nO2kA@{KU_}h)wK7P%K4L zycl_~fITF|Q*1?7bQTzRMOmChTC7D|yhU8hMP1xQUhG9*{6%04MqwOAVk|~uJVs

_=Q_|35v8xy1+<@lnG7vg@6>sR49fDc!gyD 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 literal 0 HcmV?d00001 diff --git a/plugins/baked_ambient_occlusion/settings_reference_guides/gamma.gif b/plugins/baked_ambient_occlusion/settings_reference_guides/gamma.gif new file mode 100644 index 0000000000000000000000000000000000000000..e52b8e445d8f3c6bf38215045c454dcdbe023371 GIT binary patch literal 116324 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%0D_2K5h6S06g^pHN$wr>V8Er_^#D&(7VqnVIki4_! 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

r9<~dsW2KR%a9PEDO0JR)8tHN=l$3BbH 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 q05rmexPXH#Zup5e>N0I^p~ZH$I)h=OfvVqI=! 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 literal 0 HcmV?d00001 diff --git a/plugins/baked_ambient_occlusion/settings_reference_guides/transparency.gif b/plugins/baked_ambient_occlusion/settings_reference_guides/transparency.gif new file mode 100644 index 0000000000000000000000000000000000000000..4654f0b391c29d0678de1083701293e4d2e37464 GIT binary patch literal 72904 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 C$B4H8 literal 0 HcmV?d00001 diff --git a/plugins/baked_ambient_occlusion/src/index.ts b/plugins/baked_ambient_occlusion/src/index.ts new file mode 100644 index 00000000..bb6b1a54 --- /dev/null +++ b/plugins/baked_ambient_occlusion/src/index.ts @@ -0,0 +1,735 @@ +import { + MeshBVH, +} from 'three-mesh-bvh'; + +declare const THREE: typeof import('three'); +interface Color { + r: number; + g: number; + b: number; + a: number; +} + +interface VectorPool { + origin: THREE.Vector3; + direction: THREE.Vector3; + normal: THREE.Vector3; +} + +interface PixelResult { + color: [number, number, number, number]; + backfaceRatio: number; +} + +// New interface for the face mapping +interface FaceMapping { + faceIndexToBlockbenchFace: Map; +} + +let button: Action; + +(Plugin as any).register('baked_ambient_occlusion', { + title: 'Mr Salmon\'s Baked Ambient Occlusion', + author: 'Kai Salmon', + icon: 'icon', + description: 'Baked Ambient Occlusion, creating instant shading', + version: '1.0.0', + variant: 'both', + onload(): void { + button = new Action('bake_ambient_occlusion', { + name: 'Bake Ambient Occlusion', + description: 'Perform ambient occlusion baking on selected meshes', + icon: 'cake', + click: function(): void { + showAmbientOcclusionDialog(); + } + }); + MenuBar.addAction(button, 'filter'); + }, + onunload(): void { + button.delete(); + } +}); + +/** + * Convert RGB color object to hex string for color picker + */ +function colorToHex(color: Color): string { + const r = Math.round(color.r).toString(16).padStart(2, '0'); + const g = Math.round(color.g).toString(16).padStart(2, '0'); + const b = Math.round(color.b).toString(16).padStart(2, '0'); + return `#${r}${g}${b}`; +} + +/** + * Convert hex string to RGB color object + */ +function hexToColor(hex: string, alpha: number): Color { + const r = parseInt(hex.slice(1, 3), 16); + const g = parseInt(hex.slice(3, 5), 16); + const b = parseInt(hex.slice(5, 7), 16); + return { r, g, b, a: alpha }; +} + +function showAmbientOcclusionDialog(): void { + if (Mesh.selected.length === 0) { + Blockbench.showToastNotification({ + text: 'No meshes selected', + }); + return; + } + if(Mesh.selected.length > 1){ + Blockbench.showToastNotification({ + text: 'Multiple meshes selected', + }); + return; + } + + + // Load saved settings or use defaults + const savedSettings = getPluginSettings(); + + const dialog = new Dialog('ambient_occlusion_config', { + title: 'Ambient Occlusion Settings', + width: 400, + form: { + highlight_color: { + label: 'Highlight Color', + type: 'color', + value: colorToHex(savedSettings.highlightColor), + description: 'Color used for areas with high ambient lighting' + }, + highlight_alpha: { + label: 'Highlight Opacity', + type: 'range', + min: 0, + max: 1, + step: 0.01, + value: savedSettings.highlightColor.a, + description: 'Opacity of the highlight color overlay' + }, + highlight_gamma: { + label: 'Highlight Gamma', + type: 'range', + min: 0.2, + max: 2.0, + step: 0.1, + value: savedSettings.highlightGamma, + description: 'Gamma correction for highlight areas (lower = more contrast)' + }, + shadow_color: { + label: 'Shadow Color', + type: 'color', + value: colorToHex(savedSettings.shadowColor), + description: 'Color used for occluded/shadowed areas' + }, + shadow_alpha: { + label: 'Shadow Opacity', + type: 'range', + min: 0, + max: 1, + step: 0.01, + value: savedSettings.shadowColor.a, + description: 'Opacity of the shadow color overlay' + }, + shadow_gamma: { + label: 'Shadow Gamma', + type: 'range', + min: 0.2, + max: 2.0, + step: 0.1, + value: savedSettings.shadowGamma, + description: 'Gamma correction for shadow areas (higher = softer shadows)' + }, + samples: { + label: 'Samples per pixel', + type: 'number', + min: 10, + max: 10000, + step: 100, + value: savedSettings.samples, + description: 'Number of samples per pixel (higher = better quality, slower). 100 recommended for uniform sampling, 1000 for random sampling.' + }, + sample_method: { + label: 'Sample Method', + type: 'inline_select', + options: { + 'random': 'Random', + 'uniform': 'Uniform', + }, + value: savedSettings.sampleMethod, + description: 'Method for sampling ambient occlusion rays. Random is slightly more accurate but noisier, uniform is smoother for less samples but is more prone to artifacts.' + }, + ambient_occlusion_radius: { + label: 'Ambient Occlusion Radius', + type: 'number', + min: 1, + max: 32, + step: 1, + value: savedSettings.ambientOcclusionRadius, + description: 'Radius for ambient occlusion effect (Bigger is better for larger models or higher-resolution textures)' + }, + simulate_ground_plane: { + label: 'Simulate Ground Plane', + type: 'checkbox', + value: savedSettings.simulateGroundPlane, + description: 'Simulate a ground plane, adding shadows at the base of the model' + }, + retain_texture_transparency: { + label: 'Retain Texture Transparency', + type: 'checkbox', + value: savedSettings.retainTextureTransparency, + description: 'Preserve the original transparency of textures' + }, + sample_texture_transparency: { + label: 'Sample Texture Transparency', + type: 'checkbox', + value: savedSettings.sampleTextureTransparency, + description: 'Consider texture transparency when calculating occlusion (slower but more accurate)' + }, + }, + onConfirm: async function(formResult: any) { + const options: BakeAmbientOcclusionOptions = { + onProgress: (progress: number) => { + Blockbench.setProgress(progress) + loadingDialog.progress_bar!.setProgress(progress); + const elapsedMs = performance.now() - startTime; + const dialogObject: Element = (loadingDialog as any).object; + const titleElem = dialogObject.querySelector('.dialog_title'); + if (titleElem) { + if (elapsedMs > 3000 || progress > 0.2){ + const estimatedTotalMs = elapsedMs / progress; + const estimatedRemainingMs = estimatedTotalMs - elapsedMs; + const formattedTime = formatMsToReadableTime(estimatedRemainingMs); + titleElem.textContent = `Baking Ambient Occlusion (~ ${formattedTime} remaining)`; + }else{ + titleElem.textContent = `Baking Ambient Occlusion`; + } + } + }, + highlightColor: hexToColor('#'+formResult.highlight_color.toHex(), formResult.highlight_alpha), + shadowColor: hexToColor('#'+formResult.shadow_color.toHex(), formResult.shadow_alpha), + samples: formResult.samples, + ambientOcclusionRadius: formResult.ambient_occlusion_radius, + retainTextureTransparency: formResult.retain_texture_transparency, + sampleTextureTransparency: formResult.sample_texture_transparency, + shadowGamma: formResult.shadow_gamma, + highlightGamma: formResult.highlight_gamma, + simulateGroundPlane: formResult.simulate_ground_plane, + sampleMethod: formResult.sample_method + }; + + // Save settings for next session + savePluginSettings({ + highlightColor: options.highlightColor, + shadowColor: options.shadowColor, + samples: options.samples, + ambientOcclusionRadius: options.ambientOcclusionRadius, + retainTextureTransparency: options.retainTextureTransparency, + sampleTextureTransparency: options.sampleTextureTransparency, + shadowGamma: options.shadowGamma, + highlightGamma: options.highlightGamma, + simulateGroundPlane: options.simulateGroundPlane, + sampleMethod: options.sampleMethod + }); + + const startTime = performance.now(); + const jobController = { + cancelled: false + } + const loadingDialog = new Dialog('bake_ambient_occlusion_loading', { + title: 'Baking Ambient Occlusion', + progress_bar: { + progress: 0, + }, + cancel_on_click_outside: false, + singleButton: true, + buttons: ['Cancel'], + onCancel: function() { + jobController.cancelled = true; + } + }); + + loadingDialog.show(); + try{ + await bakeAmbientOcclusion(options, jobController); + } finally { + loadingDialog.hide(); + Blockbench.setProgress(0); + } + }, + buttons: ['Confirm','Restore Defaults', 'Cancel'], + onButton(button_index:number, e:Event): void { + if (button_index === 1) { + localStorage.removeItem('blockbench_baked_ao_settings'); + showAmbientOcclusionDialog(); + } + }, + }); + + dialog.show(); +} + +interface BakeAmbientOcclusionOptions { + sampleMethod: 'random' | 'uniform'; + onProgress?: (progress: number) => void; + highlightColor: Color; + shadowColor: Color; + samples: number; + ambientOcclusionRadius: number; + retainTextureTransparency: boolean; + sampleTextureTransparency: boolean; + shadowGamma: number; + highlightGamma: number; + simulateGroundPlane: boolean; +} +interface JobController { + cancelled: boolean; +} + +async function bakeAmbientOcclusion(opts: BakeAmbientOcclusionOptions, jobController: JobController): Promise { + let anyMissing: boolean = false; + let anyWithTextures: boolean = false; + let pixelCount: number = 0; + let faceCount: number = 0; + + performance.mark("startAO"); + + for (const mesh of Mesh.selected) { + let hasSelectedFaces: boolean = false; + let facesInMesh = 0; + mesh.forAllFaces((face: MeshFace) => { + if (face.isSelected()) { + hasSelectedFaces = true; + } + facesInMesh++; + }); + + // Process each face + const result = await processMeshFaces(mesh, hasSelectedFaces, opts, jobController); + anyMissing = anyMissing || result.anyMissing; + anyWithTextures = anyWithTextures || result.anyWithTextures; + pixelCount += result.totalPixelsProcessed; + faceCount += result.totalFacesProcessed; + } + + performance.mark("endAO"); + const measure: PerformanceMeasure = performance.measure("AO Processing Time", "startAO", "endAO"); + console.log(`AO Processing Time: ${measure.duration}ms`); + + if (!anyWithTextures) { + Blockbench.showToastNotification({ + text: 'No textures found on selected meshes', + }); + } else if (anyMissing) { + Blockbench.showToastNotification({ + text: 'Some faces are missing textures', + }); + } + +} + + +function buildFaceMapping(mesh: Mesh): FaceMapping { + // NOTE: This code duplicates some esoteric logic in from within Blockbench + const faceIndexToBlockbenchFace = new Map(); + let currentFaceIndex = 0; + + for (let key in mesh.faces) { + const face = mesh.faces[key]; + const vertices = face.vertices; + + if (vertices.length < 3) continue; + + if (vertices.length === 3) { + faceIndexToBlockbenchFace.set(currentFaceIndex, face); + currentFaceIndex += 1; + } else if (vertices.length === 4) { + faceIndexToBlockbenchFace.set(currentFaceIndex, face); + faceIndexToBlockbenchFace.set(currentFaceIndex + 1, face); + currentFaceIndex += 2; + } + } + + return { faceIndexToBlockbenchFace }; +} + +interface ProcessMeshFacesResult { + anyMissing: boolean; + anyWithTextures: boolean; + totalPixelsProcessed: number; + totalFacesProcessed: number; +} + + +async function processMeshFaces(mesh: Mesh, hasSelectedFaces: boolean, opts: BakeAmbientOcclusionOptions, jobController: JobController): Promise { + let anyMissing: boolean = false; + let anyWithTextures: boolean = false; + let totalPixelsProcessed: number = 0; + let totalFacesProcessed = 0; + const faces: MeshFace[] = []; + mesh.forAllFaces((face: MeshFace) => faces.push(face)); + + // Group faces by texture + const facesByTexture: Map = new Map(); + + for (const face of faces) { + const tex: Texture | undefined = face.getTexture(); + if (!tex) { + anyMissing = true; + continue; + } + + if (hasSelectedFaces && !face.isSelected()) continue; + + anyWithTextures = true; + + if (!facesByTexture.has(tex)) { + facesByTexture.set(tex, []); + } + facesByTexture.get(tex)!.push(face); + } + + const [lowestY]: [number, number] = getHighestAndLowestY(mesh); + + const groundPlane: THREE.Mesh | null = opts.simulateGroundPlane ? createGroundPlane(lowestY) : null; + + const geometry: THREE.BufferGeometry = (mesh.mesh as THREE.Mesh).geometry; + const geometryBackup = geometry.clone(); // Backup as BVH mutates the geometry in a way that causes bugs in Blockbench + const bvh: MeshBVH = new MeshBVH(geometry, { + indirect: true, + maxDepth: 1000, + maxLeafTris: 1, + }); + + const faceMapping = buildFaceMapping(mesh); + + try { + for (const [texture, textureFaces] of facesByTexture) { + const { pixelsProcessed, facesProcessed } = await processTextureWithFaces( + texture, textureFaces, mesh, groundPlane, bvh, faceMapping, opts, jobController + ); + totalPixelsProcessed += pixelsProcessed; + totalFacesProcessed += facesProcessed; + } + + return { anyMissing, anyWithTextures, totalPixelsProcessed, totalFacesProcessed }; + } finally { + (mesh.mesh as THREE.Mesh).geometry = geometryBackup; + } +} + +function createGroundPlane(lowestY: number) { + const groundPlane: THREE.Mesh = new THREE.Mesh( + new THREE.PlaneGeometry(1000, 1000), + new THREE.MeshBasicMaterial({ + color: 0x000000, + side: THREE.FrontSide, + transparent: true, + opacity: 0.5 + }) + ); + groundPlane.rotation.set(-Math.PI / 2, 0, 0); // Rotate to be horizontal + groundPlane.position.setY(lowestY - 1); + groundPlane.updateMatrix(); + groundPlane.updateWorldMatrix(false, false); + return groundPlane; +} + +async function processTextureWithFaces( + texture: Texture, + faces: MeshFace[], + mesh: Mesh, + groundPlane: THREE.Mesh | null, + bvh: MeshBVH, + faceMapping: FaceMapping, + opts: BakeAmbientOcclusionOptions, + jobController: JobController +): Promise<{ + pixelsProcessed: number; + facesProcessed: number; +}> { + + const bestResults: Map = new Map(); + + let facesProcessed: number = 0; + for (const face of faces) { + const occupationMatrix: Record> = face.getOccupationMatrix(); + const texture = face.getTexture(); + if(!texture) continue; + const pixelDensityU = texture.width / texture.uv_width; + const pixelDensityV = texture.height / texture.uv_height; + if(pixelDensityU !== pixelDensityV) { + throw new Error(`Non-uniform pixel density detected for texture ${texture.name}`); + } + const pixelCoords: [number, number][] = []; + Object.keys(occupationMatrix).forEach((uStr: string) => { + Object.keys(occupationMatrix[uStr]).forEach((vStr: string) => { + const value: boolean = occupationMatrix[uStr][vStr]; + const u = parseInt(uStr, 10); + const v = parseInt(vStr, 10); + if (value === true) { + for(let x = 0; x < pixelDensityU; x++) { + for(let y = 0; y < pixelDensityV; y++) { + pixelCoords.push([Math.floor(u * pixelDensityU + x), Math.floor(v * pixelDensityV + y)]); + } + } + } + }); + }); + + let i = 0; + // Process pixels for this face + for (const [u, v] of pixelCoords) { + const key: string = `${u},${v}`; + + // Get x,y,z in 3d space of the face at this u,v + let {x, y, z} = face.UVToLocal([(u + 0.5)/pixelDensityU, (v + 0.5)/pixelDensityV]); + const result = calculateAmbientOcclusion([x, y, z], [u, v], face, mesh, groundPlane, bvh, faceMapping, opts, generateFibonacciSpherePoints(opts.samples)); + + if (result) { + const [color, backfaceRatio] = result; + + // Check if this is the best result for this pixel so far + const existing = bestResults.get(key); + if (!existing || backfaceRatio < existing.backfaceRatio) { + bestResults.set(key, { + color: color, + backfaceRatio: backfaceRatio + }); + } + } + + i++; + if (i % 32 === 0) { + // Yield to allow UI updates + await new Promise(resolve => setTimeout(resolve, 0)); + } + if (jobController.cancelled) { + throw new Error('Job cancelled'); + } + } + facesProcessed++; + opts?.onProgress?.(facesProcessed / faces.length); + } + + let processedPixels: number = 0; + texture.edit((htmlCanvasElement: HTMLCanvasElement) => { + const ctx: CanvasRenderingContext2D = htmlCanvasElement.getContext('2d')!; + + for (const [pixelKey, result] of bestResults) { + const [u, v] = pixelKey.split(',').map(x => parseInt(x, 10)); + let [r, g, b, a] = result.color; + + if (opts.retainTextureTransparency) { + const srcAlpha = ctx.getImageData(u, v, 1, 1).data[3]; + a *= srcAlpha / 255; + } + + ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a})`; + ctx.fillRect(u, v, 1, 1); + processedPixels++; + } + }); + + return { + pixelsProcessed: processedPixels, + facesProcessed: faces.length + }; +} + +const vectorPool: VectorPool = { + origin: new THREE.Vector3(), + direction: new THREE.Vector3(), + normal: new THREE.Vector3() +}; + + +function calculateAmbientOcclusion( + position: [number, number, number], + uv: [number, number], + face: MeshFace, + mesh: Mesh, + groundPlane: THREE.Mesh | null, + bvh: MeshBVH, + faceMapping: FaceMapping, + opts: BakeAmbientOcclusionOptions, + spherePoints: Record, +): [[number, number, number, number], number] | null { + const [x, y, z]: [number, number, number] = position; + const [normalX, normalY, normalZ]: [number, number, number] = face.getNormal(true); + + vectorPool.normal.set(normalX, normalY, normalZ); + + let occlusion: number = 0; + let backfaceHits: number = 0; + const rayCount: number = opts.samples; + + for (let i: number = 0; i < rayCount; i++) { + let direction: THREE.Vector3; + vectorPool.origin.set(x, y, z) + .addScaledVector(vectorPool.normal, 0.5); + if(opts.sampleMethod === 'random'){ + vectorPool.origin.x += (Math.random() - 0.5) * 0.5 + vectorPool.origin.y += (Math.random() - 0.5) * 0.5; + vectorPool.origin.z += (Math.random() - 0.5) * 0.5; + vectorPool.direction.set( + (Math.random() - 0.5) * 2, + (Math.random() - 0.5) * 2, + (Math.random() - 0.5) * 2 + ).normalize(); + direction = vectorPool.direction; + }else{ + direction = spherePoints[i]; + } + const raycaster: THREE.Raycaster = new THREE.Raycaster(vectorPool.origin, direction, 0.001, opts.ambientOcclusionRadius); + + const hit = bvh.raycastFirst( raycaster.ray, THREE.DoubleSide ); + if (hit) { + const faceNormal = hit.face!.normal!; + const dot = vectorPool.direction.dot(faceNormal); + if (dot > 0) { + backfaceHits += 1; + } + if(!opts.sampleTextureTransparency){ + occlusion += 1; + }else{ + // Use the optimized face lookup instead of the expensive linear search + const blockbenchFace = faceMapping.faceIndexToBlockbenchFace.get(hit.faceIndex!); + if (blockbenchFace) { + const [hitU, hitV] = blockbenchFace.localToUV(hit.point!); + const texture: Texture | undefined = blockbenchFace.getTexture(); + if (texture) { + const pixelColor: ImageData = texture.ctx.getImageData(hitU, hitV, 1, 1); + occlusion += pixelColor.data[3] / 255; + } else { + occlusion += 1; + } + } else { + // Fallback to 1 if face not found (shouldn't happen with proper mapping) + occlusion += 1; + } + } + }else{ + // Check if the ray intersects the ground plane + const groundPlaneHit = groundPlane && raycaster.intersectObject(groundPlane).length > 0; + if (groundPlaneHit) { + occlusion += 1; + } + } + } + + let occlusionFactor: number = 1 - occlusion / rayCount; + const backfaceRatio = backfaceHits / rayCount; + + let t: number; + let color: Color; + + if (occlusionFactor < 0.5) { + t = (0.5 - occlusionFactor) * 2; + t = Math.pow(t, opts.shadowGamma); + color = opts.shadowColor; + } else { + t = (occlusionFactor - 0.5) * 2; + t = Math.pow(t, opts.highlightGamma); + color = opts.highlightColor; + } + + return [ + [color.r, color.g, color.b, color.a * t], + backfaceRatio + ]; +} + +/** + * Get the highest and lowest Y coordinates of all vertices in a mesh + * @param mesh - The mesh to analyze + * @returns [lowestY, highestY] + */ +function getHighestAndLowestY(mesh: Mesh): [number, number] { + + if (!mesh.mesh || !(mesh.mesh instanceof THREE.Mesh)) { + console.log(mesh); + throw new Error('Invalid mesh object'); + } + + const geometry = mesh.mesh.geometry; + + if (!geometry || !geometry.attributes || !geometry.attributes.position) { + console.log(geometry); + throw new Error('Mesh does not have valid geometry attributes'); + } + + const positionAttribute: THREE.BufferAttribute = geometry.attributes.position as THREE.BufferAttribute; + let highestY: number = -Infinity; + let lowestY: number = Infinity; + + for (let i: number = 0; i < positionAttribute.count; i++) { + const y: number = positionAttribute.getY(i); + if (y > highestY) highestY = y; + if (y < lowestY) lowestY = y; + } + + return [lowestY, highestY]; +} + +function formatMsToReadableTime(estimatedRemainingMs: number) { + const totalSeconds = Math.floor(estimatedRemainingMs / 1000); + const totalMinutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + const minutes = totalMinutes % 60; + const hours = Math.floor(totalMinutes / 60); + if (hours > 0) { + return `${hours}h ${minutes}m ${seconds}s`; + } + if (minutes > 0) { + return `${minutes}m ${seconds}s`; + } + return `${seconds}s`; +} + +function generateFibonacciSpherePoints(n: number): Record { + const points: Record = {}; + const phi = Math.PI * (3 - Math.sqrt(5)); // Golden angle in radians + for (let i = 0; i < n; i++) { + const y = 1 - (i / (n - 1)) * 2; // y goes from 1 to -1 + const radius = Math.sqrt(1 - y * y); // Radius at y + const theta = phi * i; // Golden angle increment + points[i] = new THREE.Vector3( + radius * Math.cos(theta), + y, + radius * Math.sin(theta) + ); + } + return points; +} + +function getPluginSettings(): BakeAmbientOcclusionOptions { + const savedSettings = localStorage.getItem('blockbench_baked_ao_settings'); + const defaultSettings = { + sampleMethod: 'random' as 'random' | 'uniform', + highlightColor: { r: 231, g: 225, b: 164, a: 0.4 }, + shadowColor: { r: 36, g: 11, b: 55, a: 0.5 }, + samples: 1000, + ambientOcclusionRadius: 8, + retainTextureTransparency: false, + sampleTextureTransparency: false, + shadowGamma: 1.0, + highlightGamma: 0.5, + simulateGroundPlane: true + }; + + if (savedSettings) { + try { + return { ...defaultSettings, ...JSON.parse(savedSettings) }; + } catch (e) { + console.warn('Failed to parse saved AO settings, using defaults'); + } + } + + return defaultSettings; +} + +function savePluginSettings(options: Partial): void { + localStorage.setItem('blockbench_baked_ao_settings', JSON.stringify(options)); +} \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/src/types.d.ts b/plugins/baked_ambient_occlusion/src/types.d.ts new file mode 100644 index 00000000..a25182df --- /dev/null +++ b/plugins/baked_ambient_occlusion/src/types.d.ts @@ -0,0 +1,5 @@ +declare namespace Blockbench { + type Mesh = import('blockbench-types').Mesh; + type Texture = import('blockbench-types').Texture; + type MeshFace = import('blockbench-types').MeshFace; +} \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/tsconfig.json b/plugins/baked_ambient_occlusion/tsconfig.json new file mode 100644 index 00000000..eabd32f3 --- /dev/null +++ b/plugins/baked_ambient_occlusion/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ESNext", + "moduleResolution": "node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": false, + "outDir": "dist", + "rootDir": "src", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "lib": ["ES2020", "DOM"], + "types": ["blockbench-types"] + }, + "include": [ + "src/**/*" + ], + "exclude": [ + "node_modules", + "dist" + ] +} \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/webpack.config.js b/plugins/baked_ambient_occlusion/webpack.config.js new file mode 100644 index 00000000..30ea8ab6 --- /dev/null +++ b/plugins/baked_ambient_occlusion/webpack.config.js @@ -0,0 +1,32 @@ +const path = require('path'); + +module.exports = { + entry: './src/index.ts', + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + }, + output: { + filename: 'baked_ambient_occlusion.js', + path: path.resolve(__dirname, 'dist'), + library: { + type: 'umd', + }, + globalObject: 'this', + }, + externals: { + // These are provided by Blockbench globally + 'blockbench': 'Blockbench', + }, + optimization: { + minimize: true, + }, +}; \ No newline at end of file diff --git a/plugins/baked_ambient_occlusion/yarn.lock b/plugins/baked_ambient_occlusion/yarn.lock new file mode 100644 index 00000000..64b050de --- /dev/null +++ b/plugins/baked_ambient_occlusion/yarn.lock @@ -0,0 +1,1566 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/parser@^7.18.4": + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.3.tgz#d2d25b814621bca5fe9d172bc93792547e7a2a71" + integrity sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA== + dependencies: + "@babel/types" "^7.28.2" + +"@babel/types@^7.20.7", "@babel/types@^7.28.2": + version "7.28.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" + integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@discoveryjs/json-ext@^0.5.0": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@electron/get@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-2.0.3.tgz#fba552683d387aebd9f3fcadbcafc8e12ee4f960" + integrity sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^11.8.5" + progress "^2.0.3" + semver "^6.2.0" + sumchecker "^3.0.1" + optionalDependencies: + global-agent "^3.0.0" + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f" + integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/source-map@^0.3.3": + version "0.3.11" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.11.tgz#b21835cbd36db656b857c2ad02ebd413cc13a9ba" + integrity sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.5" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba" + integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og== + +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.30" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz#4a76c4daeee5df09f5d3940e087442fb36ce2b99" + integrity sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@sindresorhus/is@^4.0.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + dependencies: + defer-to-connect "^2.0.0" + +"@types/cacheable-request@^6.0.1": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + +"@types/dompurify@^3.0.5": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@types/dompurify/-/dompurify-3.2.0.tgz#56610bf3e4250df57744d61fbd95422e07dfb840" + integrity sha512-Fgg31wv9QbLDA0SpTOXO3MaxySc4DKGLi8sna4/Utjo4r3ZRPdCt4UQee8BWr+Q5z21yifghREPJGYaEOEIACg== + dependencies: + dompurify "*" + +"@types/eslint-scope@^3.7.7": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + +"@types/jquery@^3.5.32": + version "3.5.32" + resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.32.tgz#3eb0da20611b92c7c49ebed6163b52a4fdc57def" + integrity sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ== + dependencies: + "@types/sizzle" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "24.2.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.2.1.tgz#83e41543f0a518e006594bb394e2cd961de56727" + integrity sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ== + dependencies: + undici-types "~7.10.0" + +"@types/node@^20.9.0": + version "20.19.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.19.11.tgz#728cab53092bd5f143beed7fbba7ba99de3c16c4" + integrity sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow== + dependencies: + undici-types "~6.21.0" + +"@types/prismjs@^1.26.0": + version "1.26.5" + resolved "https://registry.yarnpkg.com/@types/prismjs/-/prismjs-1.26.5.tgz#72499abbb4c4ec9982446509d2f14fb8483869d6" + integrity sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ== + +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + +"@types/sizzle@*": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.9.tgz#d4597dbd4618264c414d7429363e3f50acb66ea2" + integrity sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w== + +"@types/stats.js@*": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@types/stats.js/-/stats.js-0.17.4.tgz#1933e5ff153a23c7664487833198d685c22e791e" + integrity sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA== + +"@types/three@^0.129.2": + version "0.129.2" + resolved "https://registry.yarnpkg.com/@types/three/-/three-0.129.2.tgz#26d9e4ecffc8e31becfb119c494123f343f31f8f" + integrity sha512-fZDNRtUFnq3baNjDiAzi4QoHYcczWtEdsduH/tpiwk91fbVk8COJiT/iLoN3tIOjLKMySoYsjUfP0VTmUfZKLw== + +"@types/three@^0.160.0": + version "0.160.0" + resolved "https://registry.yarnpkg.com/@types/three/-/three-0.160.0.tgz#7915a97e0a14ccaa9ccbb9f190c5730b04a23075" + integrity sha512-jWlbUBovicUKaOYxzgkLlhkiEQJkhCVvg4W2IYD2trqD2om3VK4DGLpHH5zQHNr7RweZK/5re/4IVhbhvxbV9w== + dependencies: + "@types/stats.js" "*" + "@types/webxr" "*" + fflate "~0.6.10" + meshoptimizer "~0.18.1" + +"@types/tinycolor2@^1.4.6": + version "1.4.6" + resolved "https://registry.yarnpkg.com/@types/tinycolor2/-/tinycolor2-1.4.6.tgz#670cbc0caf4e58dd61d1e3a6f26386e473087f06" + integrity sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw== + +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + +"@types/webxr@*": + version "0.5.22" + resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.22.tgz#d8a14c12bbfaaa4a13de21ec2d4a8197b3e1b532" + integrity sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A== + +"@types/yauzl@^2.9.1": + version "2.10.3" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999" + integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q== + dependencies: + "@types/node" "*" + +"@vue/compiler-sfc@2.7.14": + version "2.7.14" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz#3446fd2fbb670d709277fc3ffa88efc5e10284fd" + integrity sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA== + dependencies: + "@babel/parser" "^7.18.4" + postcss "^8.4.14" + source-map "^0.6.1" + +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + +"@webpack-cli/configtest@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" + integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== + +"@webpack-cli/info@^2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" + integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== + +"@webpack-cli/serve@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" + integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + +acorn@^8.14.0, acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +blockbench-types@^4.12.2: + version "4.12.2" + resolved "https://registry.yarnpkg.com/blockbench-types/-/blockbench-types-4.12.2.tgz#fb5bd91d4de17b6c8b91b5df603e9f65ca5e6116" + integrity sha512-OkqlV5RO5PAV7fkix9MfVZD1bomJpw33q7vUwA0Otekd3N2Cf+f0im0diHjsZiFACmvApMfa60jajNlD6Cqj3A== + dependencies: + "@babel/types" "^7.20.7" + "@types/dompurify" "^3.0.5" + "@types/jquery" "^3.5.32" + "@types/prismjs" "^1.26.0" + "@types/three" "^0.129.2" + "@types/tinycolor2" "^1.4.6" + dompurify "^3.0.1" + electron "^33.3.1" + prismjs "^1.29.0" + tinycolor2 "^1.6.0" + typescript "^4.9.5" + vue "2.7.14" + wintersky "^1.3.0" + +boolean@^3.0.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + +braces@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browserslist@^4.24.0: + version "4.25.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.2.tgz#90c1507143742d743544ae6e92bca3348adff667" + integrity sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA== + dependencies: + caniuse-lite "^1.0.30001733" + electron-to-chromium "^1.5.199" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== + +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + +caniuse-lite@^1.0.30001733: + version "1.0.30001735" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz#ba658fd3fd24a4106fd68d5ce472a2c251494dbe" + integrity sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w== + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.14: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +commander@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +csstype@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +debug@^4.1.0, debug@^4.1.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-data-property@^1.0.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dompurify@*, dompurify@^3.0.1: + version "3.2.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad" + integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ== + optionalDependencies: + "@types/trusted-types" "^2.0.7" + +electron-to-chromium@^1.5.199: + version "1.5.203" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.203.tgz#ef7fc2f7e1b816fa4535c861d1ec1348204142b6" + integrity sha512-uz4i0vLhfm6dLZWbz/iH88KNDV+ivj5+2SA+utpgjKaj9Q0iDLuwk6Idhe9BTxciHudyx6IvTvijhkPvFGUQ0g== + +electron@^33.3.1: + version "33.4.11" + resolved "https://registry.yarnpkg.com/electron/-/electron-33.4.11.tgz#225d7f106ed3edf788ced318c63858d8b8a446dc" + integrity sha512-xmdAs5QWRkInC7TpXGNvzo/7exojubk+72jn1oJL7keNeIlw7xNglf8TGtJtkR4rWC5FJq0oXiIXPS9BcK2Irg== + dependencies: + "@electron/get" "^2.0.0" + "@types/node" "^20.9.0" + extract-zip "^2.0.1" + +end-of-stream@^1.1.0: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.0.0, enhanced-resolve@^5.17.3: + version "5.18.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44" + integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.3: + version "7.14.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" + integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== + +es-define-property@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-module-lexer@^1.2.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== + +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +extract-zip@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fastest-levenshtein@^1.0.12: + version "1.0.16" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" + integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +fflate@~0.6.10: + version "0.6.10" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" + integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== + dependencies: + boolean "^3.0.1" + es6-error "^4.1.1" + matcher "^3.0.0" + roarr "^2.15.3" + semver "^7.3.2" + serialize-error "^7.0.1" + +globalthis@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +gopd@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +got@^11.8.5: + version "11.8.6" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.6.tgz#276e827ead8772eddbcfc97170590b841823233a" + integrity sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g== + dependencies: + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +http-cache-semantics@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== + +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +interpret@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" + integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== + dependencies: + escape-string-regexp "^4.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +meshoptimizer@~0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz#cdb90907f30a7b5b1190facd3b7ee6b7087797d8" + integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw== + +micromatch@^4.0.0: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.27: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +molangjs@^1.6.6: + version "1.6.6" + resolved "https://registry.yarnpkg.com/molangjs/-/molangjs-1.6.6.tgz#a0928c2dcd090f78d1b9451e3189334631191834" + integrity sha512-DkOnZ5c0Xylj1qYwBisNMkIseYZwudwBZ+xQcl96mC+Uo7y4XRKuNoDzNL9p/pLE3e7Cr52rQRBu10zfY0QQ7g== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +postcss@^8.4.14: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prismjs@^1.29.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" + integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== + +progress@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +pump@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +rechoir@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" + integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== + dependencies: + resolve "^1.20.0" + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-alpn@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.20.0: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + +roarr@^2.15.3: + version "2.15.4" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== + dependencies: + boolean "^3.0.1" + detect-node "^2.0.4" + globalthis "^1.0.1" + json-stringify-safe "^5.0.1" + semver-compare "^1.0.0" + sprintf-js "^1.1.2" + +safe-buffer@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +schema-utils@^4.3.0, schema-utils@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +semver@^6.2.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.2, semver@^7.3.4: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== + dependencies: + type-fest "^0.13.1" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.4: + version "0.7.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== + +sprintf-js@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sumchecker@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== + dependencies: + debug "^4.1.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + +terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@^5.31.1: + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +three-mesh-bvh@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/three-mesh-bvh/-/three-mesh-bvh-0.9.1.tgz#fa6db25f14bb4d2453f15c926f5eb9eba1811168" + integrity sha512-WNT+m9jGQgtp4YdtwEnl4oFylNVifRf7iphlwWdJ4bJu7oNkY0xHIyntep9OzHuR1hpe/pyAP840gB/EsYDJfg== + +three@^0.134.0: + version "0.134.0" + resolved "https://registry.yarnpkg.com/three/-/three-0.134.0.tgz#d7ad4d85d050da0861bf39749b06ddfb5f17157f" + integrity sha512-LbBerg7GaSPjYtTOnu41AMp7tV6efUNR3p4Wk5NzkSsNTBuA5mDGOfwwZL1jhhVMLx9V20HolIUo0+U3AXehbg== + +three@^0.160.0: + version "0.160.1" + resolved "https://registry.yarnpkg.com/three/-/three-0.160.1.tgz#61fe2907312e8604b1f64187f58e047503847413" + integrity sha512-Bgl2wPJypDOZ1stAxwfWAcJ0WQf7QzlptsxkjYiURPz+n5k4RBDLsq+6f9Y75TYxn6aHLcWz+JNmwTOXWrQTBQ== + +tinycolor2@^1.4.2, tinycolor2@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +ts-loader@^9.5.1: + version "9.5.2" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.2.tgz#1f3d7f4bb709b487aaa260e8f19b301635d08020" + integrity sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + source-map "^0.7.4" + +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + +typescript@^4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typescript@^5.3.3: + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== + +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +vue@2.7.14: + version "2.7.14" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.14.tgz#3743dcd248fd3a34d421ae456b864a0246bafb17" + integrity sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ== + dependencies: + "@vue/compiler-sfc" "2.7.14" + csstype "^3.1.0" + +watchpack@^2.4.1: + version "2.4.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webpack-cli@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" + integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== + dependencies: + "@discoveryjs/json-ext" "^0.5.0" + "@webpack-cli/configtest" "^2.1.1" + "@webpack-cli/info" "^2.0.2" + "@webpack-cli/serve" "^2.0.5" + colorette "^2.0.14" + commander "^10.0.1" + cross-spawn "^7.0.3" + envinfo "^7.7.3" + fastest-levenshtein "^1.0.12" + import-local "^3.0.2" + interpret "^3.1.1" + rechoir "^0.8.0" + webpack-merge "^5.7.3" + +webpack-merge@^5.7.3: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + +webpack-sources@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + +webpack@^5.89.0: + version "5.101.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.101.2.tgz#08c222b7acfce7da95c593e2f88ea1638a07b344" + integrity sha512-4JLXU0tD6OZNVqlwzm3HGEhAHufSiyv+skb7q0d2367VDMzrU1Q/ZeepvkcHH0rZie6uqEtTQQe0OEOOluH3Mg== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.15.0" + acorn-import-phases "^1.0.3" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.3" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.2" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.11" + watchpack "^2.4.1" + webpack-sources "^3.3.3" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +wintersky@^1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/wintersky/-/wintersky-1.3.3.tgz#18e29363f2dde939659ef943656b42fbc6b96dc7" + integrity sha512-1rT84FrUFu3rWLsT6WBPUFm0/zxCFrRR86D5zfzeS1XKAp3LLiQligXK9830BvAcVrAbsvBhm9vlaHsFOHkU5g== + dependencies: + molangjs "^1.6.6" + three "^0.134.0" + tinycolor2 "^1.4.2" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" From bcf782ff19af61d8fedf1645ac0c3e64232da908 Mon Sep 17 00:00:00 2001 From: Kai Salmon Date: Fri, 29 Aug 2025 13:03:02 +0100 Subject: [PATCH 2/3] Added baked_ambient_occlusion to plugins.json --- plugins.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/plugins.json b/plugins.json index cc761308..84eb3a5f 100644 --- a/plugins.json +++ b/plugins.json @@ -1158,5 +1158,15 @@ "min_version": "4.12.5", "has_changelog": false, "repository": "https://github.com/JannisX11/blockbench-plugins/tree/master/plugins/export_to_3mf" + }, + "baked_ambient_occlusion":{ + "title": "Mr Salmon's Baked Ambient Occlusion", + "author": "Kai Salmon", + "description": "Baked Ambient Occlusion, creating instant shading", + "icon": "icon.png", + "version": "1.0.0", + "min_version": "4.0.0", + "variant": "both", + "repository": "https://github.com/KaiSalmon/baked_ambient_occlusion" } } From dc0c04c2c00f752ad94c81ffdaa3203173396972 Mon Sep 17 00:00:00 2001 From: Kai Salmon Date: Fri, 29 Aug 2025 13:25:27 +0100 Subject: [PATCH 3/3] Embarassing github repo name change --- plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins.json b/plugins.json index 84eb3a5f..5989f1bb 100644 --- a/plugins.json +++ b/plugins.json @@ -1167,6 +1167,6 @@ "version": "1.0.0", "min_version": "4.0.0", "variant": "both", - "repository": "https://github.com/KaiSalmon/baked_ambient_occlusion" + "repository": "https://github.com/kaisalmon/MrSalmonsBlockbenchBakedAmbientOcclusion" } }