@mapvx/web-kit 1.2.0-develop.11 → 1.2.0-develop.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/cjs/chunks/{DRACOLoader-CjN7nfMz.cjs → DRACOLoader-gEI4jG0V.cjs} +2 -2
  2. package/dist/cjs/chunks/{GLTFLoader-C33v_eKh.cjs → GLTFLoader-Cd9ix-wY.cjs} +2 -2
  3. package/dist/cjs/chunks/{KTX2Loader-GfgRciKI.cjs → KTX2Loader-Dk2GlCFI.cjs} +2 -2
  4. package/dist/cjs/chunks/{accessibility-CamvBQ8h.cjs → accessibility-C9U1mv_p.cjs} +2 -2
  5. package/dist/cjs/chunks/{back_arrow-BrByZltA.cjs → back_arrow-tpfWrGJ9.cjs} +2 -2
  6. package/dist/cjs/chunks/{debug-hooks-C_m1SbH2.cjs → debug-hooks-xLx1YP8n.cjs} +2 -2
  7. package/dist/cjs/chunks/{dist-B3zxScE2.cjs → dist-1oZjernx.cjs} +2 -2
  8. package/dist/cjs/chunks/{dist-DRfr3UXp.cjs → dist-CYGLkXos.cjs} +2 -2
  9. package/dist/cjs/chunks/{dist-CpCOzc73.cjs → dist-ENDZf7Zh.cjs} +2 -2
  10. package/dist/cjs/chunks/{expression-EUvjFYH4.cjs → expression-q70ZQCYv.cjs} +2 -2
  11. package/dist/cjs/chunks/{globe-viewport-SZrSWKdf.cjs → globe-viewport-CIe_h8dV.cjs} +2 -2
  12. package/dist/cjs/chunks/{icon-origin-point-DW7v7TzN.cjs → icon-origin-point-D_DBb1gM.cjs} +2 -2
  13. package/dist/cjs/chunks/{meshopt_decoder.module-Dk924uu3.cjs → meshopt_decoder.module-B5j8Tze_.cjs} +2 -2
  14. package/dist/cjs/chunks/{repeat_icon-Bpef1DPh.cjs → repeat_icon-F6Q7hnPl.cjs} +2 -2
  15. package/dist/cjs/chunks/{rolldown-runtime-1If4f64F.cjs → rolldown-runtime-BOxlEPsq.cjs} +2 -2
  16. package/dist/cjs/chunks/{shader-type-decoder-BqFbHaKB.cjs → shader-type-decoder-B16cQ7H3.cjs} +2 -2
  17. package/dist/cjs/chunks/{styles-DP9KZtXl.cjs → styles-zP5lXn9p.cjs} +2 -2
  18. package/dist/cjs/chunks/{three.module-Drz560ge.cjs → three.module-BHURJnCD.cjs} +2 -2
  19. package/dist/cjs/chunks/{walking-BfKvsH3Y.cjs → walking-CMpmZTw3.cjs} +2 -2
  20. package/dist/cjs/chunks/{webgl-CxZNw2p_.cjs → webgl-CJbVWdD9.cjs} +2 -2
  21. package/dist/cjs/chunks/{webgl-device-Dpif38ir.cjs → webgl-device-D7wKHxQy.cjs} +2 -2
  22. package/dist/cjs/web-kit.cjs +22 -22
  23. package/dist/es/chunks/{DRACOLoader-CudX8012.js → DRACOLoader-r8VXQ8hj.js} +2 -2
  24. package/dist/es/chunks/{GLTFLoader-BLc_n6C7.js → GLTFLoader-IbJ3eCNr.js} +2 -2
  25. package/dist/es/chunks/{KTX2Loader-CnBac9vX.js → KTX2Loader-DZlQyAGv.js} +2 -2
  26. package/dist/es/chunks/{accessibility-BTRW5qzF.js → accessibility-BldDqm74.js} +2 -2
  27. package/dist/es/chunks/{back_arrow-DaE2mYq8.js → back_arrow-BeeCYF4P.js} +2 -2
  28. package/dist/es/chunks/{debug-hooks-A7fGcVSJ.js → debug-hooks-NzJ2oy3C.js} +2 -2
  29. package/dist/es/chunks/{dist-B8bewEN3.js → dist-B3-nPsaF.js} +2 -2
  30. package/dist/es/chunks/{dist-Cq65fMeu.js → dist-DNNWa2bQ.js} +2 -2
  31. package/dist/es/chunks/{dist-CeI9yzhC.js → dist-DOcsJa1u.js} +2 -2
  32. package/dist/es/chunks/{expression-BFfy7ZSj.js → expression-Dpos4VqC.js} +2 -2
  33. package/dist/es/chunks/{globe-viewport-C_lLyBu9.js → globe-viewport-BmqhgdhG.js} +2 -2
  34. package/dist/es/chunks/{icon-origin-point-bHQmYXyG.js → icon-origin-point-CkHTMtFu.js} +2 -2
  35. package/dist/es/chunks/{meshopt_decoder.module-ClKO_vyv.js → meshopt_decoder.module-YGVnWwV0.js} +2 -2
  36. package/dist/es/chunks/{repeat_icon-BDjNCPIN.js → repeat_icon-B_t3ecTa.js} +2 -2
  37. package/dist/es/chunks/{rolldown-runtime-CGJB3Nua.js → rolldown-runtime-BSTMnvUK.js} +2 -2
  38. package/dist/es/chunks/{shader-type-decoder-DV9QwQh3.js → shader-type-decoder-CFX5sij5.js} +2 -2
  39. package/dist/es/chunks/{styles-BPMrJs_x.js → styles-DTTMB3rI.js} +2 -2
  40. package/dist/es/chunks/{three.module-DUnMDXpm.js → three.module-Cj5xe6gn.js} +2 -2
  41. package/dist/es/chunks/{walking-CUOW_o2S.js → walking--SMEsH_B.js} +2 -2
  42. package/dist/es/chunks/{webgl-B16MrmDy.js → webgl-ZcaUll7k.js} +2 -2
  43. package/dist/es/chunks/{webgl-device-Bht0bA0i.js → webgl-device-KnEQ5CNv.js} +2 -2
  44. package/dist/es/web-kit.mjs +25 -25
  45. package/dist/iife/web-kit.iife.js +22 -22
  46. package/dist/sw/mvx-tiles-sw.js +97 -49
  47. package/dist/types/index.d.ts +40 -42
  48. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="31434e74-17b8-4299-964d-8ac2681d0da8",e._sentryDebugIdIdentifier="sentry-dbid-31434e74-17b8-4299-964d-8ac2681d0da8")}catch(e){}}();const e=require("./debug-hooks-C_m1SbH2.cjs"),t=require("./shader-type-decoder-BqFbHaKB.cjs"),r=require("./webgl-device-Dpif38ir.cjs");function n(e){return function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}(e)||function(e){return!!Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}(e)}var i=class e extends t.Resource{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(t,r){super(t,r,e.defaultProps),this.shaderLayout=r.shaderLayout}static defaultProps={...t.Resource.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0}},s=class e{static defaultProps={...r.RenderPipeline.defaultProps};static getDefaultPipelineFactory(t){const r=t.getModuleData("@luma.gl/core");return r.defaultPipelineFactory||=new e(t),r.defaultPipelineFactory}device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};_sharedRenderPipelineCache={};get[Symbol.toStringTag](){return"PipelineFactory"}toString(){return`PipelineFactory(${this.device.id})`}constructor(e){this.device=e}createRenderPipeline(e){if(!this.device.props._cachePipelines)return this.device.createRenderPipeline(e);const n={...r.RenderPipeline.defaultProps,...e},i=this._renderPipelineCache,s=this._hashRenderPipeline(n);let o=i[s]?.resource;if(o)i[s].useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: ${i[s].resource} reused, count=${i[s].useCount}, (id=${e.id})`)();else{const e="webgl"===this.device.type&&this.device.props._sharePipelines?this.createSharedRenderPipeline(n):void 0;o=this.device.createRenderPipeline({...n,id:n.id?`${n.id}-cached`:t.uid("unnamed-cached"),_sharedRenderPipeline:e}),o.hash=s,i[s]={resource:o,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()}return o}createComputePipeline(e){if(!this.device.props._cachePipelines)return this.device.createComputePipeline(e);const r={...i.defaultProps,...e},n=this._computePipelineCache,s=this._hashComputePipeline(r);let o=n[s]?.resource;return o?(n[s].useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: ${n[s].resource} reused, count=${n[s].useCount}, (id=${e.id})`)()):(o=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0}),o.hash=s,n[s]={resource:o,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: ${o} created, count=${n[s].useCount}`)()),o}release(e){if(!this.device.props._cachePipelines)return void e.destroy();const r=this._getCache(e),n=e.hash;r[n].useCount--,0===r[n].useCount?(this._destroyPipeline(e),this.device.props.debugFactories&&t.log.log(3,`${this}: ${e} released and destroyed`)()):r[n].useCount<0?(t.log.error(`${this}: ${e} released, useCount < 0, resetting`)(),r[n].useCount=0):this.device.props.debugFactories&&t.log.log(3,`${this}: ${e} released, count=${r[n].useCount}`)()}createSharedRenderPipeline(e){const t=this._hashSharedRenderPipeline(e);let r=this._sharedRenderPipelineCache[t];return r||(r={resource:this.device._createSharedRenderPipelineWebGL(e),useCount:0},this._sharedRenderPipelineCache[t]=r),r.useCount++,r.resource}releaseSharedRenderPipeline(e){if(!e.sharedRenderPipeline)return;const t=this._hashSharedRenderPipeline(e.sharedRenderPipeline.props),r=this._sharedRenderPipelineCache[t];r&&(r.useCount--,0===r.useCount&&(r.resource.destroy(),delete this._sharedRenderPipelineCache[t]))}_destroyPipeline(e){const t=this._getCache(e);return!!this.device.props._destroyPipelines&&(delete t[e.hash],e.destroy(),e instanceof r.RenderPipeline&&this.releaseSharedRenderPipeline(e),!0)}_getCache(e){let t;if(e instanceof i&&(t=this._computePipelineCache),e instanceof r.RenderPipeline&&(t=this._renderPipelineCache),!t)throw new Error(`${this}`);if(!t[e.hash])throw new Error(`${this}: ${e} matched incorrect entry`);return t}_hashComputePipeline(e){const{type:t}=this.device;return`${t}/C/${this._getHash(e.shader.source)}SL${this._getHash(JSON.stringify(e.shaderLayout))}`}_hashRenderPipeline(e){const t=e.vs?this._getHash(e.vs.source):0,r=e.fs?this._getHash(e.fs.source):0,n=this._getWebGLVaryingHash(e),i=this._getHash(JSON.stringify(e.shaderLayout)),s=this._getHash(JSON.stringify(e._uniformBlockLayouts)),o=this._getHash(JSON.stringify(e.bufferLayout)),{type:a}=this.device;if("webgl"===a){const f=this._getHash(JSON.stringify(e.parameters));return`${a}/R/${t}/${r}V${n}T${e.topology}P${f}SL${i}UBL${s}BL${o}`}{const s=this._getHash(JSON.stringify({vertexEntryPoint:e.vertexEntryPoint,fragmentEntryPoint:e.fragmentEntryPoint})),f=this._getHash(JSON.stringify(e.parameters)),u=this._getWebGPUAttachmentHash(e);return`${a}/R/${t}/${r}V${n}T${e.topology}EP${s}P${f}SL${i}BL${o}A${u}`}}_hashSharedRenderPipeline(e){return`webgl/S/${e.vs?this._getHash(e.vs.source):0}/${e.fs?this._getHash(e.fs.source):0}V${this._getWebGLVaryingHash(e)}`}_getHash(e){return void 0===this._hashes[e]&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}_getWebGLVaryingHash(e){const{varyings:t=[],bufferMode:r=null}=e;return this._getHash(JSON.stringify({varyings:t,bufferMode:r}))}_getWebGPUAttachmentHash(e){const t=e.colorAttachmentFormats??[this.device.preferredColorFormat],r=e.depthStencilAttachmentFormat??(e.parameters?.depthWriteEnabled?this.device.preferredDepthFormat:null);return this._getHash(JSON.stringify({colorAttachmentFormats:t,depthStencilAttachmentFormat:r}))}},o=class e{static defaultProps={...r.Shader.defaultProps};static getDefaultShaderFactory(t){const r=t.getModuleData("@luma.gl/core");return r.defaultShaderFactory||=new e(t),r.defaultShaderFactory}device;_cache={};get[Symbol.toStringTag](){return"ShaderFactory"}toString(){return`${this[Symbol.toStringTag]}(${this.device.id})`}constructor(e){this.device=e}createShader(e){if(!this.device.props._cacheShaders)return this.device.createShader(e);const r=this._hashShader(e);let n=this._cache[r];if(n)n.useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: Reusing shader ${n.resource.id} count=${n.useCount}`)();else{const i=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=n={resource:i,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: Created new shader ${i.id}`)()}return n.resource}release(e){if(!this.device.props._cacheShaders)return void e.destroy();const r=this._hashShader(e),n=this._cache[r];if(n)if(n.useCount--,0===n.useCount)this.device.props._destroyShaders&&(delete this._cache[r],n.resource.destroy(),this.device.props.debugFactories&&t.log.log(3,`${this}: Releasing shader ${e.id}, destroyed`)());else{if(n.useCount<0)throw new Error(`ShaderFactory: Shader ${e.id} released too many times`);this.device.props.debugFactories&&t.log.log(3,`${this}: Releasing shader ${e.id} count=${n.useCount}`)()}}_hashShader(e){return`${e.stage}:${e.source}`}};function a(e){return Array.isArray(e)?0===e.length||"number"==typeof e[0]:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}(e)}var f=class{layout;constructor(e){this.layout=e}has(e){return Boolean(this.layout.fields[e])}get(e){const t=this.layout.fields[e];return t?{offset:t.offset,size:t.size}:void 0}getFlatUniformValues(e){const t={};for(const[r,n]of Object.entries(e)){const e=this.layout.uniformTypes[r];e?this._flattenCompositeValue(t,r,e,n):this.layout.fields[r]&&(t[r]=n)}return t}getData(e){const t=r.getScratchArrayBuffer(this.layout.byteLength);new Uint8Array(t,0,this.layout.byteLength).fill(0);const n={i32:new Int32Array(t),u32:new Uint32Array(t),f32:new Float32Array(t),f16:new Uint16Array(t)},i=this.getFlatUniformValues(e);for(const[r,s]of Object.entries(i))this._writeLeafValue(n,r,s);return new Uint8Array(t,0,this.layout.byteLength)}_flattenCompositeValue(e,n,i,s){if(void 0!==s)if("string"==typeof i||this.layout.fields[n])e[n]=s;else{if(Array.isArray(i)){const r=i[0],o=i[1];if(Array.isArray(r))throw new Error(`Nested arrays are not supported for ${n}`);if("string"==typeof r&&a(s))return void this._flattenPackedArray(e,n,r,o,s);if(!Array.isArray(s))return void t.log.warn(`Unsupported uniform array value for ${n}:`,s)();for(let t=0;t<Math.min(s.length,o);t++){const i=s[t];void 0!==i&&this._flattenCompositeValue(e,`${n}[${t}]`,r,i)}return}if(r.isCompositeShaderTypeStruct(i)&&function(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&!ArrayBuffer.isView(e)}(s))for(const[t,r]of Object.entries(s)){if(void 0===r)continue;const s=`${n}.${t}`;this._flattenCompositeValue(e,s,i[t],r)}else t.log.warn(`Unsupported uniform value for ${n}:`,s)()}}_flattenPackedArray(e,t,n,i,s){const o=s,a=r.getLeafLayoutInfo(n,this.layout.layout).components;for(let r=0;r<i;r++){const n=r*a;if(n>=o.length)break;e[`${t}[${r}]`]=1===a?Number(o[n]):u(s,n,n+a)}}_writeLeafValue(e,r,n){const i=this.layout.fields[r];if(!i)return void t.log.warn(`Uniform ${r} not found in layout`)();const{type:s,components:o,columns:a,rows:f,offset:u,columnStride:h}=i,c=e[s];if(1===o)return void(c[u]=Number(n));const d=n;if(1===a){for(let e=0;e<o;e++)c[u+e]=Number(d[e]??0);return}let l=0;for(let t=0;t<a;t++){const e=u+t*h;for(let t=0;t<f;t++)c[e+t]=Number(d[l++]??0)}}};function u(e,t,r){return Array.prototype.slice.call(e,t,r)}var h=class{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name||"unnamed",e?.name&&e?.shaderLayout){const t=e?.shaderLayout.bindings?.find(t=>"uniform"===t.type&&t.name===e?.name);if(!t)throw new Error(e?.name);const r=t;for(const e of r.uniforms||[])this.bindingLayout[e.name]=e}}setUniforms(e){for(const[t,r]of Object.entries(e))this._setUniform(t,r)&&!this.needsRedraw&&this.setNeedsRedraw(`${this.name}.${t}=${r}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,t){return!function(e,t,r=16){if(e===t)return!0;const n=e,i=t;if(!a(n)||!a(i))return!1;if(n.length!==i.length)return!1;const s=Math.min(r,128);if(n.length>s)return!1;for(let o=0;o<n.length;++o)if(i[o]!==n[o])return!1;return!0}(this.uniforms[e],t)&&(this.uniforms[e]=a(r=t)?r.slice():r,this.modifiedUniforms[e]=!0,this.modified=!0,!0);var r}},c=class{device;uniformBlocks=new Map;shaderBlockLayouts=new Map;shaderBlockWriters=new Map;uniformBuffers=new Map;constructor(e,t){this.device=e;for(const[n,i]of Object.entries(t)){const t=n,s=r.makeShaderBlockLayout(i.uniformTypes??{},{layout:i.layout??d(e)}),o=new f(s);this.shaderBlockLayouts.set(t,s),this.shaderBlockWriters.set(t,o);const a=new h({name:n});a.setUniforms(o.getFlatUniformValues(i.defaultUniforms||{})),this.uniformBlocks.set(t,a)}}destroy(){for(const e of this.uniformBuffers.values())e.destroy()}setUniforms(e,t){for(const[r,n]of Object.entries(e)){const e=r,t=this.shaderBlockWriters.get(e)?.getFlatUniformValues(n||{});this.uniformBlocks.get(e)?.setUniforms(t||{})}this.updateUniformBuffers(t)}getUniformBufferByteLength(e){const t=this.shaderBlockLayouts.get(e)?.byteLength||0;return Math.max(t,1024)}getUniformBufferData(e){const t=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.shaderBlockWriters.get(e)?.getData(t)||new Uint8Array(0)}createUniformBuffer(e,r){r&&this.setUniforms(r);const n=this.getUniformBufferByteLength(e),i=this.device.createBuffer({usage:t.Buffer.UNIFORM|t.Buffer.COPY_DST,byteLength:n}),s=this.getUniformBufferData(e);return i.write(s),i}getManagedUniformBuffer(e){if(!this.uniformBuffers.get(e)){const r=this.getUniformBufferByteLength(e),n=this.device.createBuffer({usage:t.Buffer.UNIFORM|t.Buffer.COPY_DST,byteLength:r});this.uniformBuffers.set(e,n)}return this.uniformBuffers.get(e)}updateUniformBuffers(e){let r=!1;for(const t of this.uniformBlocks.keys()){const n=this.updateUniformBuffer(t,e);r||=n}return r&&t.log.log(3,`UniformStore.updateUniformBuffers(): ${r}`)(),r}updateUniformBuffer(e,r){const n=this.uniformBlocks.get(e);let i=this.uniformBuffers.get(e),s=!1;if(i&&n?.needsRedraw){s||=n.needsRedraw;const o=this.getUniformBufferData(e);if(i=this.uniformBuffers.get(e),i&&(r?this.device.writeBufferViaCommandEncoder(r,i,o):i.write(o)),t.log.level>=4){const r=this.uniformBlocks.get(e)?.getAllUniforms();t.log.log(4,`Writing to uniform buffer ${String(e)}`,o,r)()}}return s}};function d(e){return"webgpu"===e.type?"wgsl-uniform":"std140"}var l=/^(vs|fs):(?:#(?:decl|main-start|main-end)|[A-Za-z_][\w-]*)$/;function y(e=[],t){const r=[],n={},i={},s={},o={};for(const a of e)p({modules:r,defines:n,injections:i,vertexInputs:s,varyings:o},a),p({modules:r,defines:n,injections:i,vertexInputs:s,varyings:o},a[t]);for(const a of Object.keys(o))if(s[a])throw new Error(`ShaderPlugin name "${a}" cannot be both a vertex input and a varying`);return{modules:r,defines:n,injections:i,vertexInputs:s,varyings:o}}function g(e=[],t=[]){const r=[...e],n=new Set(r.map(e=>e.name));for(const i of t)n.has(i.name)||(r.push(i),n.add(i.name));return r}function p(e,t){if(t){t.modules?.length&&e.modules.push(...t.modules),t.defines&&Object.assign(e.defines,t.defines);for(const[r,n]of Object.entries(t.vertexInputs||{})){b(r,"vertex input");const t=e.vertexInputs[r];if(t&&t!==n)throw new Error(`ShaderPlugin vertex input "${r}" has conflicting types "${t}" and "${n}"`);e.vertexInputs[r]=n}for(const[r,n]of Object.entries(t.varyings||{})){b(r,"varying");const t=m(r,n),i=e.varyings[r];if(i&&(i.type!==t.type||i.interpolation!==t.interpolation))throw new Error(`ShaderPlugin varying "${r}" has conflicting declarations "${i.type}/${i.interpolation}" and "${t.type}/${t.interpolation}"`);e.varyings[r]=t}for(const r of t.injections||[])w(r.target),e.injections[r.target]||(e.injections[r.target]=[]),e.injections[r.target].push({injection:r.injection,order:r.order??0})}}function b(e,t){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)||e.startsWith("_luma_"))throw new Error(`ShaderPlugin ${t} "${e}" must be a valid non-reserved identifier`)}function m(e,r){const{primitiveType:n}=t.shaderTypeDecoder.getAttributeShaderTypeInfo(r.type),i="i32"===n||"u32"===n,s=r.interpolation||(i?"flat":"smooth");if(i&&"smooth"===s)throw new Error(`ShaderPlugin integer varying "${e}" must use flat interpolation`);return{type:r.type,interpolation:s}}function w(e){if(!l.test(e))throw new Error(`ShaderPlugin injection target "${e}" must be a named shader anchor or hook`)}var v={};function _(e="id"){return v[e]=v[e]||1,`${e}-${v[e]++}`}function B(e,t){if(!e||!t.some(e=>e.bindingLayout?.length))return e;const r={...e,bindings:e.bindings.map(e=>({...e}))};"attributes"in(e||{})&&(r.attributes=e?.attributes||[]);for(const n of t)for(const e of n.bindingLayout||[])for(const t of $(e.name)){const n=r.bindings.find(e=>e.name===t);0===n?.group&&(n.group=e.group),n&&void 0!==e.visibility&&(n.visibility=e.visibility)}return r}function L(e,t,r=[]){return e?t?{...e,attributes:e.attributes.length?O(e.attributes,t.attributes.filter(e=>r.includes(e.name))):t.attributes,bindings:D(e.bindings,t.bindings)}:e:t}function P(e){return Boolean(e.uniformTypes&&!function(e){for(const t in e)return!1;return!0}(e.uniformTypes))}function E(t){const r=[];for(const n of t){const t=e.getShaderModuleUniformBlockName(n),i=new Set([n.vs,n.fs].flatMap(t=>t?e.getGLSLUniformBlocks(t).filter(e=>e.isStd140).map(e=>e.blockName):[])),s=i.has(t)?t:1===i.size?i.values().next().value:void 0;P(n)&&s&&r.push({name:s,uniformTypes:n.uniformTypes})}return r}function S(e,t){const r=[],n=new Set;for(const i of[...e||[],...t||[]])n.has(i.name)||(n.add(i.name),r.push(i));return r}function $(e){const t=new Set([e,`${e}Uniforms`]);return e.endsWith("Uniforms")||t.add(`${e}Sampler`),[...t]}function D(e,t){const r=e.map(e=>({...e})),n=new Set(e.map(e=>e.name)),i=new Set(e.map(e=>`${e.group}:${e.location}`));for(const s of t){const e=`${s.group}:${s.location}`;n.has(s.name)||i.has(e)||r.push({...s})}return r}function O(e,t){const r=e.map(e=>({...e})),n=new Map(e.map(e=>[e.name,e])),i=new Map(e.map(e=>[e.location,e]));for(const s of t){const e=n.get(s.name);if(e){if(e.type!==s.type||e.location!==s.location)throw new Error(`Shader attribute "${s.name}" conflicts with its inferred type or location`);continue}const t=i.get(s.location);if(t)throw new Error(`Shader attributes "${t.name}" and "${s.name}" both use location ${s.location}`);r.push({...s})}return r}function U(e,t={}){const r={bindings:{},uniforms:{}};return Object.keys(e).forEach(i=>{const s=e[i];var o;Object.prototype.hasOwnProperty.call(t,i)||(n(o=s)||"number"==typeof o||"boolean"==typeof o)?r.uniforms[i]=s:r.bindings[i]=s}),r}var T=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;directBindings={};constructor(r,n){Object.assign(this.options,n);const i=e.getShaderModuleDependencies(Object.values(r).filter(G));for(const e of i)r[e.name]=e;t.log.log(1,"Creating ShaderInputs with modules",Object.keys(r))(),this.modules=r,this.moduleUniforms={},this.moduleBindings={};for(const[e,s]of Object.entries(r))s&&(this._addModule(s),s.name&&e!==s.name&&!this.options.disableWarnings&&t.log.warn(`Module name: ${e} vs ${s.name}`)())}destroy(){}setProps(e){e.bindings&&Object.assign(this.directBindings,e.bindings);for(const r of Object.keys(e)){if("bindings"===r)continue;const n=r,i=e[n]||{},s=this.modules[n];if(s){const e=this.moduleUniforms[n],t=this.moduleBindings[n],r=s.getUniforms?.(i,e)||i,{uniforms:o,bindings:a}=U(r,s.uniformTypes);this.moduleUniforms[n]=V(e,o,s.uniformTypes),this.moduleBindings[n]={...t,...a}}else this.options.disableWarnings||t.log.warn(`Module ${r} not found`)()}}getModules(){return Object.values(this.modules)}addModules(t){const r=e.getShaderModuleDependencies(t);for(const e of r){const t=e.name;this.modules[t]||(this.modules[t]=e,this._addModule(e))}}getUniformValues(){return this.moduleUniforms}getBindingValues(){const e={};for(const t of Object.values(this.moduleBindings))Object.assign(e,t);return Object.assign(e,this.directBindings),e}getModuleBindingValues(e){const t=this.moduleBindings[e];return t?{...t}:{}}getDebugTable(){const e={};for(const[t,r]of Object.entries(this.moduleUniforms))for(const[n,i]of Object.entries(r))e[`${t}.${n}`]={type:this.modules[t].uniformTypes?.[n],value:String(i)};return e}_addModule(e){const t=e.name;this.moduleUniforms[t]=V({},e.defaultUniforms||{},e.uniformTypes),this.moduleBindings[t]={}}};function V(e={},t={},r={}){const n={...e};for(const[i,s]of Object.entries(t))void 0!==s&&(n[i]=A(e[i],s,r[i]));return n}function A(e,t,r){if(!r||"string"==typeof r)return x(t);if(Array.isArray(r)){if(C(t)||!Array.isArray(t))return x(t);const n=Array.isArray(e)&&!C(e)?[...e]:[],i=n.slice();for(let e=0;e<t.length;e++){const s=t[e];void 0!==s&&(i[e]=A(n[e],s,r[0]))}return i}if(!j(t))return x(t);const n=r,i=j(e)?e:{},s={...i};for(const[o,a]of Object.entries(t))void 0!==a&&(s[o]=A(i[o],a,n[o]));return s}function x(e){return ArrayBuffer.isView(e)?Array.prototype.slice.call(e):Array.isArray(e)?C(e)?e.slice():e.map(e=>void 0===e?void 0:x(e)):j(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:x(t)])):e}function C(e){return ArrayBuffer.isView(e)||Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}function j(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&!ArrayBuffer.isView(e)}function G(e){return Boolean(e?.dependencies)}var R=t.Buffer.DEBUG_DATA_MAX_LENGTH,M=class{device;id;ready;usage;props;isReady=!0;destroyed=!1;generation=0;updateTimestamp;debugData=new ArrayBuffer(0);_debugDataEnabled;_maxDebugDataByteLength;_ownsBuffer;_buffer;get buffer(){return this._buffer}get byteLength(){return this._buffer.byteLength}get[Symbol.toStringTag](){return"DynamicBuffer"}toString(){return`DynamicBuffer:"${this.id}":${this.byteLength}B`}toJSON(){return this.toString()}constructor(e,r){const{debugData:n=!1,buffer:i,ownsBuffer:s=!0,...o}=r;if(i&&i.device!==e)throw new Error("DynamicBuffer adopted buffers must belong to the supplied device");if(i&&(void 0!==o.byteLength||void 0!==o.data))throw new Error("DynamicBuffer cannot combine an adopted buffer with byteLength or data");const a=r.id||i?.id||_("dynamic-buffer"),f={...o,id:a,usage:o.usage??i?.usage,indexType:o.indexType??i?.indexType};(f.usage||0)&t.Buffer.INDEX&&!f.indexType&&(o.data instanceof Uint32Array?f.indexType="uint32":o.data instanceof Uint16Array?f.indexType="uint16":o.data instanceof Uint8Array&&(f.indexType="uint8")),delete f.data,delete f.byteOffset,this.device=e,this.id=a,this.props=f,this.usage=f.usage||0,this._debugDataEnabled=Boolean(n),this._maxDebugDataByteLength="object"==typeof n&&void 0!==n.maxByteLength?n.maxByteLength:R,this._ownsBuffer=s,this._buffer=i??this.device.createBuffer({...o,id:a}),this.ready=Promise.resolve(this._buffer),this.updateTimestamp=this._buffer.updateTimestamp,this._resetDebugData(this._buffer.byteLength),o.data&&this._writeDebugData(o.data,o.byteOffset||0)}write(e,t=0){this._buffer.write(e,t),this._touch(),this._writeDebugData(e,t)}async mapAndWriteAsync(e,t=0,r=this.byteLength-t){let n=null;await this._buffer.mapAndWriteAsync(async(t,i)=>{await e(t,i),n=new Uint8Array(t.slice(0,r))},t,r),this._touch(),n&&this._writeDebugData(n,t)}async readAsync(e=0,t=this.byteLength-e){const r=await this._buffer.readAsync(e,t);return this._writeDebugData(r,e)&&this._touch(),r}async mapAndReadAsync(e,t=0,r=this.byteLength-t){let n=null;const i=await this._buffer.mapAndReadAsync(async(t,r)=>(n=new Uint8Array(t.slice(0)),await e(t,r)),t,r);return n&&this._writeDebugData(n,t)&&this._touch(),i}resize(e){const{byteLength:t,preserveData:r=!1}=e;if(t===this.byteLength)return!1;const n=Math.min(e.copyByteLength??Math.min(this.byteLength,t),this.byteLength,t),i=this._buffer,s=this.debugData.slice(0),{data:o,byteOffset:a,...f}=this.props,u=this.device.createBuffer({...f,byteLength:t});return r&&n>0&&this._copyBufferContents(i,u,n),this._buffer=u,this._resetDebugData(t),r&&s.byteLength>0&&this._writeDebugData(s,0),this._ownsBuffer&&i.destroy(),this._ownsBuffer=!0,this.generation++,this._touch(),!0}ensureSize(e,t){return!(e<=this.byteLength)&&this.resize({byteLength:e,preserveData:t?.preserveData})}getBinding(e){return void 0===e?.offset&&void 0===e?.size?this._buffer:{buffer:this._buffer,offset:e?.offset,size:e?.size}}destroy(){this.destroyed||(this._ownsBuffer&&this._buffer.destroy(),this.destroyed=!0,this.debugData=new ArrayBuffer(0))}_copyBufferContents(e,t,r){const n="webgpu"===this.device.type?4*Math.ceil(r/4):r,i=this.device.createCommandEncoder();i.copyBufferToBuffer({sourceBuffer:e,destinationBuffer:t,size:n}),this.device.submit(i.finish())}_touch(){this.updateTimestamp=this.device.incrementTimestamp()}_resetDebugData(e){this._debugDataEnabled?this.debugData=new ArrayBuffer(Math.min(e,this._maxDebugDataByteLength)):this.debugData=new ArrayBuffer(0)}_writeDebugData(e,t){if(!this._debugDataEnabled||0===this.debugData.byteLength||t>=this.debugData.byteLength)return!1;const r=ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),n=new Uint8Array(this.debugData),i=Math.min(r.byteLength,n.byteLength-t);return n.set(r.subarray(0,i),t),i>0}};function k(e){return null!==e&&"object"==typeof e&&"buffer"in e}function z(e){return e instanceof M?e:k(e)&&e.buffer instanceof M?e.buffer:null}function F(e){return{buffer:(t=e.buffer,t instanceof M?t.buffer:t),offset:e.offset,size:e.size};var t}var N=/^vertex-list<([^<>]+)>$/,I=/^value-list<([^<>]+)>$/;function H(e){return N.test(e)}function Y(e){return I.test(e)}function q(e){const r=function(e){const r=N.exec(e),n=I.exec(e),i=r?.[1]??n?.[1]??e;try{t.vertexFormatDecoder.getVertexFormatInfo(i)}catch{throw new Error(`Unsupported GPUVector format ${e}`)}return i}(e),n=H(e),i=Y(e),s=t.vertexFormatDecoder.getVertexFormatInfo(r),o=s.type,a=s.normalized,f=function(e,t){if(t)return"f32";switch(e){case"float32":return"f32";case"float16":return"f16";case"uint8":case"uint16":case"uint32":return"u32";case"sint8":case"sint16":case"sint32":return"i32";default:throw new Error(`Unsupported GPUVector component type ${e}`)}}(o,a);return{format:e,elementFormat:r,vertexList:n,valueList:i,type:o,signedDataType:W(r,o),primitiveType:f,components:s.components,byteLength:s.byteLength,integer:s.integer,signed:s.signed,normalized:a,...s.webglOnly?{webglOnly:!0}:{}}}function W(e,t){if("unorm10-10-10-2"===e)return"uint32";switch(t){case"unorm8":return"uint8";case"snorm8":return"sint8";case"unorm16":return"uint16";case"snorm16":return"sint16";default:return t}}var J=class{buffer;format;length;byteOffset;byteStride;constructor(e){const r=t.vertexFormatDecoder.getVertexFormatInfo(e.format).byteLength,n=e.byteOffset??0,i=e.byteStride??r;if(X(e.length,"GPUDataView length"),X(n,"GPUDataView byteOffset"),X(i,"GPUDataView byteStride"),i<r)throw new Error(`GPUDataView byteStride ${i} is smaller than ${e.format} byte length ${r}`);const s=0===e.length?0:(e.length-1)*i+r,o=n+s;if(!Number.isSafeInteger(s)||!Number.isSafeInteger(o))throw new Error("GPUDataView byte range must use safe integers");if(o>e.buffer.byteLength)throw new Error("GPUDataView exceeds its backing buffer byte length");this.buffer=e.buffer,this.format=e.format,this.length=e.length,this.byteOffset=n,this.byteStride=i}get elementByteLength(){return t.vertexFormatDecoder.getVertexFormatInfo(this.format).byteLength}get byteLength(){return 0===this.length?0:(this.length-1)*this.byteStride+this.elementByteLength}};function X(e,t){if(!Number.isSafeInteger(e)||e<0)throw new Error(`${t} must be a non-negative safe integer`)}function Z(e){return Boolean(e&&"object"==typeof e&&"struct"===e.type)}function K(e,n){const i=Object.entries(e);if(0===i.length)throw new Error("GPUData struct format must declare at least one field");return"packed"===n?function(e){const r=[];let n=0,i=0;for(const[s,o]of e){const e=t.vertexFormatDecoder.getVertexFormatInfo(o);if(e.webglOnly)throw new Error(`Packed GPUData struct field "${s}" uses WebGL-only format ${o}`);n=te(n,Math.min(4,e.byteLength)),r.push([s,Object.freeze({format:o,byteOffset:n,byteLength:e.byteLength})]),n+=e.byteLength,i+=e.components}return Object.freeze({type:"struct",layout:"packed",fields:Object.freeze(Object.fromEntries(r)),components:i,byteStride:te(n,4),rowByteLength:n})}(i):function(e){const n=Object.fromEntries(e.map(([e,t])=>[e,Q(t)])),i=r.makeShaderBlockLayout(n,{layout:"wgsl-storage"}),s=[];let o=0,a=0;for(const[r,f]of e){const e=t.vertexFormatDecoder.getVertexFormatInfo(f),n=4*i.fields[r].offset;s.push([r,Object.freeze({format:f,byteOffset:n,byteLength:e.byteLength})]),o=Math.max(o,n+e.byteLength),a+=e.components}return Object.freeze({type:"struct",layout:"wgsl-storage",fields:Object.freeze(Object.fromEntries(s)),components:a,byteStride:i.byteLength,rowByteLength:o})}(i)}function Q(e){const r=t.vertexFormatDecoder.getVertexFormatInfo(e);switch(r.type){case"float32":return ee("f32",r.components);case"sint32":return ee("i32",r.components);case"uint32":return ee("u32",r.components);default:return ee("u32",Math.ceil(r.byteLength/4))}}function ee(e,t){return 1===t?e:`vec${t}<${e}>`}function te(e,t){return Math.ceil(e/t)*t}var re=class{buffer;ownsDataBuffer;constructor(e,t){this.buffer=e,this.ownsDataBuffer=t}get ownsBuffer(){return this.ownsDataBuffer}transferBufferOwnership(e){if(e.buffer!==this.buffer)throw new Error("GPUData ownership can only be transferred to the same buffer");e.ownsDataBuffer=this.ownsDataBuffer,this.ownsDataBuffer=!1}destroy(){this.ownsDataBuffer&&(this.buffer.destroy(),this.ownsDataBuffer=!1)}},ne=class extends re{dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;readbackMetadata;valueOffsets;nullBitmap;valueByteLength;constructor(e){const{buffer:t,format:r,length:n,valueLength:i,stride:s,byteOffset:o=0,byteStride:a,rowByteLength:f,ownsBuffer:u=!1,readbackMetadata:h,valueOffsets:c,nullBitmap:d,valueByteLength:l,dataType:y}=e;let g;super(t,u),g=r?"string"==typeof r?r:K(r,e.layout??"wgsl-storage"):void 0;const p=Z(g)?g:void 0,b="string"==typeof g?q(g):void 0;if(this.dataType=y,this.format=g,this.length=n,this.valueLength=i??n,this.stride=s??b?.components??p?.components??a??f??1,this.byteOffset=o,this.rowByteLength=f??p?.rowByteLength??b?.byteLength??a??this.stride,this.byteStride=a??p?.byteStride??this.rowByteLength,p){if(this.rowByteLength<p.rowByteLength)throw new Error(`GPUData rowByteLength ${this.rowByteLength} is smaller than struct format row byte length ${p.rowByteLength}`);if(this.byteStride<Math.max(p.byteStride,this.rowByteLength))throw new Error(`GPUData byteStride ${this.byteStride} is smaller than its struct row layout`)}this.readbackMetadata=h,this.valueOffsets=c,this.nullBitmap=d,this.valueByteLength=l}getChild(e){if(!Z(this.format))return null;const t=this.format.fields[e];return t?new J({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}getChildAt(e){if(!Z(this.format))return null;const t=Object.values(this.format.fields)[e];return t?new J({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}},ie=class{name;dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;bufferLayout;data=[];device;bufferProps;isAppendable=!1;ownsDataChunks=!0;ownedVectors=[];appendableByteLength=0;constructor(e){switch(e.type){case"buffer":{const{name:t,buffer:r,format:n,length:i,valueLength:s=i,byteOffset:o=0,ownsBuffer:a=!1}=e,{stride:f,byteStride:u,rowByteLength:h}=se(e);return this.name=t,this.dataType=e.dataType,this.format=n,this.length=i,this.valueLength=s,this.stride=f,this.byteOffset=o,this.byteStride=u,this.rowByteLength=h,void this.data.push(new ne({buffer:r,format:n,length:i,valueLength:s,stride:f,byteOffset:o,byteStride:u,rowByteLength:h,ownsBuffer:a,dataType:e.dataType}))}case"interleaved":{const{name:t,buffer:r,format:n,length:i,valueLength:s=i,byteOffset:o=0,byteStride:a,attributes:f,ownsBuffer:u=!1}=e;return this.name=t,this.dataType=e.dataType,this.format=n,this.length=i,this.valueLength=s,this.stride=a,this.byteOffset=o,this.byteStride=a,this.rowByteLength=a,this.bufferLayout={name:t,byteStride:a,attributes:f},void this.data.push(new ne({buffer:r,format:n,length:i,valueLength:s,stride:a,byteOffset:o,byteStride:a,rowByteLength:a,ownsBuffer:u,dataType:e.dataType}))}case"data":{const t=e.format??function(e){return e[0]?.format}(e.data),r=t?q(t):void 0,{name:n,data:i,stride:s=i[0]?.stride??r?.components??1,valueLength:o=i.reduce((e,t)=>e+t.valueLength,0),byteStride:a=i[0]?.byteStride??r?.byteLength,rowByteLength:f=i[0]?.rowByteLength??r?.byteLength,bufferLayout:u,ownsData:h=!1}=e;if(void 0===a||void 0===f)throw new Error("GPUVector requires format or explicit byte layout metadata");return t&&function(e,t){if(e.find(e=>e.format!==t))throw new Error("GPUVector data chunks must share the declared format")}(i,t),this.name=n,this.dataType=e.dataType,this.format=t,this.length=i.reduce((e,t)=>e+t.length,0),this.valueLength=o,this.stride=s,this.byteOffset=1===i.length?i[0].byteOffset:0,this.byteStride=a,this.rowByteLength=f,this.bufferLayout=u,this.ownsDataChunks=h,void this.data.push(...i)}case"appendable":{const{name:t,device:r,format:n,valueLength:i=0,bufferProps:s}=e,{stride:o,byteStride:a,rowByteLength:f}=se(e);return this.name=t,this.dataType=e.dataType,this.format=n,this.length=0,this.valueLength=i,this.stride=o,this.byteOffset=0,this.byteStride=a,this.rowByteLength=f,this.device=r,this.bufferProps=s,void(this.isAppendable=!0)}}}get ownsBuffer(){return this.ownsDataChunks&&this.data.some(e=>e.ownsBuffer)||this.ownedVectors.some(e=>e.ownsBuffer)}get capacityRows(){return this.isAppendable?this.length:void 0}get appendedByteLength(){return this.appendableByteLength}addData(e){if(this.format&&e.format!==this.format)throw new Error("GPUVector.addData() requires matching formats");if(e.byteStride!==this.byteStride)throw new Error("GPUVector.addData() requires matching byteStride");if(e.rowByteLength!==this.rowByteLength)throw new Error("GPUVector.addData() requires matching rowByteLength");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this}appendDataChunk(e,t=this.appendableByteLength+e.buffer.byteLength){if(!this.isAppendable)throw new Error("GPUVector.appendDataChunk() requires appendable vector storage");if(this.format&&e.format!==this.format)throw new Error("GPUVector.appendDataChunk() requires matching formats");if(e.byteStride!==this.byteStride||e.rowByteLength!==this.rowByteLength)throw new Error("GPUVector.appendDataChunk() requires matching byte layout metadata");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this.appendableByteLength=t,this}resetLastBatch(){if(!this.isAppendable)throw new Error("GPUVector.resetLastBatch() requires appendable vector storage");for(const e of this.data.splice(0))e.destroy();return this.length=0,this.valueLength=0,this.appendableByteLength=0,this}retainOwnedVectors(e){return this.ownedVectors.push(...e),this}transferBufferOwnership(e){const t=this.data[0],r=e.data[0];if(!t||!r||t.buffer!==r.buffer)throw new Error("GPUVector ownership can only be transferred to the same buffer");t.transferBufferOwnership(r)}destroy(){if(this.ownsDataChunks)for(const e of this.data)e.destroy();for(const e of this.ownedVectors.splice(0))e.destroy()}};function se(e){const t=e.format?q(e.format):void 0,r=e.rowByteLength??e.byteStride??t?.byteLength;if(void 0===r)throw new Error("GPUVector requires format or explicit rowByteLength");return{stride:e.stride??t?.components??1,byteStride:e.byteStride??r,rowByteLength:r}}var oe=new class{poolSize=20;bufferPools;constructor(){this.bufferPools=new Map}createOrReuse(e,r){if(r>e.limits.maxBufferSize)throw new Error(`Buffer pool cannot allocate ${r} bytes: device.limits.maxBufferSize is ${e.limits.maxBufferSize}`);const n=this.bufferPools.get(e),i=n?n.findIndex(e=>e.byteLength>=r):-1;if(i<0)return e.createBuffer({usage:t.Buffer.VERTEX|t.Buffer.STORAGE|t.Buffer.COPY_DST|t.Buffer.COPY_SRC,byteLength:r});const[s]=n.splice(i,1);return s}recycle(e){const t=e.device;this.bufferPools.has(t)||this.bufferPools.set(t,[]);const r=this.bufferPools.get(t),n=r.findIndex(t=>t.byteLength>e.byteLength);n<0?r.push(e):r.splice(n,0,e),this.purge()}purge(){for(const[e,t]of this.bufferPools){const r=e.isLost?0:this.poolSize;for(;t.length>r;)t.shift().destroy();0===t.length&&this.bufferPools.delete(e)}}},ae=class e{static get bufferPoolSize(){return oe.poolSize}static set bufferPoolSize(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("GPUDataEvaluator.bufferPoolSize must be a non-negative safe integer");oe.poolSize=e,oe.purge()}type;size;get offset(){return this._offset}get stride(){return this._stride}normalized;isConstant;length;get byteLength(){return this._byteLength}ValueType;source=null;format;_id;_destroyed=!1;_value;_offset;_stride;_byteLength;_gpuVector;_bufferOwnership="owned";_targetBuffer;static fromArray(r,{type:n,size:i=1,offset:s=0,stride:o=0,normalized:a=!1}){let f,u=n;Array.isArray(r)?(u=u||"float32",f=new(t.getTypedArrayFromDataType(u))(r)):r instanceof Float64Array?(u="uint32",i*=2,s*=2,o*=2,f=new Uint32Array(r.buffer,r.byteOffset,r.byteLength/4)):(u=u||t.getDataTypeFromTypedArray(r),f=r);return new e({id:`<${u} * ${i}>`,type:u,size:i,offset:s,stride:o,normalized:a,value:f})}static fromConstant(r,n="float32"){const i=t.getTypedArrayFromDataType(n);let s;return Array.isArray(r)?s=`[${r.join(",")}]`:(s=String(r),r=[r]),new e({id:s,isConstant:!0,type:n,size:r.length,value:new i(r)})}static fromGPUData(t,r={}){!function(e){if(!e.format)throw new Error("GPUDataEvaluator.fromGPUData() requires GPUData format metadata");if(H(e.format)||Y(e.format))throw new Error("GPUDataEvaluator.fromGPUData() does not support variable-length input");const t=q(e.format).byteLength;if(e.rowByteLength!==t)throw new Error(`GPUDataEvaluator.fromGPUData() requires rowByteLength ${t} for GPUData`)}(t);const n=new J({buffer:t.buffer,format:t.format,length:t.length,byteOffset:t.byteOffset,byteStride:t.byteStride});return new e({...ue(n),id:r.id,gpuData:t})}static fromGPUDataView(t,r={}){return new e({...ue(t),id:r.id,buffer:t.buffer})}constructor(r){const{id:n,value:i,buffer:s,gpuData:o,format:a,source:f=null,isConstant:u=!1}=r;if(!(f||i||s||o))throw new Error("GPUDataEvaluator must have a value source");let{type:h,size:c,offset:d,stride:l,normalized:y,length:g}=r;if(f instanceof e?(h=h??f.type,c=c??f.size,d=d??f.offset,l=l??f.stride,y=y??f.normalized,g=g??f.length):(c=c??1,d=d??0,y=y??!1,g=u?1:g),!h)throw new Error("GPUDataEvaluator: type not defined");if(this._id=n,this.type=h,this.size=c,this.ValueType=t.getTypedArrayFromDataType(this.type),this._offset=d,this._stride=l||this.ValueType.BYTES_PER_ELEMENT*c,this.normalized=y,this.source=f,this.format=a,void 0===g)if(u)g=1;else{if(!i)throw new Error("GPUDataEvaluator: length not defined");g=Math.ceil(i.byteLength/this.stride)}this.isConstant=u,this.length=g;const p=this.ValueType.BYTES_PER_ELEMENT*this.size;this._byteLength=0===g?0:(g-1)*this.stride+p,this._value=i,this._bufferOwnership=f instanceof e||s||o?"borrowed":"owned",o?this._gpuVector=new ie({type:"data",name:this._id??"data",format:o.format,data:[o],stride:o.stride,byteStride:o.byteStride,rowByteLength:o.rowByteLength}):s&&(this._gpuVector=this.createGPUVectorView({buffer:s,name:this._id,format:this.format}))}get value(){return this._value||(this.source instanceof e?this.source.value:void 0)}get evaluated(){return Boolean(this._gpuVector)}get id(){return this._id}get gpuVector(){if(!this._gpuVector)throw new Error(`${this} not evaluated`);return this._gpuVector}get buffer(){return he(this.gpuVector)}setTargetBuffer({buffer:t,byteOffset:r=0,byteStride:n=this.stride}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)throw new Error(`GPUDataEvaluator ${this} already evaluated`);if(!this.source||this.source instanceof e)throw new Error("GPUDataEvaluator target buffers require a deferred operation source");this._targetBuffer={buffer:t,byteOffset:r,byteStride:n}}async evaluate(t,r={}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let n;if(this.source instanceof e){const e=await this.source.evaluate(t);return this._gpuVector=this.createGPUVectorView({...r,buffer:he(e)}),this._gpuVector}if(n=this._getEvaluationBuffer(t),this._value)n.write(this._value);else{const e=await this.source.execute(t,n);if(!e.success)throw e.error||new Error(`${this.source} evaluation failed`);e.value&&(this._value=e.value)}return this._gpuVector=this.createGPUVectorView({...r,buffer:n}),this._gpuVector}evaluateSync(t,r={}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let n;if(this.source instanceof e){const e=this.source.evaluateSync(t);return this._gpuVector=this.createGPUVectorView({...r,buffer:he(e)}),this._gpuVector}if(n=this._getEvaluationBuffer(t),this._value)n.write(this._value);else{const e=this.source.executeSync(t,n);if(!e.success)throw e.error||new Error(`${this.source} evaluation failed`);e.value&&(this._value=e.value)}return this._gpuVector=this.createGPUVectorView({...r,buffer:n}),this._gpuVector}createGPUVectorView(e){const t=e.name??this._id??"vector",r=e.format??this.format??function(e,t,r=!1){return t>=1&&t<=4?de(e,t,r):void 0}(this.type,this.size,this.normalized);if(e.interleaved){const r="object"==typeof e.interleaved&&e.interleaved.attributes?e.interleaved.attributes:function(e){const t=[];return ce(e,t,{byteOffset:0}),t}(this);return new ie({type:"interleaved",name:t,buffer:e.buffer,format:e.format??this.format,length:this.length,byteOffset:this.offset,byteStride:this.stride,attributes:r,ownsBuffer:!1})}return new ie({type:"buffer",name:t,buffer:e.buffer,format:r,length:this.length,stride:this.size,byteOffset:this.offset,byteStride:this.stride,rowByteLength:this.ValueType.BYTES_PER_ELEMENT*this.size,ownsBuffer:!1})}_getEvaluationBuffer(e){const t=this._targetBuffer;if(!t)return oe.createOrReuse(e,this.byteLength);if(t.buffer.device!==e)throw new Error("GPUDataEvaluator target buffer belongs to a different device");const r=this.ValueType.BYTES_PER_ELEMENT*this.size,n=0===this.length?0:(this.length-1)*t.byteStride+r;if(t.byteOffset+n>t.buffer.byteLength)throw new Error("GPUDataEvaluator target buffer is too small for the output layout");return this._offset=t.byteOffset,this._stride=t.byteStride,this._byteLength=n,this._bufferOwnership="borrowed",this._targetBuffer=void 0,t.buffer}async readValue(e=0,t){const{ValueType:r}=this,{size:n,offset:i,stride:s,length:o}=this,a=r.BYTES_PER_ELEMENT*n;if(t=t??o,e=Math.max(0,Math.min(o,e)),t=Math.max(e,Math.min(o,t)),this._value)return function(e,t,r,n){const{ValueType:i,size:s,offset:o,stride:a}=e,f=a/i.BYTES_PER_ELEMENT,u=o/i.BYTES_PER_ELEMENT,h=n-r;if(f===s){const e=u+r*f;return t.subarray(e,e+h*s)}const c=new i(h*s);for(let d=0;d<h;d++){const e=u+(r+d)*f;c.set(t.subarray(e,e+s),d*s)}return c}(this,this._value,e,t);const f=t-e;if(0===f)return new r(0);const u=i+e*s,h=s===a?f*a:(f-1)*s+a,c=await this.buffer.readAsync(u,h),d=new r(c.buffer,c.byteOffset,c.byteLength/r.BYTES_PER_ELEMENT);if(s===a)return d;const l=new Uint8Array(a*f);for(let y=0;y<f;y++){const e=y*s;l.set(c.subarray(e,e+a),y*a)}return new r(l.buffer)}async ensureCPUValue(){const e=this.value;if(e)return e;const t=await this.buffer.readAsync(0,this.offset+this.byteLength);if(t.byteLength%this.ValueType.BYTES_PER_ELEMENT!==0)throw new Error(`${this} backing buffer byte length is not aligned to its scalar type`);const r=t.slice();return this._value=new this.ValueType(r.buffer,r.byteOffset,r.byteLength/this.ValueType.BYTES_PER_ELEMENT),this._value}ensureCPUValueSync(){const e=this.value;if(e)return e;throw new Error(`${this} CPU value is not available for synchronous evaluation`)}toString(){return this._id??this.source?.toString()??this.constructor.name}destroy(){this._gpuVector&&("owned"===this._bufferOwnership&&oe.recycle(he(this._gpuVector)),this._gpuVector=void 0),this._targetBuffer=void 0,this._destroyed=!0}};function fe(e){if(e instanceof ae)return e;if("number"==typeof e||Array.isArray(e))return ae.fromConstant(e);if(e instanceof ne)return ae.fromGPUData(e);if(e instanceof J)return ae.fromGPUDataView(e);throw new Error("getGPUDataEvaluator() requires GPUDataEvaluator, GPUData, GPUDataView, number, or number[]")}function ue(e){const r=q(e.format),n=t.getTypedArrayFromDataType(r.signedDataType),i=n.BYTES_PER_ELEMENT*r.components;if(r.byteLength!==i)throw new Error(`GPUDataEvaluator does not support packed vertex format ${e.format}: ${r.byteLength} physical bytes cannot expose ${r.components} ${r.signedDataType} components`);if(e.byteOffset%n.BYTES_PER_ELEMENT!==0||e.byteStride%n.BYTES_PER_ELEMENT!==0)throw new Error(`GPUDataEvaluator requires ${e.format} offset and stride aligned to ${n.BYTES_PER_ELEMENT} bytes`);return{type:r.signedDataType,size:r.components,offset:e.byteOffset,stride:e.byteStride,normalized:r.normalized,length:e.length,format:e.format}}function he(e){const t=function(e){const[t,...r]=e.data;if(!t||r.length>0)throw new Error(`GPUDataEvaluator requires exactly one GPUData chunk for "${e.name}"`);return t}(e).buffer;return t instanceof M?t.buffer:t}function ce(e,t,r){const n=e.source;if(!n||n instanceof ae||"interleave"!==n.name)t.push({attribute:e.id??e.toString(),format:de(e.type,e.size,e.normalized),byteOffset:r.byteOffset}),r.byteOffset+=e.ValueType.BYTES_PER_ELEMENT*e.size;else for(const i of Object.values(n.inputs))i instanceof ae&&ce(i,t,r)}function de(e,t,r=!1){if(t<1||t>4)throw new Error(`Cannot synthesize a GPUVector vertex format with ${t} components`);let n=e;if(r)switch(e){case"uint8":n="unorm8";break;case"sint8":n="snorm8";break;case"uint16":n="unorm16";break;case"sint16":n="snorm16";break;case"float32":n="float32";break;default:throw new Error(`Unsupported normalized vertex format for ${e}`)}return"uint8"!==n&&"sint8"!==n&&"uint16"!==n&&"sint16"!==n&&"unorm8"!==n&&"snorm8"!==n&&"unorm16"!==n&&"snorm16"!==n||3!==t?`${n}${1===t?"":`x${t}`}`:`${n}x3-webgl`}var le={add:{arity:2,symbol:"arithmetic_add"},subtract:{arity:2,symbol:"arithmetic_subtract"},multiply:{arity:2,symbol:"arithmetic_multiply"},divide:{arity:2,symbol:"arithmetic_divide"},pow:{arity:2,symbol:"pow"},sqrt:{arity:1,symbol:"sqrt"},abs:{arity:1,symbol:"abs"},sin:{arity:1,symbol:"sin"},cos:{arity:1,symbol:"cos"},tan:{arity:1,symbol:"arithmetic_tan"},exp:{arity:1,symbol:"exp"},log:{arity:1,symbol:"log"}};function ye(e,{operations:t,inputs:r}){switch(e.kind){case"input":if(!(e.name in r))throw new Error(`Unknown expression input '${e.name}'`);return;case"literal":if(Array.isArray(e.value)){for(const t of e.value)if(!Number.isFinite(t))throw new Error(`Expression literal array must contain only finite values, got ${t}`)}else if(!Number.isFinite(e.value))throw new Error(`Expression literal must be finite, got ${e.value}`);return;case"call":{const n=t[e.op];if(!n)throw new Error(`Unknown expression op '${e.op}'`);if(e.args.length!==n.arity)throw new Error(`Expression op '${e.op}' expects ${n.arity} args, got ${e.args.length}`);for(const i of e.args)ye(i,{operations:t,inputs:r});return}default:throw new Error(`Unsupported expression node ${e.kind}`)}}function ge(e,t){return ye(e,t),pe(e,t)}function pe(e,t){switch(e.kind){case"input":{const r=t.inputs[e.name];return t.laneIndex<r.size?t.formatInput(e.name):t.formatOutOfBoundsInput(e.name)}case"literal":return t.formatLiteral(e.value);case"call":{const r=t.operations[e.op],n=e.args.map(e=>pe(e,t));return t.formatCall(r.symbol,n)}default:throw new Error(`Unsupported expression node ${e.kind}`)}}Object.defineProperty(exports,"ARITHMETIC_OPERATIONS",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"ComputePipeline",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"DynamicBuffer",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"GPUDataEvaluator",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"GPUVector",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"PipelineFactory",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"ShaderFactory",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"ShaderInputs",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"UniformStore",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"bufferPool",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"compileExpression",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"getDynamicBufferFromBinding",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"getGPUDataEvaluator",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"getShaderModuleUniformBlockLayouts",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"isBufferRangeBinding",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"isNumericArray",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"mergeInferredShaderLayout",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"mergeShaderModuleBindingsIntoLayout",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"mergeShaderModules",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"mergeShaderPluginModules",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"resolveBufferRangeBinding",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"resolveShaderPlugins",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"shaderModuleHasUniforms",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"uid",{enumerable:!0,get:function(){return _}});
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="0350a7c9-bfcb-455e-99a9-0eecb43d08cb",e._sentryDebugIdIdentifier="sentry-dbid-0350a7c9-bfcb-455e-99a9-0eecb43d08cb")}catch(e){}}();const e=require("./debug-hooks-xLx1YP8n.cjs"),t=require("./shader-type-decoder-B16cQ7H3.cjs"),r=require("./webgl-device-D7wKHxQy.cjs");function n(e){return function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}(e)||function(e){return!!Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}(e)}var i=class e extends t.Resource{get[Symbol.toStringTag](){return"ComputePipeline"}hash="";shaderLayout;constructor(t,r){super(t,r,e.defaultProps),this.shaderLayout=r.shaderLayout}static defaultProps={...t.Resource.defaultProps,shader:void 0,entryPoint:void 0,constants:{},shaderLayout:void 0}},s=class e{static defaultProps={...r.RenderPipeline.defaultProps};static getDefaultPipelineFactory(t){const r=t.getModuleData("@luma.gl/core");return r.defaultPipelineFactory||=new e(t),r.defaultPipelineFactory}device;_hashCounter=0;_hashes={};_renderPipelineCache={};_computePipelineCache={};_sharedRenderPipelineCache={};get[Symbol.toStringTag](){return"PipelineFactory"}toString(){return`PipelineFactory(${this.device.id})`}constructor(e){this.device=e}createRenderPipeline(e){if(!this.device.props._cachePipelines)return this.device.createRenderPipeline(e);const n={...r.RenderPipeline.defaultProps,...e},i=this._renderPipelineCache,s=this._hashRenderPipeline(n);let o=i[s]?.resource;if(o)i[s].useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: ${i[s].resource} reused, count=${i[s].useCount}, (id=${e.id})`)();else{const e="webgl"===this.device.type&&this.device.props._sharePipelines?this.createSharedRenderPipeline(n):void 0;o=this.device.createRenderPipeline({...n,id:n.id?`${n.id}-cached`:t.uid("unnamed-cached"),_sharedRenderPipeline:e}),o.hash=s,i[s]={resource:o,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: ${o} created, count=${i[s].useCount}`)()}return o}createComputePipeline(e){if(!this.device.props._cachePipelines)return this.device.createComputePipeline(e);const r={...i.defaultProps,...e},n=this._computePipelineCache,s=this._hashComputePipeline(r);let o=n[s]?.resource;return o?(n[s].useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: ${n[s].resource} reused, count=${n[s].useCount}, (id=${e.id})`)()):(o=this.device.createComputePipeline({...r,id:r.id?`${r.id}-cached`:void 0}),o.hash=s,n[s]={resource:o,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: ${o} created, count=${n[s].useCount}`)()),o}release(e){if(!this.device.props._cachePipelines)return void e.destroy();const r=this._getCache(e),n=e.hash;r[n].useCount--,0===r[n].useCount?(this._destroyPipeline(e),this.device.props.debugFactories&&t.log.log(3,`${this}: ${e} released and destroyed`)()):r[n].useCount<0?(t.log.error(`${this}: ${e} released, useCount < 0, resetting`)(),r[n].useCount=0):this.device.props.debugFactories&&t.log.log(3,`${this}: ${e} released, count=${r[n].useCount}`)()}createSharedRenderPipeline(e){const t=this._hashSharedRenderPipeline(e);let r=this._sharedRenderPipelineCache[t];return r||(r={resource:this.device._createSharedRenderPipelineWebGL(e),useCount:0},this._sharedRenderPipelineCache[t]=r),r.useCount++,r.resource}releaseSharedRenderPipeline(e){if(!e.sharedRenderPipeline)return;const t=this._hashSharedRenderPipeline(e.sharedRenderPipeline.props),r=this._sharedRenderPipelineCache[t];r&&(r.useCount--,0===r.useCount&&(r.resource.destroy(),delete this._sharedRenderPipelineCache[t]))}_destroyPipeline(e){const t=this._getCache(e);return!!this.device.props._destroyPipelines&&(delete t[e.hash],e.destroy(),e instanceof r.RenderPipeline&&this.releaseSharedRenderPipeline(e),!0)}_getCache(e){let t;if(e instanceof i&&(t=this._computePipelineCache),e instanceof r.RenderPipeline&&(t=this._renderPipelineCache),!t)throw new Error(`${this}`);if(!t[e.hash])throw new Error(`${this}: ${e} matched incorrect entry`);return t}_hashComputePipeline(e){const{type:t}=this.device;return`${t}/C/${this._getHash(e.shader.source)}SL${this._getHash(JSON.stringify(e.shaderLayout))}`}_hashRenderPipeline(e){const t=e.vs?this._getHash(e.vs.source):0,r=e.fs?this._getHash(e.fs.source):0,n=this._getWebGLVaryingHash(e),i=this._getHash(JSON.stringify(e.shaderLayout)),s=this._getHash(JSON.stringify(e._uniformBlockLayouts)),o=this._getHash(JSON.stringify(e.bufferLayout)),{type:a}=this.device;if("webgl"===a){const f=this._getHash(JSON.stringify(e.parameters));return`${a}/R/${t}/${r}V${n}T${e.topology}P${f}SL${i}UBL${s}BL${o}`}{const s=this._getHash(JSON.stringify({vertexEntryPoint:e.vertexEntryPoint,fragmentEntryPoint:e.fragmentEntryPoint})),f=this._getHash(JSON.stringify(e.parameters)),u=this._getWebGPUAttachmentHash(e);return`${a}/R/${t}/${r}V${n}T${e.topology}EP${s}P${f}SL${i}BL${o}A${u}`}}_hashSharedRenderPipeline(e){return`webgl/S/${e.vs?this._getHash(e.vs.source):0}/${e.fs?this._getHash(e.fs.source):0}V${this._getWebGLVaryingHash(e)}`}_getHash(e){return void 0===this._hashes[e]&&(this._hashes[e]=this._hashCounter++),this._hashes[e]}_getWebGLVaryingHash(e){const{varyings:t=[],bufferMode:r=null}=e;return this._getHash(JSON.stringify({varyings:t,bufferMode:r}))}_getWebGPUAttachmentHash(e){const t=e.colorAttachmentFormats??[this.device.preferredColorFormat],r=e.depthStencilAttachmentFormat??(e.parameters?.depthWriteEnabled?this.device.preferredDepthFormat:null);return this._getHash(JSON.stringify({colorAttachmentFormats:t,depthStencilAttachmentFormat:r}))}},o=class e{static defaultProps={...r.Shader.defaultProps};static getDefaultShaderFactory(t){const r=t.getModuleData("@luma.gl/core");return r.defaultShaderFactory||=new e(t),r.defaultShaderFactory}device;_cache={};get[Symbol.toStringTag](){return"ShaderFactory"}toString(){return`${this[Symbol.toStringTag]}(${this.device.id})`}constructor(e){this.device=e}createShader(e){if(!this.device.props._cacheShaders)return this.device.createShader(e);const r=this._hashShader(e);let n=this._cache[r];if(n)n.useCount++,this.device.props.debugFactories&&t.log.log(3,`${this}: Reusing shader ${n.resource.id} count=${n.useCount}`)();else{const i=this.device.createShader({...e,id:e.id?`${e.id}-cached`:void 0});this._cache[r]=n={resource:i,useCount:1},this.device.props.debugFactories&&t.log.log(3,`${this}: Created new shader ${i.id}`)()}return n.resource}release(e){if(!this.device.props._cacheShaders)return void e.destroy();const r=this._hashShader(e),n=this._cache[r];if(n)if(n.useCount--,0===n.useCount)this.device.props._destroyShaders&&(delete this._cache[r],n.resource.destroy(),this.device.props.debugFactories&&t.log.log(3,`${this}: Releasing shader ${e.id}, destroyed`)());else{if(n.useCount<0)throw new Error(`ShaderFactory: Shader ${e.id} released too many times`);this.device.props.debugFactories&&t.log.log(3,`${this}: Releasing shader ${e.id} count=${n.useCount}`)()}}_hashShader(e){return`${e.stage}:${e.source}`}};function a(e){return Array.isArray(e)?0===e.length||"number"==typeof e[0]:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}(e)}var f=class{layout;constructor(e){this.layout=e}has(e){return Boolean(this.layout.fields[e])}get(e){const t=this.layout.fields[e];return t?{offset:t.offset,size:t.size}:void 0}getFlatUniformValues(e){const t={};for(const[r,n]of Object.entries(e)){const e=this.layout.uniformTypes[r];e?this._flattenCompositeValue(t,r,e,n):this.layout.fields[r]&&(t[r]=n)}return t}getData(e){const t=r.getScratchArrayBuffer(this.layout.byteLength);new Uint8Array(t,0,this.layout.byteLength).fill(0);const n={i32:new Int32Array(t),u32:new Uint32Array(t),f32:new Float32Array(t),f16:new Uint16Array(t)},i=this.getFlatUniformValues(e);for(const[r,s]of Object.entries(i))this._writeLeafValue(n,r,s);return new Uint8Array(t,0,this.layout.byteLength)}_flattenCompositeValue(e,n,i,s){if(void 0!==s)if("string"==typeof i||this.layout.fields[n])e[n]=s;else{if(Array.isArray(i)){const r=i[0],o=i[1];if(Array.isArray(r))throw new Error(`Nested arrays are not supported for ${n}`);if("string"==typeof r&&a(s))return void this._flattenPackedArray(e,n,r,o,s);if(!Array.isArray(s))return void t.log.warn(`Unsupported uniform array value for ${n}:`,s)();for(let t=0;t<Math.min(s.length,o);t++){const i=s[t];void 0!==i&&this._flattenCompositeValue(e,`${n}[${t}]`,r,i)}return}if(r.isCompositeShaderTypeStruct(i)&&function(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&!ArrayBuffer.isView(e)}(s))for(const[t,r]of Object.entries(s)){if(void 0===r)continue;const s=`${n}.${t}`;this._flattenCompositeValue(e,s,i[t],r)}else t.log.warn(`Unsupported uniform value for ${n}:`,s)()}}_flattenPackedArray(e,t,n,i,s){const o=s,a=r.getLeafLayoutInfo(n,this.layout.layout).components;for(let r=0;r<i;r++){const n=r*a;if(n>=o.length)break;e[`${t}[${r}]`]=1===a?Number(o[n]):u(s,n,n+a)}}_writeLeafValue(e,r,n){const i=this.layout.fields[r];if(!i)return void t.log.warn(`Uniform ${r} not found in layout`)();const{type:s,components:o,columns:a,rows:f,offset:u,columnStride:h}=i,c=e[s];if(1===o)return void(c[u]=Number(n));const d=n;if(1===a){for(let e=0;e<o;e++)c[u+e]=Number(d[e]??0);return}let l=0;for(let t=0;t<a;t++){const e=u+t*h;for(let t=0;t<f;t++)c[e+t]=Number(d[l++]??0)}}};function u(e,t,r){return Array.prototype.slice.call(e,t,r)}var h=class{name;uniforms={};modifiedUniforms={};modified=!0;bindingLayout={};needsRedraw="initialized";constructor(e){if(this.name=e?.name||"unnamed",e?.name&&e?.shaderLayout){const t=e?.shaderLayout.bindings?.find(t=>"uniform"===t.type&&t.name===e?.name);if(!t)throw new Error(e?.name);const r=t;for(const e of r.uniforms||[])this.bindingLayout[e.name]=e}}setUniforms(e){for(const[t,r]of Object.entries(e))this._setUniform(t,r)&&!this.needsRedraw&&this.setNeedsRedraw(`${this.name}.${t}=${r}`)}setNeedsRedraw(e){this.needsRedraw=this.needsRedraw||e}getAllUniforms(){return this.modifiedUniforms={},this.needsRedraw=!1,this.uniforms||{}}_setUniform(e,t){return!function(e,t,r=16){if(e===t)return!0;const n=e,i=t;if(!a(n)||!a(i))return!1;if(n.length!==i.length)return!1;const s=Math.min(r,128);if(n.length>s)return!1;for(let o=0;o<n.length;++o)if(i[o]!==n[o])return!1;return!0}(this.uniforms[e],t)&&(this.uniforms[e]=a(r=t)?r.slice():r,this.modifiedUniforms[e]=!0,this.modified=!0,!0);var r}},c=class{device;uniformBlocks=new Map;shaderBlockLayouts=new Map;shaderBlockWriters=new Map;uniformBuffers=new Map;constructor(e,t){this.device=e;for(const[n,i]of Object.entries(t)){const t=n,s=r.makeShaderBlockLayout(i.uniformTypes??{},{layout:i.layout??d(e)}),o=new f(s);this.shaderBlockLayouts.set(t,s),this.shaderBlockWriters.set(t,o);const a=new h({name:n});a.setUniforms(o.getFlatUniformValues(i.defaultUniforms||{})),this.uniformBlocks.set(t,a)}}destroy(){for(const e of this.uniformBuffers.values())e.destroy()}setUniforms(e,t){for(const[r,n]of Object.entries(e)){const e=r,t=this.shaderBlockWriters.get(e)?.getFlatUniformValues(n||{});this.uniformBlocks.get(e)?.setUniforms(t||{})}this.updateUniformBuffers(t)}getUniformBufferByteLength(e){const t=this.shaderBlockLayouts.get(e)?.byteLength||0;return Math.max(t,1024)}getUniformBufferData(e){const t=this.uniformBlocks.get(e)?.getAllUniforms()||{};return this.shaderBlockWriters.get(e)?.getData(t)||new Uint8Array(0)}createUniformBuffer(e,r){r&&this.setUniforms(r);const n=this.getUniformBufferByteLength(e),i=this.device.createBuffer({usage:t.Buffer.UNIFORM|t.Buffer.COPY_DST,byteLength:n}),s=this.getUniformBufferData(e);return i.write(s),i}getManagedUniformBuffer(e){if(!this.uniformBuffers.get(e)){const r=this.getUniformBufferByteLength(e),n=this.device.createBuffer({usage:t.Buffer.UNIFORM|t.Buffer.COPY_DST,byteLength:r});this.uniformBuffers.set(e,n)}return this.uniformBuffers.get(e)}updateUniformBuffers(e){let r=!1;for(const t of this.uniformBlocks.keys()){const n=this.updateUniformBuffer(t,e);r||=n}return r&&t.log.log(3,`UniformStore.updateUniformBuffers(): ${r}`)(),r}updateUniformBuffer(e,r){const n=this.uniformBlocks.get(e);let i=this.uniformBuffers.get(e),s=!1;if(i&&n?.needsRedraw){s||=n.needsRedraw;const o=this.getUniformBufferData(e);if(i=this.uniformBuffers.get(e),i&&(r?this.device.writeBufferViaCommandEncoder(r,i,o):i.write(o)),t.log.level>=4){const r=this.uniformBlocks.get(e)?.getAllUniforms();t.log.log(4,`Writing to uniform buffer ${String(e)}`,o,r)()}}return s}};function d(e){return"webgpu"===e.type?"wgsl-uniform":"std140"}var l=/^(vs|fs):(?:#(?:decl|main-start|main-end)|[A-Za-z_][\w-]*)$/;function y(e=[],t){const r=[],n={},i={},s={},o={};for(const a of e)p({modules:r,defines:n,injections:i,vertexInputs:s,varyings:o},a),p({modules:r,defines:n,injections:i,vertexInputs:s,varyings:o},a[t]);for(const a of Object.keys(o))if(s[a])throw new Error(`ShaderPlugin name "${a}" cannot be both a vertex input and a varying`);return{modules:r,defines:n,injections:i,vertexInputs:s,varyings:o}}function g(e=[],t=[]){const r=[...e],n=new Set(r.map(e=>e.name));for(const i of t)n.has(i.name)||(r.push(i),n.add(i.name));return r}function p(e,t){if(t){t.modules?.length&&e.modules.push(...t.modules),t.defines&&Object.assign(e.defines,t.defines);for(const[r,n]of Object.entries(t.vertexInputs||{})){b(r,"vertex input");const t=e.vertexInputs[r];if(t&&t!==n)throw new Error(`ShaderPlugin vertex input "${r}" has conflicting types "${t}" and "${n}"`);e.vertexInputs[r]=n}for(const[r,n]of Object.entries(t.varyings||{})){b(r,"varying");const t=m(r,n),i=e.varyings[r];if(i&&(i.type!==t.type||i.interpolation!==t.interpolation))throw new Error(`ShaderPlugin varying "${r}" has conflicting declarations "${i.type}/${i.interpolation}" and "${t.type}/${t.interpolation}"`);e.varyings[r]=t}for(const r of t.injections||[])w(r.target),e.injections[r.target]||(e.injections[r.target]=[]),e.injections[r.target].push({injection:r.injection,order:r.order??0})}}function b(e,t){if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e)||e.startsWith("_luma_"))throw new Error(`ShaderPlugin ${t} "${e}" must be a valid non-reserved identifier`)}function m(e,r){const{primitiveType:n}=t.shaderTypeDecoder.getAttributeShaderTypeInfo(r.type),i="i32"===n||"u32"===n,s=r.interpolation||(i?"flat":"smooth");if(i&&"smooth"===s)throw new Error(`ShaderPlugin integer varying "${e}" must use flat interpolation`);return{type:r.type,interpolation:s}}function w(e){if(!l.test(e))throw new Error(`ShaderPlugin injection target "${e}" must be a named shader anchor or hook`)}var v={};function _(e="id"){return v[e]=v[e]||1,`${e}-${v[e]++}`}function B(e,t){if(!e||!t.some(e=>e.bindingLayout?.length))return e;const r={...e,bindings:e.bindings.map(e=>({...e}))};"attributes"in(e||{})&&(r.attributes=e?.attributes||[]);for(const n of t)for(const e of n.bindingLayout||[])for(const t of $(e.name)){const n=r.bindings.find(e=>e.name===t);0===n?.group&&(n.group=e.group),n&&void 0!==e.visibility&&(n.visibility=e.visibility)}return r}function L(e,t,r=[]){return e?t?{...e,attributes:e.attributes.length?O(e.attributes,t.attributes.filter(e=>r.includes(e.name))):t.attributes,bindings:D(e.bindings,t.bindings)}:e:t}function P(e){return Boolean(e.uniformTypes&&!function(e){for(const t in e)return!1;return!0}(e.uniformTypes))}function E(t){const r=[];for(const n of t){const t=e.getShaderModuleUniformBlockName(n),i=new Set([n.vs,n.fs].flatMap(t=>t?e.getGLSLUniformBlocks(t).filter(e=>e.isStd140).map(e=>e.blockName):[])),s=i.has(t)?t:1===i.size?i.values().next().value:void 0;P(n)&&s&&r.push({name:s,uniformTypes:n.uniformTypes})}return r}function S(e,t){const r=[],n=new Set;for(const i of[...e||[],...t||[]])n.has(i.name)||(n.add(i.name),r.push(i));return r}function $(e){const t=new Set([e,`${e}Uniforms`]);return e.endsWith("Uniforms")||t.add(`${e}Sampler`),[...t]}function D(e,t){const r=e.map(e=>({...e})),n=new Set(e.map(e=>e.name)),i=new Set(e.map(e=>`${e.group}:${e.location}`));for(const s of t){const e=`${s.group}:${s.location}`;n.has(s.name)||i.has(e)||r.push({...s})}return r}function O(e,t){const r=e.map(e=>({...e})),n=new Map(e.map(e=>[e.name,e])),i=new Map(e.map(e=>[e.location,e]));for(const s of t){const e=n.get(s.name);if(e){if(e.type!==s.type||e.location!==s.location)throw new Error(`Shader attribute "${s.name}" conflicts with its inferred type or location`);continue}const t=i.get(s.location);if(t)throw new Error(`Shader attributes "${t.name}" and "${s.name}" both use location ${s.location}`);r.push({...s})}return r}function U(e,t={}){const r={bindings:{},uniforms:{}};return Object.keys(e).forEach(i=>{const s=e[i];var o;Object.prototype.hasOwnProperty.call(t,i)||(n(o=s)||"number"==typeof o||"boolean"==typeof o)?r.uniforms[i]=s:r.bindings[i]=s}),r}var T=class{options={disableWarnings:!1};modules;moduleUniforms;moduleBindings;directBindings={};constructor(r,n){Object.assign(this.options,n);const i=e.getShaderModuleDependencies(Object.values(r).filter(G));for(const e of i)r[e.name]=e;t.log.log(1,"Creating ShaderInputs with modules",Object.keys(r))(),this.modules=r,this.moduleUniforms={},this.moduleBindings={};for(const[e,s]of Object.entries(r))s&&(this._addModule(s),s.name&&e!==s.name&&!this.options.disableWarnings&&t.log.warn(`Module name: ${e} vs ${s.name}`)())}destroy(){}setProps(e){e.bindings&&Object.assign(this.directBindings,e.bindings);for(const r of Object.keys(e)){if("bindings"===r)continue;const n=r,i=e[n]||{},s=this.modules[n];if(s){const e=this.moduleUniforms[n],t=this.moduleBindings[n],r=s.getUniforms?.(i,e)||i,{uniforms:o,bindings:a}=U(r,s.uniformTypes);this.moduleUniforms[n]=V(e,o,s.uniformTypes),this.moduleBindings[n]={...t,...a}}else this.options.disableWarnings||t.log.warn(`Module ${r} not found`)()}}getModules(){return Object.values(this.modules)}addModules(t){const r=e.getShaderModuleDependencies(t);for(const e of r){const t=e.name;this.modules[t]||(this.modules[t]=e,this._addModule(e))}}getUniformValues(){return this.moduleUniforms}getBindingValues(){const e={};for(const t of Object.values(this.moduleBindings))Object.assign(e,t);return Object.assign(e,this.directBindings),e}getModuleBindingValues(e){const t=this.moduleBindings[e];return t?{...t}:{}}getDebugTable(){const e={};for(const[t,r]of Object.entries(this.moduleUniforms))for(const[n,i]of Object.entries(r))e[`${t}.${n}`]={type:this.modules[t].uniformTypes?.[n],value:String(i)};return e}_addModule(e){const t=e.name;this.moduleUniforms[t]=V({},e.defaultUniforms||{},e.uniformTypes),this.moduleBindings[t]={}}};function V(e={},t={},r={}){const n={...e};for(const[i,s]of Object.entries(t))void 0!==s&&(n[i]=A(e[i],s,r[i]));return n}function A(e,t,r){if(!r||"string"==typeof r)return x(t);if(Array.isArray(r)){if(C(t)||!Array.isArray(t))return x(t);const n=Array.isArray(e)&&!C(e)?[...e]:[],i=n.slice();for(let e=0;e<t.length;e++){const s=t[e];void 0!==s&&(i[e]=A(n[e],s,r[0]))}return i}if(!j(t))return x(t);const n=r,i=j(e)?e:{},s={...i};for(const[o,a]of Object.entries(t))void 0!==a&&(s[o]=A(i[o],a,n[o]));return s}function x(e){return ArrayBuffer.isView(e)?Array.prototype.slice.call(e):Array.isArray(e)?C(e)?e.slice():e.map(e=>void 0===e?void 0:x(e)):j(e)?Object.fromEntries(Object.entries(e).map(([e,t])=>[e,void 0===t?void 0:x(t)])):e}function C(e){return ArrayBuffer.isView(e)||Array.isArray(e)&&(0===e.length||"number"==typeof e[0])}function j(e){return Boolean(e)&&"object"==typeof e&&!Array.isArray(e)&&!ArrayBuffer.isView(e)}function G(e){return Boolean(e?.dependencies)}var R=t.Buffer.DEBUG_DATA_MAX_LENGTH,M=class{device;id;ready;usage;props;isReady=!0;destroyed=!1;generation=0;updateTimestamp;debugData=new ArrayBuffer(0);_debugDataEnabled;_maxDebugDataByteLength;_ownsBuffer;_buffer;get buffer(){return this._buffer}get byteLength(){return this._buffer.byteLength}get[Symbol.toStringTag](){return"DynamicBuffer"}toString(){return`DynamicBuffer:"${this.id}":${this.byteLength}B`}toJSON(){return this.toString()}constructor(e,r){const{debugData:n=!1,buffer:i,ownsBuffer:s=!0,...o}=r;if(i&&i.device!==e)throw new Error("DynamicBuffer adopted buffers must belong to the supplied device");if(i&&(void 0!==o.byteLength||void 0!==o.data))throw new Error("DynamicBuffer cannot combine an adopted buffer with byteLength or data");const a=r.id||i?.id||_("dynamic-buffer"),f={...o,id:a,usage:o.usage??i?.usage,indexType:o.indexType??i?.indexType};(f.usage||0)&t.Buffer.INDEX&&!f.indexType&&(o.data instanceof Uint32Array?f.indexType="uint32":o.data instanceof Uint16Array?f.indexType="uint16":o.data instanceof Uint8Array&&(f.indexType="uint8")),delete f.data,delete f.byteOffset,this.device=e,this.id=a,this.props=f,this.usage=f.usage||0,this._debugDataEnabled=Boolean(n),this._maxDebugDataByteLength="object"==typeof n&&void 0!==n.maxByteLength?n.maxByteLength:R,this._ownsBuffer=s,this._buffer=i??this.device.createBuffer({...o,id:a}),this.ready=Promise.resolve(this._buffer),this.updateTimestamp=this._buffer.updateTimestamp,this._resetDebugData(this._buffer.byteLength),o.data&&this._writeDebugData(o.data,o.byteOffset||0)}write(e,t=0){this._buffer.write(e,t),this._touch(),this._writeDebugData(e,t)}async mapAndWriteAsync(e,t=0,r=this.byteLength-t){let n=null;await this._buffer.mapAndWriteAsync(async(t,i)=>{await e(t,i),n=new Uint8Array(t.slice(0,r))},t,r),this._touch(),n&&this._writeDebugData(n,t)}async readAsync(e=0,t=this.byteLength-e){const r=await this._buffer.readAsync(e,t);return this._writeDebugData(r,e)&&this._touch(),r}async mapAndReadAsync(e,t=0,r=this.byteLength-t){let n=null;const i=await this._buffer.mapAndReadAsync(async(t,r)=>(n=new Uint8Array(t.slice(0)),await e(t,r)),t,r);return n&&this._writeDebugData(n,t)&&this._touch(),i}resize(e){const{byteLength:t,preserveData:r=!1}=e;if(t===this.byteLength)return!1;const n=Math.min(e.copyByteLength??Math.min(this.byteLength,t),this.byteLength,t),i=this._buffer,s=this.debugData.slice(0),{data:o,byteOffset:a,...f}=this.props,u=this.device.createBuffer({...f,byteLength:t});return r&&n>0&&this._copyBufferContents(i,u,n),this._buffer=u,this._resetDebugData(t),r&&s.byteLength>0&&this._writeDebugData(s,0),this._ownsBuffer&&i.destroy(),this._ownsBuffer=!0,this.generation++,this._touch(),!0}ensureSize(e,t){return!(e<=this.byteLength)&&this.resize({byteLength:e,preserveData:t?.preserveData})}getBinding(e){return void 0===e?.offset&&void 0===e?.size?this._buffer:{buffer:this._buffer,offset:e?.offset,size:e?.size}}destroy(){this.destroyed||(this._ownsBuffer&&this._buffer.destroy(),this.destroyed=!0,this.debugData=new ArrayBuffer(0))}_copyBufferContents(e,t,r){const n="webgpu"===this.device.type?4*Math.ceil(r/4):r,i=this.device.createCommandEncoder();i.copyBufferToBuffer({sourceBuffer:e,destinationBuffer:t,size:n}),this.device.submit(i.finish())}_touch(){this.updateTimestamp=this.device.incrementTimestamp()}_resetDebugData(e){this._debugDataEnabled?this.debugData=new ArrayBuffer(Math.min(e,this._maxDebugDataByteLength)):this.debugData=new ArrayBuffer(0)}_writeDebugData(e,t){if(!this._debugDataEnabled||0===this.debugData.byteLength||t>=this.debugData.byteLength)return!1;const r=ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e),n=new Uint8Array(this.debugData),i=Math.min(r.byteLength,n.byteLength-t);return n.set(r.subarray(0,i),t),i>0}};function k(e){return null!==e&&"object"==typeof e&&"buffer"in e}function z(e){return e instanceof M?e:k(e)&&e.buffer instanceof M?e.buffer:null}function F(e){return{buffer:(t=e.buffer,t instanceof M?t.buffer:t),offset:e.offset,size:e.size};var t}var N=/^vertex-list<([^<>]+)>$/,I=/^value-list<([^<>]+)>$/;function H(e){return N.test(e)}function Y(e){return I.test(e)}function q(e){const r=function(e){const r=N.exec(e),n=I.exec(e),i=r?.[1]??n?.[1]??e;try{t.vertexFormatDecoder.getVertexFormatInfo(i)}catch{throw new Error(`Unsupported GPUVector format ${e}`)}return i}(e),n=H(e),i=Y(e),s=t.vertexFormatDecoder.getVertexFormatInfo(r),o=s.type,a=s.normalized,f=function(e,t){if(t)return"f32";switch(e){case"float32":return"f32";case"float16":return"f16";case"uint8":case"uint16":case"uint32":return"u32";case"sint8":case"sint16":case"sint32":return"i32";default:throw new Error(`Unsupported GPUVector component type ${e}`)}}(o,a);return{format:e,elementFormat:r,vertexList:n,valueList:i,type:o,signedDataType:W(r,o),primitiveType:f,components:s.components,byteLength:s.byteLength,integer:s.integer,signed:s.signed,normalized:a,...s.webglOnly?{webglOnly:!0}:{}}}function W(e,t){if("unorm10-10-10-2"===e)return"uint32";switch(t){case"unorm8":return"uint8";case"snorm8":return"sint8";case"unorm16":return"uint16";case"snorm16":return"sint16";default:return t}}var J=class{buffer;format;length;byteOffset;byteStride;constructor(e){const r=t.vertexFormatDecoder.getVertexFormatInfo(e.format).byteLength,n=e.byteOffset??0,i=e.byteStride??r;if(X(e.length,"GPUDataView length"),X(n,"GPUDataView byteOffset"),X(i,"GPUDataView byteStride"),i<r)throw new Error(`GPUDataView byteStride ${i} is smaller than ${e.format} byte length ${r}`);const s=0===e.length?0:(e.length-1)*i+r,o=n+s;if(!Number.isSafeInteger(s)||!Number.isSafeInteger(o))throw new Error("GPUDataView byte range must use safe integers");if(o>e.buffer.byteLength)throw new Error("GPUDataView exceeds its backing buffer byte length");this.buffer=e.buffer,this.format=e.format,this.length=e.length,this.byteOffset=n,this.byteStride=i}get elementByteLength(){return t.vertexFormatDecoder.getVertexFormatInfo(this.format).byteLength}get byteLength(){return 0===this.length?0:(this.length-1)*this.byteStride+this.elementByteLength}};function X(e,t){if(!Number.isSafeInteger(e)||e<0)throw new Error(`${t} must be a non-negative safe integer`)}function Z(e){return Boolean(e&&"object"==typeof e&&"struct"===e.type)}function K(e,n){const i=Object.entries(e);if(0===i.length)throw new Error("GPUData struct format must declare at least one field");return"packed"===n?function(e){const r=[];let n=0,i=0;for(const[s,o]of e){const e=t.vertexFormatDecoder.getVertexFormatInfo(o);if(e.webglOnly)throw new Error(`Packed GPUData struct field "${s}" uses WebGL-only format ${o}`);n=te(n,Math.min(4,e.byteLength)),r.push([s,Object.freeze({format:o,byteOffset:n,byteLength:e.byteLength})]),n+=e.byteLength,i+=e.components}return Object.freeze({type:"struct",layout:"packed",fields:Object.freeze(Object.fromEntries(r)),components:i,byteStride:te(n,4),rowByteLength:n})}(i):function(e){const n=Object.fromEntries(e.map(([e,t])=>[e,Q(t)])),i=r.makeShaderBlockLayout(n,{layout:"wgsl-storage"}),s=[];let o=0,a=0;for(const[r,f]of e){const e=t.vertexFormatDecoder.getVertexFormatInfo(f),n=4*i.fields[r].offset;s.push([r,Object.freeze({format:f,byteOffset:n,byteLength:e.byteLength})]),o=Math.max(o,n+e.byteLength),a+=e.components}return Object.freeze({type:"struct",layout:"wgsl-storage",fields:Object.freeze(Object.fromEntries(s)),components:a,byteStride:i.byteLength,rowByteLength:o})}(i)}function Q(e){const r=t.vertexFormatDecoder.getVertexFormatInfo(e);switch(r.type){case"float32":return ee("f32",r.components);case"sint32":return ee("i32",r.components);case"uint32":return ee("u32",r.components);default:return ee("u32",Math.ceil(r.byteLength/4))}}function ee(e,t){return 1===t?e:`vec${t}<${e}>`}function te(e,t){return Math.ceil(e/t)*t}var re=class{buffer;ownsDataBuffer;constructor(e,t){this.buffer=e,this.ownsDataBuffer=t}get ownsBuffer(){return this.ownsDataBuffer}transferBufferOwnership(e){if(e.buffer!==this.buffer)throw new Error("GPUData ownership can only be transferred to the same buffer");e.ownsDataBuffer=this.ownsDataBuffer,this.ownsDataBuffer=!1}destroy(){this.ownsDataBuffer&&(this.buffer.destroy(),this.ownsDataBuffer=!1)}},ne=class extends re{dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;readbackMetadata;valueOffsets;nullBitmap;valueByteLength;constructor(e){const{buffer:t,format:r,length:n,valueLength:i,stride:s,byteOffset:o=0,byteStride:a,rowByteLength:f,ownsBuffer:u=!1,readbackMetadata:h,valueOffsets:c,nullBitmap:d,valueByteLength:l,dataType:y}=e;let g;super(t,u),g=r?"string"==typeof r?r:K(r,e.layout??"wgsl-storage"):void 0;const p=Z(g)?g:void 0,b="string"==typeof g?q(g):void 0;if(this.dataType=y,this.format=g,this.length=n,this.valueLength=i??n,this.stride=s??b?.components??p?.components??a??f??1,this.byteOffset=o,this.rowByteLength=f??p?.rowByteLength??b?.byteLength??a??this.stride,this.byteStride=a??p?.byteStride??this.rowByteLength,p){if(this.rowByteLength<p.rowByteLength)throw new Error(`GPUData rowByteLength ${this.rowByteLength} is smaller than struct format row byte length ${p.rowByteLength}`);if(this.byteStride<Math.max(p.byteStride,this.rowByteLength))throw new Error(`GPUData byteStride ${this.byteStride} is smaller than its struct row layout`)}this.readbackMetadata=h,this.valueOffsets=c,this.nullBitmap=d,this.valueByteLength=l}getChild(e){if(!Z(this.format))return null;const t=this.format.fields[e];return t?new J({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}getChildAt(e){if(!Z(this.format))return null;const t=Object.values(this.format.fields)[e];return t?new J({buffer:this.buffer,format:t.format,length:this.length,byteOffset:this.byteOffset+t.byteOffset,byteStride:this.byteStride}):null}},ie=class{name;dataType;format;length;valueLength;stride;byteOffset;byteStride;rowByteLength;bufferLayout;data=[];device;bufferProps;isAppendable=!1;ownsDataChunks=!0;ownedVectors=[];appendableByteLength=0;constructor(e){switch(e.type){case"buffer":{const{name:t,buffer:r,format:n,length:i,valueLength:s=i,byteOffset:o=0,ownsBuffer:a=!1}=e,{stride:f,byteStride:u,rowByteLength:h}=se(e);return this.name=t,this.dataType=e.dataType,this.format=n,this.length=i,this.valueLength=s,this.stride=f,this.byteOffset=o,this.byteStride=u,this.rowByteLength=h,void this.data.push(new ne({buffer:r,format:n,length:i,valueLength:s,stride:f,byteOffset:o,byteStride:u,rowByteLength:h,ownsBuffer:a,dataType:e.dataType}))}case"interleaved":{const{name:t,buffer:r,format:n,length:i,valueLength:s=i,byteOffset:o=0,byteStride:a,attributes:f,ownsBuffer:u=!1}=e;return this.name=t,this.dataType=e.dataType,this.format=n,this.length=i,this.valueLength=s,this.stride=a,this.byteOffset=o,this.byteStride=a,this.rowByteLength=a,this.bufferLayout={name:t,byteStride:a,attributes:f},void this.data.push(new ne({buffer:r,format:n,length:i,valueLength:s,stride:a,byteOffset:o,byteStride:a,rowByteLength:a,ownsBuffer:u,dataType:e.dataType}))}case"data":{const t=e.format??function(e){return e[0]?.format}(e.data),r=t?q(t):void 0,{name:n,data:i,stride:s=i[0]?.stride??r?.components??1,valueLength:o=i.reduce((e,t)=>e+t.valueLength,0),byteStride:a=i[0]?.byteStride??r?.byteLength,rowByteLength:f=i[0]?.rowByteLength??r?.byteLength,bufferLayout:u,ownsData:h=!1}=e;if(void 0===a||void 0===f)throw new Error("GPUVector requires format or explicit byte layout metadata");return t&&function(e,t){if(e.find(e=>e.format!==t))throw new Error("GPUVector data chunks must share the declared format")}(i,t),this.name=n,this.dataType=e.dataType,this.format=t,this.length=i.reduce((e,t)=>e+t.length,0),this.valueLength=o,this.stride=s,this.byteOffset=1===i.length?i[0].byteOffset:0,this.byteStride=a,this.rowByteLength=f,this.bufferLayout=u,this.ownsDataChunks=h,void this.data.push(...i)}case"appendable":{const{name:t,device:r,format:n,valueLength:i=0,bufferProps:s}=e,{stride:o,byteStride:a,rowByteLength:f}=se(e);return this.name=t,this.dataType=e.dataType,this.format=n,this.length=0,this.valueLength=i,this.stride=o,this.byteOffset=0,this.byteStride=a,this.rowByteLength=f,this.device=r,this.bufferProps=s,void(this.isAppendable=!0)}}}get ownsBuffer(){return this.ownsDataChunks&&this.data.some(e=>e.ownsBuffer)||this.ownedVectors.some(e=>e.ownsBuffer)}get capacityRows(){return this.isAppendable?this.length:void 0}get appendedByteLength(){return this.appendableByteLength}addData(e){if(this.format&&e.format!==this.format)throw new Error("GPUVector.addData() requires matching formats");if(e.byteStride!==this.byteStride)throw new Error("GPUVector.addData() requires matching byteStride");if(e.rowByteLength!==this.rowByteLength)throw new Error("GPUVector.addData() requires matching rowByteLength");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this}appendDataChunk(e,t=this.appendableByteLength+e.buffer.byteLength){if(!this.isAppendable)throw new Error("GPUVector.appendDataChunk() requires appendable vector storage");if(this.format&&e.format!==this.format)throw new Error("GPUVector.appendDataChunk() requires matching formats");if(e.byteStride!==this.byteStride||e.rowByteLength!==this.rowByteLength)throw new Error("GPUVector.appendDataChunk() requires matching byte layout metadata");return this.data.push(e),this.length+=e.length,this.valueLength+=e.valueLength,this.appendableByteLength=t,this}resetLastBatch(){if(!this.isAppendable)throw new Error("GPUVector.resetLastBatch() requires appendable vector storage");for(const e of this.data.splice(0))e.destroy();return this.length=0,this.valueLength=0,this.appendableByteLength=0,this}retainOwnedVectors(e){return this.ownedVectors.push(...e),this}transferBufferOwnership(e){const t=this.data[0],r=e.data[0];if(!t||!r||t.buffer!==r.buffer)throw new Error("GPUVector ownership can only be transferred to the same buffer");t.transferBufferOwnership(r)}destroy(){if(this.ownsDataChunks)for(const e of this.data)e.destroy();for(const e of this.ownedVectors.splice(0))e.destroy()}};function se(e){const t=e.format?q(e.format):void 0,r=e.rowByteLength??e.byteStride??t?.byteLength;if(void 0===r)throw new Error("GPUVector requires format or explicit rowByteLength");return{stride:e.stride??t?.components??1,byteStride:e.byteStride??r,rowByteLength:r}}var oe=new class{poolSize=20;bufferPools;constructor(){this.bufferPools=new Map}createOrReuse(e,r){if(r>e.limits.maxBufferSize)throw new Error(`Buffer pool cannot allocate ${r} bytes: device.limits.maxBufferSize is ${e.limits.maxBufferSize}`);const n=this.bufferPools.get(e),i=n?n.findIndex(e=>e.byteLength>=r):-1;if(i<0)return e.createBuffer({usage:t.Buffer.VERTEX|t.Buffer.STORAGE|t.Buffer.COPY_DST|t.Buffer.COPY_SRC,byteLength:r});const[s]=n.splice(i,1);return s}recycle(e){const t=e.device;this.bufferPools.has(t)||this.bufferPools.set(t,[]);const r=this.bufferPools.get(t),n=r.findIndex(t=>t.byteLength>e.byteLength);n<0?r.push(e):r.splice(n,0,e),this.purge()}purge(){for(const[e,t]of this.bufferPools){const r=e.isLost?0:this.poolSize;for(;t.length>r;)t.shift().destroy();0===t.length&&this.bufferPools.delete(e)}}},ae=class e{static get bufferPoolSize(){return oe.poolSize}static set bufferPoolSize(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("GPUDataEvaluator.bufferPoolSize must be a non-negative safe integer");oe.poolSize=e,oe.purge()}type;size;get offset(){return this._offset}get stride(){return this._stride}normalized;isConstant;length;get byteLength(){return this._byteLength}ValueType;source=null;format;_id;_destroyed=!1;_value;_offset;_stride;_byteLength;_gpuVector;_bufferOwnership="owned";_targetBuffer;static fromArray(r,{type:n,size:i=1,offset:s=0,stride:o=0,normalized:a=!1}){let f,u=n;Array.isArray(r)?(u=u||"float32",f=new(t.getTypedArrayFromDataType(u))(r)):r instanceof Float64Array?(u="uint32",i*=2,s*=2,o*=2,f=new Uint32Array(r.buffer,r.byteOffset,r.byteLength/4)):(u=u||t.getDataTypeFromTypedArray(r),f=r);return new e({id:`<${u} * ${i}>`,type:u,size:i,offset:s,stride:o,normalized:a,value:f})}static fromConstant(r,n="float32"){const i=t.getTypedArrayFromDataType(n);let s;return Array.isArray(r)?s=`[${r.join(",")}]`:(s=String(r),r=[r]),new e({id:s,isConstant:!0,type:n,size:r.length,value:new i(r)})}static fromGPUData(t,r={}){!function(e){if(!e.format)throw new Error("GPUDataEvaluator.fromGPUData() requires GPUData format metadata");if(H(e.format)||Y(e.format))throw new Error("GPUDataEvaluator.fromGPUData() does not support variable-length input");const t=q(e.format).byteLength;if(e.rowByteLength!==t)throw new Error(`GPUDataEvaluator.fromGPUData() requires rowByteLength ${t} for GPUData`)}(t);const n=new J({buffer:t.buffer,format:t.format,length:t.length,byteOffset:t.byteOffset,byteStride:t.byteStride});return new e({...ue(n),id:r.id,gpuData:t})}static fromGPUDataView(t,r={}){return new e({...ue(t),id:r.id,buffer:t.buffer})}constructor(r){const{id:n,value:i,buffer:s,gpuData:o,format:a,source:f=null,isConstant:u=!1}=r;if(!(f||i||s||o))throw new Error("GPUDataEvaluator must have a value source");let{type:h,size:c,offset:d,stride:l,normalized:y,length:g}=r;if(f instanceof e?(h=h??f.type,c=c??f.size,d=d??f.offset,l=l??f.stride,y=y??f.normalized,g=g??f.length):(c=c??1,d=d??0,y=y??!1,g=u?1:g),!h)throw new Error("GPUDataEvaluator: type not defined");if(this._id=n,this.type=h,this.size=c,this.ValueType=t.getTypedArrayFromDataType(this.type),this._offset=d,this._stride=l||this.ValueType.BYTES_PER_ELEMENT*c,this.normalized=y,this.source=f,this.format=a,void 0===g)if(u)g=1;else{if(!i)throw new Error("GPUDataEvaluator: length not defined");g=Math.ceil(i.byteLength/this.stride)}this.isConstant=u,this.length=g;const p=this.ValueType.BYTES_PER_ELEMENT*this.size;this._byteLength=0===g?0:(g-1)*this.stride+p,this._value=i,this._bufferOwnership=f instanceof e||s||o?"borrowed":"owned",o?this._gpuVector=new ie({type:"data",name:this._id??"data",format:o.format,data:[o],stride:o.stride,byteStride:o.byteStride,rowByteLength:o.rowByteLength}):s&&(this._gpuVector=this.createGPUVectorView({buffer:s,name:this._id,format:this.format}))}get value(){return this._value||(this.source instanceof e?this.source.value:void 0)}get evaluated(){return Boolean(this._gpuVector)}get id(){return this._id}get gpuVector(){if(!this._gpuVector)throw new Error(`${this} not evaluated`);return this._gpuVector}get buffer(){return he(this.gpuVector)}setTargetBuffer({buffer:t,byteOffset:r=0,byteStride:n=this.stride}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)throw new Error(`GPUDataEvaluator ${this} already evaluated`);if(!this.source||this.source instanceof e)throw new Error("GPUDataEvaluator target buffers require a deferred operation source");this._targetBuffer={buffer:t,byteOffset:r,byteStride:n}}async evaluate(t,r={}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let n;if(this.source instanceof e){const e=await this.source.evaluate(t);return this._gpuVector=this.createGPUVectorView({...r,buffer:he(e)}),this._gpuVector}if(n=this._getEvaluationBuffer(t),this._value)n.write(this._value);else{const e=await this.source.execute(t,n);if(!e.success)throw e.error||new Error(`${this.source} evaluation failed`);e.value&&(this._value=e.value)}return this._gpuVector=this.createGPUVectorView({...r,buffer:n}),this._gpuVector}evaluateSync(t,r={}){if(this._destroyed)throw new Error(`GPUDataEvaluator ${this} already destroyed`);if(this._gpuVector)return this._gpuVector;let n;if(this.source instanceof e){const e=this.source.evaluateSync(t);return this._gpuVector=this.createGPUVectorView({...r,buffer:he(e)}),this._gpuVector}if(n=this._getEvaluationBuffer(t),this._value)n.write(this._value);else{const e=this.source.executeSync(t,n);if(!e.success)throw e.error||new Error(`${this.source} evaluation failed`);e.value&&(this._value=e.value)}return this._gpuVector=this.createGPUVectorView({...r,buffer:n}),this._gpuVector}createGPUVectorView(e){const t=e.name??this._id??"vector",r=e.format??this.format??function(e,t,r=!1){return t>=1&&t<=4?de(e,t,r):void 0}(this.type,this.size,this.normalized);if(e.interleaved){const r="object"==typeof e.interleaved&&e.interleaved.attributes?e.interleaved.attributes:function(e){const t=[];return ce(e,t,{byteOffset:0}),t}(this);return new ie({type:"interleaved",name:t,buffer:e.buffer,format:e.format??this.format,length:this.length,byteOffset:this.offset,byteStride:this.stride,attributes:r,ownsBuffer:!1})}return new ie({type:"buffer",name:t,buffer:e.buffer,format:r,length:this.length,stride:this.size,byteOffset:this.offset,byteStride:this.stride,rowByteLength:this.ValueType.BYTES_PER_ELEMENT*this.size,ownsBuffer:!1})}_getEvaluationBuffer(e){const t=this._targetBuffer;if(!t)return oe.createOrReuse(e,this.byteLength);if(t.buffer.device!==e)throw new Error("GPUDataEvaluator target buffer belongs to a different device");const r=this.ValueType.BYTES_PER_ELEMENT*this.size,n=0===this.length?0:(this.length-1)*t.byteStride+r;if(t.byteOffset+n>t.buffer.byteLength)throw new Error("GPUDataEvaluator target buffer is too small for the output layout");return this._offset=t.byteOffset,this._stride=t.byteStride,this._byteLength=n,this._bufferOwnership="borrowed",this._targetBuffer=void 0,t.buffer}async readValue(e=0,t){const{ValueType:r}=this,{size:n,offset:i,stride:s,length:o}=this,a=r.BYTES_PER_ELEMENT*n;if(t=t??o,e=Math.max(0,Math.min(o,e)),t=Math.max(e,Math.min(o,t)),this._value)return function(e,t,r,n){const{ValueType:i,size:s,offset:o,stride:a}=e,f=a/i.BYTES_PER_ELEMENT,u=o/i.BYTES_PER_ELEMENT,h=n-r;if(f===s){const e=u+r*f;return t.subarray(e,e+h*s)}const c=new i(h*s);for(let d=0;d<h;d++){const e=u+(r+d)*f;c.set(t.subarray(e,e+s),d*s)}return c}(this,this._value,e,t);const f=t-e;if(0===f)return new r(0);const u=i+e*s,h=s===a?f*a:(f-1)*s+a,c=await this.buffer.readAsync(u,h),d=new r(c.buffer,c.byteOffset,c.byteLength/r.BYTES_PER_ELEMENT);if(s===a)return d;const l=new Uint8Array(a*f);for(let y=0;y<f;y++){const e=y*s;l.set(c.subarray(e,e+a),y*a)}return new r(l.buffer)}async ensureCPUValue(){const e=this.value;if(e)return e;const t=await this.buffer.readAsync(0,this.offset+this.byteLength);if(t.byteLength%this.ValueType.BYTES_PER_ELEMENT!==0)throw new Error(`${this} backing buffer byte length is not aligned to its scalar type`);const r=t.slice();return this._value=new this.ValueType(r.buffer,r.byteOffset,r.byteLength/this.ValueType.BYTES_PER_ELEMENT),this._value}ensureCPUValueSync(){const e=this.value;if(e)return e;throw new Error(`${this} CPU value is not available for synchronous evaluation`)}toString(){return this._id??this.source?.toString()??this.constructor.name}destroy(){this._gpuVector&&("owned"===this._bufferOwnership&&oe.recycle(he(this._gpuVector)),this._gpuVector=void 0),this._targetBuffer=void 0,this._destroyed=!0}};function fe(e){if(e instanceof ae)return e;if("number"==typeof e||Array.isArray(e))return ae.fromConstant(e);if(e instanceof ne)return ae.fromGPUData(e);if(e instanceof J)return ae.fromGPUDataView(e);throw new Error("getGPUDataEvaluator() requires GPUDataEvaluator, GPUData, GPUDataView, number, or number[]")}function ue(e){const r=q(e.format),n=t.getTypedArrayFromDataType(r.signedDataType),i=n.BYTES_PER_ELEMENT*r.components;if(r.byteLength!==i)throw new Error(`GPUDataEvaluator does not support packed vertex format ${e.format}: ${r.byteLength} physical bytes cannot expose ${r.components} ${r.signedDataType} components`);if(e.byteOffset%n.BYTES_PER_ELEMENT!==0||e.byteStride%n.BYTES_PER_ELEMENT!==0)throw new Error(`GPUDataEvaluator requires ${e.format} offset and stride aligned to ${n.BYTES_PER_ELEMENT} bytes`);return{type:r.signedDataType,size:r.components,offset:e.byteOffset,stride:e.byteStride,normalized:r.normalized,length:e.length,format:e.format}}function he(e){const t=function(e){const[t,...r]=e.data;if(!t||r.length>0)throw new Error(`GPUDataEvaluator requires exactly one GPUData chunk for "${e.name}"`);return t}(e).buffer;return t instanceof M?t.buffer:t}function ce(e,t,r){const n=e.source;if(!n||n instanceof ae||"interleave"!==n.name)t.push({attribute:e.id??e.toString(),format:de(e.type,e.size,e.normalized),byteOffset:r.byteOffset}),r.byteOffset+=e.ValueType.BYTES_PER_ELEMENT*e.size;else for(const i of Object.values(n.inputs))i instanceof ae&&ce(i,t,r)}function de(e,t,r=!1){if(t<1||t>4)throw new Error(`Cannot synthesize a GPUVector vertex format with ${t} components`);let n=e;if(r)switch(e){case"uint8":n="unorm8";break;case"sint8":n="snorm8";break;case"uint16":n="unorm16";break;case"sint16":n="snorm16";break;case"float32":n="float32";break;default:throw new Error(`Unsupported normalized vertex format for ${e}`)}return"uint8"!==n&&"sint8"!==n&&"uint16"!==n&&"sint16"!==n&&"unorm8"!==n&&"snorm8"!==n&&"unorm16"!==n&&"snorm16"!==n||3!==t?`${n}${1===t?"":`x${t}`}`:`${n}x3-webgl`}var le={add:{arity:2,symbol:"arithmetic_add"},subtract:{arity:2,symbol:"arithmetic_subtract"},multiply:{arity:2,symbol:"arithmetic_multiply"},divide:{arity:2,symbol:"arithmetic_divide"},pow:{arity:2,symbol:"pow"},sqrt:{arity:1,symbol:"sqrt"},abs:{arity:1,symbol:"abs"},sin:{arity:1,symbol:"sin"},cos:{arity:1,symbol:"cos"},tan:{arity:1,symbol:"arithmetic_tan"},exp:{arity:1,symbol:"exp"},log:{arity:1,symbol:"log"}};function ye(e,{operations:t,inputs:r}){switch(e.kind){case"input":if(!(e.name in r))throw new Error(`Unknown expression input '${e.name}'`);return;case"literal":if(Array.isArray(e.value)){for(const t of e.value)if(!Number.isFinite(t))throw new Error(`Expression literal array must contain only finite values, got ${t}`)}else if(!Number.isFinite(e.value))throw new Error(`Expression literal must be finite, got ${e.value}`);return;case"call":{const n=t[e.op];if(!n)throw new Error(`Unknown expression op '${e.op}'`);if(e.args.length!==n.arity)throw new Error(`Expression op '${e.op}' expects ${n.arity} args, got ${e.args.length}`);for(const i of e.args)ye(i,{operations:t,inputs:r});return}default:throw new Error(`Unsupported expression node ${e.kind}`)}}function ge(e,t){return ye(e,t),pe(e,t)}function pe(e,t){switch(e.kind){case"input":{const r=t.inputs[e.name];return t.laneIndex<r.size?t.formatInput(e.name):t.formatOutOfBoundsInput(e.name)}case"literal":return t.formatLiteral(e.value);case"call":{const r=t.operations[e.op],n=e.args.map(e=>pe(e,t));return t.formatCall(r.symbol,n)}default:throw new Error(`Unsupported expression node ${e.kind}`)}}Object.defineProperty(exports,"ARITHMETIC_OPERATIONS",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"ComputePipeline",{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,"DynamicBuffer",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"GPUDataEvaluator",{enumerable:!0,get:function(){return ae}}),Object.defineProperty(exports,"GPUVector",{enumerable:!0,get:function(){return ie}}),Object.defineProperty(exports,"PipelineFactory",{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,"ShaderFactory",{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,"ShaderInputs",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"UniformStore",{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,"bufferPool",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"compileExpression",{enumerable:!0,get:function(){return ge}}),Object.defineProperty(exports,"getDynamicBufferFromBinding",{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,"getGPUDataEvaluator",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"getShaderModuleUniformBlockLayouts",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"isBufferRangeBinding",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"isNumericArray",{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,"mergeInferredShaderLayout",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"mergeShaderModuleBindingsIntoLayout",{enumerable:!0,get:function(){return B}}),Object.defineProperty(exports,"mergeShaderModules",{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,"mergeShaderPluginModules",{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,"resolveBufferRangeBinding",{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,"resolveShaderPlugins",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"shaderModuleHasUniforms",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"uid",{enumerable:!0,get:function(){return _}});
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=(new t.Error).stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="c7330cb8-7e4b-40fa-88c5-e47ff6e0d146",t._sentryDebugIdIdentifier="sentry-dbid-c7330cb8-7e4b-40fa-88c5-e47ff6e0d146")}catch(t){}}();const t=require("./debug-hooks-C_m1SbH2.cjs");var e=globalThis.loaders?.parseImageNode,r="undefined"!=typeof Image,n="undefined"!=typeof ImageBitmap,i=!!t.isBrowser$1||Boolean(e);function s(t){const e=function(t){return"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?"imagebitmap":"undefined"!=typeof Image&&t instanceof Image?"image":t&&"object"==typeof t&&t.data&&t.width&&t.height?"data":null}(t);if(!e)throw new Error("Not an image");return e}function a(t){switch(s(t)){case"data":return t;case"image":case"imagebitmap":const e=document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("getImageData");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0),r.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}var o=/^data:image\/svg\+xml/,c=/\.svg((\?|#).*)?$/;function u(t){return t&&(o.test(t)||c.test(t))}function h(t,e){if(u(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function l(t,e,r){const n=function(t,e){if(u(e)){let e=(new TextDecoder).decode(t);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(e=unescape(encodeURIComponent(e)))}catch(r){throw new Error(r.message)}return`data:image/svg+xml;base64,${btoa(e)}`}return h(t,e)}(t,r),i=self.URL||self.webkitURL,s="string"!=typeof n&&i.createObjectURL(n);try{return await async function(t,e){const r=new Image;if(r.src=t,e.image&&e.image.decode&&r.decode)return await r.decode(),r;return await new Promise((t,e)=>{try{r.onload=()=>t(r),r.onerror=t=>{const r=t instanceof Error?t.message:"error";e(new Error(r))}}catch(n){e(n)}})}(s||n,e)}finally{s&&i.revokeObjectURL(s)}}var g=!0;async function f(t,e,r){let n;n=u(r)?await l(t,e,r):h(t,r);const i=e&&e.imagebitmap;return await async function(t,e=null){!function(t){if(!t)return!0;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}(e)&&g||(e=null);if(e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),g=!1}return await createImageBitmap(t)}(n,i)}function m(t){return function(t,e,r=0){const n=(i=e,[...i].map(t=>t.charCodeAt(0)));var i;for(let s=0;s<n.length;++s)if(n[s]!==t[s+r])return!1;return!0}(t,"ftyp",4)&&96&t[8]?function(t){switch((e=t,r=8,n=12,String.fromCharCode(...e.slice(r,n))).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}var e,r,n}(t):null}var d=!1,p=!0;function y(t){const e=b(t);return function(t){const e=b(t);return e.byteLength>=24&&2303741511===e.getUint32(0,d)?{mimeType:"image/png",width:e.getUint32(16,d),height:e.getUint32(20,d)}:null}(e)||function(t){const e=b(t);if(!(e.byteLength>=3&&65496===e.getUint16(0,d)&&255===e.getUint8(2)))return null;const{tableMarkers:r,sofMarkers:n}=function(){const t=new Set([65499,65476,65484,65501,65534]);for(let e=65504;e<65520;++e)t.add(e);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}();let i=2;for(;i+9<e.byteLength;){const t=e.getUint16(i,d);if(n.has(t))return{mimeType:"image/jpeg",height:e.getUint16(i+5,d),width:e.getUint16(i+7,d)};if(!r.has(t))return null;i+=2,i+=e.getUint16(i,d)}return null}(e)||function(t){const e=b(t);return e.byteLength>=10&&1195984440===e.getUint32(0,d)?{mimeType:"image/gif",width:e.getUint16(6,p),height:e.getUint16(8,p)}:null}(e)||function(t){const e=b(t);return e.byteLength>=14&&16973===e.getUint16(0,d)&&e.getUint32(2,p)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,p),height:e.getUint32(22,p)}:null}(e)||function(t){const e=new Uint8Array(t instanceof DataView?t.buffer:t),r=m(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}(e)}function b(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}var w,M={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:"4.5.4",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],parse:async function(e,s,o){const c=((s=s||{}).image||{}).type||"auto",{url:u}=o||{};let h;switch(function(t){switch(t){case"auto":case"data":return function(){if(n)return"imagebitmap";if(r)return"image";if(i)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(t){switch(t){case"auto":return n||r||i;case"imagebitmap":return n;case"image":return r;case"data":return i;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}(t),t}}(c)){case"imagebitmap":h=await f(e,s,u);break;case"image":h=await l(e,s,u);break;case"data":h=await async function(e){const{mimeType:r}=y(e)||{},n=globalThis.loaders?.parseImageNode;return t.assert$3(n),await n(e,r)}(e);break;default:t.assert$3(!1)}return"data"===c&&(h=a(h)),h},tests:[t=>Boolean(y(new DataView(t)))],options:{image:{type:"auto",decode:!0}}},x=class e extends t.Vector{static get ZERO(){return w||(w=new e(0,0,0,0),Object.freeze(w)),w}constructor(e=0,r=0,n=0,i=0){super(-0,-0,-0,-0),t.isArray(e)&&1===arguments.length?this.copy(e):(t.config.debug&&(t.checkNumber(e),t.checkNumber(r),t.checkNumber(n),t.checkNumber(i)),this[0]=e,this[1]=r,this[2]=n,this[3]=i)}set(t,e,r,n){return this[0]=t,this[1]=e,this[2]=r,this[3]=n,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(e){return t.config.debug&&(t.checkNumber(e.x),t.checkNumber(e.y),t.checkNumber(e.z),t.checkNumber(e.w)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this[3]=e.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(e){this[2]=t.checkNumber(e)}get w(){return this[3]}set w(e){this[3]=t.checkNumber(e)}transform(e){return t.transformMat4$1(this,this,e),this.check()}transformByMatrix3(e){return t.vec4_transformMat3(this,this,e),this.check()}transformByMatrix2(e){return t.vec4_transformMat2(this,this,e),this.check()}transformByQuaternion(e){return t.transformQuat$1(this,this,e),this.check()}applyMatrix4(t){return t.transform(this,this),this}};function k(t,e){if(t===e){const r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function j(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],u=e[7],h=e[8],l=h*a-o*u,g=-h*s+o*c,f=u*s-a*c;let m=r*l+n*g+i*f;return m?(m=1/m,t[0]=l*m,t[1]=(-h*n+i*u)*m,t[2]=(o*n-i*a)*m,t[3]=g*m,t[4]=(h*r-i*c)*m,t[5]=(-o*r+i*s)*m,t[6]=f*m,t[7]=(-u*r+n*c)*m,t[8]=(a*r-n*s)*m,t):null}function T(t){const e=t[0],r=t[1],n=t[2],i=t[3],s=t[4],a=t[5],o=t[6],c=t[7],u=t[8];return e*(u*s-a*c)+r*(-u*i+a*o)+n*(c*i-s*o)}function P(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=r[0],f=r[1],m=r[2],d=r[3],p=r[4],y=r[5],b=r[6],w=r[7],M=r[8];return t[0]=g*n+f*a+m*u,t[1]=g*i+f*o+m*h,t[2]=g*s+f*c+m*l,t[3]=d*n+p*a+y*u,t[4]=d*i+p*o+y*h,t[5]=d*s+p*c+y*l,t[6]=b*n+w*a+M*u,t[7]=b*i+w*o+M*h,t[8]=b*s+w*c+M*l,t}function A(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=r[0],f=r[1];return t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=c,t[6]=g*n+f*a+u,t[7]=g*i+f*o+h,t[8]=g*s+f*c+l,t}function E(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=Math.sin(r),f=Math.cos(r);return t[0]=f*n+g*a,t[1]=f*i+g*o,t[2]=f*s+g*c,t[3]=f*a-g*n,t[4]=f*o-g*i,t[5]=f*c-g*s,t[6]=u,t[7]=h,t[8]=l,t}function I(t,e,r){const n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function v(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,c=i+i,u=r*a,h=n*a,l=n*o,g=i*a,f=i*o,m=i*c,d=s*a,p=s*o,y=s*c;return t[0]=1-l-m,t[3]=h-y,t[6]=g+p,t[1]=h+y,t[4]=1-u-m,t[7]=f-d,t[2]=g-p,t[5]=f+d,t[8]=1-u-l,t}function D(){const e=new t.ARRAY_TYPE(4);return t.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function U(t,e,r){r*=.5;const n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function L(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],c=r[1],u=r[2],h=r[3];return t[0]=n*h+a*o+i*u-s*c,t[1]=i*h+a*c+s*o-n*u,t[2]=s*h+a*u+n*c-i*o,t[3]=a*h-n*o-i*c-s*u,t}function R(t,e,r,n){const i=e[0],s=e[1],a=e[2],o=e[3];let c,u,h,l,g,f=r[0],m=r[1],d=r[2],p=r[3];return c=i*f+s*m+a*d+o*p,c<0&&(c=-c,f=-f,m=-m,d=-d,p=-p),1-c>1e-6?(u=Math.acos(c),g=Math.sin(u),h=Math.sin((1-n)*u)/g,l=Math.sin(n*u)/g):(h=1-n,l=n),t[0]=h*i+l*f,t[1]=h*s+l*m,t[2]=h*a+l*d,t[3]=h*o+l*p,t}function O(t,e){const r=e[0]+e[4]+e[8];let n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let r=0;e[4]>e[0]&&(r=1),e[8]>e[3*r+r]&&(r=2);const i=(r+1)%3,s=(r+2)%3;n=Math.sqrt(e[3*r+r]-e[3*i+i]-e[3*s+s]+1),t[r]=.5*n,n=.5/n,t[3]=(e[3*i+s]-e[3*s+i])*n,t[i]=(e[3*i+r]+e[3*r+i])*n,t[s]=(e[3*s+r]+e[3*r+s])*n}return t}var _=t.add,N=t.scale,S=t.dot,q=t.lerp,B=t.length,z=t.squaredLength,V=t.normalize,C=function(){const e=t.create(),r=t.fromValues(1,0,0),n=t.fromValues(0,1,0);return function(i,s,a){const o=t.dot$1(s,a);return o<-.999999?(t.cross(e,r,s),t.len(e)<1e-6&&t.cross(e,n,s),t.normalize$1(e,e),U(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(t.cross(e,s,a),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,V(i,i))}}(),Z=(function(){const t=D(),e=D()}(),function(){const e=function(){const e=new t.ARRAY_TYPE(9);return t.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}()}(),[0,0,0,1]),Y=class extends t.MathArray{constructor(t=0,e=0,r=0,n=1){super(-0,-0,-0,-0),Array.isArray(t)&&1===arguments.length?this.copy(t):this.set(t,e,r,n)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,e,r,n){return this[0]=t,this[1]=e,this[2]=r,this[3]=n,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return O(this,t),this.check()}fromAxisRotation(t,e){return U(this,t,e),this.check()}identity(){var t;return(t=this)[0]=0,t[1]=0,t[2]=0,t[3]=1,this.check()}setAxisAngle(t,e){return this.fromAxisRotation(t,e)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=t.checkNumber(e)}get y(){return this[1]}set y(e){this[1]=t.checkNumber(e)}get z(){return this[2]}set z(e){this[2]=t.checkNumber(e)}get w(){return this[3]}set w(e){this[3]=t.checkNumber(e)}len(){return B(this)}lengthSquared(){return z(this)}dot(t){return S(this,t)}rotationTo(t,e){return C(this,t,e),this.check()}add(t){return _(this,this,t),this.check()}calculateW(){return function(t,e){const r=e[0],n=e[1],i=e[2];t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i))}(this,this),this.check()}conjugate(){var t,e;return e=this,(t=this)[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],this.check()}invert(){return function(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s,o=a?1/a:0;t[0]=-r*o,t[1]=-n*o,t[2]=-i*o,t[3]=s*o}(this,this),this.check()}lerp(t,e,r){return void 0===r?this.lerp(this,t,e):(q(this,t,e,r),this.check())}multiplyRight(t){return L(this,this,t),this.check()}multiplyLeft(t){return L(this,t,this),this.check()}normalize(){const t=this.len(),e=t>0?1/t:0;return this[0]=this[0]*e,this[1]=this[1]*e,this[2]=this[2]*e,this[3]=this[3]*e,0===t&&(this[3]=1),this.check()}rotateX(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c+a*o,t[1]=i*c+s*o,t[2]=s*c-i*o,t[3]=a*c-n*o}(this,this,t),this.check()}rotateY(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c-s*o,t[1]=i*c+a*o,t[2]=s*c+n*o,t[3]=a*c-i*o}(this,this,t),this.check()}rotateZ(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c+i*o,t[1]=i*c-n*o,t[2]=s*c+a*o,t[3]=a*c-s*o}(this,this,t),this.check()}scale(t){return N(this,this,t),this.check()}slerp(t,e,r){let n,i,s;switch(arguments.length){case 1:({start:n=Z,target:i,ratio:s}=t);break;case 2:n=this,i=t,s=e;break;default:n=t,i=e,s=r}return R(this,n,i,s),this.check()}transformVector4(e,r=new x){return t.transformQuat(r,e,this),t.checkVector(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,e){return this.setAxisAngle(t,e)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}},G=Math.PI/180,$=180/Math.PI,F=6370972;function X(){const t=256/F,e=Math.PI/180*256;return{unitsPerMeter:[t,t,t],unitsPerMeter2:[0,0,0],metersPerUnit:[24886.609375,24886.609375,24886.609375],unitsPerDegree:[e,e,t],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/e,1/e,24886.609375]}}var Q=class extends t.Viewport{constructor(e={}){const{longitude:r=0,bearing:n=0,pitch:i=0,zoom:s=0,nearZMultiplier:a=.5,farZMultiplier:o=1,resolution:c=10}=e;let{latitude:u=0,height:h,altitude:l=1.5,fovy:g}=e;u=Math.max(Math.min(u,90),-90),h=h||1,g?l=t.fovyToAltitude(g):g=t.altitudeToFovy(l);const f=Math.max(Math.min(u,t.MAX_LATITUDE),-t.MAX_LATITUDE),m=Math.pow(2,s-H(f)),d=i*G,p=e.nearZ??a,y=e.farZ??(l+512*m/h/Math.max(Math.cos(d),.1))*o,b=(new t.Matrix4).lookAt({eye:[0,-l,0],up:[0,0,1]}).rotateX(-d).rotateY(-n*G).rotateX(u*G).rotateZ(-r*G).scale(m/h);super({...e,height:h,viewMatrix:b,longitude:r,latitude:u,zoom:s,distanceScales:X(),fovy:g,focalDistance:l,near:p,far:y}),this.scale=m,this.latitude=u,this.longitude=r,this.bearing=n,this.pitch=i,this.fovy=g,this.resolution=c}get projectionMode(){return t.PROJECTION_MODE.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){const e={targetZ:t.z||0},r=this.unproject([0,this.height/2],e),n=this.unproject([this.width/2,0],e),i=this.unproject([this.width,this.height/2],e),s=this.unproject([this.width/2,this.height],e);return i[0]<this.longitude&&(i[0]+=360),r[0]>this.longitude&&(r[0]-=360),[Math.min(r[0],i[0],n[0],s[0]),Math.min(r[1],i[1],n[1],s[1]),Math.max(r[0],i[0],n[0],s[0]),Math.max(r[1],i[1],n[1],s[1])]}_getRayToGlobe(e,{topLeft:r=!0,targetZ:n}={}){const[i,s]=e,a=r?s:this.height-s,{pixelUnprojectionMatrix:o}=this,c=J(o,[i,a,-1,1]),u=J(o,[i,a,1,1]),h=256*((n||0)/F+1),l=t.sqrLen(t.sub([],c,u)),g=t.sqrLen(c),f=t.sqrLen(u);return{rayStartPosition:c,rayEndPosition:u,radius:h,rayLengthSquared:l,rayStartDistanceSquared:g,distanceToCenterSquared:(4*g*f-(l-g-f)**2)/16*4/l}}_getRayDistanceToGlobeCenterRatio(t,e){const{distanceToCenterSquared:r,radius:n}=this._getRayToGlobe(t,e);return Math.sqrt(Math.max(0,r))/n}getZoomAnchorStrength(t){const e=this._getRayDistanceToGlobeCenterRatio(t);return e>1.15?0:1-.65*Math.max(0,Math.min(1,(e-.75)/.25))}unproject(e,{topLeft:r=!0,targetZ:n}={}){const[i,s,a]=e,o=r?s:this.height-s,{pixelUnprojectionMatrix:c}=this;let u;if(Number.isFinite(a))u=J(c,[i,o,a,1]);else{const{rayStartPosition:i,rayEndPosition:s,radius:a,rayLengthSquared:o,rayStartDistanceSquared:c,distanceToCenterSquared:h}=this._getRayToGlobe(e,{topLeft:r,targetZ:n}),l=(Math.sqrt(c-h)-Math.sqrt(Math.max(0,a*a-h)))/Math.sqrt(o);u=t.lerp$1([],i,s,l)}const[h,l,g]=this.unprojectPosition(u);return Number.isFinite(a)?[h,l,g]:Number.isFinite(n)?[h,l,n]:[h,l]}projectPosition(t){const[e,r,n=0]=t,i=e*G,s=r*G,a=Math.cos(s),o=256*(n/F+1);return[Math.sin(i)*a*o,-Math.cos(i)*a*o,Math.sin(s)*o]}unprojectPosition(e){const[r,n,i]=e,s=t.len(e),a=Math.asin(i/s);return[Math.atan2(r,-n)*$,a*$,(s/256-1)*F]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(e,r,n){if(!n){const n=this.getZoomAnchorStrength(r);if(0===n)return{longitude:this.longitude,latitude:this.latitude};const i=this.unproject(r),s=t.mod(e[0]-i[0]+180,360)-180;return{longitude:this.longitude+s*n,latitude:Math.max(Math.min(this.latitude+(e[1]-i[1])*n,90),-90)}}const[i,s,a]=e,o=.25/Math.pow(2,this.zoom-H(this.latitude)),c=i+o*(n[0]-r[0]);let u=s-o*(n[1]-r[1]);u=Math.max(Math.min(u,90),-90);const h={longitude:c,latitude:u,zoom:a-H(s)};return h.zoom+=H(h.latitude),h}};function H(e,r){r&&(e=Math.max(Math.min(e,t.MAX_LATITUDE),-t.MAX_LATITUDE));const n=Math.PI*Math.cos(e*Math.PI/180);return Math.log2(n)}function J(e,r){const n=t.transformMat4([],r,e);return t.scale(n,n,1/n[3]),n}Q.displayName="GlobeViewport",Object.defineProperty(exports,"GlobeViewport",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"ImageLoader",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"Quaternion",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"determinant",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"fromQuat",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"getBinaryImageMetadata",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"getImageData",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"invert",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"multiply",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"rotate",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"scale",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"translate",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"transpose",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"zoomAdjust",{enumerable:!0,get:function(){return H}});
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e=(new t.Error).stack;e&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[e]="096f23ae-a78a-4bed-abd0-10b39e9aba37",t._sentryDebugIdIdentifier="sentry-dbid-096f23ae-a78a-4bed-abd0-10b39e9aba37")}catch(t){}}();const t=require("./debug-hooks-xLx1YP8n.cjs");var e=globalThis.loaders?.parseImageNode,r="undefined"!=typeof Image,n="undefined"!=typeof ImageBitmap,i=!!t.isBrowser$1||Boolean(e);function s(t){const e=function(t){return"undefined"!=typeof ImageBitmap&&t instanceof ImageBitmap?"imagebitmap":"undefined"!=typeof Image&&t instanceof Image?"image":t&&"object"==typeof t&&t.data&&t.width&&t.height?"data":null}(t);if(!e)throw new Error("Not an image");return e}function a(t){switch(s(t)){case"data":return t;case"image":case"imagebitmap":const e=document.createElement("canvas"),r=e.getContext("2d");if(!r)throw new Error("getImageData");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0),r.getImageData(0,0,t.width,t.height);default:throw new Error("getImageData")}}var o=/^data:image\/svg\+xml/,c=/\.svg((\?|#).*)?$/;function u(t){return t&&(o.test(t)||c.test(t))}function h(t,e){if(u(e))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(t)])}async function l(t,e,r){const n=function(t,e){if(u(e)){let e=(new TextDecoder).decode(t);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(e=unescape(encodeURIComponent(e)))}catch(r){throw new Error(r.message)}return`data:image/svg+xml;base64,${btoa(e)}`}return h(t,e)}(t,r),i=self.URL||self.webkitURL,s="string"!=typeof n&&i.createObjectURL(n);try{return await async function(t,e){const r=new Image;if(r.src=t,e.image&&e.image.decode&&r.decode)return await r.decode(),r;return await new Promise((t,e)=>{try{r.onload=()=>t(r),r.onerror=t=>{const r=t instanceof Error?t.message:"error";e(new Error(r))}}catch(n){e(n)}})}(s||n,e)}finally{s&&i.revokeObjectURL(s)}}var g=!0;async function f(t,e,r){let n;n=u(r)?await l(t,e,r):h(t,r);const i=e&&e.imagebitmap;return await async function(t,e=null){!function(t){if(!t)return!0;for(const e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}(e)&&g||(e=null);if(e)try{return await createImageBitmap(t,e)}catch(r){console.warn(r),g=!1}return await createImageBitmap(t)}(n,i)}function m(t){return function(t,e,r=0){const n=(i=e,[...i].map(t=>t.charCodeAt(0)));var i;for(let s=0;s<n.length;++s)if(n[s]!==t[s+r])return!1;return!0}(t,"ftyp",4)&&96&t[8]?function(t){switch((e=t,r=8,n=12,String.fromCharCode(...e.slice(r,n))).replace("\0"," ").trim()){case"avif":case"avis":return{extension:"avif",mimeType:"image/avif"};default:return null}var e,r,n}(t):null}var d=!1,p=!0;function y(t){const e=b(t);return function(t){const e=b(t);return e.byteLength>=24&&2303741511===e.getUint32(0,d)?{mimeType:"image/png",width:e.getUint32(16,d),height:e.getUint32(20,d)}:null}(e)||function(t){const e=b(t);if(!(e.byteLength>=3&&65496===e.getUint16(0,d)&&255===e.getUint8(2)))return null;const{tableMarkers:r,sofMarkers:n}=function(){const t=new Set([65499,65476,65484,65501,65534]);for(let e=65504;e<65520;++e)t.add(e);return{tableMarkers:t,sofMarkers:new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502])}}();let i=2;for(;i+9<e.byteLength;){const t=e.getUint16(i,d);if(n.has(t))return{mimeType:"image/jpeg",height:e.getUint16(i+5,d),width:e.getUint16(i+7,d)};if(!r.has(t))return null;i+=2,i+=e.getUint16(i,d)}return null}(e)||function(t){const e=b(t);return e.byteLength>=10&&1195984440===e.getUint32(0,d)?{mimeType:"image/gif",width:e.getUint16(6,p),height:e.getUint16(8,p)}:null}(e)||function(t){const e=b(t);return e.byteLength>=14&&16973===e.getUint16(0,d)&&e.getUint32(2,p)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,p),height:e.getUint32(22,p)}:null}(e)||function(t){const e=new Uint8Array(t instanceof DataView?t.buffer:t),r=m(e);return r?{mimeType:r.mimeType,width:0,height:0}:null}(e)}function b(t){if(t instanceof DataView)return t;if(ArrayBuffer.isView(t))return new DataView(t.buffer);if(t instanceof ArrayBuffer)return new DataView(t);throw new Error("toDataView")}var w,M={dataType:null,batchType:null,id:"image",module:"images",name:"Images",version:"4.5.4",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/avif","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg","avif"],parse:async function(e,s,o){const c=((s=s||{}).image||{}).type||"auto",{url:u}=o||{};let h;switch(function(t){switch(t){case"auto":case"data":return function(){if(n)return"imagebitmap";if(r)return"image";if(i)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(t){switch(t){case"auto":return n||r||i;case"imagebitmap":return n;case"image":return r;case"data":return i;default:throw new Error(`@loaders.gl/images: image ${t} not supported in this environment`)}}(t),t}}(c)){case"imagebitmap":h=await f(e,s,u);break;case"image":h=await l(e,s,u);break;case"data":h=await async function(e){const{mimeType:r}=y(e)||{},n=globalThis.loaders?.parseImageNode;return t.assert$3(n),await n(e,r)}(e);break;default:t.assert$3(!1)}return"data"===c&&(h=a(h)),h},tests:[t=>Boolean(y(new DataView(t)))],options:{image:{type:"auto",decode:!0}}},x=class e extends t.Vector{static get ZERO(){return w||(w=new e(0,0,0,0),Object.freeze(w)),w}constructor(e=0,r=0,n=0,i=0){super(-0,-0,-0,-0),t.isArray(e)&&1===arguments.length?this.copy(e):(t.config.debug&&(t.checkNumber(e),t.checkNumber(r),t.checkNumber(n),t.checkNumber(i)),this[0]=e,this[1]=r,this[2]=n,this[3]=i)}set(t,e,r,n){return this[0]=t,this[1]=e,this[2]=r,this[3]=n,this.check()}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}fromObject(e){return t.config.debug&&(t.checkNumber(e.x),t.checkNumber(e.y),t.checkNumber(e.z),t.checkNumber(e.w)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this[3]=e.w,this}toObject(t){return t.x=this[0],t.y=this[1],t.z=this[2],t.w=this[3],t}get ELEMENTS(){return 4}get z(){return this[2]}set z(e){this[2]=t.checkNumber(e)}get w(){return this[3]}set w(e){this[3]=t.checkNumber(e)}transform(e){return t.transformMat4$1(this,this,e),this.check()}transformByMatrix3(e){return t.vec4_transformMat3(this,this,e),this.check()}transformByMatrix2(e){return t.vec4_transformMat2(this,this,e),this.check()}transformByQuaternion(e){return t.transformQuat$1(this,this,e),this.check()}applyMatrix4(t){return t.transform(this,this),this}};function k(t,e){if(t===e){const r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function j(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],u=e[7],h=e[8],l=h*a-o*u,g=-h*s+o*c,f=u*s-a*c;let m=r*l+n*g+i*f;return m?(m=1/m,t[0]=l*m,t[1]=(-h*n+i*u)*m,t[2]=(o*n-i*a)*m,t[3]=g*m,t[4]=(h*r-i*c)*m,t[5]=(-o*r+i*s)*m,t[6]=f*m,t[7]=(-u*r+n*c)*m,t[8]=(a*r-n*s)*m,t):null}function T(t){const e=t[0],r=t[1],n=t[2],i=t[3],s=t[4],a=t[5],o=t[6],c=t[7],u=t[8];return e*(u*s-a*c)+r*(-u*i+a*o)+n*(c*i-s*o)}function P(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=r[0],f=r[1],m=r[2],d=r[3],p=r[4],y=r[5],b=r[6],w=r[7],M=r[8];return t[0]=g*n+f*a+m*u,t[1]=g*i+f*o+m*h,t[2]=g*s+f*c+m*l,t[3]=d*n+p*a+y*u,t[4]=d*i+p*o+y*h,t[5]=d*s+p*c+y*l,t[6]=b*n+w*a+M*u,t[7]=b*i+w*o+M*h,t[8]=b*s+w*c+M*l,t}function A(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=r[0],f=r[1];return t[0]=n,t[1]=i,t[2]=s,t[3]=a,t[4]=o,t[5]=c,t[6]=g*n+f*a+u,t[7]=g*i+f*o+h,t[8]=g*s+f*c+l,t}function E(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=e[4],c=e[5],u=e[6],h=e[7],l=e[8],g=Math.sin(r),f=Math.cos(r);return t[0]=f*n+g*a,t[1]=f*i+g*o,t[2]=f*s+g*c,t[3]=f*a-g*n,t[4]=f*o-g*i,t[5]=f*c-g*s,t[6]=u,t[7]=h,t[8]=l,t}function I(t,e,r){const n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function v(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=r+r,o=n+n,c=i+i,u=r*a,h=n*a,l=n*o,g=i*a,f=i*o,m=i*c,d=s*a,p=s*o,y=s*c;return t[0]=1-l-m,t[3]=h-y,t[6]=g+p,t[1]=h+y,t[4]=1-u-m,t[7]=f-d,t[2]=g-p,t[5]=f+d,t[8]=1-u-l,t}function D(){const e=new t.ARRAY_TYPE(4);return t.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function U(t,e,r){r*=.5;const n=Math.sin(r);return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=Math.cos(r),t}function L(t,e,r){const n=e[0],i=e[1],s=e[2],a=e[3],o=r[0],c=r[1],u=r[2],h=r[3];return t[0]=n*h+a*o+i*u-s*c,t[1]=i*h+a*c+s*o-n*u,t[2]=s*h+a*u+n*c-i*o,t[3]=a*h-n*o-i*c-s*u,t}function R(t,e,r,n){const i=e[0],s=e[1],a=e[2],o=e[3];let c,u,h,l,g,f=r[0],m=r[1],d=r[2],p=r[3];return c=i*f+s*m+a*d+o*p,c<0&&(c=-c,f=-f,m=-m,d=-d,p=-p),1-c>1e-6?(u=Math.acos(c),g=Math.sin(u),h=Math.sin((1-n)*u)/g,l=Math.sin(n*u)/g):(h=1-n,l=n),t[0]=h*i+l*f,t[1]=h*s+l*m,t[2]=h*a+l*d,t[3]=h*o+l*p,t}function O(t,e){const r=e[0]+e[4]+e[8];let n;if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{let r=0;e[4]>e[0]&&(r=1),e[8]>e[3*r+r]&&(r=2);const i=(r+1)%3,s=(r+2)%3;n=Math.sqrt(e[3*r+r]-e[3*i+i]-e[3*s+s]+1),t[r]=.5*n,n=.5/n,t[3]=(e[3*i+s]-e[3*s+i])*n,t[i]=(e[3*i+r]+e[3*r+i])*n,t[s]=(e[3*s+r]+e[3*r+s])*n}return t}var _=t.add,N=t.scale,S=t.dot,q=t.lerp,B=t.length,z=t.squaredLength,V=t.normalize,C=function(){const e=t.create(),r=t.fromValues(1,0,0),n=t.fromValues(0,1,0);return function(i,s,a){const o=t.dot$1(s,a);return o<-.999999?(t.cross(e,r,s),t.len(e)<1e-6&&t.cross(e,n,s),t.normalize$1(e,e),U(i,e,Math.PI),i):o>.999999?(i[0]=0,i[1]=0,i[2]=0,i[3]=1,i):(t.cross(e,s,a),i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=1+o,V(i,i))}}(),Z=(function(){const t=D(),e=D()}(),function(){const e=function(){const e=new t.ARRAY_TYPE(9);return t.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}()}(),[0,0,0,1]),Y=class extends t.MathArray{constructor(t=0,e=0,r=0,n=1){super(-0,-0,-0,-0),Array.isArray(t)&&1===arguments.length?this.copy(t):this.set(t,e,r,n)}copy(t){return this[0]=t[0],this[1]=t[1],this[2]=t[2],this[3]=t[3],this.check()}set(t,e,r,n){return this[0]=t,this[1]=e,this[2]=r,this[3]=n,this.check()}fromObject(t){return this[0]=t.x,this[1]=t.y,this[2]=t.z,this[3]=t.w,this.check()}fromMatrix3(t){return O(this,t),this.check()}fromAxisRotation(t,e){return U(this,t,e),this.check()}identity(){var t;return(t=this)[0]=0,t[1]=0,t[2]=0,t[3]=1,this.check()}setAxisAngle(t,e){return this.fromAxisRotation(t,e)}get ELEMENTS(){return 4}get x(){return this[0]}set x(e){this[0]=t.checkNumber(e)}get y(){return this[1]}set y(e){this[1]=t.checkNumber(e)}get z(){return this[2]}set z(e){this[2]=t.checkNumber(e)}get w(){return this[3]}set w(e){this[3]=t.checkNumber(e)}len(){return B(this)}lengthSquared(){return z(this)}dot(t){return S(this,t)}rotationTo(t,e){return C(this,t,e),this.check()}add(t){return _(this,this,t),this.check()}calculateW(){return function(t,e){const r=e[0],n=e[1],i=e[2];t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i))}(this,this),this.check()}conjugate(){var t,e;return e=this,(t=this)[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],this.check()}invert(){return function(t,e){const r=e[0],n=e[1],i=e[2],s=e[3],a=r*r+n*n+i*i+s*s,o=a?1/a:0;t[0]=-r*o,t[1]=-n*o,t[2]=-i*o,t[3]=s*o}(this,this),this.check()}lerp(t,e,r){return void 0===r?this.lerp(this,t,e):(q(this,t,e,r),this.check())}multiplyRight(t){return L(this,this,t),this.check()}multiplyLeft(t){return L(this,t,this),this.check()}normalize(){const t=this.len(),e=t>0?1/t:0;return this[0]=this[0]*e,this[1]=this[1]*e,this[2]=this[2]*e,this[3]=this[3]*e,0===t&&(this[3]=1),this.check()}rotateX(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c+a*o,t[1]=i*c+s*o,t[2]=s*c-i*o,t[3]=a*c-n*o}(this,this,t),this.check()}rotateY(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c-s*o,t[1]=i*c+a*o,t[2]=s*c+n*o,t[3]=a*c-i*o}(this,this,t),this.check()}rotateZ(t){return function(t,e,r){r*=.5;const n=e[0],i=e[1],s=e[2],a=e[3],o=Math.sin(r),c=Math.cos(r);t[0]=n*c+i*o,t[1]=i*c-n*o,t[2]=s*c+a*o,t[3]=a*c-s*o}(this,this,t),this.check()}scale(t){return N(this,this,t),this.check()}slerp(t,e,r){let n,i,s;switch(arguments.length){case 1:({start:n=Z,target:i,ratio:s}=t);break;case 2:n=this,i=t,s=e;break;default:n=t,i=e,s=r}return R(this,n,i,s),this.check()}transformVector4(e,r=new x){return t.transformQuat(r,e,this),t.checkVector(r,4)}lengthSq(){return this.lengthSquared()}setFromAxisAngle(t,e){return this.setAxisAngle(t,e)}premultiply(t){return this.multiplyLeft(t)}multiply(t){return this.multiplyRight(t)}},G=Math.PI/180,$=180/Math.PI,F=6370972;function X(){const t=256/F,e=Math.PI/180*256;return{unitsPerMeter:[t,t,t],unitsPerMeter2:[0,0,0],metersPerUnit:[24886.609375,24886.609375,24886.609375],unitsPerDegree:[e,e,t],unitsPerDegree2:[0,0,0],degreesPerUnit:[1/e,1/e,24886.609375]}}var Q=class extends t.Viewport{constructor(e={}){const{longitude:r=0,bearing:n=0,pitch:i=0,zoom:s=0,nearZMultiplier:a=.5,farZMultiplier:o=1,resolution:c=10}=e;let{latitude:u=0,height:h,altitude:l=1.5,fovy:g}=e;u=Math.max(Math.min(u,90),-90),h=h||1,g?l=t.fovyToAltitude(g):g=t.altitudeToFovy(l);const f=Math.max(Math.min(u,t.MAX_LATITUDE),-t.MAX_LATITUDE),m=Math.pow(2,s-H(f)),d=i*G,p=e.nearZ??a,y=e.farZ??(l+512*m/h/Math.max(Math.cos(d),.1))*o,b=(new t.Matrix4).lookAt({eye:[0,-l,0],up:[0,0,1]}).rotateX(-d).rotateY(-n*G).rotateX(u*G).rotateZ(-r*G).scale(m/h);super({...e,height:h,viewMatrix:b,longitude:r,latitude:u,zoom:s,distanceScales:X(),fovy:g,focalDistance:l,near:p,far:y}),this.scale=m,this.latitude=u,this.longitude=r,this.bearing=n,this.pitch=i,this.fovy=g,this.resolution=c}get projectionMode(){return t.PROJECTION_MODE.GLOBE}getDistanceScales(){return this.distanceScales}getBounds(t={}){const e={targetZ:t.z||0},r=this.unproject([0,this.height/2],e),n=this.unproject([this.width/2,0],e),i=this.unproject([this.width,this.height/2],e),s=this.unproject([this.width/2,this.height],e);return i[0]<this.longitude&&(i[0]+=360),r[0]>this.longitude&&(r[0]-=360),[Math.min(r[0],i[0],n[0],s[0]),Math.min(r[1],i[1],n[1],s[1]),Math.max(r[0],i[0],n[0],s[0]),Math.max(r[1],i[1],n[1],s[1])]}_getRayToGlobe(e,{topLeft:r=!0,targetZ:n}={}){const[i,s]=e,a=r?s:this.height-s,{pixelUnprojectionMatrix:o}=this,c=J(o,[i,a,-1,1]),u=J(o,[i,a,1,1]),h=256*((n||0)/F+1),l=t.sqrLen(t.sub([],c,u)),g=t.sqrLen(c),f=t.sqrLen(u);return{rayStartPosition:c,rayEndPosition:u,radius:h,rayLengthSquared:l,rayStartDistanceSquared:g,distanceToCenterSquared:(4*g*f-(l-g-f)**2)/16*4/l}}_getRayDistanceToGlobeCenterRatio(t,e){const{distanceToCenterSquared:r,radius:n}=this._getRayToGlobe(t,e);return Math.sqrt(Math.max(0,r))/n}getZoomAnchorStrength(t){const e=this._getRayDistanceToGlobeCenterRatio(t);return e>1.15?0:1-.65*Math.max(0,Math.min(1,(e-.75)/.25))}unproject(e,{topLeft:r=!0,targetZ:n}={}){const[i,s,a]=e,o=r?s:this.height-s,{pixelUnprojectionMatrix:c}=this;let u;if(Number.isFinite(a))u=J(c,[i,o,a,1]);else{const{rayStartPosition:i,rayEndPosition:s,radius:a,rayLengthSquared:o,rayStartDistanceSquared:c,distanceToCenterSquared:h}=this._getRayToGlobe(e,{topLeft:r,targetZ:n}),l=(Math.sqrt(c-h)-Math.sqrt(Math.max(0,a*a-h)))/Math.sqrt(o);u=t.lerp$1([],i,s,l)}const[h,l,g]=this.unprojectPosition(u);return Number.isFinite(a)?[h,l,g]:Number.isFinite(n)?[h,l,n]:[h,l]}projectPosition(t){const[e,r,n=0]=t,i=e*G,s=r*G,a=Math.cos(s),o=256*(n/F+1);return[Math.sin(i)*a*o,-Math.cos(i)*a*o,Math.sin(s)*o]}unprojectPosition(e){const[r,n,i]=e,s=t.len(e),a=Math.asin(i/s);return[Math.atan2(r,-n)*$,a*$,(s/256-1)*F]}projectFlat(t){return t}unprojectFlat(t){return t}panByPosition(e,r,n){if(!n){const n=this.getZoomAnchorStrength(r);if(0===n)return{longitude:this.longitude,latitude:this.latitude};const i=this.unproject(r),s=t.mod(e[0]-i[0]+180,360)-180;return{longitude:this.longitude+s*n,latitude:Math.max(Math.min(this.latitude+(e[1]-i[1])*n,90),-90)}}const[i,s,a]=e,o=.25/Math.pow(2,this.zoom-H(this.latitude)),c=i+o*(n[0]-r[0]);let u=s-o*(n[1]-r[1]);u=Math.max(Math.min(u,90),-90);const h={longitude:c,latitude:u,zoom:a-H(s)};return h.zoom+=H(h.latitude),h}};function H(e,r){r&&(e=Math.max(Math.min(e,t.MAX_LATITUDE),-t.MAX_LATITUDE));const n=Math.PI*Math.cos(e*Math.PI/180);return Math.log2(n)}function J(e,r){const n=t.transformMat4([],r,e);return t.scale(n,n,1/n[3]),n}Q.displayName="GlobeViewport",Object.defineProperty(exports,"GlobeViewport",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"ImageLoader",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"Quaternion",{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,"determinant",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"fromQuat",{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,"getBinaryImageMetadata",{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,"getImageData",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"invert",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"multiply",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"rotate",{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,"scale",{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,"translate",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"transpose",{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,"zoomAdjust",{enumerable:!0,get:function(){return H}});
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="fc159d9f-32f1-4ad4-8e62-8aa15d44a1ec",e._sentryDebugIdIdentifier="sentry-dbid-fc159d9f-32f1-4ad4-8e62-8aa15d44a1ec")}catch(e){}}();exports.default="data:image/svg+xml,%3csvg%20width='22'%20height='22'%20viewBox='0%200%2022%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='11'%20cy='11'%20r='11'%20fill='%23E7F1F7'/%3e%3ccircle%20cx='11.0002'%20cy='10.9999'%20r='6.61538'%20fill='%23396FE5'%20stroke='white'%20stroke-width='2'/%3e%3c/svg%3e";
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e12c14f8-d88e-4152-ae70-864db06ab7ad",e._sentryDebugIdIdentifier="sentry-dbid-e12c14f8-d88e-4152-ae70-864db06ab7ad")}catch(e){}}();exports.default="data:image/svg+xml,%3csvg%20width='22'%20height='22'%20viewBox='0%200%2022%2022'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3ccircle%20cx='11'%20cy='11'%20r='11'%20fill='%23E7F1F7'/%3e%3ccircle%20cx='11.0002'%20cy='10.9999'%20r='6.61538'%20fill='%23396FE5'%20stroke='white'%20stroke-width='2'/%3e%3c/svg%3e";
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},b=(new a.Error).stack;b&&(a._sentryDebugIds=a._sentryDebugIds||{},a._sentryDebugIds[b]="5b731208-d8d2-43fd-9748-ec936bb6fdf2",a._sentryDebugIdIdentifier="sentry-dbid-5b731208-d8d2-43fd-9748-ec936bb6fdf2")}catch(a){}}();var a=function(){var a=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),b=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var c,e=WebAssembly.validate(a)?d("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb"):d("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb"),i=WebAssembly.instantiate(e,{}).then(function(a){(c=a.instance).exports.__wasm_call_ctors()});function d(a){for(var c=new Uint8Array(a.length),e=0;e<a.length;++e){var i=a.charCodeAt(e);c[e]=i>96?i-97:i>64?i-39:i+4}var d=0;for(e=0;e<a.length;++e)c[d++]=c[e]<60?b[c[e]]:64*(c[e]-60)+c[++e];return c.buffer.slice(0,d)}function p(a,b,c,e,i,d,p){var g=a.exports.sbrk,f=e+3&-4,h=g(f*i),l=g(d.length),o=new Uint8Array(a.exports.memory.buffer);o.set(d,l);var s=b(h,e,i,l,d.length);if(0==s&&p&&p(h,f,i),c.set(o.subarray(h,h+e*i)),g(h-g(0)),0!=s)throw new Error("Malformed buffer data: "+s)}var g={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],l=0;function o(a){var b={object:new Worker(a),pending:0,requests:{}};return b.object.onmessage=function(a){var c=a.data;b.pending-=c.count,b.requests[c.id][c.action](c.value),delete b.requests[c.id]},b}function s(a){var b=a.data;self.ready.then(function(a){if(!b.id)return self.close();try{var c=new Uint8Array(b.count*b.size);p(a,a.exports[b.mode],c,b.count,b.size,b.source,a.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:c},[c.buffer])}catch(e){self.postMessage({id:b.id,count:b.count,action:"reject",value:e})}})}return{ready:i,supported:!0,useWorkers:function(a){!function(a){for(var b="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(e)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+s.name+";"+p.toString()+s.toString(),c=new Blob([b],{type:"text/javascript"}),i=URL.createObjectURL(c),d=h.length;d<a;++d)h[d]=o(i);for(d=a;d<h.length;++d)h[d].object.postMessage({});h.length=a,URL.revokeObjectURL(i)}(a)},decodeVertexBuffer:function(a,b,e,i,d){p(c,c.exports.meshopt_decodeVertexBuffer,a,b,e,i,c.exports[g[d]])},decodeIndexBuffer:function(a,b,e,i){p(c,c.exports.meshopt_decodeIndexBuffer,a,b,e,i)},decodeIndexSequence:function(a,b,e,i){p(c,c.exports.meshopt_decodeIndexSequence,a,b,e,i)},decodeGltfBuffer:function(a,b,e,i,d,h){p(c,c.exports[f[d]],a,b,e,i,c.exports[g[h]])},decodeGltfBufferAsync:function(a,b,e,d,o){return h.length>0?function(a,b,c,e,i){for(var d=h[0],p=1;p<h.length;++p)h[p].pending<d.pending&&(d=h[p]);return new Promise(function(p,g){var f=new Uint8Array(c),h=++l;d.pending+=a,d.requests[h]={resolve:p,reject:g},d.object.postMessage({id:h,count:a,size:b,source:f,mode:e,filter:i},[f.buffer])})}(a,b,e,f[d],g[o]):i.then(function(){var i=new Uint8Array(a*b);return p(c,c.exports[f[d]],i,a,b,e,c.exports[g[o]]),i})}}}();exports.MeshoptDecoder=a;
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var a="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},b=(new a.Error).stack;b&&(a._sentryDebugIds=a._sentryDebugIds||{},a._sentryDebugIds[b]="d45e224f-d743-49c7-ba3e-4e5360d3d40a",a._sentryDebugIdIdentifier="sentry-dbid-d45e224f-d743-49c7-ba3e-4e5360d3d40a")}catch(a){}}();var a=function(){var a=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),b=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if("object"!=typeof WebAssembly)return{supported:!1};var c,e=WebAssembly.validate(a)?d("b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb"):d("b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb"),i=WebAssembly.instantiate(e,{}).then(function(a){(c=a.instance).exports.__wasm_call_ctors()});function d(a){for(var c=new Uint8Array(a.length),e=0;e<a.length;++e){var i=a.charCodeAt(e);c[e]=i>96?i-97:i>64?i-39:i+4}var d=0;for(e=0;e<a.length;++e)c[d++]=c[e]<60?b[c[e]]:64*(c[e]-60)+c[++e];return c.buffer.slice(0,d)}function p(a,b,c,e,i,d,p){var g=a.exports.sbrk,f=e+3&-4,h=g(f*i),l=g(d.length),o=new Uint8Array(a.exports.memory.buffer);o.set(d,l);var s=b(h,e,i,l,d.length);if(0==s&&p&&p(h,f,i),c.set(o.subarray(h,h+e*i)),g(h-g(0)),0!=s)throw new Error("Malformed buffer data: "+s)}var g={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp",COLOR:"meshopt_decodeFilterColor"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],l=0;function o(a){var b={object:new Worker(a),pending:0,requests:{}};return b.object.onmessage=function(a){var c=a.data;b.pending-=c.count,b.requests[c.id][c.action](c.value),delete b.requests[c.id]},b}function s(a){var b=a.data;self.ready.then(function(a){if(!b.id)return self.close();try{var c=new Uint8Array(b.count*b.size);p(a,a.exports[b.mode],c,b.count,b.size,b.source,a.exports[b.filter]),self.postMessage({id:b.id,count:b.count,action:"resolve",value:c},[c.buffer])}catch(e){self.postMessage({id:b.id,count:b.count,action:"reject",value:e})}})}return{ready:i,supported:!0,useWorkers:function(a){!function(a){for(var b="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(e)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+s.name+";"+p.toString()+s.toString(),c=new Blob([b],{type:"text/javascript"}),i=URL.createObjectURL(c),d=h.length;d<a;++d)h[d]=o(i);for(d=a;d<h.length;++d)h[d].object.postMessage({});h.length=a,URL.revokeObjectURL(i)}(a)},decodeVertexBuffer:function(a,b,e,i,d){p(c,c.exports.meshopt_decodeVertexBuffer,a,b,e,i,c.exports[g[d]])},decodeIndexBuffer:function(a,b,e,i){p(c,c.exports.meshopt_decodeIndexBuffer,a,b,e,i)},decodeIndexSequence:function(a,b,e,i){p(c,c.exports.meshopt_decodeIndexSequence,a,b,e,i)},decodeGltfBuffer:function(a,b,e,i,d,h){p(c,c.exports[f[d]],a,b,e,i,c.exports[g[h]])},decodeGltfBufferAsync:function(a,b,e,d,o){return h.length>0?function(a,b,c,e,i){for(var d=h[0],p=1;p<h.length;++p)h[p].pending<d.pending&&(d=h[p]);return new Promise(function(p,g){var f=new Uint8Array(c),h=++l;d.pending+=a,d.requests[h]={resolve:p,reject:g},d.object.postMessage({id:h,count:a,size:b,source:f,mode:e,filter:i},[f.buffer])})}(a,b,e,f[d],g[o]):i.then(function(){var i=new Uint8Array(a*b);return p(c,c.exports[f[d]],i,a,b,e,c.exports[g[o]]),i})}}}();exports.MeshoptDecoder=a;
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},C=(new e.Error).stack;C&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[C]="e10b4458-f96d-4773-b9ba-d1a213432fc7",e._sentryDebugIdIdentifier="sentry-dbid-e10b4458-f96d-4773-b9ba-d1a213432fc7")}catch(e){}}();exports.default='<svg width="21" height="20" viewBox="0 0 21 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg">\n<path d="M6.36016 17.7535C6.43073 18.1345 6.36016 18.4258 6.17199 18.6051C5.98381 18.7843 5.6545 18.8292 5.27816 18.7395L0.691401 17.4622C-0.0848194 17.2605 -0.22595 16.6555 0.362095 16.1401L1.60875 15.042C1.58523 15.0196 1.58523 14.9972 1.56171 14.9748C-0.978649 10.8964 -0.0848196 5.80955 3.39641 2.73953C3.91389 2.26894 4.50194 1.86558 5.13702 1.48462C6.71299 0.588264 8.43008 0.140085 10.1472 0.117676V1.59667C8.71234 1.64149 7.25399 2.02244 5.93677 2.76193C5.39576 3.07566 4.90181 3.4342 4.45489 3.81516C1.53819 6.39219 0.761966 10.6051 2.76132 14.0112L4.0315 12.8908C4.61954 12.3754 5.23111 12.5547 5.39576 13.2941L6.36016 17.7535ZM15.6278 6.70591C15.7924 7.44541 16.404 7.62468 16.992 7.10927L18.2622 5.98883C20.2616 9.39499 19.4853 13.6079 16.5922 16.1849C16.1452 16.5883 15.6513 16.9244 15.1103 17.2381C13.7931 18 12.3347 18.3586 10.8999 18.4034V19.8824C12.617 19.8376 14.3341 19.3894 15.91 18.5154C16.5451 18.1569 17.1332 17.7311 17.6506 17.2605C21.1083 14.1905 21.9786 9.10367 19.4383 5.04765C19.4148 5.02524 19.4148 5.00283 19.3913 4.98042L20.6379 3.88238C21.226 3.36698 21.0848 2.76193 20.3086 2.56025L15.7218 1.30535C15.3455 1.19331 15.0162 1.26053 14.828 1.4398C14.6398 1.61908 14.5458 1.91039 14.6398 2.29135L15.6278 6.70591Z" fill="currentColor"/>\n</svg>\n';
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},C=(new e.Error).stack;C&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[C]="2a9297e0-b53d-4609-b967-a1266984583b",e._sentryDebugIdIdentifier="sentry-dbid-2a9297e0-b53d-4609-b967-a1266984583b")}catch(e){}}();exports.default='<svg width="21" height="20" viewBox="0 0 21 20" fill="currentColor" xmlns="http://www.w3.org/2000/svg">\n<path d="M6.36016 17.7535C6.43073 18.1345 6.36016 18.4258 6.17199 18.6051C5.98381 18.7843 5.6545 18.8292 5.27816 18.7395L0.691401 17.4622C-0.0848194 17.2605 -0.22595 16.6555 0.362095 16.1401L1.60875 15.042C1.58523 15.0196 1.58523 14.9972 1.56171 14.9748C-0.978649 10.8964 -0.0848196 5.80955 3.39641 2.73953C3.91389 2.26894 4.50194 1.86558 5.13702 1.48462C6.71299 0.588264 8.43008 0.140085 10.1472 0.117676V1.59667C8.71234 1.64149 7.25399 2.02244 5.93677 2.76193C5.39576 3.07566 4.90181 3.4342 4.45489 3.81516C1.53819 6.39219 0.761966 10.6051 2.76132 14.0112L4.0315 12.8908C4.61954 12.3754 5.23111 12.5547 5.39576 13.2941L6.36016 17.7535ZM15.6278 6.70591C15.7924 7.44541 16.404 7.62468 16.992 7.10927L18.2622 5.98883C20.2616 9.39499 19.4853 13.6079 16.5922 16.1849C16.1452 16.5883 15.6513 16.9244 15.1103 17.2381C13.7931 18 12.3347 18.3586 10.8999 18.4034V19.8824C12.617 19.8376 14.3341 19.3894 15.91 18.5154C16.5451 18.1569 17.1332 17.7311 17.6506 17.2605C21.1083 14.1905 21.9786 9.10367 19.4383 5.04765C19.4148 5.02524 19.4148 5.00283 19.3913 4.98042L20.6379 3.88238C21.226 3.36698 21.0848 2.76193 20.3086 2.56025L15.7218 1.30535C15.3455 1.19331 15.0162 1.26053 14.828 1.4398C14.6398 1.61908 14.5458 1.91039 14.6398 2.29135L15.6278 6.70591Z" fill="currentColor"/>\n</svg>\n';
@@ -1,2 +1,2 @@
1
- /*! Web-kit v1.2.0-develop.11 | (c) 2026 MapVX */
2
- !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"1.2.0-develop.11"};var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="c10e78c5-215d-468c-8e0f-df6c46d81645",e._sentryDebugIdIdentifier="sentry-dbid-c10e78c5-215d-468c-8e0f-df6c46d81645")}catch(e){}}();var e=Object.create,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),a=(e,r)=>{let n={};for(var o in e)t(n,o,{get:e[o],enumerable:!0});return r||t(n,Symbol.toStringTag,{value:"Module"}),n},b=(u,a,b)=>(b=null!=u?e(o(u)):{},((e,o,u,a)=>{if(o&&"object"==typeof o||"function"==typeof o)for(var b,d=n(o),f=0,i=d.length;f<i;f++)b=d[f],l.call(e,b)||b===u||t(e,b,{get:(e=>o[e]).bind(null,b),enumerable:!(a=r(o,b))||a.enumerable});return e})(!a&&u&&u.__esModule&&l.call(u,"default")?b:t(b,"default",{value:u,enumerable:!0}),u));Object.defineProperty(exports,"__commonJSMin",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"__exportAll",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"__toESM",{enumerable:!0,get:function(){return b}});
1
+ /*! Web-kit v1.2.0-develop.13 | (c) 2026 MapVX */
2
+ !function(){try{var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};e.SENTRY_RELEASE={id:"1.2.0-develop.13"};var t=(new e.Error).stack;t&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[t]="e69dd171-b2b9-499b-9b7f-9b4c029ce976",e._sentryDebugIdIdentifier="sentry-dbid-e69dd171-b2b9-499b-9b7f-9b4c029ce976")}catch(e){}}();var e=Object.create,t=Object.defineProperty,r=Object.getOwnPropertyDescriptor,n=Object.getOwnPropertyNames,o=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t,t.exports),e=null),t.exports),a=(e,r)=>{let n={};for(var o in e)t(n,o,{get:e[o],enumerable:!0});return r||t(n,Symbol.toStringTag,{value:"Module"}),n},b=(u,a,b)=>(b=null!=u?e(o(u)):{},((e,o,u,a)=>{if(o&&"object"==typeof o||"function"==typeof o)for(var b,d=n(o),f=0,i=d.length;f<i;f++)b=d[f],l.call(e,b)||b===u||t(e,b,{get:(e=>o[e]).bind(null,b),enumerable:!(a=r(o,b))||a.enumerable});return e})(!a&&u&&u.__esModule&&l.call(u,"default")?b:t(b,"default",{value:u,enumerable:!0}),u));Object.defineProperty(exports,"__commonJSMin",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"__exportAll",{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,"__toESM",{enumerable:!0,get:function(){return b}});