<!-- SOLID CITY · part 3359 -->
i.debug.checkShaderErrors){let O=s.getProgramInfoLog(M)||"",V=s.getShaderInfoLog(T)||"",N=s.getShaderInfoLog(E)||"",z=O.trim(),q=V.trim(),X=N.trim(),ie=!0,Y=!0;if(s.getProgramParameter(M,s.LINK_STATUS)===!1)if(ie=!1,typeof i.debug.onShaderError=="function")i.debug.onShaderError(s,M,T,E);else{let j=gf(s,T,"vertex"),ne=gf(s,E,"fragment");ke("WebGLProgram: Shader Error "+s.getError()+" - VALIDATE_STATUS "+s.getProgramParameter(M,s.VALIDATE_STATUS)+`

Material Name: `+D.name+`
Material Type: `+D.type+`

Program Info Log: `+z+`
`+j+`
`+ne)}else z!==""?Be("WebGLProgram: Program Info Log:",z):(q===""||X==="")&&(Y=!1);Y&&(D.diagnostics={runnable:ie,programLog:z,vertexShader:{log:q,prefix:m},fragmentShader:{log:X,prefix:p}})}s.deleteShader(T),s.deleteShader(E),x=new or(s,M),w=Ux(s,M)}let x;this.getUniforms=function(){return x===void 0&&C(this),x};let w;this.getAttributes=function(){return w===void 0&&C(this),w};let I=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return I===!1&&(I=s.getProgramParameter(M,Tx)),I},this.destroy=function(){n.releaseStatesOfProgram(this),s.deleteProgram(M),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=wx++,this.cacheKey=e,this.usedTimes=1,this.program=M,this.vertexShader=T,this.fragmentShader=E,this}var Kx=0,Zh=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e,t,n){let s=this._getShaderCacheForMaterial(e);return s.has(t)===!1&&(s.add(t),t.usedTimes++),s.has(n)===!1&&(s.add(n),n.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(e),this}getVertexShaderStage(e){return this._getShaderStage(e.vertexShader)}getFragmentShaderStage(e){return this._getShaderStage(e.fragmentShader)}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new Jh(e),t.set(e,n)),n}},Jh=class{constructor(e){this.id=Kx++,this.code=e,this.usedTimes=0}};function jx(i){return i===qi||i===ba||i===Ea}function Qx(i,e,t,n,s,r){let a=new Hr,o=new Zh,l=new Set,c=[],h=new Map,f=n.logarithmicDepthBuffer,u=n.precision,d={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function g(x){return l.add(x),x===0?"uv":`uv${x}`}function M(x,w,I,D,O,V){let N=D.fog,z=O.geometry,q=x.isMeshStandardMaterial||x.isMeshLambertMaterial||x.isMeshPhongMaterial?D.environment:null,X=x.isMeshStandardMaterial||x.isMeshLambertMaterial&&!x.envMap||x.isMeshPhongMaterial&&!x.envMap,ie=e.get(x.envMap||q,X),Y=ie&&ie.mapping===_a?ie.image.height:null,j=d[x.type];x.precision!==null&&(u=n.getMaxPrecision(x.precision),u!==x.precision&&Be("WebGLProgram.getParameters:",x.precision,"not supported, using",u,"instead."));let ne=z.morphAttributes.position||z.morphAttributes.normal||z.morphAttributes.color,Pe=ne!==void 0?ne.length:0,we=0;z.morphAttributes.position!==void 0&&(we=1),z.morphAttributes.normal!==void 0&&(we=2),z.morphAttributes.color!==void 0&&(we=3);let dt,tt,ot,$;if(j){let Et=fi[j];dt=Et.vertexShader,tt=Et.fragmentShader}else{dt=x.vertexShader,tt=x.fragmentShader;let Et=o.getVertexShaderStage(x),mt=o.getFragmentShaderStage(x);o.update(x,Et,mt),ot=Et.id,$=mt.id}let ee=i.getRenderTarget(),ve=i.state.buffers.depth.getReversed(),Ve=O.isInstancedMesh===!0,be=O.isBatchedMesh===!0,Ge=!!x.map,xt=!!x.matcap,te=!!ie,re=!!x.aoMap,ae=!!x.lightMap,oe=!!x.bumpMap&&x.wireframe===!1,ue=!!x.normalMap,ze=!!x.displacementMap,Fe=!!x.emissiveMap,We=!!x.metalnessMap,qe=!!x.roughnessMap,L=x.anisotropy>0,pt=x.clearcoat>0,nt=x.dispersion>0,R=x.retroreflectivity>0,_=x.iridescence>0,B=x.sheen>0,G=x.transmission>0,Z=L&&!!x.anisotropyMap,ce=pt&&!!x.clearcoatMap,he=pt&&!!x.clearcoatNormalMap,J=pt&&!!x.clearcoatRoughnessMap,Q=_&&!!x.iridescenceMap,de=_&&!!x.iridescenceThicknessMap,Le=B&&!!x.sheenColorMap,_e=B&&!!x.sheenRoughnessMap,fe=!!x.specularMap,De=!!x.specularColorMap,He=!!x.specularIntensityMap,Ye=G&&!!x.transmissionMap,F=G&&!!x.thicknessMap,pe=!!x.gradientMap,K=!!x.alphaMap,me=x.alphaTest>0,Se=!!x.alphaHash,se=!!x.extensions,Ue=Zn;x.toneMapped&&(ee===null||ee.isXRRenderTarget===!0)&&(Ue=i.toneMapping);let Ce={shaderID:j,shaderType:x.type,shaderName:x.name,vertexShader:dt,fragmentShader:tt,defines:x.defines,customVertexShaderID:ot,customFragmentShaderID:$,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:u,batching:be,batchingColor:be&&O._colorsTexture!==null,instancin