1 |
- {"ast":null,"code":"import { Matrix, Vector3, Vector2 } from \"../../Maths/math.vector.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture.js\";\nimport { BlurPostProcess } from \"../../PostProcesses/blurPostProcess.js\";\nimport { Plane } from \"../../Maths/math.plane.js\";\n/**\n * Mirror texture can be used to simulate the view from a mirror in a scene.\n * It will dynamically be rendered every frame to adapt to the camera point of view.\n * You can then easily use it as a reflectionTexture on a flat surface.\n * In case the surface is not a plane, please consider relying on reflection probes.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrortexture\n */\nexport class MirrorTexture extends RenderTargetTexture {\n /**\n * Define the blur ratio used to blur the reflection if needed.\n */\n set blurRatio(value) {\n if (this._blurRatio === value) {\n return;\n }\n this._blurRatio = value;\n this._preparePostProcesses();\n }\n get blurRatio() {\n return this._blurRatio;\n }\n /**\n * Define the adaptive blur kernel used to blur the reflection if needed.\n * This will autocompute the closest best match for the `blurKernel`\n */\n set adaptiveBlurKernel(value) {\n this._adaptiveBlurKernel = value;\n this._autoComputeBlurKernel();\n }\n /**\n * Define the blur kernel used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernel(value) {\n this.blurKernelX = value;\n this.blurKernelY = value;\n }\n /**\n * Define the blur kernel on the X Axis used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernelX(value) {\n if (this._blurKernelX === value) {\n return;\n }\n this._blurKernelX = value;\n this._preparePostProcesses();\n }\n get blurKernelX() {\n return this._blurKernelX;\n }\n /**\n * Define the blur kernel on the Y Axis used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernelY(value) {\n if (this._blurKernelY === value) {\n return;\n }\n this._blurKernelY = value;\n this._preparePostProcesses();\n }\n get blurKernelY() {\n return this._blurKernelY;\n }\n _autoComputeBlurKernel() {\n const engine = this.getScene().getEngine();\n const dw = this.getRenderWidth() / engine.getRenderWidth();\n const dh = this.getRenderHeight() / engine.getRenderHeight();\n this.blurKernelX = this._adaptiveBlurKernel * dw;\n this.blurKernelY = this._adaptiveBlurKernel * dh;\n }\n _onRatioRescale() {\n if (this._sizeRatio) {\n this.resize(this._initialSizeParameter);\n if (!this._adaptiveBlurKernel) {\n this._preparePostProcesses();\n }\n }\n if (this._adaptiveBlurKernel) {\n this._autoComputeBlurKernel();\n }\n }\n _updateGammaSpace() {\n const scene = this.getScene();\n if (!scene) {\n return;\n }\n this.gammaSpace = !scene.imageProcessingConfiguration.isEnabled || !scene.imageProcessingConfiguration.applyByPostProcess;\n }\n /**\n * Instantiates a Mirror Texture.\n * Mirror texture can be used to simulate the view from a mirror in a scene.\n * It will dynamically be rendered every frame to adapt to the camera point of view.\n * You can then easily use it as a reflectionTexture on a flat surface.\n * In case the surface is not a plane, please consider relying on reflection probes.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrors\n * @param name\n * @param size\n * @param scene\n * @param generateMipMaps\n * @param type\n * @param samplingMode\n * @param generateDepthBuffer\n */\n constructor(name, size, scene, generateMipMaps, type = 0, samplingMode = Texture.BILINEAR_SAMPLINGMODE, generateDepthBuffer = true) {\n super(name, size, scene, generateMipMaps, true, type, false, samplingMode, generateDepthBuffer);\n /**\n * Define the reflection plane we want to use. The mirrorPlane is usually set to the constructed reflector.\n * It is possible to directly set the mirrorPlane by directly using a Plane(a, b, c, d) where a, b and c give the plane normal vector (a, b, c) and d is a scalar displacement from the mirrorPlane to the origin. However in all but the very simplest of situations it is more straight forward to set it to the reflector as stated in the doc.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrors\n */\n this.mirrorPlane = new Plane(0, 1, 0, 1);\n this._transformMatrix = Matrix.Zero();\n this._mirrorMatrix = Matrix.Zero();\n this._adaptiveBlurKernel = 0;\n this._blurKernelX = 0;\n this._blurKernelY = 0;\n this._blurRatio = 1.0;\n scene = this.getScene();\n if (!scene) {\n return this;\n }\n this.ignoreCameraViewport = true;\n this._updateGammaSpace();\n this._imageProcessingConfigChangeObserver = scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this._updateGammaSpace();\n });\n const engine = scene.getEngine();\n if (engine.supportsUniformBuffers) {\n this._sceneUBO = scene.createSceneUniformBuffer(`Scene for Mirror Texture (name \"${name}\")`);\n }\n let saveClipPlane;\n this.onBeforeRenderObservable.add(() => {\n if (this._sceneUBO) {\n this._currentSceneUBO = scene.getSceneUniformBuffer();\n scene.setSceneUniformBuffer(this._sceneUBO);\n scene.getSceneUniformBuffer().unbindEffect();\n }\n Matrix.ReflectionToRef(this.mirrorPlane, this._mirrorMatrix);\n this._mirrorMatrix.multiplyToRef(scene.getViewMatrix(), this._transformMatrix);\n scene.setTransformMatrix(this._transformMatrix, scene.getProjectionMatrix());\n saveClipPlane = scene.clipPlane;\n scene.clipPlane = this.mirrorPlane;\n scene._mirroredCameraPosition = Vector3.TransformCoordinates(scene.activeCamera.globalPosition, this._mirrorMatrix);\n });\n this.onAfterRenderObservable.add(() => {\n if (this._sceneUBO) {\n scene.setSceneUniformBuffer(this._currentSceneUBO);\n }\n scene.updateTransformMatrix();\n scene._mirroredCameraPosition = null;\n scene.clipPlane = saveClipPlane;\n });\n }\n _preparePostProcesses() {\n this.clearPostProcesses(true);\n if (this._blurKernelX && this._blurKernelY) {\n const engine = this.getScene().getEngine();\n const textureType = engine.getCaps().textureFloatRender && engine.getCaps().textureFloatLinearFiltering ? 1 : 2;\n this._blurX = new BlurPostProcess(\"horizontal blur\", new Vector2(1.0, 0), this._blurKernelX, this._blurRatio, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, textureType);\n this._blurX.autoClear = false;\n if (this._blurRatio === 1 && this.samples < 2 && this._texture) {\n this._blurX.inputTexture = this._renderTarget;\n } else {\n this._blurX.alwaysForcePOT = true;\n }\n this._blurY = new BlurPostProcess(\"vertical blur\", new Vector2(0, 1.0), this._blurKernelY, this._blurRatio, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, textureType);\n this._blurY.autoClear = false;\n this._blurY.alwaysForcePOT = this._blurRatio !== 1;\n this.addPostProcess(this._blurX);\n this.addPostProcess(this._blurY);\n } else {\n if (this._blurY) {\n this.removePostProcess(this._blurY);\n this._blurY.dispose();\n this._blurY = null;\n }\n if (this._blurX) {\n this.removePostProcess(this._blurX);\n this._blurX.dispose();\n this._blurX = null;\n }\n }\n }\n /**\n * Clone the mirror texture.\n * @returns the cloned texture\n */\n clone() {\n const scene = this.getScene();\n if (!scene) {\n return this;\n }\n const textureSize = this.getSize();\n const newTexture = new MirrorTexture(this.name, textureSize.width, scene, this._renderTargetOptions.generateMipMaps, this._renderTargetOptions.type, this._renderTargetOptions.samplingMode, this._renderTargetOptions.generateDepthBuffer);\n // Base texture\n newTexture.hasAlpha = this.hasAlpha;\n newTexture.level = this.level;\n // Mirror Texture\n newTexture.mirrorPlane = this.mirrorPlane.clone();\n if (this.renderList) {\n newTexture.renderList = this.renderList.slice(0);\n }\n return newTexture;\n }\n /**\n * Serialize the texture to a JSON representation you could use in Parse later on\n * @returns the serialized JSON representation\n */\n serialize() {\n if (!this.name) {\n return null;\n }\n const serializationObject = super.serialize();\n serializationObject.mirrorPlane = this.mirrorPlane.asArray();\n return serializationObject;\n }\n /**\n * Dispose the texture and release its associated resources.\n */\n dispose() {\n var _this$_sceneUBO;\n super.dispose();\n const scene = this.getScene();\n if (scene) {\n scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigChangeObserver);\n }\n (_this$_sceneUBO = this._sceneUBO) === null || _this$_sceneUBO === void 0 || _this$_sceneUBO.dispose();\n }\n}\nTexture._CreateMirror = (name, renderTargetSize, scene, generateMipMaps) => {\n return new MirrorTexture(name, renderTargetSize, scene, generateMipMaps);\n};","map":{"version":3,"names":["Matrix","Vector3","Vector2","Texture","RenderTargetTexture","BlurPostProcess","Plane","MirrorTexture","blurRatio","value","_blurRatio","_preparePostProcesses","adaptiveBlurKernel","_adaptiveBlurKernel","_autoComputeBlurKernel","blurKernel","blurKernelX","blurKernelY","_blurKernelX","_blurKernelY","engine","getScene","getEngine","dw","getRenderWidth","dh","getRenderHeight","_onRatioRescale","_sizeRatio","resize","_initialSizeParameter","_updateGammaSpace","scene","gammaSpace","imageProcessingConfiguration","isEnabled","applyByPostProcess","constructor","name","size","generateMipMaps","type","samplingMode","BILINEAR_SAMPLINGMODE","generateDepthBuffer","mirrorPlane","_transformMatrix","Zero","_mirrorMatrix","ignoreCameraViewport","_imageProcessingConfigChangeObserver","onUpdateParameters","add","supportsUniformBuffers","_sceneUBO","createSceneUniformBuffer","saveClipPlane","onBeforeRenderObservable","_currentSceneUBO","getSceneUniformBuffer","setSceneUniformBuffer","unbindEffect","ReflectionToRef","multiplyToRef","getViewMatrix","setTransformMatrix","getProjectionMatrix","clipPlane","_mirroredCameraPosition","TransformCoordinates","activeCamera","globalPosition","onAfterRenderObservable","updateTransformMatrix","clearPostProcesses","textureType","getCaps","textureFloatRender","textureFloatLinearFiltering","_blurX","autoClear","samples","_texture","inputTexture","_renderTarget","alwaysForcePOT","_blurY","addPostProcess","removePostProcess","dispose","clone","textureSize","getSize","newTexture","width","_renderTargetOptions","hasAlpha","level","renderList","slice","serialize","serializationObject","asArray","_this$_sceneUBO","remove","_CreateMirror","renderTargetSize"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Materials/Textures/mirrorTexture.js"],"sourcesContent":["import { Matrix, Vector3, Vector2 } from \"../../Maths/math.vector.js\";\nimport { Texture } from \"../../Materials/Textures/texture.js\";\nimport { RenderTargetTexture } from \"../../Materials/Textures/renderTargetTexture.js\";\nimport { BlurPostProcess } from \"../../PostProcesses/blurPostProcess.js\";\n\nimport { Plane } from \"../../Maths/math.plane.js\";\n/**\n * Mirror texture can be used to simulate the view from a mirror in a scene.\n * It will dynamically be rendered every frame to adapt to the camera point of view.\n * You can then easily use it as a reflectionTexture on a flat surface.\n * In case the surface is not a plane, please consider relying on reflection probes.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrortexture\n */\nexport class MirrorTexture extends RenderTargetTexture {\n /**\n * Define the blur ratio used to blur the reflection if needed.\n */\n set blurRatio(value) {\n if (this._blurRatio === value) {\n return;\n }\n this._blurRatio = value;\n this._preparePostProcesses();\n }\n get blurRatio() {\n return this._blurRatio;\n }\n /**\n * Define the adaptive blur kernel used to blur the reflection if needed.\n * This will autocompute the closest best match for the `blurKernel`\n */\n set adaptiveBlurKernel(value) {\n this._adaptiveBlurKernel = value;\n this._autoComputeBlurKernel();\n }\n /**\n * Define the blur kernel used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernel(value) {\n this.blurKernelX = value;\n this.blurKernelY = value;\n }\n /**\n * Define the blur kernel on the X Axis used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernelX(value) {\n if (this._blurKernelX === value) {\n return;\n }\n this._blurKernelX = value;\n this._preparePostProcesses();\n }\n get blurKernelX() {\n return this._blurKernelX;\n }\n /**\n * Define the blur kernel on the Y Axis used to blur the reflection if needed.\n * Please consider using `adaptiveBlurKernel` as it could find the closest best value for you.\n */\n set blurKernelY(value) {\n if (this._blurKernelY === value) {\n return;\n }\n this._blurKernelY = value;\n this._preparePostProcesses();\n }\n get blurKernelY() {\n return this._blurKernelY;\n }\n _autoComputeBlurKernel() {\n const engine = this.getScene().getEngine();\n const dw = this.getRenderWidth() / engine.getRenderWidth();\n const dh = this.getRenderHeight() / engine.getRenderHeight();\n this.blurKernelX = this._adaptiveBlurKernel * dw;\n this.blurKernelY = this._adaptiveBlurKernel * dh;\n }\n _onRatioRescale() {\n if (this._sizeRatio) {\n this.resize(this._initialSizeParameter);\n if (!this._adaptiveBlurKernel) {\n this._preparePostProcesses();\n }\n }\n if (this._adaptiveBlurKernel) {\n this._autoComputeBlurKernel();\n }\n }\n _updateGammaSpace() {\n const scene = this.getScene();\n if (!scene) {\n return;\n }\n this.gammaSpace = !scene.imageProcessingConfiguration.isEnabled || !scene.imageProcessingConfiguration.applyByPostProcess;\n }\n /**\n * Instantiates a Mirror Texture.\n * Mirror texture can be used to simulate the view from a mirror in a scene.\n * It will dynamically be rendered every frame to adapt to the camera point of view.\n * You can then easily use it as a reflectionTexture on a flat surface.\n * In case the surface is not a plane, please consider relying on reflection probes.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrors\n * @param name\n * @param size\n * @param scene\n * @param generateMipMaps\n * @param type\n * @param samplingMode\n * @param generateDepthBuffer\n */\n constructor(name, size, scene, generateMipMaps, type = 0, samplingMode = Texture.BILINEAR_SAMPLINGMODE, generateDepthBuffer = true) {\n super(name, size, scene, generateMipMaps, true, type, false, samplingMode, generateDepthBuffer);\n /**\n * Define the reflection plane we want to use. The mirrorPlane is usually set to the constructed reflector.\n * It is possible to directly set the mirrorPlane by directly using a Plane(a, b, c, d) where a, b and c give the plane normal vector (a, b, c) and d is a scalar displacement from the mirrorPlane to the origin. However in all but the very simplest of situations it is more straight forward to set it to the reflector as stated in the doc.\n * @see https://doc.babylonjs.com/features/featuresDeepDive/materials/using/reflectionTexture#mirrors\n */\n this.mirrorPlane = new Plane(0, 1, 0, 1);\n this._transformMatrix = Matrix.Zero();\n this._mirrorMatrix = Matrix.Zero();\n this._adaptiveBlurKernel = 0;\n this._blurKernelX = 0;\n this._blurKernelY = 0;\n this._blurRatio = 1.0;\n scene = this.getScene();\n if (!scene) {\n return this;\n }\n this.ignoreCameraViewport = true;\n this._updateGammaSpace();\n this._imageProcessingConfigChangeObserver = scene.imageProcessingConfiguration.onUpdateParameters.add(() => {\n this._updateGammaSpace();\n });\n const engine = scene.getEngine();\n if (engine.supportsUniformBuffers) {\n this._sceneUBO = scene.createSceneUniformBuffer(`Scene for Mirror Texture (name \"${name}\")`);\n }\n let saveClipPlane;\n this.onBeforeRenderObservable.add(() => {\n if (this._sceneUBO) {\n this._currentSceneUBO = scene.getSceneUniformBuffer();\n scene.setSceneUniformBuffer(this._sceneUBO);\n scene.getSceneUniformBuffer().unbindEffect();\n }\n Matrix.ReflectionToRef(this.mirrorPlane, this._mirrorMatrix);\n this._mirrorMatrix.multiplyToRef(scene.getViewMatrix(), this._transformMatrix);\n scene.setTransformMatrix(this._transformMatrix, scene.getProjectionMatrix());\n saveClipPlane = scene.clipPlane;\n scene.clipPlane = this.mirrorPlane;\n scene._mirroredCameraPosition = Vector3.TransformCoordinates(scene.activeCamera.globalPosition, this._mirrorMatrix);\n });\n this.onAfterRenderObservable.add(() => {\n if (this._sceneUBO) {\n scene.setSceneUniformBuffer(this._currentSceneUBO);\n }\n scene.updateTransformMatrix();\n scene._mirroredCameraPosition = null;\n scene.clipPlane = saveClipPlane;\n });\n }\n _preparePostProcesses() {\n this.clearPostProcesses(true);\n if (this._blurKernelX && this._blurKernelY) {\n const engine = this.getScene().getEngine();\n const textureType = engine.getCaps().textureFloatRender && engine.getCaps().textureFloatLinearFiltering ? 1 : 2;\n this._blurX = new BlurPostProcess(\"horizontal blur\", new Vector2(1.0, 0), this._blurKernelX, this._blurRatio, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, textureType);\n this._blurX.autoClear = false;\n if (this._blurRatio === 1 && this.samples < 2 && this._texture) {\n this._blurX.inputTexture = this._renderTarget;\n }\n else {\n this._blurX.alwaysForcePOT = true;\n }\n this._blurY = new BlurPostProcess(\"vertical blur\", new Vector2(0, 1.0), this._blurKernelY, this._blurRatio, null, Texture.BILINEAR_SAMPLINGMODE, engine, false, textureType);\n this._blurY.autoClear = false;\n this._blurY.alwaysForcePOT = this._blurRatio !== 1;\n this.addPostProcess(this._blurX);\n this.addPostProcess(this._blurY);\n }\n else {\n if (this._blurY) {\n this.removePostProcess(this._blurY);\n this._blurY.dispose();\n this._blurY = null;\n }\n if (this._blurX) {\n this.removePostProcess(this._blurX);\n this._blurX.dispose();\n this._blurX = null;\n }\n }\n }\n /**\n * Clone the mirror texture.\n * @returns the cloned texture\n */\n clone() {\n const scene = this.getScene();\n if (!scene) {\n return this;\n }\n const textureSize = this.getSize();\n const newTexture = new MirrorTexture(this.name, textureSize.width, scene, this._renderTargetOptions.generateMipMaps, this._renderTargetOptions.type, this._renderTargetOptions.samplingMode, this._renderTargetOptions.generateDepthBuffer);\n // Base texture\n newTexture.hasAlpha = this.hasAlpha;\n newTexture.level = this.level;\n // Mirror Texture\n newTexture.mirrorPlane = this.mirrorPlane.clone();\n if (this.renderList) {\n newTexture.renderList = this.renderList.slice(0);\n }\n return newTexture;\n }\n /**\n * Serialize the texture to a JSON representation you could use in Parse later on\n * @returns the serialized JSON representation\n */\n serialize() {\n if (!this.name) {\n return null;\n }\n const serializationObject = super.serialize();\n serializationObject.mirrorPlane = this.mirrorPlane.asArray();\n return serializationObject;\n }\n /**\n * Dispose the texture and release its associated resources.\n */\n dispose() {\n super.dispose();\n const scene = this.getScene();\n if (scene) {\n scene.imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingConfigChangeObserver);\n }\n this._sceneUBO?.dispose();\n }\n}\nTexture._CreateMirror = (name, renderTargetSize, scene, generateMipMaps) => {\n return new MirrorTexture(name, renderTargetSize, scene, generateMipMaps);\n};\n"],"mappings":"AAAA,SAASA,MAAM,EAAEC,OAAO,EAAEC,OAAO,QAAQ,4BAA4B;AACrE,SAASC,OAAO,QAAQ,qCAAqC;AAC7D,SAASC,mBAAmB,QAAQ,iDAAiD;AACrF,SAASC,eAAe,QAAQ,wCAAwC;AAExE,SAASC,KAAK,QAAQ,2BAA2B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,SAASH,mBAAmB,CAAC;EACnD;AACJ;AACA;EACI,IAAII,SAASA,CAACC,KAAK,EAAE;IACjB,IAAI,IAAI,CAACC,UAAU,KAAKD,KAAK,EAAE;MAC3B;IACJ;IACA,IAAI,CAACC,UAAU,GAAGD,KAAK;IACvB,IAAI,CAACE,qBAAqB,CAAC,CAAC;EAChC;EACA,IAAIH,SAASA,CAAA,EAAG;IACZ,OAAO,IAAI,CAACE,UAAU;EAC1B;EACA;AACJ;AACA;AACA;EACI,IAAIE,kBAAkBA,CAACH,KAAK,EAAE;IAC1B,IAAI,CAACI,mBAAmB,GAAGJ,KAAK;IAChC,IAAI,CAACK,sBAAsB,CAAC,CAAC;EACjC;EACA;AACJ;AACA;AACA;EACI,IAAIC,UAAUA,CAACN,KAAK,EAAE;IAClB,IAAI,CAACO,WAAW,GAAGP,KAAK;IACxB,IAAI,CAACQ,WAAW,GAAGR,KAAK;EAC5B;EACA;AACJ;AACA;AACA;EACI,IAAIO,WAAWA,CAACP,KAAK,EAAE;IACnB,IAAI,IAAI,CAACS,YAAY,KAAKT,KAAK,EAAE;MAC7B;IACJ;IACA,IAAI,CAACS,YAAY,GAAGT,KAAK;IACzB,IAAI,CAACE,qBAAqB,CAAC,CAAC;EAChC;EACA,IAAIK,WAAWA,CAAA,EAAG;IACd,OAAO,IAAI,CAACE,YAAY;EAC5B;EACA;AACJ;AACA;AACA;EACI,IAAID,WAAWA,CAACR,KAAK,EAAE;IACnB,IAAI,IAAI,CAACU,YAAY,KAAKV,KAAK,EAAE;MAC7B;IACJ;IACA,IAAI,CAACU,YAAY,GAAGV,KAAK;IACzB,IAAI,CAACE,qBAAqB,CAAC,CAAC;EAChC;EACA,IAAIM,WAAWA,CAAA,EAAG;IACd,OAAO,IAAI,CAACE,YAAY;EAC5B;EACAL,sBAAsBA,CAAA,EAAG;IACrB,MAAMM,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC;IAC1C,MAAMC,EAAE,GAAG,IAAI,CAACC,cAAc,CAAC,CAAC,GAAGJ,MAAM,CAACI,cAAc,CAAC,CAAC;IAC1D,MAAMC,EAAE,GAAG,IAAI,CAACC,eAAe,CAAC,CAAC,GAAGN,MAAM,CAACM,eAAe,CAAC,CAAC;IAC5D,IAAI,CAACV,WAAW,GAAG,IAAI,CAACH,mBAAmB,GAAGU,EAAE;IAChD,IAAI,CAACN,WAAW,GAAG,IAAI,CAACJ,mBAAmB,GAAGY,EAAE;EACpD;EACAE,eAAeA,CAAA,EAAG;IACd,IAAI,IAAI,CAACC,UAAU,EAAE;MACjB,IAAI,CAACC,MAAM,CAAC,IAAI,CAACC,qBAAqB,CAAC;MACvC,IAAI,CAAC,IAAI,CAACjB,mBAAmB,EAAE;QAC3B,IAAI,CAACF,qBAAqB,CAAC,CAAC;MAChC;IACJ;IACA,IAAI,IAAI,CAACE,mBAAmB,EAAE;MAC1B,IAAI,CAACC,sBAAsB,CAAC,CAAC;IACjC;EACJ;EACAiB,iBAAiBA,CAAA,EAAG;IAChB,MAAMC,KAAK,GAAG,IAAI,CAACX,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAACW,KAAK,EAAE;MACR;IACJ;IACA,IAAI,CAACC,UAAU,GAAG,CAACD,KAAK,CAACE,4BAA4B,CAACC,SAAS,IAAI,CAACH,KAAK,CAACE,4BAA4B,CAACE,kBAAkB;EAC7H;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIC,WAAWA,CAACC,IAAI,EAAEC,IAAI,EAAEP,KAAK,EAAEQ,eAAe,EAAEC,IAAI,GAAG,CAAC,EAAEC,YAAY,GAAGvC,OAAO,CAACwC,qBAAqB,EAAEC,mBAAmB,GAAG,IAAI,EAAE;IAChI,KAAK,CAACN,IAAI,EAAEC,IAAI,EAAEP,KAAK,EAAEQ,eAAe,EAAE,IAAI,EAAEC,IAAI,EAAE,KAAK,EAAEC,YAAY,EAAEE,mBAAmB,CAAC;IAC/F;AACR;AACA;AACA;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,IAAIvC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAACwC,gBAAgB,GAAG9C,MAAM,CAAC+C,IAAI,CAAC,CAAC;IACrC,IAAI,CAACC,aAAa,GAAGhD,MAAM,CAAC+C,IAAI,CAAC,CAAC;IAClC,IAAI,CAAClC,mBAAmB,GAAG,CAAC;IAC5B,IAAI,CAACK,YAAY,GAAG,CAAC;IACrB,IAAI,CAACC,YAAY,GAAG,CAAC;IACrB,IAAI,CAACT,UAAU,GAAG,GAAG;IACrBsB,KAAK,GAAG,IAAI,CAACX,QAAQ,CAAC,CAAC;IACvB,IAAI,CAACW,KAAK,EAAE;MACR,OAAO,IAAI;IACf;IACA,IAAI,CAACiB,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAAClB,iBAAiB,CAAC,CAAC;IACxB,IAAI,CAACmB,oCAAoC,GAAGlB,KAAK,CAACE,4BAA4B,CAACiB,kBAAkB,CAACC,GAAG,CAAC,MAAM;MACxG,IAAI,CAACrB,iBAAiB,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,MAAMX,MAAM,GAAGY,KAAK,CAACV,SAAS,CAAC,CAAC;IAChC,IAAIF,MAAM,CAACiC,sBAAsB,EAAE;MAC/B,IAAI,CAACC,SAAS,GAAGtB,KAAK,CAACuB,wBAAwB,CAAC,mCAAmCjB,IAAI,IAAI,CAAC;IAChG;IACA,IAAIkB,aAAa;IACjB,IAAI,CAACC,wBAAwB,CAACL,GAAG,CAAC,MAAM;MACpC,IAAI,IAAI,CAACE,SAAS,EAAE;QAChB,IAAI,CAACI,gBAAgB,GAAG1B,KAAK,CAAC2B,qBAAqB,CAAC,CAAC;QACrD3B,KAAK,CAAC4B,qBAAqB,CAAC,IAAI,CAACN,SAAS,CAAC;QAC3CtB,KAAK,CAAC2B,qBAAqB,CAAC,CAAC,CAACE,YAAY,CAAC,CAAC;MAChD;MACA7D,MAAM,CAAC8D,eAAe,CAAC,IAAI,CAACjB,WAAW,EAAE,IAAI,CAACG,aAAa,CAAC;MAC5D,IAAI,CAACA,aAAa,CAACe,aAAa,CAAC/B,KAAK,CAACgC,aAAa,CAAC,CAAC,EAAE,IAAI,CAAClB,gBAAgB,CAAC;MAC9Ed,KAAK,CAACiC,kBAAkB,CAAC,IAAI,CAACnB,gBAAgB,EAAEd,KAAK,CAACkC,mBAAmB,CAAC,CAAC,CAAC;MAC5EV,aAAa,GAAGxB,KAAK,CAACmC,SAAS;MAC/BnC,KAAK,CAACmC,SAAS,GAAG,IAAI,CAACtB,WAAW;MAClCb,KAAK,CAACoC,uBAAuB,GAAGnE,OAAO,CAACoE,oBAAoB,CAACrC,KAAK,CAACsC,YAAY,CAACC,cAAc,EAAE,IAAI,CAACvB,aAAa,CAAC;IACvH,CAAC,CAAC;IACF,IAAI,CAACwB,uBAAuB,CAACpB,GAAG,CAAC,MAAM;MACnC,IAAI,IAAI,CAACE,SAAS,EAAE;QAChBtB,KAAK,CAAC4B,qBAAqB,CAAC,IAAI,CAACF,gBAAgB,CAAC;MACtD;MACA1B,KAAK,CAACyC,qBAAqB,CAAC,CAAC;MAC7BzC,KAAK,CAACoC,uBAAuB,GAAG,IAAI;MACpCpC,KAAK,CAACmC,SAAS,GAAGX,aAAa;IACnC,CAAC,CAAC;EACN;EACA7C,qBAAqBA,CAAA,EAAG;IACpB,IAAI,CAAC+D,kBAAkB,CAAC,IAAI,CAAC;IAC7B,IAAI,IAAI,CAACxD,YAAY,IAAI,IAAI,CAACC,YAAY,EAAE;MACxC,MAAMC,MAAM,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC,CAACC,SAAS,CAAC,CAAC;MAC1C,MAAMqD,WAAW,GAAGvD,MAAM,CAACwD,OAAO,CAAC,CAAC,CAACC,kBAAkB,IAAIzD,MAAM,CAACwD,OAAO,CAAC,CAAC,CAACE,2BAA2B,GAAG,CAAC,GAAG,CAAC;MAC/G,IAAI,CAACC,MAAM,GAAG,IAAI1E,eAAe,CAAC,iBAAiB,EAAE,IAAIH,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,CAACgB,YAAY,EAAE,IAAI,CAACR,UAAU,EAAE,IAAI,EAAEP,OAAO,CAACwC,qBAAqB,EAAEvB,MAAM,EAAE,KAAK,EAAEuD,WAAW,CAAC;MAC9K,IAAI,CAACI,MAAM,CAACC,SAAS,GAAG,KAAK;MAC7B,IAAI,IAAI,CAACtE,UAAU,KAAK,CAAC,IAAI,IAAI,CAACuE,OAAO,GAAG,CAAC,IAAI,IAAI,CAACC,QAAQ,EAAE;QAC5D,IAAI,CAACH,MAAM,CAACI,YAAY,GAAG,IAAI,CAACC,aAAa;MACjD,CAAC,MACI;QACD,IAAI,CAACL,MAAM,CAACM,cAAc,GAAG,IAAI;MACrC;MACA,IAAI,CAACC,MAAM,GAAG,IAAIjF,eAAe,CAAC,eAAe,EAAE,IAAIH,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAACiB,YAAY,EAAE,IAAI,CAACT,UAAU,EAAE,IAAI,EAAEP,OAAO,CAACwC,qBAAqB,EAAEvB,MAAM,EAAE,KAAK,EAAEuD,WAAW,CAAC;MAC5K,IAAI,CAACW,MAAM,CAACN,SAAS,GAAG,KAAK;MAC7B,IAAI,CAACM,MAAM,CAACD,cAAc,GAAG,IAAI,CAAC3E,UAAU,KAAK,CAAC;MAClD,IAAI,CAAC6E,cAAc,CAAC,IAAI,CAACR,MAAM,CAAC;MAChC,IAAI,CAACQ,cAAc,CAAC,IAAI,CAACD,MAAM,CAAC;IACpC,CAAC,MACI;MACD,IAAI,IAAI,CAACA,MAAM,EAAE;QACb,IAAI,CAACE,iBAAiB,CAAC,IAAI,CAACF,MAAM,CAAC;QACnC,IAAI,CAACA,MAAM,CAACG,OAAO,CAAC,CAAC;QACrB,IAAI,CAACH,MAAM,GAAG,IAAI;MACtB;MACA,IAAI,IAAI,CAACP,MAAM,EAAE;QACb,IAAI,CAACS,iBAAiB,CAAC,IAAI,CAACT,MAAM,CAAC;QACnC,IAAI,CAACA,MAAM,CAACU,OAAO,CAAC,CAAC;QACrB,IAAI,CAACV,MAAM,GAAG,IAAI;MACtB;IACJ;EACJ;EACA;AACJ;AACA;AACA;EACIW,KAAKA,CAAA,EAAG;IACJ,MAAM1D,KAAK,GAAG,IAAI,CAACX,QAAQ,CAAC,CAAC;IAC7B,IAAI,CAACW,KAAK,EAAE;MACR,OAAO,IAAI;IACf;IACA,MAAM2D,WAAW,GAAG,IAAI,CAACC,OAAO,CAAC,CAAC;IAClC,MAAMC,UAAU,GAAG,IAAItF,aAAa,CAAC,IAAI,CAAC+B,IAAI,EAAEqD,WAAW,CAACG,KAAK,EAAE9D,KAAK,EAAE,IAAI,CAAC+D,oBAAoB,CAACvD,eAAe,EAAE,IAAI,CAACuD,oBAAoB,CAACtD,IAAI,EAAE,IAAI,CAACsD,oBAAoB,CAACrD,YAAY,EAAE,IAAI,CAACqD,oBAAoB,CAACnD,mBAAmB,CAAC;IAC3O;IACAiD,UAAU,CAACG,QAAQ,GAAG,IAAI,CAACA,QAAQ;IACnCH,UAAU,CAACI,KAAK,GAAG,IAAI,CAACA,KAAK;IAC7B;IACAJ,UAAU,CAAChD,WAAW,GAAG,IAAI,CAACA,WAAW,CAAC6C,KAAK,CAAC,CAAC;IACjD,IAAI,IAAI,CAACQ,UAAU,EAAE;MACjBL,UAAU,CAACK,UAAU,GAAG,IAAI,CAACA,UAAU,CAACC,KAAK,CAAC,CAAC,CAAC;IACpD;IACA,OAAON,UAAU;EACrB;EACA;AACJ;AACA;AACA;EACIO,SAASA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAC9D,IAAI,EAAE;MACZ,OAAO,IAAI;IACf;IACA,MAAM+D,mBAAmB,GAAG,KAAK,CAACD,SAAS,CAAC,CAAC;IAC7CC,mBAAmB,CAACxD,WAAW,GAAG,IAAI,CAACA,WAAW,CAACyD,OAAO,CAAC,CAAC;IAC5D,OAAOD,mBAAmB;EAC9B;EACA;AACJ;AACA;EACIZ,OAAOA,CAAA,EAAG;IAAA,IAAAc,eAAA;IACN,KAAK,CAACd,OAAO,CAAC,CAAC;IACf,MAAMzD,KAAK,GAAG,IAAI,CAACX,QAAQ,CAAC,CAAC;IAC7B,IAAIW,KAAK,EAAE;MACPA,KAAK,CAACE,4BAA4B,CAACiB,kBAAkB,CAACqD,MAAM,CAAC,IAAI,CAACtD,oCAAoC,CAAC;IAC3G;IACA,CAAAqD,eAAA,OAAI,CAACjD,SAAS,cAAAiD,eAAA,eAAdA,eAAA,CAAgBd,OAAO,CAAC,CAAC;EAC7B;AACJ;AACAtF,OAAO,CAACsG,aAAa,GAAG,CAACnE,IAAI,EAAEoE,gBAAgB,EAAE1E,KAAK,EAAEQ,eAAe,KAAK;EACxE,OAAO,IAAIjC,aAAa,CAAC+B,IAAI,EAAEoE,gBAAgB,EAAE1E,KAAK,EAAEQ,eAAe,CAAC;AAC5E,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|