1 |
- {"ast":null,"code":"import { __decorate } from \"../tslib.es6.js\";\nimport { PostProcess } from \"./postProcess.js\";\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer.js\";\nimport { serialize } from \"../Misc/decorators.js\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization.js\";\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration.js\";\nimport \"../Shaders/screenSpaceReflection.fragment.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { Logger } from \"../Misc/logger.js\";\n/**\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\n * @deprecated Use the new SSRRenderingPipeline instead.\n */\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\n get _geometryBufferRenderer() {\n if (!this._forceGeometryBuffer) {\n return null;\n }\n return this._scene.geometryBufferRenderer;\n }\n get _prePassRenderer() {\n if (this._forceGeometryBuffer) {\n return null;\n }\n return this._scene.prePassRenderer;\n }\n /**\n * Gets a string identifying the name of the class\n * @returns \"ScreenSpaceReflectionPostProcess\" string\n */\n getClassName() {\n return \"ScreenSpaceReflectionPostProcess\";\n }\n /**\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\n * @param name The name of the effect.\n * @param scene The scene containing the objects to calculate reflections.\n * @param options The required width/height ratio to downsize to before computing the render pass.\n * @param camera The camera to apply the render pass to.\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\n * @param engine The engine which the post process will be applied. (default: current engine)\n * @param reusable If the post process can be reused on the same frame. (default: false)\n * @param textureType Type of textures used when performing the post process. (default: 0)\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\n */\n constructor(name, scene, options, camera, samplingMode, engine, reusable, textureType = 0, blockCompilation = false, forceGeometryBuffer = false) {\n super(name, \"screenSpaceReflection\", [\"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"stepSize\", \"roughnessFactor\"], [\"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"], options, camera, samplingMode, engine, reusable, \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\", textureType, undefined, null, blockCompilation);\n /**\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\n */\n this.threshold = 1.2;\n /**\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\n */\n this.strength = 1;\n /**\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\n */\n this.reflectionSpecularFalloffExponent = 3;\n /**\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\n */\n this.step = 1.0;\n /**\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\n */\n this.roughnessFactor = 0.2;\n this._forceGeometryBuffer = false;\n this._enableSmoothReflections = false;\n this._reflectionSamples = 64;\n this._smoothSteps = 5;\n this._forceGeometryBuffer = forceGeometryBuffer;\n if (this._forceGeometryBuffer) {\n // Get geometry buffer renderer and update effect\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\n if (geometryBufferRenderer) {\n if (geometryBufferRenderer.isSupported) {\n geometryBufferRenderer.enablePosition = true;\n geometryBufferRenderer.enableReflectivity = true;\n if (geometryBufferRenderer.generateNormalsInWorldSpace) {\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\n }\n }\n }\n } else {\n const prePassRenderer = scene.enablePrePassRenderer();\n prePassRenderer === null || prePassRenderer === void 0 || prePassRenderer.markAsDirty();\n if (prePassRenderer !== null && prePassRenderer !== void 0 && prePassRenderer.generateNormalsInWorldSpace) {\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the prepass renderer!\");\n }\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\n }\n this._updateEffectDefines();\n // On apply, send uniforms\n this.onApply = effect => {\n const geometryBufferRenderer = this._geometryBufferRenderer;\n const prePassRenderer = this._prePassRenderer;\n if (!prePassRenderer && !geometryBufferRenderer) {\n return;\n }\n if (geometryBufferRenderer) {\n // Samplers\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\n } else if (prePassRenderer) {\n // Samplers\n const positionIndex = prePassRenderer.getIndex(1);\n const roughnessIndex = prePassRenderer.getIndex(3);\n const normalIndex = prePassRenderer.getIndex(6);\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\n }\n // Uniforms\n const camera = scene.activeCamera;\n if (!camera) {\n return;\n }\n const viewMatrix = camera.getViewMatrix(true);\n const projectionMatrix = camera.getProjectionMatrix(true);\n effect.setMatrix(\"projection\", projectionMatrix);\n effect.setMatrix(\"view\", viewMatrix);\n effect.setFloat(\"threshold\", this.threshold);\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\n effect.setFloat(\"strength\", this.strength);\n effect.setFloat(\"stepSize\", this.step);\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\n };\n this._isSceneRightHanded = scene.useRightHandedSystem;\n }\n /**\n * Gets whether or not smoothing reflections is enabled.\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\n */\n get enableSmoothReflections() {\n return this._enableSmoothReflections;\n }\n /**\n * Sets whether or not smoothing reflections is enabled.\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\n */\n set enableSmoothReflections(enabled) {\n if (enabled === this._enableSmoothReflections) {\n return;\n }\n this._enableSmoothReflections = enabled;\n this._updateEffectDefines();\n }\n /**\n * Gets the number of samples taken while computing reflections. More samples count is high,\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\n */\n get reflectionSamples() {\n return this._reflectionSamples;\n }\n /**\n * Sets the number of samples taken while computing reflections. More samples count is high,\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\n */\n set reflectionSamples(samples) {\n if (samples === this._reflectionSamples) {\n return;\n }\n this._reflectionSamples = samples;\n this._updateEffectDefines();\n }\n /**\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\n * more the post-process will require GPU power and can generate a drop in FPS.\n * Default value (5.0) work pretty well in all cases but can be adjusted.\n */\n get smoothSteps() {\n return this._smoothSteps;\n }\n /*\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\n * more the post-process will require GPU power and can generate a drop in FPS.\n * Default value (5.0) work pretty well in all cases but can be adjusted.\n */\n set smoothSteps(steps) {\n if (steps === this._smoothSteps) {\n return;\n }\n this._smoothSteps = steps;\n this._updateEffectDefines();\n }\n _updateEffectDefines() {\n const defines = [];\n if (this._geometryBufferRenderer || this._prePassRenderer) {\n defines.push(\"#define SSR_SUPPORTED\");\n }\n if (this._enableSmoothReflections) {\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\n }\n if (this._isSceneRightHanded) {\n defines.push(\"#define RIGHT_HANDED_SCENE\");\n }\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\n this.updateEffect(defines.join(\"\\n\"));\n }\n /**\n * @internal\n */\n static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {\n return SerializationHelper.Parse(() => {\n return new ScreenSpaceReflectionPostProcess(parsedPostProcess.name, scene, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\n }, parsedPostProcess, scene, rootUrl);\n }\n}\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"threshold\", void 0);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"strength\", void 0);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"reflectionSpecularFalloffExponent\", void 0);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"step\", void 0);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"roughnessFactor\", void 0);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"enableSmoothReflections\", null);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"reflectionSamples\", null);\n__decorate([serialize()], ScreenSpaceReflectionPostProcess.prototype, \"smoothSteps\", null);\nRegisterClass(\"BABYLON.ScreenSpaceReflectionPostProcess\", ScreenSpaceReflectionPostProcess);","map":{"version":3,"names":["__decorate","PostProcess","GeometryBufferRenderer","serialize","SerializationHelper","ScreenSpaceReflectionsConfiguration","RegisterClass","Logger","ScreenSpaceReflectionPostProcess","_geometryBufferRenderer","_forceGeometryBuffer","_scene","geometryBufferRenderer","_prePassRenderer","prePassRenderer","getClassName","constructor","name","scene","options","camera","samplingMode","engine","reusable","textureType","blockCompilation","forceGeometryBuffer","undefined","threshold","strength","reflectionSpecularFalloffExponent","step","roughnessFactor","_enableSmoothReflections","_reflectionSamples","_smoothSteps","enableGeometryBufferRenderer","isSupported","enablePosition","enableReflectivity","generateNormalsInWorldSpace","Error","enablePrePassRenderer","markAsDirty","_prePassEffectConfiguration","_updateEffectDefines","onApply","effect","positionIndex","getTextureIndex","POSITION_TEXTURE_TYPE","roughnessIndex","REFLECTIVITY_TEXTURE_TYPE","setTexture","getGBuffer","textures","getIndex","normalIndex","getRenderTarget","activeCamera","viewMatrix","getViewMatrix","projectionMatrix","getProjectionMatrix","setMatrix","setFloat","_isSceneRightHanded","useRightHandedSystem","enableSmoothReflections","enabled","reflectionSamples","samples","smoothSteps","steps","defines","push","updateEffect","join","_Parse","parsedPostProcess","targetCamera","rootUrl","Parse","renderTargetSamplingMode","getEngine","prototype"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/PostProcesses/screenSpaceReflectionPostProcess.js"],"sourcesContent":["import { __decorate } from \"../tslib.es6.js\";\nimport { PostProcess } from \"./postProcess.js\";\n\nimport { GeometryBufferRenderer } from \"../Rendering/geometryBufferRenderer.js\";\nimport { serialize } from \"../Misc/decorators.js\";\nimport { SerializationHelper } from \"../Misc/decorators.serialization.js\";\nimport { ScreenSpaceReflectionsConfiguration } from \"../Rendering/screenSpaceReflectionsConfiguration.js\";\nimport \"../Shaders/screenSpaceReflection.fragment.js\";\nimport { RegisterClass } from \"../Misc/typeStore.js\";\nimport { Logger } from \"../Misc/logger.js\";\n/**\n * The ScreenSpaceReflectionPostProcess performs realtime reflections using only and only the available informations on the screen (positions and normals).\n * Basically, the screen space reflection post-process will compute reflections according the material's reflectivity.\n * @deprecated Use the new SSRRenderingPipeline instead.\n */\nexport class ScreenSpaceReflectionPostProcess extends PostProcess {\n get _geometryBufferRenderer() {\n if (!this._forceGeometryBuffer) {\n return null;\n }\n return this._scene.geometryBufferRenderer;\n }\n get _prePassRenderer() {\n if (this._forceGeometryBuffer) {\n return null;\n }\n return this._scene.prePassRenderer;\n }\n /**\n * Gets a string identifying the name of the class\n * @returns \"ScreenSpaceReflectionPostProcess\" string\n */\n getClassName() {\n return \"ScreenSpaceReflectionPostProcess\";\n }\n /**\n * Creates a new instance of ScreenSpaceReflectionPostProcess.\n * @param name The name of the effect.\n * @param scene The scene containing the objects to calculate reflections.\n * @param options The required width/height ratio to downsize to before computing the render pass.\n * @param camera The camera to apply the render pass to.\n * @param samplingMode The sampling mode to be used when computing the pass. (default: 0)\n * @param engine The engine which the post process will be applied. (default: current engine)\n * @param reusable If the post process can be reused on the same frame. (default: false)\n * @param textureType Type of textures used when performing the post process. (default: 0)\n * @param blockCompilation If compilation of the shader should not be done in the constructor. The updateEffect method can be used to compile the shader at a later time. (default: true)\n * @param forceGeometryBuffer If this post process should use geometry buffer instead of prepass (default: false)\n */\n constructor(name, scene, options, camera, samplingMode, engine, reusable, textureType = 0, blockCompilation = false, forceGeometryBuffer = false) {\n super(name, \"screenSpaceReflection\", [\"projection\", \"view\", \"threshold\", \"reflectionSpecularFalloffExponent\", \"strength\", \"stepSize\", \"roughnessFactor\"], [\"textureSampler\", \"normalSampler\", \"positionSampler\", \"reflectivitySampler\"], options, camera, samplingMode, engine, reusable, \"#define SSR_SUPPORTED\\n#define REFLECTION_SAMPLES 64\\n#define SMOOTH_STEPS 5\\n\", textureType, undefined, null, blockCompilation);\n /**\n * Gets or sets a reflection threshold mainly used to adjust the reflection's height.\n */\n this.threshold = 1.2;\n /**\n * Gets or sets the current reflection strength. 1.0 is an ideal value but can be increased/decreased for particular results.\n */\n this.strength = 1;\n /**\n * Gets or sets the falloff exponent used while computing fresnel. More the exponent is high, more the reflections will be discrete.\n */\n this.reflectionSpecularFalloffExponent = 3;\n /**\n * Gets or sets the step size used to iterate until the effect finds the color of the reflection's pixel. Typically in interval [0.1, 1.0]\n */\n this.step = 1.0;\n /**\n * Gets or sets the factor applied when computing roughness. Default value is 0.2.\n */\n this.roughnessFactor = 0.2;\n this._forceGeometryBuffer = false;\n this._enableSmoothReflections = false;\n this._reflectionSamples = 64;\n this._smoothSteps = 5;\n this._forceGeometryBuffer = forceGeometryBuffer;\n if (this._forceGeometryBuffer) {\n // Get geometry buffer renderer and update effect\n const geometryBufferRenderer = scene.enableGeometryBufferRenderer();\n if (geometryBufferRenderer) {\n if (geometryBufferRenderer.isSupported) {\n geometryBufferRenderer.enablePosition = true;\n geometryBufferRenderer.enableReflectivity = true;\n if (geometryBufferRenderer.generateNormalsInWorldSpace) {\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the geometry buffer renderer!\");\n }\n }\n }\n }\n else {\n const prePassRenderer = scene.enablePrePassRenderer();\n prePassRenderer?.markAsDirty();\n if (prePassRenderer?.generateNormalsInWorldSpace) {\n Logger.Error(\"ScreenSpaceReflectionPostProcess does not support generateNormalsInWorldSpace=true for the prepass renderer!\");\n }\n this._prePassEffectConfiguration = new ScreenSpaceReflectionsConfiguration();\n }\n this._updateEffectDefines();\n // On apply, send uniforms\n this.onApply = (effect) => {\n const geometryBufferRenderer = this._geometryBufferRenderer;\n const prePassRenderer = this._prePassRenderer;\n if (!prePassRenderer && !geometryBufferRenderer) {\n return;\n }\n if (geometryBufferRenderer) {\n // Samplers\n const positionIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.POSITION_TEXTURE_TYPE);\n const roughnessIndex = geometryBufferRenderer.getTextureIndex(GeometryBufferRenderer.REFLECTIVITY_TEXTURE_TYPE);\n effect.setTexture(\"normalSampler\", geometryBufferRenderer.getGBuffer().textures[1]);\n effect.setTexture(\"positionSampler\", geometryBufferRenderer.getGBuffer().textures[positionIndex]);\n effect.setTexture(\"reflectivitySampler\", geometryBufferRenderer.getGBuffer().textures[roughnessIndex]);\n }\n else if (prePassRenderer) {\n // Samplers\n const positionIndex = prePassRenderer.getIndex(1);\n const roughnessIndex = prePassRenderer.getIndex(3);\n const normalIndex = prePassRenderer.getIndex(6);\n effect.setTexture(\"normalSampler\", prePassRenderer.getRenderTarget().textures[normalIndex]);\n effect.setTexture(\"positionSampler\", prePassRenderer.getRenderTarget().textures[positionIndex]);\n effect.setTexture(\"reflectivitySampler\", prePassRenderer.getRenderTarget().textures[roughnessIndex]);\n }\n // Uniforms\n const camera = scene.activeCamera;\n if (!camera) {\n return;\n }\n const viewMatrix = camera.getViewMatrix(true);\n const projectionMatrix = camera.getProjectionMatrix(true);\n effect.setMatrix(\"projection\", projectionMatrix);\n effect.setMatrix(\"view\", viewMatrix);\n effect.setFloat(\"threshold\", this.threshold);\n effect.setFloat(\"reflectionSpecularFalloffExponent\", this.reflectionSpecularFalloffExponent);\n effect.setFloat(\"strength\", this.strength);\n effect.setFloat(\"stepSize\", this.step);\n effect.setFloat(\"roughnessFactor\", this.roughnessFactor);\n };\n this._isSceneRightHanded = scene.useRightHandedSystem;\n }\n /**\n * Gets whether or not smoothing reflections is enabled.\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\n */\n get enableSmoothReflections() {\n return this._enableSmoothReflections;\n }\n /**\n * Sets whether or not smoothing reflections is enabled.\n * Enabling smoothing will require more GPU power and can generate a drop in FPS.\n */\n set enableSmoothReflections(enabled) {\n if (enabled === this._enableSmoothReflections) {\n return;\n }\n this._enableSmoothReflections = enabled;\n this._updateEffectDefines();\n }\n /**\n * Gets the number of samples taken while computing reflections. More samples count is high,\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\n */\n get reflectionSamples() {\n return this._reflectionSamples;\n }\n /**\n * Sets the number of samples taken while computing reflections. More samples count is high,\n * more the post-process wil require GPU power and can generate a drop in FPS. Basically in interval [25, 100].\n */\n set reflectionSamples(samples) {\n if (samples === this._reflectionSamples) {\n return;\n }\n this._reflectionSamples = samples;\n this._updateEffectDefines();\n }\n /**\n * Gets the number of samples taken while smoothing reflections. More samples count is high,\n * more the post-process will require GPU power and can generate a drop in FPS.\n * Default value (5.0) work pretty well in all cases but can be adjusted.\n */\n get smoothSteps() {\n return this._smoothSteps;\n }\n /*\n * Sets the number of samples taken while smoothing reflections. More samples count is high,\n * more the post-process will require GPU power and can generate a drop in FPS.\n * Default value (5.0) work pretty well in all cases but can be adjusted.\n */\n set smoothSteps(steps) {\n if (steps === this._smoothSteps) {\n return;\n }\n this._smoothSteps = steps;\n this._updateEffectDefines();\n }\n _updateEffectDefines() {\n const defines = [];\n if (this._geometryBufferRenderer || this._prePassRenderer) {\n defines.push(\"#define SSR_SUPPORTED\");\n }\n if (this._enableSmoothReflections) {\n defines.push(\"#define ENABLE_SMOOTH_REFLECTIONS\");\n }\n if (this._isSceneRightHanded) {\n defines.push(\"#define RIGHT_HANDED_SCENE\");\n }\n defines.push(\"#define REFLECTION_SAMPLES \" + (this._reflectionSamples >> 0));\n defines.push(\"#define SMOOTH_STEPS \" + (this._smoothSteps >> 0));\n this.updateEffect(defines.join(\"\\n\"));\n }\n /**\n * @internal\n */\n static _Parse(parsedPostProcess, targetCamera, scene, rootUrl) {\n return SerializationHelper.Parse(() => {\n return new ScreenSpaceReflectionPostProcess(parsedPostProcess.name, scene, parsedPostProcess.options, targetCamera, parsedPostProcess.renderTargetSamplingMode, scene.getEngine(), parsedPostProcess.textureType, parsedPostProcess.reusable);\n }, parsedPostProcess, scene, rootUrl);\n }\n}\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"threshold\", void 0);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"strength\", void 0);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"reflectionSpecularFalloffExponent\", void 0);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"step\", void 0);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"roughnessFactor\", void 0);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"enableSmoothReflections\", null);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"reflectionSamples\", null);\n__decorate([\n serialize()\n], ScreenSpaceReflectionPostProcess.prototype, \"smoothSteps\", null);\nRegisterClass(\"BABYLON.ScreenSpaceReflectionPostProcess\", ScreenSpaceReflectionPostProcess);\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,WAAW,QAAQ,kBAAkB;AAE9C,SAASC,sBAAsB,QAAQ,wCAAwC;AAC/E,SAASC,SAAS,QAAQ,uBAAuB;AACjD,SAASC,mBAAmB,QAAQ,qCAAqC;AACzE,SAASC,mCAAmC,QAAQ,qDAAqD;AACzG,OAAO,8CAA8C;AACrD,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,MAAM,QAAQ,mBAAmB;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gCAAgC,SAASP,WAAW,CAAC;EAC9D,IAAIQ,uBAAuBA,CAAA,EAAG;IAC1B,IAAI,CAAC,IAAI,CAACC,oBAAoB,EAAE;MAC5B,OAAO,IAAI;IACf;IACA,OAAO,IAAI,CAACC,MAAM,CAACC,sBAAsB;EAC7C;EACA,IAAIC,gBAAgBA,CAAA,EAAG;IACnB,IAAI,IAAI,CAACH,oBAAoB,EAAE;MAC3B,OAAO,IAAI;IACf;IACA,OAAO,IAAI,CAACC,MAAM,CAACG,eAAe;EACtC;EACA;AACJ;AACA;AACA;EACIC,YAAYA,CAAA,EAAG;IACX,OAAO,kCAAkC;EAC7C;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACIC,WAAWA,CAACC,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,EAAEC,YAAY,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,GAAG,CAAC,EAAEC,gBAAgB,GAAG,KAAK,EAAEC,mBAAmB,GAAG,KAAK,EAAE;IAC9I,KAAK,CAACT,IAAI,EAAE,uBAAuB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,mCAAmC,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,EAAEE,OAAO,EAAEC,MAAM,EAAEC,YAAY,EAAEC,MAAM,EAAEC,QAAQ,EAAE,gFAAgF,EAAEC,WAAW,EAAEG,SAAS,EAAE,IAAI,EAAEF,gBAAgB,CAAC;IAC3Z;AACR;AACA;IACQ,IAAI,CAACG,SAAS,GAAG,GAAG;IACpB;AACR;AACA;IACQ,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB;AACR;AACA;IACQ,IAAI,CAACC,iCAAiC,GAAG,CAAC;IAC1C;AACR;AACA;IACQ,IAAI,CAACC,IAAI,GAAG,GAAG;IACf;AACR;AACA;IACQ,IAAI,CAACC,eAAe,GAAG,GAAG;IAC1B,IAAI,CAACtB,oBAAoB,GAAG,KAAK;IACjC,IAAI,CAACuB,wBAAwB,GAAG,KAAK;IACrC,IAAI,CAACC,kBAAkB,GAAG,EAAE;IAC5B,IAAI,CAACC,YAAY,GAAG,CAAC;IACrB,IAAI,CAACzB,oBAAoB,GAAGgB,mBAAmB;IAC/C,IAAI,IAAI,CAAChB,oBAAoB,EAAE;MAC3B;MACA,MAAME,sBAAsB,GAAGM,KAAK,CAACkB,4BAA4B,CAAC,CAAC;MACnE,IAAIxB,sBAAsB,EAAE;QACxB,IAAIA,sBAAsB,CAACyB,WAAW,EAAE;UACpCzB,sBAAsB,CAAC0B,cAAc,GAAG,IAAI;UAC5C1B,sBAAsB,CAAC2B,kBAAkB,GAAG,IAAI;UAChD,IAAI3B,sBAAsB,CAAC4B,2BAA2B,EAAE;YACpDjC,MAAM,CAACkC,KAAK,CAAC,sHAAsH,CAAC;UACxI;QACJ;MACJ;IACJ,CAAC,MACI;MACD,MAAM3B,eAAe,GAAGI,KAAK,CAACwB,qBAAqB,CAAC,CAAC;MACrD5B,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAE6B,WAAW,CAAC,CAAC;MAC9B,IAAI7B,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAE0B,2BAA2B,EAAE;QAC9CjC,MAAM,CAACkC,KAAK,CAAC,8GAA8G,CAAC;MAChI;MACA,IAAI,CAACG,2BAA2B,GAAG,IAAIvC,mCAAmC,CAAC,CAAC;IAChF;IACA,IAAI,CAACwC,oBAAoB,CAAC,CAAC;IAC3B;IACA,IAAI,CAACC,OAAO,GAAIC,MAAM,IAAK;MACvB,MAAMnC,sBAAsB,GAAG,IAAI,CAACH,uBAAuB;MAC3D,MAAMK,eAAe,GAAG,IAAI,CAACD,gBAAgB;MAC7C,IAAI,CAACC,eAAe,IAAI,CAACF,sBAAsB,EAAE;QAC7C;MACJ;MACA,IAAIA,sBAAsB,EAAE;QACxB;QACA,MAAMoC,aAAa,GAAGpC,sBAAsB,CAACqC,eAAe,CAAC/C,sBAAsB,CAACgD,qBAAqB,CAAC;QAC1G,MAAMC,cAAc,GAAGvC,sBAAsB,CAACqC,eAAe,CAAC/C,sBAAsB,CAACkD,yBAAyB,CAAC;QAC/GL,MAAM,CAACM,UAAU,CAAC,eAAe,EAAEzC,sBAAsB,CAAC0C,UAAU,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnFR,MAAM,CAACM,UAAU,CAAC,iBAAiB,EAAEzC,sBAAsB,CAAC0C,UAAU,CAAC,CAAC,CAACC,QAAQ,CAACP,aAAa,CAAC,CAAC;QACjGD,MAAM,CAACM,UAAU,CAAC,qBAAqB,EAAEzC,sBAAsB,CAAC0C,UAAU,CAAC,CAAC,CAACC,QAAQ,CAACJ,cAAc,CAAC,CAAC;MAC1G,CAAC,MACI,IAAIrC,eAAe,EAAE;QACtB;QACA,MAAMkC,aAAa,GAAGlC,eAAe,CAAC0C,QAAQ,CAAC,CAAC,CAAC;QACjD,MAAML,cAAc,GAAGrC,eAAe,CAAC0C,QAAQ,CAAC,CAAC,CAAC;QAClD,MAAMC,WAAW,GAAG3C,eAAe,CAAC0C,QAAQ,CAAC,CAAC,CAAC;QAC/CT,MAAM,CAACM,UAAU,CAAC,eAAe,EAAEvC,eAAe,CAAC4C,eAAe,CAAC,CAAC,CAACH,QAAQ,CAACE,WAAW,CAAC,CAAC;QAC3FV,MAAM,CAACM,UAAU,CAAC,iBAAiB,EAAEvC,eAAe,CAAC4C,eAAe,CAAC,CAAC,CAACH,QAAQ,CAACP,aAAa,CAAC,CAAC;QAC/FD,MAAM,CAACM,UAAU,CAAC,qBAAqB,EAAEvC,eAAe,CAAC4C,eAAe,CAAC,CAAC,CAACH,QAAQ,CAACJ,cAAc,CAAC,CAAC;MACxG;MACA;MACA,MAAM/B,MAAM,GAAGF,KAAK,CAACyC,YAAY;MACjC,IAAI,CAACvC,MAAM,EAAE;QACT;MACJ;MACA,MAAMwC,UAAU,GAAGxC,MAAM,CAACyC,aAAa,CAAC,IAAI,CAAC;MAC7C,MAAMC,gBAAgB,GAAG1C,MAAM,CAAC2C,mBAAmB,CAAC,IAAI,CAAC;MACzDhB,MAAM,CAACiB,SAAS,CAAC,YAAY,EAAEF,gBAAgB,CAAC;MAChDf,MAAM,CAACiB,SAAS,CAAC,MAAM,EAAEJ,UAAU,CAAC;MACpCb,MAAM,CAACkB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAACrC,SAAS,CAAC;MAC5CmB,MAAM,CAACkB,QAAQ,CAAC,mCAAmC,EAAE,IAAI,CAACnC,iCAAiC,CAAC;MAC5FiB,MAAM,CAACkB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAACpC,QAAQ,CAAC;MAC1CkB,MAAM,CAACkB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAClC,IAAI,CAAC;MACtCgB,MAAM,CAACkB,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAACjC,eAAe,CAAC;IAC5D,CAAC;IACD,IAAI,CAACkC,mBAAmB,GAAGhD,KAAK,CAACiD,oBAAoB;EACzD;EACA;AACJ;AACA;AACA;EACI,IAAIC,uBAAuBA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAACnC,wBAAwB;EACxC;EACA;AACJ;AACA;AACA;EACI,IAAImC,uBAAuBA,CAACC,OAAO,EAAE;IACjC,IAAIA,OAAO,KAAK,IAAI,CAACpC,wBAAwB,EAAE;MAC3C;IACJ;IACA,IAAI,CAACA,wBAAwB,GAAGoC,OAAO;IACvC,IAAI,CAACxB,oBAAoB,CAAC,CAAC;EAC/B;EACA;AACJ;AACA;AACA;EACI,IAAIyB,iBAAiBA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACpC,kBAAkB;EAClC;EACA;AACJ;AACA;AACA;EACI,IAAIoC,iBAAiBA,CAACC,OAAO,EAAE;IAC3B,IAAIA,OAAO,KAAK,IAAI,CAACrC,kBAAkB,EAAE;MACrC;IACJ;IACA,IAAI,CAACA,kBAAkB,GAAGqC,OAAO;IACjC,IAAI,CAAC1B,oBAAoB,CAAC,CAAC;EAC/B;EACA;AACJ;AACA;AACA;AACA;EACI,IAAI2B,WAAWA,CAAA,EAAG;IACd,OAAO,IAAI,CAACrC,YAAY;EAC5B;EACA;AACJ;AACA;AACA;AACA;EACI,IAAIqC,WAAWA,CAACC,KAAK,EAAE;IACnB,IAAIA,KAAK,KAAK,IAAI,CAACtC,YAAY,EAAE;MAC7B;IACJ;IACA,IAAI,CAACA,YAAY,GAAGsC,KAAK;IACzB,IAAI,CAAC5B,oBAAoB,CAAC,CAAC;EAC/B;EACAA,oBAAoBA,CAAA,EAAG;IACnB,MAAM6B,OAAO,GAAG,EAAE;IAClB,IAAI,IAAI,CAACjE,uBAAuB,IAAI,IAAI,CAACI,gBAAgB,EAAE;MACvD6D,OAAO,CAACC,IAAI,CAAC,uBAAuB,CAAC;IACzC;IACA,IAAI,IAAI,CAAC1C,wBAAwB,EAAE;MAC/ByC,OAAO,CAACC,IAAI,CAAC,mCAAmC,CAAC;IACrD;IACA,IAAI,IAAI,CAACT,mBAAmB,EAAE;MAC1BQ,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC;IAC9C;IACAD,OAAO,CAACC,IAAI,CAAC,6BAA6B,IAAI,IAAI,CAACzC,kBAAkB,IAAI,CAAC,CAAC,CAAC;IAC5EwC,OAAO,CAACC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAACxC,YAAY,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,CAACyC,YAAY,CAACF,OAAO,CAACG,IAAI,CAAC,IAAI,CAAC,CAAC;EACzC;EACA;AACJ;AACA;EACI,OAAOC,MAAMA,CAACC,iBAAiB,EAAEC,YAAY,EAAE9D,KAAK,EAAE+D,OAAO,EAAE;IAC3D,OAAO7E,mBAAmB,CAAC8E,KAAK,CAAC,MAAM;MACnC,OAAO,IAAI1E,gCAAgC,CAACuE,iBAAiB,CAAC9D,IAAI,EAAEC,KAAK,EAAE6D,iBAAiB,CAAC5D,OAAO,EAAE6D,YAAY,EAAED,iBAAiB,CAACI,wBAAwB,EAAEjE,KAAK,CAACkE,SAAS,CAAC,CAAC,EAAEL,iBAAiB,CAACvD,WAAW,EAAEuD,iBAAiB,CAACxD,QAAQ,CAAC;IACjP,CAAC,EAAEwD,iBAAiB,EAAE7D,KAAK,EAAE+D,OAAO,CAAC;EACzC;AACJ;AACAjF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;AACnErF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAClErF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,mCAAmC,EAAE,KAAK,CAAC,CAAC;AAC3FrF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9DrF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACzErF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,yBAAyB,EAAE,IAAI,CAAC;AAC/ErF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,mBAAmB,EAAE,IAAI,CAAC;AACzErF,UAAU,CAAC,CACPG,SAAS,CAAC,CAAC,CACd,EAAEK,gCAAgC,CAAC6E,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC;AACnE/E,aAAa,CAAC,0CAA0C,EAAEE,gCAAgC,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|