From 8be76833b9929a1817143508618084f55715e775 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 27 Feb 2026 00:20:31 -0800 Subject: [PATCH 1/7] USDLoader: Fix flat shading on meshes without normals. (#33081) Co-authored-by: Claude Opus 4.6 --- examples/jsm/loaders/usd/USDComposer.js | 88 +++++++++++++++++++++---- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/examples/jsm/loaders/usd/USDComposer.js b/examples/jsm/loaders/usd/USDComposer.js index 7862e1fed054bf..ffe1ca11d24e5d 100644 --- a/examples/jsm/loaders/usd/USDComposer.js +++ b/examples/jsm/loaders/usd/USDComposer.js @@ -1451,7 +1451,12 @@ class USDComposer { } else { - geometry.computeVertexNormals(); + // Compute vertex normals from the original indexed topology where + // vertices are shared, then expand them like positions. + const vertexNormals = this._computeVertexNormals( points, indices ); + geometry.setAttribute( 'normal', new BufferAttribute( new Float32Array( + this._expandAttribute( vertexNormals, indices, 3 ) + ), 3 ) ); } @@ -1727,12 +1732,18 @@ class USDComposer { ? this._applyTriangulationPattern( Array.from( { length: numFaceVertices }, ( _, i ) => i ), triPattern ) : null ); + // When no normals are provided, compute vertex normals from + // the indexed topology so that shared vertices produce averaged normals. + const vertexNormals = ( ! normals && origIndices.length > 0 ) + ? this._computeVertexNormals( points, origIndices ) + : null; + // Build reordered vertex data const vertexCount = triangleCount * 3; const positions = new Float32Array( vertexCount * 3 ); const uvData = uvs ? new Float32Array( vertexCount * 2 ) : null; const uv1Data = uvs2 ? new Float32Array( vertexCount * 2 ) : null; - const normalData = normals ? new Float32Array( vertexCount * 3 ) : null; + const normalData = ( normals || vertexNormals ) ? new Float32Array( vertexCount * 3 ) : null; const skinIndexData = jointIndices ? new Uint16Array( vertexCount * 4 ) : null; const skinWeightData = jointWeights ? new Float32Array( vertexCount * 4 ) : null; @@ -1784,21 +1795,27 @@ class USDComposer { } - if ( normalData && normals ) { + if ( normalData ) { - if ( origNormalIndices ) { + if ( normals && origNormalIndices ) { const normalIdx = origNormalIndices[ origIdx ]; normalData[ newIdx * 3 ] = normals[ normalIdx * 3 ]; normalData[ newIdx * 3 + 1 ] = normals[ normalIdx * 3 + 1 ]; normalData[ newIdx * 3 + 2 ] = normals[ normalIdx * 3 + 2 ]; - } else if ( normals.length === points.length ) { + } else if ( normals && normals.length === points.length ) { normalData[ newIdx * 3 ] = normals[ pointIdx * 3 ]; normalData[ newIdx * 3 + 1 ] = normals[ pointIdx * 3 + 1 ]; normalData[ newIdx * 3 + 2 ] = normals[ pointIdx * 3 + 2 ]; + } else if ( vertexNormals ) { + + normalData[ newIdx * 3 ] = vertexNormals[ pointIdx * 3 ]; + normalData[ newIdx * 3 + 1 ] = vertexNormals[ pointIdx * 3 + 1 ]; + normalData[ newIdx * 3 + 2 ] = vertexNormals[ pointIdx * 3 + 2 ]; + } } @@ -1841,15 +1858,7 @@ class USDComposer { } - if ( normalData ) { - - geometry.setAttribute( 'normal', new BufferAttribute( normalData, 3 ) ); - - } else { - - geometry.computeVertexNormals(); - - } + geometry.setAttribute( 'normal', new BufferAttribute( normalData, 3 ) ); if ( skinIndexData ) { @@ -2352,6 +2361,57 @@ class USDComposer { } + /** + * Compute per-vertex normals from indexed triangle data. + * Accumulates area-weighted face normals at each shared vertex and normalizes. + */ + _computeVertexNormals( points, indices ) { + + const numVertices = points.length / 3; + const normals = new Float32Array( numVertices * 3 ); + + for ( let i = 0; i < indices.length; i += 3 ) { + + const a = indices[ i ]; + const b = indices[ i + 1 ]; + const c = indices[ i + 2 ]; + + const ax = points[ a * 3 ], ay = points[ a * 3 + 1 ], az = points[ a * 3 + 2 ]; + const bx = points[ b * 3 ], by = points[ b * 3 + 1 ], bz = points[ b * 3 + 2 ]; + const cx = points[ c * 3 ], cy = points[ c * 3 + 1 ], cz = points[ c * 3 + 2 ]; + + const e1x = bx - ax, e1y = by - ay, e1z = bz - az; + const e2x = cx - ax, e2y = cy - ay, e2z = cz - az; + + const nx = e1y * e2z - e1z * e2y; + const ny = e1z * e2x - e1x * e2z; + const nz = e1x * e2y - e1y * e2x; + + normals[ a * 3 ] += nx; normals[ a * 3 + 1 ] += ny; normals[ a * 3 + 2 ] += nz; + normals[ b * 3 ] += nx; normals[ b * 3 + 1 ] += ny; normals[ b * 3 + 2 ] += nz; + normals[ c * 3 ] += nx; normals[ c * 3 + 1 ] += ny; normals[ c * 3 + 2 ] += nz; + + } + + for ( let i = 0; i < numVertices; i ++ ) { + + const x = normals[ i * 3 ], y = normals[ i * 3 + 1 ], z = normals[ i * 3 + 2 ]; + const len = Math.sqrt( x * x + y * y + z * z ); + + if ( len > 0 ) { + + normals[ i * 3 ] /= len; + normals[ i * 3 + 1 ] /= len; + normals[ i * 3 + 2 ] /= len; + + } + + } + + return normals; + + } + /** * Get the material path for a mesh, checking various binding sources. */ From 4cc5a1c777d09781ead8e8f4d96109e2ac57e5e2 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 27 Feb 2026 01:08:31 -0800 Subject: [PATCH 2/7] USDLoader: Add support for geometric primitives (Cube, Sphere, Cylinder, Cone, Capsule). (#33082) Co-authored-by: Claude Opus 4.6 --- examples/jsm/loaders/usd/USDComposer.js | 95 +++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/examples/jsm/loaders/usd/USDComposer.js b/examples/jsm/loaders/usd/USDComposer.js index ffe1ca11d24e5d..c78a9c6f94282d 100644 --- a/examples/jsm/loaders/usd/USDComposer.js +++ b/examples/jsm/loaders/usd/USDComposer.js @@ -1,8 +1,12 @@ import { AnimationClip, + BoxGeometry, BufferAttribute, BufferGeometry, + CapsuleGeometry, ClampToEdgeWrapping, + ConeGeometry, + CylinderGeometry, Euler, Group, Matrix4, @@ -20,6 +24,7 @@ import { SkinnedMesh, Skeleton, Bone, + SphereGeometry, SRGBColorSpace, Texture, Vector2, @@ -681,6 +686,16 @@ class USDComposer { parent.add( obj ); this._buildHierarchy( obj, path ); + } else if ( typeName === 'Cube' || typeName === 'Sphere' || typeName === 'Cylinder' || typeName === 'Cone' || typeName === 'Capsule' ) { + + const obj = this._buildGeomPrimitive( path, spec, typeName ); + if ( obj ) { + + parent.add( obj ); + this._buildHierarchy( obj, path ); + + } + } else if ( typeName === 'Material' || typeName === 'Shader' || typeName === 'GeomSubset' ) { // Skip materials/shaders/subsets, they're referenced by meshes @@ -1073,6 +1088,86 @@ class USDComposer { } + /** + * Build a mesh from a USD geometric primitive (Cube, Sphere, Cylinder, Cone, Capsule). + */ + _buildGeomPrimitive( path, spec, typeName ) { + + const attrs = this._getAttributes( path ); + const name = path.split( '/' ).pop(); + + let geometry; + + switch ( typeName ) { + + case 'Cube': { + + const size = attrs[ 'size' ] || 2; + geometry = new BoxGeometry( size, size, size ); + break; + + } + + case 'Sphere': { + + const radius = attrs[ 'radius' ] || 1; + geometry = new SphereGeometry( radius, 32, 16 ); + break; + + } + + case 'Cylinder': { + + const height = attrs[ 'height' ] || 2; + const radius = attrs[ 'radius' ] || 1; + geometry = new CylinderGeometry( radius, radius, height, 32 ); + break; + + } + + case 'Cone': { + + const height = attrs[ 'height' ] || 2; + const radius = attrs[ 'radius' ] || 1; + geometry = new ConeGeometry( radius, height, 32 ); + break; + + } + + case 'Capsule': { + + const height = attrs[ 'height' ] || 1; + const radius = attrs[ 'radius' ] || 0.5; + geometry = new CapsuleGeometry( radius, height, 16, 32 ); + break; + + } + + } + + // USD defaults axis to "Z", Three.js uses Y + const axis = attrs[ 'axis' ] || 'Z'; + + if ( axis === 'X' ) { + + geometry.rotateZ( - Math.PI / 2 ); + + } else if ( axis === 'Z' ) { + + geometry.rotateX( Math.PI / 2 ); + + } + + const material = this._buildMaterial( path, spec.fields ); + const mesh = new Mesh( geometry, material ); + mesh.name = name; + + this.applyTransform( mesh, spec.fields, attrs ); + + return mesh; + + } + /** * Build a mesh from a Mesh spec. */ From 3fb1d054bfad41a859533b5faaf0b6b0b908ee4d Mon Sep 17 00:00:00 2001 From: Garrett Johnson Date: Fri, 27 Feb 2026 18:23:59 +0900 Subject: [PATCH 3/7] InstancedMesh, BatchedMesh: Fix getColorAt throwing an error when colors have not been set (#33079) --- src/objects/BatchedMesh.js | 18 +++++++++++++++++- src/objects/InstancedMesh.js | 10 +++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/objects/BatchedMesh.js b/src/objects/BatchedMesh.js index 5dca90f30f6de1..5bee14f90deafc 100644 --- a/src/objects/BatchedMesh.js +++ b/src/objects/BatchedMesh.js @@ -1133,7 +1133,23 @@ class BatchedMesh extends Mesh { getColorAt( instanceId, color ) { this.validateInstanceId( instanceId ); - return color.fromArray( this._colorsTexture.image.data, instanceId * 4 ); + if ( this._colorsTexture === null ) { + + if ( color.isVector4 ) { + + return color.set( 1, 1, 1, 1 ); + + } else { + + return color.setRGB( 1, 1, 1 ); + + } + + } else { + + return color.fromArray( this._colorsTexture.image.data, instanceId * 4 ); + + } } diff --git a/src/objects/InstancedMesh.js b/src/objects/InstancedMesh.js index fcad3777288d98..0947edc574a5d3 100644 --- a/src/objects/InstancedMesh.js +++ b/src/objects/InstancedMesh.js @@ -217,7 +217,15 @@ class InstancedMesh extends Mesh { */ getColorAt( index, color ) { - return color.fromArray( this.instanceColor.array, index * 3 ); + if ( this.instanceColor === null ) { + + return color.setRGB( 1, 1, 1 ); + + } else { + + return color.fromArray( this.instanceColor.array, index * 3 ); + + } } From bc733cd5962af8644ad5ff38215efeea4f7f76ba Mon Sep 17 00:00:00 2001 From: sunag Date: Fri, 27 Feb 2026 06:25:27 -0300 Subject: [PATCH 4/7] WebGPUTextureUtils: Fix check `layerUpdates` property (#33075) --- src/renderers/webgpu/utils/WebGPUTextureUtils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/renderers/webgpu/utils/WebGPUTextureUtils.js b/src/renderers/webgpu/utils/WebGPUTextureUtils.js index 9a23d4250fc2c3..b52aedc9983704 100644 --- a/src/renderers/webgpu/utils/WebGPUTextureUtils.js +++ b/src/renderers/webgpu/utils/WebGPUTextureUtils.js @@ -538,7 +538,7 @@ class WebGPUTextureUtils { } else if ( texture.isArrayTexture || texture.isDataArrayTexture || texture.isData3DTexture ) { - if ( texture.layerUpdates.size > 0 ) { + if ( texture.layerUpdates && texture.layerUpdates.size > 0 ) { for ( const layerIndex of texture.layerUpdates ) { From cc6932eb909e78d5b45b565fa4b70a2fc99c392b Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 27 Feb 2026 10:25:44 +0100 Subject: [PATCH 5/7] WebGLTextures: Prevent flipping image bitmaps. (#33073) --- .../screenshots/webgl_loader_imagebitmap.jpg | Bin 56724 -> 29644 bytes examples/webgl_loader_imagebitmap.html | 1 + src/renderers/webgl/WebGLTextures.js | 19 ++++++++++++------ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/examples/screenshots/webgl_loader_imagebitmap.jpg b/examples/screenshots/webgl_loader_imagebitmap.jpg index 7ebfbf8ead504da10a2331eace9c17dced1e2c25..659a6cc3d631ad9f33ddc41dbf4f634a799bf651 100644 GIT binary patch literal 29644 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 COT88V literal 56724 zcmc$FXH-*LxGfe06h*oe;V2yhq*vjH0wxGZ=!7C7Lcq{V=treUKXeUEN(c}_1QH@$ zx`4FMB-8`}=?Mx12=KV?y>Z9;d0!dh?K1Y*W3L};uD#0q<~P^bkF!OFn?M7A0mFq0 z3=9{}PlmG@hUoLR|If$SR|a-whNBDrUb?`}aFPAOCH4zvT^EYa>&W;&YR2$Cj|&$s zU1q$(#LRN_+D(Rw7cO18c=-||QHrS23%|E4S9y4E@$rj^OGrvdE32rgscUFHdaQ3?_yhnnx3ILbwz0KydFlGf z%^l+59}pN63=0W;7abED_dY%$JtH$KJLkhkcyUQ7q6}GHQCVAu#nt1#G&FW}c6Imk ze(UQejEzrBPW_lBlE_OxmseJQt*ujcfB)IrKcF2RU0}HMpAG##0R1m`&VgUJc=__B z%S``)=fcI{^ZOF}WyU)SS2!M;F**Bk-c@|V%%zuBRMXBPq6DIFzwjHq$|I^w5~KbH zr2mfSzXs^-{}H191oWSH&WH@GmoA+DuuJR=x(sIwx44*FkbM^o8<8)VdaXyMQ zs{L-18|Ft-H^2ARv~WjM{K9SB*SA9#tf)Evv?|c$YN=DP;VhJ<_H=t9U6C?Zs&i)) zht?UeZEc>w=?boEPUba6RuQxD#gMm`3%}l9$CN@$fK(&$GNeiQ*mimo6MpD_@3POn4G7~Wb&jwckzp8V4Wp`9_f77Eddxtd3GgzRY_byUM|O}b?O znkGxIbt7~`vbv5m47g#H9623U4n8m4MKpMW=-NWib$6eGtx~Lms%DZK&}a;fI0nMh z{o3)?^7b}C?xr0>&luX9&KM{b3qPQN=&0^OhU!+e@Oz^~fGDl)SjEAC4yM3=^o*c9 zG~43-oT&Da-J+{r96#0z+u^0LJsLBk?}(q0Z#jnk9r;(Iw%6#ls+6Q}zt$~B$Fp2r zpI@#0_mLFCTV@eu2IBwQ|M>?KQ@|!9OI5xW$f=Wt*lZm?7A>;L^}HK$#*o^O!*QXn zK4r0jm20Z0^U!TSTT_Q1OZvQzdLJQ%*oE;q(uva-A6+3UiHkSDW?l$q z-1&Bmv-Viq@FeSP_cKcbFxhU%Zzb}lgp`RX$<8s)+@3HA_I^pH$GA|HJ=K3tMBhud z&MPi)75_Q6CDWTF1GcWKUB{j=Bu4SJ3eT?vt8v1RdJUAV4dYU6HF$MlaG8^xTAFS) z)gC+x{<3Q~xy)TMC+PP`?ZbtX=1nm{HvIk<;GfEd(n^{39-l%PfP+dUt^hM{-`rGC zaMuz6AXFkv%%FybJV=3!Fl0%~R9J<0CnX$ZZRE;(VR#Ui8>NLOe-+mP8Zg#qF8n0Ai?Y&YF2~= zk5)Cxa#=nC_7nFL?`zlA^?<2sKREVbpisU5?qeLO1{NICHQA{l)o7k6Sd7g`tn>VK zWXGN5aUbo*tzKcfodK9W-0(I(Og*VRV^|zKV@NI#91CoFuS+o%CW61}Vhf{RZ-LEl zG-v9oGlnNLPwInDyML(?BV(2}G{kAfFgp({G+Xa_Lzj{mj>0J-lOv52I`cM!Xl*FP1foQO=-H6 z2Txbk1XMgD<@@A&R(H|I(9@p6TW1WG5&CUi-hV%6l&gSN(mcT_!(IGBXlKZE_4-0R@_4#u#V+(t z36%T`c|f`}Z!!XDp)sT!EDS9Dk7uElszE zwr~JEWLhP*ubCpmLteSAlg^ z=@>=$iJREKr0ts+4TvLh$5(EHmMrhLVPa>7<<2#(0E9n16pRQ=tX^(W56jFs@TP*B z=Ns3vavmL|p0aq8ZRsLps2*YUajMNI-KEUV&T)-;#?ZT8GD2 zrpn0c_g>hKT2G}rH6aC#Kbu(jmv4D$wOYEYFVG}S+tr&TC^_xHaMQPc(x)2htBc^dQRVG-2+CTX*Q83n)Q>!-%y?*?%wW|Hcmd3+Q%^R0ckKl}m}7EZlv{O8 zTHXQvDfc%=8bnKtr6Z+(SE!fw*CoLb*ZSe_B9F32e`d|Htzw;GP;n*3J(hwVRzOSX z$-H$b6J?iM4FFJ5alWmV@zBtqozuGlCBlw2U%3tBfQOgg0PppDg8$mLXhmYK=f@%( z$J+0TfDcCAGK@{h{ue~`Dr61|N1D}CQaYzlTac+DrhAH+awo+;(X*DWCD9ScA7lCT z%dnn>-%f$ZgX49 zIHq+x*&E`SEiaimg}Nsg6_t=~4o5N?GQ~wlEb{>sadv}ZTOwD;g?9mceSe&5(kr5) zH-^UD4Je6u`S$uD;fi^j_Tv?F`}FiA;wp5v6hx~zV_?)jK}X8buC=#a`9#Y=(F7J( z->Tfc1R`i(BN^q4Yy~DRTn8ZR-PIh`+D4W>H&Y+f$CX1=;nj&H4)03b@t=uvkfW#> z?3T{%!f5{&Z^oRCs>%i4q^e5k4+#}&w}w9gxm;v=gf@Kqtux7JDbYhydBq`LSVHEZ z*j~7blzvYp7@K!*ys}Spbw|!sI97IEs!vLHYw46F?7Vitv!vp5PGGhWaCtMO0&^!r+5vj1Kv3l8BP2d)S6!y zwlU+7y4yyJqa63Nu{4J)$;S$FXscDiw8%`I3!I*j*Qv-Dm2$>bG--j8=Kt&q0f!bk z{c9-E-#Ng2Afh4bA^2+>*_cCck(vx!1NelNbyic#_4_cX8*~ z>hlci)$$8&svaA@F`d`qusx&(&vlrKoK4cxnu+wIRyLakTLYWujO3X$19_qv0rve{R=(-nz4~?Hq3dxBtWC(LU~Dk~dyFe!EaPec5EgGN`y!e4#P?=aMw&X9Y`# zl~q!DV(|2I)9&Wj92!)QB%CqS877B6s-S}?)-g~ov@CYcu-i@uNsb#wG$oqkew}BE z-LPw+p!CaP8u(vfTp0ISk&xH?Q0Jd@V?#fLNM4bK3ALLyu1WU3QgN0V?9fX`Q#^P(Ip;r+`XW zjw_W(I~L_zJM&&!v#0lUJ-rhmg=kI3Ps5?KjKv)+K04f-%GPB)&lUD1n@IM)VHhS> zo$RktX?PPCHXs1==AS6x_Dd7*c4A4uN(U7`)_`!Ubcj8i~JkzyM3dk*_jOi%YJV`%eB5O zrFj`{Lnxo`$IC%Md_4e?p}ON&H;qfxrsxP|{*~ZbKTp>aPvRLv2-%`++~PU<)T20>Zh@*3eNxyQLNy|} zb$MT>zoHqRVBE;2F`+#l$=+Kt%wE@1;GdroB66)8VvS(MwG+;X9T_d1(3@SPjb8THBx3RS&m~H^ zgH)JdAUB`*BwB6%H35HQ7x}$S2y@QOo&G5hq$LLmrG27x0>-Mgv_1VVI)H!eYtkJ9 zFfP!L+bzol_=*&Jd`~wILsPdtWuDdb#KiIAw~CHcXcn`P6T(c|+Vu-O;cTQC zqf5TWe}~IZ1`%Do-8}ba+M&T{x(!7&>z0G&U*3UEw_u9x+EOob8i(GH9!RgIROt|` z#!iLLV++=LO^B&J@0jWCj8SN4;cAx6?f+|L#mL}9_%k!;VpdDQ(vl7uW4>F}k0#Lx z{p}B5T$thi*_>j)q2lJnH90P6(KU&PD-rU*A^Ck$4@$RCYuwERed6=)htM`=NKKsZ zJ*n<~)4oXPW{&mC$fnbQRZ?#|8`oMWG6@?;)z68&_w%&B2A?d7Z>2t6w+w7rPmV|qW`}yQm%)qNepb=$vBe&6#y$0j2 z3se7fv$Yb?%y!A^fWa-Cjvp|KNmk}y1;YG5qjORkMi#h6w_eltJi45xBI~D8W3R8| zBLUpWF{S#JFX0a~CuEan-zV^>Hl)2wdlvC+T5ZK)Ga{0s&-0~*kidm_)E4!srKdGy z{$_qiL#1y9GNfAoeaFU=@8I;(|;#JX~>7j<% z+XvoZB*Qm>@yZMAuql&Feds4z@UsZ;v)??|BE$zQVz-ADjr_W#=K)9-?Jw5;Y2~&( z2~!+*t<$;=liZwGG7SntS@tsGlUmJYO7l5Eh5+_lIeS_fe+XXIy4bB8%Rc36)hTK1OfGgP?)Xxm~pL;k)` z9QeZI#`<(Hb%FD@t6upLP{WZUx?(&4GTue7KI$qGc3+jz0BE^mDDt)SlUs)zUE`Rc zS$Om^UHN2!yVMecs^6)q9tuwN(+WCc5MHHCg=A)Jj!mC2*m+|9^j5w88RB76L*zC9 zOC&KU`uTrdkHk(K1^qJBhC-CvB)m69_A!^~eAF8?EK}j2rFKVFyhXv1{lt=G%Xq6_ z&DuQQXu%WA-XLi8Wr1B+%?~>Rw11_OtzCIqGwVRSk2=?{XX(8wfHtB7vU$ZYNvZgX)82PxAQ*fEujLJdd6=eKt`8vPw-+&*8E+^4 z2x(GVKRg$@Kv6O+pyjH(o z-({d#`&1=#G^FfRW)1BFG1G22h3)DbNiSLmd$_#}vKueYizuzGf;DtU8hlpg9(dD< z8=QnSuG!fn?D00q*o`lyBTWcCDabzqXAGAs&h?qvU&1#|1wD0H?owun_^tsk8`HWF zXUznX@CRkePk)GS9-(uW5mmOP-rqGgnD2eUqnU@-M1f6oIyRKkAlW>_OfmT{>-Oho zK8Ep1Czz<^)FB`iP$Cb=i;DGbGnn33{#Y83QwKSIQf>>uYE##T`^lfklpf zQhF1#m8eRcR`a5i9vrD@&?*3LY_-#=R^zxQtX*o--eCCDsG8;nuB_gehgTf%cPUIpuuw=N$PUX&oQ+3-)RN)j|@Xa|+i0&nA zbFwf^l5Mk(#9dF5U&;@xK4WknW^gwH8#+_s$P({W1j5{#gGqDZleg@~NWERMuQv0o z2p3fF(c0djqu^Yp8?;ozu>c{Dw7Qk#StlpmjiU(xP@&>-P$S)X`9Sy^`jyB3S&(@i zRyy2`7XpX|K3US2+uqhIzAJfe=(}EJxmY~IMdM3=`gG%Z0zjsIK3)_DZAm-6bNp9S zJKuTz*-`-|u$iS>jWl*j<;jbtH-U*Nx#YO`s>0W4XACc3s-$9XHoLhlVXvAc-m$V2 z4cWl!TAfEHnd`kj>m232E{6Of$tHL8tnF$!R}6SZR-THO%rA3`HD&>!!lOFE5rVY3 zglqvtGPe%zx61PIw_WC-Au6^2wLTp%>v$vo3G%hci#4FM#fDkOi#21l6VY(>^Dbo_ z*+*phYAQ(Q(Pay0VQLprru>9U#5YG&-c~cCRa6afjX13p{MANnS$^Ahdpo`wYzup5 zIJSwd3YSN&*9Q$lNx#U7-D;~J3M2+4Qi>97;>R(-;(SeZPzpc4dVij~lx~oZ7iVT( zC6FVyB248ZEd$2=73Ro2sP4PWb^oKI%RAU>FHeUNbOG6wmmljJ=&zY+p8Ql*nu`hx zRW35R1Z+`Pf4(H-K0u41olsI%7Y%z%-$${?X#;b~+~TRl_P0{1+O&2%c4O$qM7*r>ExM^n;aj?H00EofnDZ!?E zENS^xzkGDJ^ zMn~1---Vl!zXhZ+L9B^al1b38o*)2neXDYz4*}uGtQ)(Vpw0n(WIORm%HNF}8@7E1 zjLN}bReuvZ4>Hw}Ow!Nxn@>lFxPERH<2-)vCI!{u^@BYNWvt^iq?64uEi_zZ!Cps1 z&F%SuP}MA~&fg~=+7`3V7;rmVVbokOO_mZ&Y8hN9A@Rhw-hr*!1bwD?Q;vu>UV;v= zxbEzl^_x!*)Oh%_3eph2KCd^fH2J#vDCf(qJ#SKNEfdlBO1eM5X@@S+I@VOc*H@0= zN|-z!yqL)<5!etb2_LVeJ9y0ZG`Bc({F#-=HV-_9T+05bAx- z;&Pi})gl=Mr=+tXg04WWNE}G|UGH##(RDqef_!Pkipy&q#Tk}JW`cS7j+*2{ztFwU z9}CCl`MFb>?V|RO9SK9vX%aXUR8f)KMYbtp_PHGeHIEGcYY*>V2 zeP}^d^VzFaJ6C-sWQgX$_L*}ZT=`U$Zaa+S#@>j2y>5kROz@&-PPIuup{`swKWpoC z9Ywk*?Ga^k^N;Q|*aDcAOcwkWs5M|D02MYEE4HzM9++z58RdgNzdKgsb4&Trtz5Uh zTZh0#TImbGeJP-*G)z z_Z(ikS`Q4Wk6D!Wek@1TBX{Zv7R3v4=<#3xtS47B6$!y-{8$&BKAP)He3I1rJ;${E za!8Kq0f3{F*P7At>3;1;=lT$l_*v|?h-SC_{Ls%O{5K2O9~D$Bo)0S7ED65B!5*zX z<(AUo>JkC)_s$d0yM3IS#w5rqFGS3&du||iHcocSm3KdE_D2o%RW1p`I!j!edbWOg zXQBXXD_4e3%P=1M`h2%EhrL(C-d>42LD7csx7bInP22GG5V3GCSC%EIW}R!-2SE3u zm%@!b%ZkSZmZL$6RQ-`e#~ObS z66MtHTx#R!0Z$(LuvK-QbJ>yGcJkCJ<(VAqQ?3@V@+(i$li^^voLYyn$`;B*S))v1 zBxQ!sc4(OhC}vu;>>#2i2knl3vTNt~aM{7mQNR8%N4w&(++8ty(b4+JOMXIG`I_Sj zSP@XNjdkZlG6|G-Sft(}&w>^N8#`!)q-kuA{5Y7+yssTrWeu!+EpMd%$(y3z)>pTFrC|-EB^h@q~iSPDdIi zn*UDwyLPBCuQA+dI>=ysx^-&V#=6H>2sAq{o!~hKG;0|%v-{F5*>m+g=GG0_K+Lt~ zNcHxZSx7*2CU8yA(zzXZstP`^;>4ZS)UFwo@CO>)*>+P~fz-xHGwjK>+liq+BHi}r zA9fgNHY7zj3M6W^2y}%SpEPG{#uT8-p6)j$#|+lB-vjk|D?SNUqB~}L%yAz6Dje85 z6k4gYCwdUa&KSfFTU2K-=Ja~qMZ7KrAkQAvuF&SrywiOBMjcsxT4{-=sA7T6MlC23 zSyww1Xu&4T?>Ny6m%{$UKX#O&?Ys$L77f_t;5zO;JMwFd>^*(1ef*S)%xx+#RUJNtz%h6{Pn&pZR8<14a_s#4b1f zZVmIiWjw7r`Gu*yKxt_W)J6JSIL#+W^c(i~2rMUgj0HChl$VEv4|xqK9922;Szu+z zv}=HuN6!Hxcc9mDi6pb&d54|8h?o%_p|+X);e}uF4uu zFI#A?c;s>%_fI${N$2uD_h)sDSGJpfwct5d{xqzQlrOnyH?i>Ele4@50dzbIR7gV} zH-4Gb&xmY0){mTSW6^aiu_E7LgODJpD;Z2)F-advnU%GY-F7g%K$b z_)ws7?EW&+fg#IHenR(YHu>_i4f0Qj_qg&XwgHvCQ1e*Hg4vbBLPA%#stQ zx_77GZQGSJ^v9L7%!<+W(Y)6+j)NAZDF1#Qq?JZ5vtLCU zDv%u6rk|^*;Y?((QH!(_(=VQ&`udF$Q_)y0>v1ctHqZA<3I+$+1fp{5)7PV{{h}v{ zGK<=Aa{DR{d@mFNT(1_|pfq&nMXOKp4@1Dly94mP7AT(T#2xV${Si4PrK2jqkB$^D zDdV>d;>moT%>&)-uq0So>hok&7?1h=G+E%tSq@H7j-_5Nakx0f<+(Zw*hWFP3O~+k)Mo|DseS?6EeTc2ZWn6N0cF=)$odc&E2?sI3E6*Y{ zYrVWc8JT7CwN2U8rcIN_EddmctLatDfBpOL)?X>if9*1B-wd@L7J_A7IO&OM=Q+=N zEe*e!XQl;H3iq{6Fmy)J!rP!Wwq_~P8AI#>YounlE;DO_pB>)!SRv18rE(T)r3Q!}&-cMDBH2 z?C$IXEVciryll#C4HKq<+*>fr%ykg<+}|oY*a?#DLuuHXe*Fg z%y2VkB~u&ppDhYZ3(XNMeR#SLy`<`0U-=JOOJc zu0O*&49yw5JiV7V%73hmQ$uf+f{ay(#va(Q>Jv^wN-BmeUib#D9R=1rshqDv*jkyW z;unuEYt+hcow>q$=bP=$1fQhqVx#WSs=0 zvyivP`IES^@+`AAOhcORQx=V)5gNy0k)6U=rmZ40EWLMeCzfa9F~#BE7OHomiqZSm z%D06F->#E;jZ#A9)h1N7jG+=dng#`Rvp03dV3SrCw#Qc0hf}@;zrFuQdi54k&_K@q zgEsfA{<6DGD@hIp>Aod#Wj|XGq16gjzGao;IJG~54?1m!*@vq9X4M{ODy(ASD^K#T znha+PPWn|?l>n93%##p7c_;Zg9%-aj<`fdAXADvjf{Do#jcp-VlGr&1Fq-aBGP!PdkZ&uw+f)Ys>D9mXAajN9 zhS~)Ok^;c2GGo7)N((qvFrA-r8}wEkd!Y4Imuvf!5f*vIU_jYxP5eYdfyd~5&5xp9 z#ghe~I!Ed&A@W`#@q6mfq^rfl`YATWjaelx-wkF}yHb6pgCr6a{>3C5O}uVn17|r) znx14$ASD=0GTkIcvrM3#FJ6`Y>NbJ{6)dLEZ+i&eB-NeW^irf-#MBbYiz|<%dOr@C zzYUDYNN&kuZn6kkHqGy&XH>2S^JmwUd*rB1g(e+L;dwy|j?##^8DklZf@Kasx`wE1 z0~zr0$>}+~qSWYitA#1r;5Tv(+l zbJcg`p4TZIPMLu_wGz#=Ynflg(tF@#`4152o{T7@!(%){7YRbHXbjXq@CFYI_UARc z&JBW!RmbmQ7qnku6%ckd)_mQ12dT{yCo}W&-q2txd$h=L-#IbzKex5Kj=Xw0C47^Y zbdZugKq_cDDJ+@(Mbu5eoaa3(sBQ75?QT&2;4;T{2zO&EI&@0n`2LkJ;Tq+Gqrt67 z#OtwBPxwpqsz!FWBT=?#h#d<-wFOpZTLnWLkK}^@5h>S{N|K?5bLsddi5*>?$T42h_HI-|NX+2>xpr@QH=#Qa~tIzqK z*v`!F{oAyLa~k;jq)glGSS{Qsh4A~?Xc3kw@iyEAaj)cWS{h}>5l(@b_QKf;P})}T zsvxy&&Fn(;W0M%Nv5Y-sZ|1>#hE_d?i7ayDS0V^djqKry{om4ImN6W^J2Lmk8Cwv7gkPFO#F4F<;z%xX|JsCHgl>^<>N3DEXHp zt?%gADUbS2rPq4Nuz&Oim6u%ocYrb>7m0=Co+m4vq8<5CyM(l<;xUVZilaJ%mqVvx z2R5^_B`H-w^~|L+GdovXD@Ih8NC1LOnlKVuL@%l;rYOriz*7khk zMzAce`N4NDXgXz|(M9QX5U*^BvAW@gm-0!zCZM!}fNx+fw^L0OQtq*c8vlNUDLW8*sGyAM)7PxYk^*L_^|xfY@c*0S@muXTK83C!AG6nsO?f1j8^#)1 z79Vus<(DzJfm_zT8@{g61IPtQiGddEm%qPrDTQjha$)Udxw--T*DL#OJ|Uon-6-Ey zwhY0aIfp~4h*dAB75tn~4DWzNIPzevBrZ74Z-w7>lXnx{50nC!vN=Q~=}V_g_O(jo z{dv%*n~J1G9ic{`0b6Z_QQ-B1DWjPvapj{0(t^pcZuaJ`6TiEYTgI{D1aoZg3@kxC zAxQV$*Ps-a-Bur-*M3jG$|t9E?zTZ0xBHGau#LKaz|9jA!9Yg7Fq?2i8UYMAK`Uch z?amnD1sOwn3%D*Er5;~7pDk^4Ax=NSED6dHyxopsRMU=J4J$E90xW&!$rN48O?HY{ zy+G=Xhifg5kl}9Gx;fvt_N}iB3wFP}{Q}n(7HuPkQj}#BTKXPZRRfaB?zUBJF zdI`UI0*wfYl^krD_&%>mGph6u5+3K6w4fZk+wM~1K$e(r`C3`5>m^%Z5mru3*;CId zPu8LJ#aSlq_@MP}TR}n$FgOb#DLZRbffL8lURLE{eM6N$9q5*N$1HF~-Z))otE;c@ zr1UPS#n7Y5<{>$7OMEh&4b@$7=ox_oFji2-<0b3Iv4uAw75?m#%~I#F!gc*uvGWc< zf;x@`YMsa(lYcdV`&U2jL4)-9GOz)W=?PdSn0d)VL8>K|7KzL73~T#=K(7s0UtlXL zuzF#@bZg^$##SFWkFeXOqxRpQAR@KGeROZhHw!pxJ6(zt3Rk3LzoEn(dv`gCOm6*| z<29${pzdknb`sqPRpJS!8=dp~bp-uciifOg6cRl5`Q5MDs-YwW8;@JsviC$iG=00K zFd8rHrP>{%tdmXbU@&lQplXin&qF7*O>xl ze3Sg0LbF#w1!`z&{{fkY(-%67%Udl~TP0k*ybX74!o>jOBEUR65W#{8RC$?)4#G%w ztCDjg9MH(Ua}EBo`w1$_t&PFfUAT4+6GMkA7T%=gbUBJnfqOY26j~gB8e48<^9L$K z{c{aGus0?D2gO_9AMECdfY=2U?mOYs%R~w+S!O+7jv1=?B4p!? z(sZ)gAA!wwvJXg&COf*?aebyNgHU0XJ~?Wlc1XS`Q6Z_xJ#TheoHg}EZ7TO^ON0(a zJIpmjg_pobHgZ-7VJtP%)OWx31ssrc<@p8O9}PjmZ2xpPQ$D=PXO)#Ck;jrs=TrtH z)C43z<|dY^;oH_mE{DegR%J@;U`|_kPsh?qtqRHB{NIx8z@6zHSp)tyUww(9lEqXO zPoW3YS22qxynUx*Q+vz-$Epo(PuPDl7KFv7NFi=^a$sw3k<<0whhu|W&2073Qy#U!BkeF6n6$n(3o zK+tl6ag%;OQC~w?pKf)Mqa8vie2k@vey&E6LKwTOg+%^sN80HWdH!XT8z$qK_%6_| z=8EOXRBpqtmLOJ&I;%nEu`PTd?JOv9Zb>M$WR*?^js+mOmZY;p7>xlfcFh)+c-#WP zSC`?HEh9hdqXjatGfZ{;g^P3mxl#tnJeCD8ncv=0oo{lGSEjixow$*5;;Xb>Ni^9R ztFdia#F)3&bR7EBd6Rgg^#%Phuqk0q?nNx@bi3s$tUQcA zec4NnYM+z&5{|`tsEzItw`}XH3%`Oe;HxK9FJ`%_a#w17g9%#_Vkn?BZoeh<&p82n zs~P#D?sVpip*D?*?-ITS;kQn@$FbTOyj2FQn|6Fyih7)ruBd^-PX=m5H%)j~ZEjUr z&GE6nei6?roZ)68_D`=x5sQX_tTNG;mL8@;K}|mh!8bJ=9C}G?e0XBznQflZSGL7- z{9wM(eR9}^a_RI&^U3?4G{mt8jd#DDGN0{6E!?bI;v}W=;gXw$pu_FL33iCs^c?H1 z#`#&~JDoccF$F!$#a~i7hI{7kjc;ow1~lYr_cu=O0mOp{2VMn(Ye(|Kr-Ek;+M!*u z|5eYw;QL+8UjDjoo8|8lZ0CN&SXw@_{rKUZ$_t|ZG7K^VWWYj)h!E&@xHajA*I#L* z0%4i1xJjx1q-$F@y8~S6S{0VLL0$E z>v%dlqAz4A^*vGl4HcS{(|V0k+wB{SGzwKVRy8tm2($V!N>}rJ(279L8w%ALCvV|a z)1+zBr!RKDW7ywEH+ULlr`(>_vO)!vW>)7SxizyrjAkbltxf+dFsrNP2>Py=W{`iK zb0qzVL8Sy>Af)o6*98LvkfXw2!kN_}#F+xh*C4=c3g;$}=GmUd=iz8{FsXNwy7)lu z+c1fZAzW)Dz$(X>vYqT*L<2t_srsvcVZ;{l`5Log$L{qX*6^^8yn`WfUjGizs@&qg z*Kqudd2JwGdg!VV2E<7N%66o}hBsUL!<%k!6a;Ag_&WG&SmDYfb5nrmFZGk z{U}0-i2La~XV>SeOZ=)P_0qKlKHszcMCeoliOnVsY()j<&;mb_-GOM2Ka%|(N~O7h zoS@}!w7y?kU_Zgc=;Om~0MNeh4ON2R6s!2XBb)8QKfO!tBY~3S)y<-~92GT?w2yxw zHmW&U#{(3jnR25x11SmGZ+qv2b=m?io%^4=b6RDox4#ozCr$=t?IHE%S~dnFg8_~H zwi%)?2EL7L&lB9y&`-7nss;X94&3!8=Heu}xbeeh$Uf_ADd}{8af9TszL?u!NIO6S zK-{;lRLj{l6`;lEQtNffoD=e&$^vnMt9qF;rFmj1567~m>dZ<&7OVULi)G|xDN|zP z&R04g3AJ#WmNL~D8nKmJRusbB`=fM1!ZQrAeJ8op=vAJ~d%JM%8ym|=x#edZTK@J! z*{0D2ia6;#ck_G|^B?*qr6N+2jd{ta@_j&GlW0R#Dx9>L$li56gizPwJ4jT^webM4 zq{=n3^CeDj2{3_e$<3-liVZM^07^d&dlC&$q^%dn`jcphu{{U5btCYMZS3?NxHum} zg*5f^jHr^qAlIn2zut}js-XW?o{rLWL++Rg{&9tymQt4Q4&3;nRQ8NL5PV{ied>MU zaP7^YOT1Ywz8aA_F;C@`nCvWkxg<*0#@|g@21@qX`Bd;qTAcH6j!ZE=U1REvHb@u= z&1C%LGk;2sGRTo=uN{LkzIwF!4L{zUPk2(a*pS|%2JhL|Ks!E}_wty z+a0VPe^vNa{Pzt}y_CwY>`j+1GGj1BcHC=vRXTj#z$s(Yc77u=fIdo5Pq4hdw?2}4 zP|?@3rd*oQm}d^y?enZO88(-O6*VN-h?|L;8;pLdR=f>h>BlAx^H^( zOSorWiTtZlIJ^;3hPR5E%ul^Lt}Wy3tYK8h4&jlJ3Xvr@8RI2p4*vzWWt5@=F;=zmK?o*W8sj(1us9cO8Q{}vTvs08x-SNJA>~NY=XjZSf>JQoeb9wU0oe)y4vCi&x$4+;F zV9I*`N|@1yE+J{(+uc|+>o*}?)>?I2_8dPY5f|yMo9>s6PS3}>Xyo9&?v1urTQXh5 zIYcZP6*mD6*O!{Vu)+{{L5!_hq3?IOP0C1)YV9y^_KVA#Rh6j6{Zt(udcGAQwr z?(%Uw+f^kFr5QCn-jXE2@}CFFAEjMBZjonqPK!jFOw05+R5D;}W{0U`!zN?Lr1j~4gJC{tNqs$0_F&Sp(lE=O3 zK@3qgP*zS>%NAcZPCC|Q^JhKK7@%V7SbNH3nDi{xNG|b6!<%b^$nPg5%Uvh~h2>>5 zQ{axqBe){HZcU^8^tMm7f5sSTp0Cr@Hbp1pJnGl3Z&kWv+zHp|CQnk6Us8lO8t6manyn;Txi^ z)0VzE-nVER+f+`y8Lm2sY{)it+`rbMWl>jyp9qiwcb?uQs5G=0^vR44C~1)w;Xf-( z3ub34%?LipxjC8#P()__p0RMxbPo^uwes3nMpB7nf8R7fBA~k78jBf4g+^T_1DbVY zC&*4%k*6x0$7MHXaiedF;1-I?@%#_jA6wr%OxnH_k~_0mrv_^3GS7Qe0p!XSIpmS+DFmmcmX+sy;;*KN| z0!|dcJ69JL=7iZjlZaJ)+M&^tp94ixLj z{ZBt!SvUdJm}Q+N4(QZ4F#%P4euUpY;|lNNPA8EiApDH zxLWyT0kaTN1H>WZm)VTwbl;5p`HDWfDQu`h0Sk4%WHH%S8;r1zo`P}{Mjfw{te_Pd z=Zxy{FptYzt!diNL(7@(0S&KheNT{F)b@+~jg(c9J@Cuiie>}UZs%gcz3 zudZ=B$# zJSf?P_s5?m{l9~lw?==|2z*RAc>Qfyd_iFvm3xO|pA(md$Z?K}Qa+?|yKc#t=7tSq zi53v`A=?XCHrqo=^eK%5n^_A4P?+)7ymAp#`P^0C9k-MtLh7CDrY>Lf{n0$rp%8nGVJ4HkBe*Y`(pJIaUlAgc!{ z!svLUnt@qv>0T)j$Obmb(LXm)i|2w`k^2qD55uoh+Ile;=$149Rc_pgu0@-oEOfWs z2nRz2gKEXHbC#ey2T#KCxxI@UlRS=|wQ6Q(RM^|TbE^c~I)Qr}nX83=Z!IoC!`pZd z+#`aUenV?#PKwQaMVxx6 z0>YTXSh|(Jcrsa51FCXzW9?^-LrcvZ8Bf)JI`{rZ}D(~~Bj?{MkP%lIG#fGoCVxa!c~UKBL5#>=iAK~`fx z?|ZYHF^qV3Inj*P+UQdwOnYqSG6Fa4f=dxymsWE8SbnBjj_!@IgMo#sk&8{>%k;@n;tzXN^}^v=*2K_<52qVlq1rEwGw zrU{@^`3%VifCk!nj~!?HLUh!2E^F-YP9i-TvgNYPbNT_@RX3cDHv`t{GhL0i6EOx! z@D<$CR;O!;E4#up8PncUS{n5x%-D4tJ5v~U6tj}y!WtZG2KLYlLU>=CM=yWKdJfrw zk2(jX-LAiP<;r9D#^6yQTWz1SySAa2W?Hv-($D2vcoT%`p`hzPK%vSeIs$CmqunO) zCz<@s&9+qW$9R`>Wiy z^ZK+F}LqnNa8 zaw}X&yhZ!z^SvUw{LHd34+`p555(5Ug3vO$-~1?Ng>PO-u4{J^mH7R>y4?qj@kHNl zXVm;NB(Ga&rZg}hzoBH9?;*~;PNG+s`BWlY8cW!7;-m%JjbbBSt&qo_PIy7(K8@{o zZE?uNqb-;9Q-_m9Q(O)Be5$ED_l=j2Y)x;z4AA7LZzIzJ{7{2eQTL=KeS# z!#8K(2=h*qDwMC-%xe~r0GseC!u>9L3kiO8hbtW{@=+w=Z|AW0mujWtSVNp@y2Gy4 z#AsMVdl&;Pz?p%*z%|dxbchxNTi6k)Z_W6=%dEoeS@{H?fg(J5L3DM{y>EKvV>e2* z-W?)A0S+qKk!HxS7SGavL-!#P^2kqW!d1%J5`H@j1Q9 zfbBgzwCw!KKcC<2R8~^?ee$J-@}B_nf#*9m#PeKP^oeGf4)AnH8NAUgnB)|*A9X8I z``5x%xo_K?L?K|_i1WO*X8OH{cnt&XE>XE{PuO-EsECO z+S;*Od)}pJs37((Y9wl}*mu>aeHWp2HDZSvvByn}q9`$HORQRzP>~Y)*F(E{+K+h-NR}td>JhHa_T<`UvL9aS0V?_u5#Z)dG)UUM z=3=^4(#mpLLp@P+(4R3hd()aN($V(=?(rT+ucT;7Jskk4m*tNH8qL;7*s|ipHCVL1 z8RCW$DKZ4B|8gvCjXIy=nBK-Py$*^JnY}6EMAnOB`e?TsZc+VZXmx2a8DsR1tkm_f z2f}|#dJ!a_?QPU78lSZ-8)landpUZK?}p5)cdfK8?wns_y(FkBz_AsHZ_}MHdAjPF z{1UkZdp7ROtg_#X+H{IcsTo%`#Tag_7OO+k4VlFX{2!Wk6kog-I#;*3t7AHn=jDS0 z1+2P)YfSVxRFGy`s8wzmJ@|7(+gL((TY?@&M;)dS=5!Li1T4ynYtQc7vSJYxJ+jPx zIEiT7N|Ztbm!lNEQr$c`brT}JJdr6`E-ziWF^4V<`r&nBMpLr6pLvaC(CdROt{Ds7 zz2gx*G5Ta%qK#{K#I4mS52A#E+a#s zMu@Qbmgqk5eU#J@T=bR66<3m^B)62Ny++((bh1&f#aDZ~pRev)=?s-M{Z`&*Y@3*>#Neln_L(>Y~@RL^X z;12AY3fww#*)vdh7*;X5>&~d}^)6XF!<6vL`zEk2@)!7=EpjA)mmE6UYI$@77 zA@WO{ua3P@-^5QoWv(aMl*(-Q8PmGRe&`x1m$u+l!BVY0QuK78o2R(giGDG{DrY`z zUOr6No80>DVJadQ+kb50|JGs;q&Z#D9O8}5MtN#edQPVy5t-Y-E0bkI$rGUb*GZxD zuM-Pn%rUtiIcZ+f+=|9>QoEOT2DRmYV#rsyUIL8y5o*6z4}Z6IujMhAlpT63?C)NN zN-ZopIxb@%uHOEkp?>?k)Eun($>>3}dAjm!(FYP;*=7(D@Gp|fyh^P99td2xiQq(b zW+Oj2{G6}+tx;o=9GG1q>B_n#veKMt*%)4iTGN>qBn)M&+j-VgJOyXff$E0Rx$8?| zV@tNax5qk&3a2%2O)H@vIV?#7ORh8ZQmZ^D1xmh3(d)(LO1IVo#=>?vl|sa;#aV2h zwiEAaNpEGlpg{D!N+c~e-cSDc+_WmizbYwn8~GMQOd}No{1^1?zP&XIXoi9cz;Dkx zNx;h{O5lZRVmklpa)p4IOn<=bYg!+-o1DNqp~O%f?)~_fT^<1Vy=xO z>AYvHIqayg(3q+?0Doz{6^{_8AHGtCu=c5^Wn<@64Vf0S~NGklx9DBt4azkx+>r-Kprm!gG%|XonLh` zR{I)i?e{FkU`oCixqJTavLCmDgEfyzITv z$30{5hH1+wYUT8CH;PnRZ5IaB`AIW;VN89M`az4Ap#bF9u3m}VxJbLqpy(4?`=|gK zp`4h+i`O9xk;j0}6u6ovr|e|KNjTnR2we8@F;21`!C zM90?a3`Dr^p||!BU+Z4Ef~kD#w@;kCAv_n_L$A_>udquThg^Sghv_-#fnyF%xp#Ug z?G-A~dp;L>PdbV_ur*vtQ0YH3gN_fjf3Q07nyED6J)MpklllLNZxu0E$btj+i8z~9WGi4sk$GATkjqDQSNo=(#ysjA<$<&#_ zA^zoa7|)=N3_{hU{>w5_L2R+4c{90tvz-lO5j2}Q+qt$2%Sd^WE(rtV%{@}i!)eq) z7MWAAH3v~;n}{)vLt$ND*-^-9@t*w<95+Abd$685?&T2`#hypn6@+-#`qnu(w*ETy1(BZqw8|{IavBBpkC%CkFT@#`6{@Th;{MuVQ)0Ajz+IKIuIbz_A#6p0baW(#))7FLM&+4`^ginJQ?)F* zB7N}XKB!yO9&J|@|FO!kFcTipOE8&S)LIW6r23e};$)3=YOrj$8dmX)=>EPMlA@J> z=92)WZx}Rn^mgYDop1L`L`3A8)p$<#v-i7obl5pbp`--^`Pm4q%zkJ0UItQp?qkP@ zoT|-Uqs0I?bUHpfd)F+@K(2bvpzzfXE2D_#9YL3$&Tv9OQ4b^a)-~nUBbVL=)D9`9 zp4`Y=Ct5$B`_Dzpd3UxCTyI-jOQ-Op)z}7sE`Zt-zVoY6JMQYBTc+df;>w51Ll|DasWZ;Bh2+Kt*rd z%p)caFaUUt7JY4refa>jgqgy|%Q-QlSSm7a~`aYxn=qcrdX=O5_h?wC+)Wfk>Fu zKrd|&14u0l&BO=`*k#cnmjMnxeubqVD}5)hoWid$o{Yf{No$ zI5$euEhMJWjJ=IHB&2Q84tvh$f#Oa}`Z-#i(b!_AuJYW?HG|?C>&2{teiK@W63zk3 zOI(RLw*@dWGU8VMt>ZW1Ce|cvO94Jw3+NSS(gv$vJ%e$xvPDR;1xXF(_()7ghTpL6j{0}|s_{pSj`ibQhw5PQDX-PTlJ*R?2hl2TRK zIA3iekZ-otm&?_H_ZBa6Zf_cjKR7t12DezFv^r7W;J}ih>WlatgOIsv_ykYEBvoU3 zc;XuuORNgBw!(&dxj*nqvf+0}hHqUWO(oj4y{}3HestJ) z%M9|XPWk+jaE*XYtt|J2`bu*AyPM@8j^@y`ubjJb-+^Zr=sq4QqZl(deL8(i=@vWuMUnzXNn7jfWLP)+bJ_V~ z)GgDi#`6%_XI&8jMql3Mou@UsuP%fHaK`%>!14o14_&TiX^od_3$SMa-Wtx%QQdgomy<9uh8LQ%gQC|#4k9#Nz50ln*`P7GS>r2KkmsF*ghGW>H zum4D?qA<*;dwa3h#1NU*=id8}LfBhERhvUe)0Dr-?9vagk`+20mG-dfF?3Fl7Nz-~ zyTpWEM`^{BvK52SR6qq?vh?B@-Zm-^HCKIRtoMG$)l z>d@ajqp*8i(PmXf55(~M1`9BG_K3tRYz&EeM-iy8rhqQnY{mREYSzk_(1P^KQ3U$d z*f=2jm-Mb+-oninNz!$7b;xv;evmmt=H<)^RjhyvjE2Ou!p1B{>QP7EPN2~w-$e&C zO?`gzg4MaHweDv0QIU20jsaeGTW?{jyEe^ohmki zE3Nvqk#zp?h&!`X;A4fO+*vDdP&c64I}EsB6KJ^JBxYHWUg$LunCd2KAPtzRP>D#E z-qi|IhyX4Ej+;^ZUfP6;q)3li+aH>2-%h1sY&xYjA&U;Rt)Y@tSB+NptE|0oW*uHh zseVuSU*$jh+qTpH`&a3|QX7;iwhn&=Y+K(&`z1vK7Y!)V% z=_=diEAAlt=HYCo6!XdmniI9C6lqM@zUb@7ASt~IHj)bdaKFF|8&vS&)N-1i6(TJa zOuwW}67X(GqhGOIm<&^BSzyP3Ev(nZ``v#Le_i&lFgaR>#n7SM4%i}^5dia@i+Nfl z&xtbeAuIc|p`RLUsjP%kKH8a2`$Lc620@$E9qQE}1H{{{?NnEh4K84vji@`i-lO*W zZs0(N0($HGnZcuM#gUjG4Bh!#OhHOPkZ1s8l-Tb|^CT=o9+fV5J89_YWk@%#JP$Zq zyeGyDsD|b;&Y?q~i`QB1qo>ZyHS7?QpWp#IdS5aX4>7Zge-Rh+M zxrLAeuW*F5;-9rTiV@wYy;S2nx%4JgiYJ2Eenj^8a3BOC zawOm9dx!sd`h&mk-L3V9-*ja=HA#JVXNr{WBWv0XJh8|`x0kPViyKTFds!A`)NfXh}6P=MqgcFVh9dVY9v`g_hJ3e{YhY9qo&@6H)^7GV)?hw81&x)p!MXv~;Ms1AN z8Uajo42%y=sX;mw@*9yRqOXG{BUu-*w_`?*xX>UgfoE87y>GXZSGPy!ZDt-7ZIleH zs<2z-&Ykfq5_!RU_jIeE;W3Hckt!b@`53j{2L!Afwi@qmN9+OAq|Wv)BQwVKGGqTY zU?(MY4Tx7@W$k&YuSgbhV6nXRodMTtZ$~+joY;dtk*Z+fy7#_Xk9Z2muK<0|A8;Hg zlrXKWtT;J%s;0JDwLV!{9=Yu0{++dKfPHac_RQSjSWR)(1fgv5*DV^&zAmlGHJe@1 zDqpXX(pd<}5=YT{mk?2vdFQRllwb9$;N{_;sl_wbNJ@Q9OHT%3XyuRCC{GBd+YMfX zjRD&@jzx10+v=|!dffYc9~K+@GfJp*KB%Mg3Ipw%v3zl*(zZzCHVk=S)P*2W|aRsPOLz zgHO6u%K4mi*DPYmc46^ST_gd+6ci|)O-yXAZz{%e*wiu`msse^q3PhH$frEvhu#8C zjLd8q^LEmjaio;A24dW;+hRQ3l=HMaKt0k$kjaHW#ZOfm!ra-rvqll>FFa2a^cNK} z@Xun818WxT3e19TKouhlQoMD9r3pnYOn$XT_vr*7rU>(7YkZp9Ns$mCxZ;qHPt2nG zvQ7YB_B$uj|E+0<&z|&8aBA6{FP+5}?=TZ^$~r#Mf!^-BtMrCLz=E>4IS9lcZDY7% zz?|y(MKM5M^hE12nsPB;9%kB@yt`jP(aL?l??hYP6?4z_`%;&oG$O(oniMpR>>k>k z(?};uu!@P?9DVASNT(Y)%sd_2uliHk6f=YbRtoK~jYSM978v!FXBnJ#qIwYV(2?zI z+4q^L4e&~nw*{FOF@-_tB+wJI1Xm+OJ{Z6Fl86HK(he@%IDlCwoW-RxiMiis7d3?lrFj3DZO4YZ*7g{6Vcrv zYEDV3Y_mV@FcYLRMay&HF=(JY=<~vw-b^Hh*^T6(YL%aVbycr# z?v7^51{8&X${rdt^YT*LqJAd1KR2svMs#DWomhL_d%vfUf`}na7iO>>`wp^|Z>1OW zo)x#bqwtIrMHEHuG(&fJW#M9IY;^qtYsfVg8HcKgB&WoKx}P^&vi4d?vQo&w0j+rF zCiOow${6fO<#dA5g4vdZn_gDEKGSVh`0H1P2ZUcMpDJuWC2yPmE_s~thvsQhF+E}O z?Gtq?zHR0FJh}nA1N4I}?BH1d#of)eNMGsANR{~5{fvP+=yYi;LS#4y02XimK)pnWIeD~Zj$^EZ~ zChRA^^YPNa`A}I-8p$DK=WFLT_jC1{fBZk}Xt~n5M58#=$K)Uw$+2nsX@u_h(+#;~ zaio!FA!6L1(Ay^3X(;CT*Vae>%?!@ASjD42{CSc*tc|d^TPG{X~W2 zP7-9UiY}1ES*r_*yxHra@r+u~)K@d<3S$?hDmjQn*z@&m-~; zM?x`TW4~sFt1eh#?FJ?2oBR@dhT?|vDsrnoRr??iR8oK5vDtH0x z=l0hD%Y1a^vL}dm)63o5v3%cXk$2UZu1(772g_B?4^LIYcPHsbJ6mJC#j!qTnH2&;y;S*%*tye{fr+f9 zrbMlOJ{mAglFQ8YHZ>VIo*IRmcy1YO&B&5F{Gty4u3olMqu|`Em_FTJ&yoagr@l3I zn8WFQ&HfratObh+*o|9WhH`^?MdN=m({f44gf1^a6{o+D>ixqYca@|xmXm@>!O5CE z_ecHFfxH?PKwT>YV5%rH-oT)7+ba7tl0zVTD$BpwqCkm=NPEmHdUsn{+-1+A*y)2= zpTS#F7AkRY?1u1Pvw$vag(GuT`3|_yRTG+-1_D`75I>3~W+KI_b*mvtPx>AicHTE2 zG*!1)ZR-j1(eQBol=!mA%=EK8;WpC;XJleM>qmV<-Ml1k|LY)Mj=;^GfN#@kaq>l_=jvZN0x z_yasIiDNF@?X>QFurlCIZyUB}ZXxC|MCmW5WaM3UhYV|Rcja?)7OHYn4VFD+wpF$8 zXRUC&7rGTxYV}?o#o0WGZQ!hB4~DA`Zsth~vj40|Mi_M84PuF56iJ|G(Yb9|9bT*Z zLa7y=U$|YCNTDYWZj>zS;43h_i!3<3=3b^N0EM6Ep1Wa83(X0bXfUpV%2Giknd}N_nKPG7b=-IDb?+rNYDr8dzsj5i1 z3eDF2(jUM#QW$JmDp%BnaO_BJ1tgRh^|E@j8K=+)m1YPS(USu9o~B$TX+hT(ny%;{ zUNFLZ@gszicy+z}ZscTKk5r`0{K2o4@Ex4h;N_DSXsW4{f+6>&|LU)7C22k)M7Q%x z`%+|TeuU>;D1JP%wEQsfq*P5*xS~@+`9$}(uSb*d_!C@%JRe=v;b3pvXI5!M@}N--sLZy)NMvuKNO{!j2TU*yhDd9Is>}Sh@M_=HKQeO= zFFa|GK!11hBk}i;ly+d>Iz$OJWJ2}WqQ@BYx*`3Ae`r3g{j)|ekXfkjcVulPn-aC` zyNFgPR}Yan4MeqJ?QJOz+gXYVF3RcIoG<0}deVxIH02>q%FHgqpmpA-IU$DKtHX6= zVZ2g@VK%MjJvk%>Kg{gnpCUIxAoSrL|Do~H7a#i_)lJ7nWcB)1@xc`V!*Hb_4J?GU z6>?|A<~H+@;(BG&7LLFE8(tQiRRZ&911zzC=)txTa3JkpGC`LPfT{D@+LTL3eA!(L ze!Sd>jAWp*?r1I}l1CLh?pi)HDdN@SIdQt83ti7x7+%-UKv4tLaK}9Ys?vVZTp)=5=+#&a^)8Km@w*P#4I{YSYoGZ>1Jyex=~X&C)~zMN(6&QGi); zm&-I5B9h;sC4(7eFyo?YJGDhIMu&ecUu&+d4>fqw+p)dUp4(NAZ1&)~(7yUk3co7# z#tB@5i2|vAJ<4Mb>?dqc8@@G9TI$TMt93D(^mvS#Sv2C`)@x3Ao}lZIym*X<)Z3lZ zYCyw8=Y;hI-cgN$7X^dv->ZOAW#^b1Pe%sraHQ#gGq8yddunvAfUQk`Dacw<(k(~;m(j*qvI9eQ*xHiD2Q(KEWjYt7l*)mOP#)&7nw$<6j}JX%rKlzCPh!FtzZB~ zywfAn>EnVDpGrQwkEj23&C$pJE&;LtOjrPnR?P|mvP(i%dkh<=Je9TO@uhc$?j<+7 zvSu1K8tU*2DEiq!MIwaEvBA$D%{C9{pRn^7u20Nq`r5pj_Q~0K-j*Hr*ufgKbno6L zI@urptJMyS6N}zzdfy%;ntbl)Y$x(Wp|2(@>2L67IQt8CXTP9gOFAITXJ)aa?d=6Z z+-`^NbZVUZwGz_N-I#CPRM!}%-AgI|$e8%7o3MhcYe1#lFwt@Kl)q5)y{CsmOL@CD zrCt9+;~MsUj2+J36yqKAkv^i6K5$#Ip04e-#{YF0rV33S>X03CCH+m3a=Z4sqm3gh zeA~eolixQp9q~i*gT6=&)w?AHy(TsE-OZgsJR9`ES-QIhOFY!eE=?(x&g~(xmL?24 zZ~mbPwJc;w7hvJ^MA~NMHdIw_mkOO`D_p$(3r5W24S4PLT)V~0vQA5A@Io3&C;}PR zx*gY+mwi56jzTN9p?SeZofZX-m+QT6ie<jGSn&j{LeHBmSzxl>~nShT`gSOj1B z&RltGD@}8g4)npS_u{=ZDD%kcyv~0Ti2f9#*e`*pog!bC5IQ_I;4vaurf5H`I~@(Tl;r=XY(iuDLHeVDg4pUWvO9xg6Q8Yv-ksyP*@Y0bhkdMTJPPJY3zI z$a$H6^IRzB67Rl7 zVXec%u&Y*vv}}KLz_P7rJ!i*vX!59Xt!8e^h~>w{wCA2%jJ7HI(oU1a1#gut>&P9N z-=FKe=s%c-PhLv{9;njc?e@G5&B^uG==z)> z!!UG1k9>RUuGLY{Z`lPdwmL6R{A*#T#ftJ!(B@`^7wBGye}`qjS#3^!=kIzg;rf)) z56(3>1lTOzv(g~5t7<0S=ZWE~+@|e-mZ|8B*?KdoHGLQ)^%H@D=A)LAhiJL?wr%Rl zH1)hu=ACsEAqn1>_s>{wsp$`5!+b0f(EwIwkmjDBsnOGjx$M;=E0M+7FvPF?wWVcX zT8{)v$^agUR^o1~G94}J9>Z3I%pP)z4SU&0*kA0Bf~ZEhH6@VzyUYnX@~IVb_!ri? zr6Gn5)&mS`+e!p=^)?fMiH4asV${BO$) zuNlF04EVPKKnEtftaWW7#=R<=%ks_&wbu37{Ndb9@#3#ONNNJ$3VE)gs&xLPmS}ZM zW?DB&mnlGgxjS<@FcnEJcsOub+3PMq7Hv(q-PgOofl-w?6umHR$&*Qp^d_pR1(Yx~ z8+J-`qV&$a4Q-pVf%w4kJ+Ne2nWt)8xKWp>u_kK6=&_MP(0)CCxp4te!6VO~{ZXB9 z*2Jf(xc?l+xa^AMDh!Iac~R5BF6|F?3@j={O7-cjO7f!L8>W#3`gwaVZ3+9g;x{zq zD-w!16!Cv$KYqbd3iyz!8|kiKB>Bp3)(Kr@$n-9qJylTkL)SdRfrZLd5akuQ0N?vA z*FVyjJWhN^aUhRW(~mXb#$`3u;x)NoQAZ!s*YsPuVSV z%3*}nj6#C_RaQUc!H%+7v6*^}NGgu|-hh%Z#|KOE9hLd2#JE}5v^h>J%9YEOv)#b5 z)F58kQ)^4+9>wnK$qS1Yu6Tjdx9^0iBO+gkU)VQEmTjYA$24jM5OW#*~jmhx|PGcRTQeSh*y8J zKPrV?TCs44MPD=dL&>iVPV?sKfSgd(S2j zjgt<8j8whd`whpHch8u%$rYxVD#gN`$MP+`GibHx<2^kww;cL+Kg*=o@`)m%48}Lo zhH78=Qvp%oA5sl=njJunFBF970{v6n%yJ4JdiJS^WQRJH5ttaQ@Q$KiU?FLudR%iJ zaedlB*%hkFKnqfP0svITwv*6T{XIVm8t7k!-ClH>x-+vCG)FP4a?~o&7&tGks96IF z{cNZx2vnH;T5jH!^;kmVYu{=JzgPVG@AD@LR;uWzpOA?F?}HTsIN#=J_i}-+g;%$C zwbpk@1_0+>4yik47-zris_C*!Q)FTv4pJRd$~ibRvx_Z9cpl!ls9GE*=3e+*ebbbr z-Z{pD_h4^rrh`2xYIp}%-9+pN;&t#?s%cL}*J~e_=%Vc%_v%6U|1{LsTd> zx#GqHPV_SX=g7LOsKAP$zT|(;{{4^iqp!za{-2%n3btP?Ujxo9dQet8Z;?qMUQA~9 z_1KD&YRs}{7SZ`o8KV&WouGgh+dT{$Kiq8Kk#`-6A1B;kF{9;(wlnBf1tU4e5nZ#z z3Aa#JrR9c#-I8HSUa8o=A;l}oV4ig-)(I4;ohpx1!Y>sm z?$~?t*tbthrfQ#AuyZt7+vEkfa9FvB#LkcZPSy6v_)2py!Ki{u8=LjSJxuPeJ~6^D z)_^VC5xv5iZYsy8TgJJD-w$%^K8!Kh@m-dr=WwSa*QcDL!kl+iOK!K+ecZ(cqBjmj z3iBgdo3u=0)-#+4=DkV11Vfp{#1~}vC!Rkv%#{1YlU+^L%Ti7DvSW?jn@+(JQf)D*5JpFH)4{l4c_52Gt19zwC`!FY3`Cn-V$)9XZH}sH+)%8EU({ zTMci8$%u8jF69#Th|rtFtoBabn}{8}_al6$lYqfkn(9gw*RTJU{8f^4j+`f@=at+1 zcw*}aE5K+nr}V4Bt0gs5`bOoi+AZa)M$!4H566YMM#14qiV|mfdsBcxqJiT=b1RZFMd$<-PSDx&?2ipwvnPzeu=#4h!K==Z2+%oKuQCZW*-=6=~YS!pw`mnIFBY+=8LG z22X}9w7ytz75`U>Pq z+4YA-0$jEPeDL|yy;3C-T@c;l_L<^p3+`m#al2lA=M}@C3(;l{P*!!K+^&_hdq*jF zQpz0M@-H~6Bc!V+W1^RpV(G-HN3v42Ed495o9GRxlPc{NPEcd+TgeU1w8++gsci+4OFos(&yjHPdeMnz^m%HMIlJt zk;tYCy_)rQN8#J|tkU}O*QTN8!*OUSZTzmhz7n9q%)yrgC3~;LXErQxLN~7q6 zq~N{fUL`wND!YDe$;<6eZ+Zk#Z0UeEJsu*)c-ud7<&=4FTkZe3js>pU5RIV~<0A zP?F;cg}H`dorqJzE82PD#26;#J{~J?{Zle)(2|4wF{XNXuy%1=Qm(mt5kIkr)qQNl zbaWFOh7w)a$$s`m)O(Eq9|BAqKYs37t&OxusA0cMdyd;P&4Q?z7fI>^d~?plS~-C$ z$0byXrGC2n*T>PK>GZdg`%P@9`Fc!! z@8l{mBx5!%>HE)lYw6o$%;pcV zo@PG+QlI%RYr$QhbJ;`~r!&rwLp*RclLWn2W$9mGWDwYda0s9}%OvAsMkk4Z@7xPc z+(Z$&cshB4N}4_9e$rUwbdCUnfo$!*i`chPtNTgWp42ZN)o-{omKhsYkkMGhc5ZRO zL1m7jv^+Z%=FmsX(BkXgjwCnR+jIISR?jbkZ`>4_n;y0M@0*y>SoprA{v`UnYdWm_ z?(kMyVoHs31*ffYBCrkM1G-ljRzImE5Z0{{)SVBS(}EDN|522f`>m_V$?Xo@-$+`xM?tl6#TNrD1wlcoNaUAwSKfPNurJmVuK>J=G3F`tg1Z?QrU8=`&XjR zsU{us{=DBXvwk_*OE*}NR3GZk{MrzPWibGI4W{cR_pq0%DdS(fkZpD;W%L*WWs-ub z23wYEET%^E4lgF%K20^98{g>f5g_ZrT>>M$g7-%YUClVsT4cDAtJv7Mm3bvVvcV#7 z1V~~Pj+8HZPqw(AqC)$0uVk;Vp{<%XzU|Chu~2TicU|bmb+J_g%lD%t{;^-Rxk+5@ z_GPw*6243=tFN+SCrWS&p^IbH!V?JBo5Lhc2EwK3)_`g0T_4S<9_Q4w&uvPu)>BV| zCyw)QY1=}y*U&y(J9~@DLFa^x{Yo6(`PpN}>+L9jBbyhp>%&LJ1Pb*ti8e*y%BdPa z+*&jGg=#U6Oje48MWhiOG=`S!1ws?ACH99i<^_KAgxqVNU7fgE$oKUAJ51&@A_4oT z#O#%yB$9xN@QPFin!a^jR?vE+-w6$2~^v^hIjCUYs`(`AI>0$aLKa0$#98@n* zK3-~e`3<~YTbY7kvARX)-yb+y(VUOgKPWwbR*gD!&yCtQSlVN!NiTjcwm~^z=0(6+ ze~6x}ebvatbNQpu3y0m&oU@Q#E5iJ638Oka^(^-B;%Dh0df7h1V|3ax=^aG8KH7Zh zn348gTs?P*J4|49i+vpV+okYXOXEi2=I<77U1!%+jPt{$B>VU(dMUM5q=IA!gNviYAA|li50lWEfCD7wfu$HWfuDUJ3oEzUQtM#oTYcymz8BiXk1a`nR+5 zv#u((sHQ3J-!)PI`%XOWs6Oi6vMr06nLfIT@@IF2`Mg9$e=^?oBl2-ya+IRF2^(}!4*Dn>iSQ-v4>?XFHeo6u)f)MP?ygRH)B~gN<4ZG z0VK26tak@Gwao^zyw%jFJ0 zV^5{46* zsSjT$3q7f@R0siYHM?>}JfrsZ0-=Sz)J>4SZwtk9{my7!Hn4q$i5n~aC#mOQ6G2UQ z*YO(|zn{>=E`mvnKeJ1HlNDGUGIp#;Sp=uPi@{!i<9@TfNjQX^8&}fV7@?=*NQQYO!nxn8360eUO??sv>nm0IEns0?{rER}O zb5JYtuvW{gxa^t2<+{C#(wV{^kA<*0m=UIW0wFC>g{S_B%#-HHAys1Y}U`tU?qE)w-m1) zkK*Pmnj-AN^5>4NedgTx_4B+~mWL90-X2|DmBHcko^t;)=OvF*KLX!(?MJwEj6c@M`Kmy!a@avr50?AQqtn zLOq`WL!Ne+1`D$Gwi)ScD8cdu*4c;X+jbO(kFmnBCe+ z{7zVQ-RuX-==Ybilv(3z@2WmvWc;@WjPLVmNiB8#o{@?Q-<@0YzpAjpzi49UpKZ%$ zF%RgladE0h2h}XOlY4EVFG$M-LFosc>aGwkDb|9Mn-J#(p(%MWOKP2~+vTxPP zO0z+C)|a~moxo{Kl!F=OcqX$MsWQrfR#phZ)@~^u2aHidi5%C8h$4_Ad?CKbieu;`Ivt z(0q*#%r9bx2jU_wC9J20GVs@@^wgiaaS^2pkJT4nm`NjU-i;JuUR05fNEtUcZ79e% zFjP+8e*O>5PBa#$b$%U2O-sYI z6tS;QNn&aJRtM`OLuG)Qx%Z zsZ{h?58Q8v~H_t^d#fTSFa0LFt}zJAM)3@+-D>{<61RW`#0k zR+icQ7*lY?4LGO7Rq^T5LkWCsOD?M%6%6XLb zyi?hNS~eM@s0NICiz()Z3;xQ`>x$u}m=R(IjCd>^%xs%xJ+S3%+B>fR#Wwo&ji24%hBY(k?i6__i-Yf@Q$EsYBs<+mvjs>I@g6Ve1 z-`4W@dJ?(x?xZkF9ph$Du3D~iixXR5hQU{x6+*|DY{bx#>XrRSz{sk^-8IGR&B^^% zTv17!=8Z@x)x-1xfrMXt27MGAkBYre(q1t~!uI{BsF!DE@5Uhc<|p?0t_owf(`Wiv zQ~PX&H%=>KAg*w>BslcAid(A_V-ZlVB+Tt2Yjky7o^F~vXVthM@PpARy{cbbOVXFb zD$B`{SgfMMQn0>pw|i#pt(T)q6^ozEb}XkCJ1iH>cza1~RWn=i#pBZw+?$v5+ftwLGzj z`@Cux`Qr}19Kb}tR(2I~^e_Sqo;b6;$ep(AH2R1VYrfK&_^eQ&`eE^VHC$p`e5S}T99xLbZO*O`*^vor zt-)GF2$k%3*JZ4i#Gcz*skYSInjGK@1U1dcYp7WgW)HVZN+F@dFN@JgywoG0gO7As zn&8Z@wA&_WAKPragQZ;N98^%R(QFz0c;!S6o`~me*1*vsU4vR@GcE_MH2@pDP+Vqx zqFW8PSSB_q)sga|m+kJS3@VP-KKhYdk@7@Ak-CCNZz!O7Wu_V({vM&_ACXzZo>d{k zJS&V1{()xDu_b4ORW45kyRz6XdvYUcJ;BGm0I|5y&qIgT8wYP1(%pIY5cqdgc#vk5 zDy!dj?jVSEQP@zC3O2b{fwSeHAfS0=bL~m@(&}%6#(@h1cn$ST9?j3*;ZpK4Le?}I zEQ&2iNC=Vyu4vgVxFZF~omvAjsU`P+IXuCKB(0D8>QDn`^5Zdj-NsC!$;=bp9s^3M zco;>lUQ}@ z-FdybCk|oI%z-XF1n97hg9}TQ4yIF4Ut?ZJ-BW*vE0!y{@1Mcuru_QkR_2DEio1T? z@HG5&`?ljyxsqH>a=+1~9p7m<+wr8E4h!8ct2qyqX|Va`Ronk81ogd?A;IQ+ukJxQ zB2673`O<~^{^f(rix864zs>BHA?MC55z2@+F0$`7O<7GJy|dM7)8fYc3Q24#2 zibkp|mKDJD3bMENltM+;)Ox!m6ju+fkVLD&*Gji0%7F%P;=>Huv1X;57Xa2h{e>x{ zF(cwjDVu;h!i}>mTdIMwOU97uh(DX^q2M1e_uUAq1$fSU4Q=cT2k;uOCw9Fd!XX0m z$WWr~F%Y&&|3TLHCmlh{6yvx2`4>y^jr}K|j`+i{qz11;lWcUa8?2id+)j!4K+Z@S zas_lr!;a6b2XMCXRrrVTD6U-qY|%1ki>(GSR3>@))|UTvE!lXO&W-2@_bT64jZB=# zKkAPiGoAih;E6mb1VCK6PWxCl(96f{Dy*vBj;X*cm^$d)t7GrQaBf(<(0H|)q*t~` z9cubzb!e*bVV0j7_^OS$CJy0BdR5z#4?T;Pb?UBjKC~1*){^GVi33YPRW9oYP))1BPw7QKeq~8FnJUa~5H7{t3f(f@xgu+N zY_`Lq4BD2vy9*n*ydj`E0Xxmt0?oi~Pn1p51&}(;yHUGGfMu=s4j7J0Sa!AM$h7|W zW^Wgt{4|Tb;<}Mn^&so!t#*@nlh^z&%RGws69g*xx6e~BAux!DY^0x9M~ z8)l3{3DhP9k_qKTthrgL)sT`Zs?T0Ev)Jf^ zQj>P7oC#GHNTk-+69=eh7ykP7dI6Z|b8_PPp@&}gH}@HeT+M#;wOQo!>797=nD9=* zS6e;|y_tk>2__`J#=f_Jx_tF+#6m_wyR^S;f)d~>RZJxa+`s$GkG#kEdNkV$oU6`S zAO6_q(HB2;(@a;{;LqS8H&|iF(-fHfGmRo3 z7L^n5vO?z7@={F>c(5a*7>2}dYB9qQ7~AF6j>JU#Tf=mlf`fdP+9?Mcy8~V8uZ{8z ztIvN5!OLQ|A(2Cp!~w3S7XU6F=Qt885dcei>ewRv*g||R_etbLzA0R6NLqFau1wX> zz}2<%ji$)@$Nz`2_x@+|fB(OADvHwDN{2mbub`zyqNo+bs;UvQMu-~etF;NOS^L!z zL5w2yDluyBJwxpkS`jO~^7-}ieqZ13b^QZp&hyN9dp?inaXcQ6dr@5ZKPh7OMMjfd z97l~&cJ%sVMn*6ZkaxL)1oXEt#yEK3w+5SeEg|T~aIgs}kFffqHlQ4>zmmWLZJ=HF z0w#oydp@om`Kf?@Cd~3m{a~7Rc!M&Q*?C=I_MIct0g2Yj$mWzTWtShNoO%YO zJ$i(2OO=hru>l4fnV;7ztk0w12tJHmVvE9ky&K9gS%UipM)901!dv>kCtXv1jlRuJ zOlwHk4kFVcR=Ct@FQ`eX=Z{F9`$M=iyL%FTHlnuVpGdJ1zuYS%X>qCQ({I(aqQ5Ky zyKquB<}N>F{Bs&-YeiB|b78;}3gp^$ZgaM@2U#X|Vr3&MwaqCQxd#wkM(VRX z_@uu)J-WWAQn(?0mPX0H``A|`GND@YsF;|tgFOJ3%ol?T=gbo^F-1`wT01a19XH;M zshGeEnKHq0N|rVLiPCHM3ke#K1UtMtHCrV3b8?AYug8q%M*XfUmLjx}u zN!k}z{!(d){-qMzbNfq`FnlxqGm1nF8sCL6k}SUYRoBM@OEcR!XHg3^{tK2r+kKv! z`wxg?>!_uASDUF6Ob7w*u{-CnnulVQ+P%c1TxvJoE!F@gRAXWXp zNCwqcN-eSUUVRgVSj#R&9G+1*$Lz{#kNnBpqqOA-pZf|B9hufYpTbvKRKAz!C$To75?AUNqi9;o&qt8w-%urpC3lBCpRVbiC&La z9C_v(;7=R#Z|ZBR>lsuB!CLqM$Ai~nySpo?-OsBNbg?;feF71?b3J0Uvtb6FdH_f& zT6OQT-l0LoE$S5&pGfhQe<%-;L)qQbcu(aV|5EkHUK!rXVV!c94RJP-r?Otihp^^m zVpv{D%6MZIehjDtepqZ@@M|ngzFI;0AbdMYgYO6T$;G30f2l4=h+h+Ff2sI}uYZQC zbR_k0-`PqK8`J%)buWO`i!bqK+hZh)CylfJL$jxRiBuf2S1MKv>30-32Ucch`G~0+ zOQ6a+y~amr@(|S$PBYXrEEpm?%Y-^8;rHIg( zBAQiyOPIK%=}6-B3>%Sk5J^q!hm*c?y}PJ+sQp?lh@z;=t>7nL4TsVg+ZU&Y6ibg2p20WOO{hbNU5v0*$`qJ5n-5JJ28X2c@ z>R*nW+mXl2?XYY=ylCNhM87H7);kychluDVH^N4Tj}2tozxGV67Ef2fPVjGb3-ECB zKtV_t99xEAv|sEHR$u%e5&(4O?{ztgdxvbv-F<6Fx9rpV=QrS})Pj;`D_3ZYvuske zDznxHLTo2d!n3YO**p$y$&AX-fzuqt%Lk&~{%kDm!Av?czrIBE(ZmgS_xf!l;9SvR zZT6XQ-${^R+g^B_{*D>SI3LVKyJvYebis@u)9$QF&IA~ZAsl(Mzw^{rN*UFP^az!L9SHdZ-<7dxj+19m+a-Om919P&WZk z$mmS43?dOng5ziwS0Yw=0{cdXI(x5j( zYnO|xfBWN|QVryrNG0#>ZRe-8uT;+a(_%Bic8u3OWk}hX&2ye7EhpwP&Ekl7{t+*S zF$pt|^bEZ@e)LLia&mBWcdx<)p`vjA3|hBFqB+aV-$~>r`5u_ zl2wS`UWib8$rk9aR?Z@%a5Ikl`D*N2A66Z~&yx^9Aea`dKAp@NFXmkN3J70Jw5f?M`6}MvqNT zB#$5KvRta&l;p3kcc((`u?J@cu$iJ{cpc2t>xi!%*%0b7NV1F&ecW~E`G{E`R3NGx zS5Y4<$P!p&(zlk1-xfF>%M;|MhU=WNlJZtmnWZ z2(t~(6`HxR!XJtNXWlfq6Qjh$=2gDYDm(GS*%L!pK|}5rEg%rh##Rh1$cdkvDxJvH zTbyOG+*UaA_)#}jUbc(o^>En|*#C62TXW6!!!ayaV&n0O~HdsJU-=8eDVFX$C# z@xi^BAexPpUEFi6ol$TpSUajc6|muk!fmf*8>H{Gnjysp@NXG zJln+Ig?R>lsq6(t_VL@MINS2uPQ#@J?#g(rfMD($U~6B(NK2h;Pc7Jm-NFVoShLCeZKB3AUmy|1o5bhyT{^U{ytXRfAf z5vQ75G~NNqJn^Wd0O(!I)1)^-JcG&7iX}^|tD1uGTpazYc8njw5$}TRwyTTHigauo z`y`!GE8>jR%@MD>W*oYdojYIuIR5W;xIS8J)X1E zC;aE)3spU=*G{FRPooLJ<{kIk>_zaxX2!Vj*tnHyV)0}^GPkP+8`wa)w&?O2o;nh~ zD-jSjD5VHWJ|sbscU~6bS&pITAqHLZaBEdawCIu9$7IP+i(tJoi9@z_uNxQI6J7wV zLoeK!Ir2g$1T~QVOsy*4GCxBiDd5c{TZVtMuY2g+x6Z)pwRHZo+Ie(?o}LOnzk#Wb zZrJ*5X);D8p)^?RtrDe^OiDo%lunZ2Le^JBG!MMdCm-Q5)kCmM6(~?q`l`c=ER84% zLxRSIyDWmm-$@`L?9i^`C*MmAOw2;dArhWGC)LhJcPVNj-ODrtrKR`LjtL-&ArJA0 z9~#CSsPWsvPizlUlS+4H{hLuPV_Q6rY?$@+G^X}nKqfIB7*ZJ{JJg(cn~k$r2LrdV zh!KY@W7<5V6<6kP3 z3mBe(9v{3RS>9fsqrzpblH(TF|AdtFTq^m=5zZmBNQ7i=;(0Idra{MRW3J7e#O3L2p}`5BFMq&N3MN; zsS;hT{Y%)0gylEo8Z=c)L1)+UGxS$4YkD4sufaFQyqxUcTKyb@#fGTAtT)9`u*It1 zRh(ZvRTN&%m<%i}dkvQmUrVIHe+Kp39f7j+aI%*e5M=E*OEEws~CD>wo{z1v?!IYDb-7Ao$|j_ z-*iweuDayD%DZ+C1igrZn98GzCiiQd0Z@0pJ!Yc9mBbM40yXPT3_kCb)#+B~H9Rc8 z-+lVMVUnd`wx;tiD}$7qz0XrbPWTFU>MP7qrQlVc zG9+%Z;dGA@LUNr6Yt`+}<+GM)Yp-;vH@h$HZV=C6iS{FEqQO^5d3mkT>dxv3wV|97 z7dmpt!lpy#cDv{n`dHJCZFX!;^tTi9&84TcFbhx$6m9Xf7c1Ol?v^K;*|4n3FL4e* zjxraZ;y^%LO2&D!sy0ffTIj+ET5eWbo;Q4%L>gLQoH-$Wzsv=&9rCtKsqx0HrnPTk zo9{wG7+h8iqjDI&r-<+VtMw+jn&uCwpN&l0n#1IKGnbf4ug@)G74p&W$j5N6jCD|o z9cWr)6SC4nh0m3ekNVFg^K7NUWPzI`6{JY}_sHOT+2p)XCj_)bndD1YC8m%hS1H5FIbzfZ-h(qkQO1G!9?tf$2#nPjpy+TRTJM-w+>N=x^v0) zkgOswax7NgYk&=vYf!V)r+G0?nf0_zYnqV+&z)Tml|zvSun;%kp-x9Lm*&WEU$X=p zvh?&&qS*uWO#Un7k4SYM`?q3Zqbc=@96GIFzGf?f?hF2WHcQhWM=#S^u}n*>Q8+t* zeQ01fkh5^)h7ie8GIq_tA_E2;M;ZHVt3ae0Lm-jZNM|lg!ER|8SpXhl z752M#I#@1PO^_xErNN2}nSrh-MET_@a416d3KCC+_X^^^!{>fEfq(qG z!NATe6US3eRP786E7kyG)0&dZN4G)SQ;R!pyeW!6+pVqsTr0&!5OH=WXu66aJHVS0 z@T6&N>9rQsZ|8t+t$!3iOG4aXUAKPyG6gjYfsC^1l^h0y`xZXf`lkHbEE)3WyEfAD z=v?S`Z%LN@t@GnICnwOZ-}_{q+=pY+OBTE5HrW$}pAFhz9%5YGAuX@V4uAG=kPC{y zU(H$_!Py2jHrbh#$8%nfq}YSC?+ZrZCi4bD?c5CBn&{~(t#Zwkw(P|YZ|(Pa zJe>Z#AjM>0y@A@jH7 zfS!91UmdP0TAJu5o+;$$30Z=ASW?=;K}k{5q6vd_N$P!1K-IL#C~fS@d=aICmzC2r z@%U!mkmyo|_j=W_&L8s#wfo)%A?DYut$ zrtl@W1X>Gu=|}=zS6m=Aak;N1gEie8=uv~H`^eI4g2)w@7cpf{(d>7Ty`#M8>2tT$ zIZLC@CV+j5Xkbr|W_qt0#?2-Wx;eC;#cBmW(`zT0Rw({7Mk-AqmHmo0Q&xVJ_a{x| zB~8@KIj^W++@mAYvK5nJJ7Uj;Li=ZNLn}kfZt{z_N#TdQ&$H8a%V8=VqZSn?Zx_=>#A7B_ z>_?!o?3?D3KIPb?R2lNCL$}TgZFOE=#yT$MjW4T*PkMg`@6ZWcA|c1DJb_M@#+hDo zwg!sxj)Ia7l&cNR1p!CM0SFH-b|??u<-Y(!{1WY86^U#4G9s3s`D2eJywrK5g>AY# z5~lAusB5d0vDC#Q71_z7a91{dv~LA!cj5|WC+7)=8y0ml*{GK|6q|OhNcv5@u+Fw< z2kvf;`fXahDMFPUoJw|Ng>tcVewk;r;}^q3Lhb7uMAp{)*1~^oiQRYCSJLVMam3qm z`$GqR&7+V>CniP-J;z(TH~nk{E-x>X3)f&fbT&4*==7i`ZXQq~qEAlwxUBH8!3Tbg zR^fYB28XGEc!HOS*>JQmOiv)^ry6Zpd49BHNsNSo>cCp%wz7D!D3#OXl~;35|7Gx` z1g&gUA1h3rIY%YycALcLsTylrOA?8x-@D(<4Gqbr5oNYAIy(-?mFGsyNWGA3!j=C2 zi(2=7GqD`@FT?`wGpQZ^QnVH zwW#Q+ywhu!YocUkq#ik>NrmEGj-(_^o&uk8h4M^!dLCP-Eji-1WOts|jaLhGhh2!$ z*QdNEM^iVyMXWaF2V zhAE9UiqZpIyiXa2MjMY|vare5* zK3I5v&$$kHmb!RJ98p3E3Q2r@4i|F!@T&5$zV zcIZ9DCR-T{jwYx=Bn)RqTyq{txyp%EkIc&Wd!;DAoc)exx5!Z!LZnV77=jT#ZzwA5 zdgig?mLa0)C6BtN!1Tghj>f^l2|Fp)6p^Xd5^v>(g0I)q&k21v(L0}26k&1cQUsBg zsFlS>QF}Xrk(4;oph$|guRSR-LXc5*L20JUE;Pk1rvsejC_EKe)zOt7hzSw`$z@E< zfY)Q!3cuACP8cr5BnF%~>s^YfJNYiF$G2V~Qv~rJJD2V>0o9`bym_t)%FX3n2XRIB zkB_UfyzQ2>ZXIsQn=F2f37Wf!6c{~#tW0@Mk7O=a+_T}F5LT?K8^FjPw8U&RZf6*r zo$>672)D~g&RiFx}0#r`kG)YXEI*_OyCx1N?eA`Xzj`m%l9kDZAzDVOuKL=_{Wc2&e z8j7}=WFqL!Y6PV^+JP8=z!~q4+`W)PTsQB%P`O~UaRB653IMip{d>f((-Tfm=Obt$ z6s*v0Jb=Q2SNadsRwW){zO*U(Rk^tXuxV*-k8cY@;FiU*+g-GO?B#~E zbY?;1$a6N5sOFUCu^v*dLs=o>IMzyOUshkoY`hd3WqbNSc&(4nwf+D5L@z~9w8K)GTH<{3p&PhP9r z)fOp`k#1Z2(%|Q6crCi~HFO!jcj}kFGw4SVWBzJRrmVL05Q#asC~w{p{(4P-6rjtGH%sAyWgDil|JnAoDI8e;N#jxxA1Cbe`c{j!#F&^jZ)cJ zGfo}ajvk8`Sy(m-3JyrP+D`tCaTOi}l!f|KU0QW!<H1 zcF~M|$g{D}K!M-F_&H(qtH64@RPpXZovz^?#}a^YD$=1qxlwv?i%rTkRXN%6fuUEx z_4UDR4z;5Og-l+ipG6N~>ccZ;#rCF!uXk2VfXWtM8d%=$&$hozQHL4;H^&Sl;R~`u zD^2?;FXZJ$I$nLRgKE`sPAgY*+E*C0B%vYMK%-I`anrB-LgoG-Y5hAS!Hxz*1i&(H zhm948K(z%>6T_=J9K>BlCA0ZN01H(=sOml*IJu1TzWzQ;k?TZ{QcTS> z9$=}Hdkg>8Q>X!>mA{f?@E3D*NgMT{>USg1(QTt0xE(+A4gTHxT06Beg9j+=Uw&js&ZtNX{M7Ju)ei?M8x3*ZvRsQ?w^+-$wV+Eo zB-Ev@xID-<_&q%ZLfW3bxDM@tkDQSCUr$PDD3+$<98{FLN!5JDm-aPPsFd$awGgaRw>ZnYow{5Jrq8~`xCTz@tI5V%H-Diz5Y zNkJh8DF#EQgCj`oJ zgy+waDXY9QSFHNgX*h26Y7e*CV*+oa=W*+8SLWHycMXPda+&88lCbEVnLa*^?IXh| zvcPCC(3kT-K0`9BOpfM3V-*{C;H;I|6oc%F^Ng?=_7- zny@v(7|t4}tp~v|rv6TD2u2wxvHnFSLb}syAIsWZ(-Gx@;_OTau$w(b9 zG~T)~hifJ2!VM{Yr{pWctb9t=uWhW2#Er~DhFJQUCBuS+O1X!1D?7IP@^%hjO?f#?KakFr(4SiVCLRjnPbO{<~o7Elrqssdt>DS zcYk|S%kEg!mD<-g1lj1Brx}h(&{t!RI&b_+<1x~;F1)tyH>c7Uy}us}#h;dW7NoAM zIM*E72RdiZTE2M=khr<=IX#ogN1sabGP;0b)uM2;FK!-ETBXu|t_-*3ZB6oUHz$#q zml(xnFUP@5Kq7+WH)_jA3sKm$87#}r-&HXC*vg=yp=zskINCw@k?xft#A|5l9|aQS zOn0S;qKE5mrsAE>@VcZYQ_8jRk$C|ghXEo8y~1?p+4+jw+qbM)U;0o<3y$uVp)=N3 zyFz&>@4`|r$NYa@hf{ig;?Hg}Q>f)a`j->RY}oEUZkZuF4_b4^7`0CwbD_56s;m}c zx4S4Z$KKGCWZ6TFdloB2*wmWidQayGC!2k`)=1Jhyh3K(`G6n+gJsG{Rz`l29WAVl zA3NKpOe^`Qg93HJPo`bpQdQ2_%_XODMSb<@?$gMwdjWG71+loABq$egnAECrM*EyY zK(;%urJ4;;w&@C987A2S&J6HdUp>&VdzY{H!hz43D3j@K9kE2e$$*&2tBX&A=b6tBe3LR;Z_631;{ z8Hyvco_j8J=I~$%2NC-hb|oR`{xN_GTC>oVzEF=dcys`o-|Y?ab$(6L+!W8^ucuoe zCKLUb6t^PFL&tpxFSfWXms`^X_A3H~nP$d8C(4C1SVZ}Ew|c?rnMiDt#*KJoBsQXkJ`EJFeABIxjj(Yz3Gz~DBSxR!_Rxplm zLbj$I**?I84{aixHtK6=QDTF3V3^CxR9-eMGpx|6i2ZikAd9`D8Av9-KJx=q0FlRS z-mYkk`zYlzRHyQwe`_313JJ~O;);uql;~)ZlylcMi|n?i@Ql7!I||!pIcwgP18U@X z)baM4cdCc`FW%A@gb=2pxH?MWCdPk3oj-f z-PE?e3ATR!^p$A};DayD2qdx68%mjSV#*S9#@4n&gN%AqB{0nQnyPuv5{Ws+Kf2REvL20t&n9*phk5Td+hhRG(qpAch^5eO<}K zWXoDyh)-bkF3sB;I#Ht((9!vPCzP{yk~2IihHm4+_66CnALu z8bc}@gbSezm_Z{*#je9RNK15n!p1c+o%vztPR9~+6C**neP4^PfeT?!=YTgq3aO}# zzA!DIf7JWzQ{@m8Kc~CD>!7YIP>*=w+?AcK;(e$A*` z!NAu$p!td!06sOgWZH%Ngp|43?66uMFNdjyh{8MO>9iZ)(0;52KDEtP1dcIcKcEnOA4|jD{eM5*w`@9t# z!vt;kVxyyPRE0Ax9JmzGH7Y%rbiYm~81b3YDsw>kKH$hv{-mme_P4b5GWQ8lfMR6PL_{J8T%EZWeZyD& z^U5Ro-?mQ3+}KPqb1P#yK;3`Vz49`%^C6<@*tve(Z?j!8qN(eNE0dcSV2@{nxTE-@ zb=!f8``~|H`ucZhs(%&E*JD-xDqU=#Lk>+|?V&4Wwpf=a>|l=%#&m6$l_=f5a*qmL z(>pq6uJFzmBA-_BqoFIC$f#(EW9hHb3UGE$dkISO83D{9zdvYuJmVxzTt z%|f+aNJW)Mbv^Md)vv^NRH`o5@(z{mxH7qH&cxy-KX2j^e=I)ZtL5y=`&6KtKP6GE zB%W3HXry%Y*8{$5S^v`KGFm=EltPIonc?qq_aK?Vr+K3#MhDfFFR3URI#_dmVGPH@ zr$?ePR8NJL7KaL#Y+c#-^#?8&I``VNrYX70If0;m@uolbs&y9F?-yQ0QTe@N_1Fv6 zEV`XHyIDCirwiBgEw#4Vl6giRPu!e>bVRi-e9+nA_?I#nrL;Kt9x>j6gwbUic4Yih zr!K$i^3Exf`0R4D_3-7A11Wi<>Lsk_zsg*yX={E@(n5e=kJO1%cduq*&Z@@NJCAtCq(b3uLrXK_H zTa!b zY50w{OV*QB!8oiW>vnC6%pv_^`o9$0?QwPuW@Uy#zT6k{3|3j|_L~hF!lTC4D<&kq zHs|~-%l7rQ=U@9Coqs{UER|)H>riZx%?)sy$Pu3EG&S8EX&=zGa5jFoy{T*zQ$3%d zueG?eV@n++&3m)y3EsVxMe}~TS>F@I;FPsfZLS^meot6rHpr3^5nHE|%2DDyA<~!L zsUefh50+X_JEWLCZrmm%5rS6Px)%&r5N(tR+zUSyFE)!A8+bSVFIDV?d<#z;u&AneAI}OQv{B&}#S=zLnYfB?iD0ZN+%ukW5b%pao8|W{G6iMp`@* zsTLYH6Yi4sL9z2oc*SO>U#t=gSG!|Fufu=i$WI7!-7tpF#odJqP;=dc`?IpfkcE5& zu~rvshMN*9PVagYM@@991@5t1XRu(Jw}D+u+v_|Lm?(aM6CUG}Y|WYMYO+y~5w6?r zDlV*rZDB{FcWZ}%dsCI*kKW#wi;wPM zEQ7_hsxN1{DWJMmMpD9iwC2NpK{1>nN=!{fvQwjgkvDbFRgSNqc*Zo&Rl;KB3FQ$p z$7Z#Sf2m(D0T?+md@a-@W={KEYCGIMv|-=hb&TufaHc3d=1t$9kIH+kfNy`roY|Hc zMW@ipd_akezeZCtxSHijSow@4&F*LgYWcmBPgw4k4-7*^mm8E|+9MtrAPqu6(}B+h zFD4u?iTc9wc><;V8Q#d|gwEVs6qjuqGd#CFN0?AkbvxjIJ`Y)^>@F+^pJO7Z1|1+2%~7DmG9(H;qe?+!!bOjdB)(HFHc`FQj=8QGsPQR`Q;7kU^x)H~VQe_`Y+jN(!V zvMj_N6pZS7RsT^hOd#=5L6H43y#9C~|4Qgs?t3uhjCkV$<$^)i; zAvDijI#;AvUKh2;z#Likzn#9D3$i`<2K=M`$uNeqChy!d7(}`}G$0D6X^u5Pe{D_@ zbDQc8C1WnkOM&>@h{bzYXPm(y)Zb)L`a{>8-f-e=CZ(nGySZo8YP@}g1BP4)xE?w6 z$Qx;RX!qR=2Y#>chHByAkN)eJD4%Bh{$HwV4rq0zieOlWMU+8~RhknR*OgN>AQLyl z0;r0VZt#SRd*eniF^Rwixb@ZW<_$#O!R*~mu$mAFRo3}+QT!yliI*XlB5H0oHv)3a z*>0-QVG}eHAk}w@JGnze$33cf*@ig1uAX$Ty?B%I<>%rei{VTV1e03x$hTt>Tot#| zGc?nB_M44U_%D^XY$#3Vms!RBgS)r+wal-iwo`bygAx)fZ_^zWDNOlD5u=#yiE#HW zs7;Wyjn06;X>R7ubj}nmBVjS|Kr?1?tL;>45E&4VugUO4zQKj~?sSxGRMdd%eA!OXnV_H`S$UKr@o1%6mMZ4kZR}9o^smk6h{hMF7Q_ zA)nKbgLZQkZ36d?8ioK|Irgw~LT{SK_a_+7y0Bw=`<~BV$pF{fwVWM|uhbTj#!On8 zQt=*svSDKK#J5BEa(deyDBAMb{hZ9#p8ME92~TF6;fL8lVdu|l@P9S-2NItOBifCM z5JR<;vh5RrGLI7$qA0zVqN{I}J54xZ30sjGRheK#N@VMBX5Flc$HQl_I`PJ(r8dxZ zd+w+mkBwgTTLVGb3Mr(U8nnY@g?HWzWeV0TzcNdvLqa$_Ja^ZO0;$70>Ne8ee7SfIF}p8m4>~ly zTz>?L39dAd{$-M)2UM)SnUOd`#w_R3cE<%9;sH5WXR&)SjC(I|iKQUPZA&esbvgUJ z!d{l5kk{~ca4q97JcPMJ+jQF`(d^;nW6HjwM+uZSjLfCob)Wo8Ws%l7dlJ{=7F1xl z-SC$x24=BD@vetqI;Bci?(21w(pR{Jfap(p90Q5y#G_e!-=d+^#lgd~$;VHC8fjJN zi1s2M`?nR%S`oNKX>VK&CGk#UCoPpi{m~`&9vX1STjHL4>~QkwT9s*efYD&7>L-?d z_Z|Fg3mPV-7b7Va2#BXyigG+AMa!rc=B#khyZw$_Te7G|5)+8Bma?4F94!dHgDm9B zaAOPj{Phjd?y^V;k?4ac4tQ7tMn!2tdNRLSv%c!ph+P^%Yw^}_`%2Y}* z-7Nm$1cn*{%G#Rh)bC;i@r@na1nu!op5NXgZ(oEw5ubJ#bxw zG}+WV07&=qrhEj_y3QngnS1ZS)bPtLO5lcp3DA0 zl?rai2&if1M`bKcsM?PQs|LCiZTo)`LweX3+d)^hy?;@15gh7+LPnJ?XDet?1dSs5 zpUY_gFi$4P>=jz5NJwx%fh|amB~UJJYrX;QuBB_M_^uM|-;5T0sSi0x0*Op*Uo=Ha z1dA6zwuZMWuD4XBz0I*wmv(S|lt^nM(N1tvfjK2TBTTF1e!g#1N65rdX2R^8xuU&M)$m&ou_^t+l8xLZzcV+O2^1(ar#8- z?N7;Sy}788Kg|r2P&}4AIpHP2RJw;f4~mUq4HR@S>yKp~;QComC&O(9VC8|mnRC5J zUS(5Gu@j|yNGv4^Aq>6(qZ9FWmdKph7Vw$>82* zJ4&}msZKIb3#cT3a7I)N;Z%c`4|eyK4X?vv^$Ghag(foFHcZEzZMn zVSDKehVKH#;>+lJrAr*SS$S%>80Cx$Zb&-D7SxBt^Y+omNEK_EOx*@#h`ZGT*O0h__4U-9U9b!R~DAXUW zaMQNze%n}=6A5NBNAuB;BQ^-F$LLy?p=Yj~^b*Bh{?7W$CWkHhLeo5wBq&w%v2mcP z2l0B1sX1**hJE}SW<1FnyJhbZ;&9ivWHv4&+4F!Ov5{b9p>~7Zm-=pP&I-}4<$#7~ zu8b!_=4P#`;5eHgL?rL^^3nc4R%p?tatmeYqB$<{p+x$@P@6e?F~4jr=Z5Z_6)S~X zpU3>>Hg#YLM;S6E*(Vo`WqsA4U-_*Vi1Jc2~*GP8n z%|upmoCUvl8$2?tnC>+Sj2Fl8;X!@$+@?5=y!UD9$IwE#F}eSH zD>(ms3fN@pXh3#{qkKK^gjs{uTQ32Ec;iZmR`kHSRNQ9gow?e`hgYAQLDeQ|oV@Q{ zeZqkFPjLwK1wUun#W|cZ(4b+Y#MvDszE>7E@0djne*V|>8zW;=Dg9#XyHU7a`_SY0 z%^|wk7CY@%-*vvZa%zP)JTNmGThO@3|3r~Z|A!8Twnb#(UW65bQB?SLNedIkcNBb0BP^JvZ_W(>D;v)TS;S>pvi9<1(~vW}g+dYU1s`@Nvixmd@Q zFYwLzqo+e+C7sj%b?>^dpwjgYiQHwAbikiSF~!)-mPY{Opu{% zD}LU{^Y(xA>x`_3;c^OSm)X_s0{N8s;t`M7U#hQml$b)k@zzt$_saKm+CznFhq3pS z)o;V!_ehP)HI6o@p_=)d(`C=~fU8zsr}obIsLT4Kjicjq+Hl~Nx0C_o|A*@aw1LOv*KJYU1mcd+XvPr_2Ti4F@46B*t+?EZaGZ*kHBY7sa5~uv9JB_ zAG%K+9W1z#SJ=iK%6WKAye1mo2R0q4X0<4LFf2RX5-IBb6n;P+ucCtI4h$*%OZmwE z*PZf?@ZPn}c8z7^uBE1#Kp6man2fo5e9_~SdIU%o*<9ivKfX{QNL$bA9I=C>|ZwD@|)w zA@}6?`|*YyN9+&#!|JV&mN?VGj-t6>8?~a|r@o>=QlG zCH{;|?1kr$l+9scwARub{`H}(|%AktT!u3pG(v*(UvjZ$I(2nD5oi1RB_9wZsD2xOq2`5sTz+S-+N7h31yC9C~2Y z`THxQN$b_Q?fBmT+G_3IVT5wBjYeMFS5c^i0_%ETM=e_htfr_yt|j+&jRNm19Z!lgmnMvlXih8Gl(Xk3>?Tyn zY;}>w;~;ftx*86pR^W zas=;&_rI-%I#h&qWxwObeie~1+u)Xy#TyMKk2`{WeX#tyNs)h~oL6!qLRm*HRG01O zNtqh@q6VYlemnk6lYd+aK1g|SMP+|WRZQQTd=q1Q@6PtN%>v)!BT66hxOk#tlCs(- zWfhFOOjJ$mlz2H!=B9QN%>d`&-xb|?%svcOrbJR4S+|tabFP4xei^15O~hG6Dv0`5 zk5_xBgi;v0ZPsd1^YFfvavb9aGWEEfDPbzSNwU<9b6_$$TjzzEz#(gPPysY2WbaeP z#Cp|O>BVvQLfkd5!viC!Yk$h9d&%Xg>z1h!v1XzMvPCAv_0A%G;$WZ#P;aq#IjN>B zCt*Q7iTv5xExccb%!Mz>lf{|0J7QB6SgdHG@*qe6So#}I+ZY4#{g@(l&kgjlu^R9q z37lzolt)~eI<^|Rav@5B;Rh5f#?vVBiI{^9<{7I+S6x2@ZChcm8p#_PJlrNa>#7gq zr5p)ZdpuwYvt_agT<}n$i!obez*6LsyI%pekE#`D>IX$67`UsYWGu2YVn%$rcul|V zmst!k8VlE?pPI*B03*6y`Eci6i-{1(*425^F_`*DZdFX}YPL067zxhG5(QNb`SL&# ziAgvoIH>AFZ2r=E?f>2^TS_h-Z2C#kkjixBE>)Z4R<56ihWilG{X(=}TmFfSwFw9q z@MIfG9DC7JRr?_Nc3P;h=kFJu6rD)>!y9btn`#nLn$JN zsYeeEsYIjZAuTl}R85b z)#L7tv}EFc$-G3-N8(RdO7|3JXIXgkzOlU3aWt22XjyoI-2eP^&FNXH2e~z~tS*ZU zmOwj3bDj2;K*`&l7*X@kFMZ`OQCxZbzN8Bh8ax$R6S5L#$og>pf(|0&4E@Odj*tPq&#L>Q!Ol1;E?>nkR?Ft@IbE3dD}IgJ+pwVC_E3mRE6~X;j+O7*QiR_3joQ$9PY z>w=chpAVI;Z>npeM3#}McVlsHjCHIukZM$D%|TU5-4twbDZuSnS{roh`Q}F0>XjfY zQ&k;_Nkn+d5%O79iNQ#zYX%oysrCeIM}Xty`~=&qZFExrCx92ZCa8{hS>q7WMxiT{ z%tHfpaWt#CN`BQTr%Dg=G-mRoPzdp@{MJ%e(4pqbt*I7ELq%Yl7jjRboHTU4j2;b@nu&aVKW+nt95fq6vnf|x?Sugi3R+R1=P9k!}@ zsQ?LNYC2ym1!~Dm{zNZ==5TAmK++M>iKkgKc+wK{TahS4V-EM>>X>UL{NEyGR z`v;7?-TLI)4maF6ar79@=wJ>WXv{W|GZh1s-c6>y9=?M4j_fk1$RvEfb$cFxvz>W? zC*{earV$Tv$bp>X)wo~iS1u=pc~+?(SPZq1Mu3+#W2Sr-cD;qn#m~OMd@FuL$Sf;n}TY53k9W z#hh+{HdKWPd%F3n(6Y4Y_u4f;0)xoVY&{z?8WxpFypo9?j?JimyVs6p$<;JnwrUG8 zjdgmcn+L}rvFGc*B82Y0`7{fe{j~C}NziIv_N3QDBNrx^SWI-doW#SH|`2s)IPb*D3hS#&MWP&bG8kU#bSvfX{-4xt%QJt-XC+Jyv-&#>bLRH~5@NO%t`Y5urKV z4~%!eKO7OPeo^iE&G5Ha9q8vf>UR8#Nx`QZXpqsmO;_LQVCA$5BmV2jL%b6IMS1Wh zcdv&ASdk=y6#HHcPnw701o%C;_%+E0M}1Z9ID32`;AT#LH;?P@bLr7Bwn(CtyWJr) z-`RgRAcE3_+O&xibVwfcJ~VnPAPqH_1@+{lUNRxAFEh#~*lx7<8m6P%2MfZz(1gzX z5IIqclPl)?0KckO*j`)=Kt(0Q-v_9uh@UdRR`$-$&&JgwfYbvBJqvdr-_MCI+UBm? z;a1!4E^sb2$siRZHoU(wt9DvU4YQodm8{j-hV=+29pC%5coj}D@1U04@d5-7pmZ_- zluoLDmQFNhe(r2gKY6CYpF9%^;F&z$@w5JXKH-dNC^A`3QjAtNn*GMN?3XZRITFXv zaJ6rw`v9RupcTNY%uInk-8LG4S2aBcl!pI3OR}DF@2cu|<1Lw*i!mmr8VU)n zs2;177`1N<9~}>YOmEgHO7Eb69dC>@nV)t5ddCYG?VrrXKoVG%sBmJ&iIUwa_h@Lq zWoQA&57StxziWhvo>9*44Vgc#c>kevgXJS$Y6Yod|2}MtHUTJCF3l=^NuN3{h_jxv z-s8;w?Q=9T<2R*E^5V^@>5fY)v#hAj?9kik8!y{N&(ni~qYu7>cH|ECLVm+?&ebep z4~D-s8t!1>E2Ude-0T*G%(YGD4+Uq);3;W}L?z>#cd$AS&}r)k87D%(8N$7m@IMg*6SB09FKbkJX1Adm2u_ykgTm9%?~L# zC~~V`k<}?!c2@Dt*l%3Px|!;)l-}`%!LP3@aO#!EoX6Fb(l*lD>l6=6c!XIZP2T8z zJd&1+E$N-w8N6Tc%%2&HLbY;jthc)xEh=TOxs>dt_4u5jnLUw_A8wo=GX&IwzB^73 zu59)^y|kJ8Il{<0S$vPlZ~Y~Rcr+jfltBu)`>n!#9$6xIrJO5e;n6)r@F$`)mLy&D7kQJJ<1xyLc$`C=@N zr-DC9xNI;!>pxgDzDS&1-cX=ZP6X8S8CRC!qcRJVa;351TEV9}6fm#;#JhL>`HHeS zAn9wyX>3+WERb;yJO@x7`YG+IwicSclhAdiY~2(t^5tml-s4Enlj`FJB9p6u$`KbK zeHA1}Nb=t3nYgsx$<@agK~9YEn6}6Mr;@gWXrM1)^VeDd=ft_#1#+8=|9zN zM}P@Rdwo?1vLXFJ0I6Lj$mr%VL2hgUTPu94vYp;<#8@#s(3`2nyQHaQi0dhLC_p^B ziYItIOVlK*y&o5rgA!l|Yc&O#x7PBivtSoDC>v=6Oq}7e@N}`t61O#fTFu#|3y}Gb zkbq#d&IXoUXLaS`i7}Th@yhaa9Rcr;%F4Ncdo2Q;2}hh=kr}f?(>L&$WuEn4zPgFn zZ~v&U3B~-@NXiH|>%X*aK+N~mTTV|dh2OedWG=ZD8DnzR@{vpe_{Umg)QK|7Y&~xG zK>&eO-i#OZcXCank>(_T&kgs{j#;fI@L)MO;oa%hoP}P4XD-%)lmP4@_Jt>%9+s?= z^4kA&eTX~rZh?HtYyNUW%hH#^G1Y)_kD6svLh+$iyzzYBCrpm^Aq1cTjdYY#4V4nnS2=yx1UR& zO>>>AbwSNiu>q!;siys35Tzeb=5g%Oi&xi$jR_H&rSc`lwHmkDm7dFG{=K07w<`O; z9+dp1XL}Kr-d97-Vm~}|_rzc;^p7+He|%Ta%zJ<#AR<$y%k(9=FMq&icZM~^RfMmp z$SwvIRz#WQnx<|jE_=6)`E}5eM&rdCqmK(ZN7CBYHxsHn*>YVDwUAdA7@)Gzc`MBCii$0hDUKVS2NRX7a)Xv}@mg;n0$6hH&PL?Wu1W@hr%(#Ki@y9+8!F=q3EW+{jrAP>^1&(wzxsgv}#Yjrstd_iP z0Br^p`fSn#Ei>fKzfbu*bGB34u5(iTmiNsthp8y%9x!^Pelzg%#}%Lt>`=!p5l9$Q zkZd;EHrfz#Z5W9$TJr4qtRV9-fTBGfu(IR6@2pHoo5TelcXk_dL2o-V{7B>I zT+r*pc?1xwcKH+O&?RO5RtO#he{l`;7N46va&@!l_758p2RD1xJTG%fDgNlLioyKx zyyas;_ir^{QlB*N&6~<`DA9xJ^v#!dR>|w6gk&t;zIMdn$8_mK!h^PftlMb%-Z3Y( z0^{1>YYG3MR`aiK(SN#RA2U+Fb5D08?DIJ@`Uhac@?b~obEO(W-*#CcL9f!PeQP2m z?*@cgkQsvcL*ORlE#bViz3Q1d(PIwfgB|vnYTpU0Qc!?BQGj{B#an53`_Z>1-QHVR z4~=%Ut|^_~u)}>;(sw#oZC(V^s{AOiGNeAcR4I3GLXJnL)43h%5utryVPRm3q`tmr z^SY#@SQ8Aq+NTaqw*_N|U>eu~#g|64Ubg-?YbBhu3#iyS5I2+7W!R7BBJrh${m8tp vhKBIa^jjIFst~R!WE{^4YTz^q>zMx+`0BrbS^t0TzjAB;*VAM67yEwzX5zkf diff --git a/examples/webgl_loader_imagebitmap.html b/examples/webgl_loader_imagebitmap.html index 9cd7493a6025b9..394a39b3f05695 100644 --- a/examples/webgl_loader_imagebitmap.html +++ b/examples/webgl_loader_imagebitmap.html @@ -32,6 +32,7 @@ function addImageBitmap() { new THREE.ImageBitmapLoader() + .setOptions( { imageOrientation: 'flipY' } ) .load( 'textures/planets/earth_atmos_2048.jpg?' + performance.now(), function ( imageBitmap ) { const texture = new THREE.CanvasTexture( imageBitmap ); diff --git a/src/renderers/webgl/WebGLTextures.js b/src/renderers/webgl/WebGLTextures.js index 08ba467679a24c..85c2bcad042999 100644 --- a/src/renderers/webgl/WebGLTextures.js +++ b/src/renderers/webgl/WebGLTextures.js @@ -874,14 +874,21 @@ function WebGLTextures( _gl, extensions, state, properties, capabilities, utils, state.activeTexture( _gl.TEXTURE0 + slot ); - const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace ); - const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace ); - const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + const isImageBitmap = ( typeof ImageBitmap !== 'undefined' && texture.image instanceof ImageBitmap ); + + if ( isImageBitmap === false ) { + + const workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace ); + const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace ); + const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL; + + _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); + _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha ); + _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion ); + + } - _gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY ); - _gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha ); _gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment ); - _gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion ); let image = resizeImage( texture.image, false, capabilities.maxTextureSize ); image = verifyColorSpace( texture, image ); From f1bf3351a2be6457a40e6134ace69d21b39243fd Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 27 Feb 2026 01:31:00 -0800 Subject: [PATCH 6/7] USDLoader: Add support for MaterialX UsdPreviewSurface materials. (#33083) Co-authored-by: Claude Opus 4.6 --- examples/jsm/loaders/usd/USDComposer.js | 33 +++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/examples/jsm/loaders/usd/USDComposer.js b/examples/jsm/loaders/usd/USDComposer.js index c78a9c6f94282d..4c523101c9e38b 100644 --- a/examples/jsm/loaders/usd/USDComposer.js +++ b/examples/jsm/loaders/usd/USDComposer.js @@ -443,18 +443,37 @@ class USDComposer { } - // Build shader index (shaders are children of materials) + // Build shader index (shaders are children or descendants of materials) if ( typeName === 'Shader' && lastSlash > 0 ) { - const materialPath = path.slice( 0, lastSlash ); + // Walk up ancestors to find the nearest Material prim. + // Shaders may be direct children of a Material, or nested + // inside a NodeGraph (common with MaterialX materials). - if ( ! this.shadersByMaterialPath.has( materialPath ) ) { + let ancestorPath = path.slice( 0, lastSlash ); - this.shadersByMaterialPath.set( materialPath, [] ); + while ( ancestorPath.length > 0 ) { - } + const ancestorSpec = this.specsByPath[ ancestorPath ]; + + if ( ancestorSpec && ancestorSpec.specType === SpecType.Prim && ancestorSpec.fields.typeName === 'Material' ) { + + if ( ! this.shadersByMaterialPath.has( ancestorPath ) ) { + + this.shadersByMaterialPath.set( ancestorPath, [] ); + + } - this.shadersByMaterialPath.get( materialPath ).push( path ); + this.shadersByMaterialPath.get( ancestorPath ).push( path ); + break; + + } + + const slash = ancestorPath.lastIndexOf( '/' ); + if ( slash <= 0 ) break; + ancestorPath = ancestorPath.slice( 0, slash ); + + } } @@ -2705,7 +2724,7 @@ class USDComposer { const shaderAttrs = this._getAttributes( path ); const infoId = shaderAttrs[ 'info:id' ] || spec.fields[ 'info:id' ]; - if ( infoId === 'UsdPreviewSurface' ) { + if ( infoId === 'UsdPreviewSurface' || infoId === 'ND_UsdPreviewSurface_surfaceshader' ) { this._applyPreviewSurface( material, path ); From 30a9b5c8807098da00da3fd68bc9263e02163958 Mon Sep 17 00:00:00 2001 From: mrdoob Date: Fri, 27 Feb 2026 01:51:58 -0800 Subject: [PATCH 7/7] USDLoader: Add metersPerUnit support. (#33084) Co-authored-by: Claude Opus 4.6 --- examples/jsm/loaders/usd/USDAParser.js | 6 ++++++ examples/jsm/loaders/usd/USDComposer.js | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/examples/jsm/loaders/usd/USDAParser.js b/examples/jsm/loaders/usd/USDAParser.js index a95037f1fbca24..ca1f787a49ea1c 100644 --- a/examples/jsm/loaders/usd/USDAParser.js +++ b/examples/jsm/loaders/usd/USDAParser.js @@ -454,6 +454,12 @@ class USDAParser { } + if ( header.metersPerUnit !== undefined ) { + + rootFields.metersPerUnit = parseFloat( header.metersPerUnit ); + + } + } specsByPath[ '/' ] = { specType: SpecType.Prim, fields: rootFields }; diff --git a/examples/jsm/loaders/usd/USDComposer.js b/examples/jsm/loaders/usd/USDComposer.js index 4c523101c9e38b..759c4ea0f1dc7a 100644 --- a/examples/jsm/loaders/usd/USDComposer.js +++ b/examples/jsm/loaders/usd/USDComposer.js @@ -115,6 +115,15 @@ class USDComposer { // Build animations group.animations = this._buildAnimations(); + // Handle metersPerUnit scaling + const metersPerUnit = rootFields.metersPerUnit; + + if ( metersPerUnit !== undefined && metersPerUnit !== 1 ) { + + group.scale.setScalar( metersPerUnit ); + + } + // Handle Z-up to Y-up conversion if ( rootSpec && rootSpec.fields && rootSpec.fields.upAxis === 'Z' ) {