From b431608199690aee90d571bc698d14d12b529b98 Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Sat, 14 Mar 2026 12:46:34 +0900 Subject: [PATCH 1/2] WebGLRenderer: Add NodeMaterial compatibility layer (#32851) --- examples/files.json | 6 + examples/jsm/tsl/WebGLNodesHandler.js | 605 ++++++++++++++++++ examples/screenshots/webgl_tsl_clearcoat.jpg | Bin 0 -> 31516 bytes examples/screenshots/webgl_tsl_instancing.jpg | Bin 0 -> 88310 bytes examples/screenshots/webgl_tsl_shadowmap.jpg | Bin 0 -> 33488 bytes examples/screenshots/webgl_tsl_skinning.jpg | Bin 0 -> 10119 bytes examples/webgl_tsl_clearcoat.html | 243 +++++++ examples/webgl_tsl_instancing.html | 375 +++++++++++ examples/webgl_tsl_shadowmap.html | 208 ++++++ examples/webgl_tsl_skinning.html | 121 ++++ src/Three.WebGPU.js | 3 + src/renderers/WebGLRenderer.js | 45 +- src/renderers/common/extras/PMREMGenerator.js | 38 +- src/renderers/webgl/WebGLMaterials.js | 6 +- src/renderers/webgl/WebGLUniformsGroups.js | 19 + 15 files changed, 1652 insertions(+), 17 deletions(-) create mode 100644 examples/jsm/tsl/WebGLNodesHandler.js create mode 100644 examples/screenshots/webgl_tsl_clearcoat.jpg create mode 100644 examples/screenshots/webgl_tsl_instancing.jpg create mode 100644 examples/screenshots/webgl_tsl_shadowmap.jpg create mode 100644 examples/screenshots/webgl_tsl_skinning.jpg create mode 100644 examples/webgl_tsl_clearcoat.html create mode 100644 examples/webgl_tsl_instancing.html create mode 100644 examples/webgl_tsl_shadowmap.html create mode 100644 examples/webgl_tsl_skinning.html diff --git a/examples/files.json b/examples/files.json index 6294a84efbf8fc..0d5047fcf322aa 100644 --- a/examples/files.json +++ b/examples/files.json @@ -295,6 +295,12 @@ "webgl_worker_offscreencanvas", "webgl_performance" ], + "webgl / tsl": [ + "webgl_tsl_shadowmap", + "webgl_tsl_skinning", + "webgl_tsl_clearcoat", + "webgl_tsl_instancing" + ], "webgpu (wip)": [ "webgpu_animation_retargeting", "webgpu_animation_retargeting_readyplayer", diff --git a/examples/jsm/tsl/WebGLNodesHandler.js b/examples/jsm/tsl/WebGLNodesHandler.js new file mode 100644 index 00000000000000..584b93d0e2c176 --- /dev/null +++ b/examples/jsm/tsl/WebGLNodesHandler.js @@ -0,0 +1,605 @@ +import { + GLSL3, + UniformsGroup, + Compatibility, + Color, + UniformsLib, + UniformsUtils, +} from 'three'; +import { + context, + cubeTexture, + reference, + texture, + fog, + rangeFogFactor, + densityFogFactor, + workingToColorSpace, +} from 'three/tsl'; +import { + NodeUtils, + NodeFrame, + Lighting, + InspectorBase, + GLSLNodeBuilder, + BasicNodeLibrary, + WebGLCapabilities, +} from 'three/webgpu'; + +// Limitations +// - VSM shadows not supported +// - MRT not supported +// - Transmission not supported +// - WebGPU postprocessing stack not supported +// - Storage textures not supported +// - Fog / environment do not automatically update - must call "dispose" +// - instanced mesh geometry cannot be shared +// - Node materials cannot be used with "compile" function + +// hash any object parameters that will impact the resulting shader so we can force +// a program update +function getObjectHash( object ) { + + return '' + object.receiveShadow; + +} + +// Mirrors WebGLUniforms.seqWithValue from WebGLRenderer +function generateUniformsList( program, uniforms ) { + + const progUniforms = program.getUniforms(); + const uniformsList = []; + + for ( let i = 0; i < progUniforms.seq.length; i ++ ) { + + const u = progUniforms.seq[ i ]; + if ( u.id in uniforms ) uniformsList.push( u ); + + } + + return uniformsList; + +} + +// overrides shadow nodes to use the built in shadow textures +class WebGLNodeBuilder extends GLSLNodeBuilder { + + addNode( node ) { + + if ( node.isShadowNode ) { + + node.setupRenderTarget = shadow => { + + return { shadowMap: shadow.map, depthTexture: shadow.map.depthTexture }; + + }; + + node.updateBefore = () => { + + // no need to rerender shadows since WebGLRenderer is handling it + + }; + + } + + super.addNode( node ); + + } + +} + +// produce and update reusable nodes for a scene +class SceneContext { + + constructor( renderer, scene ) { + + // TODO: can / should we update the fog and environment node every frame for recompile? + this.renderer = renderer; + this.scene = scene; + this.lightsNode = renderer.lighting.getNode( scene ); + this.fogNode = null; + this.environmentNode = null; + this.prevFog = null; + this.prevEnvironment = null; + + } + + getCacheKey() { + + const { lightsNode, environmentNode, fogNode } = this; + const lightsHash = lightsNode.getCacheKey(); + const envHash = environmentNode ? environmentNode.getCacheKey : 0; + const fogHash = fogNode ? fogNode.getCacheKey() : 0; + return NodeUtils.hashArray( [ lightsHash, envHash, fogHash ] ); + + } + + update() { + + const { scene, lightsNode } = this; + + // update lighting + const sceneLights = []; + scene.traverse( object => { + + if ( object.isLight ) { + + sceneLights.push( object ); + + } + + } ); + + lightsNode.setLights( sceneLights ); + + // update fog + if ( this.prevFog !== scene.fog ) { + + this.fogNode = this.getFogNode(); + this.prevFog = scene.fog; + + } + + // update environment + if ( this.prevEnvironment !== scene.environment ) { + + this.environmentNode = this.getEnvironmentNode(); + this.prevEnvironment = scene.environment; + + } + + } + + getFogNode() { + + const { scene } = this; + if ( scene.fog && scene.fog.isFogExp2 ) { + + const color = reference( 'color', 'color', scene.fog ); + const density = reference( 'density', 'float', scene.fog ); + return fog( color, densityFogFactor( density ) ); + + } else if ( scene.fog && scene.fog.isFog ) { + + const color = reference( 'color', 'color', scene.fog ); + const near = reference( 'near', 'float', scene.fog ); + const far = reference( 'far', 'float', scene.fog ); + return fog( color, rangeFogFactor( near, far ) ); + + } else { + + return null; + + } + + } + + getEnvironmentNode() { + + const { scene } = this; + if ( scene.environment && scene.environment.isCubeTexture ) { + + return cubeTexture( scene.environment ); + + } else if ( scene.environment && scene.environment.isTexture ) { + + return texture( scene.environment ); + + } else { + + return null; + + } + + } + +} + +class RendererProxy { + + constructor( renderer ) { + + const backend = { + isWebGPUBackend: false, + extensions: renderer.extensions, + gl: renderer.getContext(), + capabilities: null, + }; + + backend.capabilities = new WebGLCapabilities( backend ); + + this.contextNode = context(); + this.inspector = new InspectorBase(); + this.library = new BasicNodeLibrary(); + this.lighting = new Lighting(); + this.backend = backend; + + const self = this; + return new Proxy( renderer, { + + get( target, property ) { + + return Reflect.get( property in self ? self : target, property ); + + }, + + set( target, property, value ) { + + return Reflect.set( property in self ? self : target, property, value ); + + } + + } ); + + } + + hasInitialized() { + + return true; + + } + + getMRT() { + + return null; + + } + + hasCompatibility( name ) { + + if ( name === Compatibility.TEXTURE_COMPARE ) { + + return true; + + } + + return false; + + } + + getCacheKey() { + + return this.toneMapping + this.outputColorSpace; + + } + +} + +/** + * Compatibility loader and builder for TSL Node materials in WebGLRenderer. + */ +export class WebGLNodesHandler { + + /** + * Constructs a new WebGL node adapter. + */ + constructor() { + + this.renderer = null; + this.nodeFrame = new NodeFrame(); + this.sceneContexts = new WeakMap(); + this.programCache = new Map(); + this.renderStack = []; + + const self = this; + this.onDisposeMaterialCallback = function () { + + // dispose of all the uniform groups + const { programCache } = self; + if ( programCache.has( this ) ) { + + self.programCache.get( this ).forEach( ( { uniformsGroups } ) => { + + uniformsGroups.forEach( u => u.dispose() ); + + } ); + + self.programCache.delete( this ); + + } + + this.removeEventListener( 'dispose', self.onDisposeMaterialCallback ); + + }; + + this.getOutputCallback = function ( outputNode ) { + + // apply tone mapping and color spaces to the output + const { outputColorSpace, toneMapping } = self.renderer; + outputNode = outputNode.toneMapping( toneMapping ); + outputNode = workingToColorSpace( outputNode, outputColorSpace ); + + return outputNode; + + }; + + this.onBeforeRenderCallback = function ( renderer, scene, camera, geometry, object ) { + + // update node frame references for update nodes + const { nodeFrame } = self; + nodeFrame.material = this; + nodeFrame.object = object; + + // increment "frame" here to force uniform buffers to update for the material, which otherwise only get + // updated once per frame. + renderer.info.render.frame ++; + + // update the uniform groups and nodes for the program if they're available before rendering + if ( renderer.properties.has( this ) ) { + + const currentProgram = renderer.properties.get( this ).currentProgram; + const programs = self.programCache.get( this ); + if ( programs && programs.has( currentProgram ) ) { + + // update the nodes for the current object + const { updateNodes } = programs.get( currentProgram ); + self.updateNodes( updateNodes ); + + } + + } + + const objectHash = getObjectHash( object ); + if ( this.prevObjectHash !== objectHash ) { + + this.prevObjectHash = objectHash; + this.needsUpdate = true; + + } + + }; + + this.customProgramCacheKeyCallback = function () { + + const { renderStack, renderer, nodeFrame } = self; + const sceneHash = renderStack[ renderStack.length - 1 ].sceneContext.getCacheKey(); + const materialHash = this.constructor.prototype.customProgramCacheKey.call( this ); + const rendererHash = renderer.getCacheKey(); + + return materialHash + sceneHash + rendererHash + getObjectHash( nodeFrame.object ); + + }; + + } + + setRenderer( renderer ) { + + const rendererProxy = new RendererProxy( renderer ); + this.nodeFrame.renderer = rendererProxy; + this.renderer = rendererProxy; + + } + + onUpdateProgram( material, program, materialProperties ) { + + const { programCache } = this; + if ( ! programCache.has( material ) ) { + + programCache.set( material, new Map() ); + + } + + const programs = programCache.get( material ); + if ( ! programs.has( program ) ) { + + const builder = material._latestBuilder; + const uniforms = materialProperties.uniforms; + programs.set( program, { + uniformsGroups: this.collectUniformsGroups( builder ), + uniforms: uniforms, + uniformsList: generateUniformsList( program, uniforms ), + updateNodes: builder.updateNodes, + } ); + + } + + const { uniformsGroups, uniforms, uniformsList, updateNodes } = programs.get( program ); + material.uniformsGroups = uniformsGroups; + materialProperties.uniforms = uniforms; + materialProperties.uniformsList = uniformsList; + this.updateNodes( updateNodes ); + + } + + + renderStart( scene, camera ) { + + const { nodeFrame, renderStack, renderer, sceneContexts } = this; + nodeFrame.update(); + nodeFrame.camera = camera; + nodeFrame.scene = scene; + nodeFrame.frameId ++; + + let sceneContext = sceneContexts.get( scene ); + if ( ! sceneContext ) { + + sceneContext = new SceneContext( renderer, scene ); + sceneContexts.set( scene, sceneContext ); + + } + + sceneContext.update(); + renderStack.push( { sceneContext, camera } ); + + // ensure all node material callbacks are initialized before + // traversal and build + const { + customProgramCacheKeyCallback, + onBeforeRenderCallback, + } = this; + + scene.traverse( object => { + + if ( object.material && object.material.isNodeMaterial ) { + + object.material.customProgramCacheKey = customProgramCacheKeyCallback; + object.material.onBeforeRender = onBeforeRenderCallback; + + } + + } ); + + } + + renderEnd() { + + const { nodeFrame, renderStack } = this; + + renderStack.pop(); + + const frame = renderStack[ renderStack.length - 1 ]; + if ( frame ) { + + const { camera, sceneContext } = frame; + nodeFrame.camera = camera; + nodeFrame.scene = sceneContext.scene; + + } + + } + + build( material, object, parameters ) { + + const { + nodeFrame, + renderer, + getOutputCallback, + onDisposeMaterialCallback, + renderStack, + } = this; + + const { + camera, + sceneContext, + } = renderStack[ renderStack.length - 1 ]; + + const { + fogNode, + environmentNode, + lightsNode, + scene, + } = sceneContext; + + // prepare the frame + nodeFrame.material = material; + nodeFrame.object = object; + + // create & run the builder + const builder = new WebGLNodeBuilder( object, renderer ); + builder.scene = scene; + builder.camera = camera; + builder.material = material; + builder.fogNode = fogNode; + builder.environmentNode = environmentNode; + builder.lightsNode = lightsNode; + builder.context.getOutput = getOutputCallback; + builder.build(); + + // update the shader parameters and geometry for program creation and rendering + this.updateShaderParameters( builder, parameters ); + this.updateGeometryAttributes( builder, object.geometry ); + + // reset node frame settings to account for any intermediate renders + nodeFrame.material = material; + nodeFrame.object = object; + + // set up callbacks for uniforms and node updates + material._latestBuilder = builder; + material.addEventListener( 'dispose', onDisposeMaterialCallback ); + this.updateNodes( builder.updateNodes ); + + } + + updateGeometryAttributes( builder, geometry ) { + + // TODO: this may cause issues if the material / geometry is used in multiple places + + // add instancing attributes + builder.bufferAttributes.forEach( v => { + + geometry.setAttribute( v.name, v.node.attribute ); + + } ); + + // force WebGLAttributes & WebGLBindingStates to refresh + // could be fixed by running "build" sooner? Or calling "WebGLAttributes" separately for those + // associated with a material? + queueMicrotask( () => geometry.dispose() ); + + } + + updateShaderParameters( builder, parameters ) { + + // set up shaders + parameters.isRawShaderMaterial = true; + parameters.glslVersion = GLSL3; + parameters.vertexShader = builder.vertexShader.replace( /#version 300 es/, '' ); + parameters.fragmentShader = builder.fragmentShader.replace( /#version 300 es/, '' ); + + // add uniforms accessed by WebGLRenderer + parameters.uniforms = { + fogColor: { value: new Color() }, + fogNear: { value: 0 }, + fogFar: { value: 0 }, + envMapIntensity: { value: 0 }, + ...UniformsUtils.clone( UniformsLib.lights ) + }; + + // init uniforms + const builderUniforms = [ ...builder.uniforms.vertex, ...builder.uniforms.fragment ]; + for ( const uniform of builderUniforms ) { + + parameters.uniforms[ uniform.name ] = uniform.node; + + } + + } + + collectUniformsGroups( builder ) { + + // create UniformsGroups for regular grouped uniforms + const uniformsGroups = []; + for ( const key in builder.uniformGroups ) { + + const { uniforms } = builder.uniformGroups[ key ]; + const group = new UniformsGroup(); + group.name = key; + group.uniforms = uniforms.map( node => node.nodeUniform ); + uniformsGroups.push( group ); + + } + + // init uniforms + const builderUniforms = [ ...builder.uniforms.vertex, ...builder.uniforms.fragment ]; + for ( const uniform of builderUniforms ) { + + if ( uniform.type === 'buffer' ) { + + // buffer uniforms are all nested in groups + const group = new UniformsGroup(); + group.name = uniform.node.name; + group.uniforms = [ uniform ]; + uniformsGroups.push( group ); + + } + + } + + return uniformsGroups; + + } + + updateNodes( updateNodes ) { + + // update nodes for render + const { nodeFrame } = this; + nodeFrame.renderId ++; + for ( const node of updateNodes ) { + + nodeFrame.updateNode( node ); + + } + + } + +} diff --git a/examples/screenshots/webgl_tsl_clearcoat.jpg b/examples/screenshots/webgl_tsl_clearcoat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3f23098f88b9ca665874549376b5dd08f7741e87 GIT binary patch literal 31516 zcmbTdWl$Vl)HON@0Yb14Ea)Uiu;8u}NN{&|XK?okA-F?;pcC97xI==wI|O$I7<_icv5+D6oRb^3APaUJklPD)k^@a!1?@a*Xacw7d22RwiF zU;D3r{$G26_Fs?w;sx3Z40H^P|Jg9HUSeQkVPass#D0nO>c95%4+r}d&VM`qd)jk! zG&J;Am>8J9~c;!n0a{l_yq)oK7Wyvl9rK`Q`gYc($>+{GqY({)gw;bFZfj zjo=0Pdrpiu;;NXYE`&5(K`)6U5^}2lV$pJ|!HLaWCts1!@odna{RioP5dFUc^zHu_ zqW=r%|KfRE0^p!Md%9t01OO1=!TgPdNjlP!`}E~Mct3HHZ|cNtE9#XWEjz5g5_snU z8qvlRUUj|_OAT=!nS}3k@h#_l+PnWzS^%58Y0WXc&9O3XP6E6h~_m6$K*mJbYn@=555K9G1XKSnWSF# z&AI%&BAz6f9OX&pe*{?m!&@ERyyW;COM}YofQDJEavSvz?M=vIyIsz2lv5jr(WvgT zT(Us3_$c7cngeD{xv;%+h^zaN2JCV!dz)WO?x_( zkIC%WXVd;wm9%m16W-$KCs?0BX+>?OySmO?XRWmoS>P2GJbjlezj^7F#tK*g5q5Fw zFs0uO+)89I$=la_DC}S>>Z-z!FRsNA@$(TlGG>)+R2BCS)m6QY--QJlbVk#i74?k2 z1}AcYY}>t#VCVsfd9dG?^9g^|8iie8&OoYTE#cQks~y2?)`MH_Ng|YEYUe7V;N^WE zS;M$k4@v8U-<;}iwl4)8ly&RrYD+hiE<4KXNWlt)XtTNnZ^&zk!ruyPKZG$=MM8G94`r%{%M;}40u+A za}<5@YqVWn#lbXlf}uKYYhkiZ5Oc1D(O(*mR>RuvbumJa{l0TzRs+(`T|}YYJdYYR zVdyT#gM>hmUFVF>+WB)18m6p7B8M&bn+4qFk}Rcqs<*s80h_qH3T!Q!$a!T_}!(`F3Wg7 zQsuv?21PQ_Zj6WS!BC_P@m{gXUo!DMl$3#VZq%%)fh8>S1z}U^0xqCFE1c2haIxfn z7|w%s8ZGNChMXrBL)>Sh?w{S#ZE{?MFqvARatFcIJbn5yxdtS}Ytn9`RlkSljJe;< zog1Bv)JIICM&#%av#-aIHIIPBkN_Y)`*q{K|1Jb|Z~>C<0Dg|c@8ew1-e=km1oPTb z9KA(L_mcSC`V2G`m9x~{V?LMs_t$yYEs+~~hz{Z)T`d?%%Dqo z`O^Pa5DipO;G8)ps(U?NC3ge{`U=WU|fwPP-vH zEM+ztABgDGo~nRs8ai5-aeOKQ+ezGH7p1Lu7xg9@itH)HJMu57~MBx9``-y1R2NVz|(Y_`D+1?7aO$Bfl@cFIJ973Lh~IH;Y)>UUZQVSW(Z{JV7L zBQ0yPCIgLovTG)-!n+J|k12((eSd;iv>bR0XDe0CTCKk%Hs+jB>V)MetD>QZV0jPF zecRE%%W%lcLx}Zr?Tr~qPvaefs}5Q@Kk6il5p9fWtLTPy#)j{Q5j5KuN3u(Eyiu$G zzN=!Za0v>>Pvu!B{AL_u`UUu^$yXb#GMSKS!?#ki7OtDK`?WVNQqJh!@~WJ@05XiS zd+O^@lzR1ImM*ydhl}Y=)FI2W`3d||p-GQr2`>1^9JsB5x=2xd@tb*CY1!tjKXMyLJ^^_fO>a9=ZPnbE)518EC%$=4`PtOh8p_uyBs0b=qLM7Xez(5dO!p%E-0%w1LfG6_ZTB;gl$(TELtaDB()XdA z-#M}cBVwwlE^)Q8(33e$k(Ng!{h zYMFiWjrUyF(WfQ>eQR2%s*#d5z5_3)CS)hmG#dlMi%`yq2=@CnJJy7_hj+24(sEg(Q@wvA@AD4S(>e4GsV^!)Z z^(`5b#{72rTGf*ILSel54EwLMiLMf+|GcQ2s?0%N1eEiD`uWV#mU0|JrSN=kxK{Ca z@vqyG55pZ?NhrE8+X+Op3-&+D0CC9XgdAiM6=Qve{^MLk zj4jMp^Y=0}rhyhZzpDiuUNXCDN>4Rm^b~oGDeuTR#A#{W5= z_fu}lIyqJPi>KO3;dw!G6*JpjHGR%fV1K^+{ipu7f{y@c(B12*qK!wuP3pdX|7+Xe zTWApqH~K?j9#u%dlrJz#(MamA1XDvA390FIVRrBiDZowLMW@W8%9cbeoULk0T9i0O zEz0!d=iO=VBOoM@6vtok3|qRE(Rt7XLf#R;my`&3b(j;>Z$|6OQ@}3Mc>CU=Bh(&P zHxIjUVGL!D4g{_!0fZv)cfqB)cwTQWM0k~v&yBZv*8e35LGcmYe^Jch?4kbJMRv@e z1gqO)jqvaD?|?&Xhchf2JHuLd?4!K5>AHC;IB=Htcue~?&oo`;ihjPj%i*-07Q%`D z9vK-6x0a$>vd#4B`e&>*Tj612U2mcKF%s)?6e4=|-N21Z(hFoikbd`rZan5mZZTG% z$SV5k9XPF9p?LY1b|s4G2ncCYf;>n$;#8Wl*DxnKKLjhTvOG8=1DoO^htwwe@;Zg&g~lfyWPSS z9~b_C!AU(4Y`f#aBeX|U1Gu6x<1f0&O2f%kmb<#lv_DTW_7!DT$;&jl#L6x7qx7%e zBzRjx+M&}Mwq-A3}R+8d=zP@ivOH@E>c6bG-$t|}id>+bwV>(pBlI%%BluH6>i19FLN4_L$8 zF}{{QFA~02CkNj!Xx&Fd7snm%!v;U(;*lWOVe5hze%i?>}}&624R zozDH|LqV-Z5`9dKo4nZ_Zt{)5^Z1lJCv_4orjz;xAY!1KsMB@)pJ7ilIh?Rr=mR}R zp!CQi0Io5G4{NNncmxbrqs*FIpj06BwT;f3OMhG2mth-<(Vdt5cdr=W*{iRV@8zU_ z9y#JpXWmpvguw@%W-3*hdIN+R7SuCWASgR7cMudk`C`gHw}r-aHU3@ft=L-gu=A!s zW*3C0N!4&m9I+7};OVP7``m9iQMR69`T{+E_OG0p?~*rounVdtwC5SjH@53}nJx%T zB?#vu1;3twmddU-5z6}^x|wiCIf+WsZ5mQKm#(SxOXVCo~FE(}Suw>jQ(?C2N8YO>fPuCr15 zfk*QWulY)_>X7;^-1@^G_2}x?*GZ?Wfjc!~V1f)m*}iCp2d_r}3sAs2ZfmUv*VQxS zqQ?t2X?leBZkO>)TW}^rl$7r7kXN+M&d>N5a)WP zrs9Hg;olxdrllqPquYM`-Q!DnJ-%GahAU#NZzRy1rX74jLSJrgi8T}7#`3Lb{a$OPEzJjp}6V5Bd}(=sng?{eDJ*q z{U=c2MD<{)^TlQy9vmT*I4S;=5^3J(Qg;p3z@}2gs08@el)J9)%LA6-($`Rg!&y!L z(6n``{A^xy`&d{>vhFO#ghg}-%SRs*{u}{1j8{r5XD~-Jg5ctrE5o@pI50^J%r#W) zV{oh|Bnp+j5G7eX8G}1Eq#09r&SOtp@S52Xl+^t2%_%>Wo3K`*GAiW^q>v=8kImP_ zTyu41fh(~<#l(z?V2esWWoR$%pEAFaj>-yiLc*O@oUZ}6)=BIEAX)?e3Z?$BPJno$ ze&IMv6Ds-G>J_qxgj_4?-P1K*blOau{QFFxN}j#Dm?iszso~(lc^2lzSm&1CLH%2D zVNpIT(3FR8jTSxVp8-zmBcP@uPXLqmazO;$-}rB?eq$pNl(0V6Go9B_)u^7Aq>2bw z_d%~r+gLl6)pX_+l|(BME5m2ZTWlmaGFowdi^Jo&m+I9x2+0})m2cV&8+-Ub(o!q@ z)z5xxs2|^`c0mvImE!wofmb6gab3TA`eJNc1@dD@MCIxVMlvYO&y0IXS;?AasUO6F z9R4!WO@cV!UCuO3M#;MJ01QIz;_b>4PhaDHCyGyI+VGRil)f*zUw((A^?ASG(})gW z*=64GR&?Np{JCTHiDj+#W;5p~1M#&QHl6l=#>`5Q4{s^i_~v5j#7Aqw-dgA>0${eb=Qtd>KBpGV2UC^9<= z@t1Vc|D(n7Ct8f_E_ro8u(#AkUV0&x8~S5(oM?zb(izu~_>^oD*rb!yxj7*NS_IzV z5|f@PY#<4%9wKQImd@2um2zsTy_Bg!9e)!MWi{HftdE!dMYX$NG{uKY86(fIP-3 zQN&3rV7lIGQY*-Ne2dRY>8Y0R!sTSBW-zJOs+iHuMo6K2N^hixa9&0Ra z0ESv>z4VwhxvJG(SMUzPmzWX`O7_@V>lhbiGdje7yVB-XE%okVpeU7n^}UsGx3$wf zzIX1L1Y!dhmFHSqxJHqAb`ui7hao30zwciu#->BTws*weUG?TbZ#RnadVaEFowII! zn!(*azcMTKCwngH$DiBb>xYM$V~{lvgD-fawP~yqLiRd%FhUT$diiJt&KH8&nv4ca}r->(6W(D)4sDl z(ADZw`%Z4Xw6ntE!-TT7WdG)IU%|%$E|ZRAoae`B!vd`1_soxM{$9`-9TIA6Ot|#m zf=Sn^Cf4ZRh7?6q`3p0KV&RyHpkx1e-hn1Ga4;9;VBlW;<`>M}*XbDROt`D|^Ck!n zk-gp?{Y~G60s!X#`UK$H$Nq}{{9FSio(V714R_33PYQrk9hKJ3Iz;x&mxU!lJMl^$ z0mhLa8OVATv@s?4UK$}-7Zr})8CmzIbD6}*q-Qc)Z2C2Wuv<6dSl93vnJf}B!rQY$ zGRisSHw61Z6jHg@W46!yMlG}&5|$)Z4?dC~<&rhY(!crAfG>CZD(;_6DM9@g6MwO` zNJV}v&H=pX4=%<*XYBXL2jzvDfzHxD$ni(Ox3B)6bo`BrZI45H4~)Q512%5rAX>^* zgLG;|ILY2I!RiS9DvtM^cHU1(DOG7c;#C~0&W$Dymf;v=aoHNjlu0x$7w@9O3tFr< zSACdDu5O32VvhhfwS04QrB{PMb|u!qAwvah2U??ANS*FU)7Nvez+ZmUkAS`O^^A@^ z1NViKHo|;cJs8BQZBk7=nuo1bSGkzBk z@8o_fQYK&d3=MYkWh;1$BFTtK?&ZyamL=#7BCczxw?t8m6AY;fPglS&%}(1N9{;Qw zcGpXueNs*GA)CBjxSh_YE>%m-Kpy;>V317k69>f#-kS1oEL2|3e^PqDjLA<>7&qj{ zfa`4a&^2vKqvEdOBGQIn2n?<{4lif1B`m`}%Z`EHsXxTMrT*4N-br@FV|+4N^}4m; zM>j@kT#t2l;6Z^aWOH(W6A7A%fV>R{tx!3^U~cP-&!|#wwfShb`10V?F>ltjuu=wt z(N+s`^Qw6mqBYvdb}J%j-l)HB)bngI8N^sywK?JGZ#`tQqE7%$s|LD*L^7r_q?= z4LQyS|J}`<3FeREAtqfTTsUkw|5p7P>I{#|90PqDi`!tGNct2aO&j}^;`D<8vIC9U zXBc8WsJb313C&uL--L7X-Zz*c%vD-y=GDO1jS+wD&l+%jJ&G7-Tdd=xm^EPIb&mk^ zs-?{>@p)Deib_L;4Rc_7+BqJFQ2I^HN*^z)oPIWmWr}N&7Q>2Ae_sH$48qH8%c~_i zUnRwWn)H=U^&NB4X|z|BE79S63Ask{&WFS+UusYNpt}=Jbzf;8u|X%4Q8_a3p$PR6 z5w}&(?D#QS+cklJUPlYUe)EFfKhE8&s~c3aKSU?x)NJS%btHY6FJ3Fa>qw*)cyQWEoNt7_MtP76iJ03-EvUx zf?^@9F`5gc-;uQBf2R2)<<@^$$&P>a^?oN@blpVJ)$G^?rtFd?#yZaD_(FH*# zTrR=E#&KtH_@=c69qwv36?qrLI0nrtc1L7RJA3CKzm7LZ6S!AI2Zavu)03XONq35{ z*E$~`wQmEz8|$M=Q__g-AxE+G@4EfjwA&~vlfx}K7t4-SITUEhQtleos)wVhJS|!G zd}6tLtvcUsVwE;ED|&!rhuw4DiiK@=9^aM^v-dh^;r64c(~{k3Pr)x8LZi+_khgl^ znWB5HWqJQ9OUHuztOlvPGHw%q=pb){DKT^D$#5Ag<#apNp4l#=;So>_t&@&SneS1C zZz-GD^Gr>onTyD~^k?p^IWGyDVwO}jZ5&dj`S!?y)twltLIPa_?Qca+8t;vN$4;z` zDSO?q)A_7M6oQ33`qO@|=qF_oB<5AUo3Hwiw!>h)5J-Zs?hd3$6rjsuwRHV;TYX~O zLkSV;(w0iFt=;cjT)Q?!fVS`>(zQa)+%zEAwv9NW{NWX2_cq#<2NWkI1ASPh2DM3Y z`}-l;yQIh9b>nZ@_-EN=>yLn!-nsL=dc+xA3t-QW9q#Lt7RB#OT)AN^ucFd3cBLix zZOecRh@(#v4vzG*?#r_uUV38D1Zr$=y`!X_z3@)wQW~}{xzy2{1gFbul>0!CA4t#S zKk7wR95;QWNmk#}I_)<-JvK;&U&{@^y3O>H6f?u3{AJP)ygwFkcemO$Cj8!-*`uk; zlU^*VVVS#*?FV5ra~*p$alMQ+O9(X*3p_xb-_6Szly5=X-#AG3)z~%$YD7M7!Hm9U zhCp4Qc18T8=0Ve6-uTOEQOJIEb4xcsy<3r?~GY*6s4&d}?PI`51H z?J&*z{^<$hR{plnFAbSu41wYOZ`!+#r>r-=Ku;b4atugw0r00oko7#%dNBs*$!c&j zBkgdKmZ44{3QA4i|hd=ri$2lD>CyVjmvd0Usr%kkoaYNE-*UY#$GYHU9iq2 zcD5eY)Ik|KpuBC|-yYXxfEH_S? z7F!l^s;0gyYqRe)(eoOreX~Q;O=!gx>(Ti`{7D;}>HD$$JlREKozxx>kb3rT;41#; z6K{@wh|3;@o-EGz)68#9w{hcGcAMZqUcq`lr(0(PL+MnZTM*!qd?|0)NLlvw?E1za zOHypfI0Y_T5=N?5Balf9>dj`UEN?EQB-$EQfECWMUAEg8*fu&*#3o8Dh}xM7N)&7k z{m>|}i_3NB5CE&A`dUV>+e=4@j3C$kZi??I5;V!RF5jJ~W_PmSL|@#qhX@E-Q))^a zqQ;G(NbEp{EWKorR)(HUPd9_IX%rO-b9@OSh`N==sP`iOj}V_w@WlL$6?skf^iBZ& zw=Okh^+^$aczr?Ri@&Y0U$uB^ZF*1qI8DZdOBnA6?bjmj$|Gc4 z)c0(#p6qb#Eo_Xv7e$)%SzKtiS+;+wQ=oshx~CyKdZ`evkbJbY&}3-^bz!>iT@^f1 z#^A=Uw0B^QeB*WfZPpP*+Sna6d|O~heXCenn@GasmW=irr}?f~^a!Ec?~hZ{L01%A zln-X`gYY=q79oHY@GtLwS|)w(VD`L+-U3S?SiCRV;jG)G>$|hHx7zDJON3%!cLLIj zN~_k}*2nW{9h_i;Y+fx?@{P~)M}S3K&c@!@g|zrR6%RRES~+5B4`r&weyv4Y&|RWI zyMo&6a8 zVcXJxMC7eo&NAh{OuX6E_I-nkq7$VN&rWl;iv0ZR$=``fimik-zYi{7xS+1^WTjwx z$!xZZly}}J$$FD66Z_p8J7iD^ByW8d zk52R?SGEA}mZt5%9kbj7A5uk&is~j_tlr%tE%beXVhZpLlG#&gV0rmK6SVbq8qy?G z^)(#x+xt8A^Gdx(00m!OIl=zx4pNNYyuO5a$D)krC1$j{REx!qJM?BI&TjIqb3O1* zxsmqC_x2n_SgaWTOe=H)%IxrOipO7fx{oj9XTviCayo_J4|62(!^>q&xdTm3V-c=7 z1++U51hf3=_`Rq>)iMy5#=`OFqJr_f1ujb2nWm&Xu+_nM0J3~Y{`diRpk@s6%&0)8 ze<3f7?Z=#Tr}~bMG3_qzFcrb&bZhbuSLZ37q7$ydYA-lV;16$`J69q%FV?G^Q75!) zKOi$|O0O;DuJ=!z;NOF*DyQdJlNXC|U1MPzl(ql7#jwbwUIfkDYZnO|dSC8XTKLTO zVMpzYh|~0X(7=6gmB>Z0N>7_tkl6B3M*?QqJB_c!%zVn6R=FTp`}4h*5Av|`-ajZI zv5DM=ZuRSlv#hm{rw7L=OpI{qWcw?aw6T$NKM}eblC6>-`zHo!nA=$r7_;CDTH-w; z)V3S+KSoIh_nv3E+VSKSaXTO@O%H%|(2x#lB(*UiYtb_Mv6Vcw-{*JFWkm{{pAvX? zraiPO;s@QZp`%?gXtmo;u#)1nc73~}zdu+ai=yAqzT+sHe+#&bz2y}lB8k`Nu+=&& z0ISpjv*;6UOH(inC6)#{N}mxL|Jra3r2ex(#V;v4$g@1#dfPeG&)?W9Tet)EF&v`=0f&8>JRYaPu(!=b~p-txId+UyB;Bu$? zHyJ^af7YNmuvJ`{+{2Q5G<|o;G}%0f=t#OwgkD(r=ls0x~NXJmF_k%~D1n1IfxO6yty$ve!4i#omEtU9dg6oXo$|BUyKF9S{^tDH0rWSd zHl@>D1hYia2fK10AICz={ic)#2j-d<{DV|yGM%m!dGLbzUrnmFiet3 zE>>44VGWszBDZa;@nelIB?s{$<>LgNE;luMpH5(A6`Pby|JK%P3{5 z@76X8u{+}4I{>14=_DyZ3JL7r;QBi=f zy8qk3HbcK$(uy4*cldD>i;{a;IA8@?ltYOYt7JK5ySf{h#XoU@9Tx>6@nb&HJ1W>ef;qf2;3iZC|+D9ZflLQ z8)XSTPh7V^=37|TGif;J#_~*gNwFntzFklBS#Q%Hww;ViiAIz9UP3mw7q??%#l~hU zaN^q}D8*XhVE$%Y4L*KdesjnD5%&@B@!QweP&Lj`SFI3Tbs1QW5J&OShZ!;2{@41r zrhq@ol61I@QkLzx#ZpmK9zX9VL$PnJSW${E|%R2wg$ zmgd|{KZbT^fi=(Qdn^C6C)ZXmEo0qaK<5!q85ehNQ>PN;{WH4(i!L7-%^rR83}n&D z1=@S^mafX=Z)DCnIG=n^4FABJ3`DtEWn4a3jUnEHPAh@i(sr$hcao4yRAE%fgjTR( z-EHLd^L4PP+otW7YSa1|V!rjOZ{8laVpeR~hR29jHem?aw|Gp<1Eb6<>j=3$!ZWr} z4=SI0HGI8f3xoQEc_c-x34F0ES%7jPYk@cCi1d!+-kiX{^X5XfafFw6$S3u9uviI- z-9e#;9p(Z?M{;F4mp6X=>$Y<292m`V=l93J-Fd-Y+AnXnsZ<2vFZ2i?-SwaMsg!rl zq5BbE^v?RLOWZ!oU0*7JR2J@)bf0=RBTO?%eecxcrcyzgsP1O%4%M-hqw*enk=-7^ z(pT2Qy}JhatZYGRoHS_v0LD7QDQwQH1X-GjExF8}7o%1aV>e*&F+Q!CGa6$nv!@R> zAZybK&#mU&CKjtP*}@@>N$eHEctvmT=&la{sku&!j=?gyGIKY+>Zvvx@ZmF2@2Qbl^k+I z5xMr(*<49~&`Le1c*c~jyUkN^o_{1U8Cuaf4X56#!4+k1fT&c{9k+k1az!Mg^ zNu+2?*m@HB&-4HFB}b2fH7{ls5upQhc3W?7zO%-T_W8}(PkkJWJyM%oSlJg!NT5iG zSf#aKr$!=Si+4S?PYDs+US~f2*hVR>_v9z#6OgNcfr+r=?sJQXw z%b#1%lltbN%P;g1 z5M^=@w*efgH16XJei)qb$A0fm`uc@4>8-XHEh2g;@?r6x#I66UUZUBE{rF8qtmn0M zV>=at(^YyADjeMaUGIyykxBtPRuJ@ zcpG_bj%Voy1qq%D>nQT~wNyoTI9KHu6gzF&kY|LXY%>W8FFd9AQt|;(9A`xD+-Zq1 zr58mlR-EFJ?uvx%e&sS?HjQ#*&9EuPDde<%6#de(YK7^JfG&nM8RWanL{VAS#^r* z@@z%Zhw@ce;D~XZHKJHI&uJ6y)4i;y-JI3(iXhrCb%pvv;T%j5V0g_y%Ztw)&6AM4CQoDx3d=!&;jJ_4$G9)MwX(pX9k6?%<_kATlGC>3gg#c5;h_tNU? zzBRCe*zB#M2+MU*j^Mq1-P5|0#It&30{LQYN3In|hO?^Hzx^qZM$!YDg*(Q(Zb0IK z<~oF+NE669{qu{_=f~z$#6ONQ$pA;1A{0TS%95@xr@cl?X=@D{H+?3>7x z-abbmuGz40Phwfl<}K0oGAx+8_`mFF_}KJ4i$X&q1Z>Bv4O!l&mk=*j$b=Abo?O5f8y1Z!9rQ`3wO+_(_%x=#k05^pV z0L0F}T7F;}M(nCQWk&cx=TGJ%8U6%>dGBce(dxISCv~}b42+$gLZWb!-!+hqNq-hB zoBCz~(_657(QBfb?3oWSyGzAq!EH5c0z2S2eiC$}!sZb`@OBt;27S+>+f4`s_~6Go8+tudXJ zM~pLW*Gg;RM$tPJu{a-rbB_MS7bfwFYBSdqOrsoDB6A4}Vb!_?4n2+)iQFlDo~3;n z%vcq<(H66D&_JezsLnU?gi9%Jj~ZI`rOrjl4aysYfB=MX_YJwd=REmG$)-UjqaMe+ z=FR(>?0&xjZ~ShRFH}6?nqkg$?Pcv@%vgtR{3&zSMnXCcTbf4RK)pFG?o2@wPdr3q zm8S``#ch>!%KXeI46>0XLvu2l;P!Bmch&3LtYj?$1u7FYM9oi^VB=o(GK)^0IYrlD zpW+^Qkt<%ZQpOJr4RybLx7nHh`!-9&h@98tB)u6v%Q%d$Ih{EB*1pFR2_~-}k|n6C zSeS>Z6ARc6%WVZth*v_6nZyspz6`RS7UY z%m3G%mWP{n#m_CpWmTx%O{I25GOS=ZTO^*t{qr|&H#;ID>uGn&AXIl*)}bQk)@Q;S+4bvX z(2o?YTCYWdzyI(bSZx|0>$jgz2(S1k#>_1}p_*T|VTrkb(C=TRoD-p{G_+~Sstw%K zj+L>b%zG|Q-Pe(uEHlQGx63^3oTRWfcSHA(?I`$x%+C*PwVvZWSH7CnV*2VQ&RPbd zuOH^<{67@DcE*_f;epmngri)aX*IUx`?UIcoF;ynrZY*AiC{W;>j(R3?Vk@Bjh`l> zjfH=O9_<4Bi>6mJk^`dy@=+Rp>4XyyJn2nyVQ%YjuLeturAeQOoq6t;3J!`kRet<( zYwlKyOKq!jxrSrMX-7@JX7BPsCgBfg0l4W3AwR3;u*0nVp2{nqH(j^cp|abQ__Vxg zX7M-U%Ryp%iMhV-CLY8YmPHooX9Rue+jEy5>4Gl!EA*}Lpl*KE75p6~JuS{KIPQ4R zEj4i@m*10?zna~3S4l3(4sjwt6D${0WK$qQOOP#lp3=bZJ!p*CQSajy*Tqq*;a!Cc zhPR`i=C+cngHAumyHcqnm@!2gA`5wHz>t(+BfUAQQCxq8iS-mHVtE3Toh-dk!v?Cjx<_66=4y2G630uL5N z(!N)ofR&1v5ejA2EEUBco?OO{u;I?t$$dY9cXL!JyHo1Cod6TItIIO28FXQ_qP=RS=60Yl9pH>Qg;?Fm%;kAk={;6DtEhN zMp`$CN4stJ4|{u|c||J+H>^%>WLoMI^QTdStZtGy!WWfqs;?Hr>@qO!PQWN8sa4Y|X@ z{rCnulJIoX`p?q~_m0006mCS&8KyJusHP|^eNRDVe=L{y;pej-o?CXA4(dt6rjYlW zY%HPRIPZ@8L|w@NUFgx$0|Isr(83 z6`qhhvKLoXT1j@8A^Li2-1P`tGF;!PRH#tFS(k7@tHemFqc3{bXF;?cH~UzDPKi5Ey{j$r;8d zQhaHfvDO!O=R+30P})p4(~we7*il*Zye9q)5S+Eeja-mJ^XkLCnD z3oAj434<`jeoj;i9M#=vCB>aOx=m;8FPwB>7+^!OBpKfhJgvn~MsXKL+F|A{CH3=$ zsq63SW5?R^yq}Ebz{p9b88LYkETQSr_+o~K_t!KdX1b(fxQFcL1=(@v9D@~R(FN5?yPrr4z=ULV37Z{ahy zS8JunV!kT#1j(Xr=UT@2gN+wG6d^N0N;O#KvKR9$%h*y?=5ib-a3*~|7)i29Ipr^5 z>I_gU7x+_^)@M;yX692sxWB)r9>Yp@0qH#rAqVy<%I)=38!YJ_rs7S>o#p1c2@29D z`x34Mjk}D2PtWn*_3pUmNfqoVI{ag2I~s(tq-_+NGq)tvB(2qo5cWY{wyAD_Lu0T1 zHU#%1#1E`V2vkkLo5u(#D7uWoNyj0%QNQj>%=*|4Fu1-`Wj>%l# z8U`ghkEPq!ortmW?P@JmbBc8ph`*aT7NbBuM?{=aUkgL<5x&+DnJoWgT4|KavN10z z4XkXx4VPSKCbzXb^ea)Ihxciy6jt2^>>WN?DqAS5+k0Uo{R|Ani2Tx0f94eBu&v9p z?XA4vz9_!2B@GyUClcoTJpNVjJKjLjzNb%Qb}1JOgxpI+9|7s|W6SLHo!Sogv)*38 z@Si##6>XWui_WV$y>?OZC3j$lUkK~o^p7o$^+lhb7DxM;+hVw+BanGOx$i!ftwL_) zHI+2}lb$k&wd>l42>kA*6Qp$E(MR+4<4K%kPW80unqWnBYD1Fp0MaWFrSvfU! zl1y8>R6OS!J{j7%_DqGDTRj1Iouv|&!p`YQEYyvLb4+KxNHGw0ZdW#Uo3-}`9E3`E z|8^TX)kZmJBy$(tDQB@pW;Inm46I#Q&Vx~+E!7V@pYJyBS^W$bSOk7Vsv=Z#yi<0y zYa`x4y)c0+0Rdw5mvzgL)fZ!4zS#_0%HKN};dMpFOBQ8hppQ9Tv;i+S8#DHUFx9Lc2axEbze1F#Y`eqGDo1rv{eABP> zcrKE<+12Zh01TTzvN$YYnp-1SPFj4QC0l)Wr7(SAG5Mp!)&Nl*t!imQ`wN=%-zS4c z!tTM&-&ML`gZI7#XOeHj(A_y;2Za z3O&DKTBEOI#a=Mkh5X3)IiIIZ4Y||60oaS&l0o zSwxwxY(jdHJ_^&b@su@)4} zR>r(;)vnO_{GfGVjdMf;uKLZ|kTm9m7x-e?w#r$q^kJ!=Kt9DGIjCeLA$0mgpj@r` zkUxhg@%~BUkJi*pvjryCNU2%c=Kq^&h>8A?6_*OJQK#|F_Kf)Ld3`ru6*|Qb5;>dQ z3g=C0Be0*M%*tbc=N8s*<>hjt-XRu|pyFm*yxDQ$inlA7UtqB;if2FcpyAq@to@Gw zqn00s~ER5jmZiGz6pSG0}t$#9|-*$=hy3MU~mUYN^5zcF{%?tljx%yqOxE z+s;{7`+*Bw$zw|I87ov@gqg=Qe5T*G{|NX{{|?EbY^mtZd3{9<+wUMpN}f5EJk@68 zA9V90#;D#t$90=8dfT7o=w*5+r&=pIbg{AbwSJ%{JuK8AiVLUCqzLuxQ+dhmZ887JFCD%QsD|4W=jv=q^xddwjg-Dxu3vU2)U;s}jOb7gx~s z{+<;z7DyP$@{fDN6Z&zPD2;u1#o}sgQ8)FnNX#r*%wK3h#+>QXKehw3B=tCgo9p4=>!7fW>pW~__u)5#DQHt2+}uO-kx?$v z`+{0-a*-+-Vuue|5Zg|Cf0=38RK-^Gu;I)bVz|HxHSII4DX{`(ofZ-JED^+!%35>A zpYFTSo7QK*WItVWyJSx43o&znJf#%iKk2=OpY!~Bq4~8kIuXXetiZU4I&-v5M#;f} zZEN_>%3U699@V+a`MgtOv@Nw+_fUcMp|5gx6{exLW1sF0aJ z3B&=73|L2o&foA;vm7`(M;4}wX;TOaMV|-Qb{i!fUM;w!?&uW#CQt~PDSXQ@z>~5g zTNjJpLyZYfhMi2?Xsu`OXF!sbc@j!%rMUgs;a09opB@1nG4f?R!ZiOCM8#U4`Ate1mqYP49ktC1le&Egj&%#*#Ui zG9@9cr$Evjow>z}-fJgI0bnNky=Szp#>7eF-%S&=CeDj7nisU9sXk@XS8+==2aISb z6w~jk(q8y<(O#DzuZ~D6dr0|w-S-I4S{tfNe%Wkqu2*Y=xY0kOe6kQougHqxtGOyX zr83Q{2}_vNwMB!w^aiv01frZV<<2?d5B(M`GA0&nKL;#bsLk9|e&$&g->s7wleD$G zbyajAvbuhss6ra7*K234Wpr=>?7v0x&V>|R@g8o>H+c)B`cT)yr4+nr)+qh+ZdFAG z3dgv&SbWkm!{-e|K#73fYf6N5bb%<>kE8W|}WhL0|n% zkvktzxCnQcwnjh-gnYTI{DaCtNCnv&-u=(!-|A1a(n9a1fBZQJB&w!nZP-JUr4qoY zL&@%oW*WGx{>h^DtH|=lmGC9zLqA||We{d3YD{??-(Jq z!iHq;`_qxyvuH-|StsU`eoCE-#W5#FlkH}IK*X4C3=%tPWZqdd(Ta~;(MQMd`6|Qu z@9m!G0^g%dqqWthqUSdLwXgQ*o)5i(oNHvOSm(RVkG#xAW94yGf$vbW)aZzd^-e^A z* zQo8NsD;?tAr|LqVn-m>vBwwL=B^;0}&`#i_7Ae50OREC-td1XpuFpu#at3tDVnS;V z$RCCk0d_-bC5=)p6_yzJie@b$1 z+L^{b?B`eTSP1+r60f5F04nCM@te^85OnNbuLiY=oSn+j$iQTp)+aqn*!i2|tcCnrFei+3{7rhaJ`=;l{70|+ z7nM`NHsjcTDkr%#UWXg;YT+ALagN5fq;uj6`c~EWcv~HZ@~zhABiQHs87m!PHqC0* zh8Opav*LW8@kQNzKczU6JCB#z$3-brPA2;zwgGao<)CcKvoPWZhJlSBAJ@p>;6+1>vD!maTbjazY( z`x4`BG1ogQu7xS7tqywiBIz}A*&@1@-qgcztgjmFkr-gB4hSQ$uU%|>^Z4w~Gx)21 zvfihbd)JYUZ)}eDlT)l>Mo6jYvl2~S5wg(Yg2AHgnDuoY%j$P)CCNznV%Pw6H8Zj{r57tC zhCZ39h2JKXat1n>7=KE`+tL1I_nwQ&b5yVOdE5Ll{{SOCcGyTK1RN1sq?zZ+E-uYk zjD^ECGCw*^SS(pqj~FCXT?nygu&Zu-essxbhIfokb`eZBLP>C;HtrM)q0C?HI+HhA z=B~6mFuxh;9tD&O2*zu~tMMO6McO9*ry%+7QSW9wL1P*I1rn(ZvjB`@aaUMtq z6%Aa|bSkLc4HnQ9!%;YahqYZbX&F`i8#7l-)#E^kHvoE9yP@L6NXXXhwYi~^6rY`> zboQ;Oa<)xd#U24CfP6)#`0npkY50-H@Yh30BN;a+qtg5!v&M?EK6tMa8L9LcZPV1~ zJityGy!#&aLK$|kAPTf5(js)g{#B~6n`K+Egg%w54r;GM<)4nXp?qsJJG*-On)T>M z-8?*0tl8|}21#!PTl4%Q`BI&(XG!~~5%FSey8Fg@*7S^V8ydD!?D%lRdJpAWC8@}s zhdtm~H|lYpTGgg=$=XL(@j_5M8*)F{{*`cv5}v2YnuL*ku;gcx&34n+(O0HTygG2hG#0=2X^vRjWC-()8SbaU|PGXTb-`j68%K?Z-7znvRBW zrzsz_-?2yh8#DVN`~ZT}#Qy*v_1o`>z9)|i{{U#+Wu-vgk=sVwr5xijy90oBFG|uh zxwVkpPF2ej^dI4`z(0ha2(*!-d^7lMp=cJMW9<4imld*pA~hf6)~Z~p(a_1RXQ|VT zBGmEZuO8K$s?Dt#q+t%I!133?kA|NT><*XXzXNFcv^#Jk)il`d6nE(&kzA9M+ufZi zFzS)$eRtrdt8w7{VlY}b5!&L)X7p&CwxWWNxz8d(e<2IsOLrZ%-J}Z=l>sZvK zG1|iI$V`A*MP{{V|IzgEjAI*n@I*^2KcvPaO? z9|gZ>pN5uEFNq?X#oCNRCQHX_dqrXW*kf(YkM`Mt!1+f?@$p&K9+PpTuKwftdxJiX z6skrwb7?ut`Bstt0D?aE&c# zgRbthxb~SKxQ;3ZFnH?dx6L`tCYbq=C;TTAX*5m}lgpsMFI z39SUVJD_a(R*+VijbDL@73jE#JbeiDuVKRi*Dtg(U#B`5d~@~!FU$efgwkDjeO zM}2kiCi>FiVq*?Ais)&yV%%bSMvG}Gpqw5Jc^Igk_FFXBr{)D;dh_gi{K~{eQM);< z6i9C6d#m{21i9k0j9W8uPeX?BU&N~=ne@9!aVYn$+H_wn&o32SQ+l2W<1Y^DJ}B{f z&XN<6*BNbs~acL(NCT(bC%%1!c|SHztX?*9P9O*DUZ zp4HJxCq5!*&=xaA;6}6P*d4vAdunngp@HC=3GDAsOZ=-&h7I0FTjPx)=U(vC+I^w< z+;Lh!%3Iv+Kj4->@I>Dq{@uS9+g|vMsNHDa417IwzwnZ3@Fv->q~V2)scerih6_Fj zjYub!P^$_JDZzII5G>l%0uwVm@4b zaaq017jYQB-BtkiIIQKNao2Egc7;{|p7o5hH;$xNo?(n_kOQ8$tR}je#q>PC_K5wT z{vG^v@ICj#{{V?P1+Jx~>QEGx8ITf<+0^w`2av-A5s_I*8%5b!qwpjC3SavL_|x_# z_@cJZ%Pyng9bRWT4zj}}5y`idjs&VX2Y~Cy zV2D|dLCqwab`E6~sn5mmt55jjsx`gx`Fd8GL+W>B@DX$OK_h~Fdk%dw)n6YBmWrI! z=Pe^1t)9OM@O^$Y%#}D^G-CbvFTa*OA4DN8t# zAf`1vae{G@NjN7Yl1njWZ!y%wRhPA|E6x4U@{eWR?)PW+j|A{eTae}O!(pkYL3CYT zcJ#aRdipCR<~qi=cc@HE(zXw5(zTD*aJXtzAh}VTT-Gw?JGqdG@vN%TF69h2FR1jc zJXBk!b+|cb(mL%QS+H3&#L{-Jm%n((4fhB+=O(^-r8<_MKlQ2NSEW&^uBTgmXF}T5 zrSS5vph*;|QXFT4)N|PSR~%zFYZiG9grTfmjuYawj)QqCSx0Xb#kI_PZtSiXayaxO z+o&T19zh41_wu|}A{LeG*39F~xMwWljGCqgG@`0glD4byPjuHtwOuwob@++!V%x)# zuBD^I&!LxHbBIRhh>yr)Q+r>%W>m&TkexEXVk9oLV=Y5~Kax z`*q}(_m@Z2Ytfvq{2?hTY>pwHrF#}<M9)qWY<&0N9Q$qZB9ca{OR&SdF)}^ft6DEuW8K{zG zsgp#cjEaVvF5(>S6*gnN$tF^5*!xvM`{s35?%9i`_=>{b%@zGUYu>Tp@}_0@v&K49 zb}lp3PkOjT+?!bN4KGu%{{V%7b#_M%;}zBRPI)V{*CEs)8boqJagknbCJm$7%cP?s zNUlkUNau?4-6oOl#caidKvaySoc}xqi_qX1giVm5wU4A#yvLNDZ-w50Lh)IU3aFbB(Nwxa=(L zXA&ZGr)ERtM}6=c;ctmQXg`a-ANVKWh}7zSAk*9Z>0t1QvdLUoj46oH^~>D93uj zrH$#`Zcx8iQUL+E;g9#T#bYI*w0AOfi0s*8h~0+TazJe2vXWLbi)YV&ws8n#4==Q&Y(%kuL z9Iy9y74wfcIj@bu*Pd&bPa9Y4=@r}hUzz>A;nxe`GHkY-X-DB!PpkfE zKRG{LG+HEi4gHMzjHQStC%t;^R%h*0F%Y90B9+gCSVxcu_vu2J*$mNKp>N@s{{XZi zk5HMTw=w}Ms^qHYk_A+nYh$9OWc`bD)#cFA_~oGdE%2w0q|*Kkc%uIRSkaaU8XL_< z+(jvnqL)$>k;Co-2cR8#)>yi5bY;u8nZd(&{OcQ*Dw(Y))2n%2F?UwGv)8(@L&Nq~ z_LtLYOE2!EwO2w<3%imtj>Ube=4&@7sQLa!ZYL8d(@^Vw%l;f+_(-iKfv(|{?O(hI z=~C!TOO=b+$xD@-uA`{Qd35v00Pl(2}K>;$`MgT3*@!Fvzt!TBQI@myC*^E zo)~+B$oCcM;Bi$bRa1-AZT)^{!tvJ&W!zzqR?G2mx|()vpk!`tWx;!?l*lY-IDFOYRX&tVhmDYt16Va(X}e>61mY^c#=qT z?=J34p7rOvB-E~tSL=|SJ9RpEwWuz97*;mUN3XSV$_-UI;Va?Jx8XF{&?5x)70rlV z`O$}eyFC|6mna5nnAp)!2*B$|2W{s)={A})jnO)CxFWM`(2_HOv{aWJhXIpA86=9v z-M*Be@ext`jKluPv3QE4eFb~ko+EZRPaRFB>5<59KIjJ=*3eR9$(~8!$@HC1#uJDa zKRCxVwzjd%+qvo!U0Ye{D6TL7^{izTC#mRR+?J?jnc@p6^2$IbM6!Iw>szHQb$<;Ql4lEZc4lp__V9hzGI8IEsM3lvomq50Nq^wqZ-m+n z?~eRs`#|`dL%&J3hepv%pTjKQyq(9R1z1#LoJ!q0#Y%qCtZDqhGxl_)H|Tz{X)$TH z7HK`J0KQ=%Lu7-Vro9EEYhd9o6^{gM6x_am}td?m_^p}{&B=70%TMD+^d|_y`ni^5P!lm9+?YGdmh%905^BR z70XkRBc>efpO1g=SkH$3AMkJO5n)7#@D{w%zjC2bbQNvyoWFfN>kqHG^R#OM3LeQTSFYtEKc8WH<%Uq!1v z*TNi=`$IpijFfL0NiUr5dw<)pl73Phsrb`C_=DnGv7%qK%OFzj!H*p<3vzIC`SHbg znPoq#;eDImc7Jcu!s2qwEL~Xgub1S%uI8qb;O4j^DS&(IC;0MlnmeAz{RU#X=x zfS<}G?MN8UO21_ziDyfjMsq$R@Q0MGhyXMww9i`!n%(YshmN$trN*}=JcA%yatCw$ zDlwHgaIJT-_8D$B+df;E_WmHcT^@Ti01d!rleJEG{-2F_Dhbr)XKcA$WhQ4Ot%A)0$s?~k!{{V74((B?L zp6SHg{cGx!kLG?$mHzJLQCpckD~Axh7K)*uraBw z7IYeZXP~5&fR;Rf38dB8Yhq+!jMPhFmgB+5&1Zd0Rma4{w=_0UG|h{41GuLR$f@u% ziL+igR~_i+@; zhZy{;nZi8G)>S2A*1jcpeChri6Tq0_xn!djdRTWhv^Y&KRJ68}_l@&+=9TZU(eGbU zO+#LfZ|>i}tu=E^EK$1qF0F6n-3`im)|yzAcJw^M#vT}fHCHx~U{I>^oz(L0ZyVUX z;hjcJBq~bS0~MrsTe;=pu=OzV;}I1tj9SqR%<9rlqP}$(C2*wOg4<=u%B# zws}tc*GyWm&nw>KcN(m5#CJVjhD|npyZ->e7j!QP*?z`)MyD>J9Cv!Yy?1{+LxyHc zmbX%Ug2E1Z_M(Jat0^VqMj}a5j9c?Q^YH$Qrmd~cmY4qkA$4LA{`VOowr$+zv7-{E zqig+{XMT2CxKg{%J@b+2)9|F*xoK!is5kbMOQzZCGBAK*S69I&+>W@c+_f$-(4%sf z_b{CrEA}!*xp!GUVm&j~vy;@;3qq8(x3+POH~UG5R1 zNiXEY*i|w7)0vm4==OSMnIU`P z1<2ZdeD2RvST$&!3RjWLYr0>DEk(AQaeoku6DQvUFCA-|q+y~uDY-keesTW*!E5C3 zjo-tc3u^im)&ZGX{2ZVS=Wt1JkvcqRYw@;aIpBc^TRqnh_$Ob*&?1f?V^cC z-I1TnAf9+Djl-`aw_5Y~jtZ_OlqIr@f7hAoRTua>tDvw3~XZ&%RvJD=K* z;YWimE_Bq=Z*>csR|wufRf*Uz1S>WUM^oW9v9AW@r>N#2+O{$ zY1J(?^}f4qFNOaAZ2tg-_xd)cCyX>5Le};ncjPA-6ilyE+UFr<3=HKPL3E zDlI;BZpK*N3(culq_EW^D75+Bsi)G(w}1QzY0~T7LSCOG7aeIX) z7~>cowUqJno6;w-h2eZ{2>bQZevIM1E%>?}QVltD_!TYg?AGM`*U;StT?tg@ca&R?%T0cNp~=`@HN~v<pUavp74}f`}uz+&p5R3rj#Qa;O4&W z(Lab>r*ZG$JuQdH2kAwSx#Wb8!WvM0(p!xE1st#+H2MqAymN1Jt{NgS3J_gUDmFMlYd`xS=z>)(Y9Zf{{UDphG{9MV!4Ei#)+ql zUQLf)X{UB--J^2@Q}HV5H_apxWFLAZ2DLqG24M(3R>)4XZ3Aw)ZZTU@PRE&<;v-U{ zv2x$Xx^28$BcJuIsK!T$DZ{AQ{vg{joKMHOtzx8%WjM5PUMKjEslk4J!#LaZs=SdG zjf^XwiasQj_Icw6-mN)U$o;PW0D>-E>E1d0i##MRHAv#RbEsRoE8`n)B_lsverMjh z@YeQc4kuaaeZi(^I>Sc~ify&oOm+$)lq|<-+rb29l7FphCYFRN?q0I7@otZP`t+V4 zneFCZnkJC>cs(#XcC4Pp%W?X2J~z>I7uGH{>5MI(GBVgu52iX+JDYW|u&2ZbHAAca z0BuOI6T8U(1>5!O_~xo$Hb@fnX#i(8sMvVgPwoL%r6 zbW>?Y=1#NW&0oZ~31K$5Ar>4<<;q4|`^}F}=xds!TanWVD8}|VFBECoKo@>4)OzJ`S}?FHMb``30Se zeWSW@it^!yoF;nJv2^OgL&JP`uU^^fH(EkYR^I87Srhx^K?;8in&HnV`_YqKKd;FC zs`@@-C_WvlAGHdSUwVr%qSOc&X2-pJvyHYtq^aW_wIBA;*E#wc&BYsiXm8sAIRySR zxe%Tyjgs&W;y;}}PR4S@BqW-n$f}IvYLAov0Q&LY-kXbh8GULo*5emcC`nf2(~Ma^ zUPx)wPD^k6t3;U(8`k7f>Or{QPnDQd$0yXUE~G%poc=X&r>VnN9@5Z?Tf*KI)~Az^ zoR}(>*z9wTN_X3`7`jZ8!?>x8(RHbfApxFcbKJqL(P4?kK*g-H|D$EvC!TALy7!M#gZ;tkzX+~~)nZK7nOz>97Tl-M z`W)Z8UTe*o)bx?L6o9V=pb1pvcV>c-GyzL)J!&Pnq*^WZ;<13!89dsCKCY} zUuq(~;wPjT^8J^MuWiZ9zpZ|Nrq6=0%X~`lhlw>CA1g(WGxy1*DazI=F^YFMZ3TQ) zr0NZ*%fyaGl(d){{TmB2TDql z>T2sjtp*<+>S&v0m-Vd`7&AX@Q50s^POTw~zDcbW2oo$+?Ph7%==XEN1)BWy;}08E5nb>PkI6$I_jmPrQvy8^E3&Yfx_O#{T?KWnfL*{S5yAf;{-I zO0@8Pv+(X6L|e_I>J4>jo3XkXlm_qDaAWui>BCuF7-D)e?`X8|8Ks0?AJP0nFfIG! zDK|18?VjSgWOK!r^-W*n1^uPIm89!U8L}hoQ4kn29!Cct40>a!tYngvjo|MamOMk_ zPmMaZk#D1DnvjL9!24Rd?*Y324*+AD!gsxm;cH!z>YorkG0ov<^c_CpIPZeu;FTt0U8XAbelbd@&}IaV%$0U`4wsl|~)du6ui9HHAkgtqtj@ z%374XHRB(Qz8J`sTSL=Azp=(u0yn!TSfrEe1=CLtF8T(n+Zk6}&SL5oA3! zk3stPt||LP2HVu_hqH1?BZBc?gI7qfxbUZm{COrHH`^`a7>pW|D99m3LNZ2hH#a$?=m{pvqy$=QWt|yL2 zb;Mp3%xrn%xc;@ro8kHBrhez(ZxDS)G{j)!{xqb$R*&;XHE*p4Png%l)S=4H>xvny zXB}B6)ieB6kFq+JVdgLPmU=xN%zs|LQ9jO}Xz z9ESaAs2EEZZH65{_hX8)$L7Vu$4AzjPW^q);xpggH z&aikuLm}q+>~ZRdIsX91ir3KO)W6zX-`QV_{{Vo0K6u@msbFZ}qV<%n{SyBGHjEH0 z)%K-*LHyVuTX$`*O4^lu1d`s^FUlx)5-Tu`TWFzdCv%R~;hB6=B~kKYuj5$NS{<}z zy`7Iu_)RzbP2psrUHg?{PuMul=brOEwk%c!i+QZDG;wV!u-$Ysc%BNP|0Vj?mz zQuZk;mZKz&wUmvP!>O%-jFFi|G}kdRU%O|+(@WyQc#I#!*V^+)_`X=OOAqa}ebcYh zX09yCQP)E1Lo}_4t3=T}thzMaK1hI<@v6G8a$Ko-plNap1^p@=nWBnDUB`m-$=IJS zueBtRt@I&_!8SJXd67kf^s7%&9AeEYD_e^Lx&c(A$aLawTKMn8R<^>`8|5GE8hpT` zZHkxPA=NbkeDl}di=ewRRbmlVo}y?8WgZJ`{Xd zvDPo{8ZA2P{g+W-*xMTs^Zx+AP7mi-8FI*(M)9&gQ9Ki_>(}WQh_oLWeW_u!QVLJT z+;HO^53jyOcB{Ra#iHFBdRL47DtK{jd_fkx@=ZGBZcaX8dIQ;q*0Yy4E!nJX&0;MV z;+Mt`3dwV zo8o5(P^cWaB!0YcTvD9m-(#{cgcq63c*n$_6}9_ld}*%uws`dTLW?l>M-S{fl6^aV z6~Q^mNw#*v5ltj{pT$2FSon4;%kL8SwP&7qi`)d8e&N{%Z2I~N%9JWqno(MsR;f;m z9HjIVhwy=D-7W_nm@F%obHZ42Mk3SUNT9i z>OFN?G4mYP3!;x|Ih5_F@9l%@_)_*I{{U(+4z-Rk`qAu3d9{XrZF(^LIj8JM{?)%x zA5n0j$l&xfZx1-6+R%w+4{|ot!nWW=O!;QjS4PphluqLwQ3>@DE8Z1FP9R7p5&AH_w)k3p9O~cy#%_wS^SO0 zIrOvq@^!Cx$K8*j>+^qwjP)+BxYugA@@~N-v4guj(Wom3C6T&xrKo5}DzR*up&WmR zC%KDQ&+v-QqR`fp)b0Kd>bchL1e{WD0icop>m%_ ze#;-UEv1d5UIy`hi0*8fCm&+Fjm{Z*VEc~!i1!COQ>d1WnAE1*x;~?{@fNeK-oDWO-x9n*c67^M5{a#C8v@msFa&qcU!`L% zXDb`Wl`Hiqc%#SP75qd8hpjd5GTPjaHX;KO!_@U7>s-|wuVbp3T)f3CZ{lag-9t@Z z23l*b&WZ%Ft_i^Ho~P(Zu3D|fM0L_iTC*bi$NvBn?X-j7o39keOAL7iOksTp{-33B z)_kbzqPd=?4BjU3jg^adQuoHPv`^33p63xpdgQ1(b6j;=<lPu@qB(Jxm!&xHcM#62IKd?`rpj{ z742Z~&XVSq=g;HuYOCai#tZ4r_zb*Pq0D)OogUO!-^Dy@g02l=QF9|oZp`*g3Ryf| zr3AS7yqLaT{RMK+ii2jjmh7x@9wW25u=CPX!r|t%NV*1H{^7|qm<3#8V1yhC{|;E(y8-FB>D;Cblgwv z0n;?Sn7+Cv_KEwWHKZsu$d+TujXf{Tw;ySk6_Jk#g~yss1VK04OErT z)RJcZ0K$v3I?OUgd9N=K9ZzQoH_Cl4;QQGmfp?z5yqd8+igLO;Z8|{E*DQ^0TppsK z+-Q>0awPeUOGeQ&qPWQ5@lw&P^du4kP&C*|(8;Ya6S@PQ?soV9hv_46qCnR<4 zRFY&jWJJ;eaB7LWBYYg15I1rr85LZlwQ-ni@G6k5Ay9gX0lh=W&p}NRFWE`zDy}Ps z*qhRrUqM#TgMugv=twOxI204GeS>)UmVw+=(%}9f_*315-o=|;JtAQ7GLRN^)fx@X+u9M%$P%R{0%D>FX-0LHpS)!DF* zTfPymNzyjl$J~nNsqZ}wifu)E#%=G6G>cYiC@!@Lq9f;#K`r@{$LCztFD;IkNk?;@ z)x3Y9**n`qzc6{QTkDMf0G{;iy4DFvBS>NG3}c}B*KHg$ zX}i5y=hnqKipxY&wGk=#4|?i2^e&`>8I#h1G>B%@E#Z`HesfbLbP?S3Z-H8gxq?-d zxH+y~S97MVnl!#BXc634v)L|Kp(eU1&$;K$4ld~Vv&B9U@idy0#tU4H=e;R7Giauf z&))buUAXyfY_Q;P9YT7i$8_QW!(6aD; zmF3jKIK5H&#si4(So(a_Y9>*8^U$^{2SoI~yLGsN_@CnA>r?EQEMx93+thy->rGK% z_0+nP*hQ#nlZ$OW+DToH3agsd7-=?f;#(2EQ?6^MWj%q;E>@j{Gc(=~-WwgNjX!ilicGUC#0EpfX)U79b$zZ@4tt^@|=G3w9rq=zgB9hiT zwm7azl%U?Hbt?5E9S@;=9Nr`k6lox!F%?7KO~=|#jerrv^^U?^5Ss+Gyr4p_3iDUYc2Oi&DXRz0X7 zaD$BZpm$@?GV$7h6U2+&oxsx5k(Uh{6+MdZX)rZD)vGP3g>~Dw#yC+i#Y>81DKu1l zM_v(qoi*voV+C{9^{oAxE858wCQHe_NpI(M&)sQGDx*bqCRL~0kL;m1RK;m)8Sl8$ z5GQH;s1va0t)q>yDQYVcTs&$vlSZU9VxrhvTui6^svgBfYI?uH*kiJV#67{Tdz)0f zk=AQd%3&f->q)jkw6{22M#j+0=V;3wc&>LRb52;;$GFg~rDDZ<`c?BVQAmz|4rw>A zn_K%x<&5=75E1&)ZP=*FbfwJ()ABHNAAsKt^@$n2#U-mArrJyl{Tm{q*}?QZiX1_k zVbzsO`k5CWvqynZ&-_krcIT(d)AFV4Vs$nMS2s*LiRZvS z_s9qJt5l+ndfZEz)>h}YqW=IpohF;5_-jXl$kDXhdu1aB%8UYjr>XpExomi~tJbeB zYLadFmnELx$pH^PN~El1yDi;Y!kTK%K+n>&jBaNqW0t`;CUmyi%iF{fJZ-48*zcjAf3D85nFcdeV?8cZn_QCZe77TYQo08iw_}3%xn~P_ zetB4Y*fq5|yPWkYq^^!*-~?@PtJ~XwoPk)@Yn+TO1FTw9O4+38$W@R0i_uY|{` zNB5?I*Ywr8TT?&I-358Gp;8;8*QHvOMeeg++E!HJx!KT*3310Jp{C0lEUHkP(~8uI zKXsoo>}+Pf)cDpa!;{*bnDrmzh2^OTjzCWxs>a3y=dCT?q+EEEprXU(7wv35=%=_| z<67a{tujT8OCCi7(6Eq2x067L78nmxO*R9?y}0BGZHcBKfR0pCOq(zeN`Ho!>^UHO z{KJ|A^ekK27H&rr1?*|tM+^iU(rp4-54pKn1`z&KxtLiMKY9V$DaP%R*%Qli7|B}c zQE3>tCdhu^)gx& z7Vdgy!Oco`+$I?3*0~z9I%<2-JFgVa6n2Qgx~(}`Bc2=B;x8w)GM&Pa?)JRe$2acJmP6LVm;vICGQsaT05*@vw7Q2;Wcb5EN3 zk*YISMf)G`-Em6y&}qp9uBRlILeWplPh@Fy)}wVY>PSvaE23?33lz0U1h-FuDwDd< zmaK6f8g)IoMCoYTmj<+ibuyH%p_BVF&1~Auw6i`RXvq9UWm$X1^zF%HeQTv4X;$S& z%j;bI32x5EM{jbhyc*4|buJ{*K^^6zTgV0&Q;y=6r!{}@-$jn&`%wq)Q4!zS0RMk9HZL3FbX=+Rv!#3*k>*erD@jaX-X(|5z5Y|r-*jlpNY8L?{Zi2kI zVQR;8doaY%sqnKxDJ^azEd%Zqi&kcmS|2>6xdSXK?3wZ+vPT%o^`SNdGBIzI)3O1i zfz;E`2A5IL^G4#(V=FgG1#LkhdSbgI5&F{s%EfwB2$5Gjo|Lo|z=8ZGhJbQ8&ND@Z z-H{^PNW5a5g>mb8;8M1sbWd+1Oye{=hK$v=wNEP}ttQx67VR|1CXD&V6_lGPTVh4g z^!QH>G4!eCkoh7j+3CuDSqJ4^6x-@!IHC)yeLoly3fgsA(8*Ip2D7u>ki)HE&e?pn zL|00Y@f|*9B$F$Brur^pk2KS`nn+P~s9XcODyxxZXI?eflRG*Zr)vUsXG!3X6<_JB zLa#&XT=R-IQqxnR@dv~`M)K8TQJgQWXC-y)yRp}{e!v{k&dDgk~lTqbJ&@n^Ns~oYt}M_e|Bb6uh`6%v17;Cu!(a z3X`F%OwSX?;_nSz$7`Wj7m2uIp4hG`m>N5ttsK_0^pWKA%%K1Vy)%^*_vOhoNr|L{ zJhv1(h(?QWqS^q_Z_i3(k|beyrY#3hAmbfr-GIj0c?O%eKpd`57@<8tkplYDxi{2$ z#-!&o#!KWOOwn;}F>T3w0ZQmBXzBJ!ah%a{Bx&GV#qyp696Lvl{`8O<^*$?TNCPQlidlNQ7}hNE+2N1UW9cQusa zZB9sH!KGfId1o2NrDM%BTZA_tva-@rX5To)E@>3$!rO^`X{JmF7aclPCnG*cqX$xT zwaB-9)oM})7?`r&UYQ9ooM)|7+b5PQVtXWcpE43Z8j_Wbi&aR}VpEatNucJjb$ms8 zVz`78@0vZDVCu66QNGl#ZdzAX=iaSFBRNXrMdqTZv&$q8daId`MXGATl;Lfm{=25qO2s{#_4)pmC+w*lN2Z>%9Pq#4)H&NG<*Fm z;#sl}wQ8xw7&+8z<~%3il<;<@m)dwFr%H*zGgwMn9@*eO9LaekZ+P2V(3<3&4fj1i zOudUx0mEjoYQ(#m&?t+XRJC!fiz={6Jk8wGy^2cYQ_BiB?-&Y}>}eIyiYB$6QH+TJ zIjQHlYMzG9rvfvg`D#HNk}4+d#|Wg4l3bp7uJyUBi0R96MNhp#*j-5ztyubled=9E zdxL$!_|pfl)%&yvYZIQm=o;Kg2KF4CKN@RdM^lIs!`Jbq#QqY(jw*Ttb|r)ijwy8; z*wM5D9VikXaDHk8w<0|c(twubORlxiOLHoNVkaGITDzG;a@0&mLVDL5-048<+3I@I z5Y{Irp7iK;_|g z1c1bTH3dnr9p68E_4TNGnjyuTXH(Lt5cVp#%X2~^TMW5X9Ta|4J%+akRYBkmwJUO- z#Mb`+ew)}!a^nw|@u6-vu#$o0bR8;)BTzQ(Uy>rpMuioPHuNHA$Vi-zT06_56WT%NU(Iwi5%T%4-s`=Xr4 GKmXZP?y?&I literal 0 HcmV?d00001 diff --git a/examples/screenshots/webgl_tsl_instancing.jpg b/examples/screenshots/webgl_tsl_instancing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d6181ff421bd6a87466bec767f4e7acb50d82671 GIT binary patch literal 88310 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�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

BBpJ$2yzamD$!+5W@(T}A_m3u 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 Q1}FiUCf}3L@jxH{+1L8uEdT%j literal 0 HcmV?d00001 diff --git a/examples/screenshots/webgl_tsl_skinning.jpg b/examples/screenshots/webgl_tsl_skinning.jpg new file mode 100644 index 0000000000000000000000000000000000000000..218485520bd7fc07de2d26ced02fb8ca6dcc15b8 GIT binary patch literal 10119 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

Zxyn9()=C$+Jv)u5+&b=F)lrv?#Dk` zd(^h$sH3ltnGBX*riR9a8QrfPu43I)U*c43D-q4NkeDzr0nBhaHep6SQ-U9Wd2)eZ zIiT2lViMZS?~`iZB-a17?P)$bt&C4AnPNM^@8gT?z;w*t~S}dF83WH%lf5X<4CFLOX YRF6MaZvW3OGk<8`;{W@J)IJ{lFKp(# + + + three.js webgpu - materials - clearcoat + + + + + +

+ + +
+ three.jsClearcoat +
+ + PBR Clearcoat effect. +
+ + + + + + diff --git a/examples/webgl_tsl_instancing.html b/examples/webgl_tsl_instancing.html new file mode 100644 index 00000000000000..4300ea4a76618a --- /dev/null +++ b/examples/webgl_tsl_instancing.html @@ -0,0 +1,375 @@ + + + + three.js webgl - instancing - performance + + + + + + + +
+ + three.js webgl - instancing - performance + +
+ +
+ + + + + + + diff --git a/examples/webgl_tsl_shadowmap.html b/examples/webgl_tsl_shadowmap.html new file mode 100644 index 00000000000000..2c61458a74e390 --- /dev/null +++ b/examples/webgl_tsl_shadowmap.html @@ -0,0 +1,208 @@ + + + + three.js webgpu - shadow map + + + + + + +
+ + +
+ three.jsShadow Map +
+ + + Shadow map example. + +
+ + + + + + diff --git a/examples/webgl_tsl_skinning.html b/examples/webgl_tsl_skinning.html new file mode 100644 index 00000000000000..103341ba28b25d --- /dev/null +++ b/examples/webgl_tsl_skinning.html @@ -0,0 +1,121 @@ + + + + three.js webgpu - skinning + + + + + + +
+ + +
+ three.jsSkinning +
+ + + Basic skinning example using a model from Mixamo. + +
+ + + + + + diff --git a/src/Three.WebGPU.js b/src/Three.WebGPU.js index ab8505ee35aa2e..c42e634fa5538c 100644 --- a/src/Three.WebGPU.js +++ b/src/Three.WebGPU.js @@ -4,6 +4,7 @@ export * from './materials/nodes/NodeMaterials.js'; export { default as WebGPURenderer } from './renderers/webgpu/WebGPURenderer.js'; export { default as WebGPUBackend } from './renderers/webgpu/WebGPUBackend.js'; export { default as WebGLBackend } from './renderers/webgl-fallback/WebGLBackend.js'; +export { default as WebGLCapabilities } from './renderers/webgl-fallback/utils/WebGLCapabilities.js'; export { default as Lighting } from './renderers/common/Lighting.js'; export { default as BundleGroup } from './renderers/common/BundleGroup.js'; export { default as QuadMesh } from './renderers/common/QuadMesh.js'; @@ -27,6 +28,8 @@ export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoade export { default as InspectorBase } from './renderers/common/InspectorBase.js'; export { default as CanvasTarget } from './renderers/common/CanvasTarget.js'; export { default as BlendMode } from './renderers/common/BlendMode.js'; +export { default as GLSLNodeBuilder } from './renderers/webgl-fallback/nodes/GLSLNodeBuilder.js'; +export { default as BasicNodeLibrary } from './renderers/webgpu/nodes/BasicNodeLibrary.js'; export { ClippingGroup } from './objects/ClippingGroup.js'; export * from './nodes/Nodes.js'; import * as TSL from './nodes/TSL.js'; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index c8c83b67485b10..a3cb34e35704a2 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -292,6 +292,7 @@ class WebGLRenderer { const _this = this; let _isContextLost = false; + let _nodesHandler = null; // internal state cache @@ -1042,6 +1043,20 @@ class WebGLRenderer { }; + /** + * Sets a compatibility node builder for rendering node materials with WebGLRenderer. + * This enables using TSL (Three.js Shading Language) node materials to prepare + * for migration to WebGPURenderer. + * + * @param {WebGLNodesHandler} nodesHandler - The node builder instance. + */ + this.setNodesHandler = function ( nodesHandler ) { + + nodesHandler.setRenderer( this ); + _nodesHandler = nodesHandler; + + }; + /** * Frees the GPU-related resources allocated by this instance. Call this * method whenever this instance is no longer used in your app. @@ -1602,6 +1617,13 @@ class WebGLRenderer { if ( _isContextLost === true ) return; + // update node builder if available + if ( _nodesHandler !== null ) { + + _nodesHandler.renderStart( scene, camera ); + + } + // use internal render target for HalfFloatType color buffer (only when tone mapping is enabled) const isXRPresenting = xr.enabled === true && xr.isPresenting === true; @@ -1795,6 +1817,12 @@ class WebGLRenderer { } + if ( _nodesHandler !== null ) { + + _nodesHandler.renderEnd(); + + } + }; function projectObject( object, camera, groupOrder, sortObjects ) { @@ -2171,6 +2199,13 @@ class WebGLRenderer { parameters.uniforms = programCache.getUniforms( material ); + // Use node builder for node materials if available + if ( _nodesHandler !== null && material.isNodeMaterial ) { + + _nodesHandler.build( material, object, parameters ); + + } + material.onBeforeCompile( parameters, _this ); program = programCache.acquireProgram( parameters, programCacheKey ); @@ -2436,6 +2471,14 @@ class WebGLRenderer { program = getProgram( material, scene, object ); + // notify the node builder that the program has changed so uniforms and update nodes can + // be cached and triggered. + if ( _nodesHandler && material.isNodeMaterial ) { + + _nodesHandler.onUpdateProgram( material, program, materialProperties ); + + } + } let refreshProgram = false; @@ -2665,7 +2708,7 @@ class WebGLRenderer { // UBOs - if ( material.isShaderMaterial || material.isRawShaderMaterial ) { + if ( material.uniformsGroups !== undefined ) { const groups = material.uniformsGroups; diff --git a/src/renderers/common/extras/PMREMGenerator.js b/src/renderers/common/extras/PMREMGenerator.js index a689daa1bebe41..6c0eb8bf9b21a2 100644 --- a/src/renderers/common/extras/PMREMGenerator.js +++ b/src/renderers/common/extras/PMREMGenerator.js @@ -410,7 +410,7 @@ class PMREMGenerator { this._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel ); outputTarget.scissorTest = false; - _setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height ); + this._setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height ); } @@ -566,7 +566,7 @@ class PMREMGenerator { const size = this._cubeSize; - _setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size ); + this._setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size ); renderer.render( scene, cubeCamera ); @@ -608,9 +608,7 @@ class PMREMGenerator { mesh.material = material; const size = this._cubeSize; - - _setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size ); - + this._setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size ); renderer.setRenderTarget( cubeUVRenderTarget ); renderer.render( mesh, _flatCamera ); @@ -678,7 +676,7 @@ class PMREMGenerator { ggxUniforms.roughness.value = adjustedRoughness; ggxUniforms.mipInt.value = _lodMax - lodIn; // Sample from input LOD - _setViewport( pingPongRenderTarget, x, y, 3 * outputSize, 2 * outputSize ); + this._setViewport( pingPongRenderTarget, x, y, 3 * outputSize, 2 * outputSize ); renderer.setRenderTarget( pingPongRenderTarget ); renderer.render( ggxMesh, _flatCamera ); @@ -688,7 +686,7 @@ class PMREMGenerator { ggxUniforms.roughness.value = 0.0; // Direct copy ggxUniforms.mipInt.value = _lodMax - lodOut; // Read from the level we just wrote - _setViewport( cubeUVRenderTarget, x, y, 3 * outputSize, 2 * outputSize ); + this._setViewport( cubeUVRenderTarget, x, y, 3 * outputSize, 2 * outputSize ); renderer.setRenderTarget( cubeUVRenderTarget ); renderer.render( ggxMesh, _flatCamera ); @@ -814,12 +812,29 @@ class PMREMGenerator { const x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 ); const y = 4 * ( this._cubeSize - outputSize ); - _setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize ); + this._setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize ); renderer.setRenderTarget( targetOut ); renderer.render( blurMesh, _flatCamera ); } + _setViewport( target, x, y, width, height ) { + + if ( this._renderer.isWebGLRenderer ) { + + target.viewport.set( x, target.height - height - y, width, height ); + target.scissor.set( x, target.height - height - y, width, height ); + + } else { + + target.viewport.set( x, y, width, height ); + target.scissor.set( x, y, width, height ); + + } + + } + + } function _createPlanes( lodMax ) { @@ -925,13 +940,6 @@ function _createRenderTarget( width, height ) { } -function _setViewport( target, x, y, width, height ) { - - target.viewport.set( x, y, width, height ); - target.scissor.set( x, y, width, height ); - -} - function _getMaterial( type ) { const material = new NodeMaterial(); diff --git a/src/renderers/webgl/WebGLMaterials.js b/src/renderers/webgl/WebGLMaterials.js index 7c2258e722b372..ce10982b1a9fcf 100644 --- a/src/renderers/webgl/WebGLMaterials.js +++ b/src/renderers/webgl/WebGLMaterials.js @@ -41,7 +41,11 @@ function WebGLMaterials( renderer, properties ) { function refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) { - if ( material.isMeshBasicMaterial ) { + if ( material.isNodeMaterial ) { + + material.uniformsNeedUpdate = false; + + } else if ( material.isMeshBasicMaterial ) { refreshUniformsCommon( uniforms, material ); diff --git a/src/renderers/webgl/WebGLUniformsGroups.js b/src/renderers/webgl/WebGLUniformsGroups.js index 7d7cb09a3baebb..947f5607e17e1a 100644 --- a/src/renderers/webgl/WebGLUniformsGroups.js +++ b/src/renderers/webgl/WebGLUniformsGroups.js @@ -141,6 +141,11 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) { uniform.__data[ 10 ] = value.elements[ 8 ]; uniform.__data[ 11 ] = 0; + } else if ( ArrayBuffer.isView( value ) ) { + + // copy the buffer data using "set" + uniform.__data.set( new value.constructor( value.buffer, value.byteOffset, uniform.__data.length ) ); + } else { value.toArray( uniform.__data, arrayOffset ); @@ -176,6 +181,10 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) { cache[ indexString ] = value; + } else if ( ArrayBuffer.isView( value ) ) { + + cache[ indexString ] = value.slice(); + } else { cache[ indexString ] = value.clone(); @@ -199,6 +208,11 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) { } + } else if ( ArrayBuffer.isView( value ) ) { + + // always update the array buffers + return true; + } else { if ( cachedObject.equals( value ) === false ) { @@ -339,6 +353,11 @@ function WebGLUniformsGroups( gl, info, capabilities, state ) { warn( 'WebGLRenderer: Texture samplers can not be part of an uniforms group.' ); + } else if ( ArrayBuffer.isView( value ) ) { + + info.boundary = 16; + info.storage = value.byteLength; + } else { warn( 'WebGLRenderer: Unsupported uniform value type.', value ); From adfb24b5e627b795b98db5a67014d3378a3d7726 Mon Sep 17 00:00:00 2001 From: PoseidonEnergy <109360495+PoseidonEnergy@users.noreply.github.com> Date: Fri, 13 Mar 2026 22:48:57 -0500 Subject: [PATCH 2/2] TSL: Fix two issues in `StorageTextureNode` (#33167) --- src/nodes/accessors/StorageTextureNode.js | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/nodes/accessors/StorageTextureNode.js b/src/nodes/accessors/StorageTextureNode.js index 62c6ac5809222b..4e0a2219a01aac 100644 --- a/src/nodes/accessors/StorageTextureNode.js +++ b/src/nodes/accessors/StorageTextureNode.js @@ -146,19 +146,14 @@ class StorageTextureNode extends TextureNode { */ generate( builder, output ) { - let snippet; - if ( this.storeNode !== null ) { - snippet = this.generateStore( builder ); - - } else { - - snippet = super.generate( builder, output ); + this.generateStore( builder ); + return ''; } - return snippet; + return super.generate( builder, output ); } @@ -233,7 +228,7 @@ class StorageTextureNode extends TextureNode { const storeSnippet = storeNode.build( builder, 'vec4' ); const depthSnippet = depthNode ? depthNode.build( builder, 'int' ) : null; - const snippet = builder.generateTextureStore( builder, textureProperty, uvSnippet, depthSnippet, storeSnippet ); + const snippet = builder.generateTextureStore( this.value, textureProperty, uvSnippet, depthSnippet, storeSnippet ); builder.addLineFlowCode( snippet, this );