@midscene/android-playground 1.0.1-beta-20251021060907.0 → 1.0.1-beta-20251024063839.0
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.
- package/dist/es/bin.mjs +5 -3
- package/dist/lib/bin.js +5 -3
- package/package.json +5 -5
- package/static/index.html +1 -1
- package/static/static/js/142.64c1e0d5.js +697 -0
- package/static/static/js/{825.c5ade4c6.js.map → 142.64c1e0d5.js.map} +1 -1
- package/static/static/js/async/150.d439b38c.js +158 -0
- package/static/static/js/async/{212.850ade70.js.map → 150.d439b38c.js.map} +1 -1
- package/static/static/js/async/{624.8a1fe2e8.js → 195.aa1e3152.js} +3 -3
- package/static/static/js/async/{624.8a1fe2e8.js.map → 195.aa1e3152.js.map} +1 -1
- package/static/static/js/async/260.d838b3b7.js +2 -0
- package/static/static/js/async/{544.18ac9afb.js.map → 260.d838b3b7.js.map} +1 -1
- package/static/static/js/async/271.71b3326b.js +3 -0
- package/static/static/js/async/{173.f2381e64.js.map → 271.71b3326b.js.map} +1 -1
- package/static/static/js/async/355.76c31308.js +1 -0
- package/static/static/js/async/{644.910ce3d0.js → 441.675c15a8.js} +1 -1
- package/static/static/js/async/45.ce50b37f.js +21 -0
- package/static/static/js/async/45.ce50b37f.js.map +1 -0
- package/static/static/js/async/586.ffc417d5.js +26 -0
- package/static/static/js/async/{329.261bc4a1.js.map → 586.ffc417d5.js.map} +1 -1
- package/static/static/js/async/631.9799e85f.js +30 -0
- package/static/static/js/async/{364.d88c3cff.js.map → 631.9799e85f.js.map} +1 -1
- package/static/static/js/async/{702.1f38a17e.js → 779.e7bfc2ed.js} +15 -15
- package/static/static/js/async/{702.1f38a17e.js.map → 779.e7bfc2ed.js.map} +1 -1
- package/static/static/js/async/782.f77f2205.js +2 -0
- package/static/static/js/async/782.f77f2205.js.map +1 -0
- package/static/static/js/index.dd3aa15e.js +30 -0
- package/static/static/js/index.dd3aa15e.js.map +1 -0
- package/static/static/js/lib-react.d7dec362.js +3 -0
- package/static/static/js/{lib-react.c74a0742.js.map → lib-react.d7dec362.js.map} +1 -1
- package/static/static/js/825.c5ade4c6.js +0 -697
- package/static/static/js/async/166.834644b5.js +0 -2
- package/static/static/js/async/166.834644b5.js.map +0 -1
- package/static/static/js/async/173.f2381e64.js +0 -3
- package/static/static/js/async/212.850ade70.js +0 -158
- package/static/static/js/async/329.261bc4a1.js +0 -26
- package/static/static/js/async/364.d88c3cff.js +0 -30
- package/static/static/js/async/544.18ac9afb.js +0 -2
- package/static/static/js/async/582.8f4b5264.js +0 -21
- package/static/static/js/async/582.8f4b5264.js.map +0 -1
- package/static/static/js/async/983.b98b40af.js +0 -1
- package/static/static/js/index.eb785992.js +0 -30
- package/static/static/js/index.eb785992.js.map +0 -1
- package/static/static/js/lib-react.c74a0742.js +0 -3
- /package/static/static/js/{825.c5ade4c6.js.LICENSE.txt → 142.64c1e0d5.js.LICENSE.txt} +0 -0
- /package/static/static/js/{index.eb785992.js.LICENSE.txt → index.dd3aa15e.js.LICENSE.txt} +0 -0
- /package/static/static/js/{lib-react.c74a0742.js.LICENSE.txt → lib-react.d7dec362.js.LICENSE.txt} +0 -0
- /package/static/static/wasm/{9e906fbf55e08f98.module.wasm → 9e906fbf.module.wasm} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/js/async/329.261bc4a1.js","sources":["webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GpuGraphicsAdaptor {\n init() {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"graphics\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n geometry,\n instructions\n } = contextSystem.getContextRenderData(context);\n const encoder = renderer.encoder;\n encoder.setPipelineFromGeometryProgramAndState(\n geometry,\n shader.gpuProgram,\n graphicsPipe.state\n );\n encoder.setGeometry(geometry);\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n const localBindGroup = renderer.renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n const batches = instructions.instructions;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n shader.groups[1] = batch.bindGroup;\n if (!batch.gpuBindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n shader.gpuProgram,\n 1\n );\n }\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGpuGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GpuGraphicsAdaptor };\n//# sourceMappingURL=GpuGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GpuMeshAdapter {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"mesh\",\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n shader.resources.uTexture = mesh.texture.source;\n shader.resources.uSampler = mesh.texture.source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = mesh.texture.textureMatrix.mapCoord;\n } else if (!shader.gpuProgram) {\n warn(\"Mesh shader has no gpuProgram\", mesh.shader);\n return;\n }\n const gpuProgram = shader.gpuProgram;\n if (gpuProgram.autoAssignGlobalUniforms) {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n if (gpuProgram.autoAssignLocalUniforms) {\n const localUniforms = meshPipe.localUniforms;\n shader.groups[1] = renderer.renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuMeshAdapter.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GpuMeshAdapter };\n//# sourceMappingURL=GpuMeshAdapter.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { MAX_TEXTURES } from '../shared/const.mjs';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup.mjs';\n\n\"use strict\";\nconst tempState = State.for2d();\nclass GpuBatchAdaptor {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n groups: {\n // these will be dynamically allocated\n }\n });\n }\n start(batchPipe, geometry) {\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n const program = this._shader.gpuProgram;\n this._geometry = geometry;\n encoder.setGeometry(geometry);\n tempState.blendMode = \"normal\";\n renderer.pipeline.getPipeline(\n geometry,\n program,\n tempState\n );\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.resetBindGroup(1);\n encoder.setBindGroup(0, globalUniformsBindGroup, program);\n }\n execute(batchPipe, batch) {\n const program = this._shader.gpuProgram;\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n if (!batch.bindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n }\n tempState.blendMode = batch.blendMode;\n const gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n program,\n 1\n );\n const pipeline = renderer.pipeline.getPipeline(\n this._geometry,\n program,\n tempState\n );\n batch.bindGroup._touch(renderer.textureGC.count);\n encoder.setPipeline(pipeline);\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GpuBatchAdaptor };\n//# sourceMappingURL=GpuBatchAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass BindGroupSystem {\n constructor(renderer) {\n this._hash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getBindGroup(bindGroup, program, groupIndex) {\n bindGroup._updateKey();\n const gpuBindGroup = this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);\n return gpuBindGroup;\n }\n _createBindGroup(group, program, groupIndex) {\n const device = this._gpu.device;\n const groupLayout = program.layout[groupIndex];\n const entries = [];\n const renderer = this._renderer;\n for (const j in groupLayout) {\n const resource = group.resources[j] ?? group.resources[groupLayout[j]];\n let gpuResource;\n if (resource._resourceType === \"uniformGroup\") {\n const uniformGroup = resource;\n renderer.ubo.updateUniformGroup(uniformGroup);\n const buffer = uniformGroup.buffer;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"buffer\") {\n const buffer = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"bufferResource\") {\n const bufferResource = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(bufferResource.buffer),\n offset: bufferResource.offset,\n size: bufferResource.size\n };\n } else if (resource._resourceType === \"textureSampler\") {\n const sampler = resource;\n gpuResource = renderer.texture.getGpuSampler(sampler);\n } else if (resource._resourceType === \"textureSource\") {\n const texture = resource;\n gpuResource = renderer.texture.getGpuSource(texture).createView({});\n }\n entries.push({\n binding: groupLayout[j],\n resource: gpuResource\n });\n }\n const layout = renderer.shader.getProgramData(program).bindGroups[groupIndex];\n const gpuBindGroup = device.createBindGroup({\n layout,\n entries\n });\n this._hash[group._key] = gpuBindGroup;\n return gpuBindGroup;\n }\n destroy() {\n for (const key of Object.keys(this._hash)) {\n this._hash[key] = null;\n }\n this._hash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBindGroupSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"bindGroup\"\n};\n\nexport { BindGroupSystem };\n//# sourceMappingURL=BindGroupSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { fastCopy } from '../../shared/buffer/utils/fastCopy.mjs';\n\n\"use strict\";\nclass GpuBufferSystem {\n constructor() {\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n this._managedBuffers = [];\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getGPUBuffer(buffer) {\n return this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n }\n updateBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n const data = buffer.data;\n if (buffer._updateID && data) {\n buffer._updateID = 0;\n this._gpu.device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n 0,\n // round to the nearest 4 bytes\n (buffer._updateSize || data.byteLength) + 3 & ~3\n );\n }\n return gpuBuffer;\n }\n /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n for (const id in this._gpuBuffers) {\n this._gpuBuffers[id].destroy();\n }\n this._gpuBuffers = {};\n }\n createGPUBuffer(buffer) {\n if (!this._gpuBuffers[buffer.uid]) {\n buffer.on(\"update\", this.updateBuffer, this);\n buffer.on(\"change\", this.onBufferChange, this);\n buffer.on(\"destroy\", this.onBufferDestroy, this);\n }\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n buffer._updateID = 0;\n if (buffer.data) {\n fastCopy(buffer.data.buffer, gpuBuffer.getMappedRange());\n gpuBuffer.unmap();\n }\n this._gpuBuffers[buffer.uid] = gpuBuffer;\n this._managedBuffers.push(buffer);\n return gpuBuffer;\n }\n onBufferChange(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer._updateID = 0;\n this._gpuBuffers[buffer.uid] = this.createGPUBuffer(buffer);\n }\n /**\n * Disposes buffer\n * @param buffer - buffer with data\n */\n onBufferDestroy(buffer) {\n this._managedBuffers.splice(this._managedBuffers.indexOf(buffer), 1);\n this._destroyBuffer(buffer);\n }\n destroy() {\n this._managedBuffers.forEach((buffer) => this._destroyBuffer(buffer));\n this._managedBuffers = null;\n this._gpuBuffers = null;\n }\n _destroyBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer.off(\"update\", this.updateBuffer, this);\n buffer.off(\"change\", this.onBufferChange, this);\n buffer.off(\"destroy\", this.onBufferDestroy, this);\n this._gpuBuffers[buffer.uid] = null;\n }\n}\n/** @ignore */\nGpuBufferSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"buffer\"\n};\n\nexport { GpuBufferSystem };\n//# sourceMappingURL=GpuBufferSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask)\n return;\n this._colorMaskCache = colorMask;\n this._renderer.pipeline.setColorMask(colorMask);\n }\n destroy() {\n this._renderer = null;\n this._colorMaskCache = null;\n }\n}\n/** @ignore */\nGpuColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GpuColorMaskSystem };\n//# sourceMappingURL=GpuColorMaskSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuDeviceSystem {\n /**\n * @param {WebGPURenderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n async init(options) {\n if (this._initPromise)\n return this._initPromise;\n this._initPromise = this._createDeviceAndAdaptor(options).then((gpu) => {\n this.gpu = gpu;\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n return this._initPromise;\n }\n /**\n * Handle the context change event\n * @param gpu\n */\n contextChange(gpu) {\n this._renderer.gpu = gpu;\n }\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n async _createDeviceAndAdaptor(options) {\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter\n });\n const requiredFeatures = [\n \"texture-compression-bc\",\n \"texture-compression-astc\",\n \"texture-compression-etc2\"\n ].filter((feature) => adapter.features.has(feature));\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n return { adapter, device };\n }\n destroy() {\n this.gpu = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuDeviceSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"device\"\n};\n/** The default options for the GpuDeviceSystem. */\nGpuDeviceSystem.defaultOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false\n};\n\nexport { GpuDeviceSystem };\n//# sourceMappingURL=GpuDeviceSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuEncoderSystem {\n constructor(renderer) {\n this._boundBindGroup = /* @__PURE__ */ Object.create(null);\n this._boundVertexBuffer = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n renderStart() {\n this.commandFinished = new Promise((resolve) => {\n this._resolveCommandFinished = resolve;\n });\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n beginRenderPass(gpuRenderTarget) {\n this.endRenderPass();\n this._clearCache();\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n endRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n }\n this.renderPassEncoder = null;\n }\n setViewport(viewport) {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n setPipelineFromGeometryProgramAndState(geometry, program, state, topology) {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n this.setPipeline(pipeline);\n }\n setPipeline(pipeline) {\n if (this._boundPipeline === pipeline)\n return;\n this._boundPipeline = pipeline;\n this.renderPassEncoder.setPipeline(pipeline);\n }\n _setVertexBuffer(index, buffer) {\n if (this._boundVertexBuffer[index] === buffer)\n return;\n this._boundVertexBuffer[index] = buffer;\n this.renderPassEncoder.setVertexBuffer(index, this._renderer.buffer.updateBuffer(buffer));\n }\n _setIndexBuffer(buffer) {\n if (this._boundIndexBuffer === buffer)\n return;\n this._boundIndexBuffer = buffer;\n const indexFormat = buffer.data.BYTES_PER_ELEMENT === 2 ? \"uint16\" : \"uint32\";\n this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer), indexFormat);\n }\n resetBindGroup(index) {\n this._boundBindGroup[index] = null;\n }\n setBindGroup(index, bindGroup, program) {\n if (this._boundBindGroup[index] === bindGroup)\n return;\n this._boundBindGroup[index] = bindGroup;\n bindGroup._touch(this._renderer.textureGC.count);\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n setGeometry(geometry) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n this._setVertexBuffer(attribute.location, attribute.buffer);\n }\n if (geometry.indexBuffer) {\n this._setIndexBuffer(geometry.indexBuffer);\n }\n }\n _setShaderBindGroups(shader, skipSync) {\n for (const i in shader.groups) {\n const bindGroup = shader.groups[i];\n if (!skipSync) {\n this._syncBindGroup(bindGroup);\n }\n this.setBindGroup(i, bindGroup, shader.gpuProgram);\n }\n }\n _syncBindGroup(bindGroup) {\n for (const j in bindGroup.resources) {\n const resource = bindGroup.resources[j];\n if (resource.isUniformGroup) {\n this._renderer.ubo.updateUniformGroup(resource);\n }\n }\n }\n draw(options) {\n const { geometry, shader, state, topology, size, start, instanceCount, skipSync } = options;\n this.setPipelineFromGeometryProgramAndState(geometry, shader.gpuProgram, state, topology);\n this.setGeometry(geometry);\n this._setShaderBindGroups(shader, skipSync);\n if (geometry.indexBuffer) {\n this.renderPassEncoder.drawIndexed(\n size || geometry.indexBuffer.data.length,\n instanceCount || geometry.instanceCount,\n start || 0\n );\n } else {\n this.renderPassEncoder.draw(size || geometry.getSize(), instanceCount || geometry.instanceCount, start || 0);\n }\n }\n finishRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n this.renderPassEncoder = null;\n }\n }\n postrender() {\n this.finishRenderPass();\n this._gpu.device.queue.submit([this.commandEncoder.finish()]);\n this._resolveCommandFinished();\n this.commandEncoder = null;\n }\n // restores a render pass if finishRenderPass was called\n // not optimised as really used for debugging!\n // used when we want to stop drawing and log a texture..\n restoreRenderPass() {\n const descriptor = this._renderer.renderTarget.adaptor.getDescriptor(\n this._renderer.renderTarget.renderTarget,\n false,\n [0, 0, 0, 1]\n );\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(descriptor);\n const boundPipeline = this._boundPipeline;\n const boundVertexBuffer = { ...this._boundVertexBuffer };\n const boundIndexBuffer = this._boundIndexBuffer;\n const boundBindGroup = { ...this._boundBindGroup };\n this._clearCache();\n const viewport = this._renderer.renderTarget.viewport;\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n this.setPipeline(boundPipeline);\n for (const i in boundVertexBuffer) {\n this._setVertexBuffer(i, boundVertexBuffer[i]);\n }\n for (const i in boundBindGroup) {\n this.setBindGroup(i, boundBindGroup[i], null);\n }\n this._setIndexBuffer(boundIndexBuffer);\n }\n _clearCache() {\n for (let i = 0; i < 16; i++) {\n this._boundBindGroup[i] = null;\n this._boundVertexBuffer[i] = null;\n }\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n destroy() {\n this._renderer = null;\n this._gpu = null;\n this._boundBindGroup = null;\n this._boundVertexBuffer = null;\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n}\n/** @ignore */\nGpuEncoderSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"encoder\",\n priority: 1\n};\n\nexport { GpuEncoderSystem };\n//# sourceMappingURL=GpuEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GpuStencilSystem {\n constructor(renderer) {\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this._activeRenderTarget = renderTarget;\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n const renderer = this._renderer;\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n destroy() {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n this._renderer = null;\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n/** @ignore */\nGpuStencilSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"stencil\"\n};\n\nexport { GpuStencilSystem };\n//# sourceMappingURL=GpuStencilSystem.mjs.map\n","\"use strict\";\nclass UboBatch {\n constructor({ minUniformOffsetAlignment }) {\n this._minUniformOffsetAlignment = 256;\n this.byteIndex = 0;\n this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n this.data = new Float32Array(65535);\n }\n clear() {\n this.byteIndex = 0;\n }\n addEmptyGroup(size) {\n if (size > this._minUniformOffsetAlignment / 4) {\n throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n }\n const start = this.byteIndex;\n let newSize = start + size * 4;\n newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n if (newSize > this.data.length * 4) {\n throw new Error(\"UniformBufferBatch: ubo batch got too big\");\n }\n this.byteIndex = newSize;\n return start;\n }\n addGroup(array) {\n const offset = this.addEmptyGroup(array.length);\n for (let i = 0; i < array.length; i++) {\n this.data[offset / 4 + i] = array[i];\n }\n return offset;\n }\n destroy() {\n this._buffer.destroy();\n this._buffer = null;\n this.data = null;\n }\n}\n\nexport { UboBatch };\n//# sourceMappingURL=UboBatch.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Buffer } from '../shared/buffer/Buffer.mjs';\nimport { BufferResource } from '../shared/buffer/BufferResource.mjs';\nimport { BufferUsage } from '../shared/buffer/const.mjs';\nimport { UboBatch } from './buffer/UboBatch.mjs';\nimport { BindGroup } from './shader/BindGroup.mjs';\n\n\"use strict\";\nconst minUniformOffsetAlignment = 128;\nclass GpuUniformBatchPipe {\n constructor(renderer) {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n // number of buffers..\n this._buffers = [];\n this._bindGroups = [];\n this._bufferResources = [];\n this._renderer = renderer;\n this._batchBuffer = new UboBatch({ minUniformOffsetAlignment });\n const totalBuffers = 256 / minUniformOffsetAlignment;\n for (let i = 0; i < totalBuffers; i++) {\n let usage = BufferUsage.UNIFORM | BufferUsage.COPY_DST;\n if (i === 0)\n usage |= BufferUsage.COPY_SRC;\n this._buffers.push(new Buffer({\n data: this._batchBuffer.data,\n usage\n }));\n }\n }\n renderEnd() {\n this._uploadBindGroups();\n this._resetBindGroups();\n }\n _resetBindGroups() {\n for (const i in this._bindGroupHash) {\n this._bindGroupHash[i] = null;\n }\n this._batchBuffer.clear();\n }\n // just works for single bind groups for now\n getUniformBindGroup(group, duplicate) {\n if (!duplicate && this._bindGroupHash[group.uid]) {\n return this._bindGroupHash[group.uid];\n }\n this._renderer.ubo.ensureUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addEmptyGroup(data.length);\n this._renderer.ubo.syncUniformGroup(group, this._batchBuffer.data, offset / 4);\n this._bindGroupHash[group.uid] = this._getBindGroup(offset / minUniformOffsetAlignment);\n return this._bindGroupHash[group.uid];\n }\n getUboResource(group) {\n this._renderer.ubo.updateUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addGroup(data);\n return this._getBufferResource(offset / minUniformOffsetAlignment);\n }\n getArrayBindGroup(data) {\n const offset = this._batchBuffer.addGroup(data);\n return this._getBindGroup(offset / minUniformOffsetAlignment);\n }\n getArrayBufferResource(data) {\n const offset = this._batchBuffer.addGroup(data);\n const index = offset / minUniformOffsetAlignment;\n return this._getBufferResource(index);\n }\n _getBufferResource(index) {\n if (!this._bufferResources[index]) {\n const buffer = this._buffers[index % 2];\n this._bufferResources[index] = new BufferResource({\n buffer,\n offset: (index / 2 | 0) * 256,\n size: minUniformOffsetAlignment\n });\n }\n return this._bufferResources[index];\n }\n _getBindGroup(index) {\n if (!this._bindGroups[index]) {\n const bindGroup = new BindGroup({\n 0: this._getBufferResource(index)\n });\n this._bindGroups[index] = bindGroup;\n }\n return this._bindGroups[index];\n }\n _uploadBindGroups() {\n const bufferSystem = this._renderer.buffer;\n const firstBuffer = this._buffers[0];\n firstBuffer.update(this._batchBuffer.byteIndex);\n bufferSystem.updateBuffer(firstBuffer);\n const commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n for (let i = 1; i < this._buffers.length; i++) {\n const buffer = this._buffers[i];\n commandEncoder.copyBufferToBuffer(\n bufferSystem.getGPUBuffer(firstBuffer),\n minUniformOffsetAlignment,\n bufferSystem.getGPUBuffer(buffer),\n 0,\n this._batchBuffer.byteIndex\n );\n }\n this._renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n }\n destroy() {\n for (let i = 0; i < this._bindGroups.length; i++) {\n this._bindGroups[i].destroy();\n }\n this._bindGroups = null;\n this._bindGroupHash = null;\n for (let i = 0; i < this._buffers.length; i++) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n for (let i = 0; i < this._bufferResources.length; i++) {\n this._bufferResources[i].destroy();\n }\n this._bufferResources = null;\n this._batchBuffer.destroy();\n this._bindGroupHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuUniformBatchPipe.extension = {\n type: [\n ExtensionType.WebGPUPipes\n ],\n name: \"uniformBatch\"\n};\n\nexport { GpuUniformBatchPipe };\n//# sourceMappingURL=GpuUniformBatchPipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { ensureAttributes } from '../../gl/shader/program/ensureAttributes.mjs';\nimport { STENCIL_MODES } from '../../shared/state/const.mjs';\nimport { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { GpuStencilModesToPixi } from '../state/GpuStencilModesToPixi.mjs';\n\n\"use strict\";\nconst topologyStringToId = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 2,\n \"triangle-list\": 3,\n \"triangle-strip\": 4\n};\nfunction getGraphicsStateKey(geometryLayout, shaderKey, state, blendMode, topology) {\n return geometryLayout << 24 | shaderKey << 16 | state << 10 | blendMode << 5 | topology;\n}\nfunction getGlobalStateKey(stencilStateId, multiSampleCount, colorMask, renderTarget) {\n return colorMask << 6 | stencilStateId << 3 | renderTarget << 1 | multiSampleCount;\n}\nclass PipelineSystem {\n constructor(renderer) {\n this._moduleCache = /* @__PURE__ */ Object.create(null);\n this._bufferLayoutsCache = /* @__PURE__ */ Object.create(null);\n this._pipeCache = /* @__PURE__ */ Object.create(null);\n this._pipeStateCaches = /* @__PURE__ */ Object.create(null);\n this._colorMask = 15;\n this._multisampleCount = 1;\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n this.setStencilMode(STENCIL_MODES.DISABLED);\n this._updatePipeHash();\n }\n setMultisampleCount(multisampleCount) {\n if (this._multisampleCount === multisampleCount)\n return;\n this._multisampleCount = multisampleCount;\n this._updatePipeHash();\n }\n setRenderTarget(renderTarget) {\n this._multisampleCount = renderTarget.msaaSamples;\n this._depthStencilAttachment = renderTarget.descriptor.depthStencilAttachment ? 1 : 0;\n this._updatePipeHash();\n }\n setColorMask(colorMask) {\n if (this._colorMask === colorMask)\n return;\n this._colorMask = colorMask;\n this._updatePipeHash();\n }\n setStencilMode(stencilMode) {\n if (this._stencilMode === stencilMode)\n return;\n this._stencilMode = stencilMode;\n this._stencilState = GpuStencilModesToPixi[stencilMode];\n this._updatePipeHash();\n }\n setPipeline(geometry, program, state, passEncoder) {\n const pipeline = this.getPipeline(geometry, program, state);\n passEncoder.setPipeline(pipeline);\n }\n getPipeline(geometry, program, state, topology) {\n if (!geometry._layoutKey) {\n ensureAttributes(geometry, program.attributeData);\n this._generateBufferKey(geometry);\n }\n topology = topology || geometry.topology;\n const key = getGraphicsStateKey(\n geometry._layoutKey,\n program._layoutKey,\n state.data,\n state._blendModeId,\n topologyStringToId[topology]\n );\n if (this._pipeCache[key])\n return this._pipeCache[key];\n this._pipeCache[key] = this._createPipeline(geometry, program, state, topology);\n return this._pipeCache[key];\n }\n _createPipeline(geometry, program, state, topology) {\n const device = this._gpu.device;\n const buffers = this._createVertexBufferLayouts(geometry);\n const blendModes = this._renderer.state.getColorTargets(state);\n blendModes[0].writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\n const layout = this._renderer.shader.getProgramData(program).pipeline;\n const descriptor = {\n // TODO later check if its helpful to create..\n // layout,\n vertex: {\n module: this._getModule(program.vertex.source),\n entryPoint: program.vertex.entryPoint,\n // geometry..\n buffers\n },\n fragment: {\n module: this._getModule(program.fragment.source),\n entryPoint: program.fragment.entryPoint,\n targets: blendModes\n },\n primitive: {\n topology,\n cullMode: state.cullMode\n },\n layout,\n multisample: {\n count: this._multisampleCount\n },\n // depthStencil,\n label: `PIXI Pipeline`\n };\n if (this._depthStencilAttachment) {\n descriptor.depthStencil = {\n ...this._stencilState,\n format: \"depth24plus-stencil8\",\n depthWriteEnabled: state.depthTest,\n depthCompare: state.depthTest ? \"less\" : \"always\"\n };\n }\n const pipeline = device.createRenderPipeline(descriptor);\n return pipeline;\n }\n _getModule(code) {\n return this._moduleCache[code] || this._createModule(code);\n }\n _createModule(code) {\n const device = this._gpu.device;\n this._moduleCache[code] = device.createShaderModule({\n code\n });\n return this._moduleCache[code];\n }\n _generateBufferKey(geometry) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(geometry.attributes).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = geometry.attributes[attributeKeys[i]];\n keyGen[index++] = attribute.location;\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n }\n const stringKey = keyGen.join(\"\");\n geometry._layoutKey = createIdFromString(stringKey, \"geometry\");\n return geometry._layoutKey;\n }\n _createVertexBufferLayouts(geometry) {\n if (this._bufferLayoutsCache[geometry._layoutKey]) {\n return this._bufferLayoutsCache[geometry._layoutKey];\n }\n const vertexBuffersLayout = [];\n geometry.buffers.forEach((buffer) => {\n const bufferEntry = {\n arrayStride: 0,\n stepMode: \"vertex\",\n attributes: []\n };\n const bufferEntryAttributes = bufferEntry.attributes;\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n if (attribute.buffer === buffer) {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? \"instance\" : \"vertex\";\n bufferEntryAttributes.push({\n shaderLocation: attribute.location,\n offset: attribute.offset,\n format: attribute.format\n });\n }\n }\n if (bufferEntryAttributes.length) {\n vertexBuffersLayout.push(bufferEntry);\n }\n });\n this._bufferLayoutsCache[geometry._layoutKey] = vertexBuffersLayout;\n return vertexBuffersLayout;\n }\n _updatePipeHash() {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment\n );\n if (!this._pipeStateCaches[key]) {\n this._pipeStateCaches[key] = /* @__PURE__ */ Object.create(null);\n }\n this._pipeCache = this._pipeStateCaches[key];\n }\n destroy() {\n this._renderer = null;\n this._bufferLayoutsCache = null;\n }\n}\n/** @ignore */\nPipelineSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"pipeline\"\n};\n\nexport { PipelineSystem };\n//# sourceMappingURL=PipelineSystem.mjs.map\n","\"use strict\";\nclass GpuRenderTarget {\n constructor() {\n this.contexts = [];\n this.msaaTextures = [];\n this.msaaSamples = 1;\n }\n}\n\nexport { GpuRenderTarget };\n//# sourceMappingURL=GpuRenderTarget.mjs.map\n","import { CLEAR } from '../../gl/const.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\nimport { GpuRenderTarget } from './GpuRenderTarget.mjs';\n\n\"use strict\";\nclass GpuRenderTargetAdaptor {\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderer = this._renderer;\n const baseGpuTexture = this._getGpuColorTexture(\n sourceRenderSurfaceTexture\n );\n const backGpuTexture = renderer.texture.getGpuSource(\n destinationTexture.source\n );\n renderer.encoder.commandEncoder.copyTextureToTexture(\n {\n texture: baseGpuTexture,\n origin: originSrc\n },\n {\n texture: backGpuTexture,\n origin: originDest\n },\n size\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport) {\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor);\n gpuRenderTarget.descriptor = descriptor;\n this._renderer.pipeline.setRenderTarget(gpuRenderTarget);\n this._renderer.encoder.beginRenderPass(gpuRenderTarget);\n this._renderer.encoder.setViewport(viewport);\n }\n finishRenderPass() {\n this._renderer.encoder.endRenderPass();\n }\n /**\n * returns the gpu texture for the first color texture in the render target\n * mainly used by the filter manager to get copy the texture for blending\n * @param renderTarget\n * @returns a gpu texture\n */\n _getGpuColorTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (gpuRenderTarget.contexts[0]) {\n return gpuRenderTarget.contexts[0].getCurrentTexture();\n }\n return this._renderer.texture.getGpuSource(\n renderTarget.colorTextures[0].source\n );\n }\n getDescriptor(renderTarget, clear, clearValue) {\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const colorAttachments = renderTarget.colorTextures.map(\n (texture, i) => {\n const context = gpuRenderTarget.contexts[i];\n let view;\n let resolveTarget;\n if (context) {\n const currentTexture = context.getCurrentTexture();\n const canvasTextureView = currentTexture.createView();\n view = canvasTextureView;\n } else {\n view = this._renderer.texture.getGpuSource(texture).createView({\n mipLevelCount: 1\n });\n }\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: \"store\",\n loadOp\n };\n }\n );\n let depthStencilAttachment;\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture) {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n depthStencilAttachment = {\n view: this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView(),\n stencilStoreOp: \"store\",\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: \"store\"\n };\n }\n const descriptor = {\n colorAttachments,\n depthStencilAttachment\n };\n return descriptor;\n }\n clear(renderTarget, clear = true, clearColor, viewport) {\n if (!clear)\n return;\n const { gpu, encoder } = this._renderer;\n const device = gpu.device;\n const standAlone = encoder.commandEncoder === null;\n if (standAlone) {\n const commandEncoder = device.createCommandEncoder();\n const renderPassDescriptor = this.getDescriptor(renderTarget, clear, clearColor);\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n passEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n passEncoder.end();\n const gpuCommands = commandEncoder.finish();\n device.queue.submit([gpuCommands]);\n } else {\n this.startRenderPass(renderTarget, clear, clearColor, viewport);\n }\n }\n initGpuRenderTarget(renderTarget) {\n renderTarget.isRoot = true;\n const gpuRenderTarget = new GpuRenderTarget();\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (CanvasSource.test(colorTexture.resource)) {\n const context = colorTexture.resource.getContext(\n \"webgpu\"\n );\n const alphaMode = colorTexture.transparent ? \"premultiplied\" : \"opaque\";\n try {\n context.configure({\n device: this._renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,\n format: \"bgra8unorm\",\n alphaMode\n });\n } catch (e) {\n console.error(e);\n }\n gpuRenderTarget.contexts[i] = context;\n }\n gpuRenderTarget.msaa = colorTexture.source.antialias;\n if (colorTexture.source.antialias) {\n const msaaTexture = new TextureSource({\n width: 0,\n height: 0,\n sampleCount: 4\n });\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n if (gpuRenderTarget.msaa) {\n gpuRenderTarget.msaaSamples = 4;\n if (renderTarget.depthStencilTexture) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n return gpuRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n gpuRenderTarget.contexts.forEach((context) => {\n context.unconfigure();\n });\n gpuRenderTarget.msaaTextures.forEach((texture) => {\n texture.destroy();\n });\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n ensureDepthStencilTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n resizeGpuRenderTarget(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n if (gpuRenderTarget.msaa) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n\nexport { GpuRenderTargetAdaptor };\n//# sourceMappingURL=GpuRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GpuRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GpuRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGpuRenderTargetSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"renderTarget\"\n};\n\nexport { GpuRenderTargetSystem };\n//# sourceMappingURL=GpuRenderTargetSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuShaderSystem {\n constructor() {\n this._gpuProgramData = /* @__PURE__ */ Object.create(null);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getProgramData(program) {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n _createGPUProgramData(program) {\n const device = this._gpu.device;\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc)\n };\n return this._gpuProgramData[program._layoutKey];\n }\n destroy() {\n this._gpu = null;\n this._gpuProgramData = null;\n }\n}\n/** @ignore */\nGpuShaderSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"shader\"\n};\n\nexport { GpuShaderSystem };\n//# sourceMappingURL=GpuShaderSystem.mjs.map\n","\"use strict\";\nconst GpuBlendModesToPixi = {};\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"dst\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"zero\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"normal-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"add-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"screen-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\n\nexport { GpuBlendModesToPixi };\n//# sourceMappingURL=GpuBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { GpuBlendModesToPixi } from './GpuBlendModesToPixi.mjs';\n\n\"use strict\";\nclass GpuStateSystem {\n constructor() {\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gpu) {\n this.gpu = gpu;\n }\n /**\n * Gets the blend mode data for the current state\n * @param state - The state to get the blend mode from\n */\n getColorTargets(state) {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n return [\n {\n format: \"bgra8unorm\",\n writeMask: 0,\n blend\n }\n ];\n }\n destroy() {\n this.gpu = null;\n }\n}\n/** @ignore */\nGpuStateSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"state\"\n};\n\nexport { GpuStateSystem };\n//# sourceMappingURL=GpuStateSystem.mjs.map\n","\"use strict\";\nconst gpuUploadBufferImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu) {\n const resource = source.resource;\n const total = (source.pixelWidth | 0) * (source.pixelHeight | 0);\n const bytesPerPixel = resource.byteLength / total;\n gpu.device.queue.writeTexture(\n { texture: gpuTexture },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelHeight * bytesPerPixel\n },\n {\n width: source.pixelWidth,\n height: source.pixelHeight,\n depthOrArrayLayers: 1\n }\n );\n }\n};\n\nexport { gpuUploadBufferImageResource };\n//# sourceMappingURL=gpuUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst blockDataMap = {\n \"bc1-rgba-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"bc2-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc3-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc7-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"etc1-rgb-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"etc2-rgba8unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"astc-4x4-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 }\n};\nconst defaultBlockData = { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\nconst gpuUploadCompressedTextureResource = {\n type: \"compressed\",\n upload(source, gpuTexture, gpu) {\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const blockData = blockDataMap[source.format] || defaultBlockData;\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n const bytesPerRow = Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockBytes;\n gpu.device.queue.writeTexture(\n {\n texture: gpuTexture,\n mipLevel: i\n },\n levelBuffer,\n {\n offset: 0,\n bytesPerRow\n },\n {\n width: Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockWidth,\n height: Math.ceil(mipHeight / blockData.blockHeight) * blockData.blockHeight,\n depthOrArrayLayers: 1\n }\n );\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { blockDataMap, gpuUploadCompressedTextureResource };\n//# sourceMappingURL=gpuUploadCompressedTextureResource.mjs.map\n","\"use strict\";\nconst gpuUploadImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu) {\n const resource = source.resource;\n if (!resource)\n return;\n const width = Math.min(gpuTexture.width, source.resourceWidth || source.pixelWidth);\n const height = Math.min(gpuTexture.height, source.resourceHeight || source.pixelHeight);\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n gpu.device.queue.copyExternalImageToTexture(\n { source: resource },\n { texture: gpuTexture, premultipliedAlpha },\n {\n width,\n height\n }\n );\n }\n};\n\nexport { gpuUploadImageResource };\n//# sourceMappingURL=gpuUploadImageSource.mjs.map\n","import { gpuUploadImageResource } from './gpuUploadImageSource.mjs';\n\n\"use strict\";\nconst gpuUploadVideoResource = {\n type: \"video\",\n upload(source, gpuTexture, gpu) {\n gpuUploadImageResource.upload(source, gpuTexture, gpu);\n }\n};\n\nexport { gpuUploadVideoResource };\n//# sourceMappingURL=gpuUploadVideoSource.mjs.map\n","\"use strict\";\nclass GpuMipmapGenerator {\n constructor(device) {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: \"linear\" });\n this.pipelines = {};\n }\n _getMipmapPipeline(format) {\n let pipeline = this.pipelines[format];\n if (!pipeline) {\n if (!this.mipmapShaderModule) {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: (\n /* wgsl */\n `\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n `\n )\n });\n }\n pipeline = this.device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: \"vertexMain\"\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: \"fragmentMain\",\n targets: [{ format }]\n }\n });\n this.pipelines[format] = pipeline;\n }\n return pipeline;\n }\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n generateMipmap(texture) {\n const pipeline = this._getMipmapPipeline(texture.format);\n if (texture.dimension === \"3d\" || texture.dimension === \"1d\") {\n throw new Error(\"Generating mipmaps for non-2d textures is currently unsupported!\");\n }\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1;\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n if (!renderToSource) {\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1\n };\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n const commandEncoder = this.device.createCommandEncoder({});\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer) {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n let dstMipLevel = renderToSource ? 1 : 0;\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: \"store\",\n loadOp: \"clear\",\n clearValue: { r: 0, g: 0, b: 0, a: 0 }\n }]\n });\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler\n }, {\n binding: 1,\n resource: srcView\n }]\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n passEncoder.end();\n srcView = dstView;\n }\n }\n if (!renderToSource) {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n };\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1\n }, {\n texture,\n mipLevel: i\n }, mipLevelSize);\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n this.device.queue.submit([commandEncoder.finish()]);\n if (!renderToSource) {\n mipTexture.destroy();\n }\n return texture;\n }\n}\n\nexport { GpuMipmapGenerator };\n//# sourceMappingURL=GpuMipmapGenerator.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { CanvasPool } from '../../shared/texture/CanvasPool.mjs';\nimport { BindGroup } from '../shader/BindGroup.mjs';\nimport { gpuUploadBufferImageResource } from './uploaders/gpuUploadBufferImageResource.mjs';\nimport { gpuUploadCompressedTextureResource, blockDataMap } from './uploaders/gpuUploadCompressedTextureResource.mjs';\nimport { gpuUploadImageResource } from './uploaders/gpuUploadImageSource.mjs';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource.mjs';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator.mjs';\n\n\"use strict\";\nclass GpuTextureSystem {\n constructor(renderer) {\n this.managedTextures = [];\n this._gpuSources = /* @__PURE__ */ Object.create(null);\n this._gpuSamplers = /* @__PURE__ */ Object.create(null);\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._textureViewHash = /* @__PURE__ */ Object.create(null);\n this._uploads = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n initSource(source) {\n if (source.autoGenerateMipmaps) {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n const textureDescriptor = {\n label: source.label,\n size: { width, height },\n format: source.format,\n sampleCount: source.sampleCount,\n mipLevelCount: source.mipLevelCount,\n dimension: source.dimension,\n usage\n };\n const gpuTexture = this._gpu.device.createTexture(textureDescriptor);\n this._gpuSources[source.uid] = gpuTexture;\n if (!this.managedTextures.includes(source)) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceResize, this);\n source.on(\"destroy\", this.onSourceDestroy, this);\n source.on(\"unload\", this.onSourceUnload, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.push(source);\n }\n this.onSourceUpdate(source);\n return gpuTexture;\n }\n onSourceUpdate(source) {\n const gpuTexture = this.getGpuSource(source);\n if (!gpuTexture)\n return;\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, gpuTexture, this._gpu);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source);\n }\n }\n onSourceUnload(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (gpuTexture) {\n this._gpuSources[source.uid] = null;\n gpuTexture.destroy();\n }\n }\n onUpdateMipmaps(source) {\n if (!this._mipmapGenerator) {\n this._mipmapGenerator = new GpuMipmapGenerator(this._gpu.device);\n }\n const gpuTexture = this.getGpuSource(source);\n this._mipmapGenerator.generateMipmap(gpuTexture);\n }\n onSourceDestroy(source) {\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"unload\", this.onSourceUnload, this);\n source.off(\"destroy\", this.onSourceDestroy, this);\n source.off(\"resize\", this.onSourceResize, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n this.onSourceUnload(source);\n }\n onSourceResize(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (!gpuTexture) {\n this.initSource(source);\n } else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight) {\n this._textureViewHash[source.uid] = null;\n this._bindGroupHash[source.uid] = null;\n this.onSourceUnload(source);\n this.initSource(source);\n }\n }\n _initSampler(sampler) {\n this._gpuSamplers[sampler._resourceId] = this._gpu.device.createSampler(sampler);\n return this._gpuSamplers[sampler._resourceId];\n }\n getGpuSampler(sampler) {\n return this._gpuSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGpuSource(source) {\n return this._gpuSources[source.uid] || this.initSource(source);\n }\n getTextureBindGroup(texture) {\n return this._bindGroupHash[texture.uid] ?? this._createTextureBindGroup(texture);\n }\n _createTextureBindGroup(texture) {\n const source = texture.source;\n const bindGroupId = source.uid;\n this._bindGroupHash[bindGroupId] = new BindGroup({\n 0: source,\n 1: source.style\n });\n return this._bindGroupHash[bindGroupId];\n }\n getTextureView(texture) {\n const source = texture.source;\n return this._textureViewHash[source.uid] ?? this._createTextureView(source);\n }\n _createTextureView(texture) {\n this._textureViewHash[texture.uid] = this.getGpuSource(texture).createView();\n return this._textureViewHash[texture.uid];\n }\n generateCanvas(texture) {\n const renderer = this._renderer;\n const commandEncoder = renderer.gpu.device.createCommandEncoder();\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = texture.source.pixelWidth;\n canvas.height = texture.source.pixelHeight;\n const context = canvas.getContext(\"webgpu\");\n context.configure({\n device: renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: navigator.gpu.getPreferredCanvasFormat(),\n alphaMode: \"premultiplied\"\n });\n commandEncoder.copyTextureToTexture({\n texture: renderer.texture.getGpuSource(texture.source),\n origin: {\n x: 0,\n y: 0\n }\n }, {\n texture: context.getCurrentTexture()\n }, {\n width: canvas.width,\n height: canvas.height\n });\n renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n return canvas;\n }\n getPixels(texture) {\n const webGPUCanvas = this.generateCanvas(texture);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(webGPUCanvas.width, webGPUCanvas.height);\n const context = canvasAndContext.context;\n context.drawImage(webGPUCanvas, 0, 0);\n const { width, height } = webGPUCanvas;\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = new Uint8ClampedArray(imageData.data.buffer);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return { pixels, width, height };\n }\n destroy() {\n this.managedTextures.slice().forEach((source) => this.onSourceDestroy(source));\n this.managedTextures = null;\n for (const k of Object.keys(this._bindGroupHash)) {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n bindGroup?.destroy();\n this._bindGroupHash[key] = null;\n }\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSources = null;\n this._bindGroupHash = null;\n this._textureViewHash = null;\n this._gpuSamplers = null;\n }\n}\n/** @ignore */\nGpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n\nexport { GpuTextureSystem };\n//# sourceMappingURL=GpuTextureSystem.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuGraphicsAdaptor } from '../../../scene/graphics/gpu/GpuGraphicsAdaptor.mjs';\nimport { GpuMeshAdapter } from '../../../scene/mesh/gpu/GpuMeshAdapter.mjs';\nimport { GpuBatchAdaptor } from '../../batcher/gpu/GpuBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { BindGroupSystem } from './BindGroupSystem.mjs';\nimport { GpuBufferSystem } from './buffer/GpuBufferSystem.mjs';\nimport { GpuColorMaskSystem } from './GpuColorMaskSystem.mjs';\nimport { GpuDeviceSystem } from './GpuDeviceSystem.mjs';\nimport { GpuEncoderSystem } from './GpuEncoderSystem.mjs';\nimport { GpuStencilSystem } from './GpuStencilSystem.mjs';\nimport { GpuUboSystem } from './GpuUboSystem.mjs';\nimport { GpuUniformBatchPipe } from './GpuUniformBatchPipe.mjs';\nimport { PipelineSystem } from './pipeline/PipelineSystem.mjs';\nimport { GpuRenderTargetSystem } from './renderTarget/GpuRenderTargetSystem.mjs';\nimport { GpuShaderSystem } from './shader/GpuShaderSystem.mjs';\nimport { GpuStateSystem } from './state/GpuStateSystem.mjs';\nimport { GpuTextureSystem } from './texture/GpuTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGPUSystems = [\n ...SharedSystems,\n GpuUboSystem,\n GpuEncoderSystem,\n GpuDeviceSystem,\n GpuBufferSystem,\n GpuTextureSystem,\n GpuRenderTargetSystem,\n GpuShaderSystem,\n GpuStateSystem,\n PipelineSystem,\n GpuColorMaskSystem,\n GpuStencilSystem,\n BindGroupSystem\n];\nconst DefaultWebGPUPipes = [...SharedRenderPipes, GpuUniformBatchPipe];\nconst DefaultWebGPUAdapters = [GpuBatchAdaptor, GpuMeshAdapter, GpuGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGPUSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGPUPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGPUSystems, ...DefaultWebGPUPipes, ...DefaultWebGPUAdapters);\nclass WebGPURenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgpu\",\n type: RendererType.WEBGPU,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGPURenderer };\n//# sourceMappingURL=WebGPURenderer.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n"],"names":["Float32Array","s","r","G","Object","navigator","Promise","Error","Math","i","GPUTextureUsage","e","console","a","Uint8ClampedArray","Number"],"mappings":"0RAaA,OAAM,EACJ,MAAO,CACL,IAAM,EAAgB,IAAI,GAAY,CAAC,CACrC,iBAAkB,CAAE,MAAO,IAAI,GAAM,CAAI,KAAM,aAAc,EAC7D,OAAQ,CAAE,MAAO,IAAIA,aAAa,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,KAAM,WAAY,EACnE,OAAQ,CAAE,MAAO,EAAG,KAAM,KAAM,CAClC,GACM,EAAa,QAA4B,CAC7C,KAAM,WACN,KAAM,CACJ,GAAQ,CACR,QAAwB,GAAY,EACpC,IAAqB,CACrB,GAAc,CACf,AACH,EACA,KAAI,CAAC,MAAM,CAAG,IAAI,GAAM,CAAC,CACvB,aACA,UAAW,CAET,eACF,CACF,EACF,CACA,QAAQ,CAAY,CAAE,CAAU,CAAE,CAChC,IAAM,EAAU,EAAW,OAAO,CAC5BC,EAAS,EAAQ,YAAY,EAAI,IAAI,CAAC,MAAM,CAC5C,EAAW,EAAa,QAAQ,CAEhC,CACJ,UAAQ,CACR,cAAY,CACb,CAAG,AAJkB,EAAS,eAAe,CAI5B,oBAAoB,CAAC,GACjC,EAAU,EAAS,OAAO,CAChC,EAAQ,sCAAsC,CAC5C,EACAA,EAAO,UAAU,CACjB,EAAa,KAAK,EAEpB,EAAQ,WAAW,CAAC,GACpB,IAAM,EAA0B,EAAS,cAAc,CAAC,SAAS,CACjE,EAAQ,YAAY,CAAC,EAAG,EAAyBA,EAAO,UAAU,EAClE,IAAM,EAAiB,EAAS,WAAW,CAAC,YAAY,CAAC,mBAAmB,CAACA,EAAO,SAAS,CAAC,aAAa,CAAE,IAC7G,EAAQ,YAAY,CAAC,EAAG,EAAgBA,EAAO,UAAU,EACzD,IAAM,EAAU,EAAa,YAAY,CACzC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAa,eAAe,CAAE,IAAK,CACrD,IAAM,EAAQ,CAAO,CAAC,EAAE,CAExB,GADAA,EAAO,MAAM,CAAC,EAAE,CAAG,EAAM,SAAS,CAC9B,CAAC,EAAM,YAAY,CAAE,CACvB,IAAM,EAAe,EAAM,QAAQ,AACnC,GAAM,SAAS,CAAG,QAAyB,EAAa,QAAQ,CAAE,EAAa,KAAK,EACpF,EAAM,YAAY,CAAG,EAAS,SAAS,CAAC,YAAY,CAClD,EAAM,SAAS,CACfA,EAAO,UAAU,CACjB,EAEJ,CACA,EAAQ,YAAY,CAAC,EAAG,EAAM,SAAS,CAAEA,EAAO,UAAU,EAC1D,EAAQ,iBAAiB,CAAC,WAAW,CAAC,EAAM,IAAI,CAAE,EAAG,EAAM,KAAK,CAClE,CACF,CACA,SAAU,CACR,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IACpB,IAAI,CAAC,MAAM,CAAG,IAChB,CACF,CAEA,EAAmB,SAAS,CAAG,CAC7B,KAAM,CACJ,uBAAgC,CACjC,CACD,KAAM,UACR,E,oCC1EA,OAAM,EACJ,MAAO,CACL,IAAM,EAAa,QAA4B,CAC7C,KAAM,OACN,KAAM,CACJ,IAAe,CACf,GAAU,CACV,GAAc,CACf,AACH,EACA,KAAI,CAAC,OAAO,CAAG,IAAI,GAAM,CAAC,CACxB,aACA,UAAW,CACT,SAAU,iBAAqB,CAC/B,SAAU,uBAA2B,CACrC,gBAAiB,CACf,eAAgB,CAAE,KAAM,cAAe,MAAO,IAAI,GAAM,AAAG,CAC7D,CACF,CACF,EACF,CACA,QAAQ,CAAQ,CAAE,CAAI,CAAE,CACtB,IAAMC,EAAW,EAAS,QAAQ,CAC9BD,EAAS,EAAK,OAAO,CACzB,GAAKA,EAKE,IAAI,CAACA,EAAO,UAAU,CAAE,WAC7B,QAAK,gCAAiC,EAAK,MAAM,CAEnD,KANE,AADAA,CAAAA,EAAS,IAAI,CAAC,OAAO,AAAD,EACb,SAAS,CAAC,QAAQ,CAAG,EAAK,OAAO,CAAC,MAAM,CAC/CA,EAAO,SAAS,CAAC,QAAQ,CAAG,EAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CACrDA,EAAO,SAAS,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAG,EAAK,OAAO,CAAC,aAAa,CAAC,QAAQ,CAKhG,IAAM,EAAaA,EAAO,UAAU,CAIpC,GAHI,EAAW,wBAAwB,EACrCA,CAAAA,EAAO,MAAM,CAAC,EAAE,CAAGC,EAAS,cAAc,CAAC,SAAS,AAAD,EAEjD,EAAW,uBAAuB,CAAE,CACtC,IAAM,EAAgB,EAAS,aAAa,AAC5CD,CAAAA,EAAO,MAAM,CAAC,EAAE,CAAGC,EAAS,WAAW,CAAC,YAAY,CAAC,mBAAmB,CAAC,EAAe,GAC1F,CACAA,EAAS,OAAO,CAAC,IAAI,CAAC,CACpB,SAAU,EAAK,SAAS,CACxBD,OAAAA,EACA,MAAO,EAAK,KAAK,AACnB,EACF,CACA,SAAU,CACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IACrB,IAAI,CAAC,OAAO,CAAG,IACjB,CACF,CAEA,EAAe,SAAS,CAAG,CACzB,KAAM,CACJ,uBAAgC,CACjC,CACD,KAAM,MACR,E,eC1DA,IAAM,EAAY,SAAW,EAC7B,OAAME,EACJ,MAAO,CACL,IAAM,EAAa,QAA4B,CAC7C,KAAM,QACN,KAAM,CACJ,GAAQ,CACR,QAAwB,GAAY,EACpC,GAAc,CACf,AACH,EACA,KAAI,CAAC,OAAO,CAAG,IAAI,GAAM,CAAC,CACxB,aACA,OAAQ,CAER,CACF,EACF,CACA,MAAM,CAAS,CAAE,CAAQ,CAAE,CACzB,IAAMD,EAAW,EAAU,QAAQ,CAC7B,EAAUA,EAAS,OAAO,CAC1B,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,AACvC,KAAI,CAAC,SAAS,CAAG,EACjB,EAAQ,WAAW,CAAC,GACpB,EAAU,SAAS,CAAG,SACtBA,EAAS,QAAQ,CAAC,WAAW,CAC3B,EACA,EACA,GAEF,IAAM,EAA0BA,EAAS,cAAc,CAAC,SAAS,CACjE,EAAQ,cAAc,CAAC,GACvB,EAAQ,YAAY,CAAC,EAAG,EAAyB,EACnD,CACA,QAAQ,CAAS,CAAE,CAAK,CAAE,CACxB,IAAM,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CACjC,EAAW,EAAU,QAAQ,CAC7B,EAAU,EAAS,OAAO,CAChC,GAAI,CAAC,EAAM,SAAS,CAAE,CACpB,IAAM,EAAe,EAAM,QAAQ,AACnC,GAAM,SAAS,CAAG,QAAyB,EAAa,QAAQ,CAAE,EAAa,KAAK,CACtF,CACA,EAAU,SAAS,CAAG,EAAM,SAAS,CACrC,IAAM,EAAe,EAAS,SAAS,CAAC,YAAY,CAClD,EAAM,SAAS,CACf,EACA,GAEI,EAAW,EAAS,QAAQ,CAAC,WAAW,CAC5C,IAAI,CAAC,SAAS,CACd,EACA,GAEF,EAAM,SAAS,CAAC,MAAM,CAAC,EAAS,SAAS,CAAC,KAAK,EAC/C,EAAQ,WAAW,CAAC,GACpB,EAAQ,iBAAiB,CAAC,YAAY,CAAC,EAAG,GAC1C,EAAQ,iBAAiB,CAAC,WAAW,CAAC,EAAM,IAAI,CAAE,EAAG,EAAM,KAAK,CAClE,CACA,SAAU,CACR,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IACrB,IAAI,CAAC,OAAO,CAAG,IACjB,CACF,CAEAC,EAAgB,SAAS,CAAG,CAC1B,KAAM,CACJ,uBAAgC,CACjC,CACD,KAAM,OACR,E,mCC7EA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,KAAK,CAAmBC,OAAO,MAAM,CAAC,MAC3C,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,CACd,CACA,aAAa,CAAS,CAAE,CAAO,CAAE,CAAU,CAAE,CAG3C,OAFA,EAAU,UAAU,GACC,IAAI,CAAC,KAAK,CAAC,EAAU,IAAI,CAAC,EAAI,IAAI,CAAC,gBAAgB,CAAC,EAAW,EAAS,EAE/F,CACA,iBAAiB,CAAK,CAAE,CAAO,CAAE,CAAU,CAAE,CAC3C,IAAM,EAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CACzB,EAAc,EAAQ,MAAM,CAAC,EAAW,CACxC,EAAU,EAAE,CACZ,EAAW,IAAI,CAAC,SAAS,CAC/B,IAAK,IAAM,KAAK,EAAa,CAC3B,IACI,EADE,EAAW,EAAM,SAAS,CAAC,EAAE,EAAI,EAAM,SAAS,CAAC,CAAW,CAAC,EAAE,CAAC,CAEtE,GAAI,AAA2B,iBAA3B,EAAS,aAAa,CAAqB,CAE7C,EAAS,GAAG,CAAC,kBAAkB,CADV,GAErB,IAAM,EAAS,AAFM,EAEO,MAAM,CAClC,EAAc,CACZ,OAAQ,EAAS,MAAM,CAAC,YAAY,CAAC,GACrC,OAAQ,EACR,KAAM,EAAO,UAAU,CAAC,IAAI,AAC9B,CACF,KAAW,AAA2B,WAA3B,EAAS,aAAa,CAE/B,EAAc,CACZ,OAAQ,EAAS,MAAM,CAAC,YAAY,CAFvB,GAGb,OAAQ,EACR,KAAM,AAJO,EAIA,UAAU,CAAC,IAAI,AAC9B,EACS,AAA2B,mBAA3B,EAAS,aAAa,CAE/B,EAAc,CACZ,OAAQ,EAAS,MAAM,CAAC,YAAY,CAAC,AAFhB,EAE+B,MAAM,EAC1D,OAAQ,AAHa,EAGE,MAAM,CAC7B,KAAM,AAJe,EAIA,IAAI,AAC3B,EACS,AAA2B,mBAA3B,EAAS,aAAa,CAE/B,EAAc,EAAS,OAAO,CAAC,aAAa,CAD5B,GAEoB,kBAA3B,EAAS,aAAa,EAE/B,GAAc,EAAS,OAAO,CAAC,YAAY,CAD3B,GACqC,UAAU,CAAC,CAAC,EAAC,EAEpE,EAAQ,IAAI,CAAC,CACX,QAAS,CAAW,CAAC,EAAE,CACvB,SAAU,CACZ,EACF,CACA,IAAM,EAAS,EAAS,MAAM,CAAC,cAAc,CAAC,GAAS,UAAU,CAAC,EAAW,CACvE,EAAe,EAAO,eAAe,CAAC,CAC1C,SACA,SACF,GAEA,OADA,IAAI,CAAC,KAAK,CAAC,EAAM,IAAI,CAAC,CAAG,EAClB,CACT,CACA,SAAU,CACR,IAAK,IAAM,KAAOA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EACtC,IAAI,CAAC,KAAK,CAAC,EAAI,CAAG,IAEpB,KAAI,CAAC,KAAK,CAAG,KACb,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAgB,SAAS,CAAG,CAC1B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,WACR,E,cC7EA,OAAM,EACJ,aAAc,CACZ,IAAI,CAAC,WAAW,CAAmBA,OAAO,MAAM,CAAC,MACjD,IAAI,CAAC,eAAe,CAAG,EAAE,AAC3B,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,CACd,CACA,aAAa,CAAM,CAAE,CACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,EAAI,IAAI,CAAC,eAAe,CAAC,EAC9D,CACA,aAAa,CAAM,CAAE,CACnB,IAAM,EAAY,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,EAAI,IAAI,CAAC,eAAe,CAAC,GACjE,EAAO,EAAO,IAAI,CAYxB,OAXI,EAAO,SAAS,EAAI,IACtB,EAAO,SAAS,CAAG,EACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAChC,EACA,EACA,EAAK,MAAM,CACX,EAEA,AAAC,GAAO,WAAW,EAAI,EAAK,UAAU,AAAD,EAAK,EAAI,KAG3C,CACT,CAEA,YAAa,CACX,IAAK,IAAM,KAAM,IAAI,CAAC,WAAW,CAC/B,IAAI,CAAC,WAAW,CAAC,EAAG,CAAC,OAAO,EAE9B,KAAI,CAAC,WAAW,CAAG,CAAC,CACtB,CACA,gBAAgB,CAAM,CAAE,CACjB,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,GAC/B,EAAO,EAAE,CAAC,SAAU,IAAI,CAAC,YAAY,CAAE,IAAI,EAC3C,EAAO,EAAE,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC7C,EAAO,EAAE,CAAC,UAAW,IAAI,CAAC,eAAe,CAAE,IAAI,GAEjD,IAAM,EAAY,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAO,UAAU,EAQjE,OAPA,EAAO,SAAS,CAAG,EACf,EAAO,IAAI,GACb,QAAS,EAAO,IAAI,CAAC,MAAM,CAAE,EAAU,cAAc,IACrD,EAAU,KAAK,IAEjB,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAAG,EAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GACnB,CACT,CACA,eAAe,CAAM,CAAE,CAErB,AADkB,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CACpC,OAAO,GACjB,EAAO,SAAS,CAAG,EACnB,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAAG,IAAI,CAAC,eAAe,CAAC,EACtD,CAKA,gBAAgB,CAAM,CAAE,CACtB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAS,GAClE,IAAI,CAAC,cAAc,CAAC,EACtB,CACA,SAAU,CACR,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,AAAC,GAAW,IAAI,CAAC,cAAc,CAAC,IAC7D,IAAI,CAAC,eAAe,CAAG,KACvB,IAAI,CAAC,WAAW,CAAG,IACrB,CACA,eAAe,CAAM,CAAE,CAErB,AADkB,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CACpC,OAAO,GACjB,EAAO,GAAG,CAAC,SAAU,IAAI,CAAC,YAAY,CAAE,IAAI,EAC5C,EAAO,GAAG,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC9C,EAAO,GAAG,CAAC,UAAW,IAAI,CAAC,eAAe,CAAE,IAAI,EAChD,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAAG,IACjC,CACF,CAEA,EAAgB,SAAS,CAAG,CAC1B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,QACR,CCrFA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,eAAe,CAAG,GACvB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,QAAQ,CAAS,CAAE,CACb,IAAI,CAAC,eAAe,GAAK,IAE7B,IAAI,CAAC,eAAe,CAAG,EACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GACvC,CACA,SAAU,CACR,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,eAAe,CAAG,IACzB,CACF,CAEA,EAAmB,SAAS,CAAG,CAC7B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,WACR,CCtBA,OAAM,EAIJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,MAAM,KAAK,CAAO,CAAE,QACd,IAAI,CAAC,YAAY,EAErB,KAAI,CAAC,YAAY,CAAG,IAAI,CAAC,uBAAuB,CAAC,GAAS,IAAI,CAAC,AAAC,IAC9D,IAAI,CAAC,GAAG,CAAG,EACX,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACpD,EAAC,EAJQ,IAAI,CAAC,YAAY,AAM5B,CAKA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAG,CACvB,CAQA,MAAM,wBAAwB,CAAO,CAAE,CACrC,IAAM,EAAU,MAAMC,UAAU,GAAG,CAAC,cAAc,CAAC,CACjD,gBAAiB,EAAQ,eAAe,CACxC,qBAAsB,EAAQ,oBAAoB,AACpD,GACMH,EAAmB,CACvB,yBACA,2BACA,2BACD,CAAC,MAAM,CAAC,AAAC,GAAY,EAAQ,QAAQ,CAAC,GAAG,CAAC,IACrC,EAAS,MAAM,EAAQ,aAAa,CAAC,CACzCA,iBAAAA,CACF,GACA,MAAO,CAAE,UAAS,QAAO,CAC3B,CACA,SAAU,CACR,IAAI,CAAC,GAAG,CAAG,KACX,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAgB,SAAS,CAAG,CAC1B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,QACR,EAEA,EAAgB,cAAc,CAAG,CAK/B,gBAAiB,KAAK,EAKtB,qBAAsB,EACxB,CCrEA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,eAAe,CAAmBE,OAAO,MAAM,CAAC,MACrD,IAAI,CAAC,kBAAkB,CAAmBA,OAAO,MAAM,CAAC,MACxD,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,aAAc,CACZ,IAAI,CAAC,eAAe,CAAG,IAAIE,QAAQ,AAAC,IAClC,IAAI,CAAC,uBAAuB,CAAG,CACjC,GACA,IAAI,CAAC,cAAc,CAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,EACtE,CACA,gBAAgB,CAAe,CAAE,CAC/B,IAAI,CAAC,aAAa,GAClB,IAAI,CAAC,WAAW,GAChB,IAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAgB,UAAU,CACzF,CACA,eAAgB,CACV,IAAI,CAAC,iBAAiB,EACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAE5B,IAAI,CAAC,iBAAiB,CAAG,IAC3B,CACA,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAS,CAAC,CAAE,EAAS,CAAC,CAAE,EAAS,KAAK,CAAE,EAAS,MAAM,CAAE,EAAG,EACjG,CACA,uCAAuC,CAAQ,CAAE,CAAO,CAAE,CAAK,CAAE,CAAQ,CAAE,CACzE,IAAM,EAAW,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAU,EAAS,EAAO,GAC/E,IAAI,CAAC,WAAW,CAAC,EACnB,CACA,YAAY,CAAQ,CAAE,CAChB,IAAI,CAAC,cAAc,GAAK,IAE5B,IAAI,CAAC,cAAc,CAAG,EACtB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,GACrC,CACA,iBAAiB,CAAK,CAAE,CAAM,CAAE,CAC1B,IAAI,CAAC,kBAAkB,CAAC,EAAM,GAAK,IAEvC,IAAI,CAAC,kBAAkB,CAAC,EAAM,CAAG,EACjC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,EAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,IACnF,CACA,gBAAgB,CAAM,CAAE,CACtB,GAAI,IAAI,CAAC,iBAAiB,GAAK,EAC7B,MACF,KAAI,CAAC,iBAAiB,CAAG,EACzB,IAAM,EAAc,AAAkC,IAAlC,EAAO,IAAI,CAAC,iBAAiB,CAAS,SAAW,SACrE,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAS,EACpF,CACA,eAAe,CAAK,CAAE,CACpB,IAAI,CAAC,eAAe,CAAC,EAAM,CAAG,IAChC,CACA,aAAa,CAAK,CAAE,CAAS,CAAE,CAAO,CAAE,CACtC,GAAI,IAAI,CAAC,eAAe,CAAC,EAAM,GAAK,EAClC,MACF,KAAI,CAAC,eAAe,CAAC,EAAM,CAAG,EAC9B,EAAU,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAC/C,IAAM,EAAe,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAW,EAAS,GAC/E,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAO,EAC7C,CACA,YAAY,CAAQ,CAAE,CACpB,IAAK,IAAM,KAAK,EAAS,UAAU,CAAE,CACnC,IAAM,EAAY,EAAS,UAAU,CAAC,EAAE,CACxC,IAAI,CAAC,gBAAgB,CAAC,EAAU,QAAQ,CAAE,EAAU,MAAM,CAC5D,CACI,EAAS,WAAW,EACtB,IAAI,CAAC,eAAe,CAAC,EAAS,WAAW,CAE7C,CACA,qBAAqB,CAAM,CAAE,CAAQ,CAAE,CACrC,IAAK,IAAM,KAAK,EAAO,MAAM,CAAE,CAC7B,IAAM,EAAY,EAAO,MAAM,CAAC,EAAE,AAC9B,CAAC,GACH,IAAI,CAAC,cAAc,CAAC,GAEtB,IAAI,CAAC,YAAY,CAAC,EAAG,EAAW,EAAO,UAAU,CACnD,CACF,CACA,eAAe,CAAS,CAAE,CACxB,IAAK,IAAM,KAAK,EAAU,SAAS,CAAE,CACnC,IAAMJ,EAAW,EAAU,SAAS,CAAC,EAAE,AACnCA,CAAAA,EAAS,cAAc,EACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAACA,EAE1C,CACF,CACA,KAAK,CAAO,CAAE,CACZ,GAAM,CAAE,UAAQ,CAAE,QAAM,CAAED,MAAAA,CAAK,CAAE,UAAQ,CAAE,MAAI,CAAE,OAAK,CAAE,eAAa,CAAE,UAAQ,CAAE,CAAG,EACpF,IAAI,CAAC,sCAAsC,CAAC,EAAU,EAAO,UAAU,CAAEA,EAAO,GAChF,IAAI,CAAC,WAAW,CAAC,GACjB,IAAI,CAAC,oBAAoB,CAAC,EAAQ,GAC9B,EAAS,WAAW,CACtB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAChC,GAAQ,EAAS,WAAW,CAAC,IAAI,CAAC,MAAM,CACxC,GAAiB,EAAS,aAAa,CACvC,GAAS,GAGX,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAQ,EAAS,OAAO,GAAI,GAAiB,EAAS,aAAa,CAAE,GAAS,EAE9G,CACA,kBAAmB,CACb,IAAI,CAAC,iBAAiB,GACxB,IAAI,CAAC,iBAAiB,CAAC,GAAG,GAC1B,IAAI,CAAC,iBAAiB,CAAG,KAE7B,CACA,YAAa,CACX,IAAI,CAAC,gBAAgB,GACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,EAC5D,IAAI,CAAC,uBAAuB,GAC5B,IAAI,CAAC,cAAc,CAAG,IACxB,CAIA,mBAAoB,CAClB,IAAM,EAAa,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAClE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CACxC,GACA,CAAC,EAAG,EAAG,EAAG,EAAE,CAEd,KAAI,CAAC,iBAAiB,CAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,GAC7D,IAAM,EAAgB,IAAI,CAAC,cAAc,CACnC,EAAoB,CAAE,GAAG,IAAI,CAAC,kBAAkB,AAAC,EACjD,EAAmB,IAAI,CAAC,iBAAiB,CACzC,EAAiB,CAAE,GAAG,IAAI,CAAC,eAAe,AAAC,EACjD,IAAI,CAAC,WAAW,GAChB,IAAM,EAAW,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAGrD,IAAK,IAAM,KAFX,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAS,CAAC,CAAE,EAAS,CAAC,CAAE,EAAS,KAAK,CAAE,EAAS,MAAM,CAAE,EAAG,GAC/F,IAAI,CAAC,WAAW,CAAC,GACD,EACd,IAAI,CAAC,gBAAgB,CAAC,EAAG,CAAiB,CAAC,EAAE,EAE/C,IAAK,IAAM,KAAK,EACd,IAAI,CAAC,YAAY,CAAC,EAAG,CAAc,CAAC,EAAE,CAAE,MAE1C,IAAI,CAAC,eAAe,CAAC,EACvB,CACA,aAAc,CACZ,IAAK,IAAI,EAAI,EAAG,EAAI,GAAI,IACtB,IAAI,CAAC,eAAe,CAAC,EAAE,CAAG,KAC1B,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAG,IAE/B,KAAI,CAAC,iBAAiB,CAAG,KACzB,IAAI,CAAC,cAAc,CAAG,IACxB,CACA,SAAU,CACR,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,eAAe,CAAG,KACvB,IAAI,CAAC,kBAAkB,CAAG,KAC1B,IAAI,CAAC,iBAAiB,CAAG,KACzB,IAAI,CAAC,cAAc,CAAG,IACxB,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,CACd,CACF,CAEA,EAAiB,SAAS,CAAG,CAC3B,KAAM,CAAC,iBAA0B,CAAC,CAClC,KAAM,UACN,SAAU,CACZ,E,cCnKA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,yBAAyB,CAAmBG,OAAO,MAAM,CAAC,MAC/D,IAAI,CAAC,SAAS,CAAG,EACjB,EAAS,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CACrD,CACA,qBAAqB,CAAY,CAAE,CACjC,IAAI,EAAe,IAAI,CAAC,yBAAyB,CAAC,EAAa,GAAG,CAAC,AAC/D,CAAC,GACH,GAAe,IAAI,CAAC,yBAAyB,CAAC,EAAa,GAAG,CAAC,CAAG,CAChE,YAAa,YAAsB,CACnC,iBAAkB,CACpB,GAEF,IAAI,CAAC,mBAAmB,CAAG,EAC3B,IAAI,CAAC,cAAc,CAAC,EAAa,WAAW,CAAE,EAAa,gBAAgB,CAC7E,CACA,eAAe,CAAW,CAAE,CAAgB,CAAE,CAC5C,IAAM,EAAe,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,AACjF,GAAa,WAAW,CAAG,EAC3B,EAAa,gBAAgB,CAAG,EAChC,IAAM,EAAW,IAAI,CAAC,SAAS,CAC/B,EAAS,QAAQ,CAAC,cAAc,CAAC,GACjC,EAAS,OAAO,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,EACzD,CACA,SAAU,CACR,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAC5D,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,mBAAmB,CAAG,KAC3B,IAAI,CAAC,yBAAyB,CAAG,IACnC,CACF,CAEA,EAAiB,SAAS,CAAG,CAC3B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,SACR,E,8CCzCA,OAAM,EACJ,YAAY,CAAE,2BAAyB,CAAE,CAAE,CACzC,IAAI,CAAC,0BAA0B,CAAG,IAClC,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,0BAA0B,CAAG,EAClC,IAAI,CAAC,IAAI,CAAG,IAAIJ,aAAa,MAC/B,CACA,OAAQ,CACN,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,cAAc,CAAI,CAAE,CAClB,GAAI,EAAO,IAAI,CAAC,0BAA0B,CAAG,EAC3C,MAAM,AAAIO,MAAM,CAAC,wCAAwC,EAAE,AAAO,EAAP,EAAS,CAAC,EAEvE,IAAM,EAAQ,IAAI,CAAC,SAAS,CACxB,EAAU,EAAQ,AAAO,EAAP,EAEtB,GAAI,AADJ,GAAUC,KAAK,IAAI,CAAC,EAAU,IAAI,CAAC,0BAA0B,EAAI,IAAI,CAAC,0BAA0B,AAAD,EACjF,AAAmB,EAAnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAC5B,MAAM,AAAID,MAAM,6CAGlB,OADA,IAAI,CAAC,SAAS,CAAG,EACV,CACT,CACA,SAAS,CAAK,CAAE,CACd,IAAM,EAAS,IAAI,CAAC,aAAa,CAAC,EAAM,MAAM,EAC9C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAM,MAAM,CAAE,IAChC,IAAI,CAAC,IAAI,CAAC,EAAS,EAAI,EAAE,CAAG,CAAK,CAAC,EAAE,CAEtC,OAAO,CACT,CACA,SAAU,CACR,IAAI,CAAC,OAAO,CAAC,OAAO,GACpB,IAAI,CAAC,OAAO,CAAG,KACf,IAAI,CAAC,IAAI,CAAG,IACd,CACF,C,cC3BA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,cAAc,CAAmBH,OAAO,MAAM,CAAC,MAEpD,IAAI,CAAC,QAAQ,CAAG,EAAE,CAClB,IAAI,CAAC,WAAW,CAAG,EAAE,CACrB,IAAI,CAAC,gBAAgB,CAAG,EAAE,CAC1B,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,YAAY,CAAG,IAAI,EAAS,CAAE,0BATL,GAS8B,GAE5D,IAAK,IAAI,EAAI,EAAG,EADK,EACa,IAAK,CACrC,IAAI,EAAQ,WAAmB,CAAG,YAAoB,AAClD,AAAM,KAAN,GACF,IAAS,YAAoB,AAApB,EACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAM,CAAC,CAC5B,KAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAC5B,OACF,GACF,CACF,CACA,WAAY,CACV,IAAI,CAAC,iBAAiB,GACtB,IAAI,CAAC,gBAAgB,EACvB,CACA,kBAAmB,CACjB,IAAK,IAAM,KAAK,IAAI,CAAC,cAAc,CACjC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAG,KAE3B,IAAI,CAAC,YAAY,CAAC,KAAK,EACzB,CAEA,oBAAoB,CAAK,CAAE,CAAS,CAAE,CACpC,GAAI,CAAC,GAAa,IAAI,CAAC,cAAc,CAAC,EAAM,GAAG,CAAC,CAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,EAAM,GAAG,CAAC,CAEvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,GACtC,IAAM,EAAO,EAAM,MAAM,CAAC,IAAI,CACxB,EAAS,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAK,MAAM,EAG1D,OAFA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAE,EAAS,GAC5E,IAAI,CAAC,cAAc,CAAC,EAAM,GAAG,CAAC,CAAG,IAAI,CAAC,aAAa,CAAC,EAxCtB,KAyCvB,IAAI,CAAC,cAAc,CAAC,EAAM,GAAG,CAAC,AACvC,CACA,eAAe,CAAK,CAAE,CACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,GACtC,IAAM,EAAO,EAAM,MAAM,CAAC,IAAI,CACxB,EAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,EA/CD,IAgDhC,CACA,kBAAkB,CAAI,CAAE,CACtB,IAAM,EAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAC1C,OAAO,IAAI,CAAC,aAAa,CAAC,EAnDI,IAoDhC,CACA,uBAAuB,CAAI,CAAE,CAC3B,IAAM,EAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAE1C,OAAO,IAAI,CAAC,kBAAkB,CADhB,EAvDgB,IAyDhC,CACA,mBAAmB,CAAK,CAAE,CACxB,GAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAM,CAAE,CACjC,IAAM,EAAS,IAAI,CAAC,QAAQ,CAAC,EAAQ,EAAE,AACvC,KAAI,CAAC,gBAAgB,CAAC,EAAM,CAAG,IAAI,GAAc,CAAC,CAChD,SACA,OAAQ,AAAC,GAAQ,EAAI,GAAK,IAC1B,KAhE0B,GAiE5B,EACF,CACA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAM,AACrC,CACA,cAAc,CAAK,CAAE,CACnB,GAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAM,CAAE,CAC5B,IAAM,EAAY,IAAI,GAAS,CAAC,CAC9B,EAAG,IAAI,CAAC,kBAAkB,CAAC,EAC7B,EACA,KAAI,CAAC,WAAW,CAAC,EAAM,CAAG,CAC5B,CACA,OAAO,IAAI,CAAC,WAAW,CAAC,EAAM,AAChC,CACA,mBAAoB,CAClB,IAAM,EAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CACpC,EAAc,IAAI,CAAC,QAAQ,CAAC,EAAE,CACpC,EAAY,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAC9C,EAAa,YAAY,CAAC,GAC1B,IAAM,EAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,GACrE,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,IAAK,CAC7C,IAAM,EAAS,IAAI,CAAC,QAAQ,CAAC,EAAE,CAC/B,EAAe,kBAAkB,CAC/B,EAAa,YAAY,CAAC,GAvFA,IAyF1B,EAAa,YAAY,CAAC,GAC1B,EACA,IAAI,CAAC,YAAY,CAAC,SAAS,CAE/B,CACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAe,MAAM,GAAG,CAClE,CACA,SAAU,CACR,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAE,IAC3C,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAE7B,KAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,cAAc,CAAG,KACtB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAE1B,KAAI,CAAC,QAAQ,CAAG,KAChB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAE,IAChD,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAElC,KAAI,CAAC,gBAAgB,CAAG,KACxB,IAAI,CAAC,YAAY,CAAC,OAAO,GACzB,IAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,SAAS,CAAG,IACnB,CACF,CAEA,EAAoB,SAAS,CAAG,CAC9B,KAAM,CACJ,gBAAyB,CAC1B,CACD,KAAM,cACR,E,mCC1HA,IAAM,EAAqB,CACzB,aAAc,EACd,YAAa,EACb,aAAc,EACd,gBAAiB,EACjB,iBAAkB,CACpB,CAOA,OAAM,EACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,YAAY,CAAmBA,OAAO,MAAM,CAAC,MAClD,IAAI,CAAC,mBAAmB,CAAmBA,OAAO,MAAM,CAAC,MACzD,IAAI,CAAC,UAAU,CAAmBA,OAAO,MAAM,CAAC,MAChD,IAAI,CAAC,gBAAgB,CAAmBA,OAAO,MAAM,CAAC,MACtD,IAAI,CAAC,UAAU,CAAG,GAClB,IAAI,CAAC,iBAAiB,CAAG,EACzB,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,EACZ,IAAI,CAAC,cAAc,CAAC,YAAsB,EAC1C,IAAI,CAAC,eAAe,EACtB,CACA,oBAAoB,CAAgB,CAAE,CAChC,IAAI,CAAC,iBAAiB,GAAK,IAE/B,IAAI,CAAC,iBAAiB,CAAG,EACzB,IAAI,CAAC,eAAe,GACtB,CACA,gBAAgB,CAAY,CAAE,CAC5B,IAAI,CAAC,iBAAiB,CAAG,EAAa,WAAW,CACjD,IAAI,CAAC,uBAAuB,CAAG,KAAa,UAAU,CAAC,sBAAsB,CAC7E,IAAI,CAAC,eAAe,EACtB,CACA,aAAa,CAAS,CAAE,CAClB,IAAI,CAAC,UAAU,GAAK,IAExB,IAAI,CAAC,UAAU,CAAG,EAClB,IAAI,CAAC,eAAe,GACtB,CACA,eAAe,CAAW,CAAE,CACtB,IAAI,CAAC,YAAY,GAAK,IAE1B,IAAI,CAAC,YAAY,CAAG,EACpB,IAAI,CAAC,aAAa,CAAG,GAAqB,CAAC,EAAY,CACvD,IAAI,CAAC,eAAe,GACtB,CACA,YAAY,CAAQ,CAAE,CAAO,CAAE,CAAK,CAAE,CAAW,CAAE,CACjD,IAAM,EAAW,IAAI,CAAC,WAAW,CAAC,EAAU,EAAS,GACrD,EAAY,WAAW,CAAC,EAC1B,CACA,YAAY,CAAQ,CAAE,CAAO,CAAE,CAAK,CAAE,CAAQ,CAAE,KAjDrB,EAAgB,EAAW,CAkD/C,GAAS,UAAU,GACtB,QAAiB,EAAU,EAAQ,aAAa,EAChD,IAAI,CAAC,kBAAkB,CAAC,IAE1B,EAAW,GAAY,EAAS,QAAQ,CACxC,IAAM,GAvDmB,EAwDvB,EAAS,UAAU,CAxDoB,EAyDvC,EAAQ,UAAU,CAzDgC,EA0DlD,EAAM,IAAI,CAzDP,GAAkB,GAAK,GAAa,GAAK,GAAS,GAAK,AA0D1D,EAAM,YAAY,EA1DqD,EA2DvE,CAAkB,CAAC,EAAS,SAE1B,IAAI,CAAC,UAAU,CAAC,EAAI,EAExB,KAAI,CAAC,UAAU,CAAC,EAAI,CAAG,IAAI,CAAC,eAAe,CAAC,EAAU,EAAS,EAAO,EAAQ,EADrE,IAAI,CAAC,UAAU,CAAC,EAAI,AAG/B,CACA,gBAAgB,CAAQ,CAAE,CAAO,CAAE,CAAK,CAAE,CAAQ,CAAE,CAClD,IAAM,EAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CACzB,EAAU,IAAI,CAAC,0BAA0B,CAAC,GAC1C,EAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EACxD,EAAU,CAAC,EAAE,CAAC,SAAS,CAAG,IAAI,CAAC,YAAY,GAAK,sBAAgC,CAAG,EAAI,IAAI,CAAC,UAAU,CACtG,IAAM,EAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,GAAS,QAAQ,CAC/D,EAAa,CAGjB,OAAQ,CACN,OAAQ,IAAI,CAAC,UAAU,CAAC,EAAQ,MAAM,CAAC,MAAM,EAC7C,WAAY,EAAQ,MAAM,CAAC,UAAU,CAErC,SACF,EACA,SAAU,CACR,OAAQ,IAAI,CAAC,UAAU,CAAC,EAAQ,QAAQ,CAAC,MAAM,EAC/C,WAAY,EAAQ,QAAQ,CAAC,UAAU,CACvC,QAAS,CACX,EACA,UAAW,CACT,WACA,SAAU,EAAM,QAAQ,AAC1B,EACA,SACA,YAAa,CACX,MAAO,IAAI,CAAC,iBAAiB,AAC/B,EAEA,MAAO,eACT,EAUA,OATI,IAAI,CAAC,uBAAuB,EAC9B,GAAW,YAAY,CAAG,CACxB,GAAG,IAAI,CAAC,aAAa,CACrB,OAAQ,uBACR,kBAAmB,EAAM,SAAS,CAClC,aAAc,EAAM,SAAS,CAAG,OAAS,QAC3C,GAEe,EAAO,oBAAoB,CAAC,EAE/C,CACA,WAAW,CAAI,CAAE,CACf,OAAO,IAAI,CAAC,YAAY,CAAC,EAAK,EAAI,IAAI,CAAC,aAAa,CAAC,EACvD,CACA,cAAc,CAAI,CAAE,CAClB,IAAM,EAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAI/B,OAHA,IAAI,CAAC,YAAY,CAAC,EAAK,CAAG,EAAO,kBAAkB,CAAC,CAClD,MACF,GACO,IAAI,CAAC,YAAY,CAAC,EAAK,AAChC,CACA,mBAAmB,CAAQ,CAAE,CAC3B,IAAM,EAAS,EAAE,CACb,EAAQ,EACN,EAAgBA,OAAO,IAAI,CAAC,EAAS,UAAU,EAAE,IAAI,GAC3D,IAAK,IAAIK,EAAI,EAAGA,EAAI,EAAc,MAAM,CAAEA,IAAK,CAC7C,IAAM,EAAY,EAAS,UAAU,CAAC,CAAa,CAACA,EAAE,CAAC,AACvD,EAAM,CAAC,IAAQ,CAAG,EAAU,QAAQ,CACpC,CAAM,CAAC,IAAQ,CAAG,EAAU,MAAM,CAClC,CAAM,CAAC,IAAQ,CAAG,EAAU,MAAM,CAClC,CAAM,CAAC,IAAQ,CAAG,EAAU,MAAM,AACpC,CACA,IAAM,EAAY,EAAO,IAAI,CAAC,IAE9B,OADA,EAAS,UAAU,CAAG,QAAmB,EAAW,YAC7C,EAAS,UAAU,AAC5B,CACA,2BAA2B,CAAQ,CAAE,CACnC,GAAI,IAAI,CAAC,mBAAmB,CAAC,EAAS,UAAU,CAAC,CAC/C,OAAO,IAAI,CAAC,mBAAmB,CAAC,EAAS,UAAU,CAAC,CAEtD,IAAM,EAAsB,EAAE,CAyB9B,OAxBA,EAAS,OAAO,CAAC,OAAO,CAAC,AAAC,IACxB,IAAM,EAAc,CAClB,YAAa,EACb,SAAU,SACV,WAAY,EAAE,AAChB,EACM,EAAwB,EAAY,UAAU,CACpD,IAAK,IAAM,KAAK,EAAS,UAAU,CAAE,CACnC,IAAM,EAAY,EAAS,UAAU,CAAC,EAAE,AACpC,GAAU,MAAM,GAAK,IACvB,EAAY,WAAW,CAAG,EAAU,MAAM,CAC1C,EAAY,QAAQ,CAAG,EAAU,QAAQ,CAAG,WAAa,SACzD,EAAsB,IAAI,CAAC,CACzB,eAAgB,EAAU,QAAQ,CAClC,OAAQ,EAAU,MAAM,CACxB,OAAQ,EAAU,MAAM,AAC1B,GAEJ,CACI,EAAsB,MAAM,EAC9B,EAAoB,IAAI,CAAC,EAE7B,GACA,IAAI,CAAC,mBAAmB,CAAC,EAAS,UAAU,CAAC,CAAG,EACzC,CACT,CACA,iBAAkB,KAlKO,EAAgB,EAmKvC,IAAM,GAnKiB,EAoKrB,IAAI,CAAC,YAAY,CApKoB,EAqKrC,IAAI,CAAC,iBAAiB,CApKnB,AAqKH,IAAI,CAAC,UAAU,EArKC,EAAI,GAAkB,EAAI,AAsK1C,IAAI,CAAC,uBAAuB,EAtK8B,EAAI,EAwK5D,AAAC,KAAI,CAAC,gBAAgB,CAAC,EAAI,EAC7B,KAAI,CAAC,gBAAgB,CAAC,EAAI,CAAmBL,OAAO,MAAM,CAAC,KAAI,EAEjE,IAAI,CAAC,UAAU,CAAG,IAAI,CAAC,gBAAgB,CAAC,EAAI,AAC9C,CACA,SAAU,CACR,IAAI,CAAC,SAAS,CAAG,KACjB,IAAI,CAAC,mBAAmB,CAAG,IAC7B,CACF,CAEA,EAAe,SAAS,CAAG,CACzB,KAAM,CAAC,iBAA0B,CAAC,CAClC,KAAM,UACR,E,+CCvMA,OAAM,EACJ,aAAc,CACZ,IAAI,CAAC,QAAQ,CAAG,EAAE,CAClB,IAAI,CAAC,YAAY,CAAG,EAAE,CACtB,IAAI,CAAC,WAAW,CAAG,CACrB,CACF,CCDA,MAAM,EACJ,KAAK,CAAQ,CAAE,CAAkB,CAAE,CACjC,IAAI,CAAC,SAAS,CAAG,EACjB,IAAI,CAAC,mBAAmB,CAAG,CAC7B,CACA,cAAc,CAA0B,CAAE,CAAkB,CAAE,CAAS,CAAEH,CAAI,CAAE,CAAU,CAAE,CACzF,IAAM,EAAW,IAAI,CAAC,SAAS,CACzB,EAAiB,IAAI,CAAC,mBAAmB,CAC7C,GAEI,EAAiB,EAAS,OAAO,CAAC,YAAY,CAClD,EAAmB,MAAM,EAa3B,OAXA,EAAS,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAClD,CACE,QAAS,EACT,OAAQ,CACV,EACA,CACE,QAAS,EACT,OAAQ,CACV,EACAA,GAEK,CACT,CACA,gBAAgB,CAAY,CAAE,EAAQ,EAAI,CAAE,CAAU,CAAE,CAAQ,CAAE,CAEhE,IAAM,EAAkB,AADG,IAAI,CAAC,mBAAmB,CACR,kBAAkB,CAAC,EAE9D,GAAgB,UAAU,CADP,IAAI,CAAC,aAAa,CAAC,EAAc,EAAO,GAE3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,GACxC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,CAAC,GACvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EACrC,CACA,kBAAmB,CACjB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EACtC,CAOA,oBAAoB,CAAY,CAAE,CAChC,IAAM,EAAkB,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,UACpE,AAAI,EAAgB,QAAQ,CAAC,EAAE,CACtB,EAAgB,QAAQ,CAAC,EAAE,CAAC,iBAAiB,GAE/C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CACxC,EAAa,aAAa,CAAC,EAAE,CAAC,MAAM,CAExC,CACA,cAAc,CAAY,CAAE,CAAK,CAAE,CAAU,CAAE,KAqCzC,CApCA,AAAiB,YAAjB,OAAO,GACT,GAAQ,EAAQ,OAAS,CAAG,QAAU,AAAV,EAE9B,IAAM,EAAqB,IAAI,CAAC,mBAAmB,CAC7C,EAAkB,EAAmB,kBAAkB,CAAC,GACxD,EAAmB,EAAa,aAAa,CAAC,GAAG,CACrD,CAAC,EAAS,KACR,IACI,EACA,EAFE,EAAU,EAAgB,QAAQ,CAAC,EAAE,CAMzC,EAHE,EAEwB,AADH,EAAQ,iBAAiB,GACP,UAAU,GAG5C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,GAAS,UAAU,CAAC,CAC7D,cAAe,CACjB,GAEE,EAAgB,YAAY,CAAC,EAAE,GACjC,EAAgB,EAChB,EAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAC1C,EAAgB,YAAY,CAAC,EAAE,GAGnC,IAAM,EAAS,EAAQ,SAAW,CAAG,QAAU,OAE/C,OADA,GAAe,GAAa,EAAmB,iBAAiB,AAAD,EACxD,CACL,OACA,gBACA,aACA,QAAS,QACT,QACF,CACF,GAOF,GAJK,GAAa,OAAO,EAAI,EAAa,KAAK,AAAD,GAAM,CAAC,EAAa,mBAAmB,GACnF,EAAa,yBAAyB,GACtC,EAAa,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAG,EAAgB,IAAI,CAAG,EAAI,GAE/E,EAAa,mBAAmB,CAAE,CACpC,IAAM,EAAgB,EAAQ,WAAa,CAAG,QAAU,OAClD,EAAc,EAAQ,SAAW,CAAG,QAAU,OACpD,EAAyB,CACvB,KAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAa,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAC7F,eAAgB,QAChB,gBACA,gBAAiB,EACjB,cACA,aAAc,OAChB,CACF,CAKA,MAJmB,CACjB,mBACA,wBACF,CAEF,CACA,MAAM,CAAY,CAAE,EAAQ,EAAI,CAAE,CAAU,CAAE,CAAQ,CAAE,CACtD,GAAI,CAAC,EACH,OACF,GAAM,CAAE,KAAG,CAAE,SAAO,CAAE,CAAG,IAAI,CAAC,SAAS,CACjC,EAAS,EAAI,MAAM,CAEzB,GADmB,AAA2B,OAA3B,EAAQ,cAAc,CACzB,CACd,IAAM,EAAiB,EAAO,oBAAoB,GAC5C,EAAuB,IAAI,CAAC,aAAa,CAAC,EAAc,EAAO,GAC/D,EAAc,EAAe,eAAe,CAAC,GACnD,EAAY,WAAW,CAAC,EAAS,CAAC,CAAE,EAAS,CAAC,CAAE,EAAS,KAAK,CAAE,EAAS,MAAM,CAAE,EAAG,GACpF,EAAY,GAAG,GACf,IAAM,EAAc,EAAe,MAAM,GACzC,EAAO,KAAK,CAAC,MAAM,CAAC,CAAC,EAAY,CACnC,MACE,IAAI,CAAC,eAAe,CAAC,EAAc,EAAO,EAAY,EAE1D,CACA,oBAAoB,CAAY,CAAE,CAChC,EAAa,MAAM,CAAG,GACtB,IAAM,EAAkB,IAAI,EAoC5B,OAnCA,EAAa,aAAa,CAAC,OAAO,CAAC,CAAC,EAAc,KAChD,GAAI,QAAiB,CAAC,EAAa,QAAQ,EAAG,CAC5C,IAAM,EAAU,EAAa,QAAQ,CAAC,UAAU,CAC9C,UAEI,EAAY,EAAa,WAAW,CAAG,gBAAkB,SAC/D,GAAI,CACF,EAAQ,SAAS,CAAC,CAChB,OAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAEjC,MAAOS,gBAAgB,eAAe,CAAGA,gBAAgB,QAAQ,CAAGA,gBAAgB,iBAAiB,CAAGA,gBAAgB,QAAQ,CAChI,OAAQ,aACR,WACF,EACF,CAAE,MAAOC,EAAG,CACVC,QAAQ,KAAK,CAACD,EAChB,CACA,EAAgB,QAAQ,CAAC,EAAE,CAAG,CAChC,CAEA,GADA,EAAgB,IAAI,CAAG,EAAa,MAAM,CAAC,SAAS,CAChD,EAAa,MAAM,CAAC,SAAS,CAAE,CACjC,IAAM,EAAc,IAAI,GAAa,CAAC,CACpC,MAAO,EACP,OAAQ,EACR,YAAa,CACf,EACA,GAAgB,YAAY,CAAC,EAAE,CAAG,CACpC,CACF,GACI,EAAgB,IAAI,GACtB,EAAgB,WAAW,CAAG,EAC1B,EAAa,mBAAmB,EAClC,GAAa,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAG,IAGnD,CACT,CACA,uBAAuB,CAAe,CAAE,CACtC,EAAgB,QAAQ,CAAC,OAAO,CAAC,AAAC,IAChC,EAAQ,WAAW,EACrB,GACA,EAAgB,YAAY,CAAC,OAAO,CAAC,AAAC,IACpC,EAAQ,OAAO,EACjB,GACA,EAAgB,YAAY,CAAC,MAAM,CAAG,EACtC,EAAgB,QAAQ,CAAC,MAAM,CAAG,CACpC,CACA,0BAA0B,CAAY,CAAE,CACtC,IAAM,EAAkB,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EAChE,GAAa,mBAAmB,EAAI,EAAgB,IAAI,EAC1D,GAAa,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAG,EAE1D,CACA,sBAAsB,CAAY,CAAE,CAClC,IAAM,EAAkB,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,EACpE,GAAgB,KAAK,CAAG,EAAa,KAAK,CAC1C,EAAgB,MAAM,CAAG,EAAa,MAAM,CACxC,EAAgB,IAAI,EACtB,EAAa,aAAa,CAAC,OAAO,CAAC,CAAC,EAAc,KAChD,IAAM,EAAc,EAAgB,YAAY,CAAC,EAAE,CACnD,GAAa,OACX,EAAa,MAAM,CAAC,KAAK,CACzB,EAAa,MAAM,CAAC,MAAM,CAC1B,EAAa,MAAM,CAAC,WAAW,CAEnC,EAEJ,CACF,CC3MA,MAAM,UAA8B,GAAkB,CACpD,YAAY,CAAQ,CAAE,CACpB,KAAK,CAAC,GACN,IAAI,CAAC,OAAO,CAAG,IAAI,EACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAU,IAAI,CAClC,CACF,CAEA,EAAsB,SAAS,CAAG,CAChC,KAAM,CAAC,iBAA0B,CAAC,CAClC,KAAM,cACR,CCbA,OAAM,EACJ,aAAc,CACZ,IAAI,CAAC,eAAe,CAAmBP,OAAO,MAAM,CAAC,KACvD,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,CACd,CACA,eAAe,CAAO,CAAE,CACtB,OAAO,IAAI,CAAC,eAAe,CAAC,EAAQ,UAAU,CAAC,EAAI,IAAI,CAAC,qBAAqB,CAAC,EAChF,CACA,sBAAsB,CAAO,CAAE,CAC7B,IAAM,EAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CACzB,EAAa,EAAQ,SAAS,CAAC,GAAG,CAAC,AAAC,GAAU,EAAO,qBAAqB,CAAC,CAAE,QAAS,CAAM,IAMlG,OAJA,IAAI,CAAC,eAAe,CAAC,EAAQ,UAAU,CAAC,CAAG,CACzC,aACA,SAAU,EAAO,oBAAoB,CAHZ,CAAE,iBAAkB,CAAW,EAI1D,EACO,IAAI,CAAC,eAAe,CAAC,EAAQ,UAAU,CAAC,AACjD,CACA,SAAU,CACR,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,eAAe,CAAG,IACzB,CACF,CAEA,EAAgB,SAAS,CAAG,CAC1B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,QACR,ECjCA,IAAM,EAAsB,CAAC,CAC7B,GAAoB,MAAM,CAAG,CAC3B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,CACF,EACA,EAAoB,GAAG,CAAG,CACxB,MAAO,CACL,UAAW,YACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACb,CACF,EACA,EAAoB,QAAQ,CAAG,CAC7B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,CACF,EACA,EAAoB,MAAM,CAAG,CAC3B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,MACX,UAAW,gBACX,UAAW,KACb,CACF,EACA,EAAoB,OAAO,CAAG,CAC5B,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,MACX,UAAW,gBACX,UAAW,KACb,CACF,EACA,EAAoB,IAAI,CAAG,CACzB,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,OACX,UAAW,OACX,UAAW,KACb,CACF,EACA,CAAmB,CAAC,aAAa,CAAG,CAClC,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,YACX,UAAW,sBACX,UAAW,KACb,CACF,EACA,CAAmB,CAAC,UAAU,CAAG,CAC/B,MAAO,CACL,UAAW,MACX,UAAW,MACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,YACX,UAAW,MACX,UAAW,KACb,CACF,EACA,CAAmB,CAAC,aAAa,CAAG,CAClC,MAAO,CACL,UAAW,MACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,YACX,UAAW,gBACX,UAAW,KACb,CACF,EACA,EAAoB,KAAK,CAAG,CAC1B,MAAO,CACL,UAAW,OACX,UAAW,sBACX,UAAW,KACb,EACA,MAAO,CACL,UAAW,OACX,UAAW,gBACX,UAAW,KACb,CACF,CCpHA,OAAM,GACJ,aAAc,CACZ,IAAI,CAAC,YAAY,CAAG,IAAI,GAAK,CAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAG,EAC5B,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,GAAG,CAAG,CACb,CAKA,gBAAgB,CAAK,CAAE,CAErB,MAAO,CACL,CACE,OAAQ,aACR,UAAW,EACX,MALU,CAAmB,CAAC,EAAM,SAAS,CAAC,EAAI,EAAoB,MAAM,AAM9E,EACD,AACH,CACA,SAAU,CACR,IAAI,CAAC,GAAG,CAAG,IACb,CACF,CAEA,GAAe,SAAS,CAAG,CACzB,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,OACR,E,0BCpCA,IAAM,GAA+B,CACnC,KAAM,QACN,OAAO,CAAM,CAAE,CAAU,CAAE,CAAG,EAC5B,IAAM,EAAW,EAAO,QAAQ,CAC1B,EAAQ,AAAC,CAAoB,EAApB,EAAO,UAAU,AAAG,EAAM,CAAqB,EAArB,EAAO,WAAW,AAAG,EACxD,EAAgB,EAAS,UAAU,CAAG,EAC5C,EAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAC3B,CAAE,QAAS,CAAW,EACtB,EACA,CACE,OAAQ,EACR,aAAc,EAAO,WAAW,CAChC,YAAa,EAAO,WAAW,CAAG,CACpC,EACA,CACE,MAAO,EAAO,UAAU,CACxB,OAAQ,EAAO,WAAW,CAC1B,mBAAoB,CACtB,EAEJ,CACF,ECrBM,GAAe,CACnB,iBAAkB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAE,EACjE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAE,EAClE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAE,EAClE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAE,EAClE,iBAAkB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAE,EACjE,kBAAmB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAE,EACnE,iBAAkB,CAAE,WAAY,GAAI,WAAY,EAAG,YAAa,CAAE,CACpE,EACM,GAAmB,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAE,EAClE,GAAqC,CACzC,KAAM,aACN,OAAO,CAAM,CAAE,CAAU,CAAE,CAAG,EAC5B,IAAI,EAAW,EAAO,UAAU,CAC5B,EAAY,EAAO,WAAW,CAC5B,EAAY,EAAY,CAAC,EAAO,MAAM,CAAC,EAAI,GACjD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAO,QAAQ,CAAC,MAAM,CAAE,IAAK,CAC/C,IAAM,EAAc,EAAO,QAAQ,CAAC,EAAE,CAChC,EAAcI,KAAK,IAAI,CAAC,EAAW,EAAU,UAAU,EAAI,EAAU,UAAU,CACrF,EAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAC3B,CACE,QAAS,EACT,SAAU,CACZ,EACA,EACA,CACE,OAAQ,EACR,aACF,EACA,CACE,MAAOA,KAAK,IAAI,CAAC,EAAW,EAAU,UAAU,EAAI,EAAU,UAAU,CACxE,OAAQA,KAAK,IAAI,CAAC,EAAY,EAAU,WAAW,EAAI,EAAU,WAAW,CAC5E,mBAAoB,CACtB,GAEF,EAAWA,KAAK,GAAG,CAAC,GAAY,EAAG,GACnC,EAAYA,KAAK,GAAG,CAAC,GAAa,EAAG,EACvC,CACF,CACF,ECvCM,GAAyB,CAC7B,KAAM,QACN,OAAO,CAAM,CAAE,CAAU,CAAE,CAAG,EAC5B,IAAM,EAAW,EAAO,QAAQ,CAChC,GAAI,CAAC,EACH,OACF,IAAM,EAAQA,KAAK,GAAG,CAAC,EAAW,KAAK,CAAE,EAAO,aAAa,EAAI,EAAO,UAAU,EAC5E,EAASA,KAAK,GAAG,CAAC,EAAW,MAAM,CAAE,EAAO,cAAc,EAAI,EAAO,WAAW,EAChF,EAAqB,AAAqB,gCAArB,EAAO,SAAS,CAC3C,EAAI,MAAM,CAAC,KAAK,CAAC,0BAA0B,CACzC,CAAE,OAAQ,CAAS,EACnB,CAAE,QAAS,EAAY,oBAAmB,EAC1C,CACE,QACA,QACF,EAEJ,CACF,EChBM,GAAyB,CAC7B,KAAM,QACN,OAAO,CAAM,CAAE,CAAU,CAAE,CAAG,EAC5B,GAAuB,MAAM,CAAC,EAAQ,EAAY,EACpD,CACF,CCPA,OAAM,GACJ,YAAY,CAAM,CAAE,CAClB,IAAI,CAAC,MAAM,CAAG,EACd,IAAI,CAAC,OAAO,CAAG,EAAO,aAAa,CAAC,CAAE,UAAW,QAAS,GAC1D,IAAI,CAAC,SAAS,CAAG,CAAC,CACpB,CACA,mBAAmB,CAAM,CAAE,CACzB,IAAI,EAAW,IAAI,CAAC,SAAS,CAAC,EAAO,CAgDrC,OA/CK,IACC,AAAC,IAAI,CAAC,kBAAkB,EAC1B,KAAI,CAAC,kBAAkB,CAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CACvD,KAEE;AACZ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,CAAC,AAEb,EAAC,EAEH,EAAW,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAC1C,OAAQ,OACR,OAAQ,CACN,OAAQ,IAAI,CAAC,kBAAkB,CAC/B,WAAY,YACd,EACA,SAAU,CACR,OAAQ,IAAI,CAAC,kBAAkB,CAC/B,WAAY,eACZ,QAAS,CAAC,CAAE,QAAO,EAAE,AACvB,CACF,GACA,IAAI,CAAC,SAAS,CAAC,EAAO,CAAG,GAEpB,CACT,CAMA,eAAe,CAAO,CAAE,CACtB,IAAM,EAAW,IAAI,CAAC,kBAAkB,CAAC,EAAQ,MAAM,EACvD,GAAI,AAAsB,OAAtB,EAAQ,SAAS,EAAa,AAAsB,OAAtB,EAAQ,SAAS,CACjD,MAAM,AAAID,MAAM,oEAElB,IAAI,EAAa,EACX,EAAkB,EAAQ,kBAAkB,EAAI,EAChD,EAAiB,EAAQ,KAAK,CAAGG,gBAAgB,iBAAiB,CACxE,GAAI,CAAC,EAAgB,CACnB,IAAM,EAAuB,CAC3B,KAAM,CACJ,MAAOF,KAAK,IAAI,CAAC,EAAQ,KAAK,CAAG,GACjC,OAAQA,KAAK,IAAI,CAAC,EAAQ,MAAM,CAAG,GACnC,mBAAoB,CACtB,EACA,OAAQ,EAAQ,MAAM,CACtB,MAAOE,gBAAgB,eAAe,CAAGA,gBAAgB,QAAQ,CAAGA,gBAAgB,iBAAiB,CACrG,cAAe,EAAQ,aAAa,CAAG,CACzC,EACA,EAAa,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,EACzC,CACA,IAAM,EAAiB,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,GACnD,EAAkB,EAAS,kBAAkB,CAAC,GACpD,IAAK,IAAIG,EAAa,EAAGA,EAAa,EAAiB,EAAEA,EAAY,CACnE,IAAIZ,EAAU,EAAQ,UAAU,CAAC,CAC/B,aAAc,EACd,cAAe,EACf,UAAW,KACX,eAAgBY,EAChB,gBAAiB,CACnB,GACI,EAAc,KAClB,IAAK,IAAIJ,EAAI,EAAGA,EAAI,EAAQ,aAAa,CAAE,EAAEA,EAAG,CAC9C,IAAM,EAAU,EAAW,UAAU,CAAC,CACpC,aAAc,IACd,cAAe,EACf,UAAW,KACX,eAAgBI,EAChB,gBAAiB,CACnB,GACM,EAAc,EAAe,eAAe,CAAC,CACjD,iBAAkB,CAAC,CACjB,KAAM,EACN,QAAS,QACT,OAAQ,QACR,WAAY,CAAE,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAE,CACvC,EAAE,AACJ,GACM,EAAY,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAC5C,OAAQ,EACR,QAAS,CAAC,CACR,QAAS,EACT,SAAU,IAAI,CAAC,OAAO,AACxB,EAAG,CACD,QAAS,EACT,SAAUZ,CACZ,EAAE,AACJ,GACA,EAAY,WAAW,CAAC,GACxB,EAAY,YAAY,CAAC,EAAG,GAC5B,EAAY,IAAI,CAAC,EAAG,EAAG,EAAG,GAC1B,EAAY,GAAG,GACfA,EAAU,CACZ,CACF,CACA,GAAI,CAAC,EAAgB,CACnB,IAAM,EAAe,CACnB,MAAOO,KAAK,IAAI,CAAC,EAAQ,KAAK,CAAG,GACjC,OAAQA,KAAK,IAAI,CAAC,EAAQ,MAAM,CAAG,GACnC,mBAAoB,CACtB,EACA,IAAK,IAAI,EAAI,EAAG,EAAI,EAAQ,aAAa,CAAE,EAAE,EAC3C,EAAe,oBAAoB,CAAC,CAClC,QAAS,EACT,SAAU,EAAI,CAChB,EAAG,CACD,UACA,SAAU,CACZ,EAAG,GACH,EAAa,KAAK,CAAGA,KAAK,IAAI,CAAC,EAAa,KAAK,CAAG,GACpD,EAAa,MAAM,CAAGA,KAAK,IAAI,CAAC,EAAa,MAAM,CAAG,EAE1D,CAKA,OAJA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAe,MAAM,GAAG,EAC9C,AAAC,GACH,EAAW,OAAO,GAEb,CACT,CACF,CC7IA,MAAM,GACJ,YAAY,CAAQ,CAAE,CACpB,IAAI,CAAC,eAAe,CAAG,EAAE,CACzB,IAAI,CAAC,WAAW,CAAmBJ,OAAO,MAAM,CAAC,MACjD,IAAI,CAAC,YAAY,CAAmBA,OAAO,MAAM,CAAC,MAClD,IAAI,CAAC,cAAc,CAAmBA,OAAO,MAAM,CAAC,MACpD,IAAI,CAAC,gBAAgB,CAAmBA,OAAO,MAAM,CAAC,MACtD,IAAI,CAAC,QAAQ,CAAG,CACd,MAAO,GACP,OAAQ,GACR,MAAO,GACP,WAAY,EACd,EACA,IAAI,CAAC,SAAS,CAAG,CACnB,CACA,cAAc,CAAG,CAAE,CACjB,IAAI,CAAC,IAAI,CAAG,CACd,CACA,WAAW,CAAM,CAAE,CACjB,GAAI,EAAO,mBAAmB,CAAE,CAC9B,IAAM,EAAmBI,KAAK,GAAG,CAAC,EAAO,UAAU,CAAE,EAAO,WAAW,CACvE,GAAO,aAAa,CAAGA,KAAK,KAAK,CAACA,KAAK,IAAI,CAAC,IAAqB,CACnE,CACA,IAAI,EAAQE,gBAAgB,eAAe,CAAGA,gBAAgB,QAAQ,AACxC,gBAA1B,EAAO,cAAc,GACvB,GAASA,gBAAgB,iBAAiB,CAC1C,GAASA,gBAAgB,QAAQ,EAEnC,IAAM,EAAY,EAAY,CAAC,EAAO,MAAM,CAAC,EAAI,CAAE,WAAY,EAAG,WAAY,EAAG,YAAa,CAAE,EAC1F,EAAQF,KAAK,IAAI,CAAC,EAAO,UAAU,CAAG,EAAU,UAAU,EAAI,EAAU,UAAU,CAClF,EAASA,KAAK,IAAI,CAAC,EAAO,WAAW,CAAG,EAAU,WAAW,EAAI,EAAU,WAAW,CACtF,EAAoB,CACxB,MAAO,EAAO,KAAK,CACnB,KAAM,CAAE,QAAO,QAAO,EACtB,OAAQ,EAAO,MAAM,CACrB,YAAa,EAAO,WAAW,CAC/B,cAAe,EAAO,aAAa,CACnC,UAAW,EAAO,SAAS,CAC3B,OACF,EACM,EAAa,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAWlD,OAVA,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAAG,EAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KACjC,EAAO,EAAE,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC7C,EAAO,EAAE,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC7C,EAAO,EAAE,CAAC,UAAW,IAAI,CAAC,eAAe,CAAE,IAAI,EAC/C,EAAO,EAAE,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC7C,EAAO,EAAE,CAAC,gBAAiB,IAAI,CAAC,eAAe,CAAE,IAAI,EACrD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAE5B,IAAI,CAAC,cAAc,CAAC,GACb,CACT,CACA,eAAe,CAAM,CAAE,CACrB,IAAM,EAAa,IAAI,CAAC,YAAY,CAAC,GAChC,IAED,IAAI,CAAC,QAAQ,CAAC,EAAO,cAAc,CAAC,EACtC,IAAI,CAAC,QAAQ,CAAC,EAAO,cAAc,CAAC,CAAC,MAAM,CAAC,EAAQ,EAAY,IAAI,CAAC,IAAI,EAEvE,EAAO,mBAAmB,EAAI,EAAO,aAAa,CAAG,GACvD,IAAI,CAAC,eAAe,CAAC,GAEzB,CACA,eAAe,CAAM,CAAE,CACrB,IAAM,EAAa,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAC3C,IACF,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAAG,KAC/B,EAAW,OAAO,GAEtB,CACA,gBAAgB,CAAM,CAAE,CAClB,AAAC,IAAI,CAAC,gBAAgB,EACxB,KAAI,CAAC,gBAAgB,CAAG,IAAI,GAAmB,IAAI,CAAC,IAAI,CAAC,MAAM,GAEjE,IAAM,EAAa,IAAI,CAAC,YAAY,CAAC,GACrC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EACvC,CACA,gBAAgB,CAAM,CAAE,CACtB,EAAO,GAAG,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC9C,EAAO,GAAG,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC9C,EAAO,GAAG,CAAC,UAAW,IAAI,CAAC,eAAe,CAAE,IAAI,EAChD,EAAO,GAAG,CAAC,SAAU,IAAI,CAAC,cAAc,CAAE,IAAI,EAC9C,EAAO,GAAG,CAAC,gBAAiB,IAAI,CAAC,eAAe,CAAE,IAAI,EACtD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAS,GAClE,IAAI,CAAC,cAAc,CAAC,EACtB,CACA,eAAe,CAAM,CAAE,CACrB,IAAM,EAAa,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,CAC1C,EAEM,GAAW,KAAK,GAAK,EAAO,UAAU,EAAI,EAAW,MAAM,GAAK,EAAO,WAAW,AAAD,IAC1F,IAAI,CAAC,gBAAgB,CAAC,EAAO,GAAG,CAAC,CAAG,KACpC,IAAI,CAAC,cAAc,CAAC,EAAO,GAAG,CAAC,CAAG,KAClC,IAAI,CAAC,cAAc,CAAC,GACpB,IAAI,CAAC,UAAU,CAAC,IALhB,IAAI,CAAC,UAAU,CAAC,EAOpB,CACA,aAAa,CAAO,CAAE,CAEpB,OADA,IAAI,CAAC,YAAY,CAAC,EAAQ,WAAW,CAAC,CAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GACjE,IAAI,CAAC,YAAY,CAAC,EAAQ,WAAW,CAAC,AAC/C,CACA,cAAc,CAAO,CAAE,CACrB,OAAO,IAAI,CAAC,YAAY,CAAC,EAAQ,WAAW,CAAC,EAAI,IAAI,CAAC,YAAY,CAAC,EACrE,CACA,aAAa,CAAM,CAAE,CACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAO,GAAG,CAAC,EAAI,IAAI,CAAC,UAAU,CAAC,EACzD,CACA,oBAAoB,CAAO,CAAE,CAC3B,OAAO,IAAI,CAAC,cAAc,CAAC,EAAQ,GAAG,CAAC,EAAI,IAAI,CAAC,uBAAuB,CAAC,EAC1E,CACA,wBAAwB,CAAO,CAAE,CAC/B,IAAM,EAAS,EAAQ,MAAM,CACvB,EAAc,EAAO,GAAG,CAK9B,OAJA,IAAI,CAAC,cAAc,CAAC,EAAY,CAAG,IAAI,GAAS,CAAC,CAC/C,EAAG,EACH,EAAG,EAAO,KAAK,AACjB,GACO,IAAI,CAAC,cAAc,CAAC,EAAY,AACzC,CACA,eAAe,CAAO,CAAE,CACtB,IAAM,EAAS,EAAQ,MAAM,CAC7B,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAO,GAAG,CAAC,EAAI,IAAI,CAAC,kBAAkB,CAAC,EACtE,CACA,mBAAmB,CAAO,CAAE,CAE1B,OADA,IAAI,CAAC,gBAAgB,CAAC,EAAQ,GAAG,CAAC,CAAG,IAAI,CAAC,YAAY,CAAC,GAAS,UAAU,GACnE,IAAI,CAAC,gBAAgB,CAAC,EAAQ,GAAG,CAAC,AAC3C,CACA,eAAe,CAAO,CAAE,CACtB,IAAM,EAAW,IAAI,CAAC,SAAS,CACzB,EAAiB,EAAS,GAAG,CAAC,MAAM,CAAC,oBAAoB,GACzD,EAAS,QAAc,GAAG,YAAY,EAC5C,GAAO,KAAK,CAAG,EAAQ,MAAM,CAAC,UAAU,CACxC,EAAO,MAAM,CAAG,EAAQ,MAAM,CAAC,WAAW,CAC1C,IAAM,EAAU,EAAO,UAAU,CAAC,UAqBlC,OApBA,EAAQ,SAAS,CAAC,CAChB,OAAQ,EAAS,GAAG,CAAC,MAAM,CAE3B,MAAOE,gBAAgB,QAAQ,CAAGA,gBAAgB,QAAQ,CAC1D,OAAQL,UAAU,GAAG,CAAC,wBAAwB,GAC9C,UAAW,eACb,GACA,EAAe,oBAAoB,CAAC,CAClC,QAAS,EAAS,OAAO,CAAC,YAAY,CAAC,EAAQ,MAAM,EACrD,OAAQ,CACN,EAAG,EACH,EAAG,CACL,CACF,EAAG,CACD,QAAS,EAAQ,iBAAiB,EACpC,EAAG,CACD,MAAO,EAAO,KAAK,CACnB,OAAQ,EAAO,MAAM,AACvB,GACA,EAAS,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAe,MAAM,GAAG,EACnD,CACT,CACA,UAAU,CAAO,CAAE,CACjB,IAAM,EAAe,IAAI,CAAC,cAAc,CAAC,GACnC,EAAmB,+BAAqC,CAAC,EAAa,KAAK,CAAE,EAAa,MAAM,EAChG,EAAU,EAAiB,OAAO,CACxC,EAAQ,SAAS,CAAC,EAAc,EAAG,GACnC,GAAM,CAAE,OAAK,CAAE,QAAM,CAAE,CAAG,EAEpB,EAAS,IAAIS,kBAAkB,AADnB,EAAQ,YAAY,CAAC,EAAG,EAAG,EAAO,GACL,IAAI,CAAC,MAAM,EAE1D,OADA,2BAAiC,CAAC,GAC3B,CAAE,SAAQ,QAAO,QAAO,CACjC,CACA,SAAU,CAGR,IAAK,IAAM,KAFX,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,AAAC,GAAW,IAAI,CAAC,eAAe,CAAC,IACtE,IAAI,CAAC,eAAe,CAAG,KACPV,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAChD,IAAM,EAAMW,OAAO,GACb,EAAY,IAAI,CAAC,cAAc,CAAC,EAAI,CAC1C,GAAW,UACX,IAAI,CAAC,cAAc,CAAC,EAAI,CAAG,IAC7B,CACA,IAAI,CAAC,IAAI,CAAG,KACZ,IAAI,CAAC,gBAAgB,CAAG,KACxB,IAAI,CAAC,WAAW,CAAG,KACnB,IAAI,CAAC,cAAc,CAAG,KACtB,IAAI,CAAC,gBAAgB,CAAG,KACxB,IAAI,CAAC,YAAY,CAAG,IACtB,CACF,CAEA,GAAiB,SAAS,CAAG,CAC3B,KAAM,CACJ,iBAA0B,CAC3B,CACD,KAAM,SACR,ECpLA,IAAM,GAAuB,IACxB,GAAa,CAChB,GAAY,CACZ,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACD,CACK,GAAqB,IAAI,GAAiB,CAAE,EAAoB,CAChE,GAAwB,CAACZ,EAAiB,EAAgB,EAAmB,CAC7E,GAAU,EAAE,CACZ,GAAc,EAAE,CAChB,GAAqB,EAAE,CAC7B,sBAA4B,CAAC,iBAA0B,CAAE,IACzD,sBAA4B,CAAC,gBAAyB,CAAE,IACxD,sBAA4B,CAAC,uBAAgC,CAAE,IAC/D,QAAc,IAAI,MAAyB,MAAuB,GAClE,OAAM,WAAuB,GAAgB,CAC3C,aAAc,CAQZ,KAAK,CAPgB,CACnB,KAAM,SACN,KAAM,UAAmB,CACzB,WACA,eACA,qBACF,EAEF,CACF,C,iECAA,IAAM,EAAa,IArDnB,MACE,YAAY,CAAa,CAAE,CACzB,IAAI,CAAC,WAAW,CAAmBC,OAAO,MAAM,CAAC,MACjD,IAAI,CAAC,aAAa,CAAG,GAAiB,CAAC,EACvC,IAAI,CAAC,gBAAgB,CAAG,EAC1B,CAMA,wBAAwB,CAAU,CAAE,CAAW,CAAE,CAC/C,IAAM,EAAS,OAAc,GAAG,YAAY,EAC5C,GAAO,KAAK,CAAG,EACf,EAAO,MAAM,CAAG,EAChB,IAAM,EAAU,EAAO,UAAU,CAAC,MAClC,MAAO,CAAE,SAAQ,SAAQ,CAC3B,CAQA,2BAA2B,CAAQ,CAAE,CAAS,CAAEF,EAAa,CAAC,CAAE,CAC9D,EAAWM,KAAK,IAAI,CAAC,EAAWN,EAAa,MAC7C,EAAYM,KAAK,IAAI,CAAC,EAAYN,EAAa,MAC/C,EAAW,SAAS,GACpB,EAAY,SAAS,GACrB,IAAM,EAAM,AAAC,IAAY,EAAC,EAAM,IAAa,EACzC,AAAC,KAAI,CAAC,WAAW,CAAC,EAAI,EACxB,KAAI,CAAC,WAAW,CAAC,EAAI,CAAG,EAAE,AAAD,EAE3B,IAAI,EAAmB,IAAI,CAAC,WAAW,CAAC,EAAI,CAAC,GAAG,GAIhD,OAHI,AAAC,GACH,GAAmB,IAAI,CAAC,uBAAuB,CAAC,EAAU,EAAS,EAE9D,CACT,CAKA,uBAAuB,CAAgB,CAAE,CACvC,GAAM,CAAE,OAAK,CAAE,QAAM,CAAE,CAAG,EAAiB,MAAM,CAEjD,IAAI,CAAC,WAAW,CADJ,AAAC,IAAS,EAAC,EAAM,IAAU,GAClB,CAAC,IAAI,CAAC,EAC7B,CACA,OAAQ,CACN,IAAI,CAAC,WAAW,CAAG,CAAC,CACtB,CACF,C"}
|
|
1
|
+
{"version":3,"file":"static/js/async/586.ffc417d5.js","sources":["webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/graphics/gpu/GpuGraphicsAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/scene/mesh/gpu/GpuMeshAdapter.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/batcher/gpu/GpuBatchAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/BindGroupSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/GpuBufferSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuColorMaskSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuDeviceSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuEncoderSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/buffer/UboBatch.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuUniformBatchPipe.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/pipeline/PipelineSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTarget.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetAdaptor.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/renderTarget/GpuRenderTargetSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/shader/GpuShaderSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuBlendModesToPixi.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/state/GpuStateSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadBufferImageResource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadCompressedTextureResource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadImageSource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/uploaders/gpuUploadVideoSource.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/utils/GpuMipmapGenerator.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/texture/GpuTextureSystem.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/gpu/WebGPURenderer.mjs","webpack://android-playground/../../node_modules/.pnpm/pixi.js@8.1.1/node_modules/pixi.js/lib/rendering/renderers/shared/texture/CanvasPool.mjs"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { getTextureBatchBindGroup } from '../../../rendering/batcher/gpu/getTextureBatchBindGroup.mjs';\nimport { MAX_TEXTURES } from '../../../rendering/batcher/shared/const.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../../rendering/high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../../rendering/high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { localUniformBitGroup2 } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup.mjs';\n\n\"use strict\";\nclass GpuGraphicsAdaptor {\n init() {\n const localUniforms = new UniformGroup({\n uTransformMatrix: { value: new Matrix(), type: \"mat3x3<f32>\" },\n uColor: { value: new Float32Array([1, 1, 1, 1]), type: \"vec4<f32>\" },\n uRound: { value: 0, type: \"f32\" }\n });\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"graphics\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n localUniformBitGroup2,\n roundPixelsBit\n ]\n });\n this.shader = new Shader({\n gpuProgram,\n resources: {\n // added on the fly!\n localUniforms\n }\n });\n }\n execute(graphicsPipe, renderable) {\n const context = renderable.context;\n const shader = context.customShader || this.shader;\n const renderer = graphicsPipe.renderer;\n const contextSystem = renderer.graphicsContext;\n const {\n geometry,\n instructions\n } = contextSystem.getContextRenderData(context);\n const encoder = renderer.encoder;\n encoder.setPipelineFromGeometryProgramAndState(\n geometry,\n shader.gpuProgram,\n graphicsPipe.state\n );\n encoder.setGeometry(geometry);\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.setBindGroup(0, globalUniformsBindGroup, shader.gpuProgram);\n const localBindGroup = renderer.renderPipes.uniformBatch.getUniformBindGroup(shader.resources.localUniforms, true);\n encoder.setBindGroup(2, localBindGroup, shader.gpuProgram);\n const batches = instructions.instructions;\n for (let i = 0; i < instructions.instructionSize; i++) {\n const batch = batches[i];\n shader.groups[1] = batch.bindGroup;\n if (!batch.gpuBindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n batch.gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n shader.gpuProgram,\n 1\n );\n }\n encoder.setBindGroup(1, batch.bindGroup, shader.gpuProgram);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n }\n destroy() {\n this.shader.destroy(true);\n this.shader = null;\n }\n}\n/** @ignore */\nGpuGraphicsAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"graphics\"\n};\n\nexport { GpuGraphicsAdaptor };\n//# sourceMappingURL=GpuGraphicsAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Matrix } from '../../../maths/matrix/Matrix.mjs';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';\nimport { warn } from '../../../utils/logging/warn.mjs';\n\n\"use strict\";\nclass GpuMeshAdapter {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"mesh\",\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: \"mat3x3<f32>\", value: new Matrix() }\n }\n }\n });\n }\n execute(meshPipe, mesh) {\n const renderer = meshPipe.renderer;\n let shader = mesh._shader;\n if (!shader) {\n shader = this._shader;\n shader.resources.uTexture = mesh.texture.source;\n shader.resources.uSampler = mesh.texture.source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = mesh.texture.textureMatrix.mapCoord;\n } else if (!shader.gpuProgram) {\n warn(\"Mesh shader has no gpuProgram\", mesh.shader);\n return;\n }\n const gpuProgram = shader.gpuProgram;\n if (gpuProgram.autoAssignGlobalUniforms) {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n if (gpuProgram.autoAssignLocalUniforms) {\n const localUniforms = meshPipe.localUniforms;\n shader.groups[1] = renderer.renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuMeshAdapter.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"mesh\"\n};\n\nexport { GpuMeshAdapter };\n//# sourceMappingURL=GpuMeshAdapter.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { compileHighShaderGpuProgram } from '../../high-shader/compileHighShaderToProgram.mjs';\nimport { colorBit } from '../../high-shader/shader-bits/colorBit.mjs';\nimport { generateTextureBatchBit } from '../../high-shader/shader-bits/generateTextureBatchBit.mjs';\nimport { roundPixelsBit } from '../../high-shader/shader-bits/roundPixelsBit.mjs';\nimport { Shader } from '../../renderers/shared/shader/Shader.mjs';\nimport { State } from '../../renderers/shared/state/State.mjs';\nimport { MAX_TEXTURES } from '../shared/const.mjs';\nimport { getTextureBatchBindGroup } from './getTextureBatchBindGroup.mjs';\n\n\"use strict\";\nconst tempState = State.for2d();\nclass GpuBatchAdaptor {\n init() {\n const gpuProgram = compileHighShaderGpuProgram({\n name: \"batch\",\n bits: [\n colorBit,\n generateTextureBatchBit(MAX_TEXTURES),\n roundPixelsBit\n ]\n });\n this._shader = new Shader({\n gpuProgram,\n groups: {\n // these will be dynamically allocated\n }\n });\n }\n start(batchPipe, geometry) {\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n const program = this._shader.gpuProgram;\n this._geometry = geometry;\n encoder.setGeometry(geometry);\n tempState.blendMode = \"normal\";\n renderer.pipeline.getPipeline(\n geometry,\n program,\n tempState\n );\n const globalUniformsBindGroup = renderer.globalUniforms.bindGroup;\n encoder.resetBindGroup(1);\n encoder.setBindGroup(0, globalUniformsBindGroup, program);\n }\n execute(batchPipe, batch) {\n const program = this._shader.gpuProgram;\n const renderer = batchPipe.renderer;\n const encoder = renderer.encoder;\n if (!batch.bindGroup) {\n const textureBatch = batch.textures;\n batch.bindGroup = getTextureBatchBindGroup(textureBatch.textures, textureBatch.count);\n }\n tempState.blendMode = batch.blendMode;\n const gpuBindGroup = renderer.bindGroup.getBindGroup(\n batch.bindGroup,\n program,\n 1\n );\n const pipeline = renderer.pipeline.getPipeline(\n this._geometry,\n program,\n tempState\n );\n batch.bindGroup._touch(renderer.textureGC.count);\n encoder.setPipeline(pipeline);\n encoder.renderPassEncoder.setBindGroup(1, gpuBindGroup);\n encoder.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);\n }\n destroy() {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n/** @ignore */\nGpuBatchAdaptor.extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor\n ],\n name: \"batch\"\n};\n\nexport { GpuBatchAdaptor };\n//# sourceMappingURL=GpuBatchAdaptor.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass BindGroupSystem {\n constructor(renderer) {\n this._hash = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getBindGroup(bindGroup, program, groupIndex) {\n bindGroup._updateKey();\n const gpuBindGroup = this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex);\n return gpuBindGroup;\n }\n _createBindGroup(group, program, groupIndex) {\n const device = this._gpu.device;\n const groupLayout = program.layout[groupIndex];\n const entries = [];\n const renderer = this._renderer;\n for (const j in groupLayout) {\n const resource = group.resources[j] ?? group.resources[groupLayout[j]];\n let gpuResource;\n if (resource._resourceType === \"uniformGroup\") {\n const uniformGroup = resource;\n renderer.ubo.updateUniformGroup(uniformGroup);\n const buffer = uniformGroup.buffer;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"buffer\") {\n const buffer = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(buffer),\n offset: 0,\n size: buffer.descriptor.size\n };\n } else if (resource._resourceType === \"bufferResource\") {\n const bufferResource = resource;\n gpuResource = {\n buffer: renderer.buffer.getGPUBuffer(bufferResource.buffer),\n offset: bufferResource.offset,\n size: bufferResource.size\n };\n } else if (resource._resourceType === \"textureSampler\") {\n const sampler = resource;\n gpuResource = renderer.texture.getGpuSampler(sampler);\n } else if (resource._resourceType === \"textureSource\") {\n const texture = resource;\n gpuResource = renderer.texture.getGpuSource(texture).createView({});\n }\n entries.push({\n binding: groupLayout[j],\n resource: gpuResource\n });\n }\n const layout = renderer.shader.getProgramData(program).bindGroups[groupIndex];\n const gpuBindGroup = device.createBindGroup({\n layout,\n entries\n });\n this._hash[group._key] = gpuBindGroup;\n return gpuBindGroup;\n }\n destroy() {\n for (const key of Object.keys(this._hash)) {\n this._hash[key] = null;\n }\n this._hash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nBindGroupSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"bindGroup\"\n};\n\nexport { BindGroupSystem };\n//# sourceMappingURL=BindGroupSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { fastCopy } from '../../shared/buffer/utils/fastCopy.mjs';\n\n\"use strict\";\nclass GpuBufferSystem {\n constructor() {\n this._gpuBuffers = /* @__PURE__ */ Object.create(null);\n this._managedBuffers = [];\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getGPUBuffer(buffer) {\n return this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n }\n updateBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid] || this.createGPUBuffer(buffer);\n const data = buffer.data;\n if (buffer._updateID && data) {\n buffer._updateID = 0;\n this._gpu.device.queue.writeBuffer(\n gpuBuffer,\n 0,\n data.buffer,\n 0,\n // round to the nearest 4 bytes\n (buffer._updateSize || data.byteLength) + 3 & ~3\n );\n }\n return gpuBuffer;\n }\n /** dispose all WebGL resources of all managed buffers */\n destroyAll() {\n for (const id in this._gpuBuffers) {\n this._gpuBuffers[id].destroy();\n }\n this._gpuBuffers = {};\n }\n createGPUBuffer(buffer) {\n if (!this._gpuBuffers[buffer.uid]) {\n buffer.on(\"update\", this.updateBuffer, this);\n buffer.on(\"change\", this.onBufferChange, this);\n buffer.on(\"destroy\", this.onBufferDestroy, this);\n }\n const gpuBuffer = this._gpu.device.createBuffer(buffer.descriptor);\n buffer._updateID = 0;\n if (buffer.data) {\n fastCopy(buffer.data.buffer, gpuBuffer.getMappedRange());\n gpuBuffer.unmap();\n }\n this._gpuBuffers[buffer.uid] = gpuBuffer;\n this._managedBuffers.push(buffer);\n return gpuBuffer;\n }\n onBufferChange(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer._updateID = 0;\n this._gpuBuffers[buffer.uid] = this.createGPUBuffer(buffer);\n }\n /**\n * Disposes buffer\n * @param buffer - buffer with data\n */\n onBufferDestroy(buffer) {\n this._managedBuffers.splice(this._managedBuffers.indexOf(buffer), 1);\n this._destroyBuffer(buffer);\n }\n destroy() {\n this._managedBuffers.forEach((buffer) => this._destroyBuffer(buffer));\n this._managedBuffers = null;\n this._gpuBuffers = null;\n }\n _destroyBuffer(buffer) {\n const gpuBuffer = this._gpuBuffers[buffer.uid];\n gpuBuffer.destroy();\n buffer.off(\"update\", this.updateBuffer, this);\n buffer.off(\"change\", this.onBufferChange, this);\n buffer.off(\"destroy\", this.onBufferDestroy, this);\n this._gpuBuffers[buffer.uid] = null;\n }\n}\n/** @ignore */\nGpuBufferSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"buffer\"\n};\n\nexport { GpuBufferSystem };\n//# sourceMappingURL=GpuBufferSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuColorMaskSystem {\n constructor(renderer) {\n this._colorMaskCache = 15;\n this._renderer = renderer;\n }\n setMask(colorMask) {\n if (this._colorMaskCache === colorMask)\n return;\n this._colorMaskCache = colorMask;\n this._renderer.pipeline.setColorMask(colorMask);\n }\n destroy() {\n this._renderer = null;\n this._colorMaskCache = null;\n }\n}\n/** @ignore */\nGpuColorMaskSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"colorMask\"\n};\n\nexport { GpuColorMaskSystem };\n//# sourceMappingURL=GpuColorMaskSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuDeviceSystem {\n /**\n * @param {WebGPURenderer} renderer - The renderer this System works for.\n */\n constructor(renderer) {\n this._renderer = renderer;\n }\n async init(options) {\n if (this._initPromise)\n return this._initPromise;\n this._initPromise = this._createDeviceAndAdaptor(options).then((gpu) => {\n this.gpu = gpu;\n this._renderer.runners.contextChange.emit(this.gpu);\n });\n return this._initPromise;\n }\n /**\n * Handle the context change event\n * @param gpu\n */\n contextChange(gpu) {\n this._renderer.gpu = gpu;\n }\n /**\n * Helper class to create a WebGL Context\n * @param {object} options - An options object that gets passed in to the canvas element containing the\n * context attributes\n * @see https://developer.mozilla.org/en/docs/Web/API/HTMLCanvasElement/getContext\n * @returns {WebGLRenderingContext} the WebGL context\n */\n async _createDeviceAndAdaptor(options) {\n const adapter = await navigator.gpu.requestAdapter({\n powerPreference: options.powerPreference,\n forceFallbackAdapter: options.forceFallbackAdapter\n });\n const requiredFeatures = [\n \"texture-compression-bc\",\n \"texture-compression-astc\",\n \"texture-compression-etc2\"\n ].filter((feature) => adapter.features.has(feature));\n const device = await adapter.requestDevice({\n requiredFeatures\n });\n return { adapter, device };\n }\n destroy() {\n this.gpu = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuDeviceSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"device\"\n};\n/** The default options for the GpuDeviceSystem. */\nGpuDeviceSystem.defaultOptions = {\n /**\n * {@link WebGPUOptions.powerPreference}\n * @default default\n */\n powerPreference: void 0,\n /**\n * Force the use of the fallback adapter\n * @default false\n */\n forceFallbackAdapter: false\n};\n\nexport { GpuDeviceSystem };\n//# sourceMappingURL=GpuDeviceSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuEncoderSystem {\n constructor(renderer) {\n this._boundBindGroup = /* @__PURE__ */ Object.create(null);\n this._boundVertexBuffer = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n }\n renderStart() {\n this.commandFinished = new Promise((resolve) => {\n this._resolveCommandFinished = resolve;\n });\n this.commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n }\n beginRenderPass(gpuRenderTarget) {\n this.endRenderPass();\n this._clearCache();\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(gpuRenderTarget.descriptor);\n }\n endRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n }\n this.renderPassEncoder = null;\n }\n setViewport(viewport) {\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n }\n setPipelineFromGeometryProgramAndState(geometry, program, state, topology) {\n const pipeline = this._renderer.pipeline.getPipeline(geometry, program, state, topology);\n this.setPipeline(pipeline);\n }\n setPipeline(pipeline) {\n if (this._boundPipeline === pipeline)\n return;\n this._boundPipeline = pipeline;\n this.renderPassEncoder.setPipeline(pipeline);\n }\n _setVertexBuffer(index, buffer) {\n if (this._boundVertexBuffer[index] === buffer)\n return;\n this._boundVertexBuffer[index] = buffer;\n this.renderPassEncoder.setVertexBuffer(index, this._renderer.buffer.updateBuffer(buffer));\n }\n _setIndexBuffer(buffer) {\n if (this._boundIndexBuffer === buffer)\n return;\n this._boundIndexBuffer = buffer;\n const indexFormat = buffer.data.BYTES_PER_ELEMENT === 2 ? \"uint16\" : \"uint32\";\n this.renderPassEncoder.setIndexBuffer(this._renderer.buffer.updateBuffer(buffer), indexFormat);\n }\n resetBindGroup(index) {\n this._boundBindGroup[index] = null;\n }\n setBindGroup(index, bindGroup, program) {\n if (this._boundBindGroup[index] === bindGroup)\n return;\n this._boundBindGroup[index] = bindGroup;\n bindGroup._touch(this._renderer.textureGC.count);\n const gpuBindGroup = this._renderer.bindGroup.getBindGroup(bindGroup, program, index);\n this.renderPassEncoder.setBindGroup(index, gpuBindGroup);\n }\n setGeometry(geometry) {\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n this._setVertexBuffer(attribute.location, attribute.buffer);\n }\n if (geometry.indexBuffer) {\n this._setIndexBuffer(geometry.indexBuffer);\n }\n }\n _setShaderBindGroups(shader, skipSync) {\n for (const i in shader.groups) {\n const bindGroup = shader.groups[i];\n if (!skipSync) {\n this._syncBindGroup(bindGroup);\n }\n this.setBindGroup(i, bindGroup, shader.gpuProgram);\n }\n }\n _syncBindGroup(bindGroup) {\n for (const j in bindGroup.resources) {\n const resource = bindGroup.resources[j];\n if (resource.isUniformGroup) {\n this._renderer.ubo.updateUniformGroup(resource);\n }\n }\n }\n draw(options) {\n const { geometry, shader, state, topology, size, start, instanceCount, skipSync } = options;\n this.setPipelineFromGeometryProgramAndState(geometry, shader.gpuProgram, state, topology);\n this.setGeometry(geometry);\n this._setShaderBindGroups(shader, skipSync);\n if (geometry.indexBuffer) {\n this.renderPassEncoder.drawIndexed(\n size || geometry.indexBuffer.data.length,\n instanceCount || geometry.instanceCount,\n start || 0\n );\n } else {\n this.renderPassEncoder.draw(size || geometry.getSize(), instanceCount || geometry.instanceCount, start || 0);\n }\n }\n finishRenderPass() {\n if (this.renderPassEncoder) {\n this.renderPassEncoder.end();\n this.renderPassEncoder = null;\n }\n }\n postrender() {\n this.finishRenderPass();\n this._gpu.device.queue.submit([this.commandEncoder.finish()]);\n this._resolveCommandFinished();\n this.commandEncoder = null;\n }\n // restores a render pass if finishRenderPass was called\n // not optimised as really used for debugging!\n // used when we want to stop drawing and log a texture..\n restoreRenderPass() {\n const descriptor = this._renderer.renderTarget.adaptor.getDescriptor(\n this._renderer.renderTarget.renderTarget,\n false,\n [0, 0, 0, 1]\n );\n this.renderPassEncoder = this.commandEncoder.beginRenderPass(descriptor);\n const boundPipeline = this._boundPipeline;\n const boundVertexBuffer = { ...this._boundVertexBuffer };\n const boundIndexBuffer = this._boundIndexBuffer;\n const boundBindGroup = { ...this._boundBindGroup };\n this._clearCache();\n const viewport = this._renderer.renderTarget.viewport;\n this.renderPassEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n this.setPipeline(boundPipeline);\n for (const i in boundVertexBuffer) {\n this._setVertexBuffer(i, boundVertexBuffer[i]);\n }\n for (const i in boundBindGroup) {\n this.setBindGroup(i, boundBindGroup[i], null);\n }\n this._setIndexBuffer(boundIndexBuffer);\n }\n _clearCache() {\n for (let i = 0; i < 16; i++) {\n this._boundBindGroup[i] = null;\n this._boundVertexBuffer[i] = null;\n }\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n destroy() {\n this._renderer = null;\n this._gpu = null;\n this._boundBindGroup = null;\n this._boundVertexBuffer = null;\n this._boundIndexBuffer = null;\n this._boundPipeline = null;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n}\n/** @ignore */\nGpuEncoderSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"encoder\",\n priority: 1\n};\n\nexport { GpuEncoderSystem };\n//# sourceMappingURL=GpuEncoderSystem.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { STENCIL_MODES } from '../shared/state/const.mjs';\n\n\"use strict\";\nclass GpuStencilSystem {\n constructor(renderer) {\n this._renderTargetStencilState = /* @__PURE__ */ Object.create(null);\n this._renderer = renderer;\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n onRenderTargetChange(renderTarget) {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n if (!stencilState) {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0\n };\n }\n this._activeRenderTarget = renderTarget;\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n setStencilMode(stencilMode, stencilReference) {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n const renderer = this._renderer;\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n destroy() {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n this._renderer = null;\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n/** @ignore */\nGpuStencilSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"stencil\"\n};\n\nexport { GpuStencilSystem };\n//# sourceMappingURL=GpuStencilSystem.mjs.map\n","\"use strict\";\nclass UboBatch {\n constructor({ minUniformOffsetAlignment }) {\n this._minUniformOffsetAlignment = 256;\n this.byteIndex = 0;\n this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n this.data = new Float32Array(65535);\n }\n clear() {\n this.byteIndex = 0;\n }\n addEmptyGroup(size) {\n if (size > this._minUniformOffsetAlignment / 4) {\n throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n }\n const start = this.byteIndex;\n let newSize = start + size * 4;\n newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n if (newSize > this.data.length * 4) {\n throw new Error(\"UniformBufferBatch: ubo batch got too big\");\n }\n this.byteIndex = newSize;\n return start;\n }\n addGroup(array) {\n const offset = this.addEmptyGroup(array.length);\n for (let i = 0; i < array.length; i++) {\n this.data[offset / 4 + i] = array[i];\n }\n return offset;\n }\n destroy() {\n this._buffer.destroy();\n this._buffer = null;\n this.data = null;\n }\n}\n\nexport { UboBatch };\n//# sourceMappingURL=UboBatch.mjs.map\n","import { ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { Buffer } from '../shared/buffer/Buffer.mjs';\nimport { BufferResource } from '../shared/buffer/BufferResource.mjs';\nimport { BufferUsage } from '../shared/buffer/const.mjs';\nimport { UboBatch } from './buffer/UboBatch.mjs';\nimport { BindGroup } from './shader/BindGroup.mjs';\n\n\"use strict\";\nconst minUniformOffsetAlignment = 128;\nclass GpuUniformBatchPipe {\n constructor(renderer) {\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n // number of buffers..\n this._buffers = [];\n this._bindGroups = [];\n this._bufferResources = [];\n this._renderer = renderer;\n this._batchBuffer = new UboBatch({ minUniformOffsetAlignment });\n const totalBuffers = 256 / minUniformOffsetAlignment;\n for (let i = 0; i < totalBuffers; i++) {\n let usage = BufferUsage.UNIFORM | BufferUsage.COPY_DST;\n if (i === 0)\n usage |= BufferUsage.COPY_SRC;\n this._buffers.push(new Buffer({\n data: this._batchBuffer.data,\n usage\n }));\n }\n }\n renderEnd() {\n this._uploadBindGroups();\n this._resetBindGroups();\n }\n _resetBindGroups() {\n for (const i in this._bindGroupHash) {\n this._bindGroupHash[i] = null;\n }\n this._batchBuffer.clear();\n }\n // just works for single bind groups for now\n getUniformBindGroup(group, duplicate) {\n if (!duplicate && this._bindGroupHash[group.uid]) {\n return this._bindGroupHash[group.uid];\n }\n this._renderer.ubo.ensureUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addEmptyGroup(data.length);\n this._renderer.ubo.syncUniformGroup(group, this._batchBuffer.data, offset / 4);\n this._bindGroupHash[group.uid] = this._getBindGroup(offset / minUniformOffsetAlignment);\n return this._bindGroupHash[group.uid];\n }\n getUboResource(group) {\n this._renderer.ubo.updateUniformGroup(group);\n const data = group.buffer.data;\n const offset = this._batchBuffer.addGroup(data);\n return this._getBufferResource(offset / minUniformOffsetAlignment);\n }\n getArrayBindGroup(data) {\n const offset = this._batchBuffer.addGroup(data);\n return this._getBindGroup(offset / minUniformOffsetAlignment);\n }\n getArrayBufferResource(data) {\n const offset = this._batchBuffer.addGroup(data);\n const index = offset / minUniformOffsetAlignment;\n return this._getBufferResource(index);\n }\n _getBufferResource(index) {\n if (!this._bufferResources[index]) {\n const buffer = this._buffers[index % 2];\n this._bufferResources[index] = new BufferResource({\n buffer,\n offset: (index / 2 | 0) * 256,\n size: minUniformOffsetAlignment\n });\n }\n return this._bufferResources[index];\n }\n _getBindGroup(index) {\n if (!this._bindGroups[index]) {\n const bindGroup = new BindGroup({\n 0: this._getBufferResource(index)\n });\n this._bindGroups[index] = bindGroup;\n }\n return this._bindGroups[index];\n }\n _uploadBindGroups() {\n const bufferSystem = this._renderer.buffer;\n const firstBuffer = this._buffers[0];\n firstBuffer.update(this._batchBuffer.byteIndex);\n bufferSystem.updateBuffer(firstBuffer);\n const commandEncoder = this._renderer.gpu.device.createCommandEncoder();\n for (let i = 1; i < this._buffers.length; i++) {\n const buffer = this._buffers[i];\n commandEncoder.copyBufferToBuffer(\n bufferSystem.getGPUBuffer(firstBuffer),\n minUniformOffsetAlignment,\n bufferSystem.getGPUBuffer(buffer),\n 0,\n this._batchBuffer.byteIndex\n );\n }\n this._renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n }\n destroy() {\n for (let i = 0; i < this._bindGroups.length; i++) {\n this._bindGroups[i].destroy();\n }\n this._bindGroups = null;\n this._bindGroupHash = null;\n for (let i = 0; i < this._buffers.length; i++) {\n this._buffers[i].destroy();\n }\n this._buffers = null;\n for (let i = 0; i < this._bufferResources.length; i++) {\n this._bufferResources[i].destroy();\n }\n this._bufferResources = null;\n this._batchBuffer.destroy();\n this._bindGroupHash = null;\n this._renderer = null;\n }\n}\n/** @ignore */\nGpuUniformBatchPipe.extension = {\n type: [\n ExtensionType.WebGPUPipes\n ],\n name: \"uniformBatch\"\n};\n\nexport { GpuUniformBatchPipe };\n//# sourceMappingURL=GpuUniformBatchPipe.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { ensureAttributes } from '../../gl/shader/program/ensureAttributes.mjs';\nimport { STENCIL_MODES } from '../../shared/state/const.mjs';\nimport { createIdFromString } from '../../shared/utils/createIdFromString.mjs';\nimport { GpuStencilModesToPixi } from '../state/GpuStencilModesToPixi.mjs';\n\n\"use strict\";\nconst topologyStringToId = {\n \"point-list\": 0,\n \"line-list\": 1,\n \"line-strip\": 2,\n \"triangle-list\": 3,\n \"triangle-strip\": 4\n};\nfunction getGraphicsStateKey(geometryLayout, shaderKey, state, blendMode, topology) {\n return geometryLayout << 24 | shaderKey << 16 | state << 10 | blendMode << 5 | topology;\n}\nfunction getGlobalStateKey(stencilStateId, multiSampleCount, colorMask, renderTarget) {\n return colorMask << 6 | stencilStateId << 3 | renderTarget << 1 | multiSampleCount;\n}\nclass PipelineSystem {\n constructor(renderer) {\n this._moduleCache = /* @__PURE__ */ Object.create(null);\n this._bufferLayoutsCache = /* @__PURE__ */ Object.create(null);\n this._pipeCache = /* @__PURE__ */ Object.create(null);\n this._pipeStateCaches = /* @__PURE__ */ Object.create(null);\n this._colorMask = 15;\n this._multisampleCount = 1;\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n this.setStencilMode(STENCIL_MODES.DISABLED);\n this._updatePipeHash();\n }\n setMultisampleCount(multisampleCount) {\n if (this._multisampleCount === multisampleCount)\n return;\n this._multisampleCount = multisampleCount;\n this._updatePipeHash();\n }\n setRenderTarget(renderTarget) {\n this._multisampleCount = renderTarget.msaaSamples;\n this._depthStencilAttachment = renderTarget.descriptor.depthStencilAttachment ? 1 : 0;\n this._updatePipeHash();\n }\n setColorMask(colorMask) {\n if (this._colorMask === colorMask)\n return;\n this._colorMask = colorMask;\n this._updatePipeHash();\n }\n setStencilMode(stencilMode) {\n if (this._stencilMode === stencilMode)\n return;\n this._stencilMode = stencilMode;\n this._stencilState = GpuStencilModesToPixi[stencilMode];\n this._updatePipeHash();\n }\n setPipeline(geometry, program, state, passEncoder) {\n const pipeline = this.getPipeline(geometry, program, state);\n passEncoder.setPipeline(pipeline);\n }\n getPipeline(geometry, program, state, topology) {\n if (!geometry._layoutKey) {\n ensureAttributes(geometry, program.attributeData);\n this._generateBufferKey(geometry);\n }\n topology = topology || geometry.topology;\n const key = getGraphicsStateKey(\n geometry._layoutKey,\n program._layoutKey,\n state.data,\n state._blendModeId,\n topologyStringToId[topology]\n );\n if (this._pipeCache[key])\n return this._pipeCache[key];\n this._pipeCache[key] = this._createPipeline(geometry, program, state, topology);\n return this._pipeCache[key];\n }\n _createPipeline(geometry, program, state, topology) {\n const device = this._gpu.device;\n const buffers = this._createVertexBufferLayouts(geometry);\n const blendModes = this._renderer.state.getColorTargets(state);\n blendModes[0].writeMask = this._stencilMode === STENCIL_MODES.RENDERING_MASK_ADD ? 0 : this._colorMask;\n const layout = this._renderer.shader.getProgramData(program).pipeline;\n const descriptor = {\n // TODO later check if its helpful to create..\n // layout,\n vertex: {\n module: this._getModule(program.vertex.source),\n entryPoint: program.vertex.entryPoint,\n // geometry..\n buffers\n },\n fragment: {\n module: this._getModule(program.fragment.source),\n entryPoint: program.fragment.entryPoint,\n targets: blendModes\n },\n primitive: {\n topology,\n cullMode: state.cullMode\n },\n layout,\n multisample: {\n count: this._multisampleCount\n },\n // depthStencil,\n label: `PIXI Pipeline`\n };\n if (this._depthStencilAttachment) {\n descriptor.depthStencil = {\n ...this._stencilState,\n format: \"depth24plus-stencil8\",\n depthWriteEnabled: state.depthTest,\n depthCompare: state.depthTest ? \"less\" : \"always\"\n };\n }\n const pipeline = device.createRenderPipeline(descriptor);\n return pipeline;\n }\n _getModule(code) {\n return this._moduleCache[code] || this._createModule(code);\n }\n _createModule(code) {\n const device = this._gpu.device;\n this._moduleCache[code] = device.createShaderModule({\n code\n });\n return this._moduleCache[code];\n }\n _generateBufferKey(geometry) {\n const keyGen = [];\n let index = 0;\n const attributeKeys = Object.keys(geometry.attributes).sort();\n for (let i = 0; i < attributeKeys.length; i++) {\n const attribute = geometry.attributes[attributeKeys[i]];\n keyGen[index++] = attribute.location;\n keyGen[index++] = attribute.offset;\n keyGen[index++] = attribute.format;\n keyGen[index++] = attribute.stride;\n }\n const stringKey = keyGen.join(\"\");\n geometry._layoutKey = createIdFromString(stringKey, \"geometry\");\n return geometry._layoutKey;\n }\n _createVertexBufferLayouts(geometry) {\n if (this._bufferLayoutsCache[geometry._layoutKey]) {\n return this._bufferLayoutsCache[geometry._layoutKey];\n }\n const vertexBuffersLayout = [];\n geometry.buffers.forEach((buffer) => {\n const bufferEntry = {\n arrayStride: 0,\n stepMode: \"vertex\",\n attributes: []\n };\n const bufferEntryAttributes = bufferEntry.attributes;\n for (const i in geometry.attributes) {\n const attribute = geometry.attributes[i];\n if (attribute.buffer === buffer) {\n bufferEntry.arrayStride = attribute.stride;\n bufferEntry.stepMode = attribute.instance ? \"instance\" : \"vertex\";\n bufferEntryAttributes.push({\n shaderLocation: attribute.location,\n offset: attribute.offset,\n format: attribute.format\n });\n }\n }\n if (bufferEntryAttributes.length) {\n vertexBuffersLayout.push(bufferEntry);\n }\n });\n this._bufferLayoutsCache[geometry._layoutKey] = vertexBuffersLayout;\n return vertexBuffersLayout;\n }\n _updatePipeHash() {\n const key = getGlobalStateKey(\n this._stencilMode,\n this._multisampleCount,\n this._colorMask,\n this._depthStencilAttachment\n );\n if (!this._pipeStateCaches[key]) {\n this._pipeStateCaches[key] = /* @__PURE__ */ Object.create(null);\n }\n this._pipeCache = this._pipeStateCaches[key];\n }\n destroy() {\n this._renderer = null;\n this._bufferLayoutsCache = null;\n }\n}\n/** @ignore */\nPipelineSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"pipeline\"\n};\n\nexport { PipelineSystem };\n//# sourceMappingURL=PipelineSystem.mjs.map\n","\"use strict\";\nclass GpuRenderTarget {\n constructor() {\n this.contexts = [];\n this.msaaTextures = [];\n this.msaaSamples = 1;\n }\n}\n\nexport { GpuRenderTarget };\n//# sourceMappingURL=GpuRenderTarget.mjs.map\n","import { CLEAR } from '../../gl/const.mjs';\nimport { CanvasSource } from '../../shared/texture/sources/CanvasSource.mjs';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource.mjs';\nimport { GpuRenderTarget } from './GpuRenderTarget.mjs';\n\n\"use strict\";\nclass GpuRenderTargetAdaptor {\n init(renderer, renderTargetSystem) {\n this._renderer = renderer;\n this._renderTargetSystem = renderTargetSystem;\n }\n copyToTexture(sourceRenderSurfaceTexture, destinationTexture, originSrc, size, originDest) {\n const renderer = this._renderer;\n const baseGpuTexture = this._getGpuColorTexture(\n sourceRenderSurfaceTexture\n );\n const backGpuTexture = renderer.texture.getGpuSource(\n destinationTexture.source\n );\n renderer.encoder.commandEncoder.copyTextureToTexture(\n {\n texture: baseGpuTexture,\n origin: originSrc\n },\n {\n texture: backGpuTexture,\n origin: originDest\n },\n size\n );\n return destinationTexture;\n }\n startRenderPass(renderTarget, clear = true, clearColor, viewport) {\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const descriptor = this.getDescriptor(renderTarget, clear, clearColor);\n gpuRenderTarget.descriptor = descriptor;\n this._renderer.pipeline.setRenderTarget(gpuRenderTarget);\n this._renderer.encoder.beginRenderPass(gpuRenderTarget);\n this._renderer.encoder.setViewport(viewport);\n }\n finishRenderPass() {\n this._renderer.encoder.endRenderPass();\n }\n /**\n * returns the gpu texture for the first color texture in the render target\n * mainly used by the filter manager to get copy the texture for blending\n * @param renderTarget\n * @returns a gpu texture\n */\n _getGpuColorTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (gpuRenderTarget.contexts[0]) {\n return gpuRenderTarget.contexts[0].getCurrentTexture();\n }\n return this._renderer.texture.getGpuSource(\n renderTarget.colorTextures[0].source\n );\n }\n getDescriptor(renderTarget, clear, clearValue) {\n if (typeof clear === \"boolean\") {\n clear = clear ? CLEAR.ALL : CLEAR.NONE;\n }\n const renderTargetSystem = this._renderTargetSystem;\n const gpuRenderTarget = renderTargetSystem.getGpuRenderTarget(renderTarget);\n const colorAttachments = renderTarget.colorTextures.map(\n (texture, i) => {\n const context = gpuRenderTarget.contexts[i];\n let view;\n let resolveTarget;\n if (context) {\n const currentTexture = context.getCurrentTexture();\n const canvasTextureView = currentTexture.createView();\n view = canvasTextureView;\n } else {\n view = this._renderer.texture.getGpuSource(texture).createView({\n mipLevelCount: 1\n });\n }\n if (gpuRenderTarget.msaaTextures[i]) {\n resolveTarget = view;\n view = this._renderer.texture.getTextureView(\n gpuRenderTarget.msaaTextures[i]\n );\n }\n const loadOp = clear & CLEAR.COLOR ? \"clear\" : \"load\";\n clearValue ?? (clearValue = renderTargetSystem.defaultClearColor);\n return {\n view,\n resolveTarget,\n clearValue,\n storeOp: \"store\",\n loadOp\n };\n }\n );\n let depthStencilAttachment;\n if ((renderTarget.stencil || renderTarget.depth) && !renderTarget.depthStencilTexture) {\n renderTarget.ensureDepthStencilTexture();\n renderTarget.depthStencilTexture.source.sampleCount = gpuRenderTarget.msaa ? 4 : 1;\n }\n if (renderTarget.depthStencilTexture) {\n const stencilLoadOp = clear & CLEAR.STENCIL ? \"clear\" : \"load\";\n const depthLoadOp = clear & CLEAR.DEPTH ? \"clear\" : \"load\";\n depthStencilAttachment = {\n view: this._renderer.texture.getGpuSource(renderTarget.depthStencilTexture.source).createView(),\n stencilStoreOp: \"store\",\n stencilLoadOp,\n depthClearValue: 1,\n depthLoadOp,\n depthStoreOp: \"store\"\n };\n }\n const descriptor = {\n colorAttachments,\n depthStencilAttachment\n };\n return descriptor;\n }\n clear(renderTarget, clear = true, clearColor, viewport) {\n if (!clear)\n return;\n const { gpu, encoder } = this._renderer;\n const device = gpu.device;\n const standAlone = encoder.commandEncoder === null;\n if (standAlone) {\n const commandEncoder = device.createCommandEncoder();\n const renderPassDescriptor = this.getDescriptor(renderTarget, clear, clearColor);\n const passEncoder = commandEncoder.beginRenderPass(renderPassDescriptor);\n passEncoder.setViewport(viewport.x, viewport.y, viewport.width, viewport.height, 0, 1);\n passEncoder.end();\n const gpuCommands = commandEncoder.finish();\n device.queue.submit([gpuCommands]);\n } else {\n this.startRenderPass(renderTarget, clear, clearColor, viewport);\n }\n }\n initGpuRenderTarget(renderTarget) {\n renderTarget.isRoot = true;\n const gpuRenderTarget = new GpuRenderTarget();\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n if (CanvasSource.test(colorTexture.resource)) {\n const context = colorTexture.resource.getContext(\n \"webgpu\"\n );\n const alphaMode = colorTexture.transparent ? \"premultiplied\" : \"opaque\";\n try {\n context.configure({\n device: this._renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC,\n format: \"bgra8unorm\",\n alphaMode\n });\n } catch (e) {\n console.error(e);\n }\n gpuRenderTarget.contexts[i] = context;\n }\n gpuRenderTarget.msaa = colorTexture.source.antialias;\n if (colorTexture.source.antialias) {\n const msaaTexture = new TextureSource({\n width: 0,\n height: 0,\n sampleCount: 4\n });\n gpuRenderTarget.msaaTextures[i] = msaaTexture;\n }\n });\n if (gpuRenderTarget.msaa) {\n gpuRenderTarget.msaaSamples = 4;\n if (renderTarget.depthStencilTexture) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n return gpuRenderTarget;\n }\n destroyGpuRenderTarget(gpuRenderTarget) {\n gpuRenderTarget.contexts.forEach((context) => {\n context.unconfigure();\n });\n gpuRenderTarget.msaaTextures.forEach((texture) => {\n texture.destroy();\n });\n gpuRenderTarget.msaaTextures.length = 0;\n gpuRenderTarget.contexts.length = 0;\n }\n ensureDepthStencilTexture(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n if (renderTarget.depthStencilTexture && gpuRenderTarget.msaa) {\n renderTarget.depthStencilTexture.source.sampleCount = 4;\n }\n }\n resizeGpuRenderTarget(renderTarget) {\n const gpuRenderTarget = this._renderTargetSystem.getGpuRenderTarget(renderTarget);\n gpuRenderTarget.width = renderTarget.width;\n gpuRenderTarget.height = renderTarget.height;\n if (gpuRenderTarget.msaa) {\n renderTarget.colorTextures.forEach((colorTexture, i) => {\n const msaaTexture = gpuRenderTarget.msaaTextures[i];\n msaaTexture?.resize(\n colorTexture.source.width,\n colorTexture.source.height,\n colorTexture.source._resolution\n );\n });\n }\n }\n}\n\nexport { GpuRenderTargetAdaptor };\n//# sourceMappingURL=GpuRenderTargetAdaptor.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { RenderTargetSystem } from '../../shared/renderTarget/RenderTargetSystem.mjs';\nimport { GpuRenderTargetAdaptor } from './GpuRenderTargetAdaptor.mjs';\n\n\"use strict\";\nclass GpuRenderTargetSystem extends RenderTargetSystem {\n constructor(renderer) {\n super(renderer);\n this.adaptor = new GpuRenderTargetAdaptor();\n this.adaptor.init(renderer, this);\n }\n}\n/** @ignore */\nGpuRenderTargetSystem.extension = {\n type: [ExtensionType.WebGPUSystem],\n name: \"renderTarget\"\n};\n\nexport { GpuRenderTargetSystem };\n//# sourceMappingURL=GpuRenderTargetSystem.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\n\n\"use strict\";\nclass GpuShaderSystem {\n constructor() {\n this._gpuProgramData = /* @__PURE__ */ Object.create(null);\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n getProgramData(program) {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n _createGPUProgramData(program) {\n const device = this._gpu.device;\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc)\n };\n return this._gpuProgramData[program._layoutKey];\n }\n destroy() {\n this._gpu = null;\n this._gpuProgramData = null;\n }\n}\n/** @ignore */\nGpuShaderSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"shader\"\n};\n\nexport { GpuShaderSystem };\n//# sourceMappingURL=GpuShaderSystem.mjs.map\n","\"use strict\";\nconst GpuBlendModesToPixi = {};\nGpuBlendModesToPixi.normal = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.add = {\n alpha: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.multiply = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"dst\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.screen = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.overlay = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.none = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"zero\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"normal-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"add-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi[\"screen-npm\"] = {\n alpha: {\n srcFactor: \"one\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"src-alpha\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\nGpuBlendModesToPixi.erase = {\n alpha: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src-alpha\",\n operation: \"add\"\n },\n color: {\n srcFactor: \"zero\",\n dstFactor: \"one-minus-src\",\n operation: \"add\"\n }\n};\n\nexport { GpuBlendModesToPixi };\n//# sourceMappingURL=GpuBlendModesToPixi.mjs.map\n","import { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { State } from '../../shared/state/State.mjs';\nimport { GpuBlendModesToPixi } from './GpuBlendModesToPixi.mjs';\n\n\"use strict\";\nclass GpuStateSystem {\n constructor() {\n this.defaultState = new State();\n this.defaultState.blend = true;\n }\n contextChange(gpu) {\n this.gpu = gpu;\n }\n /**\n * Gets the blend mode data for the current state\n * @param state - The state to get the blend mode from\n */\n getColorTargets(state) {\n const blend = GpuBlendModesToPixi[state.blendMode] || GpuBlendModesToPixi.normal;\n return [\n {\n format: \"bgra8unorm\",\n writeMask: 0,\n blend\n }\n ];\n }\n destroy() {\n this.gpu = null;\n }\n}\n/** @ignore */\nGpuStateSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"state\"\n};\n\nexport { GpuStateSystem };\n//# sourceMappingURL=GpuStateSystem.mjs.map\n","\"use strict\";\nconst gpuUploadBufferImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu) {\n const resource = source.resource;\n const total = (source.pixelWidth | 0) * (source.pixelHeight | 0);\n const bytesPerPixel = resource.byteLength / total;\n gpu.device.queue.writeTexture(\n { texture: gpuTexture },\n resource,\n {\n offset: 0,\n rowsPerImage: source.pixelHeight,\n bytesPerRow: source.pixelHeight * bytesPerPixel\n },\n {\n width: source.pixelWidth,\n height: source.pixelHeight,\n depthOrArrayLayers: 1\n }\n );\n }\n};\n\nexport { gpuUploadBufferImageResource };\n//# sourceMappingURL=gpuUploadBufferImageResource.mjs.map\n","\"use strict\";\nconst blockDataMap = {\n \"bc1-rgba-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"bc2-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc3-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"bc7-rgba-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"etc1-rgb-unorm\": { blockBytes: 8, blockWidth: 4, blockHeight: 4 },\n \"etc2-rgba8unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 },\n \"astc-4x4-unorm\": { blockBytes: 16, blockWidth: 4, blockHeight: 4 }\n};\nconst defaultBlockData = { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\nconst gpuUploadCompressedTextureResource = {\n type: \"compressed\",\n upload(source, gpuTexture, gpu) {\n let mipWidth = source.pixelWidth;\n let mipHeight = source.pixelHeight;\n const blockData = blockDataMap[source.format] || defaultBlockData;\n for (let i = 0; i < source.resource.length; i++) {\n const levelBuffer = source.resource[i];\n const bytesPerRow = Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockBytes;\n gpu.device.queue.writeTexture(\n {\n texture: gpuTexture,\n mipLevel: i\n },\n levelBuffer,\n {\n offset: 0,\n bytesPerRow\n },\n {\n width: Math.ceil(mipWidth / blockData.blockWidth) * blockData.blockWidth,\n height: Math.ceil(mipHeight / blockData.blockHeight) * blockData.blockHeight,\n depthOrArrayLayers: 1\n }\n );\n mipWidth = Math.max(mipWidth >> 1, 1);\n mipHeight = Math.max(mipHeight >> 1, 1);\n }\n }\n};\n\nexport { blockDataMap, gpuUploadCompressedTextureResource };\n//# sourceMappingURL=gpuUploadCompressedTextureResource.mjs.map\n","\"use strict\";\nconst gpuUploadImageResource = {\n type: \"image\",\n upload(source, gpuTexture, gpu) {\n const resource = source.resource;\n if (!resource)\n return;\n const width = Math.min(gpuTexture.width, source.resourceWidth || source.pixelWidth);\n const height = Math.min(gpuTexture.height, source.resourceHeight || source.pixelHeight);\n const premultipliedAlpha = source.alphaMode === \"premultiply-alpha-on-upload\";\n gpu.device.queue.copyExternalImageToTexture(\n { source: resource },\n { texture: gpuTexture, premultipliedAlpha },\n {\n width,\n height\n }\n );\n }\n};\n\nexport { gpuUploadImageResource };\n//# sourceMappingURL=gpuUploadImageSource.mjs.map\n","import { gpuUploadImageResource } from './gpuUploadImageSource.mjs';\n\n\"use strict\";\nconst gpuUploadVideoResource = {\n type: \"video\",\n upload(source, gpuTexture, gpu) {\n gpuUploadImageResource.upload(source, gpuTexture, gpu);\n }\n};\n\nexport { gpuUploadVideoResource };\n//# sourceMappingURL=gpuUploadVideoSource.mjs.map\n","\"use strict\";\nclass GpuMipmapGenerator {\n constructor(device) {\n this.device = device;\n this.sampler = device.createSampler({ minFilter: \"linear\" });\n this.pipelines = {};\n }\n _getMipmapPipeline(format) {\n let pipeline = this.pipelines[format];\n if (!pipeline) {\n if (!this.mipmapShaderModule) {\n this.mipmapShaderModule = this.device.createShaderModule({\n code: (\n /* wgsl */\n `\n var<private> pos : array<vec2<f32>, 3> = array<vec2<f32>, 3>(\n vec2<f32>(-1.0, -1.0), vec2<f32>(-1.0, 3.0), vec2<f32>(3.0, -1.0));\n\n struct VertexOutput {\n @builtin(position) position : vec4<f32>,\n @location(0) texCoord : vec2<f32>,\n };\n\n @vertex\n fn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n var output : VertexOutput;\n output.texCoord = pos[vertexIndex] * vec2<f32>(0.5, -0.5) + vec2<f32>(0.5);\n output.position = vec4<f32>(pos[vertexIndex], 0.0, 1.0);\n return output;\n }\n\n @group(0) @binding(0) var imgSampler : sampler;\n @group(0) @binding(1) var img : texture_2d<f32>;\n\n @fragment\n fn fragmentMain(@location(0) texCoord : vec2<f32>) -> @location(0) vec4<f32> {\n return textureSample(img, imgSampler, texCoord);\n }\n `\n )\n });\n }\n pipeline = this.device.createRenderPipeline({\n layout: \"auto\",\n vertex: {\n module: this.mipmapShaderModule,\n entryPoint: \"vertexMain\"\n },\n fragment: {\n module: this.mipmapShaderModule,\n entryPoint: \"fragmentMain\",\n targets: [{ format }]\n }\n });\n this.pipelines[format] = pipeline;\n }\n return pipeline;\n }\n /**\n * Generates mipmaps for the given GPUTexture from the data in level 0.\n * @param {module:External.GPUTexture} texture - Texture to generate mipmaps for.\n * @returns {module:External.GPUTexture} - The originally passed texture\n */\n generateMipmap(texture) {\n const pipeline = this._getMipmapPipeline(texture.format);\n if (texture.dimension === \"3d\" || texture.dimension === \"1d\") {\n throw new Error(\"Generating mipmaps for non-2d textures is currently unsupported!\");\n }\n let mipTexture = texture;\n const arrayLayerCount = texture.depthOrArrayLayers || 1;\n const renderToSource = texture.usage & GPUTextureUsage.RENDER_ATTACHMENT;\n if (!renderToSource) {\n const mipTextureDescriptor = {\n size: {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n },\n format: texture.format,\n usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_SRC | GPUTextureUsage.RENDER_ATTACHMENT,\n mipLevelCount: texture.mipLevelCount - 1\n };\n mipTexture = this.device.createTexture(mipTextureDescriptor);\n }\n const commandEncoder = this.device.createCommandEncoder({});\n const bindGroupLayout = pipeline.getBindGroupLayout(0);\n for (let arrayLayer = 0; arrayLayer < arrayLayerCount; ++arrayLayer) {\n let srcView = texture.createView({\n baseMipLevel: 0,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n let dstMipLevel = renderToSource ? 1 : 0;\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n const dstView = mipTexture.createView({\n baseMipLevel: dstMipLevel++,\n mipLevelCount: 1,\n dimension: \"2d\",\n baseArrayLayer: arrayLayer,\n arrayLayerCount: 1\n });\n const passEncoder = commandEncoder.beginRenderPass({\n colorAttachments: [{\n view: dstView,\n storeOp: \"store\",\n loadOp: \"clear\",\n clearValue: { r: 0, g: 0, b: 0, a: 0 }\n }]\n });\n const bindGroup = this.device.createBindGroup({\n layout: bindGroupLayout,\n entries: [{\n binding: 0,\n resource: this.sampler\n }, {\n binding: 1,\n resource: srcView\n }]\n });\n passEncoder.setPipeline(pipeline);\n passEncoder.setBindGroup(0, bindGroup);\n passEncoder.draw(3, 1, 0, 0);\n passEncoder.end();\n srcView = dstView;\n }\n }\n if (!renderToSource) {\n const mipLevelSize = {\n width: Math.ceil(texture.width / 2),\n height: Math.ceil(texture.height / 2),\n depthOrArrayLayers: arrayLayerCount\n };\n for (let i = 1; i < texture.mipLevelCount; ++i) {\n commandEncoder.copyTextureToTexture({\n texture: mipTexture,\n mipLevel: i - 1\n }, {\n texture,\n mipLevel: i\n }, mipLevelSize);\n mipLevelSize.width = Math.ceil(mipLevelSize.width / 2);\n mipLevelSize.height = Math.ceil(mipLevelSize.height / 2);\n }\n }\n this.device.queue.submit([commandEncoder.finish()]);\n if (!renderToSource) {\n mipTexture.destroy();\n }\n return texture;\n }\n}\n\nexport { GpuMipmapGenerator };\n//# sourceMappingURL=GpuMipmapGenerator.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { ExtensionType } from '../../../../extensions/Extensions.mjs';\nimport { CanvasPool } from '../../shared/texture/CanvasPool.mjs';\nimport { BindGroup } from '../shader/BindGroup.mjs';\nimport { gpuUploadBufferImageResource } from './uploaders/gpuUploadBufferImageResource.mjs';\nimport { gpuUploadCompressedTextureResource, blockDataMap } from './uploaders/gpuUploadCompressedTextureResource.mjs';\nimport { gpuUploadImageResource } from './uploaders/gpuUploadImageSource.mjs';\nimport { gpuUploadVideoResource } from './uploaders/gpuUploadVideoSource.mjs';\nimport { GpuMipmapGenerator } from './utils/GpuMipmapGenerator.mjs';\n\n\"use strict\";\nclass GpuTextureSystem {\n constructor(renderer) {\n this.managedTextures = [];\n this._gpuSources = /* @__PURE__ */ Object.create(null);\n this._gpuSamplers = /* @__PURE__ */ Object.create(null);\n this._bindGroupHash = /* @__PURE__ */ Object.create(null);\n this._textureViewHash = /* @__PURE__ */ Object.create(null);\n this._uploads = {\n image: gpuUploadImageResource,\n buffer: gpuUploadBufferImageResource,\n video: gpuUploadVideoResource,\n compressed: gpuUploadCompressedTextureResource\n };\n this._renderer = renderer;\n }\n contextChange(gpu) {\n this._gpu = gpu;\n }\n initSource(source) {\n if (source.autoGenerateMipmaps) {\n const biggestDimension = Math.max(source.pixelWidth, source.pixelHeight);\n source.mipLevelCount = Math.floor(Math.log2(biggestDimension)) + 1;\n }\n let usage = GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST;\n if (source.uploadMethodId !== \"compressed\") {\n usage |= GPUTextureUsage.RENDER_ATTACHMENT;\n usage |= GPUTextureUsage.COPY_SRC;\n }\n const blockData = blockDataMap[source.format] || { blockBytes: 4, blockWidth: 1, blockHeight: 1 };\n const width = Math.ceil(source.pixelWidth / blockData.blockWidth) * blockData.blockWidth;\n const height = Math.ceil(source.pixelHeight / blockData.blockHeight) * blockData.blockHeight;\n const textureDescriptor = {\n label: source.label,\n size: { width, height },\n format: source.format,\n sampleCount: source.sampleCount,\n mipLevelCount: source.mipLevelCount,\n dimension: source.dimension,\n usage\n };\n const gpuTexture = this._gpu.device.createTexture(textureDescriptor);\n this._gpuSources[source.uid] = gpuTexture;\n if (!this.managedTextures.includes(source)) {\n source.on(\"update\", this.onSourceUpdate, this);\n source.on(\"resize\", this.onSourceResize, this);\n source.on(\"destroy\", this.onSourceDestroy, this);\n source.on(\"unload\", this.onSourceUnload, this);\n source.on(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.push(source);\n }\n this.onSourceUpdate(source);\n return gpuTexture;\n }\n onSourceUpdate(source) {\n const gpuTexture = this.getGpuSource(source);\n if (!gpuTexture)\n return;\n if (this._uploads[source.uploadMethodId]) {\n this._uploads[source.uploadMethodId].upload(source, gpuTexture, this._gpu);\n }\n if (source.autoGenerateMipmaps && source.mipLevelCount > 1) {\n this.onUpdateMipmaps(source);\n }\n }\n onSourceUnload(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (gpuTexture) {\n this._gpuSources[source.uid] = null;\n gpuTexture.destroy();\n }\n }\n onUpdateMipmaps(source) {\n if (!this._mipmapGenerator) {\n this._mipmapGenerator = new GpuMipmapGenerator(this._gpu.device);\n }\n const gpuTexture = this.getGpuSource(source);\n this._mipmapGenerator.generateMipmap(gpuTexture);\n }\n onSourceDestroy(source) {\n source.off(\"update\", this.onSourceUpdate, this);\n source.off(\"unload\", this.onSourceUnload, this);\n source.off(\"destroy\", this.onSourceDestroy, this);\n source.off(\"resize\", this.onSourceResize, this);\n source.off(\"updateMipmaps\", this.onUpdateMipmaps, this);\n this.managedTextures.splice(this.managedTextures.indexOf(source), 1);\n this.onSourceUnload(source);\n }\n onSourceResize(source) {\n const gpuTexture = this._gpuSources[source.uid];\n if (!gpuTexture) {\n this.initSource(source);\n } else if (gpuTexture.width !== source.pixelWidth || gpuTexture.height !== source.pixelHeight) {\n this._textureViewHash[source.uid] = null;\n this._bindGroupHash[source.uid] = null;\n this.onSourceUnload(source);\n this.initSource(source);\n }\n }\n _initSampler(sampler) {\n this._gpuSamplers[sampler._resourceId] = this._gpu.device.createSampler(sampler);\n return this._gpuSamplers[sampler._resourceId];\n }\n getGpuSampler(sampler) {\n return this._gpuSamplers[sampler._resourceId] || this._initSampler(sampler);\n }\n getGpuSource(source) {\n return this._gpuSources[source.uid] || this.initSource(source);\n }\n getTextureBindGroup(texture) {\n return this._bindGroupHash[texture.uid] ?? this._createTextureBindGroup(texture);\n }\n _createTextureBindGroup(texture) {\n const source = texture.source;\n const bindGroupId = source.uid;\n this._bindGroupHash[bindGroupId] = new BindGroup({\n 0: source,\n 1: source.style\n });\n return this._bindGroupHash[bindGroupId];\n }\n getTextureView(texture) {\n const source = texture.source;\n return this._textureViewHash[source.uid] ?? this._createTextureView(source);\n }\n _createTextureView(texture) {\n this._textureViewHash[texture.uid] = this.getGpuSource(texture).createView();\n return this._textureViewHash[texture.uid];\n }\n generateCanvas(texture) {\n const renderer = this._renderer;\n const commandEncoder = renderer.gpu.device.createCommandEncoder();\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = texture.source.pixelWidth;\n canvas.height = texture.source.pixelHeight;\n const context = canvas.getContext(\"webgpu\");\n context.configure({\n device: renderer.gpu.device,\n // eslint-disable-next-line max-len\n usage: GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC,\n format: navigator.gpu.getPreferredCanvasFormat(),\n alphaMode: \"premultiplied\"\n });\n commandEncoder.copyTextureToTexture({\n texture: renderer.texture.getGpuSource(texture.source),\n origin: {\n x: 0,\n y: 0\n }\n }, {\n texture: context.getCurrentTexture()\n }, {\n width: canvas.width,\n height: canvas.height\n });\n renderer.gpu.device.queue.submit([commandEncoder.finish()]);\n return canvas;\n }\n getPixels(texture) {\n const webGPUCanvas = this.generateCanvas(texture);\n const canvasAndContext = CanvasPool.getOptimalCanvasAndContext(webGPUCanvas.width, webGPUCanvas.height);\n const context = canvasAndContext.context;\n context.drawImage(webGPUCanvas, 0, 0);\n const { width, height } = webGPUCanvas;\n const imageData = context.getImageData(0, 0, width, height);\n const pixels = new Uint8ClampedArray(imageData.data.buffer);\n CanvasPool.returnCanvasAndContext(canvasAndContext);\n return { pixels, width, height };\n }\n destroy() {\n this.managedTextures.slice().forEach((source) => this.onSourceDestroy(source));\n this.managedTextures = null;\n for (const k of Object.keys(this._bindGroupHash)) {\n const key = Number(k);\n const bindGroup = this._bindGroupHash[key];\n bindGroup?.destroy();\n this._bindGroupHash[key] = null;\n }\n this._gpu = null;\n this._mipmapGenerator = null;\n this._gpuSources = null;\n this._bindGroupHash = null;\n this._textureViewHash = null;\n this._gpuSamplers = null;\n }\n}\n/** @ignore */\nGpuTextureSystem.extension = {\n type: [\n ExtensionType.WebGPUSystem\n ],\n name: \"texture\"\n};\n\nexport { GpuTextureSystem };\n//# sourceMappingURL=GpuTextureSystem.mjs.map\n","import { extensions, ExtensionType } from '../../../extensions/Extensions.mjs';\nimport { GpuGraphicsAdaptor } from '../../../scene/graphics/gpu/GpuGraphicsAdaptor.mjs';\nimport { GpuMeshAdapter } from '../../../scene/mesh/gpu/GpuMeshAdapter.mjs';\nimport { GpuBatchAdaptor } from '../../batcher/gpu/GpuBatchAdaptor.mjs';\nimport { AbstractRenderer } from '../shared/system/AbstractRenderer.mjs';\nimport { SharedSystems, SharedRenderPipes } from '../shared/system/SharedSystems.mjs';\nimport { RendererType } from '../types.mjs';\nimport { BindGroupSystem } from './BindGroupSystem.mjs';\nimport { GpuBufferSystem } from './buffer/GpuBufferSystem.mjs';\nimport { GpuColorMaskSystem } from './GpuColorMaskSystem.mjs';\nimport { GpuDeviceSystem } from './GpuDeviceSystem.mjs';\nimport { GpuEncoderSystem } from './GpuEncoderSystem.mjs';\nimport { GpuStencilSystem } from './GpuStencilSystem.mjs';\nimport { GpuUboSystem } from './GpuUboSystem.mjs';\nimport { GpuUniformBatchPipe } from './GpuUniformBatchPipe.mjs';\nimport { PipelineSystem } from './pipeline/PipelineSystem.mjs';\nimport { GpuRenderTargetSystem } from './renderTarget/GpuRenderTargetSystem.mjs';\nimport { GpuShaderSystem } from './shader/GpuShaderSystem.mjs';\nimport { GpuStateSystem } from './state/GpuStateSystem.mjs';\nimport { GpuTextureSystem } from './texture/GpuTextureSystem.mjs';\n\n\"use strict\";\nconst DefaultWebGPUSystems = [\n ...SharedSystems,\n GpuUboSystem,\n GpuEncoderSystem,\n GpuDeviceSystem,\n GpuBufferSystem,\n GpuTextureSystem,\n GpuRenderTargetSystem,\n GpuShaderSystem,\n GpuStateSystem,\n PipelineSystem,\n GpuColorMaskSystem,\n GpuStencilSystem,\n BindGroupSystem\n];\nconst DefaultWebGPUPipes = [...SharedRenderPipes, GpuUniformBatchPipe];\nconst DefaultWebGPUAdapters = [GpuBatchAdaptor, GpuMeshAdapter, GpuGraphicsAdaptor];\nconst systems = [];\nconst renderPipes = [];\nconst renderPipeAdaptors = [];\nextensions.handleByNamedList(ExtensionType.WebGPUSystem, systems);\nextensions.handleByNamedList(ExtensionType.WebGPUPipes, renderPipes);\nextensions.handleByNamedList(ExtensionType.WebGPUPipesAdaptor, renderPipeAdaptors);\nextensions.add(...DefaultWebGPUSystems, ...DefaultWebGPUPipes, ...DefaultWebGPUAdapters);\nclass WebGPURenderer extends AbstractRenderer {\n constructor() {\n const systemConfig = {\n name: \"webgpu\",\n type: RendererType.WEBGPU,\n systems,\n renderPipes,\n renderPipeAdaptors\n };\n super(systemConfig);\n }\n}\n\nexport { WebGPURenderer };\n//# sourceMappingURL=WebGPURenderer.mjs.map\n","import { DOMAdapter } from '../../../../environment/adapter.mjs';\nimport { nextPow2 } from '../../../../maths/misc/pow2.mjs';\n\n\"use strict\";\nclass CanvasPoolClass {\n constructor(canvasOptions) {\n this._canvasPool = /* @__PURE__ */ Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n _createCanvasAndContext(pixelWidth, pixelHeight) {\n const canvas = DOMAdapter.get().createCanvas();\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n const context = canvas.getContext(\"2d\");\n return { canvas, context };\n }\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n getOptimalCanvasAndContext(minWidth, minHeight, resolution = 1) {\n minWidth = Math.ceil(minWidth * resolution - 1e-6);\n minHeight = Math.ceil(minHeight * resolution - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n const key = (minWidth << 17) + (minHeight << 1);\n if (!this._canvasPool[key]) {\n this._canvasPool[key] = [];\n }\n let canvasAndContext = this._canvasPool[key].pop();\n if (!canvasAndContext) {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n return canvasAndContext;\n }\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n returnCanvasAndContext(canvasAndContext) {\n const { width, height } = canvasAndContext.canvas;\n const key = (width << 17) + (height << 1);\n this._canvasPool[key].push(canvasAndContext);\n }\n clear() {\n this._canvasPool = {};\n }\n}\nconst CanvasPool = new CanvasPoolClass();\n\nexport { CanvasPool, CanvasPoolClass };\n//# sourceMappingURL=CanvasPool.mjs.map\n"],"names":["Float32Array","s","r","Object","navigator","Promise","Error","Math","i","GPUTextureUsage","e","console","a","Uint8ClampedArray","Number"],"mappings":"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"}
|