diff --git a/AGENTS.md b/AGENTS.md index ca96cc8..7a7a613 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -19,8 +19,11 @@ Read it before changing code. For deeper product/spec context, use linked knowledge notes. - Single-model GLB/GLTF/STL/PLY/OBJ preview paths use Babylon.js compatibility mode by default. -- Direct file view treats generated converted GLB outputs as a fast-path exception: - Three.js loads them first and Babylon.js silently handles fallback on failure. +- Direct file view treats generated converted GLB outputs as a configurable + fast-path exception: when the Converted GLB Three fast path setting is enabled, + Three.js loads them first and Babylon.js silently handles fallback on failure; + disabling the setting makes converted direct file views follow the normal + renderer compatibility controls. - Three.js remains available as an explicit opt-in single-model rollout for reading surfaces, direct file view, and Experimental Three workbench probes. - Babylon.js remains the production capability backend for default single-model diff --git a/CHANGELOG.md b/CHANGELOG.md index d990be2..aa65578 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ ## Unreleased +- None yet. + +## 0.7.0 - 2026-06-28 + +- Docs: expand README warnings for STEP/CAD conversion, external tools, large-model performance, generated side files, renderer-route differences, mobile limits, and optional remote drafting. +- Warning: STEP/STP, IGES, BREP, FBX, 3MF, DAE, and similar CAD/uncommon mesh assets remain conversion-backed workflows, not guaranteed direct-render formats; desktop converter setup and source-file complexity can still block preview. +- Warning: large converted GLB and PCB/assembly files can consume significant CPU, GPU, RAM, and disk I/O, so restored heavy direct views now require an explicit Load model action to reduce startup lockups. +- Warning: generated conversion side files, reports, JSON sidecars, snapshots, part IDs, dimensions, and model names can be large or sensitive; use the Auxiliary file folder intentionally and exclude those outputs from sync or Git when needed. +- Warning: external converters and optional remote drafting remain trust boundaries; converter commands should be verified locally, and remote draft requests should be enabled only when sanitized model evidence is acceptable. +- Settings: add a Converted GLB Three fast path toggle so conversion-backed direct file views can follow normal Babylon compatibility routing when users disable the fast path. - Settings: add an Auxiliary file folder option so users can choose where generated conversion side files are stored, while the empty default keeps them under the Obsidian config folder. - Performance: reuse relocated converted-asset cache records for moved STEP/FBX/etc. sources and route direct-file converted GLB outputs through a silent Three.js fast path with Babylon fallback. - Performance: cancel stale direct-file preview load sessions during rapid model switches and dispose interrupted Three.js/Babylon.js GLB results before they can keep competing with the newest load. @@ -84,7 +94,7 @@ - Rendering: promote Three.js and Babylon picks on converted component child meshes to their parent registered component/group so selection, focus, and disassembly dragging do not collapse to a single surface fragment. - Rendering: preserve Three.js component world transforms when entering disassembly drag so nested converted GLB parts no longer jump to the scene origin or change orientation. - Performance: open large converted models faster by reusing fresh `.ai3d-converted.glb` outputs before probing converter identity and by deferring direct-view evidence registration until after the preview is visible. -- Performance: keep conversion-backed GLB direct file views on Babylon.js by default and avoid extra full-buffer copies during GLB parsing. +- Performance: keep conversion-backed GLB direct file views configurable with a Converted GLB Three fast-path toggle while preserving Babylon.js fallback and avoiding extra full-buffer copies during GLB parsing. - Performance: cap automatic registered-part writes for highly fragmented models so large imports do not keep growing the plugin state file with low-value surface shards. - Performance: normalize oversized saved registered-part lists on load, strip transient registered-match caches, and quickly persist the compact state so future workspace startup parses less data. - Performance: avoid rewriting unchanged plugin state during startup or unload, reducing extra `data.json` disk I/O in large vaults. diff --git a/README.md b/README.md index e707c03..b187598 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,19 @@ ![preview](docs/assets/preview.gif) +> **Important: STEP/STP support is conversion-only, not direct rendering.** +> STEP files require Obsidian Desktop plus a configured local Python + CadQuery/OCCT +> converter. Mobile cannot run STEP conversion, and large or complex STEP/PCB +> assemblies can take a long time on first open or fail if the local CAD +> environment is missing. If reliability matters, pre-convert the model to GLB +> or check the plugin's converter diagnostics before troubleshooting the viewer. + --- ## Table of Contents - [Features](#features) +- [Warnings And Risks](#warnings-and-risks) - [Current Release](#current-release) - [Platform Support Matrix](#platform-support-matrix) - [Quick Start](#quick-start) @@ -46,20 +54,52 @@ --- +## Warnings And Risks + +- **STEP/STP and CAD files are not direct-render formats.** They need desktop + conversion first. Missing Python packages, incompatible CAD geometry, very + large assemblies, or converter timeouts can prevent preview even when the + plugin itself is installed correctly. +- **Local converters are external desktop tools.** They parse model files on + your machine. Use trusted model files, keep converter command paths explicit, + and check converter diagnostics before running unknown CAD, FBX, 3MF, DAE, or + SLDPRT assets. +- **Large models can stress Obsidian.** Big GLB files and converted STEP/PCB + assemblies can consume high CPU, GPU, RAM, and disk I/O, stall the UI, trigger + WebGL context loss, or take minutes on first open. Lower render quality/scale, + open one heavy model at a time, and prefer pre-converted GLB for repeat work. +- **Generated side files can be large or sensitive.** Converted GLBs, snapshots, + reports, indexes, and JSON sidecars may include filenames, assembly names, + part IDs, dimensions, geometry summaries, and preview images. Put auxiliary + files in an intentional folder and exclude them from sync or Git if needed. +- **Renderer routes can look different.** Babylon.js compatibility mode is the + safest path. Three.js fast paths can be faster, but colors, picking, + measurement, or toolbar behavior may differ on some assets. Disable the + Converted GLB Three fast path or switch back to compatibility mode when + diagnosing display issues. +- **Mobile support is direct-format only.** Mobile can view GLB/GLTF/STL/OBJ/PLY + and already-converted GLB files, but it cannot run local conversion tools or + converter diagnostics. +- **Remote drafting is optional and should be treated as sensitive.** The plugin + is local-first by default, but configured remote draft requests can include + sanitized evidence such as model names, part names, counts, dimensions, tags, + and note references depending on privacy settings. + +--- + ## Current Release -`0.6.1` is a source-review patch for the `0.6.0` Three.js capability-tree release. It keeps the `0.6.0` rendering, measurement, diagnostics, and knowledge-workflow upgrades, and updates the remote draft timeout helper to follow Obsidian review guidance. +`0.7.0` is a compatibility, performance, and support-boundary release for large local model workflows. It keeps Babylon.js compatibility mode as the default route for single-model previews, adds an explicit Converted GLB Three fast-path switch, improves conversion side-file control, and documents the real risks around STEP/CAD conversion, heavy assemblies, generated side files, mobile limits, and optional remote drafting. Release highlights: -- Three.js capability profiles and quality snapshots for route diagnostics -- GLB/GLTF PBR preservation, STL/PLY vertex colors, OBJ/MTL color-texture sRGB handling -- Camera precision, raycast thresholds, and measurement markers scaled to tiny and large models -- Dynamic frame-budget tracking, interactive pixel-ratio throttling, and idle render-loop sleep -- Calibrated measurement records with Markdown export -- More reliable knowledge-generation state, diagnostics, conversion cache handling, and release gates +- Babylon.js compatibility mode remains the default for single-model previews, with Three.js still available as an explicit opt-in route. +- Converted GLB outputs from STEP/FBX/3MF/DAE/etc. can use a configurable Three.js fast path with silent Babylon fallback. +- Auxiliary conversion side files can be stored in a user-selected folder instead of only under the Obsidian config directory. +- Direct file view, `3dgrid`, measurement, camera zoom, and large-model loading paths have tighter performance and stability behavior. +- README warnings now call out STEP/CAD conversion limits, external converter risk, large-model resource pressure, generated side files, renderer-route differences, mobile limits, and optional remote-draft privacy. -See [docs/release-notes/0.6.0-plus.md](docs/release-notes/0.6.0-plus.md) for the rolling `0.6.0+` update log, plus [docs/release-notes/0.6.1.md](docs/release-notes/0.6.1.md), [docs/release-notes/0.6.0.md](docs/release-notes/0.6.0.md), and [CHANGELOG.md](CHANGELOG.md) for versioned release notes. +See [docs/release-notes/0.7.0.md](docs/release-notes/0.7.0.md) and [CHANGELOG.md](CHANGELOG.md) for the full `0.7.0` change log, plus [docs/release-notes/0.6.1.md](docs/release-notes/0.6.1.md) and [docs/release-notes/0.6.0.md](docs/release-notes/0.6.0.md) for previous releases. --- @@ -221,6 +261,10 @@ SPLAT preview is temporarily disabled in packaged builds while its loader is rep ### Conversion (Requires External Tools) +> **STEP/STP note:** STEP is supported through local conversion to GLB only. +> It is not a browser/WebGL-native format and depends on the desktop converter +> environment shown in plugin settings. + | Format | Extension | Converter | Output | |--------|-----------|-----------|--------| | STEP | `.step` `.stp` | Python + CadQuery/OCCT | GLB | @@ -590,7 +634,7 @@ ai-model-workbench/ ### Release Publishing -Releases are published by the GitHub Actions `Release` workflow. Push a tag that matches `manifest.json`, for example `0.6.1`, or run the workflow manually. The workflow uploads only `main.js`, `manifest.json`, and `styles.css`, removes unsupported release assets, verifies asset sizes and SHA-256 hashes, includes versioned release notes when available, and generates GitHub artifact attestations for the published files. After a release is published, run `npm run verify:obsidian -- --release-tag 0.6.1` to install the assets downloaded from GitHub into the temporary Obsidian vault. +Releases are published by the GitHub Actions `Release` workflow. Push a tag that matches `manifest.json`, for example `0.7.0`, or run the workflow manually. The workflow uploads only `main.js`, `manifest.json`, and `styles.css`, removes unsupported release assets, verifies asset sizes and SHA-256 hashes, includes versioned release notes when available, and generates GitHub artifact attestations for the published files. After a release is published, run `npm run verify:obsidian -- --release-tag 0.7.0` to install the assets downloaded from GitHub into the temporary Obsidian vault. ### Release Token Safety diff --git a/README.zh-CN.md b/README.zh-CN.md index 0eef37e..8226208 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -8,11 +8,17 @@ ![preview](docs/assets/preview.gif) +> **醒目提示:STEP/STP 是“转换支持”,不是直接渲染。** +> STEP 文件需要在 Obsidian 桌面端配置本地 Python + CadQuery/OCCT 转换器后才能转成 GLB 预览。 +> 移动端不能执行 STEP 转换;大型或复杂 PCB/装配体 STEP 首次打开可能很慢,也可能因为本地 CAD 环境缺失而失败。 +> 如果需要稳定打开,建议先转换为 GLB,或先在插件设置里的转换器诊断中确认环境可用。 + --- ## 目录 - [功能特性](#功能特性) +- [警告与风险](#警告与风险) - [当前版本](#当前版本) - [平台支持矩阵](#平台支持矩阵) - [快速入门](#快速入门) @@ -46,20 +52,43 @@ --- +## 警告与风险 + +- **STEP/STP 和 CAD 文件不是直接渲染格式。** 它们必须先在桌面端转换。 + Python 依赖缺失、CAD 几何不兼容、装配体过大或转换超时,都可能导致无法预览, + 即使插件本身已经正确安装。 +- **本地转换器是外部桌面工具。** 它们会在你的电脑上解析模型文件。 + 请只处理可信模型,明确配置转换器命令路径,并在打开未知 CAD、FBX、3MF、DAE + 或 SLDPRT 资产前先查看转换器诊断。 +- **大型模型可能拖慢 Obsidian。** 大型 GLB 和转换后的 STEP/PCB 装配体可能占用大量 + CPU、GPU、内存和磁盘 I/O,导致界面卡顿、WebGL 上下文丢失,或首次打开耗时数分钟。 + 建议降低渲染质量/缩放,一次只打开一个重模型,并优先使用预先转换好的 GLB。 +- **生成的副文件可能很大,也可能包含敏感信息。** 转换后的 GLB、截图、报告、索引和 + JSON sidecar 可能包含文件名、装配体名称、部件 ID、尺寸、几何摘要和预览图。 + 请有意识地设置辅助文件夹;如果需要,记得从同步工具或 Git 中排除这些文件。 +- **不同渲染路线可能显示不一致。** Babylon.js 兼容模式最稳。Three.js 快速路径可能更快, + 但某些资产的颜色、拾取、测量或工具栏行为可能不同。排查显示问题时,可以关闭 + “转换 GLB 的 Three 快速路径”,或切回兼容模式。 +- **移动端只支持直读预览。** 移动端可以查看 GLB/GLTF/STL/OBJ/PLY 和已经转换好的 GLB, + 但不能运行本地转换工具,也不能执行转换器诊断。 +- **远程草稿是可选能力,也应按敏感数据处理。** 插件默认本地优先;如果配置了远程草稿, + 根据隐私设置,请求中仍可能包含经过裁剪的模型名、部件名、数量、尺寸、标签和笔记引用。 + +--- + ## 当前版本 -`0.6.1` 是 `0.6.0` Three.js 能力树版本的源码审核修复版。它保留 `0.6.0` 的渲染、测量、诊断和知识工作流升级,并按 Obsidian 审核建议调整远程草稿超时 helper。 +`0.7.0` 是面向大型本地模型工作流的兼容性、性能和支持边界版本。它保留 Babylon.js 兼容模式作为单模型预览默认路线,新增“转换 GLB 的 Three 快速路径”开关,允许用户自定义转换副文件位置,并把 STEP/CAD 转换、大型装配体、生成副文件、移动端限制和远程草稿隐私风险写入入口文档。 发布亮点: -- Three.js 能力画像和质量快照,用于路由诊断 -- GLB/GLTF 保留 PBR 语义,STL/PLY 保留顶点色,OBJ/MTL 只对颜色贴图应用 sRGB -- 相机精度、拾取阈值和测量标记会根据极小/超大模型尺度自适应 -- 动态帧预算、交互时像素比降档、静止后渲染循环休眠 -- 带单位校准和 Markdown 导出的测量记录 -- 更可靠的知识生成状态、诊断、转换缓存和发布验证门禁 +- Babylon.js 兼容模式仍是单模型预览默认路线,Three.js 继续作为显式启用的可选路线。 +- STEP/FBX/3MF/DAE 等转换后的 GLB 可以通过独立开关使用 Three.js 快速路径,并在失败时静默回退到 Babylon.js。 +- 转换副文件可以放到用户指定的辅助文件夹,不再只能放在 Obsidian 配置目录下。 +- 直接文件视图、`3dgrid`、测量、相机缩放和大型模型加载路径获得更多稳定性与性能优化。 +- README 已集中补充 STEP/CAD 转换限制、外部转换器风险、大模型资源压力、生成副文件、渲染路线差异、移动端限制和远程草稿隐私提醒。 -滚动更新日志见 [docs/release-notes/0.6.0-plus.md](docs/release-notes/0.6.0-plus.md),版本发布日志见 [docs/release-notes/0.6.1.md](docs/release-notes/0.6.1.md)、[docs/release-notes/0.6.0.md](docs/release-notes/0.6.0.md) 和 [CHANGELOG.md](CHANGELOG.md)。 +完整 `0.7.0` 发布日志见 [docs/release-notes/0.7.0.md](docs/release-notes/0.7.0.md) 和 [CHANGELOG.md](CHANGELOG.md),历史版本见 [docs/release-notes/0.6.1.md](docs/release-notes/0.6.1.md) 与 [docs/release-notes/0.6.0.md](docs/release-notes/0.6.0.md)。 --- @@ -220,6 +249,9 @@ AI Model Workbench 的插件包中不包含赞助提示、付款流程或加密 ### 转换(需要外部工具) +> **STEP/STP 注意:** STEP 只支持通过本地转换生成 GLB 后预览。 +> 它不是浏览器/WebGL 原生直读格式,是否可用取决于插件设置中显示的桌面端转换器环境。 + | 格式 | 扩展名 | 转换器 | 输出 | |------|--------|--------|------| | STEP | `.step` `.stp` | Python + CadQuery/OCCT | GLB | @@ -583,7 +615,7 @@ ai-model-workbench/ ### 发布流程 -发布由 GitHub Actions 的 `Release` workflow 完成。推送一个与 `manifest.json` 版本匹配的 tag,例如 `0.6.1`,或手动运行该 workflow。它只上传 `main.js`、`manifest.json` 和 `styles.css`,会删除不受支持的 release asset,校验资产体积与 SHA-256 hash,在存在版本发布日志时自动写入 release notes,并为发布文件生成 GitHub artifact attestation。发布完成后可运行 `npm run verify:obsidian -- --release-tag 0.6.1`,从 GitHub release 下载资产并安装到临时 Obsidian vault 做实机验证。 +发布由 GitHub Actions 的 `Release` workflow 完成。推送一个与 `manifest.json` 版本匹配的 tag,例如 `0.7.0`,或手动运行该 workflow。它只上传 `main.js`、`manifest.json` 和 `styles.css`,会删除不受支持的 release asset,校验资产体积与 SHA-256 hash,在存在版本发布日志时自动写入 release notes,并为发布文件生成 GitHub artifact attestation。发布完成后可运行 `npm run verify:obsidian -- --release-tag 0.7.0`,从 GitHub release 下载资产并安装到临时 Obsidian vault 做实机验证。 ### 发布 Token 安全 diff --git a/docs/development-handoff.md b/docs/development-handoff.md index ca19554..d4dba43 100644 --- a/docs/development-handoff.md +++ b/docs/development-handoff.md @@ -8,7 +8,7 @@ README, implementation, verification scripts, and release/security docs. AI Model Workbench is an Obsidian plugin that renders 3D model files inside a vault, adds 3D annotations/bookmarks, and generates linked knowledge notes from model evidence. -The current package version is `0.6.1`. +The current package version is `0.7.0`. Important runtime files: @@ -31,10 +31,13 @@ Babylon.js compatibility mode is the default single-model mesh preview path: - GLB/GLTF/STL/PLY/OBJ direct formats - readonly and edit annotation overlays on supported single-model routes -Direct file view has one fast-path exception: generated converted GLB outputs -from STEP/FBX/3MF/DAE/etc. are opened with Three.js first, then silently fall -back to Babylon.js if Three loading fails. This keeps repeated CAD opens fast -without broadening `3dgrid` or workbench production routing. +Direct file view has one configurable fast-path exception: when the Converted +GLB Three fast path setting is enabled, generated converted GLB outputs from +STEP/FBX/3MF/DAE/etc. are opened with Three.js first, then silently fall back +to Babylon.js if Three loading fails. Disabling the setting makes converted +direct file views follow the normal renderer compatibility controls. This keeps +repeated CAD opens fast without broadening `3dgrid` or workbench production +routing. Three.js remains available as an explicit opt-in rollout for supported single-model routes: @@ -236,7 +239,7 @@ npm run verify:preview -- --model "models/resource-fixtures/grouped-parts/groupe ## Current Follow-Up Direction -Short-term product direction after `0.6.1`: +Short-term product direction after `0.7.0`: - Keep tightening auto part registration and cross-model part reuse feedback. - Keep improving direct workbench UX without prematurely moving all workbench routes. diff --git a/docs/preview-routing-matrix.md b/docs/preview-routing-matrix.md index e6f6a2e..0670143 100644 --- a/docs/preview-routing-matrix.md +++ b/docs/preview-routing-matrix.md @@ -23,7 +23,7 @@ The table below assumes the default rollout setting: `Compatibility mode` (`baby | Live Preview embed | readonly annotations present | Babylon.js | default `rendererRollout=babylon-safe` | | Direct file view | `GLB/GLTF/STL/PLY/OBJ` single-model edit view | Babylon.js | default `rendererRollout=babylon-safe` | | Direct file view | `SPLAT` or other unsupported formats | Babylon.js | formats not in `THREE_FORMATS` direct view still routes to Babylon | -| Direct file view | conversion-backed single-model output (`STEP`, `FBX`, `3MF`, `DAE`, etc. converted to `GLB`) | Three.js, Babylon fallback | generated GLB outputs take the Direct View fast path even in compatibility mode; load failure falls back to Babylon | +| Direct file view | conversion-backed single-model output (`STEP`, `FBX`, `3MF`, `DAE`, etc. converted to `GLB`) | Three.js, Babylon fallback | generated GLB outputs take the Direct View fast path when `Converted GLB Three fast path` is enabled; load failure falls back to Babylon | | Workbench | any current model | Babylon.js | `requireWorkbenchFeatures=true`; retained on Babylon after phase-3 evaluation | | `3dgrid` | compare / gallery / compose / preset layouts | Babylon.js | retained on Babylon after phase-4 decision | @@ -35,9 +35,9 @@ The table below assumes the default rollout setting: `Compatibility mode` (`baby The runtime route decision is intentionally conservative: -- Babylon.js is the default path for preview surfaces unless the user explicitly enables a Three.js rollout or Direct View is opening a generated converted GLB fast-path asset. +- Babylon.js is the default path for preview surfaces unless the user explicitly enables a Three.js rollout or Direct View is opening a generated converted GLB fast-path asset with the fast-path setting enabled. - Three.js remains the opt-in fast path for common single-model formats (GLB, GLTF, STL, PLY, OBJ) across reading surfaces and direct view, including annotation overlays. -- Three.js is automatically used for Direct View conversion-backed GLB outputs because those assets are local generated intermediates; Babylon remains the silent fallback when Three loading fails. +- Three.js is automatically used for Direct View conversion-backed GLB outputs when `Converted GLB Three fast path` is enabled because those assets are local generated intermediates; Babylon remains the silent fallback when Three loading fails. - Babylon.js remains the intentional capability path for: - full workbench features outside the direct file edit-preview path - grid layouts @@ -54,7 +54,7 @@ The plugin exposes a `Preview compatibility mode` setting: - `Compatibility mode` (`babylon-safe`) - default - inline `3d` -> Babylon.js - Live Preview embed -> Babylon.js - - direct file view -> Babylon.js, except generated converted GLB outputs use Three.js with Babylon fallback + - direct file view -> Babylon.js, except generated converted GLB outputs use Three.js with Babylon fallback when `Converted GLB Three fast path` is enabled - `Reading surfaces only` (`three-readonly-glb`) - inline `3d` -> Three.js - Live Preview embed -> Three.js @@ -64,7 +64,12 @@ The plugin exposes a `Preview compatibility mode` setting: - Live Preview embed -> Three.js - direct file view -> Three.js -Workbench and `3dgrid` remain on Babylon.js regardless of this setting. The verification harness also has a hidden Three.js workbench capability probe, but production routing still keeps workbench on Babylon. +The separate `Converted GLB Three fast path` switch controls whether converted +Direct View GLB outputs may override compatibility mode for the Three.js fast +path. Turn it off to make STEP/FBX/3MF/DAE/etc. converted outputs follow the +normal renderer settings, which means Babylon.js in default compatibility mode. + +Workbench and `3dgrid` remain on Babylon.js regardless of these settings. The verification harness also has a hidden Three.js workbench capability probe, but production routing still keeps workbench on Babylon. --- @@ -95,7 +100,8 @@ Manual checks remain required for: The Three.js smoke examples below assume the setting is switched to `Reading + file view` (`three-direct-glb`). The exception is Direct View conversion-backed GLB output, which uses the Three.js fast path in default -compatibility mode and falls back to Babylon.js on load failure. +compatibility mode only when `Converted GLB Three fast path` is enabled and +falls back to Babylon.js on load failure. ### 1. Simple inline `GLB` -> Three.js diff --git a/docs/release-notes/0.6.0-plus.md b/docs/release-notes/0.6.0-plus.md index 39dc412..a94ce7a 100644 --- a/docs/release-notes/0.6.0-plus.md +++ b/docs/release-notes/0.6.0-plus.md @@ -10,7 +10,8 @@ |------|------|------| | `0.6.0` | 已发布 | Three.js 能力树、视觉质量、测量、知识工作流、诊断和验证门禁 | | `0.6.1` | 已发布 | Obsidian 源码审核修复,保留 `0.6.0` 行为不变 | -| `0.6.0+` current main | 未发布补充 | PLY 点云证据链、极小模型真实尺度、小零件聚合、格式血缘保留、文档拆分 | +| `0.7.0` | 已发布 | Babylon 兼容默认路线、转换 GLB 快速路径开关、辅助文件夹、加载/测量/缩放优化、STEP/CAD 风险提示 | +| `0.6.0+` history | 已归档 | PLY 点云证据链、极小模型真实尺度、小零件聚合、格式血缘保留、文档拆分 | ## 0.6.0 主要更新 diff --git a/docs/release-notes/0.7.0.md b/docs/release-notes/0.7.0.md new file mode 100644 index 0000000..92ff8da --- /dev/null +++ b/docs/release-notes/0.7.0.md @@ -0,0 +1,180 @@ +# AI Model Workbench 0.7.0 + +`0.7.0` is a compatibility, performance, and support-boundary release for large +local 3D model workflows in Obsidian. It keeps Babylon.js compatibility mode as +the default single-model route, adds user control over converted GLB fast-path +routing, improves conversion side-file placement, tightens heavy-model behavior, +and makes STEP/CAD risks explicit in the user-facing documentation. + +## Warnings And Risks + +- STEP/STP and CAD files are conversion-only, not direct-render formats. They + require Obsidian Desktop plus a configured local Python + CadQuery/OCCT + environment before the plugin can preview them as GLB. +- Mobile can view direct formats and already-converted GLB files, but it cannot + run local conversion tools or converter diagnostics. +- Large GLB files and converted STEP/PCB assemblies can consume significant CPU, + GPU, RAM, and disk I/O. First open can take a long time, stall Obsidian, or + trigger WebGL context loss on constrained devices. +- Local converters are external desktop tools that parse model files on your + machine. Use trusted model files and verify converter command paths before + processing unknown CAD, FBX, 3MF, DAE, or SLDPRT assets. +- Generated side files can be large or sensitive. Converted GLBs, reports, + indexes, JSON sidecars, snapshots, part IDs, dimensions, geometry summaries, + and preview images should be placed in an intentional folder and excluded from + sync or Git when needed. +- Babylon.js compatibility mode is the safest renderer path. Three.js fast paths + can be faster, but colors, picking, measurement, or toolbar behavior can differ + on some assets. Disable the Converted GLB Three fast path or return to + compatibility mode when diagnosing display issues. +- Remote drafting is optional and local-first by default. If configured, remote + draft requests can still include sanitized evidence such as model names, part + names, counts, dimensions, tags, and note references depending on privacy + settings. + +## Highlights + +- Adds a `Converted GLB Three fast path` setting so conversion-backed direct file + views can use Three.js first with silent Babylon fallback, or follow normal + Babylon compatibility routing when the setting is disabled. +- Adds an `Auxiliary file folder` setting for generated conversion side files, + while the empty default keeps outputs under the active Obsidian config folder. +- Reuses relocated converted-asset cache records for moved STEP/FBX/etc. sources + and reuses fresh converted GLB outputs before initializing converter adapters. +- Defaults single-model preview surfaces to Babylon.js compatibility mode while + keeping Three.js available through explicit rollout controls. +- Pauses restored large or conversion-backed direct-file previews until the user + clicks `Load model`, avoiding vault lockups during workspace restore. +- Adds a draggable right-side camera zoom control and smoother wheel zoom across + Three.js, Babylon.js, and `3dgrid`. +- Redesigns measurement as an inspector-toolbar readout with synced records, + transparent in-scene dimension text, copy/clear/calibration actions, and + improved pointer feedback. +- Keeps direct file view canvases full-height by moving workbench metrics into a + compact overlay and fixing the Obsidian leaf height chain. +- Adds README warning sections in English and Chinese that clearly describe + STEP/CAD conversion limits, external tool risk, large-model pressure, generated + side files, renderer-route differences, mobile limits, and optional remote + drafting privacy. + +## Detailed Changes + +### Routing And Settings + +- Added the Converted GLB Three fast-path toggle and diagnostics output. +- Added the Auxiliary file folder setting and diagnostics output. +- Kept Babylon.js as the default single-model compatibility route. +- Kept Three.js available for explicit single-model rollout and converted GLB + fast-path use. +- Documented the converted GLB route contract in the preview routing matrix. +- Preserved Experimental Three workbench as a guarded direct GLB/GLTF option with + Babylon fallback. + +### Conversion And Cache + +- Wrote new converted GLB outputs under the active `Vault#configDir` instead of + assuming `.obsidian`. +- Allowed users to place generated conversion side files in a configured vault + folder. +- Reused relocated cache records when a source file moved but a same-stem fresh + converted GLB already exists. +- Reused existing converted outputs before probing converter identity or creating + conversion managers. +- Reused source file stats across conversion-cache checks. +- Reused normalized converted-asset records during plugin startup. +- Clarified STEP/STP support as local desktop conversion only. + +### Direct View, Grid, And UI + +- Cancelled stale direct-file preview load sessions during rapid model switches. +- Disposed interrupted Three.js and Babylon.js GLB results before they can + compete with the newest load. +- Paused restored large/conversion-backed direct file previews until explicit + user load. +- Kept direct file view canvases full-height. +- Added a right-side draggable camera zoom slider. +- Improved wheel zoom behavior across preview backends. +- Redesigned the distance measurement UI and records. +- Kept Babylon `3dgrid` warmup frames dirty briefly after load to avoid blank + first frames. +- Released offscreen `3dgrid` Babylon engines and gave grid canvases a stable + default height. +- Added multi-block `3dgrid` preview verification for nonblank pixels and WebGL + context-loss warnings. + +### Performance + +- Deferred reading-mode, Live Preview, annotation, heading-pin, settings, import, + converter, and direct-view workbench modules until visible or needed. +- Serialized inline and Live Preview loads through a queue and added a settle + window between heavy visible model loads. +- Cached Live Preview embed path resolution and skipped full rescans for ordinary + note edits. +- Loaded external `.gltf` buffers and textures with temporary Blob URLs and + deduplicated concurrent resource reads. +- Included external `.gltf` buffers and textures in pre-parse render budgeting. +- Applied render quality earlier and pre-budgeted direct, inline, and Live + Preview render quality from model file size. +- Avoided extra full-buffer copies for absolute-path model files. +- Deferred Three.js PMREM, shadow, geometry snapshot, evidence registration, and + registered-match preview work so large models become interactive sooner. +- Cached Three.js root bounds, child-mesh descendant indexes, renderable bounds, + renderable indexes, material preparation, and Babylon/Three geometry stats. +- Reduced disassembly drag and focus-selection work for large assemblies. +- Compacted persisted registered parts, mesh refs, bounding boxes, centers, and + automatic observation text to reduce `data.json` startup cost. +- Avoided unchanged plugin-state rewrites during startup and unload. +- Skipped or delayed low-value automatic evidence registration for heavy models. + +### Rendering And Interaction + +- Included Three.js PLY point clouds in summary, part evidence, picking, + measurement, material audit, and disposal paths. +- Kept Three.js orthographic camera, shadow, and grid helper scales tied to real + tiny-model bounds. +- Promoted converted component child-mesh picks to their parent registered + component/group for selection, focus, and disassembly behavior. +- Preserved nested component world transforms during disassembly drag. +- Throttled Three.js measurement preview-line raycasts to animation frames. +- Scaled Three.js texture anisotropy by render quality. +- Resolved parent-directory GLTF/OBJ resource paths consistently across desktop + platforms. + +### Knowledge, Diagnostics, And Docs + +- Preserved part-splitting format lineage across direct and converted formats in + reports, sidecars, draft input, and registered part profiles. +- Merged generic tiny mesh fragments into lower-confidence detail clusters. +- Skipped direct-view auto part registration writes when regenerated candidates + match saved profiles. +- Improved direct-view registered part match previews by skipping sidecar reads, + capping sample sizes, and reusing indexed match tokens. +- Expanded diagnostics with the converted GLB fast-path setting and auxiliary + file folder. +- Trimmed redundant README copy and moved detailed syntax to dedicated usage + docs. +- Added explicit warning/risk sections to README and README.zh-CN. +- Updated the development handoff, preview routing matrix, changelog, and release + docs for the 0.7.0 route and settings contract. + +## Release Contract + +- Release assets remain limited to `main.js`, `manifest.json`, and `styles.css`. +- Minimum Obsidian version remains `1.5.0`. +- Local conversion remains desktop-only and does not upload model files. +- Knowledge generation remains local-first. Remote draft support remains optional + and uses sanitized evidence only when explicitly configured. +- Babylon.js remains the production compatibility backend for default + single-model previews, `3dgrid`, conservative fallback behavior, and future + local-only SPLAT restoration. + +## Verification + +- `npm run typecheck` +- `npm run lint` +- `npm run verify:settings` +- `npm run verify:diagnostics` +- `npx vitest run src/view/direct-view-routing.test.ts src/diagnostics/report.test.ts` +- `npm run verify:preview` +- `npm run build` +- `npm run verify:release` diff --git a/main.js b/main.js index 7e96083..9f66b1e 100644 --- a/main.js +++ b/main.js @@ -1,10 +1,10 @@ "use strict";var y0=Object.defineProperty;var aee=Object.getOwnPropertyDescriptor;var oee=Object.getOwnPropertyNames;var lee=Object.prototype.hasOwnProperty;var I=(n,e,t)=>()=>{if(t)throw t[0];try{return n&&(e=n(n=0)),e}catch(i){throw t=[i],i}};var Fe=(n,e)=>{for(var t in e)y0(n,t,{get:e[t],enumerable:!0})},cee=(n,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of oee(e))!lee.call(n,r)&&r!==t&&y0(n,r,{get:()=>e[r],enumerable:!(i=aee(e,r))||i.enumerable});return n};var fee=n=>cee(y0({},"__esModule",{value:!0}),n);function Rd(n,e,t){return`${n}::${e}::${t}`}function R1(n,e){return!!(n.cacheVersion===2&&n.converterId&&n.converterCacheKey&&n.sourcePath&&n.sourceExt&&n.targetExt==="glb"&&n.outputPath&&n.outputExt==="glb"&&Number.isFinite(n.createdAt)&&e-n.createdAt<=2592e6)}function x1(n,e=Date.now()){let t=new Map;for(let i of n){if(!R1(i,e))continue;let r=Rd(i.sourcePath,i.sourceExt,i.targetExt),s=t.get(r);(!s||i.createdAt>s.createdAt)&&t.set(r,i)}return[...t.values()].sort((i,r)=>r.createdAt-i.createdAt).slice(0,200)}function dee(n,e){if(n.length>200)return null;let t=new Set,i=Number.POSITIVE_INFINITY;for(let r of n){if(!R1(r,e))return null;let s=Rd(r.sourcePath,r.sourceExt,r.targetExt);if(t.has(s)||r.createdAt>i)return null;t.add(s),i=r.createdAt}return n}function hee(n,e){return!!n&&!!e&&n.cacheVersion===e.cacheVersion&&n.converterId===e.converterId&&n.converterCacheKey===e.converterCacheKey&&n.sourcePath===e.sourcePath&&n.sourceExt===e.sourceExt&&n.targetExt===e.targetExt&&n.outputPath===e.outputPath&&n.outputExt===e.outputExt&&n.createdAt===e.createdAt&&n.warnings.join(` `)===e.warnings.join(` -`)}function b1(n=[],e){var c;function t(){return x1([...a.values()])}function i(f){a.clear();for(let d of f)a.set(Rd(d.sourcePath,d.sourceExt,d.targetExt),d)}let r=Date.now(),s=(c=dee(n,r))!=null?c:x1(n,r),a=new Map(s.map(f=>[Rd(f.sourcePath,f.sourceExt,f.targetExt),f]));function o(){let f=t();i(f),e==null||e(f)}return(n.length!==s.length||s.some((f,d)=>!hee(f,n[d])))&&(e==null||e([...s])),{get(f,d,h){return a.get(Rd(f,d,h))},set(f){a.set(Rd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,h){let u=a.delete(Rd(f,d,h));return u&&o(),u},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var C0=I(()=>{"use strict"});function $a(n){return n.trim().toLowerCase().replace(/^\./,"")}function P0(n){return uee.get($a(n))}function Ja(n){let e=P0(n);return!!(e!=null&&e.enabled)}function u_(n){return["splat","spz","sog"].includes($a(n))}function Bl(){return M1.filter(n=>n.enabled).map(n=>n.ext)}var M1,uee,eo=I(()=>{"use strict";M1=[{ext:"glb",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"gltf",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"stl",family:"mesh",strategy:"direct",directLoader:"custom-stl",enabled:!0},{ext:"obj",family:"mesh",strategy:"direct",directLoader:"babylon",converterId:"obj2gltf",outputFormat:"glb",enabled:!0},{ext:"ply",family:"mesh",strategy:"direct",directLoader:"custom-ply",enabled:!0},{ext:"fbx",family:"mesh",strategy:"convert",converterId:"fbx2gltf",outputFormat:"glb",enabled:!0},{ext:"step",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"stp",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"iges",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"igs",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"brep",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"sldprt",family:"cad",strategy:"convert",converterId:"sldprt",outputFormat:"glb",enabled:!0},{ext:"3mf",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0},{ext:"dae",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0}],uee=new Map(M1.map(n=>[n.ext,n]))});var QAe,$c,D0=I(()=>{"use strict";eo();QAe=new Set(Bl()),$c={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",auxiliaryFileFolder:"",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"babylon-safe",useThreeRenderer:!1,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1.5,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function I1(n){let e={...n},t=new Set;return{getState:()=>e,setState(i){e={...e,...i};let r=[...t];for(let s of r)s()},subscribe(i){return t.add(i),()=>{t.delete(i)}}}}var y1=I(()=>{"use strict"});function SE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function lu(n){return[SE(n[0]),SE(n[1]),SE(n[2])]}function C1(n){return Object.is(SE(n),n)}var TE=I(()=>{"use strict"});function P1(n){return n.trim()}function mee(n){let e=P1(n);return/^Registered from model group with /.test(e)||/^Registered from model component metadata with /.test(e)||/^Merged from [\d,]+ generic tiny meshes? to avoid over-splitting renderer fragments\.$/.test(e)||/^Component ID: .+\.$/.test(e)||/^Occurrence ID: .+\.$/.test(e)||/^Part number: .+\.$/.test(e)||/^Component path: .+\.$/.test(e)||/^Format lineage: .+\.$/.test(e)||/^[\d,]+ triangles? and [\d,]+ vertex(?:es|s)\.$/.test(e)||/^Bounding size [-+0-9.eE]+ x [-+0-9.eE]+ x [-+0-9.eE]+\.$/.test(e)||/^Uses material ".+"\.$/.test(e)}function pee(n){return n.map(P1).filter(e=>e.length>0)}function D1(n){let e=pee(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!mee(t)).slice(0,16)}function L0(n){let e=D1(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function cu(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:D1(n),registeredMatches:void 0}}var AE=I(()=>{"use strict"});function F1(n){let e=I1(_ee),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(h=>console.error("[AI3D] Auto-save failed:",h))},500)}function o(){i+=1,a()}function l(){let h=e.getState();return{stateSchemaVersion:L1,settings:h.settings,convertedAssetRecords:h.convertedAssetRecords,modelAssetProfiles:h.modelAssetProfiles,agentDraft:h.agentDraft,agentPlan:h.agentPlan,lastKnowledgeGeneration:h.lastKnowledgeGeneration}}function c(h=!1){return h&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;ru[m]!==_)&&(e.setState({settings:{...u,...h}}),o())},setLastKnowledgeGeneration(h){h!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:h}),o())},async load(){var p,g,v,T,S;let h=await n.loadData();if(!h)return;d=!!((p=h.settings)!=null&&p.locale);let u=h.stateSchemaVersion===L1,{profiles:m,changed:_}=vee(h.modelAssetProfiles,{trustPersistedSchema:u});e.setState({settings:{...$c,...(g=h.settings)!=null?g:{}},convertedAssetRecords:(v=h.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(T=h.agentDraft)!=null?T:"",agentPlan:(S=h.agentPlan)!=null?S:null,lastKnowledgeGeneration:Mee(h.lastKnowledgeGeneration)}),(_||!u)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(E=>console.error("[AI3D] Normalized state save failed:",E))},gee))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(h=>console.error("[AI3D] Final save on dispose failed:",h))}}}function vee(n,e={}){if(!n||typeof n!="object")return{profiles:{},changed:!1};let t={},i=!1;for(let[r,s]of Object.entries(n)){if(!s||typeof s!="object")continue;if(e.trustPersistedSchema&&Eee(s)){t[r]=s;continue}let a=new Date().toISOString(),o=bee(s.registeredParts,r);i=i||o.changed,t[r]={tags:Array.isArray(s.tags)?s.tags:[],notes:typeof s.notes=="string"?s.notes:"",annotations:Array.isArray(s.annotations)?s.annotations:[],registeredParts:o.parts,analysisVersion:typeof s.analysisVersion=="string"?s.analysisVersion:void 0,reportNotePath:typeof s.reportNotePath=="string"?s.reportNotePath:void 0,analysisSidecarPath:typeof s.analysisSidecarPath=="string"?s.analysisSidecarPath:void 0,previewImagePaths:Array.isArray(s.previewImagePaths)?s.previewImagePaths.filter(l=>typeof l=="string"):void 0,knowledgeIndexPath:typeof s.knowledgeIndexPath=="string"?s.knowledgeIndexPath:void 0,createdAt:typeof s.createdAt=="string"?s.createdAt:a,updatedAt:typeof s.updatedAt=="string"?s.updatedAt:a}}return{profiles:t,changed:i}}function Eee(n){return Array.isArray(n.tags)&&typeof n.notes=="string"&&Array.isArray(n.annotations)&&(n.registeredParts===void 0||Array.isArray(n.registeredParts)&&n.registeredParts.length<=xE)&&to(n.analysisVersion)&&to(n.reportNotePath)&&to(n.analysisSidecarPath)&&to(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function m_(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"&&i.trim().length>0):[];return Number.isFinite(e)?t.slice(0,e):t}function p_(n,e=Number.POSITIVE_INFINITY){return Array.isArray(n)&&(!Number.isFinite(e)||n.length<=e)&&n.every(t=>typeof t=="string"&&t.trim().length>0)}function O1(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?lu(e):void 0}function RE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&C1(Number(e)))}function B1(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function See(n){return n===void 0||B1(n)===n}function N0(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function N1(n){return n===void 0||N0(n)===n}function U1(n){return n==="direct"||n==="convert"?n:void 0}function Tee(n){return n===void 0||U1(n)===n}function to(n){return n===void 0||typeof n=="string"}function O0(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function Aee(n){if(!n||typeof n!="object")return!1;let e=n;return"registeredMatches"in e?!1:typeof e.partId=="string"&&e.partId.length>0&&typeof e.assetId=="string"&&e.assetId.length>0&&typeof e.name=="string"&&e.name.length>0&&to(e.parentPartId)&&See(e.source)&&to(e.componentId)&&to(e.occurrenceId)&&to(e.partNumber)&&to(e.componentPath)&&to(e.category)&&p_(e.meshRefs,16)&&O0(e.childCount)&&p_(e.materialRefs,32)&&(e.bbox===void 0||RE(e.bbox))&&(e.center===void 0||RE(e.center))&&O0(e.triangleCount)&&O0(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&N1(e.sourceFormat)&&N1(e.effectiveFormat)&&Tee(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&p_(e.observations,16)&&L0(e)&&p_(e.inferredFunctions)&&p_(e.knowledgeTags)&&to(e.notePath)&&typeof e.reviewed=="boolean"}function xee(n){if(n.length===0)return;if(n.length>xE)return null;let e=new Set;for(let t of n){if(!Aee(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function w1(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function Ree(n){return n.length<=xE?n:[...n].sort((e,t)=>{var s,a;let i=w1(e)-w1(t);if(i!==0)return i;let r=t.confidence-e.confidence;return r!==0?r:((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0)}).slice(0,xE)}function bee(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=xee(n);if(t!==null)return{parts:t,changed:!1};let i=[],r=new Set,s=!1;for(let o of n){if(!o||typeof o!="object")continue;let l=o;"registeredMatches"in l&&(s=!0),(Array.isArray(l.meshRefs)&&l.meshRefs.length>16||Array.isArray(l.materialRefs)&&l.materialRefs.length>32||Array.isArray(l.observations)&&l.observations.length>16||l.bbox!==void 0&&!RE(l.bbox)||l.center!==void 0&&!RE(l.center))&&(s=!0);let c=typeof l.partId=="string"?l.partId:"",f=typeof l.name=="string"?l.name:"";if(!c||!f)continue;let d=typeof l.assetId=="string"&&l.assetId?l.assetId:e,h=`${d}:${c}`;if(r.has(h))continue;r.add(h);let u={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:B1(l.source),componentId:typeof l.componentId=="string"?l.componentId:void 0,occurrenceId:typeof l.occurrenceId=="string"?l.occurrenceId:void 0,partNumber:typeof l.partNumber=="string"?l.partNumber:void 0,componentPath:typeof l.componentPath=="string"?l.componentPath:void 0,category:typeof l.category=="string"?l.category:void 0,meshRefs:m_(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:m_(l.materialRefs,32),bbox:O1(l.bbox),center:O1(l.center),triangleCount:Number.isFinite(l.triangleCount)?Math.max(0,Math.floor(Number(l.triangleCount))):void 0,vertexCount:Number.isFinite(l.vertexCount)?Math.max(0,Math.floor(Number(l.vertexCount))):void 0,materialName:typeof l.materialName=="string"?l.materialName:null,sourceFormat:N0(l.sourceFormat),effectiveFormat:N0(l.effectiveFormat),loadStrategy:U1(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:m_(l.observations,16),inferredFunctions:m_(l.inferredFunctions),knowledgeTags:m_(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=cu(u);L0(u)||(s=!0),i.push(m)}let a=Ree(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function Mee(n){if(!n||typeof n!="object")return null;let e=typeof n.modelPath=="string"?n.modelPath:"";return e?{modelPath:e,reportNotePath:typeof n.reportNotePath=="string"?n.reportNotePath:void 0,analysisSidecarPath:typeof n.analysisSidecarPath=="string"?n.analysisSidecarPath:void 0,knowledgeIndexPath:typeof n.knowledgeIndexPath=="string"?n.knowledgeIndexPath:void 0,partNoteCount:Number.isFinite(n.partNoteCount)?Math.max(0,Math.floor(n.partNoteCount)):0,previewImageCount:Number.isFinite(n.previewImageCount)?Math.max(0,Math.floor(n.previewImageCount)):0,generatedAt:typeof n.generatedAt=="string"?n.generatedAt:new Date().toISOString(),status:n.status==="failed"||n.status==="pending"?n.status:"success",warningCount:Number.isFinite(n.warningCount)?Math.max(0,Math.floor(n.warningCount)):0}:null}function w0(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var _ee,xE,gee,L1,F0=I(()=>{"use strict";D0();y1();TE();AE();_ee={settings:{...$c},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},xE=256,gee=50,L1=1});var B0,V1=I(()=>{"use strict";B0={"settings.title":"AI 3d model workbench","settings.folders":"Folders","settings.behavior":"Behavior","settings.converters":"Converters","settings.converterMenu":"Model converters","settings.converterMenu.desc":"Closed by default. Open this section only when you want to manually enable an optional local conversion route.","settings.environmentInspector":"Environment inspector","settings.environmentInspector.desc":"Closed by default. Open this section when you need to configure command paths or run environment checks.","settings.paths":"Converter paths","settings.diagnostics":"Converter command diagnostics","settings.performance":"Performance & display","settings.mobileSupport":"Mobile support","settings.knowledgeGeneration":"Knowledge generation","settings.sourceModelFolder":"Source model folder","settings.sourceModelFolder.desc":"Vault folder where source model files are stored.","settings.auxiliaryFileFolder":"Auxiliary file folder","settings.auxiliaryFileFolder.desc":"Vault folder for generated side files such as converted GLB assets. Leave empty to keep them under the Obsidian config folder.","settings.auxiliaryFileFolder.placeholder":"Leave empty for the hidden config folder","settings.reportFolder":"Report folder","settings.reportFolder.desc":"Vault folder where generated knowledge notes are saved.","settings.partFolder":"Part notes folder","settings.partFolder.desc":"Vault folder where generated part note drafts are saved.","settings.snapshotFolder":"Snapshot folder","settings.snapshotFolder.desc":"Vault folder where exported snapshots are saved.","settings.autoGenerateKnowledgeNotes":"Auto-generate knowledge notes","settings.autoGenerateKnowledgeNotes.desc":"Reserved for a future automation flow. For now, generate notes manually from the command palette.","settings.annotationPreviewMode":"Annotation preview mode","settings.annotationPreviewMode.desc":"Choose how bound note previews render in annotation popovers and the editor.","settings.annotationPreviewMode.plainText":"Plain text","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"Annotation display mode","settings.annotationDisplayMode.desc":"Choose how bookmark pins appear over the model.","settings.annotationDisplayMode.snippet":"Full snippet","settings.annotationDisplayMode.surface":"Single surface","settings.annotationDisplayMode.dot":"Single dot","settings.previewRendererRollout":"Preview compatibility mode","settings.previewRendererRollout.desc":"Controls how widely the Three.js preview path is used for single-model previews (GLB, GLTF, STL, PLY, OBJ). Switch back to Compatibility mode if pin projection, occlusion, edit pins, snapshots, or toolbar behavior regress. 3dgrid is not affected by this setting.","settings.previewRendererRollout.babylonSafe":"Compatibility mode (Default)","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view","settings.useThreeRenderer":"Use Three.js renderer","settings.useThreeRenderer.desc":"Toggle between Three.js (faster, lighter) and Babylon.js (full compatibility) for single-model previews. Three.js supports GLB/GLTF/STL/PLY/OBJ. 3dgrid always uses Babylon.js.","settings.experimentalThreeWorkbench":"Experimental Three workbench","settings.experimentalThreeWorkbench.desc":"Try the Three.js workbench path for direct GLB/GLTF files only. If loading fails, the file view falls back to Babylon.js automatically.","settings.autoRotateDefault":"Auto-rotate by default","settings.autoRotateDefault.desc":"Start model previews with auto-rotation enabled.","settings.snapshotNaming":"Snapshot naming","settings.snapshotNaming.desc":"How exported snapshot files are named.","settings.snapshotNaming.modelName":"Model name + timestamp","settings.snapshotNaming.timestamp":"Timestamp only","settings.logLevel":"Log level","settings.logLevel.desc":"Controls plugin runtime log verbosity in the developer console.","settings.language":"Language","settings.language.desc":"Display language for plugin settings. Takes effect immediately.","settings.analysisMode":"AI drafting mode","settings.analysisMode.desc":"Controls whether knowledge-note generation stays local or also requests a sanitized remote draft. Raw model upload is blocked by the current client.","settings.analysisMode.local":"Local evidence only","settings.analysisMode.hybrid":"Local evidence + remote draft","settings.analysisMode.remote":"Remote draft from evidence","settings.serviceBaseUrl":"Draft service URL","settings.serviceBaseUrl.desc":"Optional base URL for a service that accepts POST /draft-note. Leave empty to keep all drafting local.","settings.sendGeometrySummaryToRemote":"Send geometry summary","settings.sendGeometrySummaryToRemote.desc":"Allow sanitized mesh counts, bounds, part candidates, annotation coordinates, and nearest-part links to be included in remote draft input.","settings.sendPreviewImagesToRemote":"Send preview image references","settings.sendPreviewImagesToRemote.desc":"Allow generated preview image paths to be listed in the remote draft input. Image bytes are not uploaded by this client.","settings.sendRawModelToRemote":"Send raw model file","settings.sendRawModelToRemote.desc":"Reserved for future explicit upload support. If enabled manually, remote draft requests are blocked instead of uploading the model.","settings.enableCad":"Enable cad conversion for step, iges, and brep files","settings.enableCad.desc":"Enable cad conversion for step, iges, and brep formats. Requires cadquery and trimesh in your python environment.","settings.enableObj2gltf":"Enable obj2gltf converter (experimental)","settings.enableObj2gltf.desc":"Keep obj direct loading as the default. Enable this only if you want an optional local normalization route through obj2gltf.","settings.preferObj2gltf":"Prefer obj2gltf for obj","settings.preferObj2gltf.desc":"Recommended default is off. Turn this on only when you want normalized output files or direct obj loading is not good enough.","settings.enableFbx2gltf":"Enable FBX2glTF converter","settings.enableFbx2gltf.desc":"Enable conversion for fbx files via FBX2glTF. Requires the FBX2glTF binary installed locally.","settings.enableMesh":"Enable mesh conversion for 3mf and dae files","settings.enableMesh.desc":"Enable conversion for 3mf and dae formats via python trimesh. Requires trimesh, numpy, networkx, and pycollada in your python environment.","settings.enableSldprt":"Enable sldprt conversion for SolidWorks files","settings.enableSldprt.desc":"Enable conversion for SolidWorks sldprt files via FreeCAD. Requires FreeCAD installed locally.","settings.mobileSupport.desc":"On iOS, iPadOS, and Android, direct formats like GLB, GLTF, STL, OBJ, and PLY are supported. Local converter settings and diagnostics remain desktop-only.","settings.pythonCmd":"Path to the python command for cad conversion","settings.pythonCmd.desc":"Optional path to the python command used for cad conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.freecadCmd":"Path to the FreeCAD command for sldprt conversion","settings.freecadCmd.desc":"Optional path to the FreeCAD command used for SolidWorks file conversion. Windows usually uses FreeCADCmd.exe, macOS usually uses FreeCADCmd, and Linux usually uses freecadcmd. Overrides auto-discovery when set.","settings.obj2gltfCmd":"Path to the obj2gltf command","settings.obj2gltfCmd.desc":"Optional path to the obj2gltf command. Windows usually uses obj2gltf.cmd, and macOS and Linux usually use obj2gltf. Overrides auto-discovery when set.","settings.fbx2gltfCmd":"FBX2glTF command path","settings.fbx2gltfCmd.desc":"Optional path to the FBX2glTF command. Windows usually uses FBX2glTF.exe, and macOS and Linux usually use FBX2glTF. Overrides auto-discovery when set.","settings.assimpCmd":"Path to the python command for 3mf and dae conversion","settings.assimpCmd.desc":"Optional path to the python command used for 3mf and dae conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.diagnostics.desc":"Shows the exact executable path the plugin would use right now and runs lightweight self-checks for Python environments and converter CLIs.","settings.diagnostics.idle":"Diagnostics are off by default. Click Check now to run them manually.","settings.diagnostics.checkNow":"Check now","settings.diagnostics.checking":"Checking...","settings.diagnostics.refreshed":"Converter command diagnostics refreshed.","settings.diagnostics.checkingAvailability":"Checking converter command availability...","settings.diagnostics.available":"available","settings.diagnostics.notFound":"not found","settings.diagnostics.sourceLabel":"Source","settings.diagnostics.commandLabel":"Command","settings.diagnostics.resolvedPathLabel":"Resolved path","settings.diagnostics.selfCheckLabel":"Self-check","settings.diagnostics.selfCheckOk":"passed","settings.diagnostics.selfCheckFailed":"failed","settings.diagnostics.cadPythonCheck":"Python packages (cadquery, trimesh)","settings.diagnostics.meshPythonCheck":"Python packages (trimesh, numpy, networkx, collada)","settings.diagnostics.freecadCmdCheck":"FreeCADCmd launch probe","settings.diagnostics.obj2gltfCheck":"obj2gltf launch probe","settings.diagnostics.fbx2gltfCheck":"FBX2glTF launch probe","settings.canvasHeight":"Default canvas height","settings.canvasHeight.desc":"Default height (px) for inline model previews. Range: 200\u2013800.","settings.autoRotateSpeed":"Auto-rotate speed","settings.autoRotateSpeed.desc":"Rotation speed when auto-rotate is enabled. Range: 0.1\u20132.0.","settings.renderQuality":"Render quality","settings.renderQuality.desc":"Higher quality uses more GPU resources. Affects anti-aliasing and resolution.","settings.renderScale":"Resolution scale","settings.renderScale.desc":"Render resolution multiplier. 1.0 = native, 0.5 = half, 2.0 = double (supersampling). Range: 0.25\u20132.0.","modelLoad.warningTitle":"Model preview unavailable","modelLoad.warningMessage":"{ext} files need the {converterName} converter enabled in plugin settings before they can load.","modelLoad.warningHint":"Enable the matching converter in plugin settings, then reload this file.","modelLoad.mobileWarningMessage":"{ext} files need local conversion tools that are unavailable on iOS, iPadOS, and Android.","modelLoad.mobileWarningHint":"Open this file on desktop, or convert it to GLB, GLTF, OBJ, STL, or PLY first.","modelLoad.errorTitle":"Couldn't display this model","modelLoad.errorMessage":"Failed to load: {reason}","modelLoad.errorHint":"Check the file format or open the developer console for details.","directView.deferredLoadTitle":"Model preview paused","directView.deferredLoadMessage":"This large or conversion-backed model was restored with the workspace, so loading is paused to keep the vault responsive.","directView.deferredLoadButton":"Load model","headingPin.showSingle":"Show linked pin","headingPin.showMultiple":"Show linked pins","headingPin.linkedTo":"Pin linked to: {models}","helper.resetViewLabel":"Reset view","helper.resetViewDone":"Reset","helper.copyModelInfoLabel":"Copy model info as Markdown","helper.copySelectedPartInfoLabel":"Copy selected part info","helper.noSelectedPart":"Select a part first","helper.copied":"Copied!","helper.failed":"Failed","helper.toggleWireframeLabel":"Toggle wireframe","helper.wireframeOn":"Wireframe","helper.wireframeOff":"Solid","helper.toggleAxesLabel":"Toggle orientation axes","helper.axesOn":"Axes on","helper.axesOff":"Axes off","helper.toggleBoundingBoxLabel":"Toggle bounding box","helper.boundingBoxOn":"Bounding box on","helper.boundingBoxOff":"Bounding box off","helper.toggleFocusSelectionLabel":"Focus selected part","helper.focusSelectionOn":"Focus mode on","helper.focusSelectionOff":"Focus mode off","helper.toggleDisassemblyLabel":"Toggle disassembly mode","helper.disassemblyOn":"Disassembly on","helper.disassemblyOff":"Disassembly off","helper.changeResolutionLabel":"Change resolution","helper.resolutionValue":"Resolution: {value}","helper.cameraZoomLabel":"Camera zoom","helper.cameraZoomValue":"Zoom: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Toggle distance measurement","helper.measurementOn":"Measurement on","helper.measurementOff":"Measurement off","helper.clearMeasurementsLabel":"Clear measurements","helper.measurementsCleared":"Cleared","helper.copyMeasurementsLabel":"Copy measurements","helper.noMeasurements":"No measurements","helper.measurementsCopied":"Measurements copied","helper.measurementStripTitle":"Measure","helper.measurementStripActive":"Active","helper.measurementStripSaved":"{count} saved","helper.measurementStripEmpty":"No distance","helper.measurementStripMeta":"{count} measurements / {unit}","helper.calibrateLabel":"Measurement details","helper.calibrateTitle":"Measurement details","helper.calibrateCurrent":"Current size:","helper.calibrateReal":"Real size:","helper.calibrateLock":"Lock ratio","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Scale applied","helper.calibrateResetDone":"Scale reset","helper.calibrateOpen":"Measurement details opened","helper.calibrateClose":"Measurement details closed","helper.removePreviewLabel":"Remove preview","helper.copySnapshotLabel":"Copy snapshot","helper.saveSnapshotLabel":"Save snapshot to vault","helper.saved":"Saved!","helper.downloadSnapshotLabel":"Download snapshot","helper.downloaded":"Downloaded!","helper.toggleAnnotationLabel":"Toggle annotation mode","helper.toggleAnnotationsVisibilityLabel":"Show or hide annotations","helper.annotateOn":"Annotation mode on","helper.annotateOff":"Annotation mode off","helper.annotationsVisible":"Annotations shown","helper.annotationsHidden":"Annotations hidden","helper.enableInteractionLabel":"Enable touch interaction","helper.disableInteractionLabel":"Return to scroll mode","helper.interactionOn":"Model interaction on","helper.interactionOff":"Scroll mode on","helper.showMoreActionsLabel":"Show more actions","helper.hideMoreActionsLabel":"Hide extra actions","helper.moreActionsShown":"More actions shown","helper.moreActionsHidden":"Extra actions hidden","helper.interactAction":"Interact","helper.scrollAction":"Scroll","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"No model","workbench.emptyText":'Use the "import 3D model" command to load a GLB, GLTF, STL, OBJ, or PLY file.',"workbench.modelTitle":"Model","workbench.studioTitle":"AI Model Workbench","workbench.studioTagline":"Inspect, annotate, and turn 3D assets into linked notes.","workbench.navLabel":"Workbench sections","workbench.navGallery":"Gallery","workbench.navLibrary":"Library","workbench.navNotebooks":"Notebooks","workbench.navSettings":"Settings","workbench.sourcesTitle":"Model sources","workbench.layersTitle":"Review layers","workbench.viewModeTitle":"View mode","workbench.modeMesh":"Mesh view","workbench.modeFocus":"Focus selection","workbench.modeMeshShort":"Mesh","workbench.modeFocusShort":"Focus","workbench.previewViewsTitle":"Preview views","workbench.connectionsTitle":"Knowledge connections","workbench.currentModelLabel":"Current model","workbench.noReportYet":"No report note yet","workbench.noIndexYet":"No knowledge index yet. Generate a knowledge note first.","workbench.noModelLoaded":"No model loaded","workbench.disassemblyTitle":"Disassembly","workbench.explodeLabel":"Explode","workbench.summaryTitle":"Summary","workbench.meshesLabel":"Meshes","workbench.splatsLabel":"Splats","workbench.trianglesLabel":"Triangles","workbench.verticesLabel":"Vertices","workbench.materialsLabel":"Materials","workbench.boundingSizeLabel":"Bounds","workbench.centerLabel":"Center","workbench.selectedPartTitle":"Selected Part","workbench.partMeshLabel":"Mesh","workbench.noSelectedPart":"Click a model part to inspect it here.","workbench.tagsTitle":"Tags","workbench.noTagsYet":"No tags yet","workbench.addTagPlaceholder":"Add tag...","workbench.addTagAction":"Add","workbench.annotationsTitle":"Annotations","workbench.exitAnnotate":"Exit annotate","workbench.annotate":"Annotate","workbench.annotateHintActive":"Click the model to add a label \xB7 press Esc to exit","workbench.annotateHintActiveMobile":"Tap the model to add a label. Switch back to Scroll when you want to move through the note again.","workbench.pinCount":"{count} pin(s)","workbench.editAction":"Edit","workbench.deleteAction":"Delete","workbench.resetViewAction":"Reset view","workbench.insertInfoAction":"Insert info","workbench.insertGalleryAction":"Insert Gallery","workbench.insertCompareAction":"Insert Compare","workbench.playAction":"Play","workbench.pauseAction":"Pause","workbench.saveProfileAction":"Save profile","workbench.generateNoteAction":"Generate note","workbench.openNoteAction":"Open note","workbench.openIndexAction":"Open index","workbench.recordTitle":"Specimen card","workbench.recordSubtitle":"Current asset profile","workbench.notesTitle":"Analysis notes","workbench.whereTitle":"Where it connects","workbench.noteReady":"Linked note ready","workbench.indexReady":"Knowledge index ready","workbench.notePending":"Linked note pending","workbench.analysisLabel":"Analysis","workbench.settingsUnavailable":"Open this plugin from Obsidian settings to change workbench options.","workbench.profileSaved":"Profile saved","workbench.viewReset":"View reset","workbench.infoInserted":"Model info inserted","workbench.infoCopied":"Model info copied","workbench.templateInserted":"Template inserted","workbench.templateCopied":"Template copied","workbench.mobileHint":"Mobile tip: tap Interact to move the model, then switch back to Scroll to keep reading the note.","workbench.mobileHintInteractive":"Interaction mode is on. Switch back to Scroll when you want to move through the note again.","directView.mobileHint":"Mobile tip: use the toolbar Interact button to switch between model interaction and note scrolling.","directWorkbench.modelLoadInterrupted":"Model load was interrupted by a newer request.","directWorkbench.backendLabel":"Backend","directWorkbench.routeLabel":"Route","directWorkbench.performanceLabel":"Performance","directWorkbench.partCandidatesLabel":"Part candidates","directWorkbench.knowledgeTitle":"Knowledge","directWorkbench.registeredTitle":"Registered part matches","directWorkbench.registeredLoading":"Checking...","directWorkbench.registeredCount":"{count} match(es)","directWorkbench.registeredEmpty":"No cross-model part match yet","directWorkbench.registeredUnavailable":"Part evidence unavailable","directWorkbench.registeredOpen":"Open","directWorkbench.registeredOpenNote":"Note","directWorkbench.registeredOpenModel":"Model","directWorkbench.registeredSourceModel":"From {model}","directWorkbench.registeredTargetPartNote":"Opens matched part note","directWorkbench.registeredTargetSourceModel":"Opens source model","directWorkbench.registeredTargetUnavailable":"No linked target","workbench.fileNotFound":"File not found: {path}","annotation.selectColor":"Select color {color}","annotation.sectionEmpty":"Section is empty.","modal.selectModel":"Select a 3D model...","main.commandImportModel":"Import a 3D model","main.commandGenerateNote":"Generate knowledge note","main.commandOpenKnowledgeIndex":"Open knowledge index","main.commandClearConversionCache":"Clear conversion cache","main.commandCheckConverters":"Check converters","main.commandCopyDiagnostics":"Copy diagnostics report","main.converterDiagnosticsMobileUnavailable":"Converter diagnostics are only available on desktop. On iOS, iPadOS, and Android, direct formats can still load.","main.diagnosticsCopied":"AI Model Workbench diagnostics copied to clipboard.","main.diagnosticsCopyFailed":"Couldn't copy diagnostics. A sanitized diagnostics note was created instead.","codeBlock.noModelPathOrConfig":"No model path or config specified.","codeBlock.jsonParseError":"JSON parse error: {error}","codeBlock.jsonParseLine":" (line {line})","codeBlock.noModelsInConfig":"No models specified in config.","codeBlock.unsupportedFormat":"Unsupported format: {ext}. Supported: {formats}","codeBlock.splatDisabled":"SPLAT preview is disabled in packaged builds. Local-only .splat support is planned first; .spz/.sog need locally bundled decoders before reevaluation.","codeBlock.noConfigSpecified":"No config specified.","codeBlock.noModelsSpecified":"No models specified.","codeBlock.mobileHint":"Mobile tip: use Interact to manipulate the model, then switch back to Scroll to keep moving through the note.","codeBlock.renderingGrid":"Rendering grid...","codeBlock.composeRequiresSections":'"compose" preset requires a "sections" array.',"codeBlock.composeNoValidSections":"Compose: no valid sections.","codeBlock.unknownPreset":'Unknown preset: "{preset}". Available: compare, showcase, explode, timeline, compose',"codeBlock.presetRequiresModels":'Preset "{preset}" requires {min}-{max} models, got {count}.',"codeBlock.gridFailed":"Grid failed: {reason}","livePreview.mobileHint":"Mobile tip: switch between Interact and Scroll depending on whether you want to move the model or keep reading.","loading.default":"Loading...","loading.preparingModel":"Preparing model...","loading.loadingModel":"Loading model..."}});var G1,k1=I(()=>{"use strict";G1={"settings.title":"AI 3D \u6A21\u578B\u5DE5\u4F5C\u53F0","settings.folders":"\u6587\u4EF6\u5939","settings.behavior":"\u884C\u4E3A","settings.converters":"\u8F6C\u6362\u5668","settings.converterMenu":"\u6A21\u578B\u8F6C\u6362\u5668","settings.converterMenu.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u4F60\u9700\u8981\u624B\u52A8\u542F\u7528\u67D0\u6761\u672C\u5730\u8F6C\u6362\u8DEF\u7EBF\u65F6\u518D\u5C55\u5F00\u3002","settings.environmentInspector":"\u73AF\u5883\u68C0\u67E5\u5668","settings.environmentInspector.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u9700\u8981\u914D\u7F6E\u547D\u4EE4\u8DEF\u5F84\u6216\u624B\u52A8\u6267\u884C\u73AF\u5883\u68C0\u67E5\u65F6\u518D\u5C55\u5F00\u3002","settings.paths":"\u8F6C\u6362\u5668\u8DEF\u5F84","settings.diagnostics":"\u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD","settings.performance":"\u6027\u80FD\u4E0E\u663E\u793A","settings.mobileSupport":"\u79FB\u52A8\u7AEF\u652F\u6301","settings.knowledgeGeneration":"\u77E5\u8BC6\u751F\u6210","settings.sourceModelFolder":"\u6E90\u6A21\u578B\u6587\u4EF6\u5939","settings.sourceModelFolder.desc":"\u5B58\u653E\u6E90 3D \u6A21\u578B\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.auxiliaryFileFolder":"\u8F85\u52A9\u6587\u4EF6\u5939","settings.auxiliaryFileFolder.desc":"\u7528\u4E8E\u5B58\u653E\u8F6C\u6362\u540E\u7684 GLB \u7B49\u63D2\u4EF6\u751F\u6210\u7684\u526F\u6587\u4EF6\u3002\u7559\u7A7A\u65F6\u7EE7\u7EED\u653E\u5728 Obsidian \u914D\u7F6E\u76EE\u5F55\u4E0B\u3002","settings.auxiliaryFileFolder.placeholder":"\u7559\u7A7A\u4F7F\u7528\u9690\u85CF\u914D\u7F6E\u76EE\u5F55","settings.reportFolder":"\u62A5\u544A\u6587\u4EF6\u5939","settings.reportFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u77E5\u8BC6\u7B14\u8BB0\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.partFolder":"\u90E8\u4EF6\u7B14\u8BB0\u6587\u4EF6\u5939","settings.partFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u90E8\u4EF6\u7B14\u8BB0\u8349\u7A3F\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.snapshotFolder":"\u5FEB\u7167\u6587\u4EF6\u5939","settings.snapshotFolder.desc":"\u4FDD\u5B58\u5BFC\u51FA\u5FEB\u7167\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.autoGenerateKnowledgeNotes":"\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","settings.autoGenerateKnowledgeNotes.desc":"\u9884\u7559\u7ED9\u540E\u7EED\u81EA\u52A8\u5316\u6D41\u7A0B\u3002\u5F53\u524D\u8BF7\u901A\u8FC7\u547D\u4EE4\u6216\u5DE5\u4F5C\u53F0\u6309\u94AE\u624B\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","settings.annotationPreviewMode":"\u6807\u6CE8\u9884\u89C8\u6A21\u5F0F","settings.annotationPreviewMode.desc":"\u9009\u62E9\u6807\u6CE8\u7ED1\u5B9A\u7B14\u8BB0\u5728\u60AC\u6D6E\u9884\u89C8\u548C\u7F16\u8F91\u5668\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationPreviewMode.plainText":"\u7EAF\u6587\u672C","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"\u6807\u6CE8\u663E\u793A\u6A21\u5F0F","settings.annotationDisplayMode.desc":"\u9009\u62E9\u6A21\u578B\u4E0A\u4E66\u7B7E\u6807\u6CE8\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationDisplayMode.snippet":"\u5B8C\u6574\u7247\u6BB5","settings.annotationDisplayMode.surface":"\u5355\u4E2A\u6807\u7B7E\u9762","settings.annotationDisplayMode.dot":"\u5355\u4E2A\u5706\u70B9","settings.previewRendererRollout":"\u9884\u89C8\u517C\u5BB9\u6A21\u5F0F","settings.previewRendererRollout.desc":"\u63A7\u5236\u5355\u6A21\u578B\u9884\u89C8\uFF08GLB\u3001GLTF\u3001STL\u3001PLY\u3001OBJ\uFF09\u4E2D Three.js \u6E32\u67D3\u8DEF\u5F84\u7684\u542F\u7528\u8303\u56F4\u3002\u53EA\u8981\u51FA\u73B0 pin \u6295\u5F71\u3001\u906E\u6321\u3001\u7F16\u8F91\u6001 pin\u3001\u5FEB\u7167\u6216\u5DE5\u5177\u680F\u884C\u4E3A\u56DE\u9000\uFF0C\u5C31\u5207\u56DE\u201C\u517C\u5BB9\u4F18\u5148\u201D\u3002workbench \u548C 3dgrid \u4E0D\u53D7\u8FD9\u4E2A\u8BBE\u7F6E\u5F71\u54CD\u3002","settings.previewRendererRollout.babylonSafe":"\u517C\u5BB9\u4F18\u5148\uFF08\u9ED8\u8BA4\uFF09","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE","settings.useThreeRenderer":"\u4F7F\u7528 Three.js \u6E32\u67D3\u5668","settings.useThreeRenderer.desc":"\u5728 Three.js\uFF08\u66F4\u5FEB\u3001\u66F4\u8F7B\u91CF\uFF09\u548C Babylon.js\uFF08\u5B8C\u5168\u517C\u5BB9\uFF09\u4E4B\u95F4\u5207\u6362\u5355\u6A21\u578B\u9884\u89C8\u6E32\u67D3\u5668\u3002Three.js \u652F\u6301 GLB/GLTF/STL/PLY/OBJ\u3002\u5DE5\u4F5C\u53F0\u548C 3dgrid \u59CB\u7EC8\u4F7F\u7528 Babylon.js\u3002","settings.experimentalThreeWorkbench":"\u5B9E\u9A8C\u6027 Three \u5DE5\u4F5C\u53F0","settings.experimentalThreeWorkbench.desc":"\u4EC5\u5BF9\u76F4\u8BFB GLB/GLTF \u6587\u4EF6\u5C1D\u8BD5\u4F7F\u7528 Three.js \u5DE5\u4F5C\u53F0\u8DEF\u5F84\u3002\u52A0\u8F7D\u5931\u8D25\u65F6\uFF0C\u6587\u4EF6\u89C6\u56FE\u4F1A\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002","settings.autoRotateDefault":"\u9ED8\u8BA4\u81EA\u52A8\u65CB\u8F6C","settings.autoRotateDefault.desc":"\u542F\u52A8 3D \u9884\u89C8\u65F6\u9ED8\u8BA4\u5F00\u542F\u81EA\u52A8\u65CB\u8F6C\u3002","settings.snapshotNaming":"\u5FEB\u7167\u547D\u540D","settings.snapshotNaming.desc":"\u5BFC\u51FA\u5FEB\u7167\u6587\u4EF6\u7684\u547D\u540D\u65B9\u5F0F\u3002","settings.snapshotNaming.modelName":"\u6A21\u578B\u540D + \u65F6\u95F4\u6233","settings.snapshotNaming.timestamp":"\u4EC5\u65F6\u95F4\u6233","settings.logLevel":"\u65E5\u5FD7\u7EA7\u522B","settings.logLevel.desc":"\u63A7\u5236\u63D2\u4EF6\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6\u3002","settings.language":"\u8BED\u8A00","settings.language.desc":"\u63D2\u4EF6\u8BBE\u7F6E\u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002\u7ACB\u5373\u751F\u6548\u3002","settings.analysisMode":"AI \u8349\u7A3F\u6A21\u5F0F","settings.analysisMode.desc":"\u63A7\u5236\u77E5\u8BC6\u7B14\u8BB0\u751F\u6210\u4FDD\u6301\u672C\u5730\uFF0C\u8FD8\u662F\u989D\u5916\u8BF7\u6C42\u7ECF\u8FC7\u88C1\u526A\u7684\u8FDC\u7A0B\u8349\u7A3F\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4F1A\u963B\u6B62\u539F\u59CB\u6A21\u578B\u4E0A\u4F20\u3002","settings.analysisMode.local":"\u4EC5\u672C\u5730\u8BC1\u636E","settings.analysisMode.hybrid":"\u672C\u5730\u8BC1\u636E + \u8FDC\u7A0B\u8349\u7A3F","settings.analysisMode.remote":"\u57FA\u4E8E\u8BC1\u636E\u7684\u8FDC\u7A0B\u8349\u7A3F","settings.serviceBaseUrl":"\u8349\u7A3F\u670D\u52A1 URL","settings.serviceBaseUrl.desc":"\u53EF\u9009\u7684\u8349\u7A3F\u670D\u52A1\u57FA\u7840\u5730\u5740\uFF0C\u670D\u52A1\u9700\u63A5\u6536 POST /draft-note\u3002\u7559\u7A7A\u65F6\u6240\u6709\u8349\u7A3F\u8F93\u5165\u90FD\u4FDD\u7559\u5728\u672C\u5730\u3002","settings.sendGeometrySummaryToRemote":"\u53D1\u9001\u51E0\u4F55\u6458\u8981","settings.sendGeometrySummaryToRemote.desc":"\u5141\u8BB8\u628A\u7ECF\u8FC7\u88C1\u526A\u7684\u7F51\u683C\u6570\u91CF\u3001\u5305\u56F4\u76D2\u3001\u90E8\u4EF6\u5019\u9009\u3001\u6807\u6CE8\u5750\u6807\u548C\u6700\u8FD1\u90E8\u4EF6\u5173\u8054\u52A0\u5165\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u3002","settings.sendPreviewImagesToRemote":"\u53D1\u9001\u9884\u89C8\u56FE\u5F15\u7528","settings.sendPreviewImagesToRemote.desc":"\u5141\u8BB8\u5728\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u4E2D\u5217\u51FA\u751F\u6210\u7684\u9884\u89C8\u56FE\u8DEF\u5F84\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4E0D\u4F1A\u4E0A\u4F20\u56FE\u7247\u5B57\u8282\u3002","settings.sendRawModelToRemote":"\u53D1\u9001\u539F\u59CB\u6A21\u578B\u6587\u4EF6","settings.sendRawModelToRemote.desc":"\u9884\u7559\u7ED9\u672A\u6765\u663E\u5F0F\u4E0A\u4F20\u652F\u6301\u3002\u82E5\u624B\u52A8\u5F00\u542F\uFF0C\u8FDC\u7A0B\u8349\u7A3F\u8BF7\u6C42\u4F1A\u88AB\u963B\u6B62\uFF0C\u4E0D\u4F1A\u4E0A\u4F20\u6A21\u578B\u3002","settings.enableCad":"\u542F\u7528 CAD \u8F6C\u6362\u5668 (STEP/IGES/BREP)","settings.enableCad.desc":"\u542F\u7528 STEP/IGES/BREP \u683C\u5F0F\u7684 CAD \u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python CadQuery (OpenCASCADE)\u3002\u9700\u8981\uFF1Apip install cadquery trimesh","settings.enableObj2gltf":"\u542F\u7528 obj2gltf \u8F6C\u6362\u5668\uFF08\u5B9E\u9A8C\u6027\uFF09","settings.enableObj2gltf.desc":"\u9ED8\u8BA4\u4F7F\u7528 OBJ \u76F4\u63A5\u52A0\u8F7D\u3002\u4EC5\u5728\u9700\u8981\u672C\u5730\u6807\u51C6\u5316 GLB \u8F93\u51FA\u65F6\u542F\u7528\u3002","settings.preferObj2gltf":"OBJ \u4F18\u5148\u4F7F\u7528 obj2gltf","settings.preferObj2gltf.desc":"\u9ED8\u8BA4\u5173\u95ED\u3002\u4EC5\u5728\u9700\u8981\u6807\u51C6\u5316 GLB \u8F93\u51FA\u6216\u76F4\u63A5 OBJ \u52A0\u8F7D\u6548\u679C\u4E0D\u4F73\u65F6\u5F00\u542F\u3002","settings.enableFbx2gltf":"\u542F\u7528 FBX2glTF \u8F6C\u6362\u5668","settings.enableFbx2gltf.desc":"\u542F\u7528 FBX \u6587\u4EF6\u901A\u8FC7 FBX2glTF \u8F6C\u6362\u3002\u9700\u8981\u672C\u5730\u5B89\u88C5 FBX2glTF \u4E8C\u8FDB\u5236\u6587\u4EF6\u3002","settings.enableMesh":"\u542F\u7528\u7F51\u683C\u8F6C\u6362\u5668 (3MF/DAE)","settings.enableMesh.desc":"\u542F\u7528 3MF \u548C DAE (Collada) \u683C\u5F0F\u7684\u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python trimesh\u3002\u9700\u8981\u5B89\u88C5 Python \u548C trimesh (pip install trimesh numpy networkx pycollada)\u3002","settings.enableSldprt":"\u542F\u7528 SLDPRT \u8F6C\u6362\u5668 (SolidWorks)","settings.enableSldprt.desc":"\u542F\u7528 SolidWorks .sldprt \u6587\u4EF6\u901A\u8FC7 FreeCAD \u8F6C\u6362\u3002\u9700\u8981\u5B89\u88C5 FreeCAD (https://www.freecad.org/downloads.php)\u3002","settings.mobileSupport.desc":"\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0CGLB\u3001GLTF\u3001STL\u3001OBJ\u3001PLY \u8FD9\u7C7B\u76F4\u8BFB\u683C\u5F0F\u53EF\u7528\u3002\u672C\u5730\u8F6C\u6362\u5668\u8BBE\u7F6E\u548C\u547D\u4EE4\u8BCA\u65AD\u4ECD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002","settings.pythonCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF08CAD \u7528\uFF09","settings.pythonCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E CAD \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECAD_CMD\u3002","settings.freecadCmd":"FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF08SLDPRT \u7528\uFF09","settings.freecadCmd.desc":"\u53EF\u9009\u7684 FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E SolidWorks \u6587\u4EF6\u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 FreeCADCmd.exe\uFF0CmacOS \u901A\u5E38\u7528 FreeCADCmd\uFF0CLinux \u901A\u5E38\u7528 freecadcmd\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECADCMD\u3002","settings.obj2gltfCmd":"obj2gltf \u547D\u4EE4\u8DEF\u5F84","settings.obj2gltfCmd.desc":"\u53EF\u9009\u7684 obj2gltf \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 obj2gltf.cmd\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 obj2gltf\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_OBJ2GLTF_CMD\u3002","settings.fbx2gltfCmd":"FBX2glTF \u547D\u4EE4\u8DEF\u5F84","settings.fbx2gltfCmd.desc":"\u53EF\u9009\u7684 FBX2glTF \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 FBX2glTF.exe\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 FBX2glTF\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FBX2GLTF_CMD\u3002","settings.assimpCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF083MF/DAE \u7528\uFF09","settings.assimpCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E 3MF \u548C DAE \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_ASSIMP_CMD\u3002","settings.diagnostics.desc":"\u663E\u793A\u63D2\u4EF6\u5F53\u524D\u5B9E\u9645\u4F7F\u7528\u7684\u53EF\u6267\u884C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5E76\u4E3A Python \u73AF\u5883\u548C\u8F6C\u6362\u5668\u547D\u4EE4\u6267\u884C\u8F7B\u91CF\u81EA\u68C0\u3002","settings.diagnostics.idle":"\u73AF\u5883\u68C0\u67E5\u9ED8\u8BA4\u5173\u95ED\u3002\u70B9\u51FB\u201C\u7ACB\u5373\u68C0\u67E5\u201D\u540E\u624D\u4F1A\u6267\u884C\u3002","settings.diagnostics.checkNow":"\u7ACB\u5373\u68C0\u67E5","settings.diagnostics.checking":"\u68C0\u67E5\u4E2D...","settings.diagnostics.refreshed":"AI 3D \u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD\u5DF2\u5237\u65B0\u3002","settings.diagnostics.checkingAvailability":"\u6B63\u5728\u68C0\u67E5\u8F6C\u6362\u5668\u547D\u4EE4\u53EF\u7528\u6027...","settings.diagnostics.available":"\u53EF\u7528","settings.diagnostics.notFound":"\u672A\u627E\u5230","settings.diagnostics.sourceLabel":"\u6765\u6E90","settings.diagnostics.commandLabel":"\u547D\u4EE4","settings.diagnostics.resolvedPathLabel":"\u89E3\u6790\u8DEF\u5F84","settings.diagnostics.selfCheckLabel":"\u81EA\u68C0","settings.diagnostics.selfCheckOk":"\u901A\u8FC7","settings.diagnostics.selfCheckFailed":"\u5931\u8D25","settings.diagnostics.cadPythonCheck":"Python \u5305\uFF08cadquery\u3001trimesh\uFF09","settings.diagnostics.meshPythonCheck":"Python \u5305\uFF08trimesh\u3001numpy\u3001networkx\u3001collada\uFF09","settings.diagnostics.freecadCmdCheck":"FreeCADCmd \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.obj2gltfCheck":"obj2gltf \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.fbx2gltfCheck":"FBX2glTF \u542F\u52A8\u63A2\u6D4B","settings.canvasHeight":"\u9ED8\u8BA4\u753B\u5E03\u9AD8\u5EA6","settings.canvasHeight.desc":"\u5185\u8054 3D \u9884\u89C8\u7684\u9ED8\u8BA4\u9AD8\u5EA6\uFF08\u50CF\u7D20\uFF09\u3002\u8303\u56F4\uFF1A200\u2013800\u3002","settings.autoRotateSpeed":"\u81EA\u52A8\u65CB\u8F6C\u901F\u5EA6","settings.autoRotateSpeed.desc":"\u542F\u7528\u81EA\u52A8\u65CB\u8F6C\u65F6\u7684\u65CB\u8F6C\u901F\u5EA6\u3002\u8303\u56F4\uFF1A0.1\u20132.0\u3002","settings.renderQuality":"\u6E32\u67D3\u8D28\u91CF","settings.renderQuality.desc":"\u66F4\u9AD8\u8D28\u91CF\u4F7F\u7528\u66F4\u591A GPU \u8D44\u6E90\u3002\u5F71\u54CD\u6297\u952F\u9F7F\u548C\u5206\u8FA8\u7387\u3002","settings.renderScale":"\u6E32\u67D3\u7F29\u653E","settings.renderScale.desc":"\u6E32\u67D3\u5206\u8FA8\u7387\u500D\u6570\u30021.0 = \u539F\u59CB\uFF0C0.5 = \u4E00\u534A\uFF0C2.0 = \u53CC\u500D\uFF08\u8D85\u91C7\u6837\uFF09\u3002\u8303\u56F4\uFF1A0.25\u20132.0\u3002","modelLoad.warningTitle":"\u6682\u65F6\u65E0\u6CD5\u9884\u89C8\u6A21\u578B","modelLoad.warningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528 {converterName} \u8F6C\u6362\u5668\uFF0C\u624D\u80FD\u52A0\u8F7D\u3002","modelLoad.warningHint":"\u8BF7\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528\u5BF9\u5E94\u8F6C\u6362\u5668\uFF0C\u7136\u540E\u91CD\u65B0\u52A0\u8F7D\u5F53\u524D\u6587\u4EF6\u3002","modelLoad.mobileWarningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u672C\u5730\u8F6C\u6362\u5DE5\u5177\uFF0C\u4F46\u8FD9\u4E9B\u5DE5\u5177\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\u4E0D\u53EF\u7528\u3002","modelLoad.mobileWarningHint":"\u8BF7\u5728\u684C\u9762\u7AEF\u6253\u5F00\u6B64\u6587\u4EF6\uFF0C\u6216\u5148\u5C06\u5B83\u8F6C\u6362\u4E3A GLB\u3001GLTF\u3001OBJ\u3001STL \u6216 PLY\u3002","modelLoad.errorTitle":"\u65E0\u6CD5\u663E\u793A\u8FD9\u4E2A\u6A21\u578B","modelLoad.errorMessage":"\u52A0\u8F7D\u5931\u8D25\uFF1A{reason}","modelLoad.errorHint":"\u8BF7\u68C0\u67E5\u6587\u4EF6\u683C\u5F0F\uFF0C\u6216\u6253\u5F00\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\u3002","directView.deferredLoadTitle":"\u6A21\u578B\u9884\u89C8\u5DF2\u6682\u505C","directView.deferredLoadMessage":"\u8FD9\u4E2A\u5927\u578B\u6216\u9700\u8981\u8F6C\u6362\u7684\u6A21\u578B\u662F\u968F\u5DE5\u4F5C\u533A\u6062\u590D\u6253\u5F00\u7684\uFF0C\u4E3A\u4E86\u4FDD\u6301\u4ED3\u5E93\u54CD\u5E94\uFF0C\u5DF2\u6682\u505C\u81EA\u52A8\u52A0\u8F7D\u3002","directView.deferredLoadButton":"\u52A0\u8F7D\u6A21\u578B","headingPin.showSingle":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.showMultiple":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.linkedTo":"\u5173\u8054\u5230\uFF1A{models}","helper.resetViewLabel":"\u91CD\u7F6E\u89C6\u56FE","helper.resetViewDone":"\u5DF2\u91CD\u7F6E","helper.copyModelInfoLabel":"\u590D\u5236\u6A21\u578B\u4FE1\u606F\u4E3A Markdown","helper.copySelectedPartInfoLabel":"\u590D\u5236\u9009\u4E2D\u90E8\u4EF6\u4FE1\u606F","helper.noSelectedPart":"\u8BF7\u5148\u70B9\u51FB\u4E00\u4E2A\u90E8\u4EF6","helper.copied":"\u5DF2\u590D\u5236","helper.failed":"\u5931\u8D25","helper.toggleWireframeLabel":"\u5207\u6362\u7EBF\u6846\u663E\u793A","helper.wireframeOn":"\u7EBF\u6846","helper.wireframeOff":"\u5B9E\u4F53","helper.toggleAxesLabel":"\u5207\u6362\u65B9\u5411\u5750\u6807\u8F74","helper.axesOn":"\u5750\u6807\u8F74\u5DF2\u5F00\u542F","helper.axesOff":"\u5750\u6807\u8F74\u5DF2\u5173\u95ED","helper.toggleBoundingBoxLabel":"\u5207\u6362\u5305\u56F4\u76D2","helper.boundingBoxOn":"\u5305\u56F4\u76D2\u5DF2\u5F00\u542F","helper.boundingBoxOff":"\u5305\u56F4\u76D2\u5DF2\u5173\u95ED","helper.toggleFocusSelectionLabel":"\u805A\u7126\u9009\u4E2D\u90E8\u4EF6","helper.focusSelectionOn":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.focusSelectionOff":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.toggleDisassemblyLabel":"\u5207\u6362\u5206\u89E3\u6A21\u5F0F","helper.disassemblyOn":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.disassemblyOff":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.changeResolutionLabel":"\u5207\u6362\u5206\u8FA8\u7387","helper.resolutionValue":"\u5206\u8FA8\u7387\uFF1A{value}","helper.cameraZoomLabel":"\u76F8\u673A\u7F29\u653E","helper.cameraZoomValue":"\u7F29\u653E\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u5207\u6362\u8DDD\u79BB\u6D4B\u91CF","helper.measurementOn":"\u6D4B\u91CF\u5DF2\u5F00\u542F","helper.measurementOff":"\u6D4B\u91CF\u5DF2\u5173\u95ED","helper.clearMeasurementsLabel":"\u6E05\u9664\u6D4B\u91CF","helper.measurementsCleared":"\u5DF2\u6E05\u9664","helper.copyMeasurementsLabel":"\u590D\u5236\u6D4B\u91CF","helper.noMeasurements":"\u6682\u65E0\u6D4B\u91CF","helper.measurementsCopied":"\u6D4B\u91CF\u5DF2\u590D\u5236","helper.measurementStripTitle":"\u6D4B\u91CF","helper.measurementStripActive":"\u8FDB\u884C\u4E2D","helper.measurementStripSaved":"{count} \u6761","helper.measurementStripEmpty":"\u672A\u8BB0\u5F55","helper.measurementStripMeta":"{count} \u6761 / {unit}","helper.calibrateLabel":"\u6D4B\u91CF\u8BE6\u60C5","helper.calibrateTitle":"\u6D4B\u91CF\u8BE6\u60C5","helper.calibrateCurrent":"\u5F53\u524D\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u771F\u5B9E\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u9501\u5B9A\u6BD4\u4F8B","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6BD4\u4F8B\u5DF2\u5E94\u7528","helper.calibrateResetDone":"\u6BD4\u4F8B\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6D4B\u91CF\u8BE6\u60C5\u5DF2\u5C55\u5F00","helper.calibrateClose":"\u6D4B\u91CF\u8BE6\u60C5\u5DF2\u6536\u8D77","helper.removePreviewLabel":"\u79FB\u9664\u9884\u89C8","helper.copySnapshotLabel":"\u590D\u5236\u5FEB\u7167","helper.saveSnapshotLabel":"\u4FDD\u5B58\u5FEB\u7167\u5230\u4ED3\u5E93","helper.saved":"\u5DF2\u4FDD\u5B58","helper.downloadSnapshotLabel":"\u4E0B\u8F7D\u5FEB\u7167","helper.downloaded":"\u5DF2\u4E0B\u8F7D","helper.toggleAnnotationLabel":"\u5207\u6362\u6807\u6CE8\u6A21\u5F0F","helper.toggleAnnotationsVisibilityLabel":"\u663E\u793A\u6216\u9690\u85CF\u6807\u6CE8","helper.annotateOn":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.annotateOff":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.annotationsVisible":"\u6807\u6CE8\u5DF2\u663E\u793A","helper.annotationsHidden":"\u6807\u6CE8\u5DF2\u9690\u85CF","helper.enableInteractionLabel":"\u542F\u7528\u89E6\u63A7\u4EA4\u4E92","helper.disableInteractionLabel":"\u5207\u56DE\u6EDA\u52A8\u6A21\u5F0F","helper.interactionOn":"\u6A21\u578B\u4EA4\u4E92\u5DF2\u5F00\u542F","helper.interactionOff":"\u6EDA\u52A8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.showMoreActionsLabel":"\u663E\u793A\u66F4\u591A\u64CD\u4F5C","helper.hideMoreActionsLabel":"\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.moreActionsShown":"\u5DF2\u5C55\u5F00\u66F4\u591A\u64CD\u4F5C","helper.moreActionsHidden":"\u5DF2\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.interactAction":"\u4EA4\u4E92","helper.scrollAction":"\u6EDA\u52A8","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"\u6682\u65E0\u6A21\u578B","workbench.emptyText":"\u4F7F\u7528\u201C\u5BFC\u5165 3D \u6A21\u578B\u201D\u547D\u4EE4\u52A0\u8F7D GLB\u3001GLTF\u3001STL\u3001OBJ \u6216 PLY \u6587\u4EF6\u3002","workbench.modelTitle":"3D \u6A21\u578B","workbench.studioTitle":"AI \u6A21\u578B\u5DE5\u4F5C\u53F0","workbench.studioTagline":"\u68C0\u67E5\u3001\u6807\u6CE8\uFF0C\u5E76\u628A 3D \u8D44\u4EA7\u6574\u7406\u6210\u53CC\u94FE\u7B14\u8BB0\u3002","workbench.navLabel":"\u5DE5\u4F5C\u53F0\u5206\u533A","workbench.navGallery":"\u753B\u5ECA","workbench.navLibrary":"\u8D44\u6599\u5E93","workbench.navNotebooks":"\u7B14\u8BB0\u672C","workbench.navSettings":"\u8BBE\u7F6E","workbench.sourcesTitle":"\u6A21\u578B\u6765\u6E90","workbench.layersTitle":"\u5BA1\u9605\u5C42","workbench.viewModeTitle":"\u89C6\u56FE\u6A21\u5F0F","workbench.modeMesh":"\u7F51\u683C\u89C6\u56FE","workbench.modeFocus":"\u805A\u7126\u9009\u533A","workbench.modeMeshShort":"\u7F51\u683C","workbench.modeFocusShort":"\u805A\u7126","workbench.previewViewsTitle":"\u9884\u89C8\u89C6\u56FE","workbench.connectionsTitle":"\u77E5\u8BC6\u8FDE\u63A5","workbench.currentModelLabel":"\u5F53\u524D\u6A21\u578B","workbench.noReportYet":"\u8FD8\u6CA1\u6709\u62A5\u544A\u7B14\u8BB0","workbench.noIndexYet":"\u8FD8\u6CA1\u6709\u77E5\u8BC6\u7D22\u5F15\u3002\u8BF7\u5148\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","workbench.noModelLoaded":"\u5C1A\u672A\u52A0\u8F7D\u6A21\u578B","workbench.disassemblyTitle":"\u5206\u89E3","workbench.explodeLabel":"\u7206\u70B8","workbench.summaryTitle":"\u6458\u8981","workbench.meshesLabel":"\u7F51\u683C","workbench.splatsLabel":"\u70B9\u4E91","workbench.trianglesLabel":"\u4E09\u89D2\u5F62","workbench.verticesLabel":"\u9876\u70B9","workbench.materialsLabel":"\u6750\u8D28","workbench.boundingSizeLabel":"\u5305\u56F4\u76D2","workbench.centerLabel":"\u4E2D\u5FC3","workbench.selectedPartTitle":"\u5F53\u524D\u9009\u4E2D\u90E8\u4EF6","workbench.partMeshLabel":"\u7F51\u683C","workbench.noSelectedPart":"\u70B9\u51FB\u6A21\u578B\u4E2D\u7684\u90E8\u4EF6\u540E\u4F1A\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\u3002","workbench.tagsTitle":"\u6807\u7B7E","workbench.noTagsYet":"\u8FD8\u6CA1\u6709\u6807\u7B7E","workbench.addTagPlaceholder":"\u6DFB\u52A0\u6807\u7B7E...","workbench.addTagAction":"\u6DFB\u52A0","workbench.annotationsTitle":"\u6807\u6CE8","workbench.exitAnnotate":"\u9000\u51FA\u6807\u6CE8","workbench.annotate":"\u6807\u6CE8","workbench.annotateHintActive":"\u70B9\u51FB\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E \xB7 \u6309 Esc \u9000\u51FA","workbench.annotateHintActiveMobile":"\u70B9\u6309\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E\u3002\u9700\u8981\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.pinCount":"{count} \u4E2A\u6807\u6CE8","workbench.editAction":"\u7F16\u8F91","workbench.deleteAction":"\u5220\u9664","workbench.resetViewAction":"\u91CD\u7F6E\u89C6\u56FE","workbench.insertInfoAction":"\u63D2\u5165\u4FE1\u606F","workbench.insertGalleryAction":"\u63D2\u5165 Gallery","workbench.insertCompareAction":"\u63D2\u5165\u5BF9\u6BD4","workbench.playAction":"\u64AD\u653E","workbench.pauseAction":"\u6682\u505C","workbench.saveProfileAction":"\u4FDD\u5B58\u914D\u7F6E","workbench.generateNoteAction":"\u751F\u6210\u7B14\u8BB0","workbench.openNoteAction":"\u6253\u5F00\u7B14\u8BB0","workbench.openIndexAction":"\u6253\u5F00\u7D22\u5F15","workbench.recordTitle":"\u6807\u672C\u5361","workbench.recordSubtitle":"\u5F53\u524D\u8D44\u4EA7\u6863\u6848","workbench.notesTitle":"\u5206\u6790\u672D\u8BB0","workbench.whereTitle":"\u5173\u8054\u4F4D\u7F6E","workbench.noteReady":"\u5173\u8054\u7B14\u8BB0\u5DF2\u5C31\u7EEA","workbench.indexReady":"\u77E5\u8BC6\u7D22\u5F15\u5DF2\u5C31\u7EEA","workbench.notePending":"\u5173\u8054\u7B14\u8BB0\u5F85\u751F\u6210","workbench.analysisLabel":"\u5206\u6790","workbench.settingsUnavailable":"\u8BF7\u4ECE Obsidian \u8BBE\u7F6E\u4E2D\u6253\u5F00\u672C\u63D2\u4EF6\u6765\u8C03\u6574\u5DE5\u4F5C\u53F0\u9009\u9879\u3002","workbench.profileSaved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","workbench.viewReset":"\u89C6\u56FE\u5DF2\u91CD\u7F6E","workbench.infoInserted":"\u6A21\u578B\u4FE1\u606F\u5DF2\u63D2\u5165","workbench.infoCopied":"\u6A21\u578B\u4FE1\u606F\u5DF2\u590D\u5236","workbench.templateInserted":"\u6A21\u677F\u5DF2\u63D2\u5165","workbench.templateCopied":"\u6A21\u677F\u5DF2\u590D\u5236","workbench.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.mobileHintInteractive":"\u5F53\u524D\u4E3A\u4EA4\u4E92\u6A21\u5F0F\u3002\u9700\u8981\u7EE7\u7EED\u6EDA\u52A8\u7B14\u8BB0\u65F6\uFF0C\u8BF7\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","directView.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u4F7F\u7528\u4E0B\u65B9\u5DE5\u5177\u680F\u91CC\u7684\u201C\u4EA4\u4E92\u201D\u6309\u94AE\uFF0C\u5728\u6A21\u578B\u64CD\u4F5C\u548C\u7B14\u8BB0\u6EDA\u52A8\u4E4B\u95F4\u5207\u6362\u3002","directWorkbench.modelLoadInterrupted":"\u6A21\u578B\u52A0\u8F7D\u88AB\u65B0\u8BF7\u6C42\u4E2D\u65AD\u3002","directWorkbench.backendLabel":"\u540E\u7AEF","directWorkbench.routeLabel":"\u8DEF\u7531","directWorkbench.performanceLabel":"\u6027\u80FD","directWorkbench.partCandidatesLabel":"\u5019\u9009\u96F6\u4EF6","directWorkbench.knowledgeTitle":"\u77E5\u8BC6","directWorkbench.registeredTitle":"\u5DF2\u6CE8\u518C\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredLoading":"\u68C0\u67E5\u4E2D...","directWorkbench.registeredCount":"{count} \u4E2A\u5339\u914D","directWorkbench.registeredEmpty":"\u6682\u65E0\u8DE8\u6A21\u578B\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredUnavailable":"\u6682\u65E0\u96F6\u4EF6\u8BC1\u636E","directWorkbench.registeredOpen":"\u6253\u5F00","directWorkbench.registeredOpenNote":"\u7B14\u8BB0","directWorkbench.registeredOpenModel":"\u6A21\u578B","directWorkbench.registeredSourceModel":"\u6765\u81EA {model}","directWorkbench.registeredTargetPartNote":"\u6253\u5F00\u5339\u914D\u96F6\u4EF6\u7B14\u8BB0","directWorkbench.registeredTargetSourceModel":"\u6253\u5F00\u6765\u6E90\u6A21\u578B","directWorkbench.registeredTargetUnavailable":"\u6682\u65E0\u53EF\u6253\u5F00\u76EE\u6807","workbench.fileNotFound":"\u672A\u627E\u5230\u6587\u4EF6\uFF1A{path}","annotation.selectColor":"\u9009\u62E9\u989C\u8272 {color}","annotation.sectionEmpty":"\u8BE5\u6BB5\u5185\u5BB9\u4E3A\u7A7A\u3002","modal.selectModel":"\u9009\u62E9\u4E00\u4E2A 3D \u6A21\u578B...","main.commandImportModel":"\u5BFC\u5165 3D \u6A21\u578B","main.commandGenerateNote":"\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","main.commandOpenKnowledgeIndex":"\u6253\u5F00\u77E5\u8BC6\u7D22\u5F15","main.commandClearConversionCache":"\u6E05\u9664\u8F6C\u6362\u7F13\u5B58","main.commandCheckConverters":"\u68C0\u67E5\u8F6C\u6362\u5668","main.commandCopyDiagnostics":"\u590D\u5236\u8BCA\u65AD\u62A5\u544A","main.converterDiagnosticsMobileUnavailable":"\u8F6C\u6362\u5668\u8BCA\u65AD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0C\u76F4\u8BFB\u683C\u5F0F\u4ECD\u53EF\u52A0\u8F7D\u3002","main.diagnosticsCopied":"AI Model Workbench \u8BCA\u65AD\u62A5\u544A\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\u3002","main.diagnosticsCopyFailed":"\u65E0\u6CD5\u590D\u5236\u8BCA\u65AD\u62A5\u544A\uFF0C\u5DF2\u6539\u4E3A\u521B\u5EFA\u4E00\u4EFD\u8131\u654F\u8BCA\u65AD\u7B14\u8BB0\u3002","codeBlock.noModelPathOrConfig":"\u672A\u6307\u5B9A\u6A21\u578B\u8DEF\u5F84\u6216\u914D\u7F6E\u3002","codeBlock.jsonParseError":"JSON \u89E3\u6790\u9519\u8BEF\uFF1A{error}","codeBlock.jsonParseLine":"\uFF08\u7B2C {line} \u884C\uFF09","codeBlock.noModelsInConfig":"\u914D\u7F6E\u4E2D\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.unsupportedFormat":"\u4E0D\u652F\u6301\u7684\u683C\u5F0F\uFF1A{ext}\u3002\u652F\u6301\uFF1A{formats}","codeBlock.splatDisabled":"\u5F53\u524D\u6253\u5305\u7248\u672C\u6682\u672A\u542F\u7528 SPLAT \u9884\u89C8\u3002\u540E\u7EED\u4F1A\u4F18\u5148\u6062\u590D\u672C\u5730-only .splat\uFF1B.spz/.sog \u9700\u8981\u672C\u5730\u6253\u5305\u89E3\u7801\u5668\u540E\u518D\u8BC4\u4F30\u3002","codeBlock.noConfigSpecified":"\u672A\u6307\u5B9A\u914D\u7F6E\u3002","codeBlock.noModelsSpecified":"\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","codeBlock.renderingGrid":"\u6B63\u5728\u6E32\u67D3\u7F51\u683C...","codeBlock.composeRequiresSections":"\u201Ccompose\u201D \u9884\u8BBE\u9700\u8981\u63D0\u4F9B \u201Csections\u201D \u6570\u7EC4\u3002","codeBlock.composeNoValidSections":"Compose\uFF1A\u6CA1\u6709\u6709\u6548\u7684\u5206\u6BB5\u3002","codeBlock.unknownPreset":"\u672A\u77E5\u9884\u8BBE\uFF1A\u201C{preset}\u201D\u3002\u53EF\u7528\uFF1Acompare\u3001showcase\u3001explode\u3001timeline\u3001compose","codeBlock.presetRequiresModels":"\u9884\u8BBE \u201C{preset}\u201D \u9700\u8981 {min}-{max} \u4E2A\u6A21\u578B\uFF0C\u5F53\u524D\u4E3A {count} \u4E2A\u3002","codeBlock.gridFailed":"\u7F51\u683C\u6E32\u67D3\u5931\u8D25\uFF1A{reason}","livePreview.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u62D6\u52A8\u6A21\u578B\u65F6\u5207\u5230\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","loading.default":"\u52A0\u8F7D\u4E2D...","loading.preparingModel":"\u6B63\u5728\u51C6\u5907\u6A21\u578B...","loading.loadingModel":"\u6B63\u5728\u52A0\u8F7D\u6A21\u578B..."}});function E_(n){W1=n;for(let e of U0)e()}function j(n){var e,t,i;return(i=(t=(e=Iee[W1])==null?void 0:e[n])!=null?t:B0[n])!=null?i:n}function H1(n){return U0.add(n),()=>{U0.delete(n)}}function yee(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function Ki(n,e){return yee(j(n),e)}var Iee,W1,U0,_n=I(()=>{"use strict";V1();k1();Iee={en:B0,"zh-CN":G1},W1="en",U0=new Set});var bd,bE=I(()=>{"use strict";bd="ai3d-direct-view"});function Md(n){var t,i;n.classList.add(z1),(t=n.closest(".workspace-leaf"))==null||t.classList.add(X1);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.add(Y1)}function ME(n){var t,i;n.classList.remove(z1),(t=n.closest(".workspace-leaf"))==null||t.classList.remove(X1);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.remove(Y1)}var z1,X1,Y1,V0=I(()=>{"use strict";z1="ai3d-direct-view",X1="ai3d-direct-view-leaf",Y1="ai3d-direct-view-leaf-content"});function Pee(n){return n!=null?n:j1}function fu(n){var c;let e=n.ext.trim().toLowerCase(),t=(c=n.annotationMode)!=null?c:"none",i=!!n.allowEditModeOnThree,r=!!n.allowWorkbenchFeaturesOnThree,s=!!n.requireWorkbenchFeatures,a=Pee(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(K1.has(e)&&(!s||r)){if(s&&!Cee.has(e))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`workbench experimental Three supports GLB/GLTF only, ext=${e}`};if(t==="edit"&&a!=="three-direct-glb")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`annotationMode=edit, rendererRollout=${a}`};if(a==="babylon-safe")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`rendererRollout=${a}`};if(t==="edit"&&!i)return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"annotationMode=edit, allowEditModeOnThree=false"};let f=s?`${e} workbench preview`:t==="edit"?`${e} direct view edit preview`:t==="readonly"?`${e} preview with readonly annotations`:`simple ${e} preview`;return{backend:"three",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:f}}let l=[];return K1.has(e)||l.push(`ext=${e}`),t!=="none"&&l.push(`annotationMode=${t}`),t==="edit"&&!i&&l.push("allowEditModeOnThree=false"),s&&l.push("requireWorkbenchFeatures=true"),a!==j1&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function Z1(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var j1,K1,Cee,IE=I(()=>{"use strict";j1="babylon-safe",K1=new Set(["glb","gltf","stl","ply","obj"]),Cee=new Set(["glb","gltf"])});function Dee(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function Lee(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Lu(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function gB(){let n=Lu("canvas");return n.style.display="block",n}function w_(...n){let e="THREE."+n.shift();Ou?Ou("log",e,...n):console.log(e,...n)}function vB(n){let e=n[0];if(typeof e=="string"&&e.startsWith("TSL:")){let t=n[1];t&&t.isStackTrace?n[0]+=" "+t.getLocation():n[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return n}function Ct(...n){n=vB(n);let e="THREE."+n.shift();if(Ou)Ou("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function Vt(...n){n=vB(n);let e="THREE."+n.shift();if(Ou)Ou("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function pS(...n){let e=n.join(" ");e in q1||(q1[e]=!0,Ct(...n))}function EB(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}function oo(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Bn[n&255]+Bn[n>>8&255]+Bn[n>>16&255]+Bn[n>>24&255]+"-"+Bn[e&255]+Bn[e>>8&255]+"-"+Bn[e>>16&15|64]+Bn[e>>24&255]+"-"+Bn[t&63|128]+Bn[t>>8&255]+"-"+Bn[t>>16&255]+Bn[t>>24&255]+Bn[i&255]+Bn[i>>8&255]+Bn[i>>16&255]+Bn[i>>24&255]).toLowerCase()}function _i(n,e,t){return Math.max(e,Math.min(t,n))}function zI(n,e){return(n%e+e)%e}function Oee(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function Nee(n,e,t){return n!==e?(t-n)/(e-n):0}function L_(n,e,t){return(1-t)*n+t*e}function wee(n,e,t,i){return L_(n,e,1-Math.exp(-t*i))}function Fee(n,e=1){return e-Math.abs(zI(n,e*2)-e)}function Bee(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function Uee(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function Vee(n,e){return n+Math.floor(Math.random()*(e-n+1))}function Gee(n,e){return n+Math.random()*(e-n)}function kee(n){return n*(.5-Math.random())}function Wee(n){n!==void 0&&(Q1=n);let e=Q1+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Hee(n){return n*D_}function zee(n){return n*Ud}function Xee(n){return(n&n-1)===0&&n!==0}function Yee(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Kee(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function jee(n,e,t,i,r){let s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+i)/2),f=a((e+i)/2),d=s((e-i)/2),h=a((e-i)/2),u=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*h,o*c);break;case"YZY":n.set(l*h,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*h,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*u,o*c);break;case"YXY":n.set(l*u,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*u,o*f,o*c);break;default:Ct("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function so(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function ir(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}function Zee(){let n={enabled:!0,workingColorSpace:fs,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ji&&(r.r=Xl(r.r),r.g=Xl(r.g),r.b=Xl(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ji&&(r.r=Cu(r.r),r.g=Cu(r.g),r.b=Cu(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Ql?N_:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return pS("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return pS("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[fs]:{primaries:e,whitePoint:i,transfer:N_,toXYZ:J1,fromXYZ:e3,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Oi},outputColorSpaceConfig:{drawingBufferColorSpace:Oi}},[Oi]:{primaries:e,whitePoint:i,transfer:Ji,toXYZ:J1,fromXYZ:e3,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Oi}}}),n}function Xl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Cu(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function W0(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?_S.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(Ct("Texture: Unable to serialize Texture."),{})}function X0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function J0(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){yd.fromArray(n,s);let o=r.x*Math.abs(yd.x)+r.y*Math.abs(yd.y)+r.z*Math.abs(yd.z),l=e.dot(yd),c=t.dot(yd),f=i.dot(yd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function BE(n,e,t,i,r,s){Ru.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(b_.x=s*Ru.x-r*Ru.y,b_.y=r*Ru.x+s*Ru.y):b_.copy(Ru),n.copy(e),n.x+=b_.x,n.y+=b_.y,n.applyMatrix4(AB)}function cte(n,e,t,i,r,s,a,o){let l;if(e.side===Mn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===aa,o),l===null)return null;XE.copy(o),XE.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(XE);return ct.far?null:{distance:c,point:XE.clone(),object:n}}function YE(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,kE),n.getVertexPosition(l,WE),n.getVertexPosition(c,HE);let f=cte(n,e,t,i,kE,WE,HE,u3);if(f){let d=new re;zl.getBarycoord(u3,kE,WE,HE,d),r&&(f.uv=zl.getInterpolatedAttribute(r,o,l,c,d,new It)),s&&(f.uv1=zl.getInterpolatedAttribute(s,o,l,c,d,new It)),a&&(f.normal=zl.getInterpolatedAttribute(a,o,l,c,d,new re),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let h={a:o,b:l,c,normal:new re,materialIndex:0};zl.getNormal(kE,WE,HE,h.normal),f.face=h,f.barycoord=d}return f}function QE(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if(ES.fromBufferAttribute(o,r),SS.fromBufferAttribute(o,s),t.distanceSqToSegment(ES,SS,fI,A3)>i)return;fI.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(fI);if(!(ce.far))return{distance:c,point:A3.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function M3(n,e,t,i,r,s,a){let o=_I.distanceSqToPoint(n);if(or.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}function jd(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(I3(r))r.isRenderTargetTexture?(Ct("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][i]=null):e[t][i]=r.clone();else if(Array.isArray(r))if(I3(r[0])){let s=[];for(let a=0,o=r.length;a{hf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},uf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},F3=0,RI=1,B3=2,ig=1,wS=2,Ku=3,aa=0,Mn=1,Ca=2,nl=0,Nd=1,bI=2,MI=3,II=4,U3=5,af=100,V3=101,G3=102,k3=103,W3=104,H3=200,z3=201,X3=202,Y3=203,sS=204,aS=205,K3=206,j3=207,Z3=208,q3=209,Q3=210,$3=211,J3=212,eB=213,tB=214,oS=0,lS=1,cS=2,wd=3,fS=4,dS=5,hS=6,uS=7,rg=0,iB=1,rB=2,Ns=0,yI=1,CI=2,PI=3,DI=4,LI=5,OI=6,NI=7,uI="attached",nB="detached",wI=300,mf=301,Yd=302,FS=303,BS=304,ng=306,Zo=1e3,Ia=1001,Pu=1002,Vr=1003,US=1004,Kd=1005,Gr=1006,ju=1007,uo=1008,ws=1009,FI=1010,BI=1011,Zu=1012,VS=1013,mo=1014,ca=1015,sl=1016,GS=1017,kS=1018,qu=1020,UI=35902,VI=35899,GI=1021,kI=1022,fa=1023,qo=1026,pf=1027,WS=1028,HS=1029,_f=1030,zS=1031,XS=1033,sg=33776,ag=33777,og=33778,lg=33779,YS=35840,KS=35841,jS=35842,ZS=35843,qS=36196,QS=37492,$S=37496,JS=37488,eT=37489,cg=37490,tT=37491,iT=37808,rT=37809,nT=37810,sT=37811,aT=37812,oT=37813,lT=37814,cT=37815,fT=37816,dT=37817,hT=37818,uT=37819,mT=37820,pT=37821,_T=36492,gT=36494,vT=36495,ET=36283,ST=36284,fg=36285,TT=36286,sB=2200,aB=2201,oB=2202,Fd=2300,Bd=2301,nS=2302,mI=2303,Ld=2400,Od=2401,O_=2402,AT=2500,lB=2501,WI=0,dg=1,Qu=2,cB=3200,$u=0,fB=1,Ql="",Oi="srgb",fs="srgb-linear",N_="linear",Ji="srgb",Dd=7680,pI=519,dB=512,hB=513,uB=514,xT=515,mB=516,pB=517,RT=518,_B=519,mS=35044,HI="300 es",ao=2e3,Du=2001;q1={},Ou=null;SB={[oS]:lS,[cS]:hS,[fS]:uS,[wd]:dS,[lS]:oS,[hS]:cS,[uS]:fS,[dS]:wd},ya=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){let i=this._listeners;if(i===void 0)return;let r=i[e];if(r!==void 0){let s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let i=t[e.type];if(i!==void 0){e.target=this;let r=i.slice(0);for(let s=0,a=r.length;s0){let u=.5/Math.sqrt(h+1);this._w=.25/u,this._x=(f-l)*u,this._y=(s-c)*u,this._z=(a-r)*u}else if(i>o&&i>d){let u=2*Math.sqrt(1+i-o-d);this._w=(f-l)/u,this._x=.25*u,this._y=(r+a)/u,this._z=(s+c)/u}else if(o>d){let u=2*Math.sqrt(1+o-i-d);this._w=(s-c)/u,this._x=(r+a)/u,this._y=.25*u,this._z=(l+f)/u}else{let u=2*Math.sqrt(1+d-i-o);this._w=(a-r)/u,this._x=(s+c)/u,this._y=(l+f)/u,this._z=.25*u}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(_i(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,f=t._w;return this._x=i*f+a*o+r*c-s*l,this._y=r*f+a*l+s*o-i*c,this._z=s*f+a*c+i*l-r*o,this._w=a*f-i*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,s=-s,a=-a,o=-o);let l=1-t;if(o<.9995){let c=Math.acos(o),f=Math.sin(c);l=Math.sin(l*c)/f,t=Math.sin(t*c)/f,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},qI=class qI{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion($1.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion($1.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*a,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*i),f=2*(o*t-s*r),d=2*(s*i-a*t);return this.x=t+l*c+a*d-o*f,this.y=i+l*f+o*c-s*d,this.z=r+l*d+s*f-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=_i(this.x,e.x,t.x),this.y=_i(this.y,e.y,t.y),this.z=_i(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=_i(this.x,e,t),this.y=_i(this.y,e,t),this.z=_i(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(_i(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-i*l,this.z=i*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return G0.copy(this).projectOnVector(e),this.sub(G0)}reflect(e){return this.sub(G0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(_i(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};qI.prototype.isVector3=!0;re=qI,G0=new re,$1=new nn,QI=class QI{constructor(e,t,i,r,s,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,a,o,l,c)}set(e,t,i,r,s,a,o,l,c){let f=this.elements;return f[0]=e,f[1]=r,f[2]=o,f[3]=t,f[4]=s,f[5]=l,f[6]=i,f[7]=a,f[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,s=this.elements,a=i[0],o=i[3],l=i[6],c=i[1],f=i[4],d=i[7],h=i[2],u=i[5],m=i[8],_=r[0],p=r[3],g=r[6],v=r[1],T=r[4],S=r[7],E=r[2],A=r[5],R=r[8];return s[0]=a*_+o*v+l*E,s[3]=a*p+o*T+l*A,s[6]=a*g+o*S+l*R,s[1]=c*_+f*v+d*E,s[4]=c*p+f*T+d*A,s[7]=c*g+f*S+d*R,s[2]=h*_+u*v+m*E,s[5]=h*p+u*T+m*A,s[8]=h*g+u*S+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8];return t*a*f-t*o*c-i*s*f+i*o*l+r*s*c-r*a*l}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=f*a-o*c,h=o*l-f*s,u=c*s-a*l,m=t*d+i*h+r*u;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let _=1/m;return e[0]=d*_,e[1]=(r*c-f*i)*_,e[2]=(o*i-r*a)*_,e[3]=h*_,e[4]=(f*t-r*l)*_,e[5]=(r*s-o*t)*_,e[6]=u*_,e[7]=(i*l-c*t)*_,e[8]=(a*t-i*s)*_,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,a,o){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(k0.makeScale(e,t)),this}rotate(e){return this.premultiply(k0.makeRotation(-e)),this}translate(e,t){return this.premultiply(k0.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};QI.prototype.isMatrix3=!0;ri=QI,k0=new ri,J1=new ri().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),e3=new ri().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);oi=Zee();_S=class{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{du===void 0&&(du=Lu("canvas")),du.width=e.width,du.height=e.height;let r=du.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=du}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=Lu("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(H0).x}get height(){return this.source.getSize(H0).y}get depth(){return this.source.getSize(H0).z}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.normalized=e.normalized,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let i=e[t];if(i===void 0){Ct(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Ct(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,normalized:this.normalized,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==wI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Zo:e.x=e.x-Math.floor(e.x);break;case Ia:e.x=e.x<0?0:1;break;case Pu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Zo:e.y=e.y-Math.floor(e.y);break;case Ia:e.y=e.y<0?0:1;break;case Pu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};Pr.DEFAULT_IMAGE=null;Pr.DEFAULT_MAPPING=wI;Pr.DEFAULT_ANISOTROPY=1;$I=class $I{constructor(e=0,t=0,i=0,r=1){this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*i+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*i+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*i+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*i+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s,l=e.elements,c=l[0],f=l[4],d=l[8],h=l[1],u=l[5],m=l[9],_=l[2],p=l[6],g=l[10];if(Math.abs(f-h)<.01&&Math.abs(d-_)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+h)<.1&&Math.abs(d+_)<.1&&Math.abs(m+p)<.1&&Math.abs(c+u+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let T=(c+1)/2,S=(u+1)/2,E=(g+1)/2,A=(f+h)/4,R=(d+_)/4,M=(m+p)/4;return T>S&&T>E?T<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(T),r=A/i,s=R/i):S>E?S<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(S),i=A/r,s=M/r):E<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(E),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-_)*(d-_)+(h-f)*(h-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-_)/v,this.z=(h-f)/v,this.w=Math.acos((c+u+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=_i(this.x,e.x,t.x),this.y=_i(this.y,e.y,t.y),this.z=_i(this.z,e.z,t.z),this.w=_i(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=_i(this.x,e,t),this.y=_i(this.y,e,t),this.z=_i(this.z,e,t),this.w=_i(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(_i(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};$I.prototype.isVector4=!0;or=$I,gS=class extends ya{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Gr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new or(0,0,e,t),this.scissorTest=!1,this.viewport=new or(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Pr(r),a=i.count;for(let o=0;o1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let l=o.shapes;if(Array.isArray(l))for(let c=0,f=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),f.length>0&&(i.images=f),d.length>0&&(i.shapes=d),h.length>0&&(i.skeletons=h),u.length>0&&(i.animations=u),m.length>0&&(i.nodes=m)}return i.object=r,i;function a(o){let l=[];for(let c in o){let f=o[c];delete f.metadata,l.push(f)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.pivot=e.pivot!==null?e.pivot.clone():null,this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;iu+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=u-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1,l.eventsEnabled&&l.dispatchEvent({type:"gripUpdated",data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(nte)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let i=new sa;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},TB={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ef={h:0,s:0,l:0},PE={h:0,s:0,l:0};ht=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){let r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Oi){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,oi.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=oi.workingColorSpace){return this.r=e,this.g=t,this.b=i,oi.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=oi.workingColorSpace){if(e=zI(e,1),t=_i(t,0,1),i=_i(i,0,1),t===0)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+t):i+t-i*t,a=2*i-s;this.r=X0(a,s,e+1/3),this.g=X0(a,s,e),this.b=X0(a,s,e-1/3)}return oi.colorSpaceToWorking(this,r),this}setStyle(e,t=Oi){function i(s){s!==void 0&&parseFloat(s)<1&&Ct("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:Ct("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);Ct("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Oi){let i=TB[e.toLowerCase()];return i!==void 0?this.setHex(i,t):Ct("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Xl(e.r),this.g=Xl(e.g),this.b=Xl(e.b),this}copyLinearToSRGB(e){return this.r=Cu(e.r),this.g=Cu(e.g),this.b=Cu(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Oi){return oi.workingToColorSpace(Un.copy(this),e),Math.round(_i(Un.r*255,0,255))*65536+Math.round(_i(Un.g*255,0,255))*256+Math.round(_i(Un.b*255,0,255))}getHexString(e=Oi){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=oi.workingColorSpace){oi.workingToColorSpace(Un.copy(this),t);let i=Un.r,r=Un.g,s=Un.b,a=Math.max(i,r,s),o=Math.min(i,r,s),l,c,f=(o+a)/2;if(o===a)l=0,c=0;else{let d=a-o;switch(c=f<=.5?d/(a+o):d/(2-a-o),a){case i:l=(r-s)/d+(r0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},ro=new re,Vl=new re,Y0=new re,Gl=new re,pu=new re,_u=new re,l3=new re,K0=new re,j0=new re,Z0=new re,q0=new or,Q0=new or,$0=new or,zl=class n{constructor(e=new re,t=new re,i=new re){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),ro.subVectors(e,t),r.cross(ro);let s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){ro.subVectors(r,t),Vl.subVectors(i,t),Y0.subVectors(e,t);let a=ro.dot(ro),o=ro.dot(Vl),l=ro.dot(Y0),c=Vl.dot(Vl),f=Vl.dot(Y0),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let h=1/d,u=(c*l-o*f)*h,m=(a*f-o*l)*h;return s.set(1-u-m,m,u)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Gl)===null?!1:Gl.x>=0&&Gl.y>=0&&Gl.x+Gl.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,Gl)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Gl.x),l.addScaledVector(a,Gl.y),l.addScaledVector(o,Gl.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return q0.setScalar(0),Q0.setScalar(0),$0.setScalar(0),q0.fromBufferAttribute(e,t),Q0.fromBufferAttribute(e,i),$0.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(q0,s.x),a.addScaledVector(Q0,s.y),a.addScaledVector($0,s.z),a}static isFrontFacing(e,t,i,r){return ro.subVectors(i,t),Vl.subVectors(e,t),ro.cross(Vl).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ro.subVectors(this.c,this.b),Vl.subVectors(this.a,this.b),ro.cross(Vl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return n.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return n.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return n.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return n.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return n.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,r=this.b,s=this.c,a,o;pu.subVectors(r,i),_u.subVectors(s,i),K0.subVectors(e,i);let l=pu.dot(K0),c=_u.dot(K0);if(l<=0&&c<=0)return t.copy(i);j0.subVectors(e,r);let f=pu.dot(j0),d=_u.dot(j0);if(f>=0&&d<=f)return t.copy(r);let h=l*d-f*c;if(h<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector(pu,a);Z0.subVectors(e,s);let u=pu.dot(Z0),m=_u.dot(Z0);if(m>=0&&u<=m)return t.copy(s);let _=u*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(_u,o);let p=f*m-u*d;if(p<=0&&d-f>=0&&u-m>=0)return l3.subVectors(s,r),o=(d-f)/(d-f+(u-m)),t.copy(r).addScaledVector(l3,o);let g=1/(p+_+h);return a=_*g,o=h*g,t.copy(i).addScaledVector(pu,a).addScaledVector(_u,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},kr=class{constructor(e=new re(1/0,1/0,1/0),t=new re(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,no),no.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(T_),LE.subVectors(this.max,T_),gu.subVectors(e.a,T_),vu.subVectors(e.b,T_),Eu.subVectors(e.c,T_),tf.subVectors(vu,gu),rf.subVectors(Eu,vu),Id.subVectors(gu,Eu);let t=[0,-tf.z,tf.y,0,-rf.z,rf.y,0,-Id.z,Id.y,tf.z,0,-tf.x,rf.z,0,-rf.x,Id.z,0,-Id.x,-tf.y,tf.x,0,-rf.y,rf.x,0,-Id.y,Id.x,0];return!J0(t,gu,vu,Eu,LE)||(t=[1,0,0,0,1,0,0,0,1],!J0(t,gu,vu,Eu,LE))?!1:(OE.crossVectors(tf,rf),t=[OE.x,OE.y,OE.z],J0(t,gu,vu,Eu,LE))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,no).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(no).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(kl[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),kl[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),kl[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),kl[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),kl[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),kl[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),kl[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),kl[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(kl),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}},kl=[new re,new re,new re,new re,new re,new re,new re,new re],no=new re,DE=new kr,gu=new re,vu=new re,Eu=new re,tf=new re,rf=new re,Id=new re,T_=new re,LE=new re,OE=new re,yd=new re;qr=new re,NE=new It,ste=0,vr=class extends ya{constructor(e,t,i=!1){if(super(),Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:ste++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=mS,this.updateRanges=[],this.gpuType=ca,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;A_.subVectors(e,this.center);let t=A_.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(A_,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(eI.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(A_.copy(e.center).add(eI)),this.expandByPoint(A_.copy(e.center).sub(eI))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}},ote=0,ba=new li,tI=new er,Su=new re,na=new kr,x_=new kr,gn=new re,Qi=class n extends ya{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:ote++}),this.uuid=oo(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Dee(e)?U_:B_)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new ri().getNormalMatrix(e);i.applyNormalMatrix(s),i.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return ba.makeRotationFromQuaternion(e),this.applyMatrix4(ba),this}rotateX(e){return ba.makeRotationX(e),this.applyMatrix4(ba),this}rotateY(e){return ba.makeRotationY(e),this.applyMatrix4(ba),this}rotateZ(e){return ba.makeRotationZ(e),this.applyMatrix4(ba),this}translate(e,t,i){return ba.makeTranslation(e,t,i),this.applyMatrix4(ba),this}scale(e,t,i){return ba.makeScale(e,t,i),this.applyMatrix4(ba),this}lookAt(e){return tI.lookAt(e),tI.updateMatrix(),this.applyMatrix4(tI.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Su).negate(),this.translate(Su.x,Su.y,Su.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&Ct("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new kr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Vt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new re(-1/0,-1/0,-1/0),new re(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let r={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],f=[];for(let d=0,h=c.length;d0&&(r[l]=f,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone());let r=e.attributes;for(let c in r){let f=r[c];this.setAttribute(c,f.clone(t))}let s=e.morphAttributes;for(let c in s){let f=[],d=s[c];for(let h=0,u=d.length;h0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){Ct(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Ct(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Nd&&(i.blending=this.blending),this.side!==aa&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==sS&&(i.blendSrc=this.blendSrc),this.blendDst!==aS&&(i.blendDst=this.blendDst),this.blendEquation!==af&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==wd&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==pI&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Dd&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Dd&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Dd&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){let a=[];for(let o in s){let l=s[o];delete l.metadata,a.push(l)}return a}if(t){let s=r(e.textures),a=r(e.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Bu=class extends Wr{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ht(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},R_=new re,Au=new re,xu=new re,Ru=new It,b_=new It,AB=new li,wE=new re,M_=new re,FE=new re,c3=new It,iI=new It,f3=new It,V_=class extends er{constructor(e=new Bu){if(super(),this.isSprite=!0,this.type="Sprite",Tu===void 0){Tu=new Qi;let t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Gd(t,5);Tu.setIndex([0,1,2,0,2,3]),Tu.setAttribute("position",new of(i,3,0,!1)),Tu.setAttribute("uv",new of(i,2,3,!1))}this.geometry=Tu,this.material=e,this.center=new It(.5,.5),this.count=1}raycast(e,t){e.camera===null&&Vt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Au.setFromMatrixScale(this.matrixWorld),AB.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),xu.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&Au.multiplyScalar(-xu.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;BE(wE.set(-.5,-.5,0),xu,a,Au,r,s),BE(M_.set(.5,-.5,0),xu,a,Au,r,s),BE(FE.set(.5,.5,0),xu,a,Au,r,s),c3.set(0,0),iI.set(1,0),f3.set(1,1);let o=e.ray.intersectTriangle(wE,M_,FE,!1,R_);if(o===null&&(BE(M_.set(-.5,.5,0),xu,a,Au,r,s),iI.set(0,1),o=e.ray.intersectTriangle(wE,FE,M_,!1,R_),o===null))return;let l=e.ray.origin.distanceTo(R_);le.far||t.push({distance:l,point:R_.clone(),uv:zl.getInterpolation(R_,wE,M_,FE,c3,iI,f3,new It),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};Wl=new re,rI=new re,UE=new re,nf=new re,nI=new re,VE=new re,sI=new re,Qo=class{constructor(e=new re,t=new re(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Wl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Wl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Wl.copy(this.origin).addScaledVector(this.direction,t),Wl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){rI.copy(e).add(t).multiplyScalar(.5),UE.copy(t).sub(e).normalize(),nf.copy(this.origin).sub(rI);let s=e.distanceTo(t)*.5,a=-this.direction.dot(UE),o=nf.dot(this.direction),l=-nf.dot(UE),c=nf.lengthSq(),f=Math.abs(1-a*a),d,h,u,m;if(f>0)if(d=a*l-o,h=a*o-l,m=s*f,d>=0)if(h>=-m)if(h<=m){let _=1/f;d*=_,h*=_,u=d*(d+a*h+2*o)+h*(a*d+h+2*l)+c}else h=s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h=-s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h<=-m?(d=Math.max(0,-(-a*s+o)),h=d>0?-s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c):h<=m?(d=0,h=Math.min(Math.max(-s,-l),s),u=h*(h+2*l)+c):(d=Math.max(0,-(a*s+o)),h=d>0?s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c);else h=a>0?-s:s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(rI).addScaledVector(UE,h),u}intersectSphere(e,t){Wl.subVectors(e.center,this.origin);let i=Wl.dot(this.direction),r=Wl.dot(Wl)-i*i,s=e.radius*e.radius;if(r>s)return null;let a=Math.sqrt(s-r),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,a,o,l,c=1/this.direction.x,f=1/this.direction.y,d=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,r=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,r=(e.min.x-h.x)*c),f>=0?(s=(e.min.y-h.y)*f,a=(e.max.y-h.y)*f):(s=(e.max.y-h.y)*f,a=(e.min.y-h.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-h.z)*d,l=(e.max.z-h.z)*d):(o=(e.max.z-h.z)*d,l=(e.min.z-h.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Wl)!==null}intersectTriangle(e,t,i,r,s){nI.subVectors(t,e),VE.subVectors(i,e),sI.crossVectors(nI,VE);let a=this.direction.dot(sI),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;nf.subVectors(this.origin,e);let l=o*this.direction.dot(VE.crossVectors(nf,VE));if(l<0)return null;let c=o*this.direction.dot(nI.cross(nf));if(c<0||l+c>a)return null;let f=-o*nf.dot(sI);return f<0?null:this.at(f/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},ds=class extends Wr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},d3=new li,Cd=new Qo,GE=new ys,h3=new re,kE=new re,WE=new re,HE=new re,aI=new re,zE=new re,u3=new re,XE=new re,ci=class extends er{constructor(e=new Qi,t=new ds){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(d3.copy(s).invert(),Cd.copy(e.ray).applyMatrix4(d3),!(i.boundingBox!==null&&Cd.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Cd)))}_computeIntersections(e,t,i){let r,s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,f=s.attributes.uv1,d=s.attributes.normal,h=s.groups,u=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=h.length;m<_;m++){let p=h[m],g=a[p.materialIndex],v=Math.max(p.start,u.start),T=Math.min(o.count,Math.min(p.start+p.count,u.start+u.count));for(let S=v,E=T;S1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||mte.getNormalMatrix(e),r=this.coplanarPoint(cI).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}},Pd=new ys,pte=new It(.5,.5),ZE=new re,Gu=class{constructor(e=new Ma,t=new Ma,i=new Ma,r=new Ma,s=new Ma,a=new Ma){this.planes=[e,t,i,r,s,a]}set(e,t,i,r,s,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=ao,i=!1){let r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],f=s[4],d=s[5],h=s[6],u=s[7],m=s[8],_=s[9],p=s[10],g=s[11],v=s[12],T=s[13],S=s[14],E=s[15];if(r[0].setComponents(c-a,u-f,g-m,E-v).normalize(),r[1].setComponents(c+a,u+f,g+m,E+v).normalize(),r[2].setComponents(c+o,u+d,g+_,E+T).normalize(),r[3].setComponents(c-o,u-d,g-_,E-T).normalize(),i)r[4].setComponents(l,h,p,S).normalize(),r[5].setComponents(c-l,u-h,g-p,E-S).normalize();else if(r[4].setComponents(c-l,u-h,g-p,E-S).normalize(),t===ao)r[5].setComponents(c+l,u+h,g+p,E+S).normalize();else if(t===Du)r[5].setComponents(l,h,p,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Pd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Pd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Pd)}intersectsSprite(e){Pd.center.set(0,0,0);let t=pte.distanceTo(e.center);return Pd.radius=.7071067811865476+t,Pd.applyMatrix4(e.matrixWorld),this.intersectsSphere(Pd)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,ZE.y=r.normal.y>0?e.max.y:e.min.y,ZE.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(ZE)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},Vn=class extends Wr{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ht(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},ES=new re,SS=new re,T3=new li,P_=new Qo,qE=new ys,fI=new re,A3=new re,$o=class extends er{constructor(e=new Qi,t=new Vn){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0?1:-1,f.push(K.x,K.y,K.z),d.push(Y/R),d.push(1-J/M),V+=1}}for(let J=0;J0)&&u.push(T,S,A),(g!==i-1||l[Rd(f.sourcePath,f.sourceExt,f.targetExt),f]));function o(){let f=t();i(f),e==null||e(f)}return(n.length!==s.length||s.some((f,d)=>!hee(f,n[d])))&&(e==null||e([...s])),{get(f,d,h){return a.get(Rd(f,d,h))},set(f){a.set(Rd(f.sourcePath,f.sourceExt,f.targetExt),f),o()},delete(f,d,h){let u=a.delete(Rd(f,d,h));return u&&o(),u},clear(){a.size!==0&&(a.clear(),o())},entries(){return t()}}}var C0=I(()=>{"use strict"});function $a(n){return n.trim().toLowerCase().replace(/^\./,"")}function P0(n){return uee.get($a(n))}function Ja(n){let e=P0(n);return!!(e!=null&&e.enabled)}function u_(n){return["splat","spz","sog"].includes($a(n))}function Bl(){return M1.filter(n=>n.enabled).map(n=>n.ext)}var M1,uee,eo=I(()=>{"use strict";M1=[{ext:"glb",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"gltf",family:"mesh",strategy:"direct",directLoader:"babylon",enabled:!0},{ext:"stl",family:"mesh",strategy:"direct",directLoader:"custom-stl",enabled:!0},{ext:"obj",family:"mesh",strategy:"direct",directLoader:"babylon",converterId:"obj2gltf",outputFormat:"glb",enabled:!0},{ext:"ply",family:"mesh",strategy:"direct",directLoader:"custom-ply",enabled:!0},{ext:"fbx",family:"mesh",strategy:"convert",converterId:"fbx2gltf",outputFormat:"glb",enabled:!0},{ext:"step",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"stp",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"iges",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"igs",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"brep",family:"cad",strategy:"convert",converterId:"freecad",outputFormat:"glb",enabled:!0},{ext:"sldprt",family:"cad",strategy:"convert",converterId:"sldprt",outputFormat:"glb",enabled:!0},{ext:"3mf",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0},{ext:"dae",family:"mesh",strategy:"convert",converterId:"assimp",outputFormat:"glb",enabled:!0}],uee=new Map(M1.map(n=>[n.ext,n]))});var QAe,$c,D0=I(()=>{"use strict";eo();QAe=new Set(Bl()),$c={analysisMode:"local",serviceBaseUrl:"",copySourceModelToVault:!1,sourceModelFolder:"Assets/3D",auxiliaryFileFolder:"",reportFolder:"Analysis/3D Reports",partFolder:"Parts/3D Components",previewFolder:"Media/3D Previews",maxFileSizeMb:50,autoGenerateKnowledgeNotes:!0,annotationPreviewMode:"plain-text",annotationDisplayMode:"surface",previewRendererRollout:"babylon-safe",useThreeRenderer:!1,useThreeForConvertedDirectView:!0,experimentalThreeWorkbench:!1,sendRawModelToRemote:!1,sendPreviewImagesToRemote:!1,sendGeometrySummaryToRemote:!1,defaultKnowledgeTaxonomy:"default-v1",defaultCanvasHeight:400,autoRotateDefault:!1,autoRotateSpeed:.5,renderQuality:"high",renderScale:1.5,snapshotFolder:"Media/3D Previews",snapshotNaming:"model-name",enabledConverterIds:[],freecadCommand:"",obj2gltfCommand:"",fbx2gltfCommand:"",assimpCommand:"",freecadcmdCommand:"",preferObj2gltfForObj:!1,preferFbx2gltfForFbx:!1,logLevel:"warn",locale:"en"}});function I1(n){let e={...n},t=new Set;return{getState:()=>e,setState(i){e={...e,...i};let r=[...t];for(let s of r)s()},subscribe(i){return t.add(i),()=>{t.delete(i)}}}}var y1=I(()=>{"use strict"});function TE(n){if(!Number.isFinite(n))return n;let e=Number(n.toPrecision(6));return Object.is(e,-0)?0:e}function lu(n){return[TE(n[0]),TE(n[1]),TE(n[2])]}function C1(n){return Object.is(TE(n),n)}var AE=I(()=>{"use strict"});function P1(n){return n.trim()}function mee(n){let e=P1(n);return/^Registered from model group with /.test(e)||/^Registered from model component metadata with /.test(e)||/^Merged from [\d,]+ generic tiny meshes? to avoid over-splitting renderer fragments\.$/.test(e)||/^Component ID: .+\.$/.test(e)||/^Occurrence ID: .+\.$/.test(e)||/^Part number: .+\.$/.test(e)||/^Component path: .+\.$/.test(e)||/^Format lineage: .+\.$/.test(e)||/^[\d,]+ triangles? and [\d,]+ vertex(?:es|s)\.$/.test(e)||/^Bounding size [-+0-9.eE]+ x [-+0-9.eE]+ x [-+0-9.eE]+\.$/.test(e)||/^Uses material ".+"\.$/.test(e)}function pee(n){return n.map(P1).filter(e=>e.length>0)}function D1(n){let e=pee(n.observations);return n.reviewed||n.notePath?e.slice(0,16):e.filter(t=>!mee(t)).slice(0,16)}function L0(n){let e=D1(n);return e.length===n.observations.length&&e.every((t,i)=>t===n.observations[i])}function cu(n){return{...n,meshRefs:n.meshRefs.slice(0,16),materialRefs:n.materialRefs.slice(0,32),observations:D1(n),registeredMatches:void 0}}var xE=I(()=>{"use strict"});function F1(n){let e=I1(_ee),t=null,i=0,r=0,s=null;function a(){t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(h=>console.error("[AI3D] Auto-save failed:",h))},500)}function o(){i+=1,a()}function l(){let h=e.getState();return{stateSchemaVersion:L1,settings:h.settings,convertedAssetRecords:h.convertedAssetRecords,modelAssetProfiles:h.modelAssetProfiles,agentDraft:h.agentDraft,agentPlan:h.agentPlan,lastKnowledgeGeneration:h.lastKnowledgeGeneration}}function c(h=!1){return h&&r>=i&&(i+=1),s||(s=f()),s}async function f(){try{for(;ru[m]!==_)&&(e.setState({settings:{...u,...h}}),o())},setLastKnowledgeGeneration(h){h!==e.getState().lastKnowledgeGeneration&&(e.setState({lastKnowledgeGeneration:h}),o())},async load(){var p,g,v,T,S;let h=await n.loadData();if(!h)return;d=!!((p=h.settings)!=null&&p.locale);let u=h.stateSchemaVersion===L1,{profiles:m,changed:_}=vee(h.modelAssetProfiles,{trustPersistedSchema:u});e.setState({settings:{...$c,...(g=h.settings)!=null?g:{}},convertedAssetRecords:(v=h.convertedAssetRecords)!=null?v:[],modelAssetProfiles:m,agentDraft:(T=h.agentDraft)!=null?T:"",agentPlan:(S=h.agentPlan)!=null?S:null,lastKnowledgeGeneration:Mee(h.lastKnowledgeGeneration)}),(_||!u)&&(i+=1,t&&window.clearTimeout(t),t=window.setTimeout(()=>{t=null,c().catch(E=>console.error("[AI3D] Normalized state save failed:",E))},gee))},async save(){t&&(window.clearTimeout(t),t=null),await c(!0)},dispose(){t&&(window.clearTimeout(t),t=null),c().catch(h=>console.error("[AI3D] Final save on dispose failed:",h))}}}function vee(n,e={}){if(!n||typeof n!="object")return{profiles:{},changed:!1};let t={},i=!1;for(let[r,s]of Object.entries(n)){if(!s||typeof s!="object")continue;if(e.trustPersistedSchema&&Eee(s)){t[r]=s;continue}let a=new Date().toISOString(),o=bee(s.registeredParts,r);i=i||o.changed,t[r]={tags:Array.isArray(s.tags)?s.tags:[],notes:typeof s.notes=="string"?s.notes:"",annotations:Array.isArray(s.annotations)?s.annotations:[],registeredParts:o.parts,analysisVersion:typeof s.analysisVersion=="string"?s.analysisVersion:void 0,reportNotePath:typeof s.reportNotePath=="string"?s.reportNotePath:void 0,analysisSidecarPath:typeof s.analysisSidecarPath=="string"?s.analysisSidecarPath:void 0,previewImagePaths:Array.isArray(s.previewImagePaths)?s.previewImagePaths.filter(l=>typeof l=="string"):void 0,knowledgeIndexPath:typeof s.knowledgeIndexPath=="string"?s.knowledgeIndexPath:void 0,createdAt:typeof s.createdAt=="string"?s.createdAt:a,updatedAt:typeof s.updatedAt=="string"?s.updatedAt:a}}return{profiles:t,changed:i}}function Eee(n){return Array.isArray(n.tags)&&typeof n.notes=="string"&&Array.isArray(n.annotations)&&(n.registeredParts===void 0||Array.isArray(n.registeredParts)&&n.registeredParts.length<=RE)&&to(n.analysisVersion)&&to(n.reportNotePath)&&to(n.analysisSidecarPath)&&to(n.knowledgeIndexPath)&&(n.previewImagePaths===void 0||Array.isArray(n.previewImagePaths))&&typeof n.createdAt=="string"&&typeof n.updatedAt=="string"}function m_(n,e=Number.POSITIVE_INFINITY){let t=Array.isArray(n)?n.filter(i=>typeof i=="string"&&i.trim().length>0):[];return Number.isFinite(e)?t.slice(0,e):t}function p_(n,e=Number.POSITIVE_INFINITY){return Array.isArray(n)&&(!Number.isFinite(e)||n.length<=e)&&n.every(t=>typeof t=="string"&&t.trim().length>0)}function O1(n){if(!Array.isArray(n)||n.length<3)return;let e=n.slice(0,3).map(t=>Number(t));return e.every(Number.isFinite)?lu(e):void 0}function bE(n){return Array.isArray(n)&&n.length===3&&n.every(e=>Number.isFinite(e)&&C1(Number(e)))}function B1(n){return n==="group"||n==="mesh"||n==="component"||n==="detail-cluster"?n:void 0}function See(n){return n===void 0||B1(n)===n}function N0(n){return n==="glb"||n==="gltf"||n==="stl"||n==="obj"||n==="splat"||n==="ply"||n==="fbx"||n==="step"||n==="stp"||n==="iges"||n==="igs"||n==="brep"||n==="sldprt"||n==="3mf"||n==="dae"?n:void 0}function N1(n){return n===void 0||N0(n)===n}function U1(n){return n==="direct"||n==="convert"?n:void 0}function Tee(n){return n===void 0||U1(n)===n}function to(n){return n===void 0||typeof n=="string"}function O0(n){return n===void 0||Number.isInteger(n)&&Number(n)>=0}function Aee(n){if(!n||typeof n!="object")return!1;let e=n;return"registeredMatches"in e?!1:typeof e.partId=="string"&&e.partId.length>0&&typeof e.assetId=="string"&&e.assetId.length>0&&typeof e.name=="string"&&e.name.length>0&&to(e.parentPartId)&&See(e.source)&&to(e.componentId)&&to(e.occurrenceId)&&to(e.partNumber)&&to(e.componentPath)&&to(e.category)&&p_(e.meshRefs,16)&&O0(e.childCount)&&p_(e.materialRefs,32)&&(e.bbox===void 0||bE(e.bbox))&&(e.center===void 0||bE(e.center))&&O0(e.triangleCount)&&O0(e.vertexCount)&&(typeof e.materialName=="string"||e.materialName===null)&&N1(e.sourceFormat)&&N1(e.effectiveFormat)&&Tee(e.loadStrategy)&&Number.isFinite(e.confidence)&&Number(e.confidence)>=0&&Number(e.confidence)<=1&&p_(e.observations,16)&&L0(e)&&p_(e.inferredFunctions)&&p_(e.knowledgeTags)&&to(e.notePath)&&typeof e.reviewed=="boolean"}function xee(n){if(n.length===0)return;if(n.length>RE)return null;let e=new Set;for(let t of n){if(!Aee(t))return null;let i=`${t.assetId}:${t.partId}`;if(e.has(i))return null;e.add(i)}return n}function w1(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function Ree(n){return n.length<=RE?n:[...n].sort((e,t)=>{var s,a;let i=w1(e)-w1(t);if(i!==0)return i;let r=t.confidence-e.confidence;return r!==0?r:((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0)}).slice(0,RE)}function bee(n,e){if(!Array.isArray(n))return{parts:void 0,changed:!1};let t=xee(n);if(t!==null)return{parts:t,changed:!1};let i=[],r=new Set,s=!1;for(let o of n){if(!o||typeof o!="object")continue;let l=o;"registeredMatches"in l&&(s=!0),(Array.isArray(l.meshRefs)&&l.meshRefs.length>16||Array.isArray(l.materialRefs)&&l.materialRefs.length>32||Array.isArray(l.observations)&&l.observations.length>16||l.bbox!==void 0&&!bE(l.bbox)||l.center!==void 0&&!bE(l.center))&&(s=!0);let c=typeof l.partId=="string"?l.partId:"",f=typeof l.name=="string"?l.name:"";if(!c||!f)continue;let d=typeof l.assetId=="string"&&l.assetId?l.assetId:e,h=`${d}:${c}`;if(r.has(h))continue;r.add(h);let u={partId:c,assetId:d,parentPartId:typeof l.parentPartId=="string"?l.parentPartId:void 0,name:f,source:B1(l.source),componentId:typeof l.componentId=="string"?l.componentId:void 0,occurrenceId:typeof l.occurrenceId=="string"?l.occurrenceId:void 0,partNumber:typeof l.partNumber=="string"?l.partNumber:void 0,componentPath:typeof l.componentPath=="string"?l.componentPath:void 0,category:typeof l.category=="string"?l.category:void 0,meshRefs:m_(l.meshRefs,16),childCount:Number.isFinite(l.childCount)?Math.max(0,Math.floor(Number(l.childCount))):void 0,materialRefs:m_(l.materialRefs,32),bbox:O1(l.bbox),center:O1(l.center),triangleCount:Number.isFinite(l.triangleCount)?Math.max(0,Math.floor(Number(l.triangleCount))):void 0,vertexCount:Number.isFinite(l.vertexCount)?Math.max(0,Math.floor(Number(l.vertexCount))):void 0,materialName:typeof l.materialName=="string"?l.materialName:null,sourceFormat:N0(l.sourceFormat),effectiveFormat:N0(l.effectiveFormat),loadStrategy:U1(l.loadStrategy),confidence:Number.isFinite(l.confidence)?Math.max(0,Math.min(1,Number(l.confidence))):.5,observations:m_(l.observations,16),inferredFunctions:m_(l.inferredFunctions),knowledgeTags:m_(l.knowledgeTags),notePath:typeof l.notePath=="string"?l.notePath:void 0,registeredMatches:void 0,reviewed:l.reviewed===!0},m=cu(u);L0(u)||(s=!0),i.push(m)}let a=Ree(i);return(i.length!==n.length||a.length!==i.length)&&(s=!0),{parts:a.length>0?a:void 0,changed:s}}function Mee(n){if(!n||typeof n!="object")return null;let e=typeof n.modelPath=="string"?n.modelPath:"";return e?{modelPath:e,reportNotePath:typeof n.reportNotePath=="string"?n.reportNotePath:void 0,analysisSidecarPath:typeof n.analysisSidecarPath=="string"?n.analysisSidecarPath:void 0,knowledgeIndexPath:typeof n.knowledgeIndexPath=="string"?n.knowledgeIndexPath:void 0,partNoteCount:Number.isFinite(n.partNoteCount)?Math.max(0,Math.floor(n.partNoteCount)):0,previewImageCount:Number.isFinite(n.previewImageCount)?Math.max(0,Math.floor(n.previewImageCount)):0,generatedAt:typeof n.generatedAt=="string"?n.generatedAt:new Date().toISOString(),status:n.status==="failed"||n.status==="pending"?n.status:"success",warningCount:Number.isFinite(n.warningCount)?Math.max(0,Math.floor(n.warningCount)):0}:null}function w0(){let n=new Date().toISOString();return{tags:[],notes:"",annotations:[],registeredParts:void 0,createdAt:n,updatedAt:n}}var _ee,RE,gee,L1,F0=I(()=>{"use strict";D0();y1();AE();xE();_ee={settings:{...$c},currentModelPath:null,convertedAssetRecords:[],modelAssetProfiles:{},agentDraft:"",agentPlan:null,modelPreview:null,selectedPart:null,lastKnowledgeGeneration:null},RE=256,gee=50,L1=1});var B0,V1=I(()=>{"use strict";B0={"settings.title":"AI 3d model workbench","settings.folders":"Folders","settings.behavior":"Behavior","settings.converters":"Converters","settings.converterMenu":"Model converters","settings.converterMenu.desc":"Closed by default. Open this section only when you want to manually enable an optional local conversion route.","settings.environmentInspector":"Environment inspector","settings.environmentInspector.desc":"Closed by default. Open this section when you need to configure command paths or run environment checks.","settings.paths":"Converter paths","settings.diagnostics":"Converter command diagnostics","settings.performance":"Performance & display","settings.mobileSupport":"Mobile support","settings.knowledgeGeneration":"Knowledge generation","settings.sourceModelFolder":"Source model folder","settings.sourceModelFolder.desc":"Vault folder where source model files are stored.","settings.auxiliaryFileFolder":"Auxiliary file folder","settings.auxiliaryFileFolder.desc":"Vault folder for generated side files such as converted GLB assets. Leave empty to keep them under the Obsidian config folder.","settings.auxiliaryFileFolder.placeholder":"Leave empty for the hidden config folder","settings.reportFolder":"Report folder","settings.reportFolder.desc":"Vault folder where generated knowledge notes are saved.","settings.partFolder":"Part notes folder","settings.partFolder.desc":"Vault folder where generated part note drafts are saved.","settings.snapshotFolder":"Snapshot folder","settings.snapshotFolder.desc":"Vault folder where exported snapshots are saved.","settings.autoGenerateKnowledgeNotes":"Auto-generate knowledge notes","settings.autoGenerateKnowledgeNotes.desc":"Reserved for a future automation flow. For now, generate notes manually from the command palette.","settings.annotationPreviewMode":"Annotation preview mode","settings.annotationPreviewMode.desc":"Choose how bound note previews render in annotation popovers and the editor.","settings.annotationPreviewMode.plainText":"Plain text","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"Annotation display mode","settings.annotationDisplayMode.desc":"Choose how bookmark pins appear over the model.","settings.annotationDisplayMode.snippet":"Full snippet","settings.annotationDisplayMode.surface":"Single surface","settings.annotationDisplayMode.dot":"Single dot","settings.previewRendererRollout":"Preview compatibility mode","settings.previewRendererRollout.desc":"Controls how widely the Three.js preview path is used for single-model previews (GLB, GLTF, STL, PLY, OBJ). Switch back to Compatibility mode if pin projection, occlusion, edit pins, snapshots, or toolbar behavior regress. 3dgrid is not affected by this setting.","settings.previewRendererRollout.babylonSafe":"Compatibility mode (Default)","settings.previewRendererRollout.readonly":"Reading surfaces only","settings.previewRendererRollout.direct":"Reading + file view","settings.useThreeRenderer":"Use Three.js renderer","settings.useThreeRenderer.desc":"Toggle between Three.js (faster, lighter) and Babylon.js (full compatibility) for single-model previews. Three.js supports GLB/GLTF/STL/PLY/OBJ. 3dgrid always uses Babylon.js.","settings.useThreeForConvertedDirectView":"Converted GLB Three fast path","settings.useThreeForConvertedDirectView.desc":"When opening STEP, FBX, 3MF, DAE, and other converted files, load the generated GLB with Three.js first and silently fall back to Babylon.js if it fails. Turn this off to make converted files follow the normal compatibility mode.","settings.experimentalThreeWorkbench":"Experimental Three workbench","settings.experimentalThreeWorkbench.desc":"Try the Three.js workbench path for direct GLB/GLTF files only. If loading fails, the file view falls back to Babylon.js automatically.","settings.autoRotateDefault":"Auto-rotate by default","settings.autoRotateDefault.desc":"Start model previews with auto-rotation enabled.","settings.snapshotNaming":"Snapshot naming","settings.snapshotNaming.desc":"How exported snapshot files are named.","settings.snapshotNaming.modelName":"Model name + timestamp","settings.snapshotNaming.timestamp":"Timestamp only","settings.logLevel":"Log level","settings.logLevel.desc":"Controls plugin runtime log verbosity in the developer console.","settings.language":"Language","settings.language.desc":"Display language for plugin settings. Takes effect immediately.","settings.analysisMode":"AI drafting mode","settings.analysisMode.desc":"Controls whether knowledge-note generation stays local or also requests a sanitized remote draft. Raw model upload is blocked by the current client.","settings.analysisMode.local":"Local evidence only","settings.analysisMode.hybrid":"Local evidence + remote draft","settings.analysisMode.remote":"Remote draft from evidence","settings.serviceBaseUrl":"Draft service URL","settings.serviceBaseUrl.desc":"Optional base URL for a service that accepts POST /draft-note. Leave empty to keep all drafting local.","settings.sendGeometrySummaryToRemote":"Send geometry summary","settings.sendGeometrySummaryToRemote.desc":"Allow sanitized mesh counts, bounds, part candidates, annotation coordinates, and nearest-part links to be included in remote draft input.","settings.sendPreviewImagesToRemote":"Send preview image references","settings.sendPreviewImagesToRemote.desc":"Allow generated preview image paths to be listed in the remote draft input. Image bytes are not uploaded by this client.","settings.sendRawModelToRemote":"Send raw model file","settings.sendRawModelToRemote.desc":"Reserved for future explicit upload support. If enabled manually, remote draft requests are blocked instead of uploading the model.","settings.enableCad":"Enable cad conversion for step, iges, and brep files","settings.enableCad.desc":"Enable cad conversion for step, iges, and brep formats. Requires cadquery and trimesh in your python environment.","settings.enableObj2gltf":"Enable obj2gltf converter (experimental)","settings.enableObj2gltf.desc":"Keep obj direct loading as the default. Enable this only if you want an optional local normalization route through obj2gltf.","settings.preferObj2gltf":"Prefer obj2gltf for obj","settings.preferObj2gltf.desc":"Recommended default is off. Turn this on only when you want normalized output files or direct obj loading is not good enough.","settings.enableFbx2gltf":"Enable FBX2glTF converter","settings.enableFbx2gltf.desc":"Enable conversion for fbx files via FBX2glTF. Requires the FBX2glTF binary installed locally.","settings.enableMesh":"Enable mesh conversion for 3mf and dae files","settings.enableMesh.desc":"Enable conversion for 3mf and dae formats via python trimesh. Requires trimesh, numpy, networkx, and pycollada in your python environment.","settings.enableSldprt":"Enable sldprt conversion for SolidWorks files","settings.enableSldprt.desc":"Enable conversion for SolidWorks sldprt files via FreeCAD. Requires FreeCAD installed locally.","settings.mobileSupport.desc":"On iOS, iPadOS, and Android, direct formats like GLB, GLTF, STL, OBJ, and PLY are supported. Local converter settings and diagnostics remain desktop-only.","settings.pythonCmd":"Path to the python command for cad conversion","settings.pythonCmd.desc":"Optional path to the python command used for cad conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.freecadCmd":"Path to the FreeCAD command for sldprt conversion","settings.freecadCmd.desc":"Optional path to the FreeCAD command used for SolidWorks file conversion. Windows usually uses FreeCADCmd.exe, macOS usually uses FreeCADCmd, and Linux usually uses freecadcmd. Overrides auto-discovery when set.","settings.obj2gltfCmd":"Path to the obj2gltf command","settings.obj2gltfCmd.desc":"Optional path to the obj2gltf command. Windows usually uses obj2gltf.cmd, and macOS and Linux usually use obj2gltf. Overrides auto-discovery when set.","settings.fbx2gltfCmd":"FBX2glTF command path","settings.fbx2gltfCmd.desc":"Optional path to the FBX2glTF command. Windows usually uses FBX2glTF.exe, and macOS and Linux usually use FBX2glTF. Overrides auto-discovery when set.","settings.assimpCmd":"Path to the python command for 3mf and dae conversion","settings.assimpCmd.desc":"Optional path to the python command used for 3mf and dae conversion. Windows usually uses py. macOS and Linux usually use python3. Overrides auto-discovery when set.","settings.diagnostics.desc":"Shows the exact executable path the plugin would use right now and runs lightweight self-checks for Python environments and converter CLIs.","settings.diagnostics.idle":"Diagnostics are off by default. Click Check now to run them manually.","settings.diagnostics.checkNow":"Check now","settings.diagnostics.checking":"Checking...","settings.diagnostics.refreshed":"Converter command diagnostics refreshed.","settings.diagnostics.checkingAvailability":"Checking converter command availability...","settings.diagnostics.available":"available","settings.diagnostics.notFound":"not found","settings.diagnostics.sourceLabel":"Source","settings.diagnostics.commandLabel":"Command","settings.diagnostics.resolvedPathLabel":"Resolved path","settings.diagnostics.selfCheckLabel":"Self-check","settings.diagnostics.selfCheckOk":"passed","settings.diagnostics.selfCheckFailed":"failed","settings.diagnostics.cadPythonCheck":"Python packages (cadquery, trimesh)","settings.diagnostics.meshPythonCheck":"Python packages (trimesh, numpy, networkx, collada)","settings.diagnostics.freecadCmdCheck":"FreeCADCmd launch probe","settings.diagnostics.obj2gltfCheck":"obj2gltf launch probe","settings.diagnostics.fbx2gltfCheck":"FBX2glTF launch probe","settings.canvasHeight":"Default canvas height","settings.canvasHeight.desc":"Default height (px) for inline model previews. Range: 200\u2013800.","settings.autoRotateSpeed":"Auto-rotate speed","settings.autoRotateSpeed.desc":"Rotation speed when auto-rotate is enabled. Range: 0.1\u20132.0.","settings.renderQuality":"Render quality","settings.renderQuality.desc":"Higher quality uses more GPU resources. Affects anti-aliasing and resolution.","settings.renderScale":"Resolution scale","settings.renderScale.desc":"Render resolution multiplier. 1.0 = native, 0.5 = half, 2.0 = double (supersampling). Range: 0.25\u20132.0.","modelLoad.warningTitle":"Model preview unavailable","modelLoad.warningMessage":"{ext} files need the {converterName} converter enabled in plugin settings before they can load.","modelLoad.warningHint":"Enable the matching converter in plugin settings, then reload this file.","modelLoad.mobileWarningMessage":"{ext} files need local conversion tools that are unavailable on iOS, iPadOS, and Android.","modelLoad.mobileWarningHint":"Open this file on desktop, or convert it to GLB, GLTF, OBJ, STL, or PLY first.","modelLoad.errorTitle":"Couldn't display this model","modelLoad.errorMessage":"Failed to load: {reason}","modelLoad.errorHint":"Check the file format or open the developer console for details.","directView.deferredLoadTitle":"Model preview paused","directView.deferredLoadMessage":"This large or conversion-backed model was restored with the workspace, so loading is paused to keep the vault responsive.","directView.deferredLoadButton":"Load model","headingPin.showSingle":"Show linked pin","headingPin.showMultiple":"Show linked pins","headingPin.linkedTo":"Pin linked to: {models}","helper.resetViewLabel":"Reset view","helper.resetViewDone":"Reset","helper.copyModelInfoLabel":"Copy model info as Markdown","helper.copySelectedPartInfoLabel":"Copy selected part info","helper.noSelectedPart":"Select a part first","helper.copied":"Copied!","helper.failed":"Failed","helper.toggleWireframeLabel":"Toggle wireframe","helper.wireframeOn":"Wireframe","helper.wireframeOff":"Solid","helper.toggleAxesLabel":"Toggle orientation axes","helper.axesOn":"Axes on","helper.axesOff":"Axes off","helper.toggleBoundingBoxLabel":"Toggle bounding box","helper.boundingBoxOn":"Bounding box on","helper.boundingBoxOff":"Bounding box off","helper.toggleFocusSelectionLabel":"Focus selected part","helper.focusSelectionOn":"Focus mode on","helper.focusSelectionOff":"Focus mode off","helper.toggleDisassemblyLabel":"Toggle disassembly mode","helper.disassemblyOn":"Disassembly on","helper.disassemblyOff":"Disassembly off","helper.changeResolutionLabel":"Change resolution","helper.resolutionValue":"Resolution: {value}","helper.cameraZoomLabel":"Camera zoom","helper.cameraZoomValue":"Zoom: {value}","helper.toggleAnimationLabel":"Play or pause animation","helper.playing":"Playing","helper.paused":"Paused","helper.toggleMeasurementLabel":"Toggle distance measurement","helper.measurementOn":"Measurement on","helper.measurementOff":"Measurement off","helper.clearMeasurementsLabel":"Clear measurements","helper.measurementsCleared":"Cleared","helper.copyMeasurementsLabel":"Copy measurements","helper.noMeasurements":"No measurements","helper.measurementsCopied":"Measurements copied","helper.measurementStripTitle":"Measure","helper.measurementStripActive":"Active","helper.measurementStripSaved":"{count} saved","helper.measurementStripEmpty":"No distance","helper.measurementStripMeta":"{count} measurements / {unit}","helper.calibrateLabel":"Measurement details","helper.calibrateTitle":"Measurement details","helper.calibrateCurrent":"Current size:","helper.calibrateReal":"Real size:","helper.calibrateLock":"Lock ratio","helper.calibrateApply":"Apply","helper.calibrateReset":"Reset","helper.calibrated":"Scale applied","helper.calibrateResetDone":"Scale reset","helper.calibrateOpen":"Measurement details opened","helper.calibrateClose":"Measurement details closed","helper.removePreviewLabel":"Remove preview","helper.copySnapshotLabel":"Copy snapshot","helper.saveSnapshotLabel":"Save snapshot to vault","helper.saved":"Saved!","helper.downloadSnapshotLabel":"Download snapshot","helper.downloaded":"Downloaded!","helper.toggleAnnotationLabel":"Toggle annotation mode","helper.toggleAnnotationsVisibilityLabel":"Show or hide annotations","helper.annotateOn":"Annotation mode on","helper.annotateOff":"Annotation mode off","helper.annotationsVisible":"Annotations shown","helper.annotationsHidden":"Annotations hidden","helper.enableInteractionLabel":"Enable touch interaction","helper.disableInteractionLabel":"Return to scroll mode","helper.interactionOn":"Model interaction on","helper.interactionOff":"Scroll mode on","helper.showMoreActionsLabel":"Show more actions","helper.hideMoreActionsLabel":"Hide extra actions","helper.moreActionsShown":"More actions shown","helper.moreActionsHidden":"Extra actions hidden","helper.interactAction":"Interact","helper.scrollAction":"Scroll","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"No model","workbench.emptyText":'Use the "import 3D model" command to load a GLB, GLTF, STL, OBJ, or PLY file.',"workbench.modelTitle":"Model","workbench.studioTitle":"AI Model Workbench","workbench.studioTagline":"Inspect, annotate, and turn 3D assets into linked notes.","workbench.navLabel":"Workbench sections","workbench.navGallery":"Gallery","workbench.navLibrary":"Library","workbench.navNotebooks":"Notebooks","workbench.navSettings":"Settings","workbench.sourcesTitle":"Model sources","workbench.layersTitle":"Review layers","workbench.viewModeTitle":"View mode","workbench.modeMesh":"Mesh view","workbench.modeFocus":"Focus selection","workbench.modeMeshShort":"Mesh","workbench.modeFocusShort":"Focus","workbench.previewViewsTitle":"Preview views","workbench.connectionsTitle":"Knowledge connections","workbench.currentModelLabel":"Current model","workbench.noReportYet":"No report note yet","workbench.noIndexYet":"No knowledge index yet. Generate a knowledge note first.","workbench.noModelLoaded":"No model loaded","workbench.disassemblyTitle":"Disassembly","workbench.explodeLabel":"Explode","workbench.summaryTitle":"Summary","workbench.meshesLabel":"Meshes","workbench.splatsLabel":"Splats","workbench.trianglesLabel":"Triangles","workbench.verticesLabel":"Vertices","workbench.materialsLabel":"Materials","workbench.boundingSizeLabel":"Bounds","workbench.centerLabel":"Center","workbench.selectedPartTitle":"Selected Part","workbench.partMeshLabel":"Mesh","workbench.noSelectedPart":"Click a model part to inspect it here.","workbench.tagsTitle":"Tags","workbench.noTagsYet":"No tags yet","workbench.addTagPlaceholder":"Add tag...","workbench.addTagAction":"Add","workbench.annotationsTitle":"Annotations","workbench.exitAnnotate":"Exit annotate","workbench.annotate":"Annotate","workbench.annotateHintActive":"Click the model to add a label \xB7 press Esc to exit","workbench.annotateHintActiveMobile":"Tap the model to add a label. Switch back to Scroll when you want to move through the note again.","workbench.pinCount":"{count} pin(s)","workbench.editAction":"Edit","workbench.deleteAction":"Delete","workbench.resetViewAction":"Reset view","workbench.insertInfoAction":"Insert info","workbench.insertGalleryAction":"Insert Gallery","workbench.insertCompareAction":"Insert Compare","workbench.playAction":"Play","workbench.pauseAction":"Pause","workbench.saveProfileAction":"Save profile","workbench.generateNoteAction":"Generate note","workbench.openNoteAction":"Open note","workbench.openIndexAction":"Open index","workbench.recordTitle":"Specimen card","workbench.recordSubtitle":"Current asset profile","workbench.notesTitle":"Analysis notes","workbench.whereTitle":"Where it connects","workbench.noteReady":"Linked note ready","workbench.indexReady":"Knowledge index ready","workbench.notePending":"Linked note pending","workbench.analysisLabel":"Analysis","workbench.settingsUnavailable":"Open this plugin from Obsidian settings to change workbench options.","workbench.profileSaved":"Profile saved","workbench.viewReset":"View reset","workbench.infoInserted":"Model info inserted","workbench.infoCopied":"Model info copied","workbench.templateInserted":"Template inserted","workbench.templateCopied":"Template copied","workbench.mobileHint":"Mobile tip: tap Interact to move the model, then switch back to Scroll to keep reading the note.","workbench.mobileHintInteractive":"Interaction mode is on. Switch back to Scroll when you want to move through the note again.","directView.mobileHint":"Mobile tip: use the toolbar Interact button to switch between model interaction and note scrolling.","directWorkbench.modelLoadInterrupted":"Model load was interrupted by a newer request.","directWorkbench.backendLabel":"Backend","directWorkbench.routeLabel":"Route","directWorkbench.performanceLabel":"Performance","directWorkbench.partCandidatesLabel":"Part candidates","directWorkbench.knowledgeTitle":"Knowledge","directWorkbench.registeredTitle":"Registered part matches","directWorkbench.registeredLoading":"Checking...","directWorkbench.registeredCount":"{count} match(es)","directWorkbench.registeredEmpty":"No cross-model part match yet","directWorkbench.registeredUnavailable":"Part evidence unavailable","directWorkbench.registeredOpen":"Open","directWorkbench.registeredOpenNote":"Note","directWorkbench.registeredOpenModel":"Model","directWorkbench.registeredSourceModel":"From {model}","directWorkbench.registeredTargetPartNote":"Opens matched part note","directWorkbench.registeredTargetSourceModel":"Opens source model","directWorkbench.registeredTargetUnavailable":"No linked target","workbench.fileNotFound":"File not found: {path}","annotation.selectColor":"Select color {color}","annotation.sectionEmpty":"Section is empty.","modal.selectModel":"Select a 3D model...","main.commandImportModel":"Import a 3D model","main.commandGenerateNote":"Generate knowledge note","main.commandOpenKnowledgeIndex":"Open knowledge index","main.commandClearConversionCache":"Clear conversion cache","main.commandCheckConverters":"Check converters","main.commandCopyDiagnostics":"Copy diagnostics report","main.converterDiagnosticsMobileUnavailable":"Converter diagnostics are only available on desktop. On iOS, iPadOS, and Android, direct formats can still load.","main.diagnosticsCopied":"AI Model Workbench diagnostics copied to clipboard.","main.diagnosticsCopyFailed":"Couldn't copy diagnostics. A sanitized diagnostics note was created instead.","codeBlock.noModelPathOrConfig":"No model path or config specified.","codeBlock.jsonParseError":"JSON parse error: {error}","codeBlock.jsonParseLine":" (line {line})","codeBlock.noModelsInConfig":"No models specified in config.","codeBlock.unsupportedFormat":"Unsupported format: {ext}. Supported: {formats}","codeBlock.splatDisabled":"SPLAT preview is disabled in packaged builds. Local-only .splat support is planned first; .spz/.sog need locally bundled decoders before reevaluation.","codeBlock.noConfigSpecified":"No config specified.","codeBlock.noModelsSpecified":"No models specified.","codeBlock.mobileHint":"Mobile tip: use Interact to manipulate the model, then switch back to Scroll to keep moving through the note.","codeBlock.renderingGrid":"Rendering grid...","codeBlock.composeRequiresSections":'"compose" preset requires a "sections" array.',"codeBlock.composeNoValidSections":"Compose: no valid sections.","codeBlock.unknownPreset":'Unknown preset: "{preset}". Available: compare, showcase, explode, timeline, compose',"codeBlock.presetRequiresModels":'Preset "{preset}" requires {min}-{max} models, got {count}.',"codeBlock.gridFailed":"Grid failed: {reason}","livePreview.mobileHint":"Mobile tip: switch between Interact and Scroll depending on whether you want to move the model or keep reading.","loading.default":"Loading...","loading.preparingModel":"Preparing model...","loading.loadingModel":"Loading model..."}});var G1,k1=I(()=>{"use strict";G1={"settings.title":"AI 3D \u6A21\u578B\u5DE5\u4F5C\u53F0","settings.folders":"\u6587\u4EF6\u5939","settings.behavior":"\u884C\u4E3A","settings.converters":"\u8F6C\u6362\u5668","settings.converterMenu":"\u6A21\u578B\u8F6C\u6362\u5668","settings.converterMenu.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u4F60\u9700\u8981\u624B\u52A8\u542F\u7528\u67D0\u6761\u672C\u5730\u8F6C\u6362\u8DEF\u7EBF\u65F6\u518D\u5C55\u5F00\u3002","settings.environmentInspector":"\u73AF\u5883\u68C0\u67E5\u5668","settings.environmentInspector.desc":"\u9ED8\u8BA4\u6536\u8D77\u3002\u4EC5\u5728\u9700\u8981\u914D\u7F6E\u547D\u4EE4\u8DEF\u5F84\u6216\u624B\u52A8\u6267\u884C\u73AF\u5883\u68C0\u67E5\u65F6\u518D\u5C55\u5F00\u3002","settings.paths":"\u8F6C\u6362\u5668\u8DEF\u5F84","settings.diagnostics":"\u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD","settings.performance":"\u6027\u80FD\u4E0E\u663E\u793A","settings.mobileSupport":"\u79FB\u52A8\u7AEF\u652F\u6301","settings.knowledgeGeneration":"\u77E5\u8BC6\u751F\u6210","settings.sourceModelFolder":"\u6E90\u6A21\u578B\u6587\u4EF6\u5939","settings.sourceModelFolder.desc":"\u5B58\u653E\u6E90 3D \u6A21\u578B\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.auxiliaryFileFolder":"\u8F85\u52A9\u6587\u4EF6\u5939","settings.auxiliaryFileFolder.desc":"\u7528\u4E8E\u5B58\u653E\u8F6C\u6362\u540E\u7684 GLB \u7B49\u63D2\u4EF6\u751F\u6210\u7684\u526F\u6587\u4EF6\u3002\u7559\u7A7A\u65F6\u7EE7\u7EED\u653E\u5728 Obsidian \u914D\u7F6E\u76EE\u5F55\u4E0B\u3002","settings.auxiliaryFileFolder.placeholder":"\u7559\u7A7A\u4F7F\u7528\u9690\u85CF\u914D\u7F6E\u76EE\u5F55","settings.reportFolder":"\u62A5\u544A\u6587\u4EF6\u5939","settings.reportFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u77E5\u8BC6\u7B14\u8BB0\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.partFolder":"\u90E8\u4EF6\u7B14\u8BB0\u6587\u4EF6\u5939","settings.partFolder.desc":"\u4FDD\u5B58\u751F\u6210\u7684\u90E8\u4EF6\u7B14\u8BB0\u8349\u7A3F\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.snapshotFolder":"\u5FEB\u7167\u6587\u4EF6\u5939","settings.snapshotFolder.desc":"\u4FDD\u5B58\u5BFC\u51FA\u5FEB\u7167\u7684\u5E93\u6587\u4EF6\u5939\u3002","settings.autoGenerateKnowledgeNotes":"\u81EA\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","settings.autoGenerateKnowledgeNotes.desc":"\u9884\u7559\u7ED9\u540E\u7EED\u81EA\u52A8\u5316\u6D41\u7A0B\u3002\u5F53\u524D\u8BF7\u901A\u8FC7\u547D\u4EE4\u6216\u5DE5\u4F5C\u53F0\u6309\u94AE\u624B\u52A8\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","settings.annotationPreviewMode":"\u6807\u6CE8\u9884\u89C8\u6A21\u5F0F","settings.annotationPreviewMode.desc":"\u9009\u62E9\u6807\u6CE8\u7ED1\u5B9A\u7B14\u8BB0\u5728\u60AC\u6D6E\u9884\u89C8\u548C\u7F16\u8F91\u5668\u4E2D\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationPreviewMode.plainText":"\u7EAF\u6587\u672C","settings.annotationPreviewMode.markdown":"Markdown","settings.annotationDisplayMode":"\u6807\u6CE8\u663E\u793A\u6A21\u5F0F","settings.annotationDisplayMode.desc":"\u9009\u62E9\u6A21\u578B\u4E0A\u4E66\u7B7E\u6807\u6CE8\u7684\u663E\u793A\u65B9\u5F0F\u3002","settings.annotationDisplayMode.snippet":"\u5B8C\u6574\u7247\u6BB5","settings.annotationDisplayMode.surface":"\u5355\u4E2A\u6807\u7B7E\u9762","settings.annotationDisplayMode.dot":"\u5355\u4E2A\u5706\u70B9","settings.previewRendererRollout":"\u9884\u89C8\u517C\u5BB9\u6A21\u5F0F","settings.previewRendererRollout.desc":"\u63A7\u5236\u5355\u6A21\u578B\u9884\u89C8\uFF08GLB\u3001GLTF\u3001STL\u3001PLY\u3001OBJ\uFF09\u4E2D Three.js \u6E32\u67D3\u8DEF\u5F84\u7684\u542F\u7528\u8303\u56F4\u3002\u53EA\u8981\u51FA\u73B0 pin \u6295\u5F71\u3001\u906E\u6321\u3001\u7F16\u8F91\u6001 pin\u3001\u5FEB\u7167\u6216\u5DE5\u5177\u680F\u884C\u4E3A\u56DE\u9000\uFF0C\u5C31\u5207\u56DE\u201C\u517C\u5BB9\u4F18\u5148\u201D\u3002workbench \u548C 3dgrid \u4E0D\u53D7\u8FD9\u4E2A\u8BBE\u7F6E\u5F71\u54CD\u3002","settings.previewRendererRollout.babylonSafe":"\u517C\u5BB9\u4F18\u5148\uFF08\u9ED8\u8BA4\uFF09","settings.previewRendererRollout.readonly":"\u4EC5\u9605\u8BFB\u573A\u666F","settings.previewRendererRollout.direct":"\u9605\u8BFB + \u6587\u4EF6\u89C6\u56FE","settings.useThreeRenderer":"\u4F7F\u7528 Three.js \u6E32\u67D3\u5668","settings.useThreeRenderer.desc":"\u5728 Three.js\uFF08\u66F4\u5FEB\u3001\u66F4\u8F7B\u91CF\uFF09\u548C Babylon.js\uFF08\u5B8C\u5168\u517C\u5BB9\uFF09\u4E4B\u95F4\u5207\u6362\u5355\u6A21\u578B\u9884\u89C8\u6E32\u67D3\u5668\u3002Three.js \u652F\u6301 GLB/GLTF/STL/PLY/OBJ\u3002\u5DE5\u4F5C\u53F0\u548C 3dgrid \u59CB\u7EC8\u4F7F\u7528 Babylon.js\u3002","settings.useThreeForConvertedDirectView":"\u8F6C\u6362 GLB \u7684 Three \u5FEB\u901F\u8DEF\u5F84","settings.useThreeForConvertedDirectView.desc":"\u6253\u5F00 STEP\u3001FBX\u30013MF\u3001DAE \u7B49\u9700\u8981\u8F6C\u6362\u7684\u6587\u4EF6\u65F6\uFF0C\u5148\u7528 Three.js \u52A0\u8F7D\u751F\u6210\u7684 GLB\uFF0C\u5931\u8D25\u540E\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002\u5173\u95ED\u540E\u8F6C\u6362\u6587\u4EF6\u4F1A\u9075\u5FAA\u666E\u901A\u517C\u5BB9\u6A21\u5F0F\u3002","settings.experimentalThreeWorkbench":"\u5B9E\u9A8C\u6027 Three \u5DE5\u4F5C\u53F0","settings.experimentalThreeWorkbench.desc":"\u4EC5\u5BF9\u76F4\u8BFB GLB/GLTF \u6587\u4EF6\u5C1D\u8BD5\u4F7F\u7528 Three.js \u5DE5\u4F5C\u53F0\u8DEF\u5F84\u3002\u52A0\u8F7D\u5931\u8D25\u65F6\uFF0C\u6587\u4EF6\u89C6\u56FE\u4F1A\u81EA\u52A8\u56DE\u9000\u5230 Babylon.js\u3002","settings.autoRotateDefault":"\u9ED8\u8BA4\u81EA\u52A8\u65CB\u8F6C","settings.autoRotateDefault.desc":"\u542F\u52A8 3D \u9884\u89C8\u65F6\u9ED8\u8BA4\u5F00\u542F\u81EA\u52A8\u65CB\u8F6C\u3002","settings.snapshotNaming":"\u5FEB\u7167\u547D\u540D","settings.snapshotNaming.desc":"\u5BFC\u51FA\u5FEB\u7167\u6587\u4EF6\u7684\u547D\u540D\u65B9\u5F0F\u3002","settings.snapshotNaming.modelName":"\u6A21\u578B\u540D + \u65F6\u95F4\u6233","settings.snapshotNaming.timestamp":"\u4EC5\u65F6\u95F4\u6233","settings.logLevel":"\u65E5\u5FD7\u7EA7\u522B","settings.logLevel.desc":"\u63A7\u5236\u63D2\u4EF6\u5728\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u4E2D\u7684\u65E5\u5FD7\u8BE6\u7EC6\u7A0B\u5EA6\u3002","settings.language":"\u8BED\u8A00","settings.language.desc":"\u63D2\u4EF6\u8BBE\u7F6E\u754C\u9762\u7684\u663E\u793A\u8BED\u8A00\u3002\u7ACB\u5373\u751F\u6548\u3002","settings.analysisMode":"AI \u8349\u7A3F\u6A21\u5F0F","settings.analysisMode.desc":"\u63A7\u5236\u77E5\u8BC6\u7B14\u8BB0\u751F\u6210\u4FDD\u6301\u672C\u5730\uFF0C\u8FD8\u662F\u989D\u5916\u8BF7\u6C42\u7ECF\u8FC7\u88C1\u526A\u7684\u8FDC\u7A0B\u8349\u7A3F\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4F1A\u963B\u6B62\u539F\u59CB\u6A21\u578B\u4E0A\u4F20\u3002","settings.analysisMode.local":"\u4EC5\u672C\u5730\u8BC1\u636E","settings.analysisMode.hybrid":"\u672C\u5730\u8BC1\u636E + \u8FDC\u7A0B\u8349\u7A3F","settings.analysisMode.remote":"\u57FA\u4E8E\u8BC1\u636E\u7684\u8FDC\u7A0B\u8349\u7A3F","settings.serviceBaseUrl":"\u8349\u7A3F\u670D\u52A1 URL","settings.serviceBaseUrl.desc":"\u53EF\u9009\u7684\u8349\u7A3F\u670D\u52A1\u57FA\u7840\u5730\u5740\uFF0C\u670D\u52A1\u9700\u63A5\u6536 POST /draft-note\u3002\u7559\u7A7A\u65F6\u6240\u6709\u8349\u7A3F\u8F93\u5165\u90FD\u4FDD\u7559\u5728\u672C\u5730\u3002","settings.sendGeometrySummaryToRemote":"\u53D1\u9001\u51E0\u4F55\u6458\u8981","settings.sendGeometrySummaryToRemote.desc":"\u5141\u8BB8\u628A\u7ECF\u8FC7\u88C1\u526A\u7684\u7F51\u683C\u6570\u91CF\u3001\u5305\u56F4\u76D2\u3001\u90E8\u4EF6\u5019\u9009\u3001\u6807\u6CE8\u5750\u6807\u548C\u6700\u8FD1\u90E8\u4EF6\u5173\u8054\u52A0\u5165\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u3002","settings.sendPreviewImagesToRemote":"\u53D1\u9001\u9884\u89C8\u56FE\u5F15\u7528","settings.sendPreviewImagesToRemote.desc":"\u5141\u8BB8\u5728\u8FDC\u7A0B\u8349\u7A3F\u8F93\u5165\u4E2D\u5217\u51FA\u751F\u6210\u7684\u9884\u89C8\u56FE\u8DEF\u5F84\u3002\u5F53\u524D\u5BA2\u6237\u7AEF\u4E0D\u4F1A\u4E0A\u4F20\u56FE\u7247\u5B57\u8282\u3002","settings.sendRawModelToRemote":"\u53D1\u9001\u539F\u59CB\u6A21\u578B\u6587\u4EF6","settings.sendRawModelToRemote.desc":"\u9884\u7559\u7ED9\u672A\u6765\u663E\u5F0F\u4E0A\u4F20\u652F\u6301\u3002\u82E5\u624B\u52A8\u5F00\u542F\uFF0C\u8FDC\u7A0B\u8349\u7A3F\u8BF7\u6C42\u4F1A\u88AB\u963B\u6B62\uFF0C\u4E0D\u4F1A\u4E0A\u4F20\u6A21\u578B\u3002","settings.enableCad":"\u542F\u7528 CAD \u8F6C\u6362\u5668 (STEP/IGES/BREP)","settings.enableCad.desc":"\u542F\u7528 STEP/IGES/BREP \u683C\u5F0F\u7684 CAD \u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python CadQuery (OpenCASCADE)\u3002\u9700\u8981\uFF1Apip install cadquery trimesh","settings.enableObj2gltf":"\u542F\u7528 obj2gltf \u8F6C\u6362\u5668\uFF08\u5B9E\u9A8C\u6027\uFF09","settings.enableObj2gltf.desc":"\u9ED8\u8BA4\u4F7F\u7528 OBJ \u76F4\u63A5\u52A0\u8F7D\u3002\u4EC5\u5728\u9700\u8981\u672C\u5730\u6807\u51C6\u5316 GLB \u8F93\u51FA\u65F6\u542F\u7528\u3002","settings.preferObj2gltf":"OBJ \u4F18\u5148\u4F7F\u7528 obj2gltf","settings.preferObj2gltf.desc":"\u9ED8\u8BA4\u5173\u95ED\u3002\u4EC5\u5728\u9700\u8981\u6807\u51C6\u5316 GLB \u8F93\u51FA\u6216\u76F4\u63A5 OBJ \u52A0\u8F7D\u6548\u679C\u4E0D\u4F73\u65F6\u5F00\u542F\u3002","settings.enableFbx2gltf":"\u542F\u7528 FBX2glTF \u8F6C\u6362\u5668","settings.enableFbx2gltf.desc":"\u542F\u7528 FBX \u6587\u4EF6\u901A\u8FC7 FBX2glTF \u8F6C\u6362\u3002\u9700\u8981\u672C\u5730\u5B89\u88C5 FBX2glTF \u4E8C\u8FDB\u5236\u6587\u4EF6\u3002","settings.enableMesh":"\u542F\u7528\u7F51\u683C\u8F6C\u6362\u5668 (3MF/DAE)","settings.enableMesh.desc":"\u542F\u7528 3MF \u548C DAE (Collada) \u683C\u5F0F\u7684\u8F6C\u6362\u8DEF\u7EBF\uFF0C\u901A\u8FC7 Python trimesh\u3002\u9700\u8981\u5B89\u88C5 Python \u548C trimesh (pip install trimesh numpy networkx pycollada)\u3002","settings.enableSldprt":"\u542F\u7528 SLDPRT \u8F6C\u6362\u5668 (SolidWorks)","settings.enableSldprt.desc":"\u542F\u7528 SolidWorks .sldprt \u6587\u4EF6\u901A\u8FC7 FreeCAD \u8F6C\u6362\u3002\u9700\u8981\u5B89\u88C5 FreeCAD (https://www.freecad.org/downloads.php)\u3002","settings.mobileSupport.desc":"\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0CGLB\u3001GLTF\u3001STL\u3001OBJ\u3001PLY \u8FD9\u7C7B\u76F4\u8BFB\u683C\u5F0F\u53EF\u7528\u3002\u672C\u5730\u8F6C\u6362\u5668\u8BBE\u7F6E\u548C\u547D\u4EE4\u8BCA\u65AD\u4ECD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002","settings.pythonCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF08CAD \u7528\uFF09","settings.pythonCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E CAD \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECAD_CMD\u3002","settings.freecadCmd":"FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF08SLDPRT \u7528\uFF09","settings.freecadCmd.desc":"\u53EF\u9009\u7684 FreeCAD \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E SolidWorks \u6587\u4EF6\u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 FreeCADCmd.exe\uFF0CmacOS \u901A\u5E38\u7528 FreeCADCmd\uFF0CLinux \u901A\u5E38\u7528 freecadcmd\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FREECADCMD\u3002","settings.obj2gltfCmd":"obj2gltf \u547D\u4EE4\u8DEF\u5F84","settings.obj2gltfCmd.desc":"\u53EF\u9009\u7684 obj2gltf \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 obj2gltf.cmd\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 obj2gltf\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_OBJ2GLTF_CMD\u3002","settings.fbx2gltfCmd":"FBX2glTF \u547D\u4EE4\u8DEF\u5F84","settings.fbx2gltfCmd.desc":"\u53EF\u9009\u7684 FBX2glTF \u547D\u4EE4\u8DEF\u5F84\u3002Windows \u901A\u5E38\u7528 FBX2glTF.exe\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 FBX2glTF\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_FBX2GLTF_CMD\u3002","settings.assimpCmd":"Python \u547D\u4EE4\u8DEF\u5F84\uFF083MF/DAE \u7528\uFF09","settings.assimpCmd.desc":"\u53EF\u9009\u7684 Python \u547D\u4EE4\u8DEF\u5F84\uFF0C\u7528\u4E8E 3MF \u548C DAE \u8F6C\u6362\u3002Windows \u901A\u5E38\u7528 py\uFF0CmacOS \u548C Linux \u901A\u5E38\u7528 python3\u3002\u8BBE\u7F6E\u540E\u8986\u76D6\u81EA\u52A8\u53D1\u73B0\u548C AI3D_ASSIMP_CMD\u3002","settings.diagnostics.desc":"\u663E\u793A\u63D2\u4EF6\u5F53\u524D\u5B9E\u9645\u4F7F\u7528\u7684\u53EF\u6267\u884C\u6587\u4EF6\u8DEF\u5F84\uFF0C\u5E76\u4E3A Python \u73AF\u5883\u548C\u8F6C\u6362\u5668\u547D\u4EE4\u6267\u884C\u8F7B\u91CF\u81EA\u68C0\u3002","settings.diagnostics.idle":"\u73AF\u5883\u68C0\u67E5\u9ED8\u8BA4\u5173\u95ED\u3002\u70B9\u51FB\u201C\u7ACB\u5373\u68C0\u67E5\u201D\u540E\u624D\u4F1A\u6267\u884C\u3002","settings.diagnostics.checkNow":"\u7ACB\u5373\u68C0\u67E5","settings.diagnostics.checking":"\u68C0\u67E5\u4E2D...","settings.diagnostics.refreshed":"AI 3D \u8F6C\u6362\u5668\u547D\u4EE4\u8BCA\u65AD\u5DF2\u5237\u65B0\u3002","settings.diagnostics.checkingAvailability":"\u6B63\u5728\u68C0\u67E5\u8F6C\u6362\u5668\u547D\u4EE4\u53EF\u7528\u6027...","settings.diagnostics.available":"\u53EF\u7528","settings.diagnostics.notFound":"\u672A\u627E\u5230","settings.diagnostics.sourceLabel":"\u6765\u6E90","settings.diagnostics.commandLabel":"\u547D\u4EE4","settings.diagnostics.resolvedPathLabel":"\u89E3\u6790\u8DEF\u5F84","settings.diagnostics.selfCheckLabel":"\u81EA\u68C0","settings.diagnostics.selfCheckOk":"\u901A\u8FC7","settings.diagnostics.selfCheckFailed":"\u5931\u8D25","settings.diagnostics.cadPythonCheck":"Python \u5305\uFF08cadquery\u3001trimesh\uFF09","settings.diagnostics.meshPythonCheck":"Python \u5305\uFF08trimesh\u3001numpy\u3001networkx\u3001collada\uFF09","settings.diagnostics.freecadCmdCheck":"FreeCADCmd \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.obj2gltfCheck":"obj2gltf \u542F\u52A8\u63A2\u6D4B","settings.diagnostics.fbx2gltfCheck":"FBX2glTF \u542F\u52A8\u63A2\u6D4B","settings.canvasHeight":"\u9ED8\u8BA4\u753B\u5E03\u9AD8\u5EA6","settings.canvasHeight.desc":"\u5185\u8054 3D \u9884\u89C8\u7684\u9ED8\u8BA4\u9AD8\u5EA6\uFF08\u50CF\u7D20\uFF09\u3002\u8303\u56F4\uFF1A200\u2013800\u3002","settings.autoRotateSpeed":"\u81EA\u52A8\u65CB\u8F6C\u901F\u5EA6","settings.autoRotateSpeed.desc":"\u542F\u7528\u81EA\u52A8\u65CB\u8F6C\u65F6\u7684\u65CB\u8F6C\u901F\u5EA6\u3002\u8303\u56F4\uFF1A0.1\u20132.0\u3002","settings.renderQuality":"\u6E32\u67D3\u8D28\u91CF","settings.renderQuality.desc":"\u66F4\u9AD8\u8D28\u91CF\u4F7F\u7528\u66F4\u591A GPU \u8D44\u6E90\u3002\u5F71\u54CD\u6297\u952F\u9F7F\u548C\u5206\u8FA8\u7387\u3002","settings.renderScale":"\u6E32\u67D3\u7F29\u653E","settings.renderScale.desc":"\u6E32\u67D3\u5206\u8FA8\u7387\u500D\u6570\u30021.0 = \u539F\u59CB\uFF0C0.5 = \u4E00\u534A\uFF0C2.0 = \u53CC\u500D\uFF08\u8D85\u91C7\u6837\uFF09\u3002\u8303\u56F4\uFF1A0.25\u20132.0\u3002","modelLoad.warningTitle":"\u6682\u65F6\u65E0\u6CD5\u9884\u89C8\u6A21\u578B","modelLoad.warningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528 {converterName} \u8F6C\u6362\u5668\uFF0C\u624D\u80FD\u52A0\u8F7D\u3002","modelLoad.warningHint":"\u8BF7\u5148\u5728\u63D2\u4EF6\u8BBE\u7F6E\u4E2D\u542F\u7528\u5BF9\u5E94\u8F6C\u6362\u5668\uFF0C\u7136\u540E\u91CD\u65B0\u52A0\u8F7D\u5F53\u524D\u6587\u4EF6\u3002","modelLoad.mobileWarningMessage":"{ext} \u6587\u4EF6\u9700\u8981\u672C\u5730\u8F6C\u6362\u5DE5\u5177\uFF0C\u4F46\u8FD9\u4E9B\u5DE5\u5177\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\u4E0D\u53EF\u7528\u3002","modelLoad.mobileWarningHint":"\u8BF7\u5728\u684C\u9762\u7AEF\u6253\u5F00\u6B64\u6587\u4EF6\uFF0C\u6216\u5148\u5C06\u5B83\u8F6C\u6362\u4E3A GLB\u3001GLTF\u3001OBJ\u3001STL \u6216 PLY\u3002","modelLoad.errorTitle":"\u65E0\u6CD5\u663E\u793A\u8FD9\u4E2A\u6A21\u578B","modelLoad.errorMessage":"\u52A0\u8F7D\u5931\u8D25\uFF1A{reason}","modelLoad.errorHint":"\u8BF7\u68C0\u67E5\u6587\u4EF6\u683C\u5F0F\uFF0C\u6216\u6253\u5F00\u5F00\u53D1\u8005\u63A7\u5236\u53F0\u67E5\u770B\u8BE6\u7EC6\u4FE1\u606F\u3002","directView.deferredLoadTitle":"\u6A21\u578B\u9884\u89C8\u5DF2\u6682\u505C","directView.deferredLoadMessage":"\u8FD9\u4E2A\u5927\u578B\u6216\u9700\u8981\u8F6C\u6362\u7684\u6A21\u578B\u662F\u968F\u5DE5\u4F5C\u533A\u6062\u590D\u6253\u5F00\u7684\uFF0C\u4E3A\u4E86\u4FDD\u6301\u4ED3\u5E93\u54CD\u5E94\uFF0C\u5DF2\u6682\u505C\u81EA\u52A8\u52A0\u8F7D\u3002","directView.deferredLoadButton":"\u52A0\u8F7D\u6A21\u578B","headingPin.showSingle":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.showMultiple":"\u663E\u793A\u5173\u8054\u6807\u6CE8","headingPin.linkedTo":"\u5173\u8054\u5230\uFF1A{models}","helper.resetViewLabel":"\u91CD\u7F6E\u89C6\u56FE","helper.resetViewDone":"\u5DF2\u91CD\u7F6E","helper.copyModelInfoLabel":"\u590D\u5236\u6A21\u578B\u4FE1\u606F\u4E3A Markdown","helper.copySelectedPartInfoLabel":"\u590D\u5236\u9009\u4E2D\u90E8\u4EF6\u4FE1\u606F","helper.noSelectedPart":"\u8BF7\u5148\u70B9\u51FB\u4E00\u4E2A\u90E8\u4EF6","helper.copied":"\u5DF2\u590D\u5236","helper.failed":"\u5931\u8D25","helper.toggleWireframeLabel":"\u5207\u6362\u7EBF\u6846\u663E\u793A","helper.wireframeOn":"\u7EBF\u6846","helper.wireframeOff":"\u5B9E\u4F53","helper.toggleAxesLabel":"\u5207\u6362\u65B9\u5411\u5750\u6807\u8F74","helper.axesOn":"\u5750\u6807\u8F74\u5DF2\u5F00\u542F","helper.axesOff":"\u5750\u6807\u8F74\u5DF2\u5173\u95ED","helper.toggleBoundingBoxLabel":"\u5207\u6362\u5305\u56F4\u76D2","helper.boundingBoxOn":"\u5305\u56F4\u76D2\u5DF2\u5F00\u542F","helper.boundingBoxOff":"\u5305\u56F4\u76D2\u5DF2\u5173\u95ED","helper.toggleFocusSelectionLabel":"\u805A\u7126\u9009\u4E2D\u90E8\u4EF6","helper.focusSelectionOn":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.focusSelectionOff":"\u805A\u7126\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.toggleDisassemblyLabel":"\u5207\u6362\u5206\u89E3\u6A21\u5F0F","helper.disassemblyOn":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.disassemblyOff":"\u5206\u89E3\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.changeResolutionLabel":"\u5207\u6362\u5206\u8FA8\u7387","helper.resolutionValue":"\u5206\u8FA8\u7387\uFF1A{value}","helper.cameraZoomLabel":"\u76F8\u673A\u7F29\u653E","helper.cameraZoomValue":"\u7F29\u653E\uFF1A{value}","helper.toggleAnimationLabel":"\u64AD\u653E\u6216\u6682\u505C\u52A8\u753B","helper.playing":"\u64AD\u653E\u4E2D","helper.paused":"\u5DF2\u6682\u505C","helper.toggleMeasurementLabel":"\u5207\u6362\u8DDD\u79BB\u6D4B\u91CF","helper.measurementOn":"\u6D4B\u91CF\u5DF2\u5F00\u542F","helper.measurementOff":"\u6D4B\u91CF\u5DF2\u5173\u95ED","helper.clearMeasurementsLabel":"\u6E05\u9664\u6D4B\u91CF","helper.measurementsCleared":"\u5DF2\u6E05\u9664","helper.copyMeasurementsLabel":"\u590D\u5236\u6D4B\u91CF","helper.noMeasurements":"\u6682\u65E0\u6D4B\u91CF","helper.measurementsCopied":"\u6D4B\u91CF\u5DF2\u590D\u5236","helper.measurementStripTitle":"\u6D4B\u91CF","helper.measurementStripActive":"\u8FDB\u884C\u4E2D","helper.measurementStripSaved":"{count} \u6761","helper.measurementStripEmpty":"\u672A\u8BB0\u5F55","helper.measurementStripMeta":"{count} \u6761 / {unit}","helper.calibrateLabel":"\u6D4B\u91CF\u8BE6\u60C5","helper.calibrateTitle":"\u6D4B\u91CF\u8BE6\u60C5","helper.calibrateCurrent":"\u5F53\u524D\u5C3A\u5BF8\uFF1A","helper.calibrateReal":"\u771F\u5B9E\u5C3A\u5BF8\uFF1A","helper.calibrateLock":"\u9501\u5B9A\u6BD4\u4F8B","helper.calibrateApply":"\u5E94\u7528","helper.calibrateReset":"\u91CD\u7F6E","helper.calibrated":"\u6BD4\u4F8B\u5DF2\u5E94\u7528","helper.calibrateResetDone":"\u6BD4\u4F8B\u5DF2\u91CD\u7F6E","helper.calibrateOpen":"\u6D4B\u91CF\u8BE6\u60C5\u5DF2\u5C55\u5F00","helper.calibrateClose":"\u6D4B\u91CF\u8BE6\u60C5\u5DF2\u6536\u8D77","helper.removePreviewLabel":"\u79FB\u9664\u9884\u89C8","helper.copySnapshotLabel":"\u590D\u5236\u5FEB\u7167","helper.saveSnapshotLabel":"\u4FDD\u5B58\u5FEB\u7167\u5230\u4ED3\u5E93","helper.saved":"\u5DF2\u4FDD\u5B58","helper.downloadSnapshotLabel":"\u4E0B\u8F7D\u5FEB\u7167","helper.downloaded":"\u5DF2\u4E0B\u8F7D","helper.toggleAnnotationLabel":"\u5207\u6362\u6807\u6CE8\u6A21\u5F0F","helper.toggleAnnotationsVisibilityLabel":"\u663E\u793A\u6216\u9690\u85CF\u6807\u6CE8","helper.annotateOn":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.annotateOff":"\u6807\u6CE8\u6A21\u5F0F\u5DF2\u5173\u95ED","helper.annotationsVisible":"\u6807\u6CE8\u5DF2\u663E\u793A","helper.annotationsHidden":"\u6807\u6CE8\u5DF2\u9690\u85CF","helper.enableInteractionLabel":"\u542F\u7528\u89E6\u63A7\u4EA4\u4E92","helper.disableInteractionLabel":"\u5207\u56DE\u6EDA\u52A8\u6A21\u5F0F","helper.interactionOn":"\u6A21\u578B\u4EA4\u4E92\u5DF2\u5F00\u542F","helper.interactionOff":"\u6EDA\u52A8\u6A21\u5F0F\u5DF2\u5F00\u542F","helper.showMoreActionsLabel":"\u663E\u793A\u66F4\u591A\u64CD\u4F5C","helper.hideMoreActionsLabel":"\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.moreActionsShown":"\u5DF2\u5C55\u5F00\u66F4\u591A\u64CD\u4F5C","helper.moreActionsHidden":"\u5DF2\u6536\u8D77\u989D\u5916\u64CD\u4F5C","helper.interactAction":"\u4EA4\u4E92","helper.scrollAction":"\u6EDA\u52A8","previewCanvas.inlineLabel":"3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.gridLabel":"3D model grid preview. Shortcuts: {shortcuts}","previewCanvas.liveLabel":"Embedded 3D model preview: {model}. Shortcuts: {shortcuts}","previewCanvas.directLabel":"3D file preview: {model}. Shortcuts: {shortcuts}","previewCanvas.modelShortcuts":"R reset view, W wireframe, G axes, B bounding box, M measurement, Space animation","previewCanvas.gridShortcuts":"R reset view, W wireframe","workbench.emptyTitle":"\u6682\u65E0\u6A21\u578B","workbench.emptyText":"\u4F7F\u7528\u201C\u5BFC\u5165 3D \u6A21\u578B\u201D\u547D\u4EE4\u52A0\u8F7D GLB\u3001GLTF\u3001STL\u3001OBJ \u6216 PLY \u6587\u4EF6\u3002","workbench.modelTitle":"3D \u6A21\u578B","workbench.studioTitle":"AI \u6A21\u578B\u5DE5\u4F5C\u53F0","workbench.studioTagline":"\u68C0\u67E5\u3001\u6807\u6CE8\uFF0C\u5E76\u628A 3D \u8D44\u4EA7\u6574\u7406\u6210\u53CC\u94FE\u7B14\u8BB0\u3002","workbench.navLabel":"\u5DE5\u4F5C\u53F0\u5206\u533A","workbench.navGallery":"\u753B\u5ECA","workbench.navLibrary":"\u8D44\u6599\u5E93","workbench.navNotebooks":"\u7B14\u8BB0\u672C","workbench.navSettings":"\u8BBE\u7F6E","workbench.sourcesTitle":"\u6A21\u578B\u6765\u6E90","workbench.layersTitle":"\u5BA1\u9605\u5C42","workbench.viewModeTitle":"\u89C6\u56FE\u6A21\u5F0F","workbench.modeMesh":"\u7F51\u683C\u89C6\u56FE","workbench.modeFocus":"\u805A\u7126\u9009\u533A","workbench.modeMeshShort":"\u7F51\u683C","workbench.modeFocusShort":"\u805A\u7126","workbench.previewViewsTitle":"\u9884\u89C8\u89C6\u56FE","workbench.connectionsTitle":"\u77E5\u8BC6\u8FDE\u63A5","workbench.currentModelLabel":"\u5F53\u524D\u6A21\u578B","workbench.noReportYet":"\u8FD8\u6CA1\u6709\u62A5\u544A\u7B14\u8BB0","workbench.noIndexYet":"\u8FD8\u6CA1\u6709\u77E5\u8BC6\u7D22\u5F15\u3002\u8BF7\u5148\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0\u3002","workbench.noModelLoaded":"\u5C1A\u672A\u52A0\u8F7D\u6A21\u578B","workbench.disassemblyTitle":"\u5206\u89E3","workbench.explodeLabel":"\u7206\u70B8","workbench.summaryTitle":"\u6458\u8981","workbench.meshesLabel":"\u7F51\u683C","workbench.splatsLabel":"\u70B9\u4E91","workbench.trianglesLabel":"\u4E09\u89D2\u5F62","workbench.verticesLabel":"\u9876\u70B9","workbench.materialsLabel":"\u6750\u8D28","workbench.boundingSizeLabel":"\u5305\u56F4\u76D2","workbench.centerLabel":"\u4E2D\u5FC3","workbench.selectedPartTitle":"\u5F53\u524D\u9009\u4E2D\u90E8\u4EF6","workbench.partMeshLabel":"\u7F51\u683C","workbench.noSelectedPart":"\u70B9\u51FB\u6A21\u578B\u4E2D\u7684\u90E8\u4EF6\u540E\u4F1A\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F\u3002","workbench.tagsTitle":"\u6807\u7B7E","workbench.noTagsYet":"\u8FD8\u6CA1\u6709\u6807\u7B7E","workbench.addTagPlaceholder":"\u6DFB\u52A0\u6807\u7B7E...","workbench.addTagAction":"\u6DFB\u52A0","workbench.annotationsTitle":"\u6807\u6CE8","workbench.exitAnnotate":"\u9000\u51FA\u6807\u6CE8","workbench.annotate":"\u6807\u6CE8","workbench.annotateHintActive":"\u70B9\u51FB\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E \xB7 \u6309 Esc \u9000\u51FA","workbench.annotateHintActiveMobile":"\u70B9\u6309\u6A21\u578B\u6DFB\u52A0\u6807\u7B7E\u3002\u9700\u8981\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.pinCount":"{count} \u4E2A\u6807\u6CE8","workbench.editAction":"\u7F16\u8F91","workbench.deleteAction":"\u5220\u9664","workbench.resetViewAction":"\u91CD\u7F6E\u89C6\u56FE","workbench.insertInfoAction":"\u63D2\u5165\u4FE1\u606F","workbench.insertGalleryAction":"\u63D2\u5165 Gallery","workbench.insertCompareAction":"\u63D2\u5165\u5BF9\u6BD4","workbench.playAction":"\u64AD\u653E","workbench.pauseAction":"\u6682\u505C","workbench.saveProfileAction":"\u4FDD\u5B58\u914D\u7F6E","workbench.generateNoteAction":"\u751F\u6210\u7B14\u8BB0","workbench.openNoteAction":"\u6253\u5F00\u7B14\u8BB0","workbench.openIndexAction":"\u6253\u5F00\u7D22\u5F15","workbench.recordTitle":"\u6807\u672C\u5361","workbench.recordSubtitle":"\u5F53\u524D\u8D44\u4EA7\u6863\u6848","workbench.notesTitle":"\u5206\u6790\u672D\u8BB0","workbench.whereTitle":"\u5173\u8054\u4F4D\u7F6E","workbench.noteReady":"\u5173\u8054\u7B14\u8BB0\u5DF2\u5C31\u7EEA","workbench.indexReady":"\u77E5\u8BC6\u7D22\u5F15\u5DF2\u5C31\u7EEA","workbench.notePending":"\u5173\u8054\u7B14\u8BB0\u5F85\u751F\u6210","workbench.analysisLabel":"\u5206\u6790","workbench.settingsUnavailable":"\u8BF7\u4ECE Obsidian \u8BBE\u7F6E\u4E2D\u6253\u5F00\u672C\u63D2\u4EF6\u6765\u8C03\u6574\u5DE5\u4F5C\u53F0\u9009\u9879\u3002","workbench.profileSaved":"\u914D\u7F6E\u5DF2\u4FDD\u5B58","workbench.viewReset":"\u89C6\u56FE\u5DF2\u91CD\u7F6E","workbench.infoInserted":"\u6A21\u578B\u4FE1\u606F\u5DF2\u63D2\u5165","workbench.infoCopied":"\u6A21\u578B\u4FE1\u606F\u5DF2\u590D\u5236","workbench.templateInserted":"\u6A21\u677F\u5DF2\u63D2\u5165","workbench.templateCopied":"\u6A21\u677F\u5DF2\u590D\u5236","workbench.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","workbench.mobileHintInteractive":"\u5F53\u524D\u4E3A\u4EA4\u4E92\u6A21\u5F0F\u3002\u9700\u8981\u7EE7\u7EED\u6EDA\u52A8\u7B14\u8BB0\u65F6\uFF0C\u8BF7\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","directView.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u4F7F\u7528\u4E0B\u65B9\u5DE5\u5177\u680F\u91CC\u7684\u201C\u4EA4\u4E92\u201D\u6309\u94AE\uFF0C\u5728\u6A21\u578B\u64CD\u4F5C\u548C\u7B14\u8BB0\u6EDA\u52A8\u4E4B\u95F4\u5207\u6362\u3002","directWorkbench.modelLoadInterrupted":"\u6A21\u578B\u52A0\u8F7D\u88AB\u65B0\u8BF7\u6C42\u4E2D\u65AD\u3002","directWorkbench.backendLabel":"\u540E\u7AEF","directWorkbench.routeLabel":"\u8DEF\u7531","directWorkbench.performanceLabel":"\u6027\u80FD","directWorkbench.partCandidatesLabel":"\u5019\u9009\u96F6\u4EF6","directWorkbench.knowledgeTitle":"\u77E5\u8BC6","directWorkbench.registeredTitle":"\u5DF2\u6CE8\u518C\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredLoading":"\u68C0\u67E5\u4E2D...","directWorkbench.registeredCount":"{count} \u4E2A\u5339\u914D","directWorkbench.registeredEmpty":"\u6682\u65E0\u8DE8\u6A21\u578B\u96F6\u4EF6\u5339\u914D","directWorkbench.registeredUnavailable":"\u6682\u65E0\u96F6\u4EF6\u8BC1\u636E","directWorkbench.registeredOpen":"\u6253\u5F00","directWorkbench.registeredOpenNote":"\u7B14\u8BB0","directWorkbench.registeredOpenModel":"\u6A21\u578B","directWorkbench.registeredSourceModel":"\u6765\u81EA {model}","directWorkbench.registeredTargetPartNote":"\u6253\u5F00\u5339\u914D\u96F6\u4EF6\u7B14\u8BB0","directWorkbench.registeredTargetSourceModel":"\u6253\u5F00\u6765\u6E90\u6A21\u578B","directWorkbench.registeredTargetUnavailable":"\u6682\u65E0\u53EF\u6253\u5F00\u76EE\u6807","workbench.fileNotFound":"\u672A\u627E\u5230\u6587\u4EF6\uFF1A{path}","annotation.selectColor":"\u9009\u62E9\u989C\u8272 {color}","annotation.sectionEmpty":"\u8BE5\u6BB5\u5185\u5BB9\u4E3A\u7A7A\u3002","modal.selectModel":"\u9009\u62E9\u4E00\u4E2A 3D \u6A21\u578B...","main.commandImportModel":"\u5BFC\u5165 3D \u6A21\u578B","main.commandGenerateNote":"\u751F\u6210\u77E5\u8BC6\u7B14\u8BB0","main.commandOpenKnowledgeIndex":"\u6253\u5F00\u77E5\u8BC6\u7D22\u5F15","main.commandClearConversionCache":"\u6E05\u9664\u8F6C\u6362\u7F13\u5B58","main.commandCheckConverters":"\u68C0\u67E5\u8F6C\u6362\u5668","main.commandCopyDiagnostics":"\u590D\u5236\u8BCA\u65AD\u62A5\u544A","main.converterDiagnosticsMobileUnavailable":"\u8F6C\u6362\u5668\u8BCA\u65AD\u4EC5\u652F\u6301\u684C\u9762\u7AEF\u3002\u5728 iOS\u3001iPadOS \u548C Android \u4E0A\uFF0C\u76F4\u8BFB\u683C\u5F0F\u4ECD\u53EF\u52A0\u8F7D\u3002","main.diagnosticsCopied":"AI Model Workbench \u8BCA\u65AD\u62A5\u544A\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F\u3002","main.diagnosticsCopyFailed":"\u65E0\u6CD5\u590D\u5236\u8BCA\u65AD\u62A5\u544A\uFF0C\u5DF2\u6539\u4E3A\u521B\u5EFA\u4E00\u4EFD\u8131\u654F\u8BCA\u65AD\u7B14\u8BB0\u3002","codeBlock.noModelPathOrConfig":"\u672A\u6307\u5B9A\u6A21\u578B\u8DEF\u5F84\u6216\u914D\u7F6E\u3002","codeBlock.jsonParseError":"JSON \u89E3\u6790\u9519\u8BEF\uFF1A{error}","codeBlock.jsonParseLine":"\uFF08\u7B2C {line} \u884C\uFF09","codeBlock.noModelsInConfig":"\u914D\u7F6E\u4E2D\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.unsupportedFormat":"\u4E0D\u652F\u6301\u7684\u683C\u5F0F\uFF1A{ext}\u3002\u652F\u6301\uFF1A{formats}","codeBlock.splatDisabled":"\u5F53\u524D\u6253\u5305\u7248\u672C\u6682\u672A\u542F\u7528 SPLAT \u9884\u89C8\u3002\u540E\u7EED\u4F1A\u4F18\u5148\u6062\u590D\u672C\u5730-only .splat\uFF1B.spz/.sog \u9700\u8981\u672C\u5730\u6253\u5305\u89E3\u7801\u5668\u540E\u518D\u8BC4\u4F30\u3002","codeBlock.noConfigSpecified":"\u672A\u6307\u5B9A\u914D\u7F6E\u3002","codeBlock.noModelsSpecified":"\u672A\u6307\u5B9A\u6A21\u578B\u3002","codeBlock.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u64CD\u4F5C\u6A21\u578B\u65F6\u70B9\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u7B14\u8BB0\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","codeBlock.renderingGrid":"\u6B63\u5728\u6E32\u67D3\u7F51\u683C...","codeBlock.composeRequiresSections":"\u201Ccompose\u201D \u9884\u8BBE\u9700\u8981\u63D0\u4F9B \u201Csections\u201D \u6570\u7EC4\u3002","codeBlock.composeNoValidSections":"Compose\uFF1A\u6CA1\u6709\u6709\u6548\u7684\u5206\u6BB5\u3002","codeBlock.unknownPreset":"\u672A\u77E5\u9884\u8BBE\uFF1A\u201C{preset}\u201D\u3002\u53EF\u7528\uFF1Acompare\u3001showcase\u3001explode\u3001timeline\u3001compose","codeBlock.presetRequiresModels":"\u9884\u8BBE \u201C{preset}\u201D \u9700\u8981 {min}-{max} \u4E2A\u6A21\u578B\uFF0C\u5F53\u524D\u4E3A {count} \u4E2A\u3002","codeBlock.gridFailed":"\u7F51\u683C\u6E32\u67D3\u5931\u8D25\uFF1A{reason}","livePreview.mobileHint":"\u79FB\u52A8\u7AEF\u63D0\u793A\uFF1A\u9700\u8981\u62D6\u52A8\u6A21\u578B\u65F6\u5207\u5230\u201C\u4EA4\u4E92\u201D\uFF0C\u7EE7\u7EED\u9605\u8BFB\u65F6\u5207\u56DE\u201C\u6EDA\u52A8\u201D\u3002","loading.default":"\u52A0\u8F7D\u4E2D...","loading.preparingModel":"\u6B63\u5728\u51C6\u5907\u6A21\u578B...","loading.loadingModel":"\u6B63\u5728\u52A0\u8F7D\u6A21\u578B..."}});function E_(n){W1=n;for(let e of U0)e()}function j(n){var e,t,i;return(i=(t=(e=Iee[W1])==null?void 0:e[n])!=null?t:B0[n])!=null?i:n}function H1(n){return U0.add(n),()=>{U0.delete(n)}}function yee(n,e){return n.replace(/\{(\w+)\}/g,(t,i)=>{var r;return(r=e[i])!=null?r:""})}function Ki(n,e){return yee(j(n),e)}var Iee,W1,U0,_n=I(()=>{"use strict";V1();k1();Iee={en:B0,"zh-CN":G1},W1="en",U0=new Set});var bd,ME=I(()=>{"use strict";bd="ai3d-direct-view"});function Md(n){var t,i;n.classList.add(z1),(t=n.closest(".workspace-leaf"))==null||t.classList.add(X1);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.add(Y1)}function IE(n){var t,i;n.classList.remove(z1),(t=n.closest(".workspace-leaf"))==null||t.classList.remove(X1);let e=(i=n.closest(".workspace-leaf-content"))!=null?i:n.parentElement;e==null||e.classList.remove(Y1)}var z1,X1,Y1,V0=I(()=>{"use strict";z1="ai3d-direct-view",X1="ai3d-direct-view-leaf",Y1="ai3d-direct-view-leaf-content"});function Pee(n){return n!=null?n:j1}function fu(n){var c;let e=n.ext.trim().toLowerCase(),t=(c=n.annotationMode)!=null?c:"none",i=!!n.allowEditModeOnThree,r=!!n.allowWorkbenchFeaturesOnThree,s=!!n.requireWorkbenchFeatures,a=Pee(n.rendererRollout);if(!(n.useThreeRenderer!==!1))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"useThreeRenderer=false"};if(K1.has(e)&&(!s||r)){if(s&&!Cee.has(e))return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`workbench experimental Three supports GLB/GLTF only, ext=${e}`};if(t==="edit"&&a!=="three-direct-glb")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`annotationMode=edit, rendererRollout=${a}`};if(a==="babylon-safe")return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:`rendererRollout=${a}`};if(t==="edit"&&!i)return{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:"annotationMode=edit, allowEditModeOnThree=false"};let f=s?`${e} workbench preview`:t==="edit"?`${e} direct view edit preview`:t==="readonly"?`${e} preview with readonly annotations`:`simple ${e} preview`;return{backend:"three",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:f}}let l=[];return K1.has(e)||l.push(`ext=${e}`),t!=="none"&&l.push(`annotationMode=${t}`),t==="edit"&&!i&&l.push("allowEditModeOnThree=false"),s&&l.push("requireWorkbenchFeatures=true"),a!==j1&&l.push(`rendererRollout=${a}`),{backend:"babylon",ext:e,annotationMode:t,requireWorkbenchFeatures:s,rendererRollout:a,reason:l.join(", ")||"fallback route"}}function Z1(){return{backend:"babylon",reason:"grid previews remain on the Babylon grid renderer"}}var j1,K1,Cee,yE=I(()=>{"use strict";j1="babylon-safe",K1=new Set(["glb","gltf","stl","ply","obj"]),Cee=new Set(["glb","gltf"])});function Dee(n){for(let e=n.length-1;e>=0;--e)if(n[e]>=65535)return!0;return!1}function Lee(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Lu(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}function gB(){let n=Lu("canvas");return n.style.display="block",n}function w_(...n){let e="THREE."+n.shift();Ou?Ou("log",e,...n):console.log(e,...n)}function vB(n){let e=n[0];if(typeof e=="string"&&e.startsWith("TSL:")){let t=n[1];t&&t.isStackTrace?n[0]+=" "+t.getLocation():n[1]='Stack trace not available. Enable "THREE.Node.captureStackTrace" to capture stack traces.'}return n}function Ct(...n){n=vB(n);let e="THREE."+n.shift();if(Ou)Ou("warn",e,...n);else{let t=n[0];t&&t.isStackTrace?console.warn(t.getError(e)):console.warn(e,...n)}}function Vt(...n){n=vB(n);let e="THREE."+n.shift();if(Ou)Ou("error",e,...n);else{let t=n[0];t&&t.isStackTrace?console.error(t.getError(e)):console.error(e,...n)}}function _S(...n){let e=n.join(" ");e in q1||(q1[e]=!0,Ct(...n))}function EB(n,e,t){return new Promise(function(i,r){function s(){switch(n.clientWaitSync(e,n.SYNC_FLUSH_COMMANDS_BIT,0)){case n.WAIT_FAILED:r();break;case n.TIMEOUT_EXPIRED:setTimeout(s,t);break;default:i()}}setTimeout(s,t)})}function oo(){let n=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,i=Math.random()*4294967295|0;return(Bn[n&255]+Bn[n>>8&255]+Bn[n>>16&255]+Bn[n>>24&255]+"-"+Bn[e&255]+Bn[e>>8&255]+"-"+Bn[e>>16&15|64]+Bn[e>>24&255]+"-"+Bn[t&63|128]+Bn[t>>8&255]+"-"+Bn[t>>16&255]+Bn[t>>24&255]+Bn[i&255]+Bn[i>>8&255]+Bn[i>>16&255]+Bn[i>>24&255]).toLowerCase()}function _i(n,e,t){return Math.max(e,Math.min(t,n))}function zI(n,e){return(n%e+e)%e}function Oee(n,e,t,i,r){return i+(n-e)*(r-i)/(t-e)}function Nee(n,e,t){return n!==e?(t-n)/(e-n):0}function L_(n,e,t){return(1-t)*n+t*e}function wee(n,e,t,i){return L_(n,e,1-Math.exp(-t*i))}function Fee(n,e=1){return e-Math.abs(zI(n,e*2)-e)}function Bee(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*(3-2*n))}function Uee(n,e,t){return n<=e?0:n>=t?1:(n=(n-e)/(t-e),n*n*n*(n*(n*6-15)+10))}function Vee(n,e){return n+Math.floor(Math.random()*(e-n+1))}function Gee(n,e){return n+Math.random()*(e-n)}function kee(n){return n*(.5-Math.random())}function Wee(n){n!==void 0&&(Q1=n);let e=Q1+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Hee(n){return n*D_}function zee(n){return n*Ud}function Xee(n){return(n&n-1)===0&&n!==0}function Yee(n){return Math.pow(2,Math.ceil(Math.log(n)/Math.LN2))}function Kee(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}function jee(n,e,t,i,r){let s=Math.cos,a=Math.sin,o=s(t/2),l=a(t/2),c=s((e+i)/2),f=a((e+i)/2),d=s((e-i)/2),h=a((e-i)/2),u=s((i-e)/2),m=a((i-e)/2);switch(r){case"XYX":n.set(o*f,l*d,l*h,o*c);break;case"YZY":n.set(l*h,o*f,l*d,o*c);break;case"ZXZ":n.set(l*d,l*h,o*f,o*c);break;case"XZX":n.set(o*f,l*m,l*u,o*c);break;case"YXY":n.set(l*u,o*f,l*m,o*c);break;case"ZYZ":n.set(l*m,l*u,o*f,o*c);break;default:Ct("MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function so(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return n/4294967295;case Uint16Array:return n/65535;case Uint8Array:return n/255;case Int32Array:return Math.max(n/2147483647,-1);case Int16Array:return Math.max(n/32767,-1);case Int8Array:return Math.max(n/127,-1);default:throw new Error("Invalid component type.")}}function ir(n,e){switch(e.constructor){case Float32Array:return n;case Uint32Array:return Math.round(n*4294967295);case Uint16Array:return Math.round(n*65535);case Uint8Array:return Math.round(n*255);case Int32Array:return Math.round(n*2147483647);case Int16Array:return Math.round(n*32767);case Int8Array:return Math.round(n*127);default:throw new Error("Invalid component type.")}}function Zee(){let n={enabled:!0,workingColorSpace:fs,spaces:{},convert:function(r,s,a){return this.enabled===!1||s===a||!s||!a||(this.spaces[s].transfer===Ji&&(r.r=Xl(r.r),r.g=Xl(r.g),r.b=Xl(r.b)),this.spaces[s].primaries!==this.spaces[a].primaries&&(r.applyMatrix3(this.spaces[s].toXYZ),r.applyMatrix3(this.spaces[a].fromXYZ)),this.spaces[a].transfer===Ji&&(r.r=Cu(r.r),r.g=Cu(r.g),r.b=Cu(r.b))),r},workingToColorSpace:function(r,s){return this.convert(r,this.workingColorSpace,s)},colorSpaceToWorking:function(r,s){return this.convert(r,s,this.workingColorSpace)},getPrimaries:function(r){return this.spaces[r].primaries},getTransfer:function(r){return r===Ql?N_:this.spaces[r].transfer},getToneMappingMode:function(r){return this.spaces[r].outputColorSpaceConfig.toneMappingMode||"standard"},getLuminanceCoefficients:function(r,s=this.workingColorSpace){return r.fromArray(this.spaces[s].luminanceCoefficients)},define:function(r){Object.assign(this.spaces,r)},_getMatrix:function(r,s,a){return r.copy(this.spaces[s].toXYZ).multiply(this.spaces[a].fromXYZ)},_getDrawingBufferColorSpace:function(r){return this.spaces[r].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(r=this.workingColorSpace){return this.spaces[r].workingColorSpaceConfig.unpackColorSpace},fromWorkingColorSpace:function(r,s){return _S("ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace()."),n.workingToColorSpace(r,s)},toWorkingColorSpace:function(r,s){return _S("ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking()."),n.colorSpaceToWorking(r,s)}},e=[.64,.33,.3,.6,.15,.06],t=[.2126,.7152,.0722],i=[.3127,.329];return n.define({[fs]:{primaries:e,whitePoint:i,transfer:N_,toXYZ:J1,fromXYZ:e3,luminanceCoefficients:t,workingColorSpaceConfig:{unpackColorSpace:Oi},outputColorSpaceConfig:{drawingBufferColorSpace:Oi}},[Oi]:{primaries:e,whitePoint:i,transfer:Ji,toXYZ:J1,fromXYZ:e3,luminanceCoefficients:t,outputColorSpaceConfig:{drawingBufferColorSpace:Oi}}}),n}function Xl(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Cu(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}function W0(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?gS.getDataURL(n):n.data?{data:Array.from(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(Ct("Texture: Unable to serialize Texture."),{})}function X0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function J0(n,e,t,i,r){for(let s=0,a=n.length-3;s<=a;s+=3){yd.fromArray(n,s);let o=r.x*Math.abs(yd.x)+r.y*Math.abs(yd.y)+r.z*Math.abs(yd.z),l=e.dot(yd),c=t.dot(yd),f=i.dot(yd);if(Math.max(-Math.max(l,c,f),Math.min(l,c,f))>o)return!1}return!0}function UE(n,e,t,i,r,s){Ru.subVectors(n,t).addScalar(.5).multiply(i),r!==void 0?(b_.x=s*Ru.x-r*Ru.y,b_.y=r*Ru.x+s*Ru.y):b_.copy(Ru),n.copy(e),n.x+=b_.x,n.y+=b_.y,n.applyMatrix4(AB)}function cte(n,e,t,i,r,s,a,o){let l;if(e.side===Mn?l=i.intersectTriangle(a,s,r,!0,o):l=i.intersectTriangle(r,s,a,e.side===aa,o),l===null)return null;YE.copy(o),YE.applyMatrix4(n.matrixWorld);let c=t.ray.origin.distanceTo(YE);return ct.far?null:{distance:c,point:YE.clone(),object:n}}function KE(n,e,t,i,r,s,a,o,l,c){n.getVertexPosition(o,WE),n.getVertexPosition(l,HE),n.getVertexPosition(c,zE);let f=cte(n,e,t,i,WE,HE,zE,u3);if(f){let d=new re;zl.getBarycoord(u3,WE,HE,zE,d),r&&(f.uv=zl.getInterpolatedAttribute(r,o,l,c,d,new It)),s&&(f.uv1=zl.getInterpolatedAttribute(s,o,l,c,d,new It)),a&&(f.normal=zl.getInterpolatedAttribute(a,o,l,c,d,new re),f.normal.dot(i.direction)>0&&f.normal.multiplyScalar(-1));let h={a:o,b:l,c,normal:new re,materialIndex:0};zl.getNormal(WE,HE,zE,h.normal),f.face=h,f.barycoord=d}return f}function $E(n,e,t,i,r,s,a){let o=n.geometry.attributes.position;if(SS.fromBufferAttribute(o,r),TS.fromBufferAttribute(o,s),t.distanceSqToSegment(SS,TS,fI,A3)>i)return;fI.applyMatrix4(n.matrixWorld);let c=e.ray.origin.distanceTo(fI);if(!(ce.far))return{distance:c,point:A3.clone().applyMatrix4(n.matrixWorld),index:a,face:null,faceIndex:null,barycoord:null,object:n}}function M3(n,e,t,i,r,s,a){let o=_I.distanceSqToPoint(n);if(or.far)return;s.push({distance:c,distanceToRay:Math.sqrt(o),point:l,index:e,face:null,faceIndex:null,barycoord:null,object:a})}}function jd(n){let e={};for(let t in n){e[t]={};for(let i in n[t]){let r=n[t][i];if(I3(r))r.isRenderTargetTexture?(Ct("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[t][i]=null):e[t][i]=r.clone();else if(Array.isArray(r))if(I3(r[0])){let s=[];for(let a=0,o=r.length;a{hf={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},uf={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},F3=0,RI=1,B3=2,ig=1,FS=2,Ku=3,aa=0,Mn=1,Ca=2,nl=0,Nd=1,bI=2,MI=3,II=4,U3=5,af=100,V3=101,G3=102,k3=103,W3=104,H3=200,z3=201,X3=202,Y3=203,aS=204,oS=205,K3=206,j3=207,Z3=208,q3=209,Q3=210,$3=211,J3=212,eB=213,tB=214,lS=0,cS=1,fS=2,wd=3,dS=4,hS=5,uS=6,mS=7,rg=0,iB=1,rB=2,Ns=0,yI=1,CI=2,PI=3,DI=4,LI=5,OI=6,NI=7,uI="attached",nB="detached",wI=300,mf=301,Yd=302,BS=303,US=304,ng=306,Zo=1e3,Ia=1001,Pu=1002,Vr=1003,VS=1004,Kd=1005,Gr=1006,ju=1007,uo=1008,ws=1009,FI=1010,BI=1011,Zu=1012,GS=1013,mo=1014,ca=1015,sl=1016,kS=1017,WS=1018,qu=1020,UI=35902,VI=35899,GI=1021,kI=1022,fa=1023,qo=1026,pf=1027,HS=1028,zS=1029,_f=1030,XS=1031,YS=1033,sg=33776,ag=33777,og=33778,lg=33779,KS=35840,jS=35841,ZS=35842,qS=35843,QS=36196,$S=37492,JS=37496,eT=37488,tT=37489,cg=37490,iT=37491,rT=37808,nT=37809,sT=37810,aT=37811,oT=37812,lT=37813,cT=37814,fT=37815,dT=37816,hT=37817,uT=37818,mT=37819,pT=37820,_T=37821,gT=36492,vT=36494,ET=36495,ST=36283,TT=36284,fg=36285,AT=36286,sB=2200,aB=2201,oB=2202,Fd=2300,Bd=2301,sS=2302,mI=2303,Ld=2400,Od=2401,O_=2402,xT=2500,lB=2501,WI=0,dg=1,Qu=2,cB=3200,$u=0,fB=1,Ql="",Oi="srgb",fs="srgb-linear",N_="linear",Ji="srgb",Dd=7680,pI=519,dB=512,hB=513,uB=514,RT=515,mB=516,pB=517,bT=518,_B=519,pS=35044,HI="300 es",ao=2e3,Du=2001;q1={},Ou=null;SB={[lS]:cS,[fS]:uS,[dS]:mS,[wd]:hS,[cS]:lS,[uS]:fS,[mS]:dS,[hS]:wd},ya=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return i===void 0?!1:i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){let i=this._listeners;if(i===void 0)return;let r=i[e];if(r!==void 0){let s=r.indexOf(t);s!==-1&&r.splice(s,1)}}dispatchEvent(e){let t=this._listeners;if(t===void 0)return;let i=t[e.type];if(i!==void 0){e.target=this;let r=i.slice(0);for(let s=0,a=r.length;s0){let u=.5/Math.sqrt(h+1);this._w=.25/u,this._x=(f-l)*u,this._y=(s-c)*u,this._z=(a-r)*u}else if(i>o&&i>d){let u=2*Math.sqrt(1+i-o-d);this._w=(f-l)/u,this._x=.25*u,this._y=(r+a)/u,this._z=(s+c)/u}else if(o>d){let u=2*Math.sqrt(1+o-i-d);this._w=(s-c)/u,this._x=(r+a)/u,this._y=.25*u,this._z=(l+f)/u}else{let u=2*Math.sqrt(1+d-i-o);this._w=(a-r)/u,this._x=(s+c)/u,this._y=(l+f)/u,this._z=.25*u}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return i<1e-8?(i=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(_i(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=t._x,l=t._y,c=t._z,f=t._w;return this._x=i*f+a*o+r*c-s*l,this._y=r*f+a*l+s*o-i*c,this._z=s*f+a*c+i*l-r*o,this._w=a*f-i*o-r*l-s*c,this._onChangeCallback(),this}slerp(e,t){let i=e._x,r=e._y,s=e._z,a=e._w,o=this.dot(e);o<0&&(i=-i,r=-r,s=-s,a=-a,o=-o);let l=1-t;if(o<.9995){let c=Math.acos(o),f=Math.sin(c);l=Math.sin(l*c)/f,t=Math.sin(t*c)/f,this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this._onChangeCallback()}else this._x=this._x*l+i*t,this._y=this._y*l+r*t,this._z=this._z*l+s*t,this._w=this._w*l+a*t,this.normalize();return this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),i=Math.random(),r=Math.sqrt(1-i),s=Math.sqrt(i);return this.set(r*Math.sin(e),r*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},qI=class qI{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion($1.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion($1.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[3]*i+s[6]*r,this.y=s[1]*t+s[4]*i+s[7]*r,this.z=s[2]*t+s[5]*i+s[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=e.elements,a=1/(s[3]*t+s[7]*i+s[11]*r+s[15]);return this.x=(s[0]*t+s[4]*i+s[8]*r+s[12])*a,this.y=(s[1]*t+s[5]*i+s[9]*r+s[13])*a,this.z=(s[2]*t+s[6]*i+s[10]*r+s[14])*a,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,s=e.x,a=e.y,o=e.z,l=e.w,c=2*(a*r-o*i),f=2*(o*t-s*r),d=2*(s*i-a*t);return this.x=t+l*c+a*d-o*f,this.y=i+l*f+o*c-s*d,this.z=r+l*d+s*f-a*c,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r,this.y=s[1]*t+s[5]*i+s[9]*r,this.z=s[2]*t+s[6]*i+s[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=_i(this.x,e.x,t.x),this.y=_i(this.y,e.y,t.y),this.z=_i(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=_i(this.x,e,t),this.y=_i(this.y,e,t),this.z=_i(this.z,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(_i(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,s=e.z,a=t.x,o=t.y,l=t.z;return this.x=r*l-s*o,this.y=s*a-i*l,this.z=i*o-r*a,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return G0.copy(this).projectOnVector(e),this.sub(G0)}reflect(e){return this.sub(G0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(_i(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=Math.random()*2-1,i=Math.sqrt(1-t*t);return this.x=i*Math.cos(e),this.y=t,this.z=i*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};qI.prototype.isVector3=!0;re=qI,G0=new re,$1=new nn,QI=class QI{constructor(e,t,i,r,s,a,o,l,c){this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,i,r,s,a,o,l,c)}set(e,t,i,r,s,a,o,l,c){let f=this.elements;return f[0]=e,f[1]=r,f[2]=o,f[3]=t,f[4]=s,f[5]=l,f[6]=i,f[7]=a,f[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,s=this.elements,a=i[0],o=i[3],l=i[6],c=i[1],f=i[4],d=i[7],h=i[2],u=i[5],m=i[8],_=r[0],p=r[3],g=r[6],v=r[1],T=r[4],S=r[7],E=r[2],A=r[5],R=r[8];return s[0]=a*_+o*v+l*E,s[3]=a*p+o*T+l*A,s[6]=a*g+o*S+l*R,s[1]=c*_+f*v+d*E,s[4]=c*p+f*T+d*A,s[7]=c*g+f*S+d*R,s[2]=h*_+u*v+m*E,s[5]=h*p+u*T+m*A,s[8]=h*g+u*S+m*R,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8];return t*a*f-t*o*c-i*s*f+i*o*l+r*s*c-r*a*l}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=f*a-o*c,h=o*l-f*s,u=c*s-a*l,m=t*d+i*h+r*u;if(m===0)return this.set(0,0,0,0,0,0,0,0,0);let _=1/m;return e[0]=d*_,e[1]=(r*c-f*i)*_,e[2]=(o*i-r*a)*_,e[3]=h*_,e[4]=(f*t-r*l)*_,e[5]=(r*s-o*t)*_,e[6]=u*_,e[7]=(i*l-c*t)*_,e[8]=(a*t-i*s)*_,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,s,a,o){let l=Math.cos(s),c=Math.sin(s);return this.set(i*l,i*c,-i*(l*a+c*o)+a+e,-r*c,r*l,-r*(-c*a+l*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(k0.makeScale(e,t)),this}rotate(e){return this.premultiply(k0.makeRotation(-e)),this}translate(e,t){return this.premultiply(k0.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let r=0;r<9;r++)if(t[r]!==i[r])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};QI.prototype.isMatrix3=!0;ri=QI,k0=new ri,J1=new ri().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),e3=new ri().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);oi=Zee();gS=class{static getDataURL(e,t="image/png"){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement=="undefined")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{du===void 0&&(du=Lu("canvas")),du.width=e.width,du.height=e.height;let r=du.getContext("2d");e instanceof ImageData?r.putImageData(e,0,0):r.drawImage(e,0,0,e.width,e.height),i=du}return i.toDataURL(t)}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=Lu("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),s=r.data;for(let a=0;a1),this.pmremVersion=0,this.normalized=!1}get width(){return this.source.getSize(H0).x}get height(){return this.source.getSize(H0).y}get depth(){return this.source.getSize(H0).z}get image(){return this.source.data}set image(e){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.normalized=e.normalized,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.isArrayTexture=e.isArrayTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}setValues(e){for(let t in e){let i=e[t];if(i===void 0){Ct(`Texture.setValues(): parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Ct(`Texture.setValues(): property '${t}' does not exist.`);continue}r&&i&&r.isVector2&&i.isVector2||r&&i&&r.isVector3&&i.isVector3||r&&i&&r.isMatrix3&&i.isMatrix3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";if(!t&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];let i={metadata:{version:4.7,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,normalized:this.normalized,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==wI)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case Zo:e.x=e.x-Math.floor(e.x);break;case Ia:e.x=e.x<0?0:1;break;case Pu:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Zo:e.y=e.y-Math.floor(e.y);break;case Ia:e.y=e.y<0?0:1;break;case Pu:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}};Pr.DEFAULT_IMAGE=null;Pr.DEFAULT_MAPPING=wI;Pr.DEFAULT_ANISOTROPY=1;$I=class $I{constructor(e=0,t=0,i=0,r=1){this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*i+a[8]*r+a[12]*s,this.y=a[1]*t+a[5]*i+a[9]*r+a[13]*s,this.z=a[2]*t+a[6]*i+a[10]*r+a[14]*s,this.w=a[3]*t+a[7]*i+a[11]*r+a[15]*s,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,r,s,l=e.elements,c=l[0],f=l[4],d=l[8],h=l[1],u=l[5],m=l[9],_=l[2],p=l[6],g=l[10];if(Math.abs(f-h)<.01&&Math.abs(d-_)<.01&&Math.abs(m-p)<.01){if(Math.abs(f+h)<.1&&Math.abs(d+_)<.1&&Math.abs(m+p)<.1&&Math.abs(c+u+g-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let T=(c+1)/2,S=(u+1)/2,E=(g+1)/2,A=(f+h)/4,R=(d+_)/4,M=(m+p)/4;return T>S&&T>E?T<.01?(i=0,r=.707106781,s=.707106781):(i=Math.sqrt(T),r=A/i,s=R/i):S>E?S<.01?(i=.707106781,r=0,s=.707106781):(r=Math.sqrt(S),i=A/r,s=M/r):E<.01?(i=.707106781,r=.707106781,s=0):(s=Math.sqrt(E),i=R/s,r=M/s),this.set(i,r,s,t),this}let v=Math.sqrt((p-m)*(p-m)+(d-_)*(d-_)+(h-f)*(h-f));return Math.abs(v)<.001&&(v=1),this.x=(p-m)/v,this.y=(d-_)/v,this.z=(h-f)/v,this.w=Math.acos((c+u+g-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=_i(this.x,e.x,t.x),this.y=_i(this.y,e.y,t.y),this.z=_i(this.z,e.z,t.z),this.w=_i(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=_i(this.x,e,t),this.y=_i(this.y,e,t),this.z=_i(this.z,e,t),this.w=_i(this.w,e,t),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(_i(i,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}};$I.prototype.isVector4=!0;or=$I,vS=class extends ya{constructor(e=1,t=1,i={}){super(),i=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:Gr,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1,depth:1,multiview:!1},i),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=i.depth,this.scissor=new or(0,0,e,t),this.scissorTest=!1,this.viewport=new or(0,0,e,t),this.textures=[];let r={width:e,height:t,depth:i.depth},s=new Pr(r),a=i.count;for(let o=0;o1);this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return new this.constructor().copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.textures.length=0;for(let t=0,i=e.textures.length;t>>0}enable(e){this.mask|=1<1){for(let t=0;t1){for(let i=0;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.pivot!==null&&(r.pivot=this.pivot.toArray()),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.morphTargetDictionary!==void 0&&(r.morphTargetDictionary=Object.assign({},this.morphTargetDictionary)),this.morphTargetInfluences!==void 0&&(r.morphTargetInfluences=this.morphTargetInfluences.slice()),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.geometryInfo=this._geometryInfo.map(o=>({...o,boundingBox:o.boundingBox?o.boundingBox.toJSON():void 0,boundingSphere:o.boundingSphere?o.boundingSphere.toJSON():void 0})),r.instanceInfo=this._instanceInfo.map(o=>({...o})),r.availableInstanceIds=this._availableInstanceIds.slice(),r.availableGeometryIds=this._availableGeometryIds.slice(),r.nextIndexStart=this._nextIndexStart,r.nextVertexStart=this._nextVertexStart,r.geometryCount=this._geometryCount,r.maxInstanceCount=this._maxInstanceCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.matricesTexture=this._matricesTexture.toJSON(e),r.indirectTexture=this._indirectTexture.toJSON(e),this._colorsTexture!==null&&(r.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(r.boundingSphere=this.boundingSphere.toJSON()),this.boundingBox!==null&&(r.boundingBox=this.boundingBox.toJSON()));function s(o,l){return o[l.uuid]===void 0&&(o[l.uuid]=l.toJSON(e)),l.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=s(e.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let l=o.shapes;if(Array.isArray(l))for(let c=0,f=l.length;c0){r.children=[];for(let o=0;o0){r.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),f.length>0&&(i.images=f),d.length>0&&(i.shapes=d),h.length>0&&(i.skeletons=h),u.length>0&&(i.animations=u),m.length>0&&(i.nodes=m)}return i.object=r,i;function a(o){let l=[];for(let c in o){let f=o[c];delete f.metadata,l.push(f)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.pivot=e.pivot!==null?e.pivot.clone():null,this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.static=e.static,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;iu+m?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=u-m&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(s=t.getPose(e.gripSpace,i),s!==null&&(l.matrix.fromArray(s.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),l.matrixWorldNeedsUpdate=!0,s.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(s.linearVelocity)):l.hasLinearVelocity=!1,s.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(s.angularVelocity)):l.hasAngularVelocity=!1,l.eventsEnabled&&l.dispatchEvent({type:"gripUpdated",data:e,target:this})));o!==null&&(r=t.getPose(e.targetRaySpace,i),r===null&&s!==null&&(r=s),r!==null&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(nte)))}return o!==null&&(o.visible=r!==null),l!==null&&(l.visible=s!==null),c!==null&&(c.visible=a!==null),this}_getHandJoint(e,t){if(e.joints[t.jointName]===void 0){let i=new sa;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},TB={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ef={h:0,s:0,l:0},DE={h:0,s:0,l:0};ht=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,i)}set(e,t,i){if(t===void 0&&i===void 0){let r=e;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(e,t,i);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Oi){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,oi.colorSpaceToWorking(this,t),this}setRGB(e,t,i,r=oi.workingColorSpace){return this.r=e,this.g=t,this.b=i,oi.colorSpaceToWorking(this,r),this}setHSL(e,t,i,r=oi.workingColorSpace){if(e=zI(e,1),t=_i(t,0,1),i=_i(i,0,1),t===0)this.r=this.g=this.b=i;else{let s=i<=.5?i*(1+t):i+t-i*t,a=2*i-s;this.r=X0(a,s,e+1/3),this.g=X0(a,s,e),this.b=X0(a,s,e-1/3)}return oi.colorSpaceToWorking(this,r),this}setStyle(e,t=Oi){function i(s){s!==void 0&&parseFloat(s)<1&&Ct("Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(e)){let s,a=r[1],o=r[2];switch(a){case"rgb":case"rgba":if(s=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(255,parseInt(s[1],10))/255,Math.min(255,parseInt(s[2],10))/255,Math.min(255,parseInt(s[3],10))/255,t);if(s=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setRGB(Math.min(100,parseInt(s[1],10))/100,Math.min(100,parseInt(s[2],10))/100,Math.min(100,parseInt(s[3],10))/100,t);break;case"hsl":case"hsla":if(s=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(o))return i(s[4]),this.setHSL(parseFloat(s[1])/360,parseFloat(s[2])/100,parseFloat(s[3])/100,t);break;default:Ct("Color: Unknown color model "+e)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let s=r[1],a=s.length;if(a===3)return this.setRGB(parseInt(s.charAt(0),16)/15,parseInt(s.charAt(1),16)/15,parseInt(s.charAt(2),16)/15,t);if(a===6)return this.setHex(parseInt(s,16),t);Ct("Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=Oi){let i=TB[e.toLowerCase()];return i!==void 0?this.setHex(i,t):Ct("Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Xl(e.r),this.g=Xl(e.g),this.b=Xl(e.b),this}copyLinearToSRGB(e){return this.r=Cu(e.r),this.g=Cu(e.g),this.b=Cu(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Oi){return oi.workingToColorSpace(Un.copy(this),e),Math.round(_i(Un.r*255,0,255))*65536+Math.round(_i(Un.g*255,0,255))*256+Math.round(_i(Un.b*255,0,255))}getHexString(e=Oi){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=oi.workingColorSpace){oi.workingToColorSpace(Un.copy(this),t);let i=Un.r,r=Un.g,s=Un.b,a=Math.max(i,r,s),o=Math.min(i,r,s),l,c,f=(o+a)/2;if(o===a)l=0,c=0;else{let d=a-o;switch(c=f<=.5?d/(a+o):d/(2-a-o),a){case i:l=(r-s)/d+(r0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}},ro=new re,Vl=new re,Y0=new re,Gl=new re,pu=new re,_u=new re,l3=new re,K0=new re,j0=new re,Z0=new re,q0=new or,Q0=new or,$0=new or,zl=class n{constructor(e=new re,t=new re,i=new re){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,r){r.subVectors(i,t),ro.subVectors(e,t),r.cross(ro);let s=r.lengthSq();return s>0?r.multiplyScalar(1/Math.sqrt(s)):r.set(0,0,0)}static getBarycoord(e,t,i,r,s){ro.subVectors(r,t),Vl.subVectors(i,t),Y0.subVectors(e,t);let a=ro.dot(ro),o=ro.dot(Vl),l=ro.dot(Y0),c=Vl.dot(Vl),f=Vl.dot(Y0),d=a*c-o*o;if(d===0)return s.set(0,0,0),null;let h=1/d,u=(c*l-o*f)*h,m=(a*f-o*l)*h;return s.set(1-u-m,m,u)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,Gl)===null?!1:Gl.x>=0&&Gl.y>=0&&Gl.x+Gl.y<=1}static getInterpolation(e,t,i,r,s,a,o,l){return this.getBarycoord(e,t,i,r,Gl)===null?(l.x=0,l.y=0,"z"in l&&(l.z=0),"w"in l&&(l.w=0),null):(l.setScalar(0),l.addScaledVector(s,Gl.x),l.addScaledVector(a,Gl.y),l.addScaledVector(o,Gl.z),l)}static getInterpolatedAttribute(e,t,i,r,s,a){return q0.setScalar(0),Q0.setScalar(0),$0.setScalar(0),q0.fromBufferAttribute(e,t),Q0.fromBufferAttribute(e,i),$0.fromBufferAttribute(e,r),a.setScalar(0),a.addScaledVector(q0,s.x),a.addScaledVector(Q0,s.y),a.addScaledVector($0,s.z),a}static isFrontFacing(e,t,i,r){return ro.subVectors(i,t),Vl.subVectors(e,t),ro.cross(Vl).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return ro.subVectors(this.c,this.b),Vl.subVectors(this.a,this.b),ro.cross(Vl).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return n.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return n.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,i,r,s){return n.getInterpolation(e,this.a,this.b,this.c,t,i,r,s)}containsPoint(e){return n.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return n.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,r=this.b,s=this.c,a,o;pu.subVectors(r,i),_u.subVectors(s,i),K0.subVectors(e,i);let l=pu.dot(K0),c=_u.dot(K0);if(l<=0&&c<=0)return t.copy(i);j0.subVectors(e,r);let f=pu.dot(j0),d=_u.dot(j0);if(f>=0&&d<=f)return t.copy(r);let h=l*d-f*c;if(h<=0&&l>=0&&f<=0)return a=l/(l-f),t.copy(i).addScaledVector(pu,a);Z0.subVectors(e,s);let u=pu.dot(Z0),m=_u.dot(Z0);if(m>=0&&u<=m)return t.copy(s);let _=u*c-l*m;if(_<=0&&c>=0&&m<=0)return o=c/(c-m),t.copy(i).addScaledVector(_u,o);let p=f*m-u*d;if(p<=0&&d-f>=0&&u-m>=0)return l3.subVectors(s,r),o=(d-f)/(d-f+(u-m)),t.copy(r).addScaledVector(l3,o);let g=1/(p+_+h);return a=_*g,o=h*g,t.copy(i).addScaledVector(pu,a).addScaledVector(_u,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},kr=class{constructor(e=new re(1/0,1/0,1/0),t=new re(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,i=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,no),no.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(T_),OE.subVectors(this.max,T_),gu.subVectors(e.a,T_),vu.subVectors(e.b,T_),Eu.subVectors(e.c,T_),tf.subVectors(vu,gu),rf.subVectors(Eu,vu),Id.subVectors(gu,Eu);let t=[0,-tf.z,tf.y,0,-rf.z,rf.y,0,-Id.z,Id.y,tf.z,0,-tf.x,rf.z,0,-rf.x,Id.z,0,-Id.x,-tf.y,tf.x,0,-rf.y,rf.x,0,-Id.y,Id.x,0];return!J0(t,gu,vu,Eu,OE)||(t=[1,0,0,0,1,0,0,0,1],!J0(t,gu,vu,Eu,OE))?!1:(NE.crossVectors(tf,rf),t=[NE.x,NE.y,NE.z],J0(t,gu,vu,Eu,OE))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,no).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(no).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(kl[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),kl[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),kl[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),kl[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),kl[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),kl[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),kl[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),kl[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(kl),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}toJSON(){return{min:this.min.toArray(),max:this.max.toArray()}}fromJSON(e){return this.min.fromArray(e.min),this.max.fromArray(e.max),this}},kl=[new re,new re,new re,new re,new re,new re,new re,new re],no=new re,LE=new kr,gu=new re,vu=new re,Eu=new re,tf=new re,rf=new re,Id=new re,T_=new re,OE=new re,NE=new re,yd=new re;qr=new re,wE=new It,ste=0,vr=class extends ya{constructor(e,t,i=!1){if(super(),Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:ste++}),this.name="",this.array=e,this.itemSize=t,this.count=e!==void 0?e.length/t:0,this.normalized=i,this.usage=pS,this.updateRanges=[],this.gpuType=ca,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,s=this.itemSize;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;A_.subVectors(e,this.center);let t=A_.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),r=(i-this.radius)*.5;this.center.addScaledVector(A_,r/i),this.radius+=r}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(eI.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(A_.copy(e.center).add(eI)),this.expandByPoint(A_.copy(e.center).sub(eI))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}toJSON(){return{radius:this.radius,center:this.center.toArray()}}fromJSON(e){return this.radius=e.radius,this.center.fromArray(e.center),this}},ote=0,ba=new li,tI=new er,Su=new re,na=new kr,x_=new kr,gn=new re,Qi=class n extends ya{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:ote++}),this.uuid=oo(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.indirectOffset=0,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(Dee(e)?U_:B_)(e,1):this.index=e,this}setIndirect(e,t=0){return this.indirect=e,this.indirectOffset=t,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let s=new ri().getNormalMatrix(e);i.applyNormalMatrix(s),i.needsUpdate=!0}let r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(e),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return ba.makeRotationFromQuaternion(e),this.applyMatrix4(ba),this}rotateX(e){return ba.makeRotationX(e),this.applyMatrix4(ba),this}rotateY(e){return ba.makeRotationY(e),this.applyMatrix4(ba),this}rotateZ(e){return ba.makeRotationZ(e),this.applyMatrix4(ba),this}translate(e,t,i){return ba.makeTranslation(e,t,i),this.applyMatrix4(ba),this}scale(e,t,i){return ba.makeScale(e,t,i),this.applyMatrix4(ba),this}lookAt(e){return tI.lookAt(e),tI.updateMatrix(),this.applyMatrix4(tI.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Su).negate(),this.translate(Su.x,Su.y,Su.z),this}setFromPoints(e){let t=this.getAttribute("position");if(t===void 0){let i=[];for(let r=0,s=e.length;rt.count&&Ct("BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new kr);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){Vt("BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new re(-1/0,-1/0,-1/0),new re(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),t)for(let i=0,r=t.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let r={},s=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],f=[];for(let d=0,h=c.length;d0&&(r[l]=f,s=!0)}s&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere=o.toJSON()),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone());let r=e.attributes;for(let c in r){let f=r[c];this.setAttribute(c,f.clone(t))}let s=e.morphAttributes;for(let c in s){let f=[],d=s[c];for(let h=0,u=d.length;h0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){Ct(`Material: parameter '${t}' has value of undefined.`);continue}let r=this[t];if(r===void 0){Ct(`Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.sheenColorMap&&this.sheenColorMap.isTexture&&(i.sheenColorMap=this.sheenColorMap.toJSON(e).uuid),this.sheenRoughnessMap&&this.sheenRoughnessMap.isTexture&&(i.sheenRoughnessMap=this.sheenRoughnessMap.toJSON(e).uuid),this.dispersion!==void 0&&(i.dispersion=this.dispersion),this.iridescence!==void 0&&(i.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(i.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(i.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(i.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(i.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapRotation!==void 0&&(i.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==Nd&&(i.blending=this.blending),this.side!==aa&&(i.side=this.side),this.vertexColors===!0&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=!0),this.blendSrc!==aS&&(i.blendSrc=this.blendSrc),this.blendDst!==oS&&(i.blendDst=this.blendDst),this.blendEquation!==af&&(i.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(i.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(i.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(i.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(i.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(i.blendAlpha=this.blendAlpha),this.depthFunc!==wd&&(i.depthFunc=this.depthFunc),this.depthTest===!1&&(i.depthTest=this.depthTest),this.depthWrite===!1&&(i.depthWrite=this.depthWrite),this.colorWrite===!1&&(i.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(i.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==pI&&(i.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(i.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(i.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Dd&&(i.stencilFail=this.stencilFail),this.stencilZFail!==Dd&&(i.stencilZFail=this.stencilZFail),this.stencilZPass!==Dd&&(i.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(i.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaHash===!0&&(i.alphaHash=!0),this.alphaToCoverage===!0&&(i.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=!0),this.forceSinglePass===!0&&(i.forceSinglePass=!0),this.allowOverride===!1&&(i.allowOverride=!1),this.wireframe===!0&&(i.wireframe=!0),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=!0),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),this.fog===!1&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData);function r(s){let a=[];for(let o in s){let l=s[o];delete l.metadata,a.push(l)}return a}if(t){let s=r(e.textures),a=r(e.images);s.length>0&&(i.textures=s),a.length>0&&(i.images=a)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let r=t.length;i=new Array(r);for(let s=0;s!==r;++s)i[s]=t[s].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.allowOverride=e.allowOverride,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}},Bu=class extends Wr{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ht(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}},R_=new re,Au=new re,xu=new re,Ru=new It,b_=new It,AB=new li,FE=new re,M_=new re,BE=new re,c3=new It,iI=new It,f3=new It,V_=class extends er{constructor(e=new Bu){if(super(),this.isSprite=!0,this.type="Sprite",Tu===void 0){Tu=new Qi;let t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),i=new Gd(t,5);Tu.setIndex([0,1,2,0,2,3]),Tu.setAttribute("position",new of(i,3,0,!1)),Tu.setAttribute("uv",new of(i,2,3,!1))}this.geometry=Tu,this.material=e,this.center=new It(.5,.5),this.count=1}raycast(e,t){e.camera===null&&Vt('Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Au.setFromMatrixScale(this.matrixWorld),AB.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),xu.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&Au.multiplyScalar(-xu.z);let i=this.material.rotation,r,s;i!==0&&(s=Math.cos(i),r=Math.sin(i));let a=this.center;UE(FE.set(-.5,-.5,0),xu,a,Au,r,s),UE(M_.set(.5,-.5,0),xu,a,Au,r,s),UE(BE.set(.5,.5,0),xu,a,Au,r,s),c3.set(0,0),iI.set(1,0),f3.set(1,1);let o=e.ray.intersectTriangle(FE,M_,BE,!1,R_);if(o===null&&(UE(M_.set(-.5,.5,0),xu,a,Au,r,s),iI.set(0,1),o=e.ray.intersectTriangle(FE,BE,M_,!1,R_),o===null))return;let l=e.ray.origin.distanceTo(R_);le.far||t.push({distance:l,point:R_.clone(),uv:zl.getInterpolation(R_,FE,M_,BE,c3,iI,f3,new It),face:null,object:this})}copy(e,t){return super.copy(e,t),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}};Wl=new re,rI=new re,VE=new re,nf=new re,nI=new re,GE=new re,sI=new re,Qo=class{constructor(e=new re,t=new re(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Wl)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,i)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=Wl.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(Wl.copy(this.origin).addScaledVector(this.direction,t),Wl.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){rI.copy(e).add(t).multiplyScalar(.5),VE.copy(t).sub(e).normalize(),nf.copy(this.origin).sub(rI);let s=e.distanceTo(t)*.5,a=-this.direction.dot(VE),o=nf.dot(this.direction),l=-nf.dot(VE),c=nf.lengthSq(),f=Math.abs(1-a*a),d,h,u,m;if(f>0)if(d=a*l-o,h=a*o-l,m=s*f,d>=0)if(h>=-m)if(h<=m){let _=1/f;d*=_,h*=_,u=d*(d+a*h+2*o)+h*(a*d+h+2*l)+c}else h=s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h=-s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;else h<=-m?(d=Math.max(0,-(-a*s+o)),h=d>0?-s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c):h<=m?(d=0,h=Math.min(Math.max(-s,-l),s),u=h*(h+2*l)+c):(d=Math.max(0,-(a*s+o)),h=d>0?s:Math.min(Math.max(-s,-l),s),u=-d*d+h*(h+2*l)+c);else h=a>0?-s:s,d=Math.max(0,-(a*h+o)),u=-d*d+h*(h+2*l)+c;return i&&i.copy(this.origin).addScaledVector(this.direction,d),r&&r.copy(rI).addScaledVector(VE,h),u}intersectSphere(e,t){Wl.subVectors(e.center,this.origin);let i=Wl.dot(this.direction),r=Wl.dot(Wl)-i*i,s=e.radius*e.radius;if(r>s)return null;let a=Math.sqrt(s-r),o=i-a,l=i+a;return l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return e.radius<0?!1:this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,s,a,o,l,c=1/this.direction.x,f=1/this.direction.y,d=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,r=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,r=(e.min.x-h.x)*c),f>=0?(s=(e.min.y-h.y)*f,a=(e.max.y-h.y)*f):(s=(e.max.y-h.y)*f,a=(e.min.y-h.y)*f),i>a||s>r||((s>i||isNaN(i))&&(i=s),(a=0?(o=(e.min.z-h.z)*d,l=(e.max.z-h.z)*d):(o=(e.max.z-h.z)*d,l=(e.min.z-h.z)*d),i>l||o>r)||((o>i||i!==i)&&(i=o),(l=0?i:r,t)}intersectsBox(e){return this.intersectBox(e,Wl)!==null}intersectTriangle(e,t,i,r,s){nI.subVectors(t,e),GE.subVectors(i,e),sI.crossVectors(nI,GE);let a=this.direction.dot(sI),o;if(a>0){if(r)return null;o=1}else if(a<0)o=-1,a=-a;else return null;nf.subVectors(this.origin,e);let l=o*this.direction.dot(GE.crossVectors(nf,GE));if(l<0)return null;let c=o*this.direction.dot(nI.cross(nf));if(c<0||l+c>a)return null;let f=-o*nf.dot(sI);return f<0?null:this.at(f/a,s)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},ds=class extends Wr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},d3=new li,Cd=new Qo,kE=new ys,h3=new re,WE=new re,HE=new re,zE=new re,aI=new re,XE=new re,u3=new re,YE=new re,ci=class extends er{constructor(e=new Qi,t=new ds){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.count=1,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){let t=this.geometry.morphAttributes,i=Object.keys(t);if(i.length>0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s(e.far-e.near)**2))&&(d3.copy(s).invert(),Cd.copy(e.ray).applyMatrix4(d3),!(i.boundingBox!==null&&Cd.intersectsBox(i.boundingBox)===!1)&&this._computeIntersections(e,t,Cd)))}_computeIntersections(e,t,i){let r,s=this.geometry,a=this.material,o=s.index,l=s.attributes.position,c=s.attributes.uv,f=s.attributes.uv1,d=s.attributes.normal,h=s.groups,u=s.drawRange;if(o!==null)if(Array.isArray(a))for(let m=0,_=h.length;m<_;m++){let p=h[m],g=a[p.materialIndex],v=Math.max(p.start,u.start),T=Math.min(o.count,Math.min(p.start+p.count,u.start+u.count));for(let S=v,E=T;S1)?null:t.copy(e.start).addScaledVector(r,a)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||mte.getNormalMatrix(e),r=this.coplanarPoint(cI).applyMatrix4(e),s=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(s),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}},Pd=new ys,pte=new It(.5,.5),qE=new re,Gu=class{constructor(e=new Ma,t=new Ma,i=new Ma,r=new Ma,s=new Ma,a=new Ma){this.planes=[e,t,i,r,s,a]}set(e,t,i,r,s,a){let o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(i),o[3].copy(r),o[4].copy(s),o[5].copy(a),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e,t=ao,i=!1){let r=this.planes,s=e.elements,a=s[0],o=s[1],l=s[2],c=s[3],f=s[4],d=s[5],h=s[6],u=s[7],m=s[8],_=s[9],p=s[10],g=s[11],v=s[12],T=s[13],S=s[14],E=s[15];if(r[0].setComponents(c-a,u-f,g-m,E-v).normalize(),r[1].setComponents(c+a,u+f,g+m,E+v).normalize(),r[2].setComponents(c+o,u+d,g+_,E+T).normalize(),r[3].setComponents(c-o,u-d,g-_,E-T).normalize(),i)r[4].setComponents(l,h,p,S).normalize(),r[5].setComponents(c-l,u-h,g-p,E-S).normalize();else if(r[4].setComponents(c-l,u-h,g-p,E-S).normalize(),t===ao)r[5].setComponents(c+l,u+h,g+p,E+S).normalize();else if(t===Du)r[5].setComponents(l,h,p,S).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),Pd.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),Pd.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(Pd)}intersectsSprite(e){Pd.center.set(0,0,0);let t=pte.distanceTo(e.center);return Pd.radius=.7071067811865476+t,Pd.applyMatrix4(e.matrixWorld),this.intersectsSphere(Pd)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let s=0;s<6;s++)if(t[s].distanceToPoint(i)0?e.max.x:e.min.x,qE.y=r.normal.y>0?e.max.y:e.min.y,qE.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(qE)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}},Vn=class extends Wr{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ht(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}},SS=new re,TS=new re,T3=new li,P_=new Qo,QE=new ys,fI=new re,A3=new re,$o=class extends er{constructor(e=new Qi,t=new Vn){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=t,this.morphTargetDictionary=void 0,this.morphTargetInfluences=void 0,this.updateMorphTargets()}copy(e,t){return super.copy(e,t),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){let e=this.geometry;if(e.index===null){let t=e.attributes.position,i=[0];for(let r=1,s=t.count;r0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0){let r=t[i[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=r.length;s0?1:-1,f.push(K.x,K.y,K.z),d.push(Y/R),d.push(1-J/M),V+=1}}for(let J=0;J0)&&u.push(T,S,A),(g!==i-1||l0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let i={};for(let r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},AS=class extends la{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},bn=class extends Wr{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ht(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ds=class extends bn{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new It(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return _i(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ht(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ht(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ht(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},Hd=class extends Wr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ht(16777215),this.specular=new ht(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},K_=class extends Wr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},xS=class extends Wr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=cB,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},RS=class extends Wr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Jo=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let a;i:{r:if(!(e=s)){let o=t[1];e=s)break t}a=i,i=0;break i}break e}for(;i>>1;et;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=i.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(Vt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(Vt("KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){let l=i[o];if(typeof l=="number"&&isNaN(l)){Vt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){Vt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&Lee(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){Vt("KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===nS,s=e.length-1,a=1;for(let o=1;o0){e[a]=e[s];for(let o=s*i,l=a*i,c=0;c!==i;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*i)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Ls.prototype.ValueTypeName="";Ls.prototype.TimeBufferType=Float32Array;Ls.prototype.ValueBufferType=Float32Array;Ls.prototype.DefaultInterpolation=Bd;Kl=class extends Ls{constructor(e,t,i){super(e,t,i)}};Kl.prototype.ValueTypeName="bool";Kl.prototype.ValueBufferType=Array;Kl.prototype.DefaultInterpolation=Fd;Kl.prototype.InterpolantFactoryMethodLinear=void 0;Kl.prototype.InterpolantFactoryMethodSmooth=void 0;Z_=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};Z_.prototype.ValueTypeName="color";el=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};el.prototype.ValueTypeName="number";yS=class extends Jo{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t),c=e*o;for(let f=c+o;c!==f;c+=4)nn.slerpFlat(s,0,a,c-o,a,c,l);return s}},tl=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new yS(this.times,this.values,this.getValueSize(),e)}};tl.prototype.ValueTypeName="quaternion";tl.prototype.InterpolantFactoryMethodSmooth=void 0;jl=class extends Ls{constructor(e,t,i){super(e,t,i)}};jl.prototype.ValueTypeName="string";jl.prototype.ValueBufferType=Array;jl.prototype.DefaultInterpolation=Fd;jl.prototype.InterpolantFactoryMethodLinear=void 0;jl.prototype.InterpolantFactoryMethodSmooth=void 0;il=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};il.prototype.ValueTypeName="vector";zd=class{constructor(e="",t=-1,i=[],r=AT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=oo(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let a=0,o=i.length;a!==o;++a)t.push(Tte(i[a]).scale(r));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=i.length;s!==a;++s)t.push(Ls.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let s=t.length,a=[];for(let o=0;o1){let d=f[1],h=r[d];h||(r[d]=h=[]),h.push(c)}}let a=[];for(let o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return a}static parseAnimation(e,t){if(Ct("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Vt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,h,u,m,_){if(u.length!==0){let p=[],g=[];RB(u,p,g,m),p.length!==0&&_.push(new d(h,p,g))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let d=0;d{t&&t(s),this.manager.itemEnd(e)},0);return}if(Hl[e]!==void 0){Hl[e].push({onLoad:t,onProgress:i,onError:r});return}Hl[e]=[],Hl[e].push({onLoad:t,onProgress:i,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&Ct("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=Hl[e],d=c.body.getReader(),h=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),u=h?parseInt(h):0,m=u!==0,_=0,p=new ReadableStream({start(g){v();function v(){d.read().then(({done:T,value:S})=>{if(T)g.close();else{_+=S.byteLength;let E=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:u});for(let A=0,R=f.length;A{g.error(T)})}}});return new Response(p)}else throw new gI(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(f=>new DOMParser().parseFromString(f,o));case"json":return c.json();default:if(o==="")return c.text();{let d=/charset="?([^;"\s]*)"?/i.exec(o),h=d&&d[1]?d[1].toLowerCase():void 0,u=new TextDecoder(h);return c.arrayBuffer().then(m=>u.decode(m))}}}).then(c=>{jo.add(`file:${e}`,c);let f=Hl[e];delete Hl[e];for(let d=0,h=f.length;d{let f=Hl[e];if(f===void 0)throw this.manager.itemError(e),c;delete Hl[e];for(let d=0,h=f.length;d{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Mu=new WeakMap,CS=class extends vn{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,a=jo.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let d=Mu.get(a);d===void 0&&(d=[],Mu.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=Lu("img");function l(){f(),t&&t(this);let d=Mu.get(this)||[];for(let h=0;h{hI.has(a)===!0?(r&&r(hI.get(a)),s.manager.itemError(e),s.manager.itemEnd(e)):(t&&t(c),s.manager.itemEnd(e))});return}setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);return}let o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){jo.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),hI.set(l,c),jo.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});jo.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Iu=-90,yu=1,PS=class extends er{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new gr(Iu,yu,e,t);r.layers=this.layers,this.add(r);let s=new gr(Iu,yu,e,t);s.layers=this.layers,this.add(s);let a=new gr(Iu,yu,e,t);a.layers=this.layers,this.add(a);let o=new gr(Iu,yu,e,t);o.layers=this.layers,this.add(o);let l=new gr(Iu,yu,e,t);l.layers=this.layers,this.add(l);let c=new gr(Iu,yu,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[i,r,s,a,o,l]=t;for(let c of t)this.remove(c);if(e===ao)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===Du)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,a,o,l,c,f]=this.children,d=e.getRenderTarget(),h=e.getActiveCubeFace(),u=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let _=i.texture.generateMipmaps;i.texture.generateMipmaps=!1;let p=!1;e.isWebGLRenderer===!0?p=e.state.buffers.depth.getReversed():p=e.reversedDepthBuffer,e.setRenderTarget(i,0,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,s),e.setRenderTarget(i,1,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,a),e.setRenderTarget(i,2,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,o),e.setRenderTarget(i,3,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,l),e.setRenderTarget(i,4,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,c),i.texture.generateMipmaps=_,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,h,u),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},DS=class extends gr{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},LS=class{constructor(e,t,i){this.binding=e,this.valueSize=i;let r,s,a;switch(t){case"quaternion":r=this._slerp,s=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case"string":case"bool":r=this._select,s=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:r=this._lerp,s=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=s,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let i=this.buffer,r=this.valueSize,s=e*r+r,a=this.cumulativeWeight;if(a===0){for(let o=0;o!==r;++o)i[s+o]=i[o];a=t}else{a+=t;let o=t/a;this._mixBufferRegion(i,s,0,o,r)}this.cumulativeWeight=a}accumulateAdditive(e){let t=this.buffer,i=this.valueSize,r=i*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,i=this.buffer,r=e*t+t,s=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s<1){let l=t*this._origIndex;this._mixBufferRegion(i,r,l,1-s,t)}a>0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,a=r;s!==a;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let a=0;a!==s;++a)e[t+a]=e[i+a]}_slerp(e,t,i,r){nn.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;nn.multiplyQuaternionsFlat(e,a,e,t,e,i),nn.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,i,r,s){let a=1-r;for(let o=0;o!==s;++o){let l=t+o;e[l]=e[l]*a+e[i+o]*r}}_lerpAdditive(e,t,i,r,s){for(let a=0;a!==s;++a){let o=t+a;e[o]=e[o]+e[i+a]*r}}},YI="\\[\\]\\.:\\/",Ate=new RegExp("["+YI+"]","g"),KI="[^"+YI+"]",xte="[^"+YI.replace("\\.","")+"]",Rte=/((?:WC+[\/:])*)/.source.replace("WC",KI),bte=/(WCOD+)?/.source.replace("WCOD",xte),Mte=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",KI),Ite=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",KI),yte=new RegExp("^"+Rte+bte+Mte+Ite+"$"),Cte=["material","materials","bones","map"],TI=class{constructor(e,t,i){let r=i||ar.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},ar=class n{constructor(e,t,i){this.path=t,this.parsedPath=i||n.parseTrackName(t),this.node=n.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new n.Composite(e,t,i):new n(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ate,"")}static parseTrackName(e){let t=yte.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);Cte.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let a=0;a0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case lB:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case AT:default:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,s=this._loopCount,a=i===oB;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===sB){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let o=Math.floor(r/t);r-=t*o,s+=Math.abs(o);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this._loopCount=s,this.time=r;if(a&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=Od,r.endingEnd=Od):(e?r.endingStart=this.zeroSlopeAtStart?Od:Ld:r.endingStart=O_,t?r.endingEnd=this.zeroSlopeAtEnd?Od:Ld:r.endingEnd=O_)}_scheduleFading(e,t,i){let r=this._mixer,s=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=s,l[0]=t,o[1]=s+e,l[1]=i,this}},Pte=new Float32Array(1),J_=class extends ya{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,a=e._propertyBindings,o=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName,f=c[l];f===void 0&&(f={},c[l]=f);for(let d=0;d!==s;++d){let h=r[d],u=h.name,m=f[u];if(m!==void 0)++m.referenceCount,a[d]=m;else{if(m=a[d],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,u));continue}let _=t&&t._propertyBindings[d].binding.parsedPath;m=new LS(ar.create(i,u,_),h.ValueTypeName,h.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,u),a[d]=m}o[d].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),a=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(r,e,s,a);let o=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)o[c].apply(a);return this}setTime(e){this.time=0;for(let t=0;tu.start-m.start);let h=0;for(let u=1;u0;T=e.get(T,S)}return T}function m(v){let T=!1,S=u(v);S===null?p(a,o):S&&S.isColor&&(p(S,1),T=!0);let E=n.xr.getEnvironmentBlendMode();E==="additive"?t.buffers.color.setClear(0,0,0,1,s):E==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||T)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function _(v,T){let S=u(T);S&&(S.isCubeTexture||S.mapping===ng)?(c===void 0&&(c=new ci(new cf(1,1,1),new la({name:"BackgroundCubeMaterial",uniforms:jd(ol.backgroundCube.uniforms),vertexShader:ol.backgroundCube.vertexShader,fragmentShader:ol.backgroundCube.fragmentShader,side:Mn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(E,A,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=S,c.material.uniforms.backgroundBlurriness.value=T.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(mne.makeRotationFromEuler(T.backgroundRotation)).transpose(),S.isCubeTexture&&S.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(jB),c.material.toneMapped=oi.getTransfer(S.colorSpace)!==Ji,(f!==S||d!==S.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):S&&S.isTexture&&(l===void 0&&(l=new ci(new Wd(2,2),new la({name:"BackgroundMaterial",uniforms:jd(ol.background.uniforms),vertexShader:ol.background.vertexShader,fragmentShader:ol.background.fragmentShader,side:aa,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=S,l.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,l.material.toneMapped=oi.getTransfer(S.colorSpace)!==Ji,S.matrixAutoUpdate===!0&&S.updateMatrix(),l.material.uniforms.uvTransform.value.copy(S.matrix),(f!==S||d!==S.version||h!==n.toneMapping)&&(l.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,T){v.getRGB(MT,XI(n)),t.buffers.color.setClear(MT.r,MT.g,MT.b,T,s)}function g(){c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0),l!==void 0&&(l.geometry.dispose(),l.material.dispose(),l=void 0)}return{getClearColor:function(){return a},setClearColor:function(v,T=1){a.set(v),o=T,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:_,dispose:g}}function _ne(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=h(null),s=r,a=!1;function o(D,w,G,O,N){let B=!1,V=d(D,O,G,w);s!==V&&(s=V,c(s.object)),B=u(D,O,G,N),B&&m(D,O,G,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,S(D,w,G,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(D){return n.bindVertexArray(D)}function f(D){return n.deleteVertexArray(D)}function d(D,w,G,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=D.isInstancedMesh===!0?D.id:0,Q=B[V];Q===void 0&&(Q={},B[V]=Q);let K=Q[G.id];K===void 0&&(K={},Q[G.id]=K);let J=K[N];return J===void 0&&(J=h(l()),K[N]=J),J}function h(D){let w=[],G=[],O=[];for(let N=0;N=0){let z=N[K],Y=B[K];if(Y===void 0&&(K==="instanceMatrix"&&D.instanceMatrix&&(Y=D.instanceMatrix),K==="instanceColor"&&D.instanceColor&&(Y=D.instanceColor)),z===void 0||z.attribute!==Y||Y&&z.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(D,w,G,O){let N={},B=w.attributes,V=0,Q=G.getAttributes();for(let K in Q)if(Q[K].location>=0){let z=B[K];z===void 0&&(K==="instanceMatrix"&&D.instanceMatrix&&(z=D.instanceMatrix),K==="instanceColor"&&D.instanceColor&&(z=D.instanceColor));let Y={};Y.attribute=z,z&&z.data&&(Y.data=z.data),N[K]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function _(){let D=s.newAttributes;for(let w=0,G=D.length;w=0){let J=N[Q];if(J===void 0&&(Q==="instanceMatrix"&&D.instanceMatrix&&(J=D.instanceMatrix),Q==="instanceColor"&&D.instanceColor&&(J=D.instanceColor)),J!==void 0){let z=J.normalized,Y=J.itemSize,de=e.get(J);if(de===void 0)continue;let ge=de.buffer,Ue=de.type,oe=de.bytesPerElement,ve=Ue===n.INT||Ue===n.UNSIGNED_INT||J.gpuType===VS;if(J.isInterleavedBufferAttribute){let ie=J.data,ue=ie.stride,Pe=J.offset;if(ie.isInstancedInterleavedBuffer){for(let me=0;me0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp",f=l(c);f!==c&&(Ct("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,h=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&h===!1&&Ct("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),T=n.getParameter(n.MAX_VARYING_VECTORS),S=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),E=n.getParameter(n.MAX_SAMPLES),A=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:h,maxTextures:u,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:p,maxAttributes:g,maxVertexUniforms:v,maxVaryings:T,maxFragmentUniforms:S,maxSamples:E,samples:A}}function Ene(n){let e=this,t=null,i=0,r=!1,s=!1,a=new Ma,o=new ri,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,h){let u=d.length!==0||h||i!==0||r;return r=h,i=d.length,u},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,h){t=f(d,h,0)},this.setState=function(d,h,u){let m=d.clippingPlanes,_=d.clipIntersection,p=d.clipShadows,g=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,T=v*4,S=g.clippingState||null;l.value=S,S=f(m,h,T,u);for(let E=0;E!==T;++E)S[E]=t[E];g.clippingState=S,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=v}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function f(d,h,u,m){let _=d!==null?d.length:0,p=null;if(_!==0){if(p=l.value,m!==!0||p===null){let g=u+_*4,v=h.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.lengthn-gf?l=bB[a-n+gf-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,h=[f,f,d,f,d,d,f,f,d,d,f,d],u=6,m=6,_=3,p=2,g=1,v=new Float32Array(_*m*u),T=new Float32Array(p*m*u),S=new Float32Array(g*m*u);for(let A=0;A2?0:-1,y=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];v.set(y,_*m*A),T.set(h,p*m*A);let C=[A,A,A,A,A,A];S.set(C,g*m*A)}let E=new Qi;E.setAttribute("position",new vr(v,_)),E.setAttribute("uv",new vr(T,p)),E.setAttribute("faceIndex",new vr(S,g)),i.push(new ci(E,null)),r>gf&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function IB(n,e,t){let i=new oa(n,e,t);return i.texture.mapping=ng,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Ju(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function xne(n,e,t){return new la({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:Sne,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:PT(),fragmentShader:` +}`,la=class extends Wr{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=gte,this.fragmentShader=vte,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=jd(e.uniforms),this.uniformsGroups=_te(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this.defaultAttributeValues=Object.assign({},e.defaultAttributeValues),this.index0AttributeName=e.index0AttributeName,this.uniformsNeedUpdate=e.uniformsNeedUpdate,this}toJSON(e){let t=super.toJSON(e);t.glslVersion=this.glslVersion,t.uniforms={};for(let r in this.uniforms){let a=this.uniforms[r].value;a&&a.isTexture?t.uniforms[r]={type:"t",value:a.toJSON(e).uuid}:a&&a.isColor?t.uniforms[r]={type:"c",value:a.getHex()}:a&&a.isVector2?t.uniforms[r]={type:"v2",value:a.toArray()}:a&&a.isVector3?t.uniforms[r]={type:"v3",value:a.toArray()}:a&&a.isVector4?t.uniforms[r]={type:"v4",value:a.toArray()}:a&&a.isMatrix3?t.uniforms[r]={type:"m3",value:a.toArray()}:a&&a.isMatrix4?t.uniforms[r]={type:"m4",value:a.toArray()}:t.uniforms[r]={value:a}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let i={};for(let r in this.extensions)this.extensions[r]===!0&&(i[r]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},xS=class extends la{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}},bn=class extends Wr{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ht(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ds=class extends bn{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new It(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return _i(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ht(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ht(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ht(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},Hd=class extends Wr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ht(16777215),this.specular=new ht(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},K_=class extends Wr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=$u,this.normalScale=new It(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new lo,this.combine=rg,this.reflectivity=1,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},RS=class extends Wr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=cB,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},bS=class extends Wr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};Jo=class{constructor(e,t,i,r){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(i),this.sampleValues=t,this.valueSize=i,this.settings=null,this.DefaultSettings_={}}evaluate(e){let t=this.parameterPositions,i=this._cachedIndex,r=t[i],s=t[i-1];e:{t:{let a;i:{r:if(!(e=s)){let o=t[1];e=s)break t}a=i,i=0;break i}break e}for(;i>>1;et;)--a;if(++a,s!==0||a!==r){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=i.slice(s,a),this.values=this.values.slice(s*o,a*o)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!==0&&(Vt("KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,s=i.length;s===0&&(Vt("KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let o=0;o!==s;o++){let l=i[o];if(typeof l=="number"&&isNaN(l)){Vt("KeyframeTrack: Time is not a valid number.",this,o,l),e=!1;break}if(a!==null&&a>l){Vt("KeyframeTrack: Out of order keys.",this,o,l,a),e=!1;break}a=l}if(r!==void 0&&Lee(r))for(let o=0,l=r.length;o!==l;++o){let c=r[o];if(isNaN(c)){Vt("KeyframeTrack: Value is not a valid number.",this,o,c),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),i=this.getValueSize(),r=this.getInterpolation()===sS,s=e.length-1,a=1;for(let o=1;o0){e[a]=e[s];for(let o=s*i,l=a*i,c=0;c!==i;++c)t[l+c]=t[o+c];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*i)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),i=this.constructor,r=new i(this.name,e,t);return r.createInterpolant=this.createInterpolant,r}};Ls.prototype.ValueTypeName="";Ls.prototype.TimeBufferType=Float32Array;Ls.prototype.ValueBufferType=Float32Array;Ls.prototype.DefaultInterpolation=Bd;Kl=class extends Ls{constructor(e,t,i){super(e,t,i)}};Kl.prototype.ValueTypeName="bool";Kl.prototype.ValueBufferType=Array;Kl.prototype.DefaultInterpolation=Fd;Kl.prototype.InterpolantFactoryMethodLinear=void 0;Kl.prototype.InterpolantFactoryMethodSmooth=void 0;Z_=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};Z_.prototype.ValueTypeName="color";el=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};el.prototype.ValueTypeName="number";CS=class extends Jo{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,l=(i-t)/(r-t),c=e*o;for(let f=c+o;c!==f;c+=4)nn.slerpFlat(s,0,a,c-o,a,c,l);return s}},tl=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}InterpolantFactoryMethodLinear(e){return new CS(this.times,this.values,this.getValueSize(),e)}};tl.prototype.ValueTypeName="quaternion";tl.prototype.InterpolantFactoryMethodSmooth=void 0;jl=class extends Ls{constructor(e,t,i){super(e,t,i)}};jl.prototype.ValueTypeName="string";jl.prototype.ValueBufferType=Array;jl.prototype.DefaultInterpolation=Fd;jl.prototype.InterpolantFactoryMethodLinear=void 0;jl.prototype.InterpolantFactoryMethodSmooth=void 0;il=class extends Ls{constructor(e,t,i,r){super(e,t,i,r)}};il.prototype.ValueTypeName="vector";zd=class{constructor(e="",t=-1,i=[],r=xT){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=oo(),this.userData={},this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let a=0,o=i.length;a!==o;++a)t.push(Tte(i[a]).scale(r));let s=new this(e.name,e.duration,t,e.blendMode);return s.uuid=e.uuid,s.userData=JSON.parse(e.userData||"{}"),s}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode,userData:JSON.stringify(e.userData)};for(let s=0,a=i.length;s!==a;++s)t.push(Ls.toJSON(i[s]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let s=t.length,a=[];for(let o=0;o1){let d=f[1],h=r[d];h||(r[d]=h=[]),h.push(c)}}let a=[];for(let o in r)a.push(this.CreateFromMorphTargetSequence(o,r[o],t,i));return a}static parseAnimation(e,t){if(Ct("AnimationClip: parseAnimation() is deprecated and will be removed with r185"),!e)return Vt("AnimationClip: No animation in JSONLoader data."),null;let i=function(d,h,u,m,_){if(u.length!==0){let p=[],g=[];RB(u,p,g,m),p.length!==0&&_.push(new d(h,p,g))}},r=[],s=e.name||"default",a=e.fps||30,o=e.blendMode,l=e.length||-1,c=e.hierarchy||[];for(let d=0;d{t&&t(s),this.manager.itemEnd(e)},0);return}if(Hl[e]!==void 0){Hl[e].push({onLoad:t,onProgress:i,onError:r});return}Hl[e]=[],Hl[e].push({onLoad:t,onProgress:i,onError:r});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin",signal:typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal}),o=this.mimeType,l=this.responseType;fetch(a).then(c=>{if(c.status===200||c.status===0){if(c.status===0&&Ct("FileLoader: HTTP Status 0 received."),typeof ReadableStream=="undefined"||c.body===void 0||c.body.getReader===void 0)return c;let f=Hl[e],d=c.body.getReader(),h=c.headers.get("X-File-Size")||c.headers.get("Content-Length"),u=h?parseInt(h):0,m=u!==0,_=0,p=new ReadableStream({start(g){v();function v(){d.read().then(({done:T,value:S})=>{if(T)g.close();else{_+=S.byteLength;let E=new ProgressEvent("progress",{lengthComputable:m,loaded:_,total:u});for(let A=0,R=f.length;A{g.error(T)})}}});return new Response(p)}else throw new gI(`fetch for "${c.url}" responded with ${c.status}: ${c.statusText}`,c)}).then(c=>{switch(l){case"arraybuffer":return c.arrayBuffer();case"blob":return c.blob();case"document":return c.text().then(f=>new DOMParser().parseFromString(f,o));case"json":return c.json();default:if(o==="")return c.text();{let d=/charset="?([^;"\s]*)"?/i.exec(o),h=d&&d[1]?d[1].toLowerCase():void 0,u=new TextDecoder(h);return c.arrayBuffer().then(m=>u.decode(m))}}}).then(c=>{jo.add(`file:${e}`,c);let f=Hl[e];delete Hl[e];for(let d=0,h=f.length;d{let f=Hl[e];if(f===void 0)throw this.manager.itemError(e),c;delete Hl[e];for(let d=0,h=f.length;d{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Mu=new WeakMap,PS=class extends vn{constructor(e){super(e)}load(e,t,i,r){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);let s=this,a=jo.get(`image:${e}`);if(a!==void 0){if(a.complete===!0)s.manager.itemStart(e),setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);else{let d=Mu.get(a);d===void 0&&(d=[],Mu.set(a,d)),d.push({onLoad:t,onError:r})}return a}let o=Lu("img");function l(){f(),t&&t(this);let d=Mu.get(this)||[];for(let h=0;h{hI.has(a)===!0?(r&&r(hI.get(a)),s.manager.itemError(e),s.manager.itemEnd(e)):(t&&t(c),s.manager.itemEnd(e))});return}setTimeout(function(){t&&t(a),s.manager.itemEnd(e)},0);return}let o={};o.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",o.headers=this.requestHeader,o.signal=typeof AbortSignal.any=="function"?AbortSignal.any([this._abortController.signal,this.manager.abortController.signal]):this._abortController.signal;let l=fetch(e,o).then(function(c){return c.blob()}).then(function(c){return createImageBitmap(c,Object.assign(s.options,{colorSpaceConversion:"none"}))}).then(function(c){jo.add(`image-bitmap:${e}`,c),t&&t(c),s.manager.itemEnd(e)}).catch(function(c){r&&r(c),hI.set(l,c),jo.remove(`image-bitmap:${e}`),s.manager.itemError(e),s.manager.itemEnd(e)});jo.add(`image-bitmap:${e}`,l),s.manager.itemStart(e)}abort(){return this._abortController.abort(),this._abortController=new AbortController,this}},Iu=-90,yu=1,DS=class extends er{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i,this.coordinateSystem=null,this.activeMipmapLevel=0;let r=new gr(Iu,yu,e,t);r.layers=this.layers,this.add(r);let s=new gr(Iu,yu,e,t);s.layers=this.layers,this.add(s);let a=new gr(Iu,yu,e,t);a.layers=this.layers,this.add(a);let o=new gr(Iu,yu,e,t);o.layers=this.layers,this.add(o);let l=new gr(Iu,yu,e,t);l.layers=this.layers,this.add(l);let c=new gr(Iu,yu,e,t);c.layers=this.layers,this.add(c)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[i,r,s,a,o,l]=t;for(let c of t)this.remove(c);if(e===ao)i.up.set(0,1,0),i.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),s.up.set(0,0,-1),s.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),o.up.set(0,1,0),o.lookAt(0,0,1),l.up.set(0,1,0),l.lookAt(0,0,-1);else if(e===Du)i.up.set(0,-1,0),i.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),s.up.set(0,0,1),s.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),o.up.set(0,-1,0),o.lookAt(0,0,1),l.up.set(0,-1,0),l.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let c of t)this.add(c),c.updateMatrixWorld()}update(e,t){this.parent===null&&this.updateMatrixWorld();let{renderTarget:i,activeMipmapLevel:r}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[s,a,o,l,c,f]=this.children,d=e.getRenderTarget(),h=e.getActiveCubeFace(),u=e.getActiveMipmapLevel(),m=e.xr.enabled;e.xr.enabled=!1;let _=i.texture.generateMipmaps;i.texture.generateMipmaps=!1;let p=!1;e.isWebGLRenderer===!0?p=e.state.buffers.depth.getReversed():p=e.reversedDepthBuffer,e.setRenderTarget(i,0,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,s),e.setRenderTarget(i,1,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,a),e.setRenderTarget(i,2,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,o),e.setRenderTarget(i,3,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,l),e.setRenderTarget(i,4,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,c),i.texture.generateMipmaps=_,e.setRenderTarget(i,5,r),p&&e.autoClear===!1&&e.clearDepth(),e.render(t,f),e.setRenderTarget(d,h,u),e.xr.enabled=m,i.texture.needsPMREMUpdate=!0}},LS=class extends gr{constructor(e=[]){super(),this.isArrayCamera=!0,this.isMultiViewCamera=!1,this.cameras=e}},OS=class{constructor(e,t,i){this.binding=e,this.valueSize=i;let r,s,a;switch(t){case"quaternion":r=this._slerp,s=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(i*6),this._workIndex=5;break;case"string":case"bool":r=this._select,s=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(i*5);break;default:r=this._lerp,s=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(i*5)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=s,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,t){let i=this.buffer,r=this.valueSize,s=e*r+r,a=this.cumulativeWeight;if(a===0){for(let o=0;o!==r;++o)i[s+o]=i[o];a=t}else{a+=t;let o=t/a;this._mixBufferRegion(i,s,0,o,r)}this.cumulativeWeight=a}accumulateAdditive(e){let t=this.buffer,i=this.valueSize,r=i*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,e,i),this.cumulativeWeightAdditive+=e}apply(e){let t=this.valueSize,i=this.buffer,r=e*t+t,s=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,s<1){let l=t*this._origIndex;this._mixBufferRegion(i,r,l,1-s,t)}a>0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let l=t,c=t+t;l!==c;++l)if(i[l]!==i[l+t]){o.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let s=i,a=r;s!==a;++s)t[s]=t[r+s%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let a=0;a!==s;++a)e[t+a]=e[i+a]}_slerp(e,t,i,r){nn.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,s){let a=this._workIndex*s;nn.multiplyQuaternionsFlat(e,a,e,t,e,i),nn.slerpFlat(e,t,e,t,e,a,r)}_lerp(e,t,i,r,s){let a=1-r;for(let o=0;o!==s;++o){let l=t+o;e[l]=e[l]*a+e[i+o]*r}}_lerpAdditive(e,t,i,r,s){for(let a=0;a!==s;++a){let o=t+a;e[o]=e[o]+e[i+a]*r}}},YI="\\[\\]\\.:\\/",Ate=new RegExp("["+YI+"]","g"),KI="[^"+YI+"]",xte="[^"+YI.replace("\\.","")+"]",Rte=/((?:WC+[\/:])*)/.source.replace("WC",KI),bte=/(WCOD+)?/.source.replace("WCOD",xte),Mte=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",KI),Ite=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",KI),yte=new RegExp("^"+Rte+bte+Mte+Ite+"$"),Cte=["material","materials","bones","map"],TI=class{constructor(e,t,i){let r=i||ar.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];r!==void 0&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,s=i.length;r!==s;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},ar=class n{constructor(e,t,i){this.path=t,this.parsedPath=i||n.parseTrackName(t),this.node=n.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new n.Composite(e,t,i):new n(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(Ate,"")}static parseTrackName(e){let t=yte.exec(e);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){let s=i.nodeName.substring(r+1);Cte.indexOf(s)!==-1&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=s)}if(i.propertyName===null||i.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(t===void 0||t===""||t==="."||t===-1||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(i!==void 0)return i}if(e.children){let i=function(s){for(let a=0;a0){let l=this._interpolants,c=this._propertyBindings;switch(this.blendMode){case lB:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulateAdditive(o);break;case xT:default:for(let f=0,d=l.length;f!==d;++f)l[f].evaluate(a),c[f].accumulate(r,o)}}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(i!==null){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,s=this._loopCount,a=i===oB;if(e===0)return s===-1?r:a&&(s&1)===1?t-r:r;if(i===sB){s===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break e}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(s===-1&&(e>=0?(s=0,this._setEndings(!0,this.repetitions===0,a)):this._setEndings(this.repetitions===0,!0,a)),r>=t||r<0){let o=Math.floor(r/t);r-=t*o,s+=Math.abs(o);let l=this.repetitions-s;if(l<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(l===1){let c=e<0;this._setEndings(c,!c,a)}else this._setEndings(!1,!1,a);this._loopCount=s,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:o})}}else this._loopCount=s,this.time=r;if(a&&(s&1)===1)return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=Od,r.endingEnd=Od):(e?r.endingStart=this.zeroSlopeAtStart?Od:Ld:r.endingStart=O_,t?r.endingEnd=this.zeroSlopeAtEnd?Od:Ld:r.endingEnd=O_)}_scheduleFading(e,t,i){let r=this._mixer,s=r.time,a=this._weightInterpolant;a===null&&(a=r._lendControlInterpolant(),this._weightInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=s,l[0]=t,o[1]=s+e,l[1]=i,this}},Pte=new Float32Array(1),J_=class extends ya{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,s=r.length,a=e._propertyBindings,o=e._interpolants,l=i.uuid,c=this._bindingsByRootAndName,f=c[l];f===void 0&&(f={},c[l]=f);for(let d=0;d!==s;++d){let h=r[d],u=h.name,m=f[u];if(m!==void 0)++m.referenceCount,a[d]=m;else{if(m=a[d],m!==void 0){m._cacheIndex===null&&(++m.referenceCount,this._addInactiveBinding(m,l,u));continue}let _=t&&t._propertyBindings[d].binding.parsedPath;m=new OS(ar.create(i,u,_),h.ValueTypeName,h.getValueSize()),++m.referenceCount,this._addInactiveBinding(m,l,u),a[d]=m}o[d].resultBuffer=m.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){let i=(e._localRoot||this._root).uuid,r=e._clip.uuid,s=this._actionsByClip[r];this._bindAction(e,s&&s.knownActions[0]),this._addInactiveAction(e,r,i)}let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];s.useCount++===0&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let i=0,r=t.length;i!==r;++i){let s=t[i];--s.useCount===0&&(s.restoreOriginalState(),this._takeBackBinding(s))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return t!==null&&t=0;--i)e[i].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,s=Math.sign(e),a=this._accuIndex^=1;for(let c=0;c!==i;++c)t[c]._update(r,e,s,a);let o=this._bindings,l=this._nActiveBindings;for(let c=0;c!==l;++c)o[c].apply(a);return this}setTime(e){this.time=0;for(let t=0;tu.start-m.start);let h=0;for(let u=1;u0;T=e.get(T,S)}return T}function m(v){let T=!1,S=u(v);S===null?p(a,o):S&&S.isColor&&(p(S,1),T=!0);let E=n.xr.getEnvironmentBlendMode();E==="additive"?t.buffers.color.setClear(0,0,0,1,s):E==="alpha-blend"&&t.buffers.color.setClear(0,0,0,0,s),(n.autoClear||T)&&(t.buffers.depth.setTest(!0),t.buffers.depth.setMask(!0),t.buffers.color.setMask(!0),n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil))}function _(v,T){let S=u(T);S&&(S.isCubeTexture||S.mapping===ng)?(c===void 0&&(c=new ci(new cf(1,1,1),new la({name:"BackgroundCubeMaterial",uniforms:jd(ol.backgroundCube.uniforms),vertexShader:ol.backgroundCube.vertexShader,fragmentShader:ol.backgroundCube.fragmentShader,side:Mn,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(E,A,R){this.matrixWorld.copyPosition(R.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=S,c.material.uniforms.backgroundBlurriness.value=T.backgroundBlurriness,c.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,c.material.uniforms.backgroundRotation.value.setFromMatrix4(mne.makeRotationFromEuler(T.backgroundRotation)).transpose(),S.isCubeTexture&&S.isRenderTargetTexture===!1&&c.material.uniforms.backgroundRotation.value.premultiply(jB),c.material.toneMapped=oi.getTransfer(S.colorSpace)!==Ji,(f!==S||d!==S.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),c.layers.enableAll(),v.unshift(c,c.geometry,c.material,0,0,null)):S&&S.isTexture&&(l===void 0&&(l=new ci(new Wd(2,2),new la({name:"BackgroundMaterial",uniforms:jd(ol.background.uniforms),vertexShader:ol.background.vertexShader,fragmentShader:ol.background.fragmentShader,side:aa,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=S,l.material.uniforms.backgroundIntensity.value=T.backgroundIntensity,l.material.toneMapped=oi.getTransfer(S.colorSpace)!==Ji,S.matrixAutoUpdate===!0&&S.updateMatrix(),l.material.uniforms.uvTransform.value.copy(S.matrix),(f!==S||d!==S.version||h!==n.toneMapping)&&(l.material.needsUpdate=!0,f=S,d=S.version,h=n.toneMapping),l.layers.enableAll(),v.unshift(l,l.geometry,l.material,0,0,null))}function p(v,T){v.getRGB(IT,XI(n)),t.buffers.color.setClear(IT.r,IT.g,IT.b,T,s)}function g(){c!==void 0&&(c.geometry.dispose(),c.material.dispose(),c=void 0),l!==void 0&&(l.geometry.dispose(),l.material.dispose(),l=void 0)}return{getClearColor:function(){return a},setClearColor:function(v,T=1){a.set(v),o=T,p(a,o)},getClearAlpha:function(){return o},setClearAlpha:function(v){o=v,p(a,o)},render:m,addToRenderList:_,dispose:g}}function _ne(n,e){let t=n.getParameter(n.MAX_VERTEX_ATTRIBS),i={},r=h(null),s=r,a=!1;function o(D,w,G,O,N){let B=!1,V=d(D,O,G,w);s!==V&&(s=V,c(s.object)),B=u(D,O,G,N),B&&m(D,O,G,N),N!==null&&e.update(N,n.ELEMENT_ARRAY_BUFFER),(B||a)&&(a=!1,S(D,w,G,O),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,e.get(N).buffer))}function l(){return n.createVertexArray()}function c(D){return n.bindVertexArray(D)}function f(D){return n.deleteVertexArray(D)}function d(D,w,G,O){let N=O.wireframe===!0,B=i[w.id];B===void 0&&(B={},i[w.id]=B);let V=D.isInstancedMesh===!0?D.id:0,Q=B[V];Q===void 0&&(Q={},B[V]=Q);let K=Q[G.id];K===void 0&&(K={},Q[G.id]=K);let J=K[N];return J===void 0&&(J=h(l()),K[N]=J),J}function h(D){let w=[],G=[],O=[];for(let N=0;N=0){let z=N[K],Y=B[K];if(Y===void 0&&(K==="instanceMatrix"&&D.instanceMatrix&&(Y=D.instanceMatrix),K==="instanceColor"&&D.instanceColor&&(Y=D.instanceColor)),z===void 0||z.attribute!==Y||Y&&z.data!==Y.data)return!0;V++}return s.attributesNum!==V||s.index!==O}function m(D,w,G,O){let N={},B=w.attributes,V=0,Q=G.getAttributes();for(let K in Q)if(Q[K].location>=0){let z=B[K];z===void 0&&(K==="instanceMatrix"&&D.instanceMatrix&&(z=D.instanceMatrix),K==="instanceColor"&&D.instanceColor&&(z=D.instanceColor));let Y={};Y.attribute=z,z&&z.data&&(Y.data=z.data),N[K]=Y,V++}s.attributes=N,s.attributesNum=V,s.index=O}function _(){let D=s.newAttributes;for(let w=0,G=D.length;w=0){let J=N[Q];if(J===void 0&&(Q==="instanceMatrix"&&D.instanceMatrix&&(J=D.instanceMatrix),Q==="instanceColor"&&D.instanceColor&&(J=D.instanceColor)),J!==void 0){let z=J.normalized,Y=J.itemSize,de=e.get(J);if(de===void 0)continue;let ge=de.buffer,Ue=de.type,oe=de.bytesPerElement,ve=Ue===n.INT||Ue===n.UNSIGNED_INT||J.gpuType===GS;if(J.isInterleavedBufferAttribute){let ie=J.data,ue=ie.stride,Pe=J.offset;if(ie.isInstancedInterleavedBuffer){for(let me=0;me0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";R="mediump"}return R==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let c=t.precision!==void 0?t.precision:"highp",f=l(c);f!==c&&(Ct("WebGLRenderer:",c,"not supported, using",f,"instead."),c=f);let d=t.logarithmicDepthBuffer===!0,h=t.reversedDepthBuffer===!0&&e.has("EXT_clip_control");t.reversedDepthBuffer===!0&&h===!1&&Ct("WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.");let u=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),_=n.getParameter(n.MAX_TEXTURE_SIZE),p=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),v=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),T=n.getParameter(n.MAX_VARYING_VECTORS),S=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),E=n.getParameter(n.MAX_SAMPLES),A=n.getParameter(n.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:s,getMaxPrecision:l,textureFormatReadable:a,textureTypeReadable:o,precision:c,logarithmicDepthBuffer:d,reversedDepthBuffer:h,maxTextures:u,maxVertexTextures:m,maxTextureSize:_,maxCubemapSize:p,maxAttributes:g,maxVertexUniforms:v,maxVaryings:T,maxFragmentUniforms:S,maxSamples:E,samples:A}}function Ene(n){let e=this,t=null,i=0,r=!1,s=!1,a=new Ma,o=new ri,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(d,h){let u=d.length!==0||h||i!==0||r;return r=h,i=d.length,u},this.beginShadows=function(){s=!0,f(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(d,h){t=f(d,h,0)},this.setState=function(d,h,u){let m=d.clippingPlanes,_=d.clipIntersection,p=d.clipShadows,g=n.get(d);if(!r||m===null||m.length===0||s&&!p)s?f(null):c();else{let v=s?0:i,T=v*4,S=g.clippingState||null;l.value=S,S=f(m,h,T,u);for(let E=0;E!==T;++E)S[E]=t[E];g.clippingState=S,this.numIntersection=_?this.numPlanes:0,this.numPlanes+=v}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function f(d,h,u,m){let _=d!==null?d.length:0,p=null;if(_!==0){if(p=l.value,m!==!0||p===null){let g=u+_*4,v=h.matrixWorldInverse;o.getNormalMatrix(v),(p===null||p.lengthn-gf?l=bB[a-n+gf-1]:a===0&&(l=0),t.push(l);let c=1/(o-2),f=-c,d=1+c,h=[f,f,d,f,d,d,f,f,d,d,f,d],u=6,m=6,_=3,p=2,g=1,v=new Float32Array(_*m*u),T=new Float32Array(p*m*u),S=new Float32Array(g*m*u);for(let A=0;A2?0:-1,y=[R,M,0,R+2/3,M,0,R+2/3,M+1,0,R,M,0,R+2/3,M+1,0,R,M+1,0];v.set(y,_*m*A),T.set(h,p*m*A);let C=[A,A,A,A,A,A];S.set(C,g*m*A)}let E=new Qi;E.setAttribute("position",new vr(v,_)),E.setAttribute("uv",new vr(T,p)),E.setAttribute("faceIndex",new vr(S,g)),i.push(new ci(E,null)),r>gf&&r--}return{lodMeshes:i,sizeLods:e,sigmas:t}}function IB(n,e,t){let i=new oa(n,e,t);return i.texture.mapping=ng,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Ju(n,e,t,i,r){n.viewport.set(e,t,i,r),n.scissor.set(e,t,i,r)}function xne(n,e,t){return new la({name:"PMREMGGXConvolution",defines:{GGX_SAMPLES:Sne,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:DT(),fragmentShader:` precision highp float; precision highp int; @@ -108,7 +108,7 @@ gl_FragColor = vec4(prefilteredColor, 1.0); } - `,blending:nl,depthTest:!1,depthWrite:!1})}function Rne(n,e,t){let i=new Float32Array(Zd),r=new re(0,1,0);return new la({name:"SphericalGaussianBlur",defines:{n:Zd,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:PT(),fragmentShader:` + `,blending:nl,depthTest:!1,depthWrite:!1})}function Rne(n,e,t){let i=new Float32Array(Zd),r=new re(0,1,0);return new la({name:"SphericalGaussianBlur",defines:{n:Zd,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${n}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:DT(),fragmentShader:` precision mediump float; precision mediump int; @@ -168,7 +168,7 @@ } } - `,blending:nl,depthTest:!1,depthWrite:!1})}function yB(){return new la({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:PT(),fragmentShader:` + `,blending:nl,depthTest:!1,depthWrite:!1})}function yB(){return new la({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:DT(),fragmentShader:` precision mediump float; precision mediump int; @@ -187,7 +187,7 @@ gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); } - `,blending:nl,depthTest:!1,depthWrite:!1})}function CB(){return new la({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:PT(),fragmentShader:` + `,blending:nl,depthTest:!1,depthWrite:!1})}function CB(){return new la({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:DT(),fragmentShader:` precision mediump float; precision mediump int; @@ -203,7 +203,7 @@ gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); } - `,blending:nl,depthTest:!1,depthWrite:!1})}function PT(){return` + `,blending:nl,depthTest:!1,depthWrite:!1})}function DT(){return` precision mediump float; precision mediump int; @@ -258,7 +258,7 @@ gl_Position = vec4( position, 1.0 ); } - `}function bne(n){let e=new WeakMap,t=new WeakMap,i=null;function r(h,u=!1){return h==null?null:u?a(h):s(h)}function s(h){if(h&&h.isTexture){let u=h.mapping;if(u===FS||u===BS)if(e.has(h)){let m=e.get(h).texture;return o(m,h.mapping)}else{let m=h.image;if(m&&m.height>0){let _=new yT(m.height);return _.fromEquirectangularTexture(n,h),e.set(h,_),h.addEventListener("dispose",c),o(_.texture,h.mapping)}else return null}}return h}function a(h){if(h&&h.isTexture){let u=h.mapping,m=u===FS||u===BS,_=u===mf||u===Yd;if(m||_){let p=t.get(h),g=p!==void 0?p.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==g)return i===null&&(i=new tm(n)),p=m?i.fromEquirectangular(h,p):i.fromCubemap(h,p),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),p.texture;if(p!==void 0)return p.texture;{let v=h.image;return m&&v&&v.height>0||_&&v&&l(v)?(i===null&&(i=new tm(n)),p=m?i.fromEquirectangular(h):i.fromCubemap(h),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),h.addEventListener("dispose",f),p.texture):null}}}return h}function o(h,u){return u===FS?h.mapping=mf:u===BS&&(h.mapping=Yd),h}function l(h){let u=0,m=6;for(let _=0;_=65535?U_:B_)(h,1);p.version=_;let g=s.get(d);g&&e.remove(g),s.set(d,p)}function f(d){let h=s.get(d);if(h){let u=d.index;u!==null&&h.versione.maxTextureSize&&(E=Math.ceil(S/e.maxTextureSize),S=e.maxTextureSize);let A=new Float32Array(S*E*4*d),R=new F_(A,S,E,d);R.type=ca,R.needsUpdate=!0;let M=T*4;for(let C=0;C0){let _=new CT(m.height);return _.fromEquirectangularTexture(n,h),e.set(h,_),h.addEventListener("dispose",c),o(_.texture,h.mapping)}else return null}}return h}function a(h){if(h&&h.isTexture){let u=h.mapping,m=u===BS||u===US,_=u===mf||u===Yd;if(m||_){let p=t.get(h),g=p!==void 0?p.texture.pmremVersion:0;if(h.isRenderTargetTexture&&h.pmremVersion!==g)return i===null&&(i=new tm(n)),p=m?i.fromEquirectangular(h,p):i.fromCubemap(h,p),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),p.texture;if(p!==void 0)return p.texture;{let v=h.image;return m&&v&&v.height>0||_&&v&&l(v)?(i===null&&(i=new tm(n)),p=m?i.fromEquirectangular(h):i.fromCubemap(h),p.texture.pmremVersion=h.pmremVersion,t.set(h,p),h.addEventListener("dispose",f),p.texture):null}}}return h}function o(h,u){return u===BS?h.mapping=mf:u===US&&(h.mapping=Yd),h}function l(h){let u=0,m=6;for(let _=0;_=65535?U_:B_)(h,1);p.version=_;let g=s.get(d);g&&e.remove(g),s.set(d,p)}function f(d){let h=s.get(d);if(h){let u=d.index;u!==null&&h.versione.maxTextureSize&&(E=Math.ceil(S/e.maxTextureSize),S=e.maxTextureSize);let A=new Float32Array(S*E*4*d),R=new F_(A,S,E,d);R.type=ca,R.needsUpdate=!0;let M=T*4;for(let C=0;C0&&p[0].isRenderPass===!0;let T=s.width,S=s.height;for(let E=0;E0)return n;let r=e*t,s=PB[r];if(s===void 0&&(s=new Float32Array(r),PB[r]=s),e!==0){i.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,n[a].toArray(s,o)}return s}function sn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0&&p[0].isRenderPass===!0;let T=s.width,S=s.height;for(let E=0;E0)return n;let r=e*t,s=PB[r];if(s===void 0&&(s=new Float32Array(r),PB[r]=s),e!==0){i.toArray(s,0);for(let a=1,o=0;a!==e;++a)o+=t,n[a].toArray(s,o)}return s}function sn(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t":" "} ${o}: ${t[a]}`)}return i.join(` `)}function Rse(n){oi._getMatrix(BB,oi.workingColorSpace,n);let e=`mat3( ${BB.elements.map(t=>t.toFixed(4))} )`;switch(oi.getTransfer(n)){case N_:return[e,"LinearTransferOETF"];case Ji:return[e,"sRGBTransferOETF"];default:return Ct("WebGLProgram: Unsupported color space: ",n),[e,"LinearTransferOETF"]}}function UB(n,e,t){let i=n.getShaderParameter(e,n.COMPILE_STATUS),s=(n.getShaderInfoLog(e)||"").trim();if(i&&s==="")return"";let a=/ERROR: 0:(\d+)/.exec(s);if(a){let o=parseInt(a[1]);return t.toUpperCase()+` `+s+` `+xse(n.getShaderSource(e),o)}else return s}function bse(n,e){let t=Rse(e);return[`vec4 ${n}( vec4 value ) {`,` return ${t[1]}( vec4( value.rgb * ${t[0]}, value.a ) );`,"}"].join(` -`)}function Ise(n,e){let t=Mse[e];return t===void 0?(Ct("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+n+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function yse(){oi.getLuminanceCoefficients(IT);let n=IT.x.toFixed(4),e=IT.y.toFixed(4),t=IT.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` +`)}function Ise(n,e){let t=Mse[e];return t===void 0?(Ct("WebGLProgram: Unsupported toneMapping:",e),"vec3 "+n+"( vec3 color ) { return LinearToneMapping( color ); }"):"vec3 "+n+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function yse(){oi.getLuminanceCoefficients(yT);let n=yT.x.toFixed(4),e=yT.y.toFixed(4),t=yT.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${n}, ${e}, ${t} );`," return dot( weights, rgb );","}"].join(` `)}function Cse(n){return[n.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",n.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(pg).join(` `)}function Pse(n){let e=[];for(let t in n){let i=n[t];i!==!1&&e.push("#define "+t+" "+i)}return e.join(` `)}function Dse(n,e){let t={},i=n.getProgramParameter(e,n.ACTIVE_ATTRIBUTES);for(let r=0;r")}return dy(t)}function kB(n){return n.replace(wse,Fse)}function Fse(n,e,t,i){let r="";for(let s=parseInt(e);s0,ct=M.clearcoat>0,Yi=M.dispersion>0,X=M.iridescence>0,U=M.sheen>0,he=M.transmission>0,ye=yi&&!!M.anisotropyMap,Be=ct&&!!M.clearcoatMap,Je=ct&&!!M.clearcoatNormalMap,st=ct&&!!M.clearcoatRoughnessMap,Ie=X&&!!M.iridescenceMap,Le=X&&!!M.iridescenceThicknessMap,lt=U&&!!M.sheenColorMap,dt=U&&!!M.sheenRoughnessMap,qe=!!M.specularMap,et=!!M.specularColorMap,wt=!!M.specularIntensityMap,$t=he&&!!M.transmissionMap,bi=he&&!!M.thicknessMap,ae=!!M.gradientMap,tt=!!M.alphaMap,Ce=M.alphaTest>0,Ze=!!M.alphaHash,rt=!!M.extensions,Ve=Ns;M.toneMapped&&(ie===null||ie.isXRRenderTarget===!0)&&(Ve=n.toneMapping);let Mt={shaderID:J,shaderType:M.type,shaderName:M.name,vertexShader:ge,fragmentShader:Ue,defines:M.defines,customVertexShaderID:oe,customFragmentShaderID:ve,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:h,batching:me,batchingColor:me&&w._colorsTexture!==null,instancing:Pe,instancingColor:Pe&&w.instanceColor!==null,instancingMorph:Pe&&w.morphTexture!==null,outputColorSpace:ie===null?n.outputColorSpace:ie.isXRRenderTarget===!0?ie.texture.colorSpace:oi.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:be,matcap:De,envMap:ut,envMapMode:ut&&Q.mapping,envMapCubeUVHeight:K,aoMap:Ye,lightMap:je,bumpMap:Qt,normalMap:Pt,displacementMap:Ti,emissiveMap:se,normalMapObjectSpace:Pt&&M.normalMapType===fB,normalMapTangentSpace:Pt&&M.normalMapType===$u,packedNormalMap:Pt&&M.normalMapType===$u&&jse(M.normalMap.format),metalnessMap:Di,roughnessMap:ii,anisotropy:yi,anisotropyMap:ye,clearcoat:ct,clearcoatMap:Be,clearcoatNormalMap:Je,clearcoatRoughnessMap:st,dispersion:Yi,iridescence:X,iridescenceMap:Ie,iridescenceThicknessMap:Le,sheen:U,sheenColorMap:lt,sheenRoughnessMap:dt,specularMap:qe,specularColorMap:et,specularIntensityMap:wt,transmission:he,transmissionMap:$t,thicknessMap:bi,gradientMap:ae,opaque:M.transparent===!1&&M.blending===Nd&&M.alphaToCoverage===!1,alphaMap:tt,alphaTest:Ce,alphaHash:Ze,combine:M.combine,mapUv:be&&m(M.map.channel),aoMapUv:Ye&&m(M.aoMap.channel),lightMapUv:je&&m(M.lightMap.channel),bumpMapUv:Qt&&m(M.bumpMap.channel),normalMapUv:Pt&&m(M.normalMap.channel),displacementMapUv:Ti&&m(M.displacementMap.channel),emissiveMapUv:se&&m(M.emissiveMap.channel),metalnessMapUv:Di&&m(M.metalnessMap.channel),roughnessMapUv:ii&&m(M.roughnessMap.channel),anisotropyMapUv:ye&&m(M.anisotropyMap.channel),clearcoatMapUv:Be&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:Je&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:st&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:Ie&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:Le&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:lt&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:dt&&m(M.sheenRoughnessMap.channel),specularMapUv:qe&&m(M.specularMap.channel),specularColorMapUv:et&&m(M.specularColorMap.channel),specularIntensityMapUv:wt&&m(M.specularIntensityMap.channel),transmissionMapUv:$t&&m(M.transmissionMap.channel),thicknessMapUv:bi&&m(M.thicknessMap.channel),alphaMapUv:tt&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Pt||yi),vertexNormals:!!N.attributes.normal,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!N.attributes.color&&N.attributes.color.itemSize===4,pointsUvs:w.isPoints===!0&&!!N.attributes.uv&&(be||tt),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Pt===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:ue,skinning:w.isSkinnedMesh===!0,morphTargets:N.morphAttributes.position!==void 0,morphNormals:N.morphAttributes.normal!==void 0,morphColors:N.morphAttributes.color!==void 0,morphTargetsCount:Y,morphTextureStride:de,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numLightProbeGrids:G.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:Ve,decodeVideoTexture:be&&M.map.isVideoTexture===!0&&oi.getTransfer(M.map.colorSpace)===Ji,decodeVideoTextureEmissive:se&&M.emissiveMap.isVideoTexture===!0&&oi.getTransfer(M.emissiveMap.colorSpace)===Ji,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ca,flipSided:M.side===Mn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:rt&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(rt&&M.extensions.multiDraw===!0||me)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return Mt.vertexUv1s=l.has(1),Mt.vertexUv2s=l.has(2),Mt.vertexUv3s=l.has(3),l.clear(),Mt}function p(M){let y=[];if(M.shaderID?y.push(M.shaderID):(y.push(M.customVertexShaderID),y.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)y.push(C),y.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(g(y,M),v(y,M),y.push(n.outputColorSpace)),y.push(M.customProgramCacheKey),y.join()}function g(M,y){M.push(y.precision),M.push(y.outputColorSpace),M.push(y.envMapMode),M.push(y.envMapCubeUVHeight),M.push(y.mapUv),M.push(y.alphaMapUv),M.push(y.lightMapUv),M.push(y.aoMapUv),M.push(y.bumpMapUv),M.push(y.normalMapUv),M.push(y.displacementMapUv),M.push(y.emissiveMapUv),M.push(y.metalnessMapUv),M.push(y.roughnessMapUv),M.push(y.anisotropyMapUv),M.push(y.clearcoatMapUv),M.push(y.clearcoatNormalMapUv),M.push(y.clearcoatRoughnessMapUv),M.push(y.iridescenceMapUv),M.push(y.iridescenceThicknessMapUv),M.push(y.sheenColorMapUv),M.push(y.sheenRoughnessMapUv),M.push(y.specularMapUv),M.push(y.specularColorMapUv),M.push(y.specularIntensityMapUv),M.push(y.transmissionMapUv),M.push(y.thicknessMapUv),M.push(y.combine),M.push(y.fogExp2),M.push(y.sizeAttenuation),M.push(y.morphTargetsCount),M.push(y.morphAttributeCount),M.push(y.numDirLights),M.push(y.numPointLights),M.push(y.numSpotLights),M.push(y.numSpotLightMaps),M.push(y.numHemiLights),M.push(y.numRectAreaLights),M.push(y.numDirLightShadows),M.push(y.numPointLightShadows),M.push(y.numSpotLightShadows),M.push(y.numSpotLightShadowsWithMaps),M.push(y.numLightProbes),M.push(y.shadowMapType),M.push(y.toneMapping),M.push(y.numClippingPlanes),M.push(y.numClipIntersection),M.push(y.depthPacking)}function v(M,y){a.disableAll(),y.instancing&&a.enable(0),y.instancingColor&&a.enable(1),y.instancingMorph&&a.enable(2),y.matcap&&a.enable(3),y.envMap&&a.enable(4),y.normalMapObjectSpace&&a.enable(5),y.normalMapTangentSpace&&a.enable(6),y.clearcoat&&a.enable(7),y.iridescence&&a.enable(8),y.alphaTest&&a.enable(9),y.vertexColors&&a.enable(10),y.vertexAlphas&&a.enable(11),y.vertexUv1s&&a.enable(12),y.vertexUv2s&&a.enable(13),y.vertexUv3s&&a.enable(14),y.vertexTangents&&a.enable(15),y.anisotropy&&a.enable(16),y.alphaHash&&a.enable(17),y.batching&&a.enable(18),y.dispersion&&a.enable(19),y.batchingColor&&a.enable(20),y.gradientMap&&a.enable(21),y.packedNormalMap&&a.enable(22),y.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),y.fog&&a.enable(0),y.useFog&&a.enable(1),y.flatShading&&a.enable(2),y.logarithmicDepthBuffer&&a.enable(3),y.reversedDepthBuffer&&a.enable(4),y.skinning&&a.enable(5),y.morphTargets&&a.enable(6),y.morphNormals&&a.enable(7),y.morphColors&&a.enable(8),y.premultipliedAlpha&&a.enable(9),y.shadowMapEnabled&&a.enable(10),y.doubleSided&&a.enable(11),y.flipSided&&a.enable(12),y.useDepthPacking&&a.enable(13),y.dithering&&a.enable(14),y.transmission&&a.enable(15),y.sheen&&a.enable(16),y.opaque&&a.enable(17),y.pointsUvs&&a.enable(18),y.decodeVideoTexture&&a.enable(19),y.decodeVideoTextureEmissive&&a.enable(20),y.alphaToCoverage&&a.enable(21),y.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function T(M){let y=u[M.type],C;if(y){let D=ol[y];C=xB.clone(D.uniforms)}else C=M.uniforms;return C}function S(M,y){let C=f.get(y);return C!==void 0?++C.usedTimes:(C=new Yse(n,y,M,r),c.push(C),f.set(y,C)),C}function E(M){if(--M.usedTimes===0){let y=c.indexOf(M);c[y]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function A(M){o.remove(M)}function R(){o.dispose()}return{getParameters:_,getProgramCacheKey:p,getUniforms:T,acquireProgram:S,releaseProgram:E,releaseShaderCache:A,programs:c,dispose:R}}function qse(){let n=new WeakMap;function e(a){return n.has(a)}function t(a){let o=n.get(a);return o===void 0&&(o={},n.set(a,o)),o}function i(a){n.delete(a)}function r(a,o,l){n.get(a)[o]=l}function s(){n=new WeakMap}return{has:e,get:t,remove:i,update:r,dispose:s}}function Qse(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.material.id!==e.material.id?n.material.id-e.material.id:n.materialVariant!==e.materialVariant?n.materialVariant-e.materialVariant:n.z!==e.z?n.z-e.z:n.id-e.id}function HB(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.z!==e.z?e.z-n.z:n.id-e.id}function zB(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(h){let u=0;return h.isInstancedMesh&&(u+=2),h.isSkinnedMesh&&(u+=1),u}function o(h,u,m,_,p,g){let v=n[e];return v===void 0?(v={id:h.id,object:h,geometry:u,material:m,materialVariant:a(h),groupOrder:_,renderOrder:h.renderOrder,z:p,group:g},n[e]=v):(v.id=h.id,v.object=h,v.geometry=u,v.material=m,v.materialVariant=a(h),v.groupOrder=_,v.renderOrder=h.renderOrder,v.z=p,v.group=g),e++,v}function l(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(h,u){t.length>1&&t.sort(h||Qse),i.length>1&&i.sort(u||HB),r.length>1&&r.sort(u||HB)}function d(){for(let h=e,u=n.length;h=s.length?(a=new zB,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function Jse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new re,color:new ht};break;case"SpotLight":t={position:new re,direction:new re,color:new ht,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new re,color:new ht,distance:0,decay:0};break;case"HemisphereLight":t={direction:new re,skyColor:new ht,groundColor:new ht};break;case"RectAreaLight":t={color:new ht,position:new re,halfWidth:new re,halfHeight:new re};break}return n[e.id]=t,t}}}function eae(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function iae(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function rae(n){let e=new Jse,t=eae(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)i.probe.push(new re);let r=new re,s=new li,a=new li;function o(c){let f=0,d=0,h=0;for(let y=0;y<9;y++)i.probe[y].set(0,0,0);let u=0,m=0,_=0,p=0,g=0,v=0,T=0,S=0,E=0,A=0,R=0;c.sort(iae);for(let y=0,C=c.length;y0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=vt.LTC_FLOAT_1,i.rectAreaLTC2=vt.LTC_FLOAT_2):(i.rectAreaLTC1=vt.LTC_HALF_1,i.rectAreaLTC2=vt.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=h;let M=i.hash;(M.directionalLength!==u||M.pointLength!==m||M.spotLength!==_||M.rectAreaLength!==p||M.hemiLength!==g||M.numDirectionalShadows!==v||M.numPointShadows!==T||M.numSpotShadows!==S||M.numSpotMaps!==E||M.numLightProbes!==R)&&(i.directional.length=u,i.spot.length=_,i.rectArea.length=p,i.point.length=m,i.hemi.length=g,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=T,i.pointShadowMap.length=T,i.spotShadow.length=S,i.spotShadowMap.length=S,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=T,i.spotLightMatrix.length=S+E-A,i.spotLightMap.length=E,i.numSpotLightShadowsWithMaps=A,i.numLightProbes=R,M.directionalLength=u,M.pointLength=m,M.spotLength=_,M.rectAreaLength=p,M.hemiLength=g,M.numDirectionalShadows=v,M.numPointShadows=T,M.numSpotShadows=S,M.numSpotMaps=E,M.numLightProbes=R,i.version=tae++)}function l(c,f){let d=0,h=0,u=0,m=0,_=0,p=f.matrixWorldInverse;for(let g=0,v=c.length;g=a.length?(o=new XB(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function cae(n,e,t){let i=new Gu,r=new It,s=new It,a=new or,o=new xS,l=new RS,c={},f=t.maxTextureSize,d={[aa]:Mn,[Mn]:aa,[Ca]:Ca},h=new la({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new It},radius:{value:4}},vertexShader:sae,fragmentShader:aae}),u=h.clone();u.defines.HORIZONTAL_PASS=1;let m=new Qi;m.setAttribute("position",new vr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new ci(m,h),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=ig;let g=this.type;this.render=function(A,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||A.length===0)return;this.type===wS&&(Ct("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=ig);let y=n.getRenderTarget(),C=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),w=n.state;w.setBlending(nl),w.buffers.depth.getReversed()===!0?w.buffers.color.setClear(0,0,0,0):w.buffers.color.setClear(1,1,1,1),w.buffers.depth.setTest(!0),w.setScissorTest(!1);let G=g!==this.type;G&&R.traverse(function(O){O.material&&(Array.isArray(O.material)?O.material.forEach(N=>N.needsUpdate=!0):O.material.needsUpdate=!0)});for(let O=0,N=A.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/Q.x),r.x=s.x*Q.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/Q.y),r.y=s.y*Q.y,V.mapSize.y=s.y));let K=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=K,V.map===null||G===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===Ku){if(B.isPointLight){Ct("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new oa(r.x,r.y,{format:_f,type:sl,minFilter:Gr,magFilter:Gr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new Yl(r.x,r.y,ca),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=qo,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr}else B.isPointLight?(V.map=new yT(r.x),V.map.depthTexture=new TS(r.x,mo)):(V.map=new oa(r.x,r.y),V.map.depthTexture=new Yl(r.x,r.y,mo)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=qo,this.type===ig?(V.map.depthTexture.compareFunction=K?RT:xT,V.map.depthTexture.minFilter=Gr,V.map.depthTexture.magFilter=Gr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr);V.camera.updateProjectionMatrix()}let J=V.map.isWebGLCubeRenderTarget?6:1;for(let z=0;z0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,G=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[G];N===void 0&&(N=C.clone(),O[G]=N,R.addEventListener("dispose",E)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,y===Ku?C.side=R.shadowSide!==null?R.shadowSide:R.side:C.side=R.shadowSide!==null?R.shadowSide:d[R.side],C.alphaMap=R.alphaMap,C.alphaTest=R.alphaToCoverage===!0?.5:R.alphaTest,C.map=R.map,C.clipShadows=R.clipShadows,C.clippingPlanes=R.clippingPlanes,C.clipIntersection=R.clipIntersection,C.displacementMap=R.displacementMap,C.displacementScale=R.displacementScale,C.displacementBias=R.displacementBias,C.wireframeLinewidth=R.wireframeLinewidth,C.linewidth=R.linewidth,M.isPointLight===!0&&C.isMeshDistanceMaterial===!0){let w=n.properties.get(C);w.light=M}return C}function S(A,R,M,y,C){if(A.visible===!1)return;if(A.layers.test(R.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&C===Ku)&&(!A.frustumCulled||i.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,A.matrixWorld);let G=e.update(A),O=A.material;if(Array.isArray(O)){let N=G.groups;for(let B=0,V=N.length;B=1):K.indexOf("OpenGL ES")!==-1&&(Q=parseFloat(/^OpenGL ES (\d)/.exec(K)[1]),V=Q>=2);let J=null,z={},Y=n.getParameter(n.SCISSOR_BOX),de=n.getParameter(n.VIEWPORT),ge=new or().fromArray(Y),Ue=new or().fromArray(de);function oe(ae,tt,Ce,Ze){let rt=new Uint8Array(4),Ve=n.createTexture();n.bindTexture(ae,Ve),n.texParameteri(ae,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(ae,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Mt=0;Mthe||Be.height>he)&&(ye=he/Math.max(Be.width,Be.height)),ye<1)if(typeof HTMLImageElement!="undefined"&&X instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&X instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&X instanceof ImageBitmap||typeof VideoFrame!="undefined"&&X instanceof VideoFrame){let Je=Math.floor(ye*Be.width),st=Math.floor(ye*Be.height);h===void 0&&(h=_(Je,st));let Ie=U?_(Je,st):h;return Ie.width=Je,Ie.height=st,Ie.getContext("2d").drawImage(X,0,0,Je,st),Ct("WebGLRenderer: Texture has been resized from ("+Be.width+"x"+Be.height+") to ("+Je+"x"+st+")."),Ie}else return"data"in X&&Ct("WebGLRenderer: Image in DataTexture is too big ("+Be.width+"x"+Be.height+")."),X;return X}function g(X){return X.generateMipmaps}function v(X){n.generateMipmap(X)}function T(X){return X.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:X.isWebGL3DRenderTarget?n.TEXTURE_3D:X.isWebGLArrayRenderTarget||X.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function S(X,U,he,ye,Be,Je=!1){if(X!==null){if(n[X]!==void 0)return n[X];Ct("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+X+"'")}let st;ye&&(st=e.get("EXT_texture_norm16"),st||Ct("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let Ie=U;if(U===n.RED&&(he===n.FLOAT&&(Ie=n.R32F),he===n.HALF_FLOAT&&(Ie=n.R16F),he===n.UNSIGNED_BYTE&&(Ie=n.R8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.R16_EXT),he===n.SHORT&&st&&(Ie=st.R16_SNORM_EXT)),U===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.R8UI),he===n.UNSIGNED_SHORT&&(Ie=n.R16UI),he===n.UNSIGNED_INT&&(Ie=n.R32UI),he===n.BYTE&&(Ie=n.R8I),he===n.SHORT&&(Ie=n.R16I),he===n.INT&&(Ie=n.R32I)),U===n.RG&&(he===n.FLOAT&&(Ie=n.RG32F),he===n.HALF_FLOAT&&(Ie=n.RG16F),he===n.UNSIGNED_BYTE&&(Ie=n.RG8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.RG16_EXT),he===n.SHORT&&st&&(Ie=st.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RG8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RG16UI),he===n.UNSIGNED_INT&&(Ie=n.RG32UI),he===n.BYTE&&(Ie=n.RG8I),he===n.SHORT&&(Ie=n.RG16I),he===n.INT&&(Ie=n.RG32I)),U===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RGB8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RGB16UI),he===n.UNSIGNED_INT&&(Ie=n.RGB32UI),he===n.BYTE&&(Ie=n.RGB8I),he===n.SHORT&&(Ie=n.RGB16I),he===n.INT&&(Ie=n.RGB32I)),U===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RGBA16UI),he===n.UNSIGNED_INT&&(Ie=n.RGBA32UI),he===n.BYTE&&(Ie=n.RGBA8I),he===n.SHORT&&(Ie=n.RGBA16I),he===n.INT&&(Ie=n.RGBA32I)),U===n.RGB&&(he===n.UNSIGNED_SHORT&&st&&(Ie=st.RGB16_EXT),he===n.SHORT&&st&&(Ie=st.RGB16_SNORM_EXT),he===n.UNSIGNED_INT_5_9_9_9_REV&&(Ie=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(Ie=n.R11F_G11F_B10F)),U===n.RGBA){let Le=Je?N_:oi.getTransfer(Be);he===n.FLOAT&&(Ie=n.RGBA32F),he===n.HALF_FLOAT&&(Ie=n.RGBA16F),he===n.UNSIGNED_BYTE&&(Ie=Le===Ji?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.RGBA16_EXT),he===n.SHORT&&st&&(Ie=st.RGBA16_SNORM_EXT),he===n.UNSIGNED_SHORT_4_4_4_4&&(Ie=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(Ie=n.RGB5_A1)}return(Ie===n.R16F||Ie===n.R32F||Ie===n.RG16F||Ie===n.RG32F||Ie===n.RGBA16F||Ie===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Ie}function E(X,U){let he;return X?U===null||U===mo||U===qu?he=n.DEPTH24_STENCIL8:U===ca?he=n.DEPTH32F_STENCIL8:U===Zu&&(he=n.DEPTH24_STENCIL8,Ct("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===mo||U===qu?he=n.DEPTH_COMPONENT24:U===ca?he=n.DEPTH_COMPONENT32F:U===Zu&&(he=n.DEPTH_COMPONENT16),he}function A(X,U){return g(X)===!0||X.isFramebufferTexture&&X.minFilter!==Vr&&X.minFilter!==Gr?Math.log2(Math.max(U.width,U.height))+1:X.mipmaps!==void 0&&X.mipmaps.length>0?X.mipmaps.length:X.isCompressedTexture&&Array.isArray(X.image)?U.mipmaps.length:1}function R(X){let U=X.target;U.removeEventListener("dispose",R),y(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(X){let U=X.target;U.removeEventListener("dispose",M),D(U)}function y(X){let U=i.get(X);if(U.__webglInit===void 0)return;let he=X.source,ye=u.get(he);if(ye){let Be=ye[U.__cacheKey];Be.usedTimes--,Be.usedTimes===0&&C(X),Object.keys(ye).length===0&&u.delete(he)}i.remove(X)}function C(X){let U=i.get(X);n.deleteTexture(U.__webglTexture);let he=X.source,ye=u.get(he);delete ye[U.__cacheKey],a.memory.textures--}function D(X){let U=i.get(X);if(X.depthTexture&&(X.depthTexture.dispose(),i.remove(X.depthTexture)),X.isWebGLCubeRenderTarget)for(let ye=0;ye<6;ye++){if(Array.isArray(U.__webglFramebuffer[ye]))for(let Be=0;Be=r.maxTextures&&Ct("WebGLTextures: Trying to use "+X+" texture units while this GPU supports only "+r.maxTextures),w+=1,X}function V(X){let U=[];return U.push(X.wrapS),U.push(X.wrapT),U.push(X.wrapR||0),U.push(X.magFilter),U.push(X.minFilter),U.push(X.anisotropy),U.push(X.internalFormat),U.push(X.format),U.push(X.type),U.push(X.generateMipmaps),U.push(X.premultiplyAlpha),U.push(X.flipY),U.push(X.unpackAlignment),U.push(X.colorSpace),U.join()}function Q(X,U){let he=i.get(X);if(X.isVideoTexture&&yi(X),X.isRenderTargetTexture===!1&&X.isExternalTexture!==!0&&X.version>0&&he.__version!==X.version){let ye=X.image;if(ye===null)Ct("WebGLRenderer: Texture marked for update but no image data found.");else if(ye.complete===!1)Ct("WebGLRenderer: Texture marked for update but image is incomplete");else{ue(he,X,U);return}}else X.isExternalTexture&&(he.__webglTexture=X.sourceTexture?X.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+U)}function K(X,U){let he=i.get(X);if(X.isRenderTargetTexture===!1&&X.version>0&&he.__version!==X.version){ue(he,X,U);return}else X.isExternalTexture&&(he.__webglTexture=X.sourceTexture?X.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+U)}function J(X,U){let he=i.get(X);if(X.isRenderTargetTexture===!1&&X.version>0&&he.__version!==X.version){ue(he,X,U);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+U)}function z(X,U){let he=i.get(X);if(X.isCubeDepthTexture!==!0&&X.version>0&&he.__version!==X.version){Pe(he,X,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+U)}let Y={[Zo]:n.REPEAT,[Ia]:n.CLAMP_TO_EDGE,[Pu]:n.MIRRORED_REPEAT},de={[Vr]:n.NEAREST,[US]:n.NEAREST_MIPMAP_NEAREST,[Kd]:n.NEAREST_MIPMAP_LINEAR,[Gr]:n.LINEAR,[ju]:n.LINEAR_MIPMAP_NEAREST,[uo]:n.LINEAR_MIPMAP_LINEAR},ge={[dB]:n.NEVER,[_B]:n.ALWAYS,[hB]:n.LESS,[xT]:n.LEQUAL,[uB]:n.EQUAL,[RT]:n.GEQUAL,[mB]:n.GREATER,[pB]:n.NOTEQUAL};function Ue(X,U){if(U.type===ca&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===Gr||U.magFilter===ju||U.magFilter===Kd||U.magFilter===uo||U.minFilter===Gr||U.minFilter===ju||U.minFilter===Kd||U.minFilter===uo)&&Ct("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(X,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(X,n.TEXTURE_WRAP_T,Y[U.wrapT]),(X===n.TEXTURE_3D||X===n.TEXTURE_2D_ARRAY)&&n.texParameteri(X,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(X,n.TEXTURE_MAG_FILTER,de[U.magFilter]),n.texParameteri(X,n.TEXTURE_MIN_FILTER,de[U.minFilter]),U.compareFunction&&(n.texParameteri(X,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(X,n.TEXTURE_COMPARE_FUNC,ge[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Vr||U.minFilter!==Kd&&U.minFilter!==uo||U.type===ca&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(X,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function oe(X,U){let he=!1;X.__webglInit===void 0&&(X.__webglInit=!0,U.addEventListener("dispose",R));let ye=U.source,Be=u.get(ye);Be===void 0&&(Be={},u.set(ye,Be));let Je=V(U);if(Je!==X.__cacheKey){Be[Je]===void 0&&(Be[Je]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,he=!0),Be[Je].usedTimes++;let st=Be[X.__cacheKey];st!==void 0&&(Be[X.__cacheKey].usedTimes--,st.usedTimes===0&&C(U)),X.__cacheKey=Je,X.__webglTexture=Be[Je].texture}return he}function ve(X,U,he){return Math.floor(Math.floor(X/he)/U)}function ie(X,U,he,ye){let Je=X.updateRanges;if(Je.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,he,ye,U.data);else{Je.sort((dt,qe)=>dt.start-qe.start);let st=0;for(let dt=1;dt0){$t&&bi&&t.texStorage2D(n.TEXTURE_2D,tt,qe,wt[0].width,wt[0].height);for(let Ce=0,Ze=wt.length;Ce0){let rt=jI(et.width,et.height,U.format,U.type);for(let Ve of U.layerUpdates){let Mt=et.data.subarray(Ve*rt/et.data.BYTES_PER_ELEMENT,(Ve+1)*rt/et.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,Ve,et.width,et.height,1,lt,Mt)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,et.width,et.height,Le.depth,lt,et.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ce,qe,et.width,et.height,Le.depth,0,et.data,0,0);else Ct("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else $t?ae&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,et.width,et.height,Le.depth,lt,dt,et.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ce,qe,et.width,et.height,Le.depth,0,lt,dt,et.data)}else{$t&&bi&&t.texStorage2D(n.TEXTURE_2D,tt,qe,wt[0].width,wt[0].height);for(let Ce=0,Ze=wt.length;Ce0){let Ce=jI(Le.width,Le.height,U.format,U.type);for(let Ze of U.layerUpdates){let rt=Le.data.subarray(Ze*Ce/Le.data.BYTES_PER_ELEMENT,(Ze+1)*Ce/Le.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Ze,Le.width,Le.height,1,lt,dt,rt)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Le.width,Le.height,Le.depth,lt,dt,Le.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,qe,Le.width,Le.height,Le.depth,0,lt,dt,Le.data);else if(U.isData3DTexture)$t?(bi&&t.texStorage3D(n.TEXTURE_3D,tt,qe,Le.width,Le.height,Le.depth),ae&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Le.width,Le.height,Le.depth,lt,dt,Le.data)):t.texImage3D(n.TEXTURE_3D,0,qe,Le.width,Le.height,Le.depth,0,lt,dt,Le.data);else if(U.isFramebufferTexture){if(bi)if($t)t.texStorage2D(n.TEXTURE_2D,tt,qe,Le.width,Le.height);else{let Ce=Le.width,Ze=Le.height;for(let rt=0;rt>=1,Ze>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let Ce=n.canvas;if(Ce.hasAttribute("layoutsubtree")||Ce.setAttribute("layoutsubtree","true"),Le.parentNode!==Ce){Ce.appendChild(Le),d.add(U),Ce.onpaint=Xt=>{let pr=Xt.changedElements;for(let Ai of d)pr.includes(Ai.image)&&(Ai.needsUpdate=!0)},Ce.requestPaint();return}let Ze=0,rt=n.RGBA,Ve=n.RGBA,Mt=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,Ze,rt,Ve,Mt,Le),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)}}else if(wt.length>0){if($t&&bi){let Ce=Yi(wt[0]);t.texStorage2D(n.TEXTURE_2D,tt,qe,Ce.width,Ce.height)}for(let Ce=0,Ze=wt.length;Ce0&&Ze++;let Ve=Yi(qe[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,Ze,bi,Ve.width,Ve.height)}for(let Ve=0;Ve<6;Ve++)if(dt){ae?Ce&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,qe[Ve].width,qe[Ve].height,wt,$t,qe[Ve].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,bi,qe[Ve].width,qe[Ve].height,0,wt,$t,qe[Ve].data);for(let Mt=0;Mt>Je),et=Math.max(1,U.height>>Je);Be===n.TEXTURE_3D||Be===n.TEXTURE_2D_ARRAY?t.texImage3D(Be,Je,Le,qe,et,U.depth,0,st,Ie,null):t.texImage2D(Be,Je,Le,qe,et,0,st,Ie,null)}t.bindFramebuffer(n.FRAMEBUFFER,X),ii(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,ye,Be,dt.__webglTexture,0,Di(U)):(Be===n.TEXTURE_2D||Be>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Be<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,ye,Be,dt.__webglTexture,Je),t.bindFramebuffer(n.FRAMEBUFFER,null)}function be(X,U,he){if(n.bindRenderbuffer(n.RENDERBUFFER,X),U.depthBuffer){let ye=U.depthTexture,Be=ye&&ye.isDepthTexture?ye.type:null,Je=E(U.stencilBuffer,Be),st=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;ii(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Di(U),Je,U.width,U.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,Di(U),Je,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,Je,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,st,n.RENDERBUFFER,X)}else{let ye=U.textures;for(let Be=0;Be{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,ye.removeEventListener("dispose",Be)};ye.addEventListener("dispose",Be),U.__depthDisposeCallback=Be}U.__boundDepthTexture=ye}if(X.depthTexture&&!U.__autoAllocateDepthBuffer)if(he)for(let ye=0;ye<6;ye++)De(U.__webglFramebuffer[ye],X,ye);else{let ye=X.texture.mipmaps;ye&&ye.length>0?De(U.__webglFramebuffer[0],X,0):De(U.__webglFramebuffer,X,0)}else if(he){U.__webglDepthbuffer=[];for(let ye=0;ye<6;ye++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[ye]),U.__webglDepthbuffer[ye]===void 0)U.__webglDepthbuffer[ye]=n.createRenderbuffer(),be(U.__webglDepthbuffer[ye],X,!1);else{let Be=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Je=U.__webglDepthbuffer[ye];n.bindRenderbuffer(n.RENDERBUFFER,Je),n.framebufferRenderbuffer(n.FRAMEBUFFER,Be,n.RENDERBUFFER,Je)}}else{let ye=X.texture.mipmaps;if(ye&&ye.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),be(U.__webglDepthbuffer,X,!1);else{let Be=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Je=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,Je),n.framebufferRenderbuffer(n.FRAMEBUFFER,Be,n.RENDERBUFFER,Je)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ye(X,U,he){let ye=i.get(X);U!==void 0&&me(ye.__webglFramebuffer,X,X.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&ut(X)}function je(X){let U=X.texture,he=i.get(X),ye=i.get(U);X.addEventListener("dispose",M);let Be=X.textures,Je=X.isWebGLCubeRenderTarget===!0,st=Be.length>1;if(st||(ye.__webglTexture===void 0&&(ye.__webglTexture=n.createTexture()),ye.__version=U.version,a.memory.textures++),Je){he.__webglFramebuffer=[];for(let Ie=0;Ie<6;Ie++)if(U.mipmaps&&U.mipmaps.length>0){he.__webglFramebuffer[Ie]=[];for(let Le=0;Le0){he.__webglFramebuffer=[];for(let Ie=0;Ie0&&ii(X)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let Ie=0;Ie0)for(let Le=0;Le0)for(let Le=0;Le0){if(ii(X)===!1){let U=X.textures,he=X.width,ye=X.height,Be=n.COLOR_BUFFER_BIT,Je=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,st=i.get(X),Ie=U.length>1;if(Ie)for(let lt=0;lt0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,st.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,st.__webglFramebuffer);for(let lt=0;lt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&U.__useRenderToTexture!==!1}function yi(X){let U=a.render.frame;f.get(X)!==U&&(f.set(X,U),X.update())}function ct(X,U){let he=X.colorSpace,ye=X.format,Be=X.type;return X.isCompressedTexture===!0||X.isVideoTexture===!0||he!==fs&&he!==Ql&&(oi.getTransfer(he)===Ji?(ye!==fa||Be!==ws)&&Ct("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Vt("WebGLTextures: Unsupported texture color space:",he)),U}function Yi(X){return typeof HTMLImageElement!="undefined"&&X instanceof HTMLImageElement?(c.width=X.naturalWidth||X.width,c.height=X.naturalHeight||X.height):typeof VideoFrame!="undefined"&&X instanceof VideoFrame?(c.width=X.displayWidth,c.height=X.displayHeight):(c.width=X.width,c.height=X.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=G,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=Q,this.setTexture2DArray=K,this.setTexture3D=J,this.setTextureCube=z,this.rebindTextures=Ye,this.setupRenderTarget=je,this.updateRenderTargetMipmap=Qt,this.updateMultisampleRenderTarget=se,this.setupDepthRenderbuffer=ut,this.setupFrameBufferTexture=me,this.useMultisampledRTT=ii,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function hae(n,e){function t(i,r=Ql){let s,a=oi.getTransfer(r);if(i===ws)return n.UNSIGNED_BYTE;if(i===GS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===kS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===UI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===VI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===FI)return n.BYTE;if(i===BI)return n.SHORT;if(i===Zu)return n.UNSIGNED_SHORT;if(i===VS)return n.INT;if(i===mo)return n.UNSIGNED_INT;if(i===ca)return n.FLOAT;if(i===sl)return n.HALF_FLOAT;if(i===GI)return n.ALPHA;if(i===kI)return n.RGB;if(i===fa)return n.RGBA;if(i===qo)return n.DEPTH_COMPONENT;if(i===pf)return n.DEPTH_STENCIL;if(i===WS)return n.RED;if(i===HS)return n.RED_INTEGER;if(i===_f)return n.RG;if(i===zS)return n.RG_INTEGER;if(i===XS)return n.RGBA_INTEGER;if(i===sg||i===ag||i===og||i===lg)if(a===Ji)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===sg)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===ag)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===og)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===lg)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===sg)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===ag)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===og)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===lg)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===YS||i===KS||i===jS||i===ZS)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===YS)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===KS)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===jS)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===ZS)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===qS||i===QS||i===$S||i===JS||i===eT||i===cg||i===tT)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===qS||i===QS)return a===Ji?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===$S)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===JS)return s.COMPRESSED_R11_EAC;if(i===eT)return s.COMPRESSED_SIGNED_R11_EAC;if(i===cg)return s.COMPRESSED_RG11_EAC;if(i===tT)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===iT||i===rT||i===nT||i===sT||i===aT||i===oT||i===lT||i===cT||i===fT||i===dT||i===hT||i===uT||i===mT||i===pT)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===iT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===rT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===nT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===sT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===aT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===oT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===lT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===cT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===fT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===dT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===hT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===uT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===mT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===pT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===_T||i===gT||i===vT)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===_T)return a===Ji?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===gT)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===vT)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===ET||i===ST||i===fg||i===TT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===ET)return s.COMPRESSED_RED_RGTC1_EXT;if(i===ST)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===fg)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===TT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===qu?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function _ae(n,e){function t(p,g){p.matrixAutoUpdate===!0&&p.updateMatrix(),g.value.copy(p.matrix)}function i(p,g){g.color.getRGB(p.fogColor.value,XI(n)),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function r(p,g,v,T,S){g.isNodeMaterial?g.uniformsNeedUpdate=!1:g.isMeshBasicMaterial?s(p,g):g.isMeshLambertMaterial?(s(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshToonMaterial?(s(p,g),d(p,g)):g.isMeshPhongMaterial?(s(p,g),f(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshStandardMaterial?(s(p,g),h(p,g),g.isMeshPhysicalMaterial&&u(p,g,S)):g.isMeshMatcapMaterial?(s(p,g),m(p,g)):g.isMeshDepthMaterial?s(p,g):g.isMeshDistanceMaterial?(s(p,g),_(p,g)):g.isMeshNormalMaterial?s(p,g):g.isLineBasicMaterial?(a(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?l(p,g,v,T):g.isSpriteMaterial?c(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.bumpMap&&(p.bumpMap.value=g.bumpMap,t(g.bumpMap,p.bumpMapTransform),p.bumpScale.value=g.bumpScale,g.side===Mn&&(p.bumpScale.value*=-1)),g.normalMap&&(p.normalMap.value=g.normalMap,t(g.normalMap,p.normalMapTransform),p.normalScale.value.copy(g.normalScale),g.side===Mn&&p.normalScale.value.negate()),g.displacementMap&&(p.displacementMap.value=g.displacementMap,t(g.displacementMap,p.displacementMapTransform),p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,p.emissiveMapTransform)),g.specularMap&&(p.specularMap.value=g.specularMap,t(g.specularMap,p.specularMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let v=e.get(g),T=v.envMap,S=v.envMapRotation;T&&(p.envMap.value=T,p.envMapRotation.value.setFromMatrix4(pae.makeRotationFromEuler(S)).transpose(),T.isCubeTexture&&T.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(JB),p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap&&(p.lightMap.value=g.lightMap,p.lightMapIntensity.value=g.lightMapIntensity,t(g.lightMap,p.lightMapTransform)),g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,p.aoMapTransform))}function a(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform))}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function l(p,g,v,T){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*v,p.scale.value=T*.5,g.map&&(p.map.value=g.map,t(g.map,p.uvTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function c(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function f(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function d(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.metalness.value=g.metalness,g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,p.metalnessMapTransform)),p.roughness.value=g.roughness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,p.roughnessMapTransform)),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function u(p,g,v){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,p.sheenColorMapTransform)),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,p.sheenRoughnessMapTransform))),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,p.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(p.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===Mn&&p.clearcoatNormalScale.value.negate())),g.dispersion>0&&(p.dispersion.value=g.dispersion),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,p.iridescenceMapTransform)),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,p.transmissionMapTransform)),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(p.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(p.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,p.specularColorMapTransform)),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,g){g.matcap&&(p.matcap.value=g.matcap)}function _(p,g){let v=e.get(g).light;p.referencePosition.value.setFromMatrixPosition(v.matrixWorld),p.nearDistance.value=v.shadow.camera.near,p.farDistance.value=v.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function gae(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,T){let S=T.program;i.uniformBlockBinding(v,S)}function c(v,T){let S=r[v.id];S===void 0&&(m(v),S=f(v),r[v.id]=S,v.addEventListener("dispose",p));let E=T.program;i.updateUBOMapping(v,E);let A=e.render.frame;s[v.id]!==A&&(h(v),s[v.id]=A)}function f(v){let T=d();v.__bindingPointIndex=T;let S=n.createBuffer(),E=v.__size,A=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,S),n.bufferData(n.UNIFORM_BUFFER,E,A),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,T,S),S}function d(){for(let v=0;v0&&(S+=E-A),v.__size=S,v.__cache={},this}function _(v){let T={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(T.boundary=4,T.storage=4):v.isVector2?(T.boundary=8,T.storage=8):v.isVector3||v.isColor?(T.boundary=16,T.storage=12):v.isVector4?(T.boundary=16,T.storage=16):v.isMatrix3?(T.boundary=48,T.storage=48):v.isMatrix4?(T.boundary=64,T.storage=64):v.isTexture?Ct("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(T.boundary=16,T.storage=v.byteLength):Ct("WebGLRenderer: Unsupported uniform value type.",v),T}function p(v){let T=v.target;T.removeEventListener("dispose",p);let S=a.indexOf(T.__bindingPointIndex);a.splice(S,1),n.deleteBuffer(r[T.id]),delete r[T.id],delete s[T.id]}function g(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:g}}function Eae(){return al===null&&(al=new Vu(vae,16,16,_f,sl),al.name="DFG_LUT",al.minFilter=Gr,al.magFilter=Gr,al.wrapS=Ia,al.wrapT=Ia,al.generateMipmaps=!1,al.needsUpdate=!0),al}var Nte,wte,Fte,Bte,Ute,Vte,Gte,kte,Wte,Hte,zte,Xte,Yte,Kte,jte,Zte,qte,Qte,$te,Jte,eie,tie,iie,rie,nie,sie,aie,oie,lie,cie,fie,die,hie,uie,mie,pie,_ie,gie,vie,Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,Iie,yie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,Hie,zie,Xie,Yie,Kie,jie,Zie,qie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,hre,ure,mre,pre,_re,gre,vre,Ere,Sre,Tre,Are,xre,Rre,bre,Mre,Ire,yre,Cre,Pre,Dre,Lre,Ore,Nre,wre,Fre,Bre,Ure,Vre,Gre,kre,Wre,Hre,zre,Xre,Yre,Kre,jre,Zre,qre,Qre,$re,Jre,ene,tne,ine,rne,nne,sne,ane,one,lne,cne,fne,dne,hne,une,ui,vt,ol,MT,mne,jB,gf,bB,Zd,Sne,ug,MB,ty,iy,ry,ny,Tne,tm,yT,Lne,ZB,oy,qB,QB,$B,PB,DB,LB,OB,NB,ly,cy,fy,sy,em,Tse,Ase,BB,Mse,IT,Lse,Ose,wse,Bse,Vse,kse,Hse,Kse,hy,uy,tae,sae,aae,oae,lae,YB,mg,ay,uae,mae,my,py,pae,JB,vae,al,CT,us=I(()=>{ey();ey();Nte=`#ifdef USE_ALPHAHASH +`+z)}else N!==""?Ct("WebGLProgram: Program Info Log:",N):(B===""||V==="")&&(K=!1);K&&(D.diagnostics={runnable:Q,programLog:N,vertexShader:{log:B,prefix:p},fragmentShader:{log:V,prefix:g}})}r.deleteShader(E),r.deleteShader(A),M=new em(r,_),y=Dse(r,_)}let M;this.getUniforms=function(){return M===void 0&&R(this),M};let y;this.getAttributes=function(){return y===void 0&&R(this),y};let C=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return C===!1&&(C=r.getProgramParameter(_,Tse)),C},this.destroy=function(){i.releaseStatesOfProgram(this),r.deleteProgram(_),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=Ase++,this.cacheKey=e,this.usedTimes=1,this.program=_,this.vertexShader=E,this.fragmentShader=A,this}function jse(n){return n===_f||n===cg||n===fg}function Zse(n,e,t,i,r,s){let a=new wu,o=new hy,l=new Set,c=[],f=new Map,d=i.logarithmicDepthBuffer,h=i.precision,u={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distance",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function m(M){return l.add(M),M===0?"uv":`uv${M}`}function _(M,y,C,D,w,G){let O=D.fog,N=w.geometry,B=M.isMeshStandardMaterial||M.isMeshLambertMaterial||M.isMeshPhongMaterial?D.environment:null,V=M.isMeshStandardMaterial||M.isMeshLambertMaterial&&!M.envMap||M.isMeshPhongMaterial&&!M.envMap,Q=e.get(M.envMap||B,V),K=Q&&Q.mapping===ng?Q.image.height:null,J=u[M.type];M.precision!==null&&(h=i.getMaxPrecision(M.precision),h!==M.precision&&Ct("WebGLProgram.getParameters:",M.precision,"not supported, using",h,"instead."));let z=N.morphAttributes.position||N.morphAttributes.normal||N.morphAttributes.color,Y=z!==void 0?z.length:0,de=0;N.morphAttributes.position!==void 0&&(de=1),N.morphAttributes.normal!==void 0&&(de=2),N.morphAttributes.color!==void 0&&(de=3);let ge,Ue,oe,ve;if(J){let Yt=ol[J];ge=Yt.vertexShader,Ue=Yt.fragmentShader}else ge=M.vertexShader,Ue=M.fragmentShader,o.update(M),oe=o.getVertexShaderID(M),ve=o.getFragmentShaderID(M);let ie=n.getRenderTarget(),ue=n.state.buffers.depth.getReversed(),Pe=w.isInstancedMesh===!0,me=w.isBatchedMesh===!0,be=!!M.map,De=!!M.matcap,ut=!!Q,Ye=!!M.aoMap,je=!!M.lightMap,Qt=!!M.bumpMap,Pt=!!M.normalMap,Ti=!!M.displacementMap,se=!!M.emissiveMap,Di=!!M.metalnessMap,ii=!!M.roughnessMap,yi=M.anisotropy>0,ct=M.clearcoat>0,Yi=M.dispersion>0,X=M.iridescence>0,U=M.sheen>0,he=M.transmission>0,ye=yi&&!!M.anisotropyMap,Be=ct&&!!M.clearcoatMap,Je=ct&&!!M.clearcoatNormalMap,st=ct&&!!M.clearcoatRoughnessMap,Ie=X&&!!M.iridescenceMap,Le=X&&!!M.iridescenceThicknessMap,lt=U&&!!M.sheenColorMap,dt=U&&!!M.sheenRoughnessMap,qe=!!M.specularMap,et=!!M.specularColorMap,wt=!!M.specularIntensityMap,$t=he&&!!M.transmissionMap,bi=he&&!!M.thicknessMap,ae=!!M.gradientMap,tt=!!M.alphaMap,Ce=M.alphaTest>0,Ze=!!M.alphaHash,rt=!!M.extensions,Ve=Ns;M.toneMapped&&(ie===null||ie.isXRRenderTarget===!0)&&(Ve=n.toneMapping);let Mt={shaderID:J,shaderType:M.type,shaderName:M.name,vertexShader:ge,fragmentShader:Ue,defines:M.defines,customVertexShaderID:oe,customFragmentShaderID:ve,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:h,batching:me,batchingColor:me&&w._colorsTexture!==null,instancing:Pe,instancingColor:Pe&&w.instanceColor!==null,instancingMorph:Pe&&w.morphTexture!==null,outputColorSpace:ie===null?n.outputColorSpace:ie.isXRRenderTarget===!0?ie.texture.colorSpace:oi.workingColorSpace,alphaToCoverage:!!M.alphaToCoverage,map:be,matcap:De,envMap:ut,envMapMode:ut&&Q.mapping,envMapCubeUVHeight:K,aoMap:Ye,lightMap:je,bumpMap:Qt,normalMap:Pt,displacementMap:Ti,emissiveMap:se,normalMapObjectSpace:Pt&&M.normalMapType===fB,normalMapTangentSpace:Pt&&M.normalMapType===$u,packedNormalMap:Pt&&M.normalMapType===$u&&jse(M.normalMap.format),metalnessMap:Di,roughnessMap:ii,anisotropy:yi,anisotropyMap:ye,clearcoat:ct,clearcoatMap:Be,clearcoatNormalMap:Je,clearcoatRoughnessMap:st,dispersion:Yi,iridescence:X,iridescenceMap:Ie,iridescenceThicknessMap:Le,sheen:U,sheenColorMap:lt,sheenRoughnessMap:dt,specularMap:qe,specularColorMap:et,specularIntensityMap:wt,transmission:he,transmissionMap:$t,thicknessMap:bi,gradientMap:ae,opaque:M.transparent===!1&&M.blending===Nd&&M.alphaToCoverage===!1,alphaMap:tt,alphaTest:Ce,alphaHash:Ze,combine:M.combine,mapUv:be&&m(M.map.channel),aoMapUv:Ye&&m(M.aoMap.channel),lightMapUv:je&&m(M.lightMap.channel),bumpMapUv:Qt&&m(M.bumpMap.channel),normalMapUv:Pt&&m(M.normalMap.channel),displacementMapUv:Ti&&m(M.displacementMap.channel),emissiveMapUv:se&&m(M.emissiveMap.channel),metalnessMapUv:Di&&m(M.metalnessMap.channel),roughnessMapUv:ii&&m(M.roughnessMap.channel),anisotropyMapUv:ye&&m(M.anisotropyMap.channel),clearcoatMapUv:Be&&m(M.clearcoatMap.channel),clearcoatNormalMapUv:Je&&m(M.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:st&&m(M.clearcoatRoughnessMap.channel),iridescenceMapUv:Ie&&m(M.iridescenceMap.channel),iridescenceThicknessMapUv:Le&&m(M.iridescenceThicknessMap.channel),sheenColorMapUv:lt&&m(M.sheenColorMap.channel),sheenRoughnessMapUv:dt&&m(M.sheenRoughnessMap.channel),specularMapUv:qe&&m(M.specularMap.channel),specularColorMapUv:et&&m(M.specularColorMap.channel),specularIntensityMapUv:wt&&m(M.specularIntensityMap.channel),transmissionMapUv:$t&&m(M.transmissionMap.channel),thicknessMapUv:bi&&m(M.thicknessMap.channel),alphaMapUv:tt&&m(M.alphaMap.channel),vertexTangents:!!N.attributes.tangent&&(Pt||yi),vertexNormals:!!N.attributes.normal,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!N.attributes.color&&N.attributes.color.itemSize===4,pointsUvs:w.isPoints===!0&&!!N.attributes.uv&&(be||tt),fog:!!O,useFog:M.fog===!0,fogExp2:!!O&&O.isFogExp2,flatShading:M.wireframe===!1&&(M.flatShading===!0||N.attributes.normal===void 0&&Pt===!1&&(M.isMeshLambertMaterial||M.isMeshPhongMaterial||M.isMeshStandardMaterial||M.isMeshPhysicalMaterial)),sizeAttenuation:M.sizeAttenuation===!0,logarithmicDepthBuffer:d,reversedDepthBuffer:ue,skinning:w.isSkinnedMesh===!0,morphTargets:N.morphAttributes.position!==void 0,morphNormals:N.morphAttributes.normal!==void 0,morphColors:N.morphAttributes.color!==void 0,morphTargetsCount:Y,morphTextureStride:de,numDirLights:y.directional.length,numPointLights:y.point.length,numSpotLights:y.spot.length,numSpotLightMaps:y.spotLightMap.length,numRectAreaLights:y.rectArea.length,numHemiLights:y.hemi.length,numDirLightShadows:y.directionalShadowMap.length,numPointLightShadows:y.pointShadowMap.length,numSpotLightShadows:y.spotShadowMap.length,numSpotLightShadowsWithMaps:y.numSpotLightShadowsWithMaps,numLightProbes:y.numLightProbes,numLightProbeGrids:G.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&C.length>0,shadowMapType:n.shadowMap.type,toneMapping:Ve,decodeVideoTexture:be&&M.map.isVideoTexture===!0&&oi.getTransfer(M.map.colorSpace)===Ji,decodeVideoTextureEmissive:se&&M.emissiveMap.isVideoTexture===!0&&oi.getTransfer(M.emissiveMap.colorSpace)===Ji,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===Ca,flipSided:M.side===Mn,useDepthPacking:M.depthPacking>=0,depthPacking:M.depthPacking||0,index0AttributeName:M.index0AttributeName,extensionClipCullDistance:rt&&M.extensions.clipCullDistance===!0&&t.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(rt&&M.extensions.multiDraw===!0||me)&&t.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:t.has("KHR_parallel_shader_compile"),customProgramCacheKey:M.customProgramCacheKey()};return Mt.vertexUv1s=l.has(1),Mt.vertexUv2s=l.has(2),Mt.vertexUv3s=l.has(3),l.clear(),Mt}function p(M){let y=[];if(M.shaderID?y.push(M.shaderID):(y.push(M.customVertexShaderID),y.push(M.customFragmentShaderID)),M.defines!==void 0)for(let C in M.defines)y.push(C),y.push(M.defines[C]);return M.isRawShaderMaterial===!1&&(g(y,M),v(y,M),y.push(n.outputColorSpace)),y.push(M.customProgramCacheKey),y.join()}function g(M,y){M.push(y.precision),M.push(y.outputColorSpace),M.push(y.envMapMode),M.push(y.envMapCubeUVHeight),M.push(y.mapUv),M.push(y.alphaMapUv),M.push(y.lightMapUv),M.push(y.aoMapUv),M.push(y.bumpMapUv),M.push(y.normalMapUv),M.push(y.displacementMapUv),M.push(y.emissiveMapUv),M.push(y.metalnessMapUv),M.push(y.roughnessMapUv),M.push(y.anisotropyMapUv),M.push(y.clearcoatMapUv),M.push(y.clearcoatNormalMapUv),M.push(y.clearcoatRoughnessMapUv),M.push(y.iridescenceMapUv),M.push(y.iridescenceThicknessMapUv),M.push(y.sheenColorMapUv),M.push(y.sheenRoughnessMapUv),M.push(y.specularMapUv),M.push(y.specularColorMapUv),M.push(y.specularIntensityMapUv),M.push(y.transmissionMapUv),M.push(y.thicknessMapUv),M.push(y.combine),M.push(y.fogExp2),M.push(y.sizeAttenuation),M.push(y.morphTargetsCount),M.push(y.morphAttributeCount),M.push(y.numDirLights),M.push(y.numPointLights),M.push(y.numSpotLights),M.push(y.numSpotLightMaps),M.push(y.numHemiLights),M.push(y.numRectAreaLights),M.push(y.numDirLightShadows),M.push(y.numPointLightShadows),M.push(y.numSpotLightShadows),M.push(y.numSpotLightShadowsWithMaps),M.push(y.numLightProbes),M.push(y.shadowMapType),M.push(y.toneMapping),M.push(y.numClippingPlanes),M.push(y.numClipIntersection),M.push(y.depthPacking)}function v(M,y){a.disableAll(),y.instancing&&a.enable(0),y.instancingColor&&a.enable(1),y.instancingMorph&&a.enable(2),y.matcap&&a.enable(3),y.envMap&&a.enable(4),y.normalMapObjectSpace&&a.enable(5),y.normalMapTangentSpace&&a.enable(6),y.clearcoat&&a.enable(7),y.iridescence&&a.enable(8),y.alphaTest&&a.enable(9),y.vertexColors&&a.enable(10),y.vertexAlphas&&a.enable(11),y.vertexUv1s&&a.enable(12),y.vertexUv2s&&a.enable(13),y.vertexUv3s&&a.enable(14),y.vertexTangents&&a.enable(15),y.anisotropy&&a.enable(16),y.alphaHash&&a.enable(17),y.batching&&a.enable(18),y.dispersion&&a.enable(19),y.batchingColor&&a.enable(20),y.gradientMap&&a.enable(21),y.packedNormalMap&&a.enable(22),y.vertexNormals&&a.enable(23),M.push(a.mask),a.disableAll(),y.fog&&a.enable(0),y.useFog&&a.enable(1),y.flatShading&&a.enable(2),y.logarithmicDepthBuffer&&a.enable(3),y.reversedDepthBuffer&&a.enable(4),y.skinning&&a.enable(5),y.morphTargets&&a.enable(6),y.morphNormals&&a.enable(7),y.morphColors&&a.enable(8),y.premultipliedAlpha&&a.enable(9),y.shadowMapEnabled&&a.enable(10),y.doubleSided&&a.enable(11),y.flipSided&&a.enable(12),y.useDepthPacking&&a.enable(13),y.dithering&&a.enable(14),y.transmission&&a.enable(15),y.sheen&&a.enable(16),y.opaque&&a.enable(17),y.pointsUvs&&a.enable(18),y.decodeVideoTexture&&a.enable(19),y.decodeVideoTextureEmissive&&a.enable(20),y.alphaToCoverage&&a.enable(21),y.numLightProbeGrids>0&&a.enable(22),M.push(a.mask)}function T(M){let y=u[M.type],C;if(y){let D=ol[y];C=xB.clone(D.uniforms)}else C=M.uniforms;return C}function S(M,y){let C=f.get(y);return C!==void 0?++C.usedTimes:(C=new Yse(n,y,M,r),c.push(C),f.set(y,C)),C}function E(M){if(--M.usedTimes===0){let y=c.indexOf(M);c[y]=c[c.length-1],c.pop(),f.delete(M.cacheKey),M.destroy()}}function A(M){o.remove(M)}function R(){o.dispose()}return{getParameters:_,getProgramCacheKey:p,getUniforms:T,acquireProgram:S,releaseProgram:E,releaseShaderCache:A,programs:c,dispose:R}}function qse(){let n=new WeakMap;function e(a){return n.has(a)}function t(a){let o=n.get(a);return o===void 0&&(o={},n.set(a,o)),o}function i(a){n.delete(a)}function r(a,o,l){n.get(a)[o]=l}function s(){n=new WeakMap}return{has:e,get:t,remove:i,update:r,dispose:s}}function Qse(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.material.id!==e.material.id?n.material.id-e.material.id:n.materialVariant!==e.materialVariant?n.materialVariant-e.materialVariant:n.z!==e.z?n.z-e.z:n.id-e.id}function HB(n,e){return n.groupOrder!==e.groupOrder?n.groupOrder-e.groupOrder:n.renderOrder!==e.renderOrder?n.renderOrder-e.renderOrder:n.z!==e.z?e.z-n.z:n.id-e.id}function zB(){let n=[],e=0,t=[],i=[],r=[];function s(){e=0,t.length=0,i.length=0,r.length=0}function a(h){let u=0;return h.isInstancedMesh&&(u+=2),h.isSkinnedMesh&&(u+=1),u}function o(h,u,m,_,p,g){let v=n[e];return v===void 0?(v={id:h.id,object:h,geometry:u,material:m,materialVariant:a(h),groupOrder:_,renderOrder:h.renderOrder,z:p,group:g},n[e]=v):(v.id=h.id,v.object=h,v.geometry=u,v.material=m,v.materialVariant=a(h),v.groupOrder=_,v.renderOrder=h.renderOrder,v.z=p,v.group=g),e++,v}function l(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.push(v):m.transparent===!0?r.push(v):t.push(v)}function c(h,u,m,_,p,g){let v=o(h,u,m,_,p,g);m.transmission>0?i.unshift(v):m.transparent===!0?r.unshift(v):t.unshift(v)}function f(h,u){t.length>1&&t.sort(h||Qse),i.length>1&&i.sort(u||HB),r.length>1&&r.sort(u||HB)}function d(){for(let h=e,u=n.length;h=s.length?(a=new zB,s.push(a)):a=s[r],a}function t(){n=new WeakMap}return{get:e,dispose:t}}function Jse(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new re,color:new ht};break;case"SpotLight":t={position:new re,direction:new re,color:new ht,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new re,color:new ht,distance:0,decay:0};break;case"HemisphereLight":t={direction:new re,skyColor:new ht,groundColor:new ht};break;case"RectAreaLight":t={color:new ht,position:new re,halfWidth:new re,halfHeight:new re};break}return n[e.id]=t,t}}}function eae(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It};break;case"SpotLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It};break;case"PointLight":t={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new It,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}function iae(n,e){return(e.castShadow?2:0)-(n.castShadow?2:0)+(e.map?1:0)-(n.map?1:0)}function rae(n){let e=new Jse,t=eae(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let c=0;c<9;c++)i.probe.push(new re);let r=new re,s=new li,a=new li;function o(c){let f=0,d=0,h=0;for(let y=0;y<9;y++)i.probe[y].set(0,0,0);let u=0,m=0,_=0,p=0,g=0,v=0,T=0,S=0,E=0,A=0,R=0;c.sort(iae);for(let y=0,C=c.length;y0&&(n.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=vt.LTC_FLOAT_1,i.rectAreaLTC2=vt.LTC_FLOAT_2):(i.rectAreaLTC1=vt.LTC_HALF_1,i.rectAreaLTC2=vt.LTC_HALF_2)),i.ambient[0]=f,i.ambient[1]=d,i.ambient[2]=h;let M=i.hash;(M.directionalLength!==u||M.pointLength!==m||M.spotLength!==_||M.rectAreaLength!==p||M.hemiLength!==g||M.numDirectionalShadows!==v||M.numPointShadows!==T||M.numSpotShadows!==S||M.numSpotMaps!==E||M.numLightProbes!==R)&&(i.directional.length=u,i.spot.length=_,i.rectArea.length=p,i.point.length=m,i.hemi.length=g,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=T,i.pointShadowMap.length=T,i.spotShadow.length=S,i.spotShadowMap.length=S,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=T,i.spotLightMatrix.length=S+E-A,i.spotLightMap.length=E,i.numSpotLightShadowsWithMaps=A,i.numLightProbes=R,M.directionalLength=u,M.pointLength=m,M.spotLength=_,M.rectAreaLength=p,M.hemiLength=g,M.numDirectionalShadows=v,M.numPointShadows=T,M.numSpotShadows=S,M.numSpotMaps=E,M.numLightProbes=R,i.version=tae++)}function l(c,f){let d=0,h=0,u=0,m=0,_=0,p=f.matrixWorldInverse;for(let g=0,v=c.length;g=a.length?(o=new XB(n),a.push(o)):o=a[s],o}function i(){e=new WeakMap}return{get:t,dispose:i}}function cae(n,e,t){let i=new Gu,r=new It,s=new It,a=new or,o=new RS,l=new bS,c={},f=t.maxTextureSize,d={[aa]:Mn,[Mn]:aa,[Ca]:Ca},h=new la({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new It},radius:{value:4}},vertexShader:sae,fragmentShader:aae}),u=h.clone();u.defines.HORIZONTAL_PASS=1;let m=new Qi;m.setAttribute("position",new vr(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let _=new ci(m,h),p=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=ig;let g=this.type;this.render=function(A,R,M){if(p.enabled===!1||p.autoUpdate===!1&&p.needsUpdate===!1||A.length===0)return;this.type===FS&&(Ct("WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead."),this.type=ig);let y=n.getRenderTarget(),C=n.getActiveCubeFace(),D=n.getActiveMipmapLevel(),w=n.state;w.setBlending(nl),w.buffers.depth.getReversed()===!0?w.buffers.color.setClear(0,0,0,0):w.buffers.color.setClear(1,1,1,1),w.buffers.depth.setTest(!0),w.setScissorTest(!1);let G=g!==this.type;G&&R.traverse(function(O){O.material&&(Array.isArray(O.material)?O.material.forEach(N=>N.needsUpdate=!0):O.material.needsUpdate=!0)});for(let O=0,N=A.length;Of||r.y>f)&&(r.x>f&&(s.x=Math.floor(f/Q.x),r.x=s.x*Q.x,V.mapSize.x=s.x),r.y>f&&(s.y=Math.floor(f/Q.y),r.y=s.y*Q.y,V.mapSize.y=s.y));let K=n.state.buffers.depth.getReversed();if(V.camera._reversedDepth=K,V.map===null||G===!0){if(V.map!==null&&(V.map.depthTexture!==null&&(V.map.depthTexture.dispose(),V.map.depthTexture=null),V.map.dispose()),this.type===Ku){if(B.isPointLight){Ct("WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.");continue}V.map=new oa(r.x,r.y,{format:_f,type:sl,minFilter:Gr,magFilter:Gr,generateMipmaps:!1}),V.map.texture.name=B.name+".shadowMap",V.map.depthTexture=new Yl(r.x,r.y,ca),V.map.depthTexture.name=B.name+".shadowMapDepth",V.map.depthTexture.format=qo,V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr}else B.isPointLight?(V.map=new CT(r.x),V.map.depthTexture=new AS(r.x,mo)):(V.map=new oa(r.x,r.y),V.map.depthTexture=new Yl(r.x,r.y,mo)),V.map.depthTexture.name=B.name+".shadowMap",V.map.depthTexture.format=qo,this.type===ig?(V.map.depthTexture.compareFunction=K?bT:RT,V.map.depthTexture.minFilter=Gr,V.map.depthTexture.magFilter=Gr):(V.map.depthTexture.compareFunction=null,V.map.depthTexture.minFilter=Vr,V.map.depthTexture.magFilter=Vr);V.camera.updateProjectionMatrix()}let J=V.map.isWebGLCubeRenderTarget?6:1;for(let z=0;z0||R.map&&R.alphaTest>0||R.alphaToCoverage===!0){let w=C.uuid,G=R.uuid,O=c[w];O===void 0&&(O={},c[w]=O);let N=O[G];N===void 0&&(N=C.clone(),O[G]=N,R.addEventListener("dispose",E)),C=N}if(C.visible=R.visible,C.wireframe=R.wireframe,y===Ku?C.side=R.shadowSide!==null?R.shadowSide:R.side:C.side=R.shadowSide!==null?R.shadowSide:d[R.side],C.alphaMap=R.alphaMap,C.alphaTest=R.alphaToCoverage===!0?.5:R.alphaTest,C.map=R.map,C.clipShadows=R.clipShadows,C.clippingPlanes=R.clippingPlanes,C.clipIntersection=R.clipIntersection,C.displacementMap=R.displacementMap,C.displacementScale=R.displacementScale,C.displacementBias=R.displacementBias,C.wireframeLinewidth=R.wireframeLinewidth,C.linewidth=R.linewidth,M.isPointLight===!0&&C.isMeshDistanceMaterial===!0){let w=n.properties.get(C);w.light=M}return C}function S(A,R,M,y,C){if(A.visible===!1)return;if(A.layers.test(R.layers)&&(A.isMesh||A.isLine||A.isPoints)&&(A.castShadow||A.receiveShadow&&C===Ku)&&(!A.frustumCulled||i.intersectsObject(A))){A.modelViewMatrix.multiplyMatrices(M.matrixWorldInverse,A.matrixWorld);let G=e.update(A),O=A.material;if(Array.isArray(O)){let N=G.groups;for(let B=0,V=N.length;B=1):K.indexOf("OpenGL ES")!==-1&&(Q=parseFloat(/^OpenGL ES (\d)/.exec(K)[1]),V=Q>=2);let J=null,z={},Y=n.getParameter(n.SCISSOR_BOX),de=n.getParameter(n.VIEWPORT),ge=new or().fromArray(Y),Ue=new or().fromArray(de);function oe(ae,tt,Ce,Ze){let rt=new Uint8Array(4),Ve=n.createTexture();n.bindTexture(ae,Ve),n.texParameteri(ae,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(ae,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let Mt=0;Mthe||Be.height>he)&&(ye=he/Math.max(Be.width,Be.height)),ye<1)if(typeof HTMLImageElement!="undefined"&&X instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&X instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&X instanceof ImageBitmap||typeof VideoFrame!="undefined"&&X instanceof VideoFrame){let Je=Math.floor(ye*Be.width),st=Math.floor(ye*Be.height);h===void 0&&(h=_(Je,st));let Ie=U?_(Je,st):h;return Ie.width=Je,Ie.height=st,Ie.getContext("2d").drawImage(X,0,0,Je,st),Ct("WebGLRenderer: Texture has been resized from ("+Be.width+"x"+Be.height+") to ("+Je+"x"+st+")."),Ie}else return"data"in X&&Ct("WebGLRenderer: Image in DataTexture is too big ("+Be.width+"x"+Be.height+")."),X;return X}function g(X){return X.generateMipmaps}function v(X){n.generateMipmap(X)}function T(X){return X.isWebGLCubeRenderTarget?n.TEXTURE_CUBE_MAP:X.isWebGL3DRenderTarget?n.TEXTURE_3D:X.isWebGLArrayRenderTarget||X.isCompressedArrayTexture?n.TEXTURE_2D_ARRAY:n.TEXTURE_2D}function S(X,U,he,ye,Be,Je=!1){if(X!==null){if(n[X]!==void 0)return n[X];Ct("WebGLRenderer: Attempt to use non-existing WebGL internal format '"+X+"'")}let st;ye&&(st=e.get("EXT_texture_norm16"),st||Ct("WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension"));let Ie=U;if(U===n.RED&&(he===n.FLOAT&&(Ie=n.R32F),he===n.HALF_FLOAT&&(Ie=n.R16F),he===n.UNSIGNED_BYTE&&(Ie=n.R8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.R16_EXT),he===n.SHORT&&st&&(Ie=st.R16_SNORM_EXT)),U===n.RED_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.R8UI),he===n.UNSIGNED_SHORT&&(Ie=n.R16UI),he===n.UNSIGNED_INT&&(Ie=n.R32UI),he===n.BYTE&&(Ie=n.R8I),he===n.SHORT&&(Ie=n.R16I),he===n.INT&&(Ie=n.R32I)),U===n.RG&&(he===n.FLOAT&&(Ie=n.RG32F),he===n.HALF_FLOAT&&(Ie=n.RG16F),he===n.UNSIGNED_BYTE&&(Ie=n.RG8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.RG16_EXT),he===n.SHORT&&st&&(Ie=st.RG16_SNORM_EXT)),U===n.RG_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RG8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RG16UI),he===n.UNSIGNED_INT&&(Ie=n.RG32UI),he===n.BYTE&&(Ie=n.RG8I),he===n.SHORT&&(Ie=n.RG16I),he===n.INT&&(Ie=n.RG32I)),U===n.RGB_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RGB8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RGB16UI),he===n.UNSIGNED_INT&&(Ie=n.RGB32UI),he===n.BYTE&&(Ie=n.RGB8I),he===n.SHORT&&(Ie=n.RGB16I),he===n.INT&&(Ie=n.RGB32I)),U===n.RGBA_INTEGER&&(he===n.UNSIGNED_BYTE&&(Ie=n.RGBA8UI),he===n.UNSIGNED_SHORT&&(Ie=n.RGBA16UI),he===n.UNSIGNED_INT&&(Ie=n.RGBA32UI),he===n.BYTE&&(Ie=n.RGBA8I),he===n.SHORT&&(Ie=n.RGBA16I),he===n.INT&&(Ie=n.RGBA32I)),U===n.RGB&&(he===n.UNSIGNED_SHORT&&st&&(Ie=st.RGB16_EXT),he===n.SHORT&&st&&(Ie=st.RGB16_SNORM_EXT),he===n.UNSIGNED_INT_5_9_9_9_REV&&(Ie=n.RGB9_E5),he===n.UNSIGNED_INT_10F_11F_11F_REV&&(Ie=n.R11F_G11F_B10F)),U===n.RGBA){let Le=Je?N_:oi.getTransfer(Be);he===n.FLOAT&&(Ie=n.RGBA32F),he===n.HALF_FLOAT&&(Ie=n.RGBA16F),he===n.UNSIGNED_BYTE&&(Ie=Le===Ji?n.SRGB8_ALPHA8:n.RGBA8),he===n.UNSIGNED_SHORT&&st&&(Ie=st.RGBA16_EXT),he===n.SHORT&&st&&(Ie=st.RGBA16_SNORM_EXT),he===n.UNSIGNED_SHORT_4_4_4_4&&(Ie=n.RGBA4),he===n.UNSIGNED_SHORT_5_5_5_1&&(Ie=n.RGB5_A1)}return(Ie===n.R16F||Ie===n.R32F||Ie===n.RG16F||Ie===n.RG32F||Ie===n.RGBA16F||Ie===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Ie}function E(X,U){let he;return X?U===null||U===mo||U===qu?he=n.DEPTH24_STENCIL8:U===ca?he=n.DEPTH32F_STENCIL8:U===Zu&&(he=n.DEPTH24_STENCIL8,Ct("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):U===null||U===mo||U===qu?he=n.DEPTH_COMPONENT24:U===ca?he=n.DEPTH_COMPONENT32F:U===Zu&&(he=n.DEPTH_COMPONENT16),he}function A(X,U){return g(X)===!0||X.isFramebufferTexture&&X.minFilter!==Vr&&X.minFilter!==Gr?Math.log2(Math.max(U.width,U.height))+1:X.mipmaps!==void 0&&X.mipmaps.length>0?X.mipmaps.length:X.isCompressedTexture&&Array.isArray(X.image)?U.mipmaps.length:1}function R(X){let U=X.target;U.removeEventListener("dispose",R),y(U),U.isVideoTexture&&f.delete(U),U.isHTMLTexture&&d.delete(U)}function M(X){let U=X.target;U.removeEventListener("dispose",M),D(U)}function y(X){let U=i.get(X);if(U.__webglInit===void 0)return;let he=X.source,ye=u.get(he);if(ye){let Be=ye[U.__cacheKey];Be.usedTimes--,Be.usedTimes===0&&C(X),Object.keys(ye).length===0&&u.delete(he)}i.remove(X)}function C(X){let U=i.get(X);n.deleteTexture(U.__webglTexture);let he=X.source,ye=u.get(he);delete ye[U.__cacheKey],a.memory.textures--}function D(X){let U=i.get(X);if(X.depthTexture&&(X.depthTexture.dispose(),i.remove(X.depthTexture)),X.isWebGLCubeRenderTarget)for(let ye=0;ye<6;ye++){if(Array.isArray(U.__webglFramebuffer[ye]))for(let Be=0;Be=r.maxTextures&&Ct("WebGLTextures: Trying to use "+X+" texture units while this GPU supports only "+r.maxTextures),w+=1,X}function V(X){let U=[];return U.push(X.wrapS),U.push(X.wrapT),U.push(X.wrapR||0),U.push(X.magFilter),U.push(X.minFilter),U.push(X.anisotropy),U.push(X.internalFormat),U.push(X.format),U.push(X.type),U.push(X.generateMipmaps),U.push(X.premultiplyAlpha),U.push(X.flipY),U.push(X.unpackAlignment),U.push(X.colorSpace),U.join()}function Q(X,U){let he=i.get(X);if(X.isVideoTexture&&yi(X),X.isRenderTargetTexture===!1&&X.isExternalTexture!==!0&&X.version>0&&he.__version!==X.version){let ye=X.image;if(ye===null)Ct("WebGLRenderer: Texture marked for update but no image data found.");else if(ye.complete===!1)Ct("WebGLRenderer: Texture marked for update but image is incomplete");else{ue(he,X,U);return}}else X.isExternalTexture&&(he.__webglTexture=X.sourceTexture?X.sourceTexture:null);t.bindTexture(n.TEXTURE_2D,he.__webglTexture,n.TEXTURE0+U)}function K(X,U){let he=i.get(X);if(X.isRenderTargetTexture===!1&&X.version>0&&he.__version!==X.version){ue(he,X,U);return}else X.isExternalTexture&&(he.__webglTexture=X.sourceTexture?X.sourceTexture:null);t.bindTexture(n.TEXTURE_2D_ARRAY,he.__webglTexture,n.TEXTURE0+U)}function J(X,U){let he=i.get(X);if(X.isRenderTargetTexture===!1&&X.version>0&&he.__version!==X.version){ue(he,X,U);return}t.bindTexture(n.TEXTURE_3D,he.__webglTexture,n.TEXTURE0+U)}function z(X,U){let he=i.get(X);if(X.isCubeDepthTexture!==!0&&X.version>0&&he.__version!==X.version){Pe(he,X,U);return}t.bindTexture(n.TEXTURE_CUBE_MAP,he.__webglTexture,n.TEXTURE0+U)}let Y={[Zo]:n.REPEAT,[Ia]:n.CLAMP_TO_EDGE,[Pu]:n.MIRRORED_REPEAT},de={[Vr]:n.NEAREST,[VS]:n.NEAREST_MIPMAP_NEAREST,[Kd]:n.NEAREST_MIPMAP_LINEAR,[Gr]:n.LINEAR,[ju]:n.LINEAR_MIPMAP_NEAREST,[uo]:n.LINEAR_MIPMAP_LINEAR},ge={[dB]:n.NEVER,[_B]:n.ALWAYS,[hB]:n.LESS,[RT]:n.LEQUAL,[uB]:n.EQUAL,[bT]:n.GEQUAL,[mB]:n.GREATER,[pB]:n.NOTEQUAL};function Ue(X,U){if(U.type===ca&&e.has("OES_texture_float_linear")===!1&&(U.magFilter===Gr||U.magFilter===ju||U.magFilter===Kd||U.magFilter===uo||U.minFilter===Gr||U.minFilter===ju||U.minFilter===Kd||U.minFilter===uo)&&Ct("WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),n.texParameteri(X,n.TEXTURE_WRAP_S,Y[U.wrapS]),n.texParameteri(X,n.TEXTURE_WRAP_T,Y[U.wrapT]),(X===n.TEXTURE_3D||X===n.TEXTURE_2D_ARRAY)&&n.texParameteri(X,n.TEXTURE_WRAP_R,Y[U.wrapR]),n.texParameteri(X,n.TEXTURE_MAG_FILTER,de[U.magFilter]),n.texParameteri(X,n.TEXTURE_MIN_FILTER,de[U.minFilter]),U.compareFunction&&(n.texParameteri(X,n.TEXTURE_COMPARE_MODE,n.COMPARE_REF_TO_TEXTURE),n.texParameteri(X,n.TEXTURE_COMPARE_FUNC,ge[U.compareFunction])),e.has("EXT_texture_filter_anisotropic")===!0){if(U.magFilter===Vr||U.minFilter!==Kd&&U.minFilter!==uo||U.type===ca&&e.has("OES_texture_float_linear")===!1)return;if(U.anisotropy>1||i.get(U).__currentAnisotropy){let he=e.get("EXT_texture_filter_anisotropic");n.texParameterf(X,he.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(U.anisotropy,r.getMaxAnisotropy())),i.get(U).__currentAnisotropy=U.anisotropy}}}function oe(X,U){let he=!1;X.__webglInit===void 0&&(X.__webglInit=!0,U.addEventListener("dispose",R));let ye=U.source,Be=u.get(ye);Be===void 0&&(Be={},u.set(ye,Be));let Je=V(U);if(Je!==X.__cacheKey){Be[Je]===void 0&&(Be[Je]={texture:n.createTexture(),usedTimes:0},a.memory.textures++,he=!0),Be[Je].usedTimes++;let st=Be[X.__cacheKey];st!==void 0&&(Be[X.__cacheKey].usedTimes--,st.usedTimes===0&&C(U)),X.__cacheKey=Je,X.__webglTexture=Be[Je].texture}return he}function ve(X,U,he){return Math.floor(Math.floor(X/he)/U)}function ie(X,U,he,ye){let Je=X.updateRanges;if(Je.length===0)t.texSubImage2D(n.TEXTURE_2D,0,0,0,U.width,U.height,he,ye,U.data);else{Je.sort((dt,qe)=>dt.start-qe.start);let st=0;for(let dt=1;dt0){$t&&bi&&t.texStorage2D(n.TEXTURE_2D,tt,qe,wt[0].width,wt[0].height);for(let Ce=0,Ze=wt.length;Ce0){let rt=jI(et.width,et.height,U.format,U.type);for(let Ve of U.layerUpdates){let Mt=et.data.subarray(Ve*rt/et.data.BYTES_PER_ELEMENT,(Ve+1)*rt/et.data.BYTES_PER_ELEMENT);t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,Ve,et.width,et.height,1,lt,Mt)}U.clearLayerUpdates()}else t.compressedTexSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,et.width,et.height,Le.depth,lt,et.data)}else t.compressedTexImage3D(n.TEXTURE_2D_ARRAY,Ce,qe,et.width,et.height,Le.depth,0,et.data,0,0);else Ct("WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else $t?ae&&t.texSubImage3D(n.TEXTURE_2D_ARRAY,Ce,0,0,0,et.width,et.height,Le.depth,lt,dt,et.data):t.texImage3D(n.TEXTURE_2D_ARRAY,Ce,qe,et.width,et.height,Le.depth,0,lt,dt,et.data)}else{$t&&bi&&t.texStorage2D(n.TEXTURE_2D,tt,qe,wt[0].width,wt[0].height);for(let Ce=0,Ze=wt.length;Ce0){let Ce=jI(Le.width,Le.height,U.format,U.type);for(let Ze of U.layerUpdates){let rt=Le.data.subarray(Ze*Ce/Le.data.BYTES_PER_ELEMENT,(Ze+1)*Ce/Le.data.BYTES_PER_ELEMENT);t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,Ze,Le.width,Le.height,1,lt,dt,rt)}U.clearLayerUpdates()}else t.texSubImage3D(n.TEXTURE_2D_ARRAY,0,0,0,0,Le.width,Le.height,Le.depth,lt,dt,Le.data)}else t.texImage3D(n.TEXTURE_2D_ARRAY,0,qe,Le.width,Le.height,Le.depth,0,lt,dt,Le.data);else if(U.isData3DTexture)$t?(bi&&t.texStorage3D(n.TEXTURE_3D,tt,qe,Le.width,Le.height,Le.depth),ae&&t.texSubImage3D(n.TEXTURE_3D,0,0,0,0,Le.width,Le.height,Le.depth,lt,dt,Le.data)):t.texImage3D(n.TEXTURE_3D,0,qe,Le.width,Le.height,Le.depth,0,lt,dt,Le.data);else if(U.isFramebufferTexture){if(bi)if($t)t.texStorage2D(n.TEXTURE_2D,tt,qe,Le.width,Le.height);else{let Ce=Le.width,Ze=Le.height;for(let rt=0;rt>=1,Ze>>=1}}else if(U.isHTMLTexture){if("texElementImage2D"in n){let Ce=n.canvas;if(Ce.hasAttribute("layoutsubtree")||Ce.setAttribute("layoutsubtree","true"),Le.parentNode!==Ce){Ce.appendChild(Le),d.add(U),Ce.onpaint=Yt=>{let pr=Yt.changedElements;for(let Ai of d)pr.includes(Ai.image)&&(Ai.needsUpdate=!0)},Ce.requestPaint();return}let Ze=0,rt=n.RGBA,Ve=n.RGBA,Mt=n.UNSIGNED_BYTE;n.texElementImage2D(n.TEXTURE_2D,Ze,rt,Ve,Mt,Le),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE)}}else if(wt.length>0){if($t&&bi){let Ce=Yi(wt[0]);t.texStorage2D(n.TEXTURE_2D,tt,qe,Ce.width,Ce.height)}for(let Ce=0,Ze=wt.length;Ce0&&Ze++;let Ve=Yi(qe[0]);t.texStorage2D(n.TEXTURE_CUBE_MAP,Ze,bi,Ve.width,Ve.height)}for(let Ve=0;Ve<6;Ve++)if(dt){ae?Ce&&t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,0,0,qe[Ve].width,qe[Ve].height,wt,$t,qe[Ve].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+Ve,0,bi,qe[Ve].width,qe[Ve].height,0,wt,$t,qe[Ve].data);for(let Mt=0;Mt>Je),et=Math.max(1,U.height>>Je);Be===n.TEXTURE_3D||Be===n.TEXTURE_2D_ARRAY?t.texImage3D(Be,Je,Le,qe,et,U.depth,0,st,Ie,null):t.texImage2D(Be,Je,Le,qe,et,0,st,Ie,null)}t.bindFramebuffer(n.FRAMEBUFFER,X),ii(U)?o.framebufferTexture2DMultisampleEXT(n.FRAMEBUFFER,ye,Be,dt.__webglTexture,0,Di(U)):(Be===n.TEXTURE_2D||Be>=n.TEXTURE_CUBE_MAP_POSITIVE_X&&Be<=n.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&n.framebufferTexture2D(n.FRAMEBUFFER,ye,Be,dt.__webglTexture,Je),t.bindFramebuffer(n.FRAMEBUFFER,null)}function be(X,U,he){if(n.bindRenderbuffer(n.RENDERBUFFER,X),U.depthBuffer){let ye=U.depthTexture,Be=ye&&ye.isDepthTexture?ye.type:null,Je=E(U.stencilBuffer,Be),st=U.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT;ii(U)?o.renderbufferStorageMultisampleEXT(n.RENDERBUFFER,Di(U),Je,U.width,U.height):he?n.renderbufferStorageMultisample(n.RENDERBUFFER,Di(U),Je,U.width,U.height):n.renderbufferStorage(n.RENDERBUFFER,Je,U.width,U.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,st,n.RENDERBUFFER,X)}else{let ye=U.textures;for(let Be=0;Be{delete U.__boundDepthTexture,delete U.__depthDisposeCallback,ye.removeEventListener("dispose",Be)};ye.addEventListener("dispose",Be),U.__depthDisposeCallback=Be}U.__boundDepthTexture=ye}if(X.depthTexture&&!U.__autoAllocateDepthBuffer)if(he)for(let ye=0;ye<6;ye++)De(U.__webglFramebuffer[ye],X,ye);else{let ye=X.texture.mipmaps;ye&&ye.length>0?De(U.__webglFramebuffer[0],X,0):De(U.__webglFramebuffer,X,0)}else if(he){U.__webglDepthbuffer=[];for(let ye=0;ye<6;ye++)if(t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[ye]),U.__webglDepthbuffer[ye]===void 0)U.__webglDepthbuffer[ye]=n.createRenderbuffer(),be(U.__webglDepthbuffer[ye],X,!1);else{let Be=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Je=U.__webglDepthbuffer[ye];n.bindRenderbuffer(n.RENDERBUFFER,Je),n.framebufferRenderbuffer(n.FRAMEBUFFER,Be,n.RENDERBUFFER,Je)}}else{let ye=X.texture.mipmaps;if(ye&&ye.length>0?t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer[0]):t.bindFramebuffer(n.FRAMEBUFFER,U.__webglFramebuffer),U.__webglDepthbuffer===void 0)U.__webglDepthbuffer=n.createRenderbuffer(),be(U.__webglDepthbuffer,X,!1);else{let Be=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,Je=U.__webglDepthbuffer;n.bindRenderbuffer(n.RENDERBUFFER,Je),n.framebufferRenderbuffer(n.FRAMEBUFFER,Be,n.RENDERBUFFER,Je)}}t.bindFramebuffer(n.FRAMEBUFFER,null)}function Ye(X,U,he){let ye=i.get(X);U!==void 0&&me(ye.__webglFramebuffer,X,X.texture,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,0),he!==void 0&&ut(X)}function je(X){let U=X.texture,he=i.get(X),ye=i.get(U);X.addEventListener("dispose",M);let Be=X.textures,Je=X.isWebGLCubeRenderTarget===!0,st=Be.length>1;if(st||(ye.__webglTexture===void 0&&(ye.__webglTexture=n.createTexture()),ye.__version=U.version,a.memory.textures++),Je){he.__webglFramebuffer=[];for(let Ie=0;Ie<6;Ie++)if(U.mipmaps&&U.mipmaps.length>0){he.__webglFramebuffer[Ie]=[];for(let Le=0;Le0){he.__webglFramebuffer=[];for(let Ie=0;Ie0&&ii(X)===!1){he.__webglMultisampledFramebuffer=n.createFramebuffer(),he.__webglColorRenderbuffer=[],t.bindFramebuffer(n.FRAMEBUFFER,he.__webglMultisampledFramebuffer);for(let Ie=0;Ie0)for(let Le=0;Le0)for(let Le=0;Le0){if(ii(X)===!1){let U=X.textures,he=X.width,ye=X.height,Be=n.COLOR_BUFFER_BIT,Je=X.stencilBuffer?n.DEPTH_STENCIL_ATTACHMENT:n.DEPTH_ATTACHMENT,st=i.get(X),Ie=U.length>1;if(Ie)for(let lt=0;lt0?t.bindFramebuffer(n.DRAW_FRAMEBUFFER,st.__webglFramebuffer[0]):t.bindFramebuffer(n.DRAW_FRAMEBUFFER,st.__webglFramebuffer);for(let lt=0;lt0&&e.has("WEBGL_multisampled_render_to_texture")===!0&&U.__useRenderToTexture!==!1}function yi(X){let U=a.render.frame;f.get(X)!==U&&(f.set(X,U),X.update())}function ct(X,U){let he=X.colorSpace,ye=X.format,Be=X.type;return X.isCompressedTexture===!0||X.isVideoTexture===!0||he!==fs&&he!==Ql&&(oi.getTransfer(he)===Ji?(ye!==fa||Be!==ws)&&Ct("WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):Vt("WebGLTextures: Unsupported texture color space:",he)),U}function Yi(X){return typeof HTMLImageElement!="undefined"&&X instanceof HTMLImageElement?(c.width=X.naturalWidth||X.width,c.height=X.naturalHeight||X.height):typeof VideoFrame!="undefined"&&X instanceof VideoFrame?(c.width=X.displayWidth,c.height=X.displayHeight):(c.width=X.width,c.height=X.height),c}this.allocateTextureUnit=B,this.resetTextureUnits=G,this.getTextureUnits=O,this.setTextureUnits=N,this.setTexture2D=Q,this.setTexture2DArray=K,this.setTexture3D=J,this.setTextureCube=z,this.rebindTextures=Ye,this.setupRenderTarget=je,this.updateRenderTargetMipmap=Qt,this.updateMultisampleRenderTarget=se,this.setupDepthRenderbuffer=ut,this.setupFrameBufferTexture=me,this.useMultisampledRTT=ii,this.isReversedDepthBuffer=function(){return t.buffers.depth.getReversed()}}function hae(n,e){function t(i,r=Ql){let s,a=oi.getTransfer(r);if(i===ws)return n.UNSIGNED_BYTE;if(i===kS)return n.UNSIGNED_SHORT_4_4_4_4;if(i===WS)return n.UNSIGNED_SHORT_5_5_5_1;if(i===UI)return n.UNSIGNED_INT_5_9_9_9_REV;if(i===VI)return n.UNSIGNED_INT_10F_11F_11F_REV;if(i===FI)return n.BYTE;if(i===BI)return n.SHORT;if(i===Zu)return n.UNSIGNED_SHORT;if(i===GS)return n.INT;if(i===mo)return n.UNSIGNED_INT;if(i===ca)return n.FLOAT;if(i===sl)return n.HALF_FLOAT;if(i===GI)return n.ALPHA;if(i===kI)return n.RGB;if(i===fa)return n.RGBA;if(i===qo)return n.DEPTH_COMPONENT;if(i===pf)return n.DEPTH_STENCIL;if(i===HS)return n.RED;if(i===zS)return n.RED_INTEGER;if(i===_f)return n.RG;if(i===XS)return n.RG_INTEGER;if(i===YS)return n.RGBA_INTEGER;if(i===sg||i===ag||i===og||i===lg)if(a===Ji)if(s=e.get("WEBGL_compressed_texture_s3tc_srgb"),s!==null){if(i===sg)return s.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(i===ag)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(i===og)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(i===lg)return s.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(s=e.get("WEBGL_compressed_texture_s3tc"),s!==null){if(i===sg)return s.COMPRESSED_RGB_S3TC_DXT1_EXT;if(i===ag)return s.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(i===og)return s.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(i===lg)return s.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(i===KS||i===jS||i===ZS||i===qS)if(s=e.get("WEBGL_compressed_texture_pvrtc"),s!==null){if(i===KS)return s.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(i===jS)return s.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(i===ZS)return s.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(i===qS)return s.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(i===QS||i===$S||i===JS||i===eT||i===tT||i===cg||i===iT)if(s=e.get("WEBGL_compressed_texture_etc"),s!==null){if(i===QS||i===$S)return a===Ji?s.COMPRESSED_SRGB8_ETC2:s.COMPRESSED_RGB8_ETC2;if(i===JS)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:s.COMPRESSED_RGBA8_ETC2_EAC;if(i===eT)return s.COMPRESSED_R11_EAC;if(i===tT)return s.COMPRESSED_SIGNED_R11_EAC;if(i===cg)return s.COMPRESSED_RG11_EAC;if(i===iT)return s.COMPRESSED_SIGNED_RG11_EAC}else return null;if(i===rT||i===nT||i===sT||i===aT||i===oT||i===lT||i===cT||i===fT||i===dT||i===hT||i===uT||i===mT||i===pT||i===_T)if(s=e.get("WEBGL_compressed_texture_astc"),s!==null){if(i===rT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:s.COMPRESSED_RGBA_ASTC_4x4_KHR;if(i===nT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:s.COMPRESSED_RGBA_ASTC_5x4_KHR;if(i===sT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:s.COMPRESSED_RGBA_ASTC_5x5_KHR;if(i===aT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:s.COMPRESSED_RGBA_ASTC_6x5_KHR;if(i===oT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:s.COMPRESSED_RGBA_ASTC_6x6_KHR;if(i===lT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:s.COMPRESSED_RGBA_ASTC_8x5_KHR;if(i===cT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:s.COMPRESSED_RGBA_ASTC_8x6_KHR;if(i===fT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:s.COMPRESSED_RGBA_ASTC_8x8_KHR;if(i===dT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:s.COMPRESSED_RGBA_ASTC_10x5_KHR;if(i===hT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:s.COMPRESSED_RGBA_ASTC_10x6_KHR;if(i===uT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:s.COMPRESSED_RGBA_ASTC_10x8_KHR;if(i===mT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:s.COMPRESSED_RGBA_ASTC_10x10_KHR;if(i===pT)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:s.COMPRESSED_RGBA_ASTC_12x10_KHR;if(i===_T)return a===Ji?s.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:s.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(i===gT||i===vT||i===ET)if(s=e.get("EXT_texture_compression_bptc"),s!==null){if(i===gT)return a===Ji?s.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:s.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(i===vT)return s.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(i===ET)return s.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(i===ST||i===TT||i===fg||i===AT)if(s=e.get("EXT_texture_compression_rgtc"),s!==null){if(i===ST)return s.COMPRESSED_RED_RGTC1_EXT;if(i===TT)return s.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(i===fg)return s.COMPRESSED_RED_GREEN_RGTC2_EXT;if(i===AT)return s.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return i===qu?n.UNSIGNED_INT_24_8:n[i]!==void 0?n[i]:null}return{convert:t}}function _ae(n,e){function t(p,g){p.matrixAutoUpdate===!0&&p.updateMatrix(),g.value.copy(p.matrix)}function i(p,g){g.color.getRGB(p.fogColor.value,XI(n)),g.isFog?(p.fogNear.value=g.near,p.fogFar.value=g.far):g.isFogExp2&&(p.fogDensity.value=g.density)}function r(p,g,v,T,S){g.isNodeMaterial?g.uniformsNeedUpdate=!1:g.isMeshBasicMaterial?s(p,g):g.isMeshLambertMaterial?(s(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshToonMaterial?(s(p,g),d(p,g)):g.isMeshPhongMaterial?(s(p,g),f(p,g),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)):g.isMeshStandardMaterial?(s(p,g),h(p,g),g.isMeshPhysicalMaterial&&u(p,g,S)):g.isMeshMatcapMaterial?(s(p,g),m(p,g)):g.isMeshDepthMaterial?s(p,g):g.isMeshDistanceMaterial?(s(p,g),_(p,g)):g.isMeshNormalMaterial?s(p,g):g.isLineBasicMaterial?(a(p,g),g.isLineDashedMaterial&&o(p,g)):g.isPointsMaterial?l(p,g,v,T):g.isSpriteMaterial?c(p,g):g.isShadowMaterial?(p.color.value.copy(g.color),p.opacity.value=g.opacity):g.isShaderMaterial&&(g.uniformsNeedUpdate=!1)}function s(p,g){p.opacity.value=g.opacity,g.color&&p.diffuse.value.copy(g.color),g.emissive&&p.emissive.value.copy(g.emissive).multiplyScalar(g.emissiveIntensity),g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.bumpMap&&(p.bumpMap.value=g.bumpMap,t(g.bumpMap,p.bumpMapTransform),p.bumpScale.value=g.bumpScale,g.side===Mn&&(p.bumpScale.value*=-1)),g.normalMap&&(p.normalMap.value=g.normalMap,t(g.normalMap,p.normalMapTransform),p.normalScale.value.copy(g.normalScale),g.side===Mn&&p.normalScale.value.negate()),g.displacementMap&&(p.displacementMap.value=g.displacementMap,t(g.displacementMap,p.displacementMapTransform),p.displacementScale.value=g.displacementScale,p.displacementBias.value=g.displacementBias),g.emissiveMap&&(p.emissiveMap.value=g.emissiveMap,t(g.emissiveMap,p.emissiveMapTransform)),g.specularMap&&(p.specularMap.value=g.specularMap,t(g.specularMap,p.specularMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest);let v=e.get(g),T=v.envMap,S=v.envMapRotation;T&&(p.envMap.value=T,p.envMapRotation.value.setFromMatrix4(pae.makeRotationFromEuler(S)).transpose(),T.isCubeTexture&&T.isRenderTargetTexture===!1&&p.envMapRotation.value.premultiply(JB),p.reflectivity.value=g.reflectivity,p.ior.value=g.ior,p.refractionRatio.value=g.refractionRatio),g.lightMap&&(p.lightMap.value=g.lightMap,p.lightMapIntensity.value=g.lightMapIntensity,t(g.lightMap,p.lightMapTransform)),g.aoMap&&(p.aoMap.value=g.aoMap,p.aoMapIntensity.value=g.aoMapIntensity,t(g.aoMap,p.aoMapTransform))}function a(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform))}function o(p,g){p.dashSize.value=g.dashSize,p.totalSize.value=g.dashSize+g.gapSize,p.scale.value=g.scale}function l(p,g,v,T){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.size.value=g.size*v,p.scale.value=T*.5,g.map&&(p.map.value=g.map,t(g.map,p.uvTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function c(p,g){p.diffuse.value.copy(g.color),p.opacity.value=g.opacity,p.rotation.value=g.rotation,g.map&&(p.map.value=g.map,t(g.map,p.mapTransform)),g.alphaMap&&(p.alphaMap.value=g.alphaMap,t(g.alphaMap,p.alphaMapTransform)),g.alphaTest>0&&(p.alphaTest.value=g.alphaTest)}function f(p,g){p.specular.value.copy(g.specular),p.shininess.value=Math.max(g.shininess,1e-4)}function d(p,g){g.gradientMap&&(p.gradientMap.value=g.gradientMap)}function h(p,g){p.metalness.value=g.metalness,g.metalnessMap&&(p.metalnessMap.value=g.metalnessMap,t(g.metalnessMap,p.metalnessMapTransform)),p.roughness.value=g.roughness,g.roughnessMap&&(p.roughnessMap.value=g.roughnessMap,t(g.roughnessMap,p.roughnessMapTransform)),g.envMap&&(p.envMapIntensity.value=g.envMapIntensity)}function u(p,g,v){p.ior.value=g.ior,g.sheen>0&&(p.sheenColor.value.copy(g.sheenColor).multiplyScalar(g.sheen),p.sheenRoughness.value=g.sheenRoughness,g.sheenColorMap&&(p.sheenColorMap.value=g.sheenColorMap,t(g.sheenColorMap,p.sheenColorMapTransform)),g.sheenRoughnessMap&&(p.sheenRoughnessMap.value=g.sheenRoughnessMap,t(g.sheenRoughnessMap,p.sheenRoughnessMapTransform))),g.clearcoat>0&&(p.clearcoat.value=g.clearcoat,p.clearcoatRoughness.value=g.clearcoatRoughness,g.clearcoatMap&&(p.clearcoatMap.value=g.clearcoatMap,t(g.clearcoatMap,p.clearcoatMapTransform)),g.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=g.clearcoatRoughnessMap,t(g.clearcoatRoughnessMap,p.clearcoatRoughnessMapTransform)),g.clearcoatNormalMap&&(p.clearcoatNormalMap.value=g.clearcoatNormalMap,t(g.clearcoatNormalMap,p.clearcoatNormalMapTransform),p.clearcoatNormalScale.value.copy(g.clearcoatNormalScale),g.side===Mn&&p.clearcoatNormalScale.value.negate())),g.dispersion>0&&(p.dispersion.value=g.dispersion),g.iridescence>0&&(p.iridescence.value=g.iridescence,p.iridescenceIOR.value=g.iridescenceIOR,p.iridescenceThicknessMinimum.value=g.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=g.iridescenceThicknessRange[1],g.iridescenceMap&&(p.iridescenceMap.value=g.iridescenceMap,t(g.iridescenceMap,p.iridescenceMapTransform)),g.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=g.iridescenceThicknessMap,t(g.iridescenceThicknessMap,p.iridescenceThicknessMapTransform))),g.transmission>0&&(p.transmission.value=g.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),g.transmissionMap&&(p.transmissionMap.value=g.transmissionMap,t(g.transmissionMap,p.transmissionMapTransform)),p.thickness.value=g.thickness,g.thicknessMap&&(p.thicknessMap.value=g.thicknessMap,t(g.thicknessMap,p.thicknessMapTransform)),p.attenuationDistance.value=g.attenuationDistance,p.attenuationColor.value.copy(g.attenuationColor)),g.anisotropy>0&&(p.anisotropyVector.value.set(g.anisotropy*Math.cos(g.anisotropyRotation),g.anisotropy*Math.sin(g.anisotropyRotation)),g.anisotropyMap&&(p.anisotropyMap.value=g.anisotropyMap,t(g.anisotropyMap,p.anisotropyMapTransform))),p.specularIntensity.value=g.specularIntensity,p.specularColor.value.copy(g.specularColor),g.specularColorMap&&(p.specularColorMap.value=g.specularColorMap,t(g.specularColorMap,p.specularColorMapTransform)),g.specularIntensityMap&&(p.specularIntensityMap.value=g.specularIntensityMap,t(g.specularIntensityMap,p.specularIntensityMapTransform))}function m(p,g){g.matcap&&(p.matcap.value=g.matcap)}function _(p,g){let v=e.get(g).light;p.referencePosition.value.setFromMatrixPosition(v.matrixWorld),p.nearDistance.value=v.shadow.camera.near,p.farDistance.value=v.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:r}}function gae(n,e,t,i){let r={},s={},a=[],o=n.getParameter(n.MAX_UNIFORM_BUFFER_BINDINGS);function l(v,T){let S=T.program;i.uniformBlockBinding(v,S)}function c(v,T){let S=r[v.id];S===void 0&&(m(v),S=f(v),r[v.id]=S,v.addEventListener("dispose",p));let E=T.program;i.updateUBOMapping(v,E);let A=e.render.frame;s[v.id]!==A&&(h(v),s[v.id]=A)}function f(v){let T=d();v.__bindingPointIndex=T;let S=n.createBuffer(),E=v.__size,A=v.usage;return n.bindBuffer(n.UNIFORM_BUFFER,S),n.bufferData(n.UNIFORM_BUFFER,E,A),n.bindBuffer(n.UNIFORM_BUFFER,null),n.bindBufferBase(n.UNIFORM_BUFFER,T,S),S}function d(){for(let v=0;v0&&(S+=E-A),v.__size=S,v.__cache={},this}function _(v){let T={boundary:0,storage:0};return typeof v=="number"||typeof v=="boolean"?(T.boundary=4,T.storage=4):v.isVector2?(T.boundary=8,T.storage=8):v.isVector3||v.isColor?(T.boundary=16,T.storage=12):v.isVector4?(T.boundary=16,T.storage=16):v.isMatrix3?(T.boundary=48,T.storage=48):v.isMatrix4?(T.boundary=64,T.storage=64):v.isTexture?Ct("WebGLRenderer: Texture samplers can not be part of an uniforms group."):ArrayBuffer.isView(v)?(T.boundary=16,T.storage=v.byteLength):Ct("WebGLRenderer: Unsupported uniform value type.",v),T}function p(v){let T=v.target;T.removeEventListener("dispose",p);let S=a.indexOf(T.__bindingPointIndex);a.splice(S,1),n.deleteBuffer(r[T.id]),delete r[T.id],delete s[T.id]}function g(){for(let v in r)n.deleteBuffer(r[v]);a=[],r={},s={}}return{bind:l,update:c,dispose:g}}function Eae(){return al===null&&(al=new Vu(vae,16,16,_f,sl),al.name="DFG_LUT",al.minFilter=Gr,al.magFilter=Gr,al.wrapS=Ia,al.wrapT=Ia,al.generateMipmaps=!1,al.needsUpdate=!0),al}var Nte,wte,Fte,Bte,Ute,Vte,Gte,kte,Wte,Hte,zte,Xte,Yte,Kte,jte,Zte,qte,Qte,$te,Jte,eie,tie,iie,rie,nie,sie,aie,oie,lie,cie,fie,die,hie,uie,mie,pie,_ie,gie,vie,Eie,Sie,Tie,Aie,xie,Rie,bie,Mie,Iie,yie,Cie,Pie,Die,Lie,Oie,Nie,wie,Fie,Bie,Uie,Vie,Gie,kie,Wie,Hie,zie,Xie,Yie,Kie,jie,Zie,qie,Qie,$ie,Jie,ere,tre,ire,rre,nre,sre,are,ore,lre,cre,fre,dre,hre,ure,mre,pre,_re,gre,vre,Ere,Sre,Tre,Are,xre,Rre,bre,Mre,Ire,yre,Cre,Pre,Dre,Lre,Ore,Nre,wre,Fre,Bre,Ure,Vre,Gre,kre,Wre,Hre,zre,Xre,Yre,Kre,jre,Zre,qre,Qre,$re,Jre,ene,tne,ine,rne,nne,sne,ane,one,lne,cne,fne,dne,hne,une,ui,vt,ol,IT,mne,jB,gf,bB,Zd,Sne,ug,MB,ty,iy,ry,ny,Tne,tm,CT,Lne,ZB,oy,qB,QB,$B,PB,DB,LB,OB,NB,ly,cy,fy,sy,em,Tse,Ase,BB,Mse,yT,Lse,Ose,wse,Bse,Vse,kse,Hse,Kse,hy,uy,tae,sae,aae,oae,lae,YB,mg,ay,uae,mae,my,py,pae,JB,vae,al,PT,us=I(()=>{ey();ey();Nte=`#ifdef USE_ALPHAHASH if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard; #endif`,wte=`#ifdef USE_ALPHAHASH const float ALPHA_HASH_SCALE = 0.05; @@ -4017,7 +4017,7 @@ void main() { #include #include #include -}`,ui={alphahash_fragment:Nte,alphahash_pars_fragment:wte,alphamap_fragment:Fte,alphamap_pars_fragment:Bte,alphatest_fragment:Ute,alphatest_pars_fragment:Vte,aomap_fragment:Gte,aomap_pars_fragment:kte,batching_pars_vertex:Wte,batching_vertex:Hte,begin_vertex:zte,beginnormal_vertex:Xte,bsdfs:Yte,iridescence_fragment:Kte,bumpmap_pars_fragment:jte,clipping_planes_fragment:Zte,clipping_planes_pars_fragment:qte,clipping_planes_pars_vertex:Qte,clipping_planes_vertex:$te,color_fragment:Jte,color_pars_fragment:eie,color_pars_vertex:tie,color_vertex:iie,common:rie,cube_uv_reflection_fragment:nie,defaultnormal_vertex:sie,displacementmap_pars_vertex:aie,displacementmap_vertex:oie,emissivemap_fragment:lie,emissivemap_pars_fragment:cie,colorspace_fragment:fie,colorspace_pars_fragment:die,envmap_fragment:hie,envmap_common_pars_fragment:uie,envmap_pars_fragment:mie,envmap_pars_vertex:pie,envmap_physical_pars_fragment:Mie,envmap_vertex:_ie,fog_vertex:gie,fog_pars_vertex:vie,fog_fragment:Eie,fog_pars_fragment:Sie,gradientmap_pars_fragment:Tie,lightmap_pars_fragment:Aie,lights_lambert_fragment:xie,lights_lambert_pars_fragment:Rie,lights_pars_begin:bie,lights_toon_fragment:Iie,lights_toon_pars_fragment:yie,lights_phong_fragment:Cie,lights_phong_pars_fragment:Pie,lights_physical_fragment:Die,lights_physical_pars_fragment:Lie,lights_fragment_begin:Oie,lights_fragment_maps:Nie,lights_fragment_end:wie,lightprobes_pars_fragment:Fie,logdepthbuf_fragment:Bie,logdepthbuf_pars_fragment:Uie,logdepthbuf_pars_vertex:Vie,logdepthbuf_vertex:Gie,map_fragment:kie,map_pars_fragment:Wie,map_particle_fragment:Hie,map_particle_pars_fragment:zie,metalnessmap_fragment:Xie,metalnessmap_pars_fragment:Yie,morphinstance_vertex:Kie,morphcolor_vertex:jie,morphnormal_vertex:Zie,morphtarget_pars_vertex:qie,morphtarget_vertex:Qie,normal_fragment_begin:$ie,normal_fragment_maps:Jie,normal_pars_fragment:ere,normal_pars_vertex:tre,normal_vertex:ire,normalmap_pars_fragment:rre,clearcoat_normal_fragment_begin:nre,clearcoat_normal_fragment_maps:sre,clearcoat_pars_fragment:are,iridescence_pars_fragment:ore,opaque_fragment:lre,packing:cre,premultiplied_alpha_fragment:fre,project_vertex:dre,dithering_fragment:hre,dithering_pars_fragment:ure,roughnessmap_fragment:mre,roughnessmap_pars_fragment:pre,shadowmap_pars_fragment:_re,shadowmap_pars_vertex:gre,shadowmap_vertex:vre,shadowmask_pars_fragment:Ere,skinbase_vertex:Sre,skinning_pars_vertex:Tre,skinning_vertex:Are,skinnormal_vertex:xre,specularmap_fragment:Rre,specularmap_pars_fragment:bre,tonemapping_fragment:Mre,tonemapping_pars_fragment:Ire,transmission_fragment:yre,transmission_pars_fragment:Cre,uv_pars_fragment:Pre,uv_pars_vertex:Dre,uv_vertex:Lre,worldpos_vertex:Ore,background_vert:Nre,background_frag:wre,backgroundCube_vert:Fre,backgroundCube_frag:Bre,cube_vert:Ure,cube_frag:Vre,depth_vert:Gre,depth_frag:kre,distance_vert:Wre,distance_frag:Hre,equirect_vert:zre,equirect_frag:Xre,linedashed_vert:Yre,linedashed_frag:Kre,meshbasic_vert:jre,meshbasic_frag:Zre,meshlambert_vert:qre,meshlambert_frag:Qre,meshmatcap_vert:$re,meshmatcap_frag:Jre,meshnormal_vert:ene,meshnormal_frag:tne,meshphong_vert:ine,meshphong_frag:rne,meshphysical_vert:nne,meshphysical_frag:sne,meshtoon_vert:ane,meshtoon_frag:one,points_vert:lne,points_frag:cne,shadow_vert:fne,shadow_frag:dne,sprite_vert:hne,sprite_frag:une},vt={common:{diffuse:{value:new ht(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ri},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ri}},envmap:{envMap:{value:null},envMapRotation:{value:new ri},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ri}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ri}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ri},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ri},normalScale:{value:new It(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ri},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ri}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ri}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ri}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ht(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new re},probesMax:{value:new re},probesResolution:{value:new re}},points:{diffuse:{value:new ht(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0},uvTransform:{value:new ri}},sprite:{diffuse:{value:new ht(16777215)},opacity:{value:1},center:{value:new It(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ri},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0}}},ol={basic:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.fog]),vertexShader:ui.meshbasic_vert,fragmentShader:ui.meshbasic_frag},lambert:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},envMapIntensity:{value:1}}]),vertexShader:ui.meshlambert_vert,fragmentShader:ui.meshlambert_frag},phong:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},specular:{value:new ht(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:ui.meshphong_vert,fragmentShader:ui.meshphong_frag},standard:{uniforms:Gn([vt.common,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.roughnessmap,vt.metalnessmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ui.meshphysical_vert,fragmentShader:ui.meshphysical_frag},toon:{uniforms:Gn([vt.common,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.gradientmap,vt.fog,vt.lights,{emissive:{value:new ht(0)}}]),vertexShader:ui.meshtoon_vert,fragmentShader:ui.meshtoon_frag},matcap:{uniforms:Gn([vt.common,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,{matcap:{value:null}}]),vertexShader:ui.meshmatcap_vert,fragmentShader:ui.meshmatcap_frag},points:{uniforms:Gn([vt.points,vt.fog]),vertexShader:ui.points_vert,fragmentShader:ui.points_frag},dashed:{uniforms:Gn([vt.common,vt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ui.linedashed_vert,fragmentShader:ui.linedashed_frag},depth:{uniforms:Gn([vt.common,vt.displacementmap]),vertexShader:ui.depth_vert,fragmentShader:ui.depth_frag},normal:{uniforms:Gn([vt.common,vt.bumpmap,vt.normalmap,vt.displacementmap,{opacity:{value:1}}]),vertexShader:ui.meshnormal_vert,fragmentShader:ui.meshnormal_frag},sprite:{uniforms:Gn([vt.sprite,vt.fog]),vertexShader:ui.sprite_vert,fragmentShader:ui.sprite_frag},background:{uniforms:{uvTransform:{value:new ri},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ui.background_vert,fragmentShader:ui.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ri}},vertexShader:ui.backgroundCube_vert,fragmentShader:ui.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ui.cube_vert,fragmentShader:ui.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ui.equirect_vert,fragmentShader:ui.equirect_frag},distance:{uniforms:Gn([vt.common,vt.displacementmap,{referencePosition:{value:new re},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ui.distance_vert,fragmentShader:ui.distance_frag},shadow:{uniforms:Gn([vt.lights,vt.fog,{color:{value:new ht(0)},opacity:{value:1}}]),vertexShader:ui.shadow_vert,fragmentShader:ui.shadow_frag}};ol.physical={uniforms:Gn([ol.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ri},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ri},clearcoatNormalScale:{value:new It(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ri},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ri},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ri},sheen:{value:0},sheenColor:{value:new ht(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ri},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ri},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ri},transmissionSamplerSize:{value:new It},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ri},attenuationDistance:{value:0},attenuationColor:{value:new ht(0)},specularColor:{value:new ht(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ri},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ri},anisotropyVector:{value:new It},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ri}}]),vertexShader:ui.meshphysical_vert,fragmentShader:ui.meshphysical_frag};MT={r:0,b:0,g:0},mne=new li,jB=new ri;jB.set(-1,0,0,0,1,0,0,0,1);gf=4,bB=[.125,.215,.35,.446,.526,.582],Zd=20,Sne=256,ug=new hs,MB=new ht,ty=null,iy=0,ry=0,ny=!1,Tne=new re,tm=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,i=.1,r=100,s={}){let{size:a=256,position:o=Tne}=s;ty=this._renderer.getRenderTarget(),iy=this._renderer.getActiveCubeFace(),ry=this._renderer.getActiveMipmapLevel(),ny=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,i,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=CB(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=yB(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?E:0,E,E),d.setRenderTarget(r),g&&d.render(_,l),d.render(e,l)}d.toneMapping=u,d.autoClear=h,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===mf||e.mapping===Yd;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=CB()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=yB());let s=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=s;let o=s.uniforms;o.envMap.value=e;let l=this._cubeSize;Ju(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,ug)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-gf?i-m+gf:0),g=4*(this._cubeSize-_);l.envMap.value=e.texture,l.roughness.value=u,l.mipInt.value=m-t,Ju(s,p,g,3*_,2*_),r.setRenderTarget(s),r.render(o,ug),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,Ju(e,p,g,3*_,2*_),r.setRenderTarget(e),r.render(o,ug)}_blur(e,t,i,r,s){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,i,r,"latitudinal",s),this._halfBlur(a,e,i,i,r,"longitudinal",s)}_halfBlur(e,t,i,r,s,a,o){let l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&Vt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let h=c.uniforms,u=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*u):2*Math.PI/(2*Zd-1),_=s/m,p=isFinite(s)?1+Math.floor(f*_):Zd;p>Zd&&Ct(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Zd}`);let g=[],v=0;for(let R=0;RT-gf?r-T+gf:0),A=4*(this._cubeSize-S);Ju(t,E,A,3*S,2*S),l.setRenderTarget(t),l.render(d,ug)}};yT=class extends oa{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new H_(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` +}`,ui={alphahash_fragment:Nte,alphahash_pars_fragment:wte,alphamap_fragment:Fte,alphamap_pars_fragment:Bte,alphatest_fragment:Ute,alphatest_pars_fragment:Vte,aomap_fragment:Gte,aomap_pars_fragment:kte,batching_pars_vertex:Wte,batching_vertex:Hte,begin_vertex:zte,beginnormal_vertex:Xte,bsdfs:Yte,iridescence_fragment:Kte,bumpmap_pars_fragment:jte,clipping_planes_fragment:Zte,clipping_planes_pars_fragment:qte,clipping_planes_pars_vertex:Qte,clipping_planes_vertex:$te,color_fragment:Jte,color_pars_fragment:eie,color_pars_vertex:tie,color_vertex:iie,common:rie,cube_uv_reflection_fragment:nie,defaultnormal_vertex:sie,displacementmap_pars_vertex:aie,displacementmap_vertex:oie,emissivemap_fragment:lie,emissivemap_pars_fragment:cie,colorspace_fragment:fie,colorspace_pars_fragment:die,envmap_fragment:hie,envmap_common_pars_fragment:uie,envmap_pars_fragment:mie,envmap_pars_vertex:pie,envmap_physical_pars_fragment:Mie,envmap_vertex:_ie,fog_vertex:gie,fog_pars_vertex:vie,fog_fragment:Eie,fog_pars_fragment:Sie,gradientmap_pars_fragment:Tie,lightmap_pars_fragment:Aie,lights_lambert_fragment:xie,lights_lambert_pars_fragment:Rie,lights_pars_begin:bie,lights_toon_fragment:Iie,lights_toon_pars_fragment:yie,lights_phong_fragment:Cie,lights_phong_pars_fragment:Pie,lights_physical_fragment:Die,lights_physical_pars_fragment:Lie,lights_fragment_begin:Oie,lights_fragment_maps:Nie,lights_fragment_end:wie,lightprobes_pars_fragment:Fie,logdepthbuf_fragment:Bie,logdepthbuf_pars_fragment:Uie,logdepthbuf_pars_vertex:Vie,logdepthbuf_vertex:Gie,map_fragment:kie,map_pars_fragment:Wie,map_particle_fragment:Hie,map_particle_pars_fragment:zie,metalnessmap_fragment:Xie,metalnessmap_pars_fragment:Yie,morphinstance_vertex:Kie,morphcolor_vertex:jie,morphnormal_vertex:Zie,morphtarget_pars_vertex:qie,morphtarget_vertex:Qie,normal_fragment_begin:$ie,normal_fragment_maps:Jie,normal_pars_fragment:ere,normal_pars_vertex:tre,normal_vertex:ire,normalmap_pars_fragment:rre,clearcoat_normal_fragment_begin:nre,clearcoat_normal_fragment_maps:sre,clearcoat_pars_fragment:are,iridescence_pars_fragment:ore,opaque_fragment:lre,packing:cre,premultiplied_alpha_fragment:fre,project_vertex:dre,dithering_fragment:hre,dithering_pars_fragment:ure,roughnessmap_fragment:mre,roughnessmap_pars_fragment:pre,shadowmap_pars_fragment:_re,shadowmap_pars_vertex:gre,shadowmap_vertex:vre,shadowmask_pars_fragment:Ere,skinbase_vertex:Sre,skinning_pars_vertex:Tre,skinning_vertex:Are,skinnormal_vertex:xre,specularmap_fragment:Rre,specularmap_pars_fragment:bre,tonemapping_fragment:Mre,tonemapping_pars_fragment:Ire,transmission_fragment:yre,transmission_pars_fragment:Cre,uv_pars_fragment:Pre,uv_pars_vertex:Dre,uv_vertex:Lre,worldpos_vertex:Ore,background_vert:Nre,background_frag:wre,backgroundCube_vert:Fre,backgroundCube_frag:Bre,cube_vert:Ure,cube_frag:Vre,depth_vert:Gre,depth_frag:kre,distance_vert:Wre,distance_frag:Hre,equirect_vert:zre,equirect_frag:Xre,linedashed_vert:Yre,linedashed_frag:Kre,meshbasic_vert:jre,meshbasic_frag:Zre,meshlambert_vert:qre,meshlambert_frag:Qre,meshmatcap_vert:$re,meshmatcap_frag:Jre,meshnormal_vert:ene,meshnormal_frag:tne,meshphong_vert:ine,meshphong_frag:rne,meshphysical_vert:nne,meshphysical_frag:sne,meshtoon_vert:ane,meshtoon_frag:one,points_vert:lne,points_frag:cne,shadow_vert:fne,shadow_frag:dne,sprite_vert:hne,sprite_frag:une},vt={common:{diffuse:{value:new ht(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new ri},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new ri}},envmap:{envMap:{value:null},envMapRotation:{value:new ri},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new ri}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new ri}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new ri},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new ri},normalScale:{value:new It(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new ri},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new ri}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new ri}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new ri}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ht(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new re},probesMax:{value:new re},probesResolution:{value:new re}},points:{diffuse:{value:new ht(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0},uvTransform:{value:new ri}},sprite:{diffuse:{value:new ht(16777215)},opacity:{value:1},center:{value:new It(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new ri},alphaMap:{value:null},alphaMapTransform:{value:new ri},alphaTest:{value:0}}},ol={basic:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.fog]),vertexShader:ui.meshbasic_vert,fragmentShader:ui.meshbasic_frag},lambert:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},envMapIntensity:{value:1}}]),vertexShader:ui.meshlambert_vert,fragmentShader:ui.meshlambert_frag},phong:{uniforms:Gn([vt.common,vt.specularmap,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},specular:{value:new ht(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:ui.meshphong_vert,fragmentShader:ui.meshphong_frag},standard:{uniforms:Gn([vt.common,vt.envmap,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.roughnessmap,vt.metalnessmap,vt.fog,vt.lights,{emissive:{value:new ht(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:ui.meshphysical_vert,fragmentShader:ui.meshphysical_frag},toon:{uniforms:Gn([vt.common,vt.aomap,vt.lightmap,vt.emissivemap,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.gradientmap,vt.fog,vt.lights,{emissive:{value:new ht(0)}}]),vertexShader:ui.meshtoon_vert,fragmentShader:ui.meshtoon_frag},matcap:{uniforms:Gn([vt.common,vt.bumpmap,vt.normalmap,vt.displacementmap,vt.fog,{matcap:{value:null}}]),vertexShader:ui.meshmatcap_vert,fragmentShader:ui.meshmatcap_frag},points:{uniforms:Gn([vt.points,vt.fog]),vertexShader:ui.points_vert,fragmentShader:ui.points_frag},dashed:{uniforms:Gn([vt.common,vt.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:ui.linedashed_vert,fragmentShader:ui.linedashed_frag},depth:{uniforms:Gn([vt.common,vt.displacementmap]),vertexShader:ui.depth_vert,fragmentShader:ui.depth_frag},normal:{uniforms:Gn([vt.common,vt.bumpmap,vt.normalmap,vt.displacementmap,{opacity:{value:1}}]),vertexShader:ui.meshnormal_vert,fragmentShader:ui.meshnormal_frag},sprite:{uniforms:Gn([vt.sprite,vt.fog]),vertexShader:ui.sprite_vert,fragmentShader:ui.sprite_frag},background:{uniforms:{uvTransform:{value:new ri},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:ui.background_vert,fragmentShader:ui.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new ri}},vertexShader:ui.backgroundCube_vert,fragmentShader:ui.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:ui.cube_vert,fragmentShader:ui.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:ui.equirect_vert,fragmentShader:ui.equirect_frag},distance:{uniforms:Gn([vt.common,vt.displacementmap,{referencePosition:{value:new re},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:ui.distance_vert,fragmentShader:ui.distance_frag},shadow:{uniforms:Gn([vt.lights,vt.fog,{color:{value:new ht(0)},opacity:{value:1}}]),vertexShader:ui.shadow_vert,fragmentShader:ui.shadow_frag}};ol.physical={uniforms:Gn([ol.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new ri},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new ri},clearcoatNormalScale:{value:new It(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new ri},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new ri},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new ri},sheen:{value:0},sheenColor:{value:new ht(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new ri},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new ri},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new ri},transmissionSamplerSize:{value:new It},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new ri},attenuationDistance:{value:0},attenuationColor:{value:new ht(0)},specularColor:{value:new ht(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new ri},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new ri},anisotropyVector:{value:new It},anisotropyMap:{value:null},anisotropyMapTransform:{value:new ri}}]),vertexShader:ui.meshphysical_vert,fragmentShader:ui.meshphysical_frag};IT={r:0,b:0,g:0},mne=new li,jB=new ri;jB.set(-1,0,0,0,1,0,0,0,1);gf=4,bB=[.125,.215,.35,.446,.526,.582],Zd=20,Sne=256,ug=new hs,MB=new ht,ty=null,iy=0,ry=0,ny=!1,Tne=new re,tm=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,i=.1,r=100,s={}){let{size:a=256,position:o=Tne}=s;ty=this._renderer.getRenderTarget(),iy=this._renderer.getActiveCubeFace(),ry=this._renderer.getActiveMipmapLevel(),ny=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let l=this._allocateTargets();return l.depthBuffer=!0,this._sceneToCubeUV(e,i,r,l,o),t>0&&this._blur(l,0,0,t),this._applyPMREM(l),this._cleanup(l),l}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=CB(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=yB(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e2?E:0,E,E),d.setRenderTarget(r),g&&d.render(_,l),d.render(e,l)}d.toneMapping=u,d.autoClear=h,e.background=v}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===mf||e.mapping===Yd;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=CB()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=yB());let s=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=s;let o=s.uniforms;o.envMap.value=e;let l=this._cubeSize;Ju(t,0,0,3*l,2*l),i.setRenderTarget(t),i.render(a,ug)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let s=1;sm-gf?i-m+gf:0),g=4*(this._cubeSize-_);l.envMap.value=e.texture,l.roughness.value=u,l.mipInt.value=m-t,Ju(s,p,g,3*_,2*_),r.setRenderTarget(s),r.render(o,ug),l.envMap.value=s.texture,l.roughness.value=0,l.mipInt.value=m-i,Ju(e,p,g,3*_,2*_),r.setRenderTarget(e),r.render(o,ug)}_blur(e,t,i,r,s){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,i,r,"latitudinal",s),this._halfBlur(a,e,i,i,r,"longitudinal",s)}_halfBlur(e,t,i,r,s,a,o){let l=this._renderer,c=this._blurMaterial;a!=="latitudinal"&&a!=="longitudinal"&&Vt("blur direction must be either latitudinal or longitudinal!");let f=3,d=this._lodMeshes[r];d.material=c;let h=c.uniforms,u=this._sizeLods[i]-1,m=isFinite(s)?Math.PI/(2*u):2*Math.PI/(2*Zd-1),_=s/m,p=isFinite(s)?1+Math.floor(f*_):Zd;p>Zd&&Ct(`sigmaRadians, ${s}, is too large and will clip, as it requested ${p} samples when the maximum is set to ${Zd}`);let g=[],v=0;for(let R=0;RT-gf?r-T+gf:0),A=4*(this._cubeSize-S);Ju(t,E,A,3*S,2*S),l.setRenderTarget(t),l.render(d,ug)}};CT=class extends oa{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new H_(r),this._setTextureOptions(t),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:` varying vec3 vWorldDirection; @@ -4052,7 +4052,7 @@ void main() { gl_FragColor = texture2D( tEquirect, sampleUV ); } - `},r=new cf(5,5,5),s=new la({name:"CubemapFromEquirect",uniforms:jd(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Mn,blending:nl});s.uniforms.tEquirect.value=t;let a=new ci(r,s),o=t.minFilter;return t.minFilter===uo&&(t.minFilter=Gr),new PS(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,i=!0,r=!0){let s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,i,r);e.setRenderTarget(s)}};Lne={[yI]:"LINEAR_TONE_MAPPING",[CI]:"REINHARD_TONE_MAPPING",[PI]:"CINEON_TONE_MAPPING",[DI]:"ACES_FILMIC_TONE_MAPPING",[OI]:"AGX_TONE_MAPPING",[NI]:"NEUTRAL_TONE_MAPPING",[LI]:"CUSTOM_TONE_MAPPING"};ZB=new Pr,oy=new Yl(1,1),qB=new F_,QB=new vS,$B=new H_,PB=[],DB=[],LB=new Float32Array(16),OB=new Float32Array(9),NB=new Float32Array(4);ly=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=Jne(t.type)}},cy=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Ese(t.type)}},fy=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){let r=this.seq;for(let s=0,a=r.length;s!==a;++s){let o=r[s];o.setValue(e,t[o.id],i)}}},sy=/(\w+)(\])?(\[|\.)?/g;em=class{constructor(e,t){this.seq=[],this.map={};let i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let a=0;a0&&(this.seq=r.concat(s))}setValue(e,t,i,r){let s=this.map[t];s!==void 0&&s.setValue(e,i,r)}setOptional(e,t,i){let r=t[i];r!==void 0&&this.setValue(e,i,r)}static upload(e,t,i,r){for(let s=0,a=t.length;s!==a;++s){let o=t[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){let i=[];for(let r=0,s=e.length;r!==s;++r){let a=e[r];a.id in t&&i.push(a)}return i}};Tse=37297,Ase=0;BB=new ri;Mse={[yI]:"Linear",[CI]:"Reinhard",[PI]:"Cineon",[DI]:"ACESFilmic",[OI]:"AgX",[NI]:"Neutral",[LI]:"Custom"};IT=new re;Lse=/^[ \t]*#include +<([\w\d./]+)>/gm;Ose=new Map;wse=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;Bse={[ig]:"SHADOWMAP_TYPE_PCF",[Ku]:"SHADOWMAP_TYPE_VSM"};Vse={[mf]:"ENVMAP_TYPE_CUBE",[Yd]:"ENVMAP_TYPE_CUBE",[ng]:"ENVMAP_TYPE_CUBE_UV"};kse={[Yd]:"ENVMAP_MODE_REFRACTION"};Hse={[rg]:"ENVMAP_BLENDING_MULTIPLY",[iB]:"ENVMAP_BLENDING_MIX",[rB]:"ENVMAP_BLENDING_ADD"};Kse=0,hy=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return i===void 0&&(i=new uy(e),t.set(e,i)),i}},uy=class{constructor(e){this.id=Kse++,this.code=e,this.usedTimes=0}};tae=0;sae=`void main() { + `},r=new cf(5,5,5),s=new la({name:"CubemapFromEquirect",uniforms:jd(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Mn,blending:nl});s.uniforms.tEquirect.value=t;let a=new ci(r,s),o=t.minFilter;return t.minFilter===uo&&(t.minFilter=Gr),new DS(1,10,this).update(e,a),t.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(e,t=!0,i=!0,r=!0){let s=e.getRenderTarget();for(let a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,i,r);e.setRenderTarget(s)}};Lne={[yI]:"LINEAR_TONE_MAPPING",[CI]:"REINHARD_TONE_MAPPING",[PI]:"CINEON_TONE_MAPPING",[DI]:"ACES_FILMIC_TONE_MAPPING",[OI]:"AGX_TONE_MAPPING",[NI]:"NEUTRAL_TONE_MAPPING",[LI]:"CUSTOM_TONE_MAPPING"};ZB=new Pr,oy=new Yl(1,1),qB=new F_,QB=new ES,$B=new H_,PB=[],DB=[],LB=new Float32Array(16),OB=new Float32Array(9),NB=new Float32Array(4);ly=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.setValue=Jne(t.type)}},cy=class{constructor(e,t,i){this.id=e,this.addr=i,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Ese(t.type)}},fy=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,i){let r=this.seq;for(let s=0,a=r.length;s!==a;++s){let o=r[s];o.setValue(e,t[o.id],i)}}},sy=/(\w+)(\])?(\[|\.)?/g;em=class{constructor(e,t){this.seq=[],this.map={};let i=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let a=0;a0&&(this.seq=r.concat(s))}setValue(e,t,i,r){let s=this.map[t];s!==void 0&&s.setValue(e,i,r)}setOptional(e,t,i){let r=t[i];r!==void 0&&this.setValue(e,i,r)}static upload(e,t,i,r){for(let s=0,a=t.length;s!==a;++s){let o=t[s],l=i[o.id];l.needsUpdate!==!1&&o.setValue(e,l.value,r)}}static seqWithValue(e,t){let i=[];for(let r=0,s=e.length;r!==s;++r){let a=e[r];a.id in t&&i.push(a)}return i}};Tse=37297,Ase=0;BB=new ri;Mse={[yI]:"Linear",[CI]:"Reinhard",[PI]:"Cineon",[DI]:"ACESFilmic",[OI]:"AgX",[NI]:"Neutral",[LI]:"Custom"};yT=new re;Lse=/^[ \t]*#include +<([\w\d./]+)>/gm;Ose=new Map;wse=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;Bse={[ig]:"SHADOWMAP_TYPE_PCF",[Ku]:"SHADOWMAP_TYPE_VSM"};Vse={[mf]:"ENVMAP_TYPE_CUBE",[Yd]:"ENVMAP_TYPE_CUBE",[ng]:"ENVMAP_TYPE_CUBE_UV"};kse={[Yd]:"ENVMAP_MODE_REFRACTION"};Hse={[rg]:"ENVMAP_BLENDING_MULTIPLY",[iB]:"ENVMAP_BLENDING_MIX",[rB]:"ENVMAP_BLENDING_ADD"};Kse=0,hy=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),s=this._getShaderStage(i),a=this._getShaderCacheForMaterial(e);return a.has(r)===!1&&(a.add(r),r.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return i===void 0&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return i===void 0&&(i=new uy(e),t.set(e,i)),i}},uy=class{constructor(e){this.id=Kse++,this.code=e,this.usedTimes=0}};tae=0;sae=`void main() { gl_Position = vec4( position, 1.0 ); }`,aae=`uniform sampler2D shadow_pass; uniform vec2 resolution; @@ -4103,46 +4103,46 @@ void main() { } -}`,my=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new X_(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,i=new la({vertexShader:uae,fragmentShader:mae,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new ci(new Wd(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},py=class extends ya{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,h=null,u=null,m=null,_=typeof XRWebGLBinding!="undefined",p=new my,g={},v=t.getContextAttributes(),T=null,S=null,E=[],A=[],R=new It,M=null,y=new gr;y.viewport=new or;let C=new gr;C.viewport=new or;let D=[y,C],w=new DS,G=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getTargetRaySpace()},this.getControllerGrip=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getGripSpace()},this.getHand=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getHandSpace()};function N(oe){let ve=A.indexOf(oe.inputSource);if(ve===-1)return;let ie=E[ve];ie!==void 0&&(ie.update(oe.inputSource,oe.frame,c||a),ie.dispatchEvent({type:oe.type,data:oe.inputSource}))}function B(){r.removeEventListener("select",N),r.removeEventListener("selectstart",N),r.removeEventListener("selectend",N),r.removeEventListener("squeeze",N),r.removeEventListener("squeezestart",N),r.removeEventListener("squeezeend",N),r.removeEventListener("end",B),r.removeEventListener("inputsourceschange",V);for(let oe=0;oe=0&&(A[ue]=null,E[ue].disconnect(ie))}for(let ve=0;ve=A.length){A.push(ie),ue=me;break}else if(A[me]===null){A[me]=ie,ue=me;break}if(ue===-1)break}let Pe=E[ue];Pe&&Pe.connect(ie)}}let Q=new re,K=new re;function J(oe,ve,ie){Q.setFromMatrixPosition(ve.matrixWorld),K.setFromMatrixPosition(ie.matrixWorld);let ue=Q.distanceTo(K),Pe=ve.projectionMatrix.elements,me=ie.projectionMatrix.elements,be=Pe[14]/(Pe[10]-1),De=Pe[14]/(Pe[10]+1),ut=(Pe[9]+1)/Pe[5],Ye=(Pe[9]-1)/Pe[5],je=(Pe[8]-1)/Pe[0],Qt=(me[8]+1)/me[0],Pt=be*je,Ti=be*Qt,se=ue/(-je+Qt),Di=se*-je;if(ve.matrixWorld.decompose(oe.position,oe.quaternion,oe.scale),oe.translateX(Di),oe.translateZ(se),oe.matrixWorld.compose(oe.position,oe.quaternion,oe.scale),oe.matrixWorldInverse.copy(oe.matrixWorld).invert(),Pe[10]===-1)oe.projectionMatrix.copy(ve.projectionMatrix),oe.projectionMatrixInverse.copy(ve.projectionMatrixInverse);else{let ii=be+se,yi=De+se,ct=Pt-Di,Yi=Ti+(ue-Di),X=ut*De/yi*ii,U=Ye*De/yi*ii;oe.projectionMatrix.makePerspective(ct,Yi,X,U,ii,yi),oe.projectionMatrixInverse.copy(oe.projectionMatrix).invert()}}function z(oe,ve){ve===null?oe.matrixWorld.copy(oe.matrix):oe.matrixWorld.multiplyMatrices(ve.matrixWorld,oe.matrix),oe.matrixWorldInverse.copy(oe.matrixWorld).invert()}this.updateCamera=function(oe){if(r===null)return;let ve=oe.near,ie=oe.far;p.texture!==null&&(p.depthNear>0&&(ve=p.depthNear),p.depthFar>0&&(ie=p.depthFar)),w.near=C.near=y.near=ve,w.far=C.far=y.far=ie,(G!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),G=w.near,O=w.far),w.layers.mask=oe.layers.mask|6,y.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let ue=oe.parent,Pe=w.cameras;z(w,ue);for(let me=0;me{function At(){if(Te.forEach(function(Rt){X.get(Rt).currentProgram.isReady()&&Te.delete(Rt)}),Te.size===0){Ae(H);return}setTimeout(At,10)}ii.get("KHR_parallel_shader_compile")!==null?At():setTimeout(At,10)})};let ne=null;function ze(H){ne&&ne(H)}function di(){Li.stop()}function Wi(){Li.start()}let Li=new KB;Li.setAnimationLoop(ze),typeof self!="undefined"&&Li.setContext(self),this.setAnimationLoop=function(H){ne=H,rt.setAnimationLoop(H),H===null?Li.stop():Li.start()},rt.addEventListener("sessionstart",di),rt.addEventListener("sessionend",Wi),this.render=function(H,fe){if(fe!==void 0&&fe.isCamera!==!0){Vt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;w!==null&&w.renderStart(H,fe);let xe=rt.enabled===!0&&rt.isPresenting===!0,Te=y!==null&&(N===null||xe)&&y.begin(C,N);if(H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),fe.parent===null&&fe.matrixWorldAutoUpdate===!0&&fe.updateMatrixWorld(),rt.enabled===!0&&rt.isPresenting===!0&&(y===null||y.isCompositing()===!1)&&(rt.cameraAutoUpdate===!0&&rt.updateCamera(fe),fe=rt.getCamera()),H.isScene===!0&&H.onBeforeRender(C,H,fe,N),A=lt.get(H,M.length),A.init(fe),A.state.textureUnits=U.getTextureUnits(),M.push(A),ut.multiplyMatrices(fe.projectionMatrix,fe.matrixWorldInverse),me.setFromProjectionMatrix(ut,ao,fe.reversedDepth),De=this.localClippingEnabled,be=dt.init(this.clippingPlanes,De),E=Le.get(H,R.length),E.init(),R.push(E),rt.enabled===!0&&rt.isPresenting===!0){let Rt=C.xr.getDepthSensingMesh();Rt!==null&&wn(Rt,fe,-1/0,C.sortObjects)}wn(H,fe,0,C.sortObjects),E.finish(),C.sortObjects===!0&&E.sort(oe,ve),Pt=rt.enabled===!1||rt.isPresenting===!1||rt.hasDepthSensing()===!1,Pt&&et.addToRenderList(E,H),this.info.render.frame++,be===!0&&dt.beginShadows();let Ae=A.state.shadowsArray;if(qe.render(Ae,H,fe),be===!0&&dt.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Te&&y.hasRenderPass())===!1){let Rt=E.opaque,Et=E.transmissive;if(A.setupLights(),fe.isArrayCamera){let Dt=fe.cameras;if(Et.length>0)for(let Ot=0,fi=Dt.length;Ot0&&Xo(Rt,Et,H,fe),Pt&&et.render(H),ls(E,H,fe)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Te&&y.end(C),H.isScene===!0&&H.onAfterRender(C,H,fe),tt.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(A=M[M.length-1],U.setTextureUnits(A.state.textureUnits),be===!0&&dt.setGlobalState(C.clippingPlanes,A.state.camera)):A=null,R.pop(),R.length>0?E=R[R.length-1]:E=null,w!==null&&w.renderEnd()};function wn(H,fe,xe,Te){if(H.visible===!1)return;if(H.layers.test(fe.layers)){if(H.isGroup)xe=H.renderOrder;else if(H.isLOD)H.autoUpdate===!0&&H.update(fe);else if(H.isLightProbeGrid)A.pushLightProbeGrid(H);else if(H.isLight)A.pushLight(H),H.castShadow&&A.pushShadow(H);else if(H.isSprite){if(!H.frustumCulled||me.intersectsSprite(H)){Te&&je.setFromMatrixPosition(H.matrixWorld).applyMatrix4(ut);let Rt=Je.update(H),Et=H.material;Et.visible&&E.push(H,Rt,Et,xe,je.z,null)}}else if((H.isMesh||H.isLine||H.isPoints)&&(!H.frustumCulled||me.intersectsObject(H))){let Rt=Je.update(H),Et=H.material;if(Te&&(H.boundingSphere!==void 0?(H.boundingSphere===null&&H.computeBoundingSphere(),je.copy(H.boundingSphere.center)):(Rt.boundingSphere===null&&Rt.computeBoundingSphere(),je.copy(Rt.boundingSphere.center)),je.applyMatrix4(H.matrixWorld).applyMatrix4(ut)),Array.isArray(Et)){let Dt=Rt.groups;for(let Ot=0,fi=Dt.length;Ot0&&nu(Ae,fe,xe),At.length>0&&nu(At,fe,xe),Rt.length>0&&nu(Rt,fe,xe),ct.buffers.depth.setTest(!0),ct.buffers.depth.setMask(!0),ct.buffers.color.setMask(!0),ct.setPolygonOffset(!1)}function Xo(H,fe,xe,Te){if((xe.isScene===!0?xe.overrideMaterial:null)!==null)return;if(A.state.transmissionRenderTarget[Te.id]===void 0){let Nt=ii.has("EXT_color_buffer_half_float")||ii.has("EXT_color_buffer_float");A.state.transmissionRenderTarget[Te.id]=new oa(1,1,{generateMipmaps:!0,type:Nt?sl:ws,minFilter:uo,samples:Math.max(4,yi.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:oi.workingColorSpace})}let At=A.state.transmissionRenderTarget[Te.id],Rt=Te.viewport||Q;At.setSize(Rt.z*C.transmissionResolutionScale,Rt.w*C.transmissionResolutionScale);let Et=C.getRenderTarget(),Dt=C.getActiveCubeFace(),Ot=C.getActiveMipmapLevel();C.setRenderTarget(At),C.getClearColor(z),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Pt&&et.render(xe);let fi=C.toneMapping;C.toneMapping=Ns;let pi=Te.viewport;if(Te.viewport!==void 0&&(Te.viewport=void 0),A.setupLightsView(Te),be===!0&&dt.setGlobalState(C.clippingPlanes,Te),nu(H,xe,Te),U.updateMultisampleRenderTarget(At),U.updateRenderTargetMipmap(At),ii.has("WEBGL_multisampled_render_to_texture")===!1){let Nt=!1;for(let sr=0,Br=fe.length;sr0,Te.currentProgram=pi,Te.uniformsList=null,pi}function EE(H){if(H.uniformsList===null){let fe=H.currentProgram.getUniforms();H.uniformsList=em.seqWithValue(fe.seq,H.uniforms)}return H.uniformsList}function jc(H,fe){let xe=X.get(H);xe.outputColorSpace=fe.outputColorSpace,xe.batching=fe.batching,xe.batchingColor=fe.batchingColor,xe.instancing=fe.instancing,xe.instancingColor=fe.instancingColor,xe.instancingMorph=fe.instancingMorph,xe.skinning=fe.skinning,xe.morphTargets=fe.morphTargets,xe.morphNormals=fe.morphNormals,xe.morphColors=fe.morphColors,xe.morphTargetsCount=fe.morphTargetsCount,xe.numClippingPlanes=fe.numClippingPlanes,xe.numIntersection=fe.numClipIntersection,xe.vertexAlphas=fe.vertexAlphas,xe.vertexTangents=fe.vertexTangents,xe.toneMapping=fe.toneMapping}function M0(H,fe){if(H.length===0)return null;if(H.length===1)return H[0].texture!==null?H[0]:null;S.setFromMatrixPosition(fe.matrixWorld);for(let xe=0,Te=H.length;xe0),Nt=!!xe.morphAttributes.position,sr=!!xe.morphAttributes.normal,Br=!!xe.morphAttributes.color,Nr=Ns;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Nr=C.toneMapping);let fr=xe.morphAttributes.position||xe.morphAttributes.normal||xe.morphAttributes.color,Fn=fr!==void 0?fr.length:0,xt=X.get(Te),ia=A.state.lights;if(be===!0&&(De===!0||H!==V)){let _r=H===V&&Te.id===B;dt.setState(Te,H,_r)}let Hi=!1;Te.version===xt.__version?(xt.needsLights&&xt.lightsStateVersion!==ia.state.version||xt.outputColorSpace!==Et||Ae.isBatchedMesh&&xt.batching===!1||!Ae.isBatchedMesh&&xt.batching===!0||Ae.isBatchedMesh&&xt.batchingColor===!0&&Ae.colorTexture===null||Ae.isBatchedMesh&&xt.batchingColor===!1&&Ae.colorTexture!==null||Ae.isInstancedMesh&&xt.instancing===!1||!Ae.isInstancedMesh&&xt.instancing===!0||Ae.isSkinnedMesh&&xt.skinning===!1||!Ae.isSkinnedMesh&&xt.skinning===!0||Ae.isInstancedMesh&&xt.instancingColor===!0&&Ae.instanceColor===null||Ae.isInstancedMesh&&xt.instancingColor===!1&&Ae.instanceColor!==null||Ae.isInstancedMesh&&xt.instancingMorph===!0&&Ae.morphTexture===null||Ae.isInstancedMesh&&xt.instancingMorph===!1&&Ae.morphTexture!==null||xt.envMap!==Ot||Te.fog===!0&&xt.fog!==At||xt.numClippingPlanes!==void 0&&(xt.numClippingPlanes!==dt.numPlanes||xt.numIntersection!==dt.numIntersection)||xt.vertexAlphas!==fi||xt.vertexTangents!==pi||xt.morphTargets!==Nt||xt.morphNormals!==sr||xt.morphColors!==Br||xt.toneMapping!==Nr||xt.morphTargetsCount!==Fn||!!xt.lightProbeGrid!=A.state.lightProbeGridArray.length>0)&&(Hi=!0):(Hi=!0,xt.__version=Te.version);let Ra=xt.currentProgram;Hi===!0&&(Ra=su(Te,fe,Ae),w&&Te.isNodeMaterial&&w.onUpdateProgram(Te,Ra,xt));let Yo=!1,Zc=!1,au=!1,dr=Ra.getUniforms(),Ur=xt.uniforms;if(ct.useProgram(Ra.program)&&(Yo=!0,Zc=!0,au=!0),Te.id!==B&&(B=Te.id,Zc=!0),xt.needsLights){let _r=M0(A.state.lightProbeGridArray,Ae);xt.lightProbeGrid!==_r&&(xt.lightProbeGrid=_r,Zc=!0)}if(Yo||V!==H){ct.buffers.depth.getReversed()&&H.reversedDepth!==!0&&(H._reversedDepth=!0,H.updateProjectionMatrix()),dr.setValue(se,"projectionMatrix",H.projectionMatrix),dr.setValue(se,"viewMatrix",H.matrixWorldInverse);let Qc=dr.map.cameraPosition;Qc!==void 0&&Qc.setValue(se,Ye.setFromMatrixPosition(H.matrixWorld)),yi.logarithmicDepthBuffer&&dr.setValue(se,"logDepthBufFC",2/(Math.log(H.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&dr.setValue(se,"isOrthographic",H.isOrthographicCamera===!0),V!==H&&(V=H,Zc=!0,au=!0)}if(xt.needsLights&&(ia.state.directionalShadowMap.length>0&&dr.setValue(se,"directionalShadowMap",ia.state.directionalShadowMap,U),ia.state.spotShadowMap.length>0&&dr.setValue(se,"spotShadowMap",ia.state.spotShadowMap,U),ia.state.pointShadowMap.length>0&&dr.setValue(se,"pointShadowMap",ia.state.pointShadowMap,U)),Ae.isSkinnedMesh){dr.setOptional(se,Ae,"bindMatrix"),dr.setOptional(se,Ae,"bindMatrixInverse");let _r=Ae.skeleton;_r&&(_r.boneTexture===null&&_r.computeBoneTexture(),dr.setValue(se,"boneTexture",_r.boneTexture,U))}Ae.isBatchedMesh&&(dr.setOptional(se,Ae,"batchingTexture"),dr.setValue(se,"batchingTexture",Ae._matricesTexture,U),dr.setOptional(se,Ae,"batchingIdTexture"),dr.setValue(se,"batchingIdTexture",Ae._indirectTexture,U),dr.setOptional(se,Ae,"batchingColorTexture"),Ae._colorsTexture!==null&&dr.setValue(se,"batchingColorTexture",Ae._colorsTexture,U));let qc=xe.morphAttributes;if((qc.position!==void 0||qc.normal!==void 0||qc.color!==void 0)&&wt.update(Ae,xe,Ra),(Zc||xt.receiveShadow!==Ae.receiveShadow)&&(xt.receiveShadow=Ae.receiveShadow,dr.setValue(se,"receiveShadow",Ae.receiveShadow)),(Te.isMeshStandardMaterial||Te.isMeshLambertMaterial||Te.isMeshPhongMaterial)&&Te.envMap===null&&fe.environment!==null&&(Ur.envMapIntensity.value=fe.environmentIntensity),Ur.dfgLUT!==void 0&&(Ur.dfgLUT.value=Eae()),Zc){if(dr.setValue(se,"toneMappingExposure",C.toneMappingExposure),xt.needsLights&&T1(Ur,au),At&&Te.fog===!0&&Ie.refreshFogUniforms(Ur,At),Ie.refreshMaterialUniforms(Ur,Te,Ue,ge,A.state.transmissionRenderTarget[H.id]),xt.needsLights&&xt.lightProbeGrid){let _r=xt.lightProbeGrid;Ur.probesSH.value=_r.texture,Ur.probesMin.value.copy(_r.boundingBox.min),Ur.probesMax.value.copy(_r.boundingBox.max),Ur.probesResolution.value.copy(_r.resolution)}em.upload(se,EE(xt),Ur,U)}if(Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(em.upload(se,EE(xt),Ur,U),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&dr.setValue(se,"center",Ae.center),dr.setValue(se,"modelViewMatrix",Ae.modelViewMatrix),dr.setValue(se,"normalMatrix",Ae.normalMatrix),dr.setValue(se,"modelMatrix",Ae.matrixWorld),Te.uniformsGroups!==void 0){let _r=Te.uniformsGroups;for(let Qc=0,ou=_r.length;Qc0&&U.useMultisampledRTT(H)===!1?Te=X.get(H).__webglMultisampledFramebuffer:Array.isArray(Ot)?Te=Ot[xe]:Te=Ot,Q.copy(H.viewport),K.copy(H.scissor),J=H.scissorTest}else Q.copy(ie).multiplyScalar(Ue).floor(),K.copy(ue).multiplyScalar(Ue).floor(),J=Pe;if(xe!==0&&(Te=ree),ct.bindFramebuffer(se.FRAMEBUFFER,Te)&&ct.drawBuffers(H,Te),ct.viewport(Q),ct.scissor(K),ct.setScissorTest(J),Ae){let Et=X.get(H.texture);se.framebufferTexture2D(se.FRAMEBUFFER,se.COLOR_ATTACHMENT0,se.TEXTURE_CUBE_MAP_POSITIVE_X+fe,Et.__webglTexture,xe)}else if(At){let Et=fe;for(let Dt=0;Dt1&&se.readBuffer(se.COLOR_ATTACHMENT0+Et),!yi.textureFormatReadable(fi)){Vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!yi.textureTypeReadable(pi)){Vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}fe>=0&&fe<=H.width-Te&&xe>=0&&xe<=H.height-Ae&&se.readPixels(fe,xe,Te,Ae,ae.convert(fi),ae.convert(pi),At)}finally{let Ot=N!==null?X.get(N).__webglFramebuffer:null;ct.bindFramebuffer(se.FRAMEBUFFER,Ot)}}},this.readRenderTargetPixelsAsync=async function(H,fe,xe,Te,Ae,At,Rt,Et=0){if(!(H&&H.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Dt=X.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Rt!==void 0&&(Dt=Dt[Rt]),Dt)if(fe>=0&&fe<=H.width-Te&&xe>=0&&xe<=H.height-Ae){ct.bindFramebuffer(se.FRAMEBUFFER,Dt);let Ot=H.textures[Et],fi=Ot.format,pi=Ot.type;if(H.textures.length>1&&se.readBuffer(se.COLOR_ATTACHMENT0+Et),!yi.textureFormatReadable(fi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!yi.textureTypeReadable(pi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Nt=se.createBuffer();se.bindBuffer(se.PIXEL_PACK_BUFFER,Nt),se.bufferData(se.PIXEL_PACK_BUFFER,At.byteLength,se.STREAM_READ),se.readPixels(fe,xe,Te,Ae,ae.convert(fi),ae.convert(pi),0);let sr=N!==null?X.get(N).__webglFramebuffer:null;ct.bindFramebuffer(se.FRAMEBUFFER,sr);let Br=se.fenceSync(se.SYNC_GPU_COMMANDS_COMPLETE,0);return se.flush(),await EB(se,Br,4),se.bindBuffer(se.PIXEL_PACK_BUFFER,Nt),se.getBufferSubData(se.PIXEL_PACK_BUFFER,0,At),se.deleteBuffer(Nt),se.deleteSync(Br),At}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(H,fe=null,xe=0){let Te=Math.pow(2,-xe),Ae=Math.floor(H.image.width*Te),At=Math.floor(H.image.height*Te),Rt=fe!==null?fe.x:0,Et=fe!==null?fe.y:0;U.setTexture2D(H,0),se.copyTexSubImage2D(se.TEXTURE_2D,xe,0,0,Rt,Et,Ae,At),ct.unbindTexture()};let nee=se.createFramebuffer(),see=se.createFramebuffer();this.copyTextureToTexture=function(H,fe,xe=null,Te=null,Ae=0,At=0){let Rt,Et,Dt,Ot,fi,pi,Nt,sr,Br,Nr=H.isCompressedTexture?H.mipmaps[At]:H.image;if(xe!==null)Rt=xe.max.x-xe.min.x,Et=xe.max.y-xe.min.y,Dt=xe.isBox3?xe.max.z-xe.min.z:1,Ot=xe.min.x,fi=xe.min.y,pi=xe.isBox3?xe.min.z:0;else{let Ur=Math.pow(2,-Ae);Rt=Math.floor(Nr.width*Ur),Et=Math.floor(Nr.height*Ur),H.isDataArrayTexture?Dt=Nr.depth:H.isData3DTexture?Dt=Math.floor(Nr.depth*Ur):Dt=1,Ot=0,fi=0,pi=0}Te!==null?(Nt=Te.x,sr=Te.y,Br=Te.z):(Nt=0,sr=0,Br=0);let fr=ae.convert(fe.format),Fn=ae.convert(fe.type),xt;fe.isData3DTexture?(U.setTexture3D(fe,0),xt=se.TEXTURE_3D):fe.isDataArrayTexture||fe.isCompressedArrayTexture?(U.setTexture2DArray(fe,0),xt=se.TEXTURE_2D_ARRAY):(U.setTexture2D(fe,0),xt=se.TEXTURE_2D),ct.activeTexture(se.TEXTURE0),ct.pixelStorei(se.UNPACK_FLIP_Y_WEBGL,fe.flipY),ct.pixelStorei(se.UNPACK_PREMULTIPLY_ALPHA_WEBGL,fe.premultiplyAlpha),ct.pixelStorei(se.UNPACK_ALIGNMENT,fe.unpackAlignment);let ia=ct.getParameter(se.UNPACK_ROW_LENGTH),Hi=ct.getParameter(se.UNPACK_IMAGE_HEIGHT),Ra=ct.getParameter(se.UNPACK_SKIP_PIXELS),Yo=ct.getParameter(se.UNPACK_SKIP_ROWS),Zc=ct.getParameter(se.UNPACK_SKIP_IMAGES);ct.pixelStorei(se.UNPACK_ROW_LENGTH,Nr.width),ct.pixelStorei(se.UNPACK_IMAGE_HEIGHT,Nr.height),ct.pixelStorei(se.UNPACK_SKIP_PIXELS,Ot),ct.pixelStorei(se.UNPACK_SKIP_ROWS,fi),ct.pixelStorei(se.UNPACK_SKIP_IMAGES,pi);let au=H.isDataArrayTexture||H.isData3DTexture,dr=fe.isDataArrayTexture||fe.isData3DTexture;if(H.isDepthTexture){let Ur=X.get(H),qc=X.get(fe),_r=X.get(Ur.__renderTarget),Qc=X.get(qc.__renderTarget);ct.bindFramebuffer(se.READ_FRAMEBUFFER,_r.__webglFramebuffer),ct.bindFramebuffer(se.DRAW_FRAMEBUFFER,Qc.__webglFramebuffer);for(let ou=0;ou{us();e2={type:"change"},gy={type:"start"},i2={type:"end"},LT=new Qo,t2=new Ma,Sae=Math.cos(70*hg.DEG2RAD),on=new re,Fs=2*Math.PI,lr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},_y=1e-6,OT=class extends tg{constructor(e,t=null){super(e,t),this.state=lr.NONE,this.target=new re,this.cursor=new re,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:hf.ROTATE,MIDDLE:hf.DOLLY,RIGHT:hf.PAN},this.touches={ONE:uf.ROTATE,TWO:uf.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new re,this._lastQuaternion=new nn,this._lastTargetPosition=new re,this._quat=new nn().setFromUnitVectors(e.up,new re(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Xu,this._sphericalDelta=new Xu,this._scale=1,this._panOffset=new re,this._rotateStart=new It,this._rotateEnd=new It,this._rotateDelta=new It,this._panStart=new It,this._panEnd=new It,this._panDelta=new It,this._dollyStart=new It,this._dollyEnd=new It,this._dollyDelta=new It,this._dollyDirection=new re,this._mouse=new It,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Aae.bind(this),this._onPointerDown=Tae.bind(this),this._onPointerUp=xae.bind(this),this._onContextMenu=Pae.bind(this),this._onMouseWheel=Mae.bind(this),this._onKeyDown=Iae.bind(this),this._onTouchStart=yae.bind(this),this._onTouchMove=Cae.bind(this),this._onMouseDown=Rae.bind(this),this._onMouseMove=bae.bind(this),this._interceptControlDown=Dae.bind(this),this._interceptControlUp=Lae.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(e2),this.update(),this.state=lr.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let t=this.object.position;on.copy(t).sub(this.target),on.applyQuaternion(this._quat),this._spherical.setFromVector3(on),this.autoRotate&&this.state===lr.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(i)&&isFinite(r)&&(i<-Math.PI?i+=Fs:i>Math.PI&&(i-=Fs),r<-Math.PI?r+=Fs:r>Math.PI&&(r-=Fs),i<=r?this._spherical.theta=Math.max(i,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+r)/2?Math.max(i,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(on.setFromSpherical(this._spherical),on.applyQuaternion(this._quatInverse),t.copy(this.target).add(on),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){let o=on.length();a=this._clampDistance(o*this._scale);let l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){let o=new re(this._mouse.x,this._mouse.y,0);o.unproject(this.object);let l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;let c=new re(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=on.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(LT.origin.copy(this.object.position),LT.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(LT.direction))_y||8*(1-this._lastQuaternion.dot(this.object.quaternion))>_y||this._lastTargetPosition.distanceToSquared(this.target)>_y?(this.dispatchEvent(e2),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Fs/60*this.autoRotateSpeed*e:Fs/60/60*this.autoRotateSpeed}_getZoomScale(e){let t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){on.setFromMatrixColumn(t,0),on.multiplyScalar(-e),this._panOffset.add(on)}_panUp(e,t){this.screenSpacePanning===!0?on.setFromMatrixColumn(t,1):(on.setFromMatrixColumn(t,0),on.crossVectors(this.object.up,on)),on.multiplyScalar(e),this._panOffset.add(on)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;on.copy(r).sub(this.target);let s=on.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/i.clientHeight,this.object.matrix),this._panUp(2*t*s/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let i=this.domElement.getBoundingClientRect(),r=e-i.left,s=t-i.top,a=i.width,o=i.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Fs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Fs*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(i,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(i,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let i=this._getSecondPointerPosition(e),r=.5*(e.pageX+i.x),s=.5*(e.pageY+i.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Fs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Fs*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(i,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t{us();NT=class extends Vd{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new cf;e.deleteAttribute("uv");let t=new bn({side:Mn}),i=new bn,r=new fo(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new ci(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new kd(e,i,6),o=new er;o.position.set(-10.906,2.009,1.846),o.rotation.set(0,-.195,0),o.scale.set(2.328,7.905,4.651),o.updateMatrix(),a.setMatrixAt(0,o.matrix),o.position.set(-5.607,-.754,-.758),o.rotation.set(0,.994,0),o.scale.set(1.97,1.534,3.955),o.updateMatrix(),a.setMatrixAt(1,o.matrix),o.position.set(6.167,.857,7.803),o.rotation.set(0,.561,0),o.scale.set(3.927,6.285,3.687),o.updateMatrix(),a.setMatrixAt(2,o.matrix),o.position.set(-2.017,.018,6.124),o.rotation.set(0,.333,0),o.scale.set(2.002,4.566,2.064),o.updateMatrix(),a.setMatrixAt(3,o.matrix),o.position.set(2.291,-.756,-2.621),o.rotation.set(0,-.286,0),o.scale.set(1.546,1.552,1.496),o.updateMatrix(),a.setMatrixAt(4,o.matrix),o.position.set(-2.193,-.369,-5.547),o.rotation.set(0,.516,0),o.scale.set(3.875,3.487,2.986),o.updateMatrix(),a.setMatrixAt(5,o.matrix),this.add(a);let l=new ci(e,rm(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new ci(e,rm(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new ci(e,rm(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new ci(e,rm(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let h=new ci(e,rm(20));h.position.set(3.235,11.486,-12.541),h.scale.set(2.5,2,.1),this.add(h);let u=new ci(e,rm(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){let e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(let t of e)t.dispose()}}});var wT,vy,s2=I(()=>{us();wT=class extends vn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?ho.extractUrlBase(e):this.path,o=new Os(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{t(s.parse(l,a))}catch(c){r?r(c):console.error(c),s.manager.itemError(e)}},i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split(` -`),r={},s=/\s+/,a={};for(let l=0;l=0?c.substring(0,f):c;d=d.toLowerCase();let h=f>=0?c.substring(f+1):"";if(h=h.trim(),d==="newmtl")r={name:h},a[h]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let u=h.split(s,3);r[d]=[parseFloat(u[0]),parseFloat(u[1]),parseFloat(u[2])]}else r[d]=h}let o=new vy(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},vy=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:aa,this.wrap=this.options.wrap!==void 0?this.options.wrap:Zo}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],s={};t[i]=s;for(let a in r){let o=!0,l=r[a],c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break;default:break}o&&(s[c]=l)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function s(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(r[o])return;let c=t.getTextureParams(l,r),f=t.loadTexture(s(t.baseUrl,c.url));f.repeat.copy(c.scale),f.offset.copy(c.offset),f.wrapS=t.wrap,f.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(f.colorSpace=Oi),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"ks":r.specular=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"ke":r.emissive=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"disp":a("displacementMap",l);break;case"map_d":a("alphaMap",l),r.transparent=!0;break;case"ns":r.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(r.opacity=c,r.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(r.opacity=1-c,r.transparent=!0);break;default:break}}return this.materials[e]=new Hd(r),this.materials[e]}getTextureParams(e,t){let i={scale:new It(1,1),offset:new It(0,0)},r=e.split(/\s+/),s;return s=r.indexOf("-bm"),s>=0&&(t.bumpScale=parseFloat(r[s+1]),r.splice(s,2)),s=r.indexOf("-mm"),s>=0&&(t.displacementBias=parseFloat(r[s+1]),t.displacementScale=parseFloat(r[s+2]),r.splice(s,3)),s=r.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),s=r.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),i.url=r.join(" ").trim(),i}loadTexture(e,t,i,r,s){let a=this.manager!==void 0?this.manager:bT,o=a.getHandler(e);o===null&&(o=new Xd(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function Bae(){let n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);let o={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){let r=i.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseNormalIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseUVIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/2)*2},addVertex:function(e,t,i){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,s=this.object.geometry.normals;o2.fromArray(r,e),Ey.fromArray(r,t),l2.fromArray(r,i),Pa.subVectors(l2,Ey),c2.subVectors(o2,Ey),Pa.cross(c2),Pa.normalize(),s.push(Pa.x,Pa.y,Pa.z),s.push(Pa.x,Pa.y,Pa.z),s.push(Pa.x,Pa.y,Pa.z)},addColor:function(e,t,i){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[i]!==void 0&&s.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,s,a,o,l,c){let f=this.vertices.length,d=this.parseVertexIndex(e,f),h=this.parseVertexIndex(t,f),u=this.parseVertexIndex(i,f);if(this.addVertex(d,h,u),this.addColor(d,h,u),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),h=this.parseNormalIndex(l,m),u=this.parseNormalIndex(c,m),this.addNormal(d,h,u)}else this.addFaceNormal(d,h,u);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),h=this.parseUVIndex(s,m),u=this.parseUVIndex(a,m),this.addUV(d,h,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i{us();Oae=/^[og]\s*(.+)?/,Nae=/^mtllib /,wae=/^usemtl /,Fae=/^usemap /,a2=/\s+/,o2=new re,Ey=new re,l2=new re,c2=new re,Pa=new re,FT=new ht;BT=class extends vn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new Bae;e.indexOf(`\r +}`,my=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t){if(this.texture===null){let i=new X_(e.texture);(e.depthNear!==t.depthNear||e.depthFar!==t.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=i}}getMesh(e){if(this.texture!==null&&this.mesh===null){let t=e.cameras[0].viewport,i=new la({vertexShader:uae,fragmentShader:mae,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new ci(new Wd(20,20),i)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},py=class extends ya{constructor(e,t){super();let i=this,r=null,s=1,a=null,o="local-floor",l=1,c=null,f=null,d=null,h=null,u=null,m=null,_=typeof XRWebGLBinding!="undefined",p=new my,g={},v=t.getContextAttributes(),T=null,S=null,E=[],A=[],R=new It,M=null,y=new gr;y.viewport=new or;let C=new gr;C.viewport=new or;let D=[y,C],w=new LS,G=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getTargetRaySpace()},this.getControllerGrip=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getGripSpace()},this.getHand=function(oe){let ve=E[oe];return ve===void 0&&(ve=new Fu,E[oe]=ve),ve.getHandSpace()};function N(oe){let ve=A.indexOf(oe.inputSource);if(ve===-1)return;let ie=E[ve];ie!==void 0&&(ie.update(oe.inputSource,oe.frame,c||a),ie.dispatchEvent({type:oe.type,data:oe.inputSource}))}function B(){r.removeEventListener("select",N),r.removeEventListener("selectstart",N),r.removeEventListener("selectend",N),r.removeEventListener("squeeze",N),r.removeEventListener("squeezestart",N),r.removeEventListener("squeezeend",N),r.removeEventListener("end",B),r.removeEventListener("inputsourceschange",V);for(let oe=0;oe=0&&(A[ue]=null,E[ue].disconnect(ie))}for(let ve=0;ve=A.length){A.push(ie),ue=me;break}else if(A[me]===null){A[me]=ie,ue=me;break}if(ue===-1)break}let Pe=E[ue];Pe&&Pe.connect(ie)}}let Q=new re,K=new re;function J(oe,ve,ie){Q.setFromMatrixPosition(ve.matrixWorld),K.setFromMatrixPosition(ie.matrixWorld);let ue=Q.distanceTo(K),Pe=ve.projectionMatrix.elements,me=ie.projectionMatrix.elements,be=Pe[14]/(Pe[10]-1),De=Pe[14]/(Pe[10]+1),ut=(Pe[9]+1)/Pe[5],Ye=(Pe[9]-1)/Pe[5],je=(Pe[8]-1)/Pe[0],Qt=(me[8]+1)/me[0],Pt=be*je,Ti=be*Qt,se=ue/(-je+Qt),Di=se*-je;if(ve.matrixWorld.decompose(oe.position,oe.quaternion,oe.scale),oe.translateX(Di),oe.translateZ(se),oe.matrixWorld.compose(oe.position,oe.quaternion,oe.scale),oe.matrixWorldInverse.copy(oe.matrixWorld).invert(),Pe[10]===-1)oe.projectionMatrix.copy(ve.projectionMatrix),oe.projectionMatrixInverse.copy(ve.projectionMatrixInverse);else{let ii=be+se,yi=De+se,ct=Pt-Di,Yi=Ti+(ue-Di),X=ut*De/yi*ii,U=Ye*De/yi*ii;oe.projectionMatrix.makePerspective(ct,Yi,X,U,ii,yi),oe.projectionMatrixInverse.copy(oe.projectionMatrix).invert()}}function z(oe,ve){ve===null?oe.matrixWorld.copy(oe.matrix):oe.matrixWorld.multiplyMatrices(ve.matrixWorld,oe.matrix),oe.matrixWorldInverse.copy(oe.matrixWorld).invert()}this.updateCamera=function(oe){if(r===null)return;let ve=oe.near,ie=oe.far;p.texture!==null&&(p.depthNear>0&&(ve=p.depthNear),p.depthFar>0&&(ie=p.depthFar)),w.near=C.near=y.near=ve,w.far=C.far=y.far=ie,(G!==w.near||O!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),G=w.near,O=w.far),w.layers.mask=oe.layers.mask|6,y.layers.mask=w.layers.mask&-5,C.layers.mask=w.layers.mask&-3;let ue=oe.parent,Pe=w.cameras;z(w,ue);for(let me=0;me{function At(){if(Te.forEach(function(Rt){X.get(Rt).currentProgram.isReady()&&Te.delete(Rt)}),Te.size===0){Ae(H);return}setTimeout(At,10)}ii.get("KHR_parallel_shader_compile")!==null?At():setTimeout(At,10)})};let ne=null;function ze(H){ne&&ne(H)}function di(){Li.stop()}function Wi(){Li.start()}let Li=new KB;Li.setAnimationLoop(ze),typeof self!="undefined"&&Li.setContext(self),this.setAnimationLoop=function(H){ne=H,rt.setAnimationLoop(H),H===null?Li.stop():Li.start()},rt.addEventListener("sessionstart",di),rt.addEventListener("sessionend",Wi),this.render=function(H,fe){if(fe!==void 0&&fe.isCamera!==!0){Vt("WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(D===!0)return;w!==null&&w.renderStart(H,fe);let xe=rt.enabled===!0&&rt.isPresenting===!0,Te=y!==null&&(N===null||xe)&&y.begin(C,N);if(H.matrixWorldAutoUpdate===!0&&H.updateMatrixWorld(),fe.parent===null&&fe.matrixWorldAutoUpdate===!0&&fe.updateMatrixWorld(),rt.enabled===!0&&rt.isPresenting===!0&&(y===null||y.isCompositing()===!1)&&(rt.cameraAutoUpdate===!0&&rt.updateCamera(fe),fe=rt.getCamera()),H.isScene===!0&&H.onBeforeRender(C,H,fe,N),A=lt.get(H,M.length),A.init(fe),A.state.textureUnits=U.getTextureUnits(),M.push(A),ut.multiplyMatrices(fe.projectionMatrix,fe.matrixWorldInverse),me.setFromProjectionMatrix(ut,ao,fe.reversedDepth),De=this.localClippingEnabled,be=dt.init(this.clippingPlanes,De),E=Le.get(H,R.length),E.init(),R.push(E),rt.enabled===!0&&rt.isPresenting===!0){let Rt=C.xr.getDepthSensingMesh();Rt!==null&&wn(Rt,fe,-1/0,C.sortObjects)}wn(H,fe,0,C.sortObjects),E.finish(),C.sortObjects===!0&&E.sort(oe,ve),Pt=rt.enabled===!1||rt.isPresenting===!1||rt.hasDepthSensing()===!1,Pt&&et.addToRenderList(E,H),this.info.render.frame++,be===!0&&dt.beginShadows();let Ae=A.state.shadowsArray;if(qe.render(Ae,H,fe),be===!0&&dt.endShadows(),this.info.autoReset===!0&&this.info.reset(),(Te&&y.hasRenderPass())===!1){let Rt=E.opaque,Et=E.transmissive;if(A.setupLights(),fe.isArrayCamera){let Dt=fe.cameras;if(Et.length>0)for(let Ot=0,fi=Dt.length;Ot0&&Xo(Rt,Et,H,fe),Pt&&et.render(H),ls(E,H,fe)}N!==null&&O===0&&(U.updateMultisampleRenderTarget(N),U.updateRenderTargetMipmap(N)),Te&&y.end(C),H.isScene===!0&&H.onAfterRender(C,H,fe),tt.resetDefaultState(),B=-1,V=null,M.pop(),M.length>0?(A=M[M.length-1],U.setTextureUnits(A.state.textureUnits),be===!0&&dt.setGlobalState(C.clippingPlanes,A.state.camera)):A=null,R.pop(),R.length>0?E=R[R.length-1]:E=null,w!==null&&w.renderEnd()};function wn(H,fe,xe,Te){if(H.visible===!1)return;if(H.layers.test(fe.layers)){if(H.isGroup)xe=H.renderOrder;else if(H.isLOD)H.autoUpdate===!0&&H.update(fe);else if(H.isLightProbeGrid)A.pushLightProbeGrid(H);else if(H.isLight)A.pushLight(H),H.castShadow&&A.pushShadow(H);else if(H.isSprite){if(!H.frustumCulled||me.intersectsSprite(H)){Te&&je.setFromMatrixPosition(H.matrixWorld).applyMatrix4(ut);let Rt=Je.update(H),Et=H.material;Et.visible&&E.push(H,Rt,Et,xe,je.z,null)}}else if((H.isMesh||H.isLine||H.isPoints)&&(!H.frustumCulled||me.intersectsObject(H))){let Rt=Je.update(H),Et=H.material;if(Te&&(H.boundingSphere!==void 0?(H.boundingSphere===null&&H.computeBoundingSphere(),je.copy(H.boundingSphere.center)):(Rt.boundingSphere===null&&Rt.computeBoundingSphere(),je.copy(Rt.boundingSphere.center)),je.applyMatrix4(H.matrixWorld).applyMatrix4(ut)),Array.isArray(Et)){let Dt=Rt.groups;for(let Ot=0,fi=Dt.length;Ot0&&nu(Ae,fe,xe),At.length>0&&nu(At,fe,xe),Rt.length>0&&nu(Rt,fe,xe),ct.buffers.depth.setTest(!0),ct.buffers.depth.setMask(!0),ct.buffers.color.setMask(!0),ct.setPolygonOffset(!1)}function Xo(H,fe,xe,Te){if((xe.isScene===!0?xe.overrideMaterial:null)!==null)return;if(A.state.transmissionRenderTarget[Te.id]===void 0){let Nt=ii.has("EXT_color_buffer_half_float")||ii.has("EXT_color_buffer_float");A.state.transmissionRenderTarget[Te.id]=new oa(1,1,{generateMipmaps:!0,type:Nt?sl:ws,minFilter:uo,samples:Math.max(4,yi.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:oi.workingColorSpace})}let At=A.state.transmissionRenderTarget[Te.id],Rt=Te.viewport||Q;At.setSize(Rt.z*C.transmissionResolutionScale,Rt.w*C.transmissionResolutionScale);let Et=C.getRenderTarget(),Dt=C.getActiveCubeFace(),Ot=C.getActiveMipmapLevel();C.setRenderTarget(At),C.getClearColor(z),Y=C.getClearAlpha(),Y<1&&C.setClearColor(16777215,.5),C.clear(),Pt&&et.render(xe);let fi=C.toneMapping;C.toneMapping=Ns;let pi=Te.viewport;if(Te.viewport!==void 0&&(Te.viewport=void 0),A.setupLightsView(Te),be===!0&&dt.setGlobalState(C.clippingPlanes,Te),nu(H,xe,Te),U.updateMultisampleRenderTarget(At),U.updateRenderTargetMipmap(At),ii.has("WEBGL_multisampled_render_to_texture")===!1){let Nt=!1;for(let sr=0,Br=fe.length;sr0,Te.currentProgram=pi,Te.uniformsList=null,pi}function SE(H){if(H.uniformsList===null){let fe=H.currentProgram.getUniforms();H.uniformsList=em.seqWithValue(fe.seq,H.uniforms)}return H.uniformsList}function jc(H,fe){let xe=X.get(H);xe.outputColorSpace=fe.outputColorSpace,xe.batching=fe.batching,xe.batchingColor=fe.batchingColor,xe.instancing=fe.instancing,xe.instancingColor=fe.instancingColor,xe.instancingMorph=fe.instancingMorph,xe.skinning=fe.skinning,xe.morphTargets=fe.morphTargets,xe.morphNormals=fe.morphNormals,xe.morphColors=fe.morphColors,xe.morphTargetsCount=fe.morphTargetsCount,xe.numClippingPlanes=fe.numClippingPlanes,xe.numIntersection=fe.numClipIntersection,xe.vertexAlphas=fe.vertexAlphas,xe.vertexTangents=fe.vertexTangents,xe.toneMapping=fe.toneMapping}function M0(H,fe){if(H.length===0)return null;if(H.length===1)return H[0].texture!==null?H[0]:null;S.setFromMatrixPosition(fe.matrixWorld);for(let xe=0,Te=H.length;xe0),Nt=!!xe.morphAttributes.position,sr=!!xe.morphAttributes.normal,Br=!!xe.morphAttributes.color,Nr=Ns;Te.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Nr=C.toneMapping);let fr=xe.morphAttributes.position||xe.morphAttributes.normal||xe.morphAttributes.color,Fn=fr!==void 0?fr.length:0,xt=X.get(Te),ia=A.state.lights;if(be===!0&&(De===!0||H!==V)){let _r=H===V&&Te.id===B;dt.setState(Te,H,_r)}let Hi=!1;Te.version===xt.__version?(xt.needsLights&&xt.lightsStateVersion!==ia.state.version||xt.outputColorSpace!==Et||Ae.isBatchedMesh&&xt.batching===!1||!Ae.isBatchedMesh&&xt.batching===!0||Ae.isBatchedMesh&&xt.batchingColor===!0&&Ae.colorTexture===null||Ae.isBatchedMesh&&xt.batchingColor===!1&&Ae.colorTexture!==null||Ae.isInstancedMesh&&xt.instancing===!1||!Ae.isInstancedMesh&&xt.instancing===!0||Ae.isSkinnedMesh&&xt.skinning===!1||!Ae.isSkinnedMesh&&xt.skinning===!0||Ae.isInstancedMesh&&xt.instancingColor===!0&&Ae.instanceColor===null||Ae.isInstancedMesh&&xt.instancingColor===!1&&Ae.instanceColor!==null||Ae.isInstancedMesh&&xt.instancingMorph===!0&&Ae.morphTexture===null||Ae.isInstancedMesh&&xt.instancingMorph===!1&&Ae.morphTexture!==null||xt.envMap!==Ot||Te.fog===!0&&xt.fog!==At||xt.numClippingPlanes!==void 0&&(xt.numClippingPlanes!==dt.numPlanes||xt.numIntersection!==dt.numIntersection)||xt.vertexAlphas!==fi||xt.vertexTangents!==pi||xt.morphTargets!==Nt||xt.morphNormals!==sr||xt.morphColors!==Br||xt.toneMapping!==Nr||xt.morphTargetsCount!==Fn||!!xt.lightProbeGrid!=A.state.lightProbeGridArray.length>0)&&(Hi=!0):(Hi=!0,xt.__version=Te.version);let Ra=xt.currentProgram;Hi===!0&&(Ra=su(Te,fe,Ae),w&&Te.isNodeMaterial&&w.onUpdateProgram(Te,Ra,xt));let Yo=!1,Zc=!1,au=!1,dr=Ra.getUniforms(),Ur=xt.uniforms;if(ct.useProgram(Ra.program)&&(Yo=!0,Zc=!0,au=!0),Te.id!==B&&(B=Te.id,Zc=!0),xt.needsLights){let _r=M0(A.state.lightProbeGridArray,Ae);xt.lightProbeGrid!==_r&&(xt.lightProbeGrid=_r,Zc=!0)}if(Yo||V!==H){ct.buffers.depth.getReversed()&&H.reversedDepth!==!0&&(H._reversedDepth=!0,H.updateProjectionMatrix()),dr.setValue(se,"projectionMatrix",H.projectionMatrix),dr.setValue(se,"viewMatrix",H.matrixWorldInverse);let Qc=dr.map.cameraPosition;Qc!==void 0&&Qc.setValue(se,Ye.setFromMatrixPosition(H.matrixWorld)),yi.logarithmicDepthBuffer&&dr.setValue(se,"logDepthBufFC",2/(Math.log(H.far+1)/Math.LN2)),(Te.isMeshPhongMaterial||Te.isMeshToonMaterial||Te.isMeshLambertMaterial||Te.isMeshBasicMaterial||Te.isMeshStandardMaterial||Te.isShaderMaterial)&&dr.setValue(se,"isOrthographic",H.isOrthographicCamera===!0),V!==H&&(V=H,Zc=!0,au=!0)}if(xt.needsLights&&(ia.state.directionalShadowMap.length>0&&dr.setValue(se,"directionalShadowMap",ia.state.directionalShadowMap,U),ia.state.spotShadowMap.length>0&&dr.setValue(se,"spotShadowMap",ia.state.spotShadowMap,U),ia.state.pointShadowMap.length>0&&dr.setValue(se,"pointShadowMap",ia.state.pointShadowMap,U)),Ae.isSkinnedMesh){dr.setOptional(se,Ae,"bindMatrix"),dr.setOptional(se,Ae,"bindMatrixInverse");let _r=Ae.skeleton;_r&&(_r.boneTexture===null&&_r.computeBoneTexture(),dr.setValue(se,"boneTexture",_r.boneTexture,U))}Ae.isBatchedMesh&&(dr.setOptional(se,Ae,"batchingTexture"),dr.setValue(se,"batchingTexture",Ae._matricesTexture,U),dr.setOptional(se,Ae,"batchingIdTexture"),dr.setValue(se,"batchingIdTexture",Ae._indirectTexture,U),dr.setOptional(se,Ae,"batchingColorTexture"),Ae._colorsTexture!==null&&dr.setValue(se,"batchingColorTexture",Ae._colorsTexture,U));let qc=xe.morphAttributes;if((qc.position!==void 0||qc.normal!==void 0||qc.color!==void 0)&&wt.update(Ae,xe,Ra),(Zc||xt.receiveShadow!==Ae.receiveShadow)&&(xt.receiveShadow=Ae.receiveShadow,dr.setValue(se,"receiveShadow",Ae.receiveShadow)),(Te.isMeshStandardMaterial||Te.isMeshLambertMaterial||Te.isMeshPhongMaterial)&&Te.envMap===null&&fe.environment!==null&&(Ur.envMapIntensity.value=fe.environmentIntensity),Ur.dfgLUT!==void 0&&(Ur.dfgLUT.value=Eae()),Zc){if(dr.setValue(se,"toneMappingExposure",C.toneMappingExposure),xt.needsLights&&T1(Ur,au),At&&Te.fog===!0&&Ie.refreshFogUniforms(Ur,At),Ie.refreshMaterialUniforms(Ur,Te,Ue,ge,A.state.transmissionRenderTarget[H.id]),xt.needsLights&&xt.lightProbeGrid){let _r=xt.lightProbeGrid;Ur.probesSH.value=_r.texture,Ur.probesMin.value.copy(_r.boundingBox.min),Ur.probesMax.value.copy(_r.boundingBox.max),Ur.probesResolution.value.copy(_r.resolution)}em.upload(se,SE(xt),Ur,U)}if(Te.isShaderMaterial&&Te.uniformsNeedUpdate===!0&&(em.upload(se,SE(xt),Ur,U),Te.uniformsNeedUpdate=!1),Te.isSpriteMaterial&&dr.setValue(se,"center",Ae.center),dr.setValue(se,"modelViewMatrix",Ae.modelViewMatrix),dr.setValue(se,"normalMatrix",Ae.normalMatrix),dr.setValue(se,"modelMatrix",Ae.matrixWorld),Te.uniformsGroups!==void 0){let _r=Te.uniformsGroups;for(let Qc=0,ou=_r.length;Qc0&&U.useMultisampledRTT(H)===!1?Te=X.get(H).__webglMultisampledFramebuffer:Array.isArray(Ot)?Te=Ot[xe]:Te=Ot,Q.copy(H.viewport),K.copy(H.scissor),J=H.scissorTest}else Q.copy(ie).multiplyScalar(Ue).floor(),K.copy(ue).multiplyScalar(Ue).floor(),J=Pe;if(xe!==0&&(Te=ree),ct.bindFramebuffer(se.FRAMEBUFFER,Te)&&ct.drawBuffers(H,Te),ct.viewport(Q),ct.scissor(K),ct.setScissorTest(J),Ae){let Et=X.get(H.texture);se.framebufferTexture2D(se.FRAMEBUFFER,se.COLOR_ATTACHMENT0,se.TEXTURE_CUBE_MAP_POSITIVE_X+fe,Et.__webglTexture,xe)}else if(At){let Et=fe;for(let Dt=0;Dt1&&se.readBuffer(se.COLOR_ATTACHMENT0+Et),!yi.textureFormatReadable(fi)){Vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!yi.textureTypeReadable(pi)){Vt("WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}fe>=0&&fe<=H.width-Te&&xe>=0&&xe<=H.height-Ae&&se.readPixels(fe,xe,Te,Ae,ae.convert(fi),ae.convert(pi),At)}finally{let Ot=N!==null?X.get(N).__webglFramebuffer:null;ct.bindFramebuffer(se.FRAMEBUFFER,Ot)}}},this.readRenderTargetPixelsAsync=async function(H,fe,xe,Te,Ae,At,Rt,Et=0){if(!(H&&H.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let Dt=X.get(H).__webglFramebuffer;if(H.isWebGLCubeRenderTarget&&Rt!==void 0&&(Dt=Dt[Rt]),Dt)if(fe>=0&&fe<=H.width-Te&&xe>=0&&xe<=H.height-Ae){ct.bindFramebuffer(se.FRAMEBUFFER,Dt);let Ot=H.textures[Et],fi=Ot.format,pi=Ot.type;if(H.textures.length>1&&se.readBuffer(se.COLOR_ATTACHMENT0+Et),!yi.textureFormatReadable(fi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!yi.textureTypeReadable(pi))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");let Nt=se.createBuffer();se.bindBuffer(se.PIXEL_PACK_BUFFER,Nt),se.bufferData(se.PIXEL_PACK_BUFFER,At.byteLength,se.STREAM_READ),se.readPixels(fe,xe,Te,Ae,ae.convert(fi),ae.convert(pi),0);let sr=N!==null?X.get(N).__webglFramebuffer:null;ct.bindFramebuffer(se.FRAMEBUFFER,sr);let Br=se.fenceSync(se.SYNC_GPU_COMMANDS_COMPLETE,0);return se.flush(),await EB(se,Br,4),se.bindBuffer(se.PIXEL_PACK_BUFFER,Nt),se.getBufferSubData(se.PIXEL_PACK_BUFFER,0,At),se.deleteBuffer(Nt),se.deleteSync(Br),At}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")},this.copyFramebufferToTexture=function(H,fe=null,xe=0){let Te=Math.pow(2,-xe),Ae=Math.floor(H.image.width*Te),At=Math.floor(H.image.height*Te),Rt=fe!==null?fe.x:0,Et=fe!==null?fe.y:0;U.setTexture2D(H,0),se.copyTexSubImage2D(se.TEXTURE_2D,xe,0,0,Rt,Et,Ae,At),ct.unbindTexture()};let nee=se.createFramebuffer(),see=se.createFramebuffer();this.copyTextureToTexture=function(H,fe,xe=null,Te=null,Ae=0,At=0){let Rt,Et,Dt,Ot,fi,pi,Nt,sr,Br,Nr=H.isCompressedTexture?H.mipmaps[At]:H.image;if(xe!==null)Rt=xe.max.x-xe.min.x,Et=xe.max.y-xe.min.y,Dt=xe.isBox3?xe.max.z-xe.min.z:1,Ot=xe.min.x,fi=xe.min.y,pi=xe.isBox3?xe.min.z:0;else{let Ur=Math.pow(2,-Ae);Rt=Math.floor(Nr.width*Ur),Et=Math.floor(Nr.height*Ur),H.isDataArrayTexture?Dt=Nr.depth:H.isData3DTexture?Dt=Math.floor(Nr.depth*Ur):Dt=1,Ot=0,fi=0,pi=0}Te!==null?(Nt=Te.x,sr=Te.y,Br=Te.z):(Nt=0,sr=0,Br=0);let fr=ae.convert(fe.format),Fn=ae.convert(fe.type),xt;fe.isData3DTexture?(U.setTexture3D(fe,0),xt=se.TEXTURE_3D):fe.isDataArrayTexture||fe.isCompressedArrayTexture?(U.setTexture2DArray(fe,0),xt=se.TEXTURE_2D_ARRAY):(U.setTexture2D(fe,0),xt=se.TEXTURE_2D),ct.activeTexture(se.TEXTURE0),ct.pixelStorei(se.UNPACK_FLIP_Y_WEBGL,fe.flipY),ct.pixelStorei(se.UNPACK_PREMULTIPLY_ALPHA_WEBGL,fe.premultiplyAlpha),ct.pixelStorei(se.UNPACK_ALIGNMENT,fe.unpackAlignment);let ia=ct.getParameter(se.UNPACK_ROW_LENGTH),Hi=ct.getParameter(se.UNPACK_IMAGE_HEIGHT),Ra=ct.getParameter(se.UNPACK_SKIP_PIXELS),Yo=ct.getParameter(se.UNPACK_SKIP_ROWS),Zc=ct.getParameter(se.UNPACK_SKIP_IMAGES);ct.pixelStorei(se.UNPACK_ROW_LENGTH,Nr.width),ct.pixelStorei(se.UNPACK_IMAGE_HEIGHT,Nr.height),ct.pixelStorei(se.UNPACK_SKIP_PIXELS,Ot),ct.pixelStorei(se.UNPACK_SKIP_ROWS,fi),ct.pixelStorei(se.UNPACK_SKIP_IMAGES,pi);let au=H.isDataArrayTexture||H.isData3DTexture,dr=fe.isDataArrayTexture||fe.isData3DTexture;if(H.isDepthTexture){let Ur=X.get(H),qc=X.get(fe),_r=X.get(Ur.__renderTarget),Qc=X.get(qc.__renderTarget);ct.bindFramebuffer(se.READ_FRAMEBUFFER,_r.__webglFramebuffer),ct.bindFramebuffer(se.DRAW_FRAMEBUFFER,Qc.__webglFramebuffer);for(let ou=0;ou{us();e2={type:"change"},gy={type:"start"},i2={type:"end"},OT=new Qo,t2=new Ma,Sae=Math.cos(70*hg.DEG2RAD),on=new re,Fs=2*Math.PI,lr={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},_y=1e-6,NT=class extends tg{constructor(e,t=null){super(e,t),this.state=lr.NONE,this.target=new re,this.cursor=new re,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:hf.ROTATE,MIDDLE:hf.DOLLY,RIGHT:hf.PAN},this.touches={ONE:uf.ROTATE,TWO:uf.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new re,this._lastQuaternion=new nn,this._lastTargetPosition=new re,this._quat=new nn().setFromUnitVectors(e.up,new re(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Xu,this._sphericalDelta=new Xu,this._scale=1,this._panOffset=new re,this._rotateStart=new It,this._rotateEnd=new It,this._rotateDelta=new It,this._panStart=new It,this._panEnd=new It,this._panDelta=new It,this._dollyStart=new It,this._dollyEnd=new It,this._dollyDelta=new It,this._dollyDirection=new re,this._mouse=new It,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Aae.bind(this),this._onPointerDown=Tae.bind(this),this._onPointerUp=xae.bind(this),this._onContextMenu=Pae.bind(this),this._onMouseWheel=Mae.bind(this),this._onKeyDown=Iae.bind(this),this._onTouchStart=yae.bind(this),this._onTouchMove=Cae.bind(this),this._onMouseDown=Rae.bind(this),this._onMouseMove=bae.bind(this),this._interceptControlDown=Dae.bind(this),this._interceptControlUp=Lae.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(e2),this.update(),this.state=lr.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let t=this.object.position;on.copy(t).sub(this.target),on.applyQuaternion(this._quat),this._spherical.setFromVector3(on),this.autoRotate&&this.state===lr.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let i=this.minAzimuthAngle,r=this.maxAzimuthAngle;isFinite(i)&&isFinite(r)&&(i<-Math.PI?i+=Fs:i>Math.PI&&(i-=Fs),r<-Math.PI?r+=Fs:r>Math.PI&&(r-=Fs),i<=r?this._spherical.theta=Math.max(i,Math.min(r,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(i+r)/2?Math.max(i,this._spherical.theta):Math.min(r,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let s=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),s=a!=this._spherical.radius}if(on.setFromSpherical(this._spherical),on.applyQuaternion(this._quatInverse),t.copy(this.target).add(on),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){let o=on.length();a=this._clampDistance(o*this._scale);let l=o-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),s=!!l}else if(this.object.isOrthographicCamera){let o=new re(this._mouse.x,this._mouse.y,0);o.unproject(this.object);let l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),s=l!==this.object.zoom;let c=new re(this._mouse.x,this._mouse.y,0);c.unproject(this.object),this.object.position.sub(c).add(o),this.object.updateMatrixWorld(),a=on.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(OT.origin.copy(this.object.position),OT.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(OT.direction))_y||8*(1-this._lastQuaternion.dot(this.object.quaternion))>_y||this._lastTargetPosition.distanceToSquared(this.target)>_y?(this.dispatchEvent(e2),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?Fs/60*this.autoRotateSpeed*e:Fs/60/60*this.autoRotateSpeed}_getZoomScale(e){let t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){on.setFromMatrixColumn(t,0),on.multiplyScalar(-e),this._panOffset.add(on)}_panUp(e,t){this.screenSpacePanning===!0?on.setFromMatrixColumn(t,1):(on.setFromMatrixColumn(t,0),on.crossVectors(this.object.up,on)),on.multiplyScalar(e),this._panOffset.add(on)}_pan(e,t){let i=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;on.copy(r).sub(this.target);let s=on.length();s*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*s/i.clientHeight,this.object.matrix),this._panUp(2*t*s/i.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/i.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/i.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let i=this.domElement.getBoundingClientRect(),r=e-i.left,s=t-i.top,a=i.width,o=i.height;this._mouse.x=r/a*2-1,this._mouse.y=-(s/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Fs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Fs*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-Fs*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(i,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(i,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyStart.set(0,s)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let i=this._getSecondPointerPosition(e),r=.5*(e.pageX+i.x),s=.5*(e.pageY+i.y);this._rotateEnd.set(r,s)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(Fs*this._rotateDelta.x/t.clientHeight),this._rotateUp(Fs*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(i,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),i=e.pageX-t.x,r=e.pageY-t.y,s=Math.sqrt(i*i+r*r);this._dollyEnd.set(0,s),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t{us();wT=class extends Vd{constructor(){super(),this.name="RoomEnvironment",this.position.y=-3.5;let e=new cf;e.deleteAttribute("uv");let t=new bn({side:Mn}),i=new bn,r=new fo(16777215,900,28,2);r.position.set(.418,16.199,.3),this.add(r);let s=new ci(e,t);s.position.set(-.757,13.219,.717),s.scale.set(31.713,28.305,28.591),this.add(s);let a=new kd(e,i,6),o=new er;o.position.set(-10.906,2.009,1.846),o.rotation.set(0,-.195,0),o.scale.set(2.328,7.905,4.651),o.updateMatrix(),a.setMatrixAt(0,o.matrix),o.position.set(-5.607,-.754,-.758),o.rotation.set(0,.994,0),o.scale.set(1.97,1.534,3.955),o.updateMatrix(),a.setMatrixAt(1,o.matrix),o.position.set(6.167,.857,7.803),o.rotation.set(0,.561,0),o.scale.set(3.927,6.285,3.687),o.updateMatrix(),a.setMatrixAt(2,o.matrix),o.position.set(-2.017,.018,6.124),o.rotation.set(0,.333,0),o.scale.set(2.002,4.566,2.064),o.updateMatrix(),a.setMatrixAt(3,o.matrix),o.position.set(2.291,-.756,-2.621),o.rotation.set(0,-.286,0),o.scale.set(1.546,1.552,1.496),o.updateMatrix(),a.setMatrixAt(4,o.matrix),o.position.set(-2.193,-.369,-5.547),o.rotation.set(0,.516,0),o.scale.set(3.875,3.487,2.986),o.updateMatrix(),a.setMatrixAt(5,o.matrix),this.add(a);let l=new ci(e,rm(50));l.position.set(-16.116,14.37,8.208),l.scale.set(.1,2.428,2.739),this.add(l);let c=new ci(e,rm(50));c.position.set(-16.109,18.021,-8.207),c.scale.set(.1,2.425,2.751),this.add(c);let f=new ci(e,rm(17));f.position.set(14.904,12.198,-1.832),f.scale.set(.15,4.265,6.331),this.add(f);let d=new ci(e,rm(43));d.position.set(-.462,8.89,14.52),d.scale.set(4.38,5.441,.088),this.add(d);let h=new ci(e,rm(20));h.position.set(3.235,11.486,-12.541),h.scale.set(2.5,2,.1),this.add(h);let u=new ci(e,rm(100));u.position.set(0,20,0),u.scale.set(1,.1,1),this.add(u)}dispose(){let e=new Set;this.traverse(t=>{t.isMesh&&(e.add(t.geometry),e.add(t.material))});for(let t of e)t.dispose()}}});var FT,vy,s2=I(()=>{us();FT=class extends vn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=this.path===""?ho.extractUrlBase(e):this.path,o=new Os(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(l){try{t(s.parse(l,a))}catch(c){r?r(c):console.error(c),s.manager.itemError(e)}},i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split(` +`),r={},s=/\s+/,a={};for(let l=0;l=0?c.substring(0,f):c;d=d.toLowerCase();let h=f>=0?c.substring(f+1):"";if(h=h.trim(),d==="newmtl")r={name:h},a[h]=r;else if(d==="ka"||d==="kd"||d==="ks"||d==="ke"){let u=h.split(s,3);r[d]=[parseFloat(u[0]),parseFloat(u[1]),parseFloat(u[2])]}else r[d]=h}let o=new vy(this.resourcePath||t,this.materialOptions);return o.setCrossOrigin(this.crossOrigin),o.setManager(this.manager),o.setMaterials(a),o}},vy=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:aa,this.wrap=this.options.wrap!==void 0?this.options.wrap:Zo}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],s={};t[i]=s;for(let a in r){let o=!0,l=r[a],c=a.toLowerCase();switch(c){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(l=[l[0]/255,l[1]/255,l[2]/255]),this.options&&this.options.ignoreZeroRGBs&&l[0]===0&&l[1]===0&&l[2]===0&&(o=!1);break;default:break}o&&(s[c]=l)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return this.materials[e]===void 0&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function s(o,l){return typeof l!="string"||l===""?"":/^https?:\/\//i.test(l)?l:o+l}function a(o,l){if(r[o])return;let c=t.getTextureParams(l,r),f=t.loadTexture(s(t.baseUrl,c.url));f.repeat.copy(c.scale),f.offset.copy(c.offset),f.wrapS=t.wrap,f.wrapT=t.wrap,(o==="map"||o==="emissiveMap")&&(f.colorSpace=Oi),r[o]=f}for(let o in i){let l=i[o],c;if(l!=="")switch(o.toLowerCase()){case"kd":r.color=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"ks":r.specular=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"ke":r.emissive=oi.colorSpaceToWorking(new ht().fromArray(l),Oi);break;case"map_kd":a("map",l);break;case"map_ks":a("specularMap",l);break;case"map_ke":a("emissiveMap",l);break;case"norm":a("normalMap",l);break;case"map_bump":case"bump":a("bumpMap",l);break;case"disp":a("displacementMap",l);break;case"map_d":a("alphaMap",l),r.transparent=!0;break;case"ns":r.shininess=parseFloat(l);break;case"d":c=parseFloat(l),c<1&&(r.opacity=c,r.transparent=!0);break;case"tr":c=parseFloat(l),this.options&&this.options.invertTrProperty&&(c=1-c),c>0&&(r.opacity=1-c,r.transparent=!0);break;default:break}}return this.materials[e]=new Hd(r),this.materials[e]}getTextureParams(e,t){let i={scale:new It(1,1),offset:new It(0,0)},r=e.split(/\s+/),s;return s=r.indexOf("-bm"),s>=0&&(t.bumpScale=parseFloat(r[s+1]),r.splice(s,2)),s=r.indexOf("-mm"),s>=0&&(t.displacementBias=parseFloat(r[s+1]),t.displacementScale=parseFloat(r[s+2]),r.splice(s,3)),s=r.indexOf("-s"),s>=0&&(i.scale.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),s=r.indexOf("-o"),s>=0&&(i.offset.set(parseFloat(r[s+1]),parseFloat(r[s+2])),r.splice(s,4)),i.url=r.join(" ").trim(),i}loadTexture(e,t,i,r,s){let a=this.manager!==void 0?this.manager:MT,o=a.getHandler(e);o===null&&(o=new Xd(a)),o.setCrossOrigin&&o.setCrossOrigin(this.crossOrigin);let l=o.load(e,i,r,s);return t!==void 0&&(l.mapping=t),l}}});function Bae(){let n={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&this.object.fromDeclaration===!1){this.object.name=e,this.object.fromDeclaration=t!==!1;return}let i=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:t!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(r,s){let a=this._finalize(!1);a&&(a.inherited||a.groupCount<=0)&&this.materials.splice(a.index,1);let o={index:this.materials.length,name:r||"",mtllib:Array.isArray(s)&&s.length>0?s[s.length-1]:"",smooth:a!==void 0?a.smooth:this.smooth,groupStart:a!==void 0?a.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(l){let c={index:typeof l=="number"?l:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return c.clone=this.clone.bind(c),c}};return this.materials.push(o),o},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(r){let s=this.currentMaterial();if(s&&s.groupEnd===-1&&(s.groupEnd=this.geometry.vertices.length/3,s.groupCount=s.groupEnd-s.groupStart,s.inherited=!1),r&&this.materials.length>1)for(let a=this.materials.length-1;a>=0;a--)this.materials[a].groupCount<=0&&this.materials.splice(a,1);return r&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),s}},i&&i.name&&typeof i.clone=="function"){let r=i.clone(0);r.inherited=!0,this.object.materials.push(r)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseNormalIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/3)*3},parseUVIndex:function(e,t){let i=parseInt(e,10);return(i>=0?i-1:i+t/2)*2},addVertex:function(e,t,i){let r=this.vertices,s=this.object.geometry.vertices;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,s=this.object.geometry.normals;s.push(r[e+0],r[e+1],r[e+2]),s.push(r[t+0],r[t+1],r[t+2]),s.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,s=this.object.geometry.normals;o2.fromArray(r,e),Ey.fromArray(r,t),l2.fromArray(r,i),Pa.subVectors(l2,Ey),c2.subVectors(o2,Ey),Pa.cross(c2),Pa.normalize(),s.push(Pa.x,Pa.y,Pa.z),s.push(Pa.x,Pa.y,Pa.z),s.push(Pa.x,Pa.y,Pa.z)},addColor:function(e,t,i){let r=this.colors,s=this.object.geometry.colors;r[e]!==void 0&&s.push(r[e+0],r[e+1],r[e+2]),r[t]!==void 0&&s.push(r[t+0],r[t+1],r[t+2]),r[i]!==void 0&&s.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,s=this.object.geometry.uvs;s.push(r[e+0],r[e+1]),s.push(r[t+0],r[t+1]),s.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,s,a,o,l,c){let f=this.vertices.length,d=this.parseVertexIndex(e,f),h=this.parseVertexIndex(t,f),u=this.parseVertexIndex(i,f);if(this.addVertex(d,h,u),this.addColor(d,h,u),o!==void 0&&o!==""){let m=this.normals.length;d=this.parseNormalIndex(o,m),h=this.parseNormalIndex(l,m),u=this.parseNormalIndex(c,m),this.addNormal(d,h,u)}else this.addFaceNormal(d,h,u);if(r!==void 0&&r!==""){let m=this.uvs.length;d=this.parseUVIndex(r,m),h=this.parseUVIndex(s,m),u=this.parseUVIndex(a,m),this.addUV(d,h,u),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i{us();Oae=/^[og]\s*(.+)?/,Nae=/^mtllib /,wae=/^usemtl /,Fae=/^usemap /,a2=/\s+/,o2=new re,Ey=new re,l2=new re,c2=new re,Pa=new re,BT=new ht;UT=class extends vn{constructor(e){super(e),this.materials=null}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setMaterials(e){return this.materials=e,this}parse(e){let t=new Bae;e.indexOf(`\r `)!==-1&&(e=e.replace(/\r\n/g,` `)),e.indexOf(`\\ `)!==-1&&(e=e.replace(/\\\n/g,""));let i=e.split(` -`),r=[];for(let o=0,l=i.length;o=7?(FT.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Oi),t.colors.push(FT.r,FT.g,FT.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":t.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(f==="f"){let h=c.slice(1).trim().split(a2),u=[];for(let _=0,p=h.length;_0){let v=g.split("/");u.push(v)}}let m=u[0];for(let _=1,p=u.length-1;_1){let h=r[1].trim().toLowerCase();t.object.smooth=h!=="0"&&h!=="off"}else t.object.smooth=!0;let d=t.object.currentMaterial();d&&(d.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();let s=new sa;if(s.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o0&&_.setAttribute("normal",new hi(f.normals,3)),f.colors.length>0&&(m=!0,_.setAttribute("color",new hi(f.colors,3))),f.hasUVIndices===!0&&_.setAttribute("uv",new hi(f.uvs,2));let p=[];for(let v=0,T=d.length;v1){for(let v=0,T=d.length;v0){let o=new Cs({size:1,sizeAttenuation:!1}),l=new Qi;l.setAttribute("position",new hi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new hi(t.colors,3)),o.vertexColors=!0);let c=new Ps(l,o);s.add(c)}return s}}});var Bs,UT,Sy,d2=I(()=>{us();Bs=new ht,UT=class extends vn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(p,g=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,T="",S=v.exec(p);S!==null&&(T=S[1]);let E={comments:[],elements:[],headerLength:g,objInfo:""},A=T.split(/\r\n|\r|\n/),R;function M(y,C){let D={type:y[0]};return D.type==="list"?(D.name=y[3],D.countType=y[1],D.itemType=y[2]):D.name=y[1],D.name in C&&(D.name=C[D.name]),D}for(let y=0;yT.name);function v(T){for(let S=0,E=T.length;S0&&g.setIndex(p.indices),g.setAttribute("position",new hi(p.vertices,3)),p.normals.length>0&&g.setAttribute("normal",new hi(p.normals,3)),p.uvs.length>0&&g.setAttribute("uv",new hi(p.uvs,2)),p.colors.length>0&&g.setAttribute("color",new hi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(g=g.toNonIndexed(),p.faceVertexUvs.length>0&&g.setAttribute("uv",new hi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&g.setAttribute("color",new hi(p.faceVertexColors,3)));for(let v of Object.keys(_.customPropertyMapping))p[v].length>0&&g.setAttribute(v,new hi(p[v],_.customPropertyMapping[v].length));return g.computeBoundingSphere(),g}function c(p,g,v,T){if(g==="vertex"){p.vertices.push(v[T.attrX],v[T.attrY],v[T.attrZ]),T.attrNX!==null&&T.attrNY!==null&&T.attrNZ!==null&&p.normals.push(v[T.attrNX],v[T.attrNY],v[T.attrNZ]),T.attrS!==null&&T.attrT!==null&&p.uvs.push(v[T.attrS],v[T.attrT]),T.attrR!==null&&T.attrG!==null&&T.attrB!==null&&(Bs.setRGB(v[T.attrR]/255,v[T.attrG]/255,v[T.attrB]/255,Oi),p.colors.push(Bs.r,Bs.g,Bs.b));for(let S of Object.keys(_.customPropertyMapping))for(let E of _.customPropertyMapping[S])p[S].push(v[E])}else if(g==="face"){let S=v.vertex_indices||v.vertex_index,E=v.texcoord;S.length===3?(p.indices.push(S[0],S[1],S[2]),E&&E.length===6&&(p.faceVertexUvs.push(E[0],E[1]),p.faceVertexUvs.push(E[2],E[3]),p.faceVertexUvs.push(E[4],E[5]))):S.length===4&&(p.indices.push(S[0],S[1],S[3]),p.indices.push(S[1],S[2],S[3])),T.attrR!==null&&T.attrG!==null&&T.attrB!==null&&(Bs.setRGB(v[T.attrR]/255,v[T.attrG]/255,v[T.attrB]/255,Oi),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b))}}function f(p,g){let v={},T=0;for(let S=0;SS.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>S.getUint8(R),size:1};case"int16":case"short":return{read:R=>S.getInt16(R,A),size:2};case"uint16":case"ushort":return{read:R=>S.getUint16(R,A),size:2};case"int32":case"int":return{read:R=>S.getInt32(R,A),size:4};case"uint32":case"uint":return{read:R=>S.getUint32(R,A),size:4};case"float32":case"float":return{read:R=>S.getFloat32(R,A),size:4};case"float64":case"double":return{read:R=>S.getFloat64(R,A),size:8}}}for(let S=0,E=p.length;S=this.arr.length}next(){return this.arr[this.i++]}}});var VT,h2=I(()=>{us();VT=class extends vn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}parse(e){function t(c){let f=new DataView(c),d=32/8*3+32/8*3*3+16/8,h=f.getUint32(80,!0);if(80+32/8+h*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let _=0;_<5;_++)if(i(m,f,_))return!1;return!0}function i(c,f,d){for(let h=0,u=c.length;h>5&31)/31,m=(B>>10&31)/31):(h=g,u=v,m=T)}for(let B=1;B<=3;B++){let V=w+B*12,Q=D*3*3+(B-1)*3;M[Q]=f.getFloat32(V,!0),M[Q+1]=f.getFloat32(V+4,!0),M[Q+2]=f.getFloat32(V+8,!0),y[Q]=G,y[Q+1]=O,y[Q+2]=N,_&&(C.setRGB(h,u,m,Oi),p[Q]=C.r,p[Q+1]=C.g,p[Q+2]=C.b)}}return R.setAttribute("position",new vr(M,3)),R.setAttribute("normal",new vr(y,3)),_&&(R.setAttribute("color",new vr(p,3)),R.hasColors=!0,R.alpha=S),R}function s(c){let f=new Qi,d=/solid([\s\S]*?)endsolid/g,h=/facet([\s\S]*?)endfacet/g,u=/solid\s(.+)/,m=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+_+_+_,"g"),g=new RegExp("normal"+_+_+_,"g"),v=[],T=[],S=[],E=new re,A,R=0,M=0,y=0;for(;(A=d.exec(c))!==null;){M=y;let C=A[0],D=(A=u.exec(C))!==null?A[1]:"";for(S.push(D);(A=h.exec(C))!==null;){let O=0,N=0,B=A[0];for(;(A=g.exec(B))!==null;)E.x=parseFloat(A[1]),E.y=parseFloat(A[2]),E.z=parseFloat(A[3]),N++;for(;(A=p.exec(B))!==null;)v.push(parseFloat(A[1]),parseFloat(A[2]),parseFloat(A[3])),T.push(E.x,E.y,E.z),O++,y++;N!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+m),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+m),m++}let w=M,G=y-M;f.userData.groupNames=S,f.addGroup(w,G,R),R++}return f.setAttribute("position",new hi(v,3)),f.setAttribute("normal",new hi(T,3)),f}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){let f=new Uint8Array(c.length);for(let d=0;d{us()});function m2(n){let e=new Map,t=new Map,i=n.clone();return p2(n,i,function(r,s){e.set(s,r),t.set(r,s)}),i.traverse(function(r){if(!r.isSkinnedMesh)return;let s=r,a=e.get(r),o=a.skeleton.bones;s.skeleton=a.skeleton.clone(),s.bindMatrix.copy(a.bindMatrix),s.skeleton.bones=o.map(function(l){return t.get(l)}),s.bind(s.skeleton,s.bindMatrix)}),i}function p2(n,e,t){t(n,e);for(let i=0;i{});function Uae(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}function Hr(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function kae(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new bn({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:aa})),n.DefaultMaterial}function qd(n,e,t){for(let i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function ll(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Wae(n,e,t){let i=!1,r=!1,s=!1;for(let c=0,f=e.length;c0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}function Kae(n,e,t){let i=e.attributes,r=new kr;if(i.POSITION!==void 0){let o=t.json.accessors[i.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new re(l[0],l[1],l[2]),new re(c[0],c[1],c[2])),o.normalized){let f=jy(nm[o.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=e.targets;if(s!==void 0){let o=new re,l=new re;for(let c=0,f=s.length;c{us();u2();_2();gg=class extends vn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new yy(t)}),this.register(function(t){return new Cy(t)}),this.register(function(t){return new Uy(t)}),this.register(function(t){return new Vy(t)}),this.register(function(t){return new Gy(t)}),this.register(function(t){return new Dy(t)}),this.register(function(t){return new Ly(t)}),this.register(function(t){return new Oy(t)}),this.register(function(t){return new Ny(t)}),this.register(function(t){return new Iy(t)}),this.register(function(t){return new wy(t)}),this.register(function(t){return new Py(t)}),this.register(function(t){return new By(t)}),this.register(function(t){return new Fy(t)}),this.register(function(t){return new by(t)}),this.register(function(t){return new GT(t,xi.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new GT(t,xi.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new ky(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=ho.extractUrlBase(e);a=ho.resolveURL(c,this.path)}else a=ho.extractUrlBase(e);this.manager.itemStart(e);let o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Os(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(f){t(f),s.manager.itemEnd(e)},o)}catch(f){o(f)}},i,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,r){let s,a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===T2){try{a[xi.KHR_BINARY_GLTF]=new Wy(e)}catch(d){r&&r(d);return}s=JSON.parse(a[xi.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new Zy(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f=0&&o[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(i,r)}parseAsync(e,t){let i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}};xi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},by=class{constructor(e){this.parser=e,this.name=xi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}},Vy=class{constructor(e){this.parser=e,this.name=xi.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},Gy=class{constructor(e){this.parser=e,this.name=xi.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},GT=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){let l=r.byteOffset||0,c=r.byteLength||0,f=r.count,d=r.byteStride,h=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,h,r.mode,r.filter).then(function(u){return u.buffer}):a.ready.then(function(){let u=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(u),f,d,h,r.mode,r.filter),u})})}else return null}},ky=class{constructor(e){this.name=xi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;let r=t.meshes[i.mesh];for(let c of r.primitives)if(c.mode!==Da.TRIANGLES&&c.mode!==Da.TRIANGLE_STRIP&&c.mode!==Da.TRIANGLE_FAN&&c.mode!==void 0)return null;let a=i.extensions[this.name].attributes,o=[],l={};for(let c in a)o.push(this.parser.getDependency("accessor",a[c]).then(f=>(l[c]=f,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{let f=c.pop(),d=f.isGroup?f.children:[f],h=c[0].count,u=[];for(let m of d){let _=new li,p=new re,g=new nn,v=new re(1,1,1),T=new kd(m.geometry,m.material,h);for(let S=0;S-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new Xd(this.options.manager):this.textureLoader=new $_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Os(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(a){let o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:i,userData:{}};return qd(s,o,r),ll(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(let l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{let l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(let[c,f]of a.children.entries())s(f,o.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&p.setY(y,A[R*l+1]),l>=3&&p.setZ(y,A[R*l+2]),l>=4&&p.setW(y,A[R*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=m}return p})}loadTexture(e){let t=this.json,i=this.options,s=t.textures[e].source,a=t.images[s],o=this.textureLoader;if(a.uri){let l=i.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){let r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(t,i).then(function(f){f.flipY=!1,f.name=a.name||o.name||"",f.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(f.name=o.uri);let h=(s.samplers||{})[a.sampler]||{};return f.magFilter=v2[h.magFilter]||Gr,f.minFilter=v2[h.minFilter]||uo,f.wrapS=E2[h.wrapS]||Zo,f.wrapT=E2[h.wrapT]||Zo,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Vr&&f.minFilter!==Gr,r.associations.set(f,{textures:e}),f}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){let i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());let a=r.images[e],o=self.URL||self.webkitURL,l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=i.getDependency("bufferView",a.bufferView).then(function(d){c=!0;let h=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(h),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let f=Promise.resolve(l).then(function(d){return new Promise(function(h,u){let m=h;t.isImageBitmapLoader===!0&&(m=function(_){let p=new Pr(_);p.needsUpdate=!0,h(p)}),t.load(ho.resolveURL(d,s.path),m,void 0,u)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),ll(d,a),d.userData.mimeType=a.mimeType||Xae(a.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=f,f}assignTexture(e,t,i,r){let s=this;return this.getDependency("texture",i.index).then(function(a){if(!a)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(a=a.clone(),a.channel=i.texCoord),s.extensions[xi.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[xi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[xi.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let o="PointsMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Cs,Wr.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){let o="LineBasicMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Vn,Wr.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||s||a){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return bn}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[xi.KHR_MATERIALS_UNLIT]){let d=r[xi.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ht(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let h=d.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],fs),o.opacity=h[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Oi)),o.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,o.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",d.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ca);let f=s.alphaMode||xy.OPAQUE;if(f===xy.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===xy.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==ds&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new It(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==ds&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==ds){let d=s.emissiveFactor;o.emissive=new ht().setRGB(d[0],d[1],d[2],fs)}return s.emissiveTexture!==void 0&&a!==ds&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Oi)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),ll(d,s),t.associations.set(d,{materials:e}),s.extensions&&qd(r,d,s),d})}createUniqueName(e){let t=ar.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function s(o){return i[xi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return S2(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&Hae(g,s),g.name=t.createUniqueName(s.name||"mesh_"+e),ll(g,s),p.extensions&&qd(r,g,p),t.assignFinalMaterial(g),d.push(g)}for(let u=0,m=d.length;u0){let u=f.userData.pivot,m=d[0];f.pivot=new re().fromArray(u),f.position.x-=u[0],f.position.y-=u[1],f.position.z-=u[2],m.position.set(0,0,0),delete f.userData.pivot}return f})}_loadNodeShallow(e){let t=this.json,i=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let f;if(s.isBone===!0?f=new Uu:c.length>1?f=new sa:c.length===1?f=c[0]:f=new er,f!==c[0])for(let d=0,h=c.length;d1){let d=r.associations.get(f);r.associations.set(f,{...d})}return r.associations.get(f).nodes=e,f}),this.nodeCache[e]}loadScene(e){let t=this.extensions,i=this.json.scenes[e],r=this,s=new sa;i.name&&(s.name=r.createUniqueName(i.name)),ll(s,i),i.extensions&&qd(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[h,u]of r.associations)(h instanceof Wr||h instanceof Pr)&&d.set(h,u);return f.traverse(h=>{let u=r.associations.get(h);u!=null&&d.set(h,u)}),d};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){let a=[],o=e.name?e.name:e.uuid,l=[];function c(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}vf[s.path]===vf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(vf[s.path]){case vf.weights:f=el;break;case vf.rotation:f=tl;break;case vf.translation:case vf.scale:f=il;break;default:i.itemSize===1?f=el:f=il;break}let d=r.interpolation!==void 0?Gae[r.interpolation]:Bd,h=this._getArrayFromAccessor(i);for(let u=0,m=l.length;ups,X_OK:()=>eC,access:()=>ms,execFile:()=>ha,getRuntimeProcess:()=>sm,mkdir:()=>kn,osTmpdir:()=>eh,pathBasename:()=>Hn,pathDelimiter:()=>tC,pathDirname:()=>Wn,pathExtname:()=>zn,pathIsAbsolute:()=>Xn,pathJoin:()=>zi,pathNormalize:()=>HT,readFile:()=>da,rm:()=>$d,stat:()=>Jd,writeFile:()=>Qd});function R2(){return typeof activeWindow=="undefined"?void 0:activeWindow}function jae(){let n=R2();if(!(!n||!("require"in n)))return n.require}function sm(){let n=R2();if(!(!n||!("process"in n)))return n.process}function WT(n){let e=jae();if(!e)return null;try{return e(n)}catch(t){return null}}function am(){return qy===void 0&&(qy=WT("node:fs/promises")),qy}function om(){return Qy===void 0&&(Qy=WT("node:path")),Qy}function Zae(){return $y===void 0&&($y=WT("node:child_process")),$y}function qae(){return Jy===void 0&&(Jy=WT("node:os")),Jy}function Us(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function ms(n,e){return Us(am(),"node:fs/promises").access(n,e)}function da(n,e){return Us(am(),"node:fs/promises").readFile(n,e)}function Qd(n,e,t){return Us(am(),"node:fs/promises").writeFile(n,e,{encoding:t})}function kn(n,e){return Us(am(),"node:fs/promises").mkdir(n,e)}function $d(n,e){return Us(am(),"node:fs/promises").rm(n,e)}function Jd(n){return Us(am(),"node:fs/promises").stat(n)}function zi(...n){return Us(om(),"node:path").join(...n)}function Wn(n){return Us(om(),"node:path").dirname(n)}function Hn(n,e){return Us(om(),"node:path").basename(n,e)}function zn(n){return Us(om(),"node:path").extname(n)}function HT(n){return Us(om(),"node:path").normalize(n)}function Xn(n){return Us(om(),"node:path").isAbsolute(n)}function ha(n,e,t,i){Us(Zae(),"node:child_process").execFile(n,e,t,i)}function eh(){return Us(qae(),"node:os").tmpdir()}var qy,Qy,$y,Jy,ps,eC,x2,tC,rr=I(()=>{"use strict";ps=0,eC=1;tC=((x2=sm())==null?void 0:x2.platform)==="win32"?";":":"});function iC(n){return n.replace(/\\/g,"/")}function YT(n){let e=iC(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function b2(n){try{return decodeURIComponent(n)}catch(e){return n}}function In(n,e){var i;let t=b2((i=e.split(/[?#]/,1)[0])!=null?i:e);return YT(n?`${n}/${t}`:t)}function M2(n,e){return In(n.vault.configDir,e)}function vg(n){let e=iC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Vs(n){let e=iC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function ln(n){return Vs(n).replace(/\.[^.]+$/,"")}async function Qae(n,e){let t=YT(e);if(!t)return null;let i=t.split("/"),r="",s=n.vault.getRoot().children;for(let a of i){let o=s.find(c=>c.name===a),l=o!=null?o:s.find(c=>c.name.toLowerCase()===a.toLowerCase());if(!l)return null;if(r=r?`${r}/${l.name}`:l.name,l instanceof lm.TFile)return r;if(!(l instanceof lm.TFolder))return null;s=l.children}return null}function $ae(n){return n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}function Jae(){let n=new Error("File read aborted");return n.name="AbortError",n}function XT(n){if(n!=null&&n.aborted)throw n.reason instanceof Error?n.reason:Jae()}function eoe(n){let e=n.vault.adapter;return typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null}function Ef(n,e){var r,s;let t=n.vault.getAbstractFileByPath(e);if(t)return t.path;let i=(s=(r=n.metadataCache)==null?void 0:r.getFirstLinkpathDest)==null?void 0:s.call(r,e,"");return i?i.path:null}function $l(n,e){if(Xn(e))return HT(e);let t=eoe(n);return t?HT(zi(t,e)):null}async function po(n,e,t={}){if(XT(t.signal),Xn(e)){let a=await da(e,t.signal?{signal:t.signal}:void 0);return XT(t.signal),$ae(a)}let i=YT(b2(e)),r=n.vault.getAbstractFileByPath(i);if(!(r instanceof lm.TFile)){let a=await Qae(n,i);if(a){let o=n.vault.getAbstractFileByPath(a);if(o instanceof lm.TFile){let l=await n.vault.readBinary(o);return XT(t.signal),l}}throw new Error(`File not found: ${i}`)}let s=await n.vault.readBinary(r);return XT(t.signal),s}var lm,_s=I(()=>{"use strict";lm=require("obsidian");rr();rr()});function th(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function ioe(n){return toe.has(n)}function I2(n,e){let t=Number.isFinite(n)&&n>0?Math.floor(n):1;return e==="low"?1:e==="medium"?Math.min(t,4):t}function jT(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Pr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),ioe(r)&&(i.colorTextureCount++,s.colorSpace=Oi,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function rC(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new re),i=Math.max(t.x,t.y,t.z);return!Number.isFinite(i)||i<=0?.02:Math.min(Math.max(i/180,5e-4),.05)}var toe,nC=I(()=>{"use strict";us();toe=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function roe(n){var e,t;return n?((e=n.signal)==null?void 0:e.aborted)===!0||((t=n.isCurrent)==null?void 0:t.call(n))===!1:!1}function gi(n){if(roe(n))throw new ZT}function Sf(n){return n instanceof ZT||n instanceof Error&&n.name==="AbortError"}var ZT,Eg=I(()=>{"use strict";ZT=class extends Error{constructor(e="Preview load interrupted"){super(e),this.name="PreviewLoadInterruptedError"}}});function C2(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=noe[e])!=null?r:`image/${e}`}function ooe(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function sC(n){return In("",n)}function qT(n,e,t){e&&n.set(sC(e),t)}function loe(n,e,t,i,r){let s=ooe(t);qT(n,s,r),qT(n,In("",s),r),qT(n,i,r),e&&qT(n,`${e}/${s}`,r)}function coe(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=sC(s);if(!o)return;let l=e.get(o);if(l){l.aliases.push(s),(c=l.mimeType)!=null||(l.mimeType=a);return}e.set(o,{uri:s,mimeType:a,aliases:[s]})};for(let s of(i=n.buffers)!=null?i:[])t(s.uri,"application/octet-stream");for(let s of(r=n.images)!=null?r:[])t(s.uri);return[...e.values()]}async function foe(n,e,t,i){let r=0,s=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:s},async()=>{for(;r{var d;gi(i);let c=await moe(n,e,l.uri);gi(i);let f=URL.createObjectURL(new Blob([c.data],{type:(d=l.mimeType)!=null?d:C2(c.path)}));s.push(f);for(let h of l.aliases)loe(r,e,h,c.path,f)};try{await foe(coe(t),aoe,o,i)}catch(l){for(let c of s)URL.revokeObjectURL(c);throw l}return a.setURLModifier(l=>{var f,d;let c=sC(l);return(d=(f=r.get(c))!=null?f:r.get(In("",c)))!=null?d:l}),{manager:a,dispose:()=>{for(let l of s)URL.revokeObjectURL(l)}}}function hoe(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function uoe(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}async function moe(n,e,t){let i=In(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function poe(n,e,t){let i=Vs(e),r=i.replace(/\.[^.]+$/,""),s=ln(t),a=[In(n,e),In(n,i)];if(s)for(let o of y2)a.push(In(n,`${s}.${o}`));for(let o of y2){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}async function P2(n,e,t,i,r){var c,f;let s=[];if(gi(r),e==="gltf"&&t&&i){let d=new TextDecoder().decode(new Uint8Array(n)),h=JSON.parse(d),u=vg(i),m=await doe(t,u,h,r);gi(r);let _=new gg(m.manager);try{gi(r);let p=await _.parseAsync(n,u?`${u}/`:""),g=p.scene||((c=p.scenes)==null?void 0:c[0]);if(!g)throw new Error("GLTF did not contain a scene");return{scene:g,animations:p.animations,warnings:s}}finally{m.dispose()}}gi(r);let o=await new gg().parseAsync(n,""),l=o.scene||((f=o.scenes)==null?void 0:f[0]);if(!l)throw new Error("GLB did not contain a scene");return{scene:l,animations:o.animations,warnings:s}}async function D2(n){let t=new VT().parse(n),i=t.hasAttribute("color")?new bn({color:16777215,vertexColors:!0}):new bn({color:13421772}),r=new ci(t,i);return r.name=Vs("")||"stl-model",r}async function L2(n){let t=new UT().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new bn({vertexColors:!0});return new ci(t,a)}let s=new Cs({size:rC(t),vertexColors:!0});return new Ps(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new bn({color:13421772});return new ci(t,s)}let r=new Cs({size:rC(t),color:13421772});return new Ps(t,r)}function _oe(n){return n?Array.isArray(n)?n:[n]:[]}function goe(n){n.traverse(e=>{if(!(e instanceof ci))return;let t=e;for(let i of _oe(t.material))jT(i,1)})}async function O2(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n)),r=[],s=null,a=i.match(/mtllib\s+(.+)/);if(a&&e&&t){let c=hoe(a[1]),f=vg(t),d=In(f,c);try{let h=await e(d),m=new TextDecoder().decode(new Uint8Array(h)).split(` -`),_=new Map;for(let S=0;SS!=="");if(!p.some(S=>/^\s*Kd\s+/i.test(S))){let S=p.findIndex(E=>/^\s*newmtl\s+/i.test(E));p.splice(S>=0?S+1:0,0,"Kd 0.80 0.80 0.80")}let T=new wT().parse(p.join(` -`),f?`${f}/`:"");T.preload(),s=T}catch(h){r.push(`OBJ material library not found: ${d}`)}}else a&&(!e||!t)&&r.push("OBJ material library could not be resolved without a model path.");let o=new BT;s&&o.setMaterials(s);let l=o.parse(i);return goe(l),{object:l,warnings:r}}var noe,y2,soe,aoe,N2=I(()=>{"use strict";s2();f2();d2();h2();A2();us();_s();KT();nC();Eg();noe={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",tga:"image/x-tga",webp:"image/webp",tif:"image/tiff",tiff:"image/tiff"},y2=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],soe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,aoe=4});function xr(){return w2.Platform.isMobile}var w2,ua=I(()=>{"use strict";w2=require("obsidian")});function cl(n){let e=activeDocument.createElement("div");return n&&(e.className=n),e}function ih(n,e){let t=activeDocument.createElement(n);return e&&(t.className=e),t}var cm=I(()=>{"use strict"});function Jt(n){return{x:n.x,y:n.y,z:n.z}}function cn(n){return{x:n.x,y:n.y,z:n.z}}function fm(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function Sg(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function U2(n,e){let t=fm(n,e);return Math.hypot(t.x,t.y,t.z)}function aC(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:Sg(n,1/e)}function rh(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function F2(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function V2(n,e,t){return{x:e==="x"?n.x+t:n.x,y:e==="y"?n.y+t:n.y,z:e==="z"?n.z+t:n.z}}function G2(n){return Math.max(n*.01,.01)}function Tf(n,e,t=G2(e)){return n{"use strict"});function xf(n,e){return{min:cn(n),max:cn(e)}}function nh(n,e){return n?{min:{x:Math.min(n.min.x,e.min.x),y:Math.min(n.min.y,e.min.y),z:Math.min(n.min.z,e.min.z)},max:{x:Math.max(n.max.x,e.max.x),y:Math.max(n.max.y,e.max.y),z:Math.max(n.max.z,e.max.z)}}:xf(e.min,e.max)}function tr(n){return fm(n.max,n.min)}function Rr(n){return rh(n.min,Sg(tr(n),.5))}function k2(n){return U2(n.min,n.max)}function Tg(n){return k2(n)/2}function W2(n){let e=tr(n);return Math.max(e.x,e.y,e.z)}function oC(n){let e=tr(n),t=k2(n);return{center:rh(n.min,Sg(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var fl=I(()=>{"use strict";Gs()});function lC(n,e,t={}){var s,a,o,l,c;let i=Math.max(e,Number.EPSILON),r=(s=t.radiusMultiplier)!=null?s:2.5;return{target:cn(n),radius:i*r,lowerRadiusLimit:i*((a=t.lowerRadiusFactor)!=null?a:.05),upperRadiusLimit:i*((o=t.upperRadiusFactor)!=null?o:10),near:i*((l=t.nearFactor)!=null?l:.001),far:i*((c=t.farFactor)!=null?c:20)}}function tA(n,e={}){let t=oC(n);return lC(t.center,t.radius,e)}function H2(n,e={}){var o,l,c,f,d,h;let t=oC(n),i=Math.max(t.maxSpan,t.radius,Number.EPSILON),r=i*((o=e.distanceMultiplier)!=null?o:1.8),s=Math.max((l=e.minNear)!=null?l:Math.max(i/1e4,1e-5),i/((c=e.nearDivisor)!=null?c:1e3)),a=Math.max((d=e.minFar)!=null?d:Math.max(i*((f=e.farMultiplier)!=null?f:20),1),r+t.radius*4);return{target:cn(t.center),position:rh(t.center,{x:r,y:r*((h=e.elevationFactor)!=null?h:.65),z:r}),near:s,far:a}}var iA=I(()=>{"use strict";fl();Gs()});function Ui(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var rA=I(()=>{"use strict"});function nA(n){var s;let e=new Set,t=0,i=0;for(let a of n.meshes){t+=a.triangleCount,i+=a.vertexCount;for(let o of(s=a.materialKeys)!=null?s:[])o!=null&&e.add(o)}let r=Soe({triangleCount:t,splatCount:n.splatCount,meshCount:n.meshes.length,materialCount:e.size});return{meshCount:n.meshes.length,triangleCount:t,splatCount:n.splatCount,vertexCount:i,materialCount:e.size,performanceTier:r,performanceHint:Toe(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:cn(n.boundingSize),rootName:n.rootName}}function Soe(n){var e,t,i;return((e=n.splatCount)!=null?e:0)>=15e5||n.triangleCount>=12e5||n.materialCount>=96||n.meshCount>=240?"extreme":((t=n.splatCount)!=null?t:0)>=65e4||n.triangleCount>=45e4||n.materialCount>=48||n.meshCount>=120?"heavy":((i=n.splatCount)!=null?i:0)>=18e4||n.triangleCount>=12e4||n.materialCount>=18||n.meshCount>=48?"medium":"light"}function Toe(n,e){var r;let t=((r=e.splatCount)!=null?r:e.triangleCount).toLocaleString(),i=e.splatCount!==void 0?"splats":"triangles";return n==="extreme"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Expect automatic quality throttling while interacting.`:n==="heavy"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Interaction may lower shadows and resolution temporarily.`:n==="medium"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance should be steady on most desktop GPUs.`:`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance tier: light.`}function Jl(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:cn(n.boundingSize),center:cn(n.center),source:n.source,meshNames:n.meshNames?[...n.meshNames]:void 0,childCount:n.childCount,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath}}function z2(n){return n.splatCount!==void 0?"Splats":"Triangles"}function X2(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var sA=I(()=>{"use strict";Gs()});function hm(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function Aoe(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function xoe(n){var r,s,a,o;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(s=(r=n.sourceFormat)!=null?r:n.effectiveFormat)!=null?s:"unknown",t=(a=n.effectiveFormat)!=null?a:e,i=(o=n.loadStrategy)!=null?o:e!==t?"convert":"direct";return`${e.toUpperCase()}${t!==e?` -> ${t.toUpperCase()}`:""} (${i})`}function Roe(n,e=8){if(!(n!=null&&n.length))return null;let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i} more`:t}function Y2(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:z2(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${X2(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${cC(n.boundingSize,{decimals:i})} |`]}function _o(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function cC(n,e={}){var r,s;let t=(r=e.decimals)!=null?r:3,i=(s=e.separator)!=null?s:" x ";return`${n.x.toFixed(t)}${i}${n.y.toFixed(t)}${i}${n.z.toFixed(t)}`}function K2(n,e={}){return["| Metric | Value |","|--------|-------|",...Y2(n,e)]}function boe(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...Y2(e,t)]}function aA(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...boe(n.format,n.summary,{countLabel:n.countLabel})),e.push("");let t=(r=n.meshBreakdown)!=null?r:[];t.length>1&&t.length<=50&&(e.push("### Mesh Breakdown"),e.push(""),e.push("| # | Name | Triangles | Vertices | Material |"),e.push("|---|------|-----------|----------|----------|"),t.forEach((a,o)=>{let l=a.triangleCount===null?"-":a.triangleCount.toLocaleString();e.push(`| ${o+1} | ${_o(hm(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${_o(hm(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>hm(a,"")).filter(a=>a.length>0);if(i.length>0){let a=Array.from(new Set(i));e.push("### Materials"),e.push("");for(let o of a)e.push(`- ${Ui(o)}`);e.push("")}return e.join(` -`)}function oA(n,e={}){var o;let t=Ui(hm((o=e.title)!=null?o:n.name,"Selected Part")),i=[];i.push(`## ${t} - Part Info`),i.push(""),i.push("| Property | Value |"),i.push("|----------|-------|"),i.push(`| Mesh | ${_o(hm(n.name))} |`);let r=Aoe(n.source);r&&i.push(`| Source | ${_o(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${_o(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${_o(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${_o(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${_o(n.componentPath)} |`);let s=xoe(n);s&&i.push(`| Format Lineage | ${_o(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${_o(hm(n.materialName))} |`),i.push(`| Bounding Size | ${cC(n.boundingSize)} |`),i.push(`| Center | ${cC(n.center,{separator:", "})} |`);let a=Roe(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${_o(a)} |`),i.push(""),i.join(` -`)}var lA=I(()=>{"use strict";rA();sA()});function cA(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function fA(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function j2(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function Z2(n,e,t){return!j2(n)||e.clientWidth===0||e.clientHeight===0?!1:(t.screenX=(n.x+1)/2*e.clientWidth,t.screenY=(1-n.y)/2*e.clientHeight,t.depth=(n.z+1)/2,!0)}function q2(n,e,t,i,r){return!j2(n)||e===0||t===0||i.clientWidth===0||i.clientHeight===0?!1:(r.screenX=n.x*(i.clientWidth/e),r.screenY=n.y*(i.clientHeight/t),r.depth=n.z,!0)}var fC=I(()=>{"use strict"});function sh(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function Moe(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function Ioe(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function yoe(n){let e=n.trim().toLowerCase();return/^(mesh|node|object|primitive|points|pointcloud|geometry)[-_\s.]?\d+$/i.test(e)||/^(mesh|node|object|primitive|points|pointcloud|geometry)$/i.test(e)}function Coe(n){let e={x:n.boundingSize.x/2,y:n.boundingSize.y/2,z:n.boundingSize.z/2};return{min:{x:n.center.x-e.x,y:n.center.y-e.y,z:n.center.z-e.z},max:{x:n.center.x+e.x,y:n.center.y+e.y,z:n.center.z+e.z}}}function Poe(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!yoe(n.name))return!1;let t=Moe(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Doe(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=nh(e,Coe(l)),t+=l.triangleCount,i+=l.vertexCount,l.materialName&&r.add(l.materialName),s.push(...(o=l.meshNames)!=null&&o.length?l.meshNames:[l.name]);let a=e!=null?e:{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};return{name:"Small detail cluster",triangleCount:t,vertexCount:i,materialName:sh(r),boundingSize:tr(a),center:Rr(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function Loe(n,e,t){let i=Ioe(n),r=t.filter(o=>Poe(o,i));if(r.length<2)return e.length>0?[...e,...t]:[...t];let s=new Set(r),a=t.filter(o=>!s.has(o));return[...e,Doe(r),...a]}function dA(n){var e;return{summary:n.summary,parts:Ooe(n),materialNames:Noe(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Ooe(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return Loe(n.summary,n.groupedPartCandidates.parts,e)}function Noe(n,e){let t=new Set;for(let i of n)for(let r of e(i))r&&t.add(r);return Array.from(t).sort((i,r)=>i.localeCompare(r))}var Ag=I(()=>{"use strict";fl()});function hA(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function Rg(n){return{x:Number.isFinite(n.x)&&n.x>0?n.x:1,y:Number.isFinite(n.y)&&n.y>0?n.y:1,z:Number.isFinite(n.z)&&n.z>0?n.z:1}}function uA(n,e,t,i){let r=Rg(t),s={x:(e.x-n.x)*r.x,y:(e.y-n.y)*r.y,z:(e.z-n.z)*r.z},a={x:Math.abs(s.x),y:Math.abs(s.y),z:Math.abs(s.z)};return{distance:Math.sqrt(s.x*s.x+s.y*s.y+s.z*s.z),delta:s,absDelta:a,unit:i}}function xg(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function Foe(n,e){if(n===0)return e;let t=Math.abs(n)*uC[e];return t<.001?"um":t<.1?"mm":t<1?"cm":"m"}function $2(n){return n==="um"?"um":woe[n]}function ah(n,e,t=!0){let i=t?Foe(n,e):e,r=n*uC[e]/uC[i],s=Math.abs(r),a=s>=100?1:s>=10?2:3;return`${xg(r,a)} ${$2(i)}`}function hC(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return xg(e,t)}function um(n){return{primary:ah(n.distance,n.unit),secondary:[`X ${hC(n.absDelta.x)}`,`Y ${hC(n.absDelta.y)}`,`Z ${hC(n.absDelta.z)}`,$2(n.unit)].join(" ")}}function mA(n,e,t=640,i=160){n.clearRect(0,0,t,i);let r=t/2,s=i/2-10,a=i/2+20;n.textAlign="center",n.textBaseline="middle",n.lineJoin="round",n.lineWidth=4,n.strokeStyle=dC.labelOutline,n.fillStyle=dC.labelText,n.font="650 28px system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",n.strokeText(e.primary,r,s,t-120),n.fillText(e.primary,r,s,t-120),n.lineWidth=3,n.fillStyle=dC.labelSecondary,n.font="500 14px system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",n.strokeText(e.secondary,r,a,t-160),n.fillText(e.secondary,r,a,t-160)}function pA(n){if(n.length===0)return"";let e=["## Measurements","","| # | Distance | Delta X | Delta Y | Delta Z | Start | End |","|---|----------|---------|---------|---------|-------|-----|"];for(let t of n){let i=t.reading.unit,r=Q2(t.start),s=Q2(t.end);e.push([t.index,ah(t.reading.distance,i),ah(t.reading.absDelta.x,i,!1),ah(t.reading.absDelta.y,i,!1),ah(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` -`)}function Q2(n){return`${xg(n.x,3)}, ${xg(n.y,3)}, ${xg(n.z,3)}`}var dC,uC,woe,_A=I(()=>{"use strict";dC={line:"#8ab4f8",marker:"#e2e8f0",pending:"#f59e0b",hover:"#f8fafc",preview:"#cbd5e1",labelText:"#f8fafc",labelSecondary:"rgba(226, 232, 240, 0.58)",labelOutline:"rgba(0, 0, 0, 0.45)"},uC={um:1e-6,mm:.001,cm:.01,m:1},woe={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function Boe(n){let e=typeof activeWindow=="undefined"?window:activeWindow;return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(n):e.setTimeout(()=>n(e.performance.now()),16)}function Uoe(n){let e=typeof activeWindow=="undefined"?window:activeWindow;if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(n);return}e.clearTimeout(n)}function vA(n){return new mC(n)}var gA,mC,pC=I(()=>{"use strict";gA=class gA{constructor(e){this.originals=new Map;this.unsubscribe=null;this.active=!1;this.drag=null;this.pendingDrag=null;this.selected=null;this.activePointerId=null;this.frameCount=0;this.pendingDragEvent=null;this.dragUpdateFrame=null;this.adapter=e}isEnabled(){return this.active}setEnabled(e){var t,i,r;return this.active===e?this.active:(this.active=e,this.finishDrag(),this.setSelected(null),this.activePointerId=null,e?this.unsubscribe=this.adapter.subscribe({onPointerDown:(s,a)=>this.handlePointerDown(s,a),onPointerMove:s=>this.handlePointerMove(s),onPointerUp:s=>this.handlePointerUp(s),onRender:()=>this.handleRender()}):((t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null),(r=(i=this.adapter).requestRender)==null||r.call(i),this.active)}toggle(){return this.setEnabled(!this.active)}reset(){var e,t;this.finishDrag(),this.setSelected(null);for(let{part:i,transform:r}of this.originals.values())this.adapter.isDisposed(i)||this.adapter.restoreTransform(i,r);this.activePointerId=null,(t=(e=this.adapter).requestRender)==null||t.call(e)}dispose(){this.setEnabled(!1),this.originals.clear()}handlePointerDown(e,t){if(t.button!==0||t.isPrimary===!1)return;let i=this.adapter.resolvePart(e);if(!i){this.drag=null,this.pendingDrag=null,this.activePointerId=null,this.setSelected(null);return}this.activePointerId=t.pointerId,this.setSelected(i),this.pendingDrag={part:i,event:t,x:t.clientX,y:t.clientY}}handlePointerMove(e){if(!(this.activePointerId!==null&&e.pointerId!==this.activePointerId)){if(!this.drag&&this.pendingDrag){if(e.pointerType==="mouse"&&(e.buttons&1)===0){this.pendingDrag=null,this.activePointerId=null;return}if(Math.hypot(e.clientX-this.pendingDrag.x,e.clientY-this.pendingDrag.y){this.dragUpdateFrame=null,this.flushDragUpdate()}))}flushDragUpdate(){this.dragUpdateFrame!==null&&(Uoe(this.dragUpdateFrame),this.dragUpdateFrame=null);let e=this.pendingDragEvent;this.pendingDragEvent=null,!(!this.drag||!e)&&this.adapter.updateDrag(this.drag,e)}setSelected(e){this.selected=e,this.frameCount=0,this.adapter.setSelected(e)}captureOriginalTransform(e){let t=this.adapter.getPartId(e);this.originals.has(t)||this.originals.set(t,{part:e,transform:this.adapter.captureTransform(e)})}};gA.DRAG_START_DISTANCE=4;mC=gA});function Xoe(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function EA(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function Yoe(n){if(typeof n=="string"){let e=n.trim();return e.length>0?e:void 0}if(typeof n=="number"&&Number.isFinite(n))return String(n)}function J2(n,e=0){if(!Xoe(n)||e>2)return[];let t=[];for(let i of zoe)for(let[r,s]of Object.entries(n))EA(r)===EA(i)&&t.push(...J2(s,e+1));return t.push(n),t}function bg(n,e){let t=new Set(e.map(EA));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has(EA(r)))continue;let a=Yoe(s);if(a)return a}}function ma(n,e={}){var c,f;let t=J2(n),i=bg(t,Voe),r=bg(t,Goe),s=bg(t,koe),a=(c=bg(t,Hoe))!=null?c:e.path,o=(f=bg(t,Woe))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Voe,Goe,koe,Woe,Hoe,zoe,_C=I(()=>{"use strict";Voe=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],Goe=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],koe=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],Woe=["displayName","partName","componentName","cadName","name"],Hoe=["componentPath","cadPath","assemblyPath","occurrencePath"],zoe=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function La(n){return n instanceof ci}function Mg(n){return n instanceof Ps}function pm(n){return La(n)||Mg(n)}function ks(n){return n?Array.isArray(n)?n:[n]:[]}function Ig(n){var r,s,a,o;if(Mg(n))return 0;let e=n.geometry,t=(s=(r=e.getIndex())==null?void 0:r.count)!=null?s:0;if(t>0)return Math.floor(t/3);let i=(o=(a=e.getAttribute("position"))==null?void 0:a.count)!=null?o:0;return Math.floor(i/3)}function _m(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function gm(n){return n?n.name||n.type||`material-${n.uuid}`:null}function go(n,e){var i;let t=(i=n.userData)==null?void 0:i.name;return typeof t=="string"&&t.trim().length>0?t:n.name||e}function mm(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(go(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function En(n){let e=new kr().setFromObject(n);return xf(Jt(e.min),Jt(e.max))}function eU(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,En(t));return e}function tU(n){return ks(n.material).map(e=>gm(e))}function iU(n){return{name:go(n,Mg(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:Mg(n)?null:Ig(n),vertexCount:_m(n),materialName:gm(ks(n.material)[0])}}function Koe(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:En(n),r=go(n,`mesh-${n.id}`),s=ma(n.userData,{name:r,path:e?mm(e,n):r});return Jl({name:AA(s,r),triangleCount:Ig(n),vertexCount:_m(n),materialName:gm(ks(n.material)[0]),boundingSize:tr(i),center:Rr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function gC(n,e,t){var a;if(La(n))return Koe(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:En(n),r=go(n,`points-${n.id}`),s=ma(n.userData,{name:r,path:e?mm(e,n):r});return Jl({name:AA(s,r),triangleCount:0,vertexCount:_m(n),materialName:gm(ks(n.material)[0]),boundingSize:tr(i),center:Rr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function joe(n,e){let t=[];return n.traverse(i=>{La(i)&&e.has(i)&&t.push(i)}),t}function vm(n,e){let t=new Map;for(let i of e){let r=i.parent;for(;r&&r!==n;){let s=t.get(r);s||(s=[],t.set(r,s)),s.push(i),r=r.parent}}return t}function rU(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:joe(n,e)}function Zoe(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function qoe(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function nU(n,e,t,i,r){var m;if(pm(n))return gC(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(_=>{La(_)&&s.add(_)});let a=rU(n,s,i),o=null,l=new Set,c=0,f=0;for(let _ of a){_.updateWorldMatrix(!0,!1),o=nh(o,(m=r==null?void 0:r.get(_))!=null?m:En(_)),c+=Ig(_),f+=_m(_);for(let p of ks(_.material)){let g=gm(p);g&&l.add(g)}}a.length===0&&(o=En(n));let d=o!=null?o:xf({x:0,y:0,z:0},{x:0,y:0,z:0}),h=go(n,`group-${n.id}`),u=ma(n.userData,{name:h,path:e?mm(e,n):h});return Jl({name:AA(u,h),triangleCount:c,vertexCount:f,materialName:sh(l),boundingSize:tr(d),center:Rr(d),source:u.hasExplicitIdentity?"component":"group",meshNames:a.map(_=>go(_,`mesh-${_.id}`)),childCount:a.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function SA(n,e,t,i){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=rU(o,r,i);if(f.length>0&&f.length1&&h.trim()&&!Zoe(h)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function sU(n,e,t=vm(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||La(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=ma(o.userData,{name:go(o,`component-${o.id}`),path:mm(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=ma(o.userData,{name:go(o,`group-${o.id}`),path:mm(n,o)});!c.hasExplicitIdentity&&!o.name.trim()||a.push({object:o,childMeshes:l,identity:c})}),a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({object:o,childMeshes:l,identity:c})=>{var p;let f=l.filter(g=>!s.has(g));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let g of f)s.add(g);let d=null;for(let g of f)g.updateWorldMatrix(!0,!1),d=nh(d,(p=i==null?void 0:i.get(g))!=null?p:En(g));let h=new Set,u=0,m=0;for(let g of f){u+=Ig(g),m+=_m(g);for(let v of ks(g.material)){let T=gm(v);T&&h.add(T)}}let _=d!=null?d:xf({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(Jl({name:AA(c,go(o,`group-${o.id}`)),triangleCount:u,vertexCount:m,materialName:sh(h),boundingSize:tr(_),center:Rr(_),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(g=>go(g,`mesh-${g.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function TA(n,e,t=[],i){return nA({rootName:n.name||"__root__",boundingSize:tr(i!=null?i:En(n)),meshes:e.map(r=>({triangleCount:Ig(r),vertexCount:_m(r),materialKeys:ks(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function aU(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=tr(t!=null?t:En(n)),s=Math.max(r.x,r.y,r.z),a=Math.max(s*.04,Number.EPSILON),o=0,l=0,c=Number.POSITIVE_INFINITY;for(let d of e){Mg(d)&&o++;let h=tr((f=i==null?void 0:i.get(d))!=null?f:En(d)),u=Math.max(h.x,h.y,h.z);Number.isFinite(u)&&u>0&&(c=Math.min(c,u),La(d)&&u<=a&&u0?Number(s.toPrecision(6)):null}}function AA(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var vC=I(()=>{"use strict";us();fl();_C();Ag();Gs();sA()});function Qoe(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function $oe(n,e,t=vm(n,e)){let i=new Map;for(let r of e){let s=SA(n,r,e,t),a=i.get(s);a||(a={id:s.id,object:s,meshes:[]},i.set(s,a)),a.meshes.push(r)}return Array.from(i.values())}function Joe(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function lU(n,e,t,i,r,s,a,o){return vA(new EC(n,e,t,i,r,s,a,o))}var oU,ele,EC,cU=I(()=>{"use strict";us();Gs();pC();vC();oU=new ht(4890367),ele=new ht(1722990),EC=class{constructor(e,t,i,r,s,a,o,l=vm(r,s)){this.meshToPart=new Map;this.raycaster=new df;this.pointer=new It;this.tempBox=new kr;this.tempCenter=new re;this.tempDirection=new re;this.tempCameraForward=new re;this.tempCameraRight=new re;this.tempCameraUp=new re;this.tempDragOffset=new re;this.tempNextPosition=new re;this.tempHelperDelta=new re;this.partCenterCache=new Map;this.selectionHelper=null;this.lastOccluded=!1;this.selected=null;this.lastPointerDown=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.canvas=i,this.meshes=s,this.parts=$oe(r,s,l);for(let c of this.parts)for(let f of c.meshes)this.meshToPart.set(f.id,c);this.controls=a,this.invalidate=o}requestRender(){this.invalidate()}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return!e.object.parent&&!this.scene.children.includes(e.object)}captureTransform(e){return{parent:e.object.parent,position:e.object.position.clone(),quaternion:e.object.quaternion.clone(),scale:e.object.scale.clone()}}restoreTransform(e,t){t.parent?t.parent.add(e.object):this.scene.add(e.object),e.object.position.copy(t.position),e.object.quaternion.copy(t.quaternion),e.object.scale.copy(t.scale),e.object.updateMatrixWorld(!0),this.invalidatePartCenter(e),this.requestRender()}subscribe(e){this.canvas.classList.add("ai3d-disassembly-active");let t=s=>{var o,l;if(s.button!==0||s.isPrimary===!1)return;this.lastPointerDown={x:s.clientX,y:s.clientY};let a=this.resolvePickTarget(s);if(this.partPointerActive=!!a,this.partPointerActive){s.preventDefault(),s.stopPropagation(),this.controls.enabled=!1,this.activePointerId=s.pointerId;try{(l=(o=this.canvas).setPointerCapture)==null||l.call(o,s.pointerId)}catch(c){}}e.onPointerDown(a,s)},i=s=>{this.activePointerId!==null&&s.pointerId!==this.activePointerId||(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),e.onPointerMove(s))},r=s=>{var a,o;if(!(this.activePointerId!==null&&s.pointerId!==this.activePointerId)){if(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),this.lastPointerDown=null,e.onPointerUp(s),this.partPointerActive=!1,this.activePointerId!==null&&((o=(a=this.canvas).hasPointerCapture)!=null&&o.call(a,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(l){}this.activePointerId=null,this.controls.enabled=!0}};return this.canvas.addEventListener("pointerdown",t),window.addEventListener("pointermove",i),window.addEventListener("pointerup",r),()=>{var s,a;if(this.canvas.removeEventListener("pointerdown",t),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",r),this.canvas.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.partPointerActive=!1,this.activePointerId!==null&&((a=(s=this.canvas).hasPointerCapture)!=null&&a.call(s,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(o){}this.activePointerId=null,this.controls.enabled=!0}}resolvePart(e){var t;return Qoe(e)?this.parts.includes(e)?e:null:e&&(t=this.meshToPart.get(e.id))!=null?t:null}setSelected(e){var t;(t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=null,this.selected=e,this.lastOccluded=!1,e&&!this.isDisposed(e)&&(this.selectionHelper=new ql(e.object,oU),this.scene.add(this.selectionHelper)),this.requestRender()}beginDrag(e,t){let i=this.getPartWorldCenter(e,this.tempCenter).clone(),r=this.getPointOnDragPlane(i,t);if(!r)return null;t.preventDefault(),t.stopPropagation(),Joe(this.scene,e.object),this.canvas.classList.add("ai3d-disassembly-dragging");let s="move";t.shiftKey&&(s="rotate");let a=this.tempCameraForward;this.camera.getWorldDirection(a);let o=dm(Jt(r),Jt(a));return o?(this.controls.enabled=!1,this.requestRender(),{part:e,mode:s,plane:o,startPoint:r.clone(),startPosition:e.object.position.clone(),startQuaternion:e.object.quaternion.clone(),pivot:i,pointerX:t.clientX,pointerY:t.clientY}):null}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=this.tempDragOffset.copy(i).sub(e.startPoint),s=this.tempNextPosition.copy(e.startPosition).add(r),a=this.tempHelperDelta.copy(s).sub(e.part.object.position);e.part.object.position.copy(s),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),this.translateSelectionHelper(a),this.requestRender()}endDrag(e){var t;this.controls.enabled=!0,this.canvas.classList.remove("ai3d-disassembly-dragging"),(t=this.selectionHelper)==null||t.update(),this.requestRender()}updateSelectionOcclusion(e){let t=this.getPartWorldCenter(e,this.tempCenter),i=this.camera.position,r=Af(Jt(i),Jt(t));if(!r)return;let s=this.tempDirection.set(r.direction.x,r.direction.y,r.direction.z);this.raycaster.set(i,s),this.raycaster.far=r.distance;let a=this.raycaster.intersectObjects(this.meshes,!1)[0],o=!!a&&Tf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?ele:oU),this.requestRender()))}updateRotation(e,t){var c;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=this.tempCameraForward;this.camera.getWorldDirection(s);let a=this.tempCameraUp.copy(this.camera.up).normalize(),o=this.tempCameraRight.crossVectors(a,s).normalize(),l=eA({startPosition:Jt(e.startPosition),pivot:Jt(e.pivot),startRotationQuaternion:JT(e.startQuaternion),yawAxis:Jt(a),pitchAxis:Jt(o),deltaX:i,deltaY:r,sensitivity:.01});l&&(e.part.object.position.set(l.position.x,l.position.y,l.position.z),e.part.object.quaternion.set(l.rotationQuaternion.x,l.rotationQuaternion.y,l.rotationQuaternion.z,l.rotationQuaternion.w),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),(c=this.selectionHelper)==null||c.update(),this.requestRender())}resolvePickTarget(e){let t=this.canvas.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.meshes,!1)[0];return(i==null?void 0:i.object)instanceof ci?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=dm(Jt(e),Jt(i));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:e}getRayPlanePoint(e,t){let i=this.canvas.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top;this.pointer.set(r/i.width*2-1,-(s/i.height)*2+1),this.raycaster.setFromCamera(this.pointer,this.camera);let a=$T({origin:Jt(this.raycaster.ray.origin),direction:Jt(this.raycaster.ray.direction)},t);return a?new re(a.x,a.y,a.z):null}getPartWorldCenter(e,t){let i=this.partCenterCache.get(e.id);return i?t.copy(i):(this.tempBox.setFromObject(e.object).getCenter(t),this.partCenterCache.set(e.id,t.clone()),t)}invalidatePartCenter(e){this.partCenterCache.delete(e.id)}translateSelectionHelper(e){if(!this.selectionHelper||e.lengthSq()<=Number.EPSILON)return;let t=this.selectionHelper.geometry.getAttribute("position");for(let i=0;ie.uuid).join("|"):n.uuid}function nle(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var tle,xA,dU=I(()=>{"use strict";tle=.242;xA=class{constructor(){this.materials=new Map}get(e){let t=rle(e),i=this.materials.get(t);if(i)return i;let r=ile(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())nle(e);this.materials.clear()}get size(){return this.materials.size}}});function hU(n){return cn(n)}function sle(n,e){return{originalPosition:hU(n),originalCenter:hU(e)}}function RA(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=sle(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,V2(s.originalPosition,t,a))}}function bA(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var SC=I(()=>{"use strict";Gs()});function MA(n){return cn(n)}function ale(n){return n instanceof ci}function ole(n){let e=[];return n.traverse(t=>{ale(t)&&t.geometry&&e.push(t)}),e}function uU(n,e,t){RA(new IA(n),e,t)}function TC(n){bA(new IA(n))}var IA,mU=I(()=>{"use strict";us();Gs();fl();SC();IA=class{constructor(e){this.root=e}getParts(){return ole(this.root)}getRootCenter(){let e=new kr().setFromObject(this.root);return Rr({min:Jt(e.min),max:Jt(e.max)})}getPartPosition(e){return Jt(e.position)}getPartCenter(e){let i=new kr().setFromObject(e).getCenter(new re);return Jt(i)}setPartPosition(e,t){e.position.set(t.x,t.y,t.z)}getPartState(e){var i;let t=(i=e.userData)!=null?i:{};return t._previewExplodeState?{originalPosition:MA(t._previewExplodeState.originalPosition),originalCenter:MA(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:MA(t.originalPosition),originalCenter:MA(t.originalCenter)}}}});function pU(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var yA,_U=I(()=>{"use strict";yA=class{constructor(e=120){this.maxSamples=e;this.samples=[];this.renderedFrameCount=0;this.idleFrameSkipCount=0;this.slowFrameCount=0;this.maxRenderMs=0;this.adaptiveScaleChangeCount=0}recordRenderedFrame(e,t){!Number.isFinite(e)||e<0||(this.renderedFrameCount++,e>=t&&this.slowFrameCount++,this.maxRenderMs=Math.max(this.maxRenderMs,e),this.samples.push(e),this.samples.length>this.maxSamples&&this.samples.shift())}recordIdleFrameSkip(){this.idleFrameSkipCount++}recordAdaptiveScaleChange(){this.adaptiveScaleChangeCount++}snapshot(){let e=[...this.samples].sort((r,s)=>r-s),t=this.samples.reduce((r,s)=>r+s,0),i=e.length===0?-1:Math.min(e.length-1,Math.ceil(e.length*.95)-1);return{renderedFrameCount:this.renderedFrameCount,idleFrameSkipCount:this.idleFrameSkipCount,slowFrameCount:this.slowFrameCount,averageRenderMs:e.length?Number((t/e.length).toFixed(2)):0,p95RenderMs:i>=0?Number(e[i].toFixed(2)):0,maxRenderMs:Number(this.maxRenderMs.toFixed(2)),adaptiveScaleChangeCount:this.adaptiveScaleChangeCount}}}});var AU={};Fe(AU,{ThreeModelPreview:()=>PA,createThreeModelPreview:()=>yle});function EU(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function Ile(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function AC(n){return n instanceof rl||n instanceof fo||n instanceof Zl}function SU(n){return n instanceof er}function TU(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function yle(n){return new PA(n)}var CA,lle,cle,fle,dle,hle,gU,ule,vU,mle,ple,_le,gle,vle,Ele,Sle,Tle,Ale,xle,yg,Rle,ble,Mle,PA,xU=I(()=>{"use strict";us();r2();n2();N2();ua();cm();fl();iA();lA();Eg();fC();Gs();Ag();_A();cU();dU();mU();_s();nC();_U();vC();CA=new ht("#20242e"),lle=.28,cle=2.5,fle=1.5,dle=1.15,hle=260,gU=30,ule=8,vU=28,mle=18,ple=2,_le=28,gle=.86,vle=1.08,Ele=.62,Sle=.86,Tle=4,Ale=120,xle=9090296,yg=14870768,Rle=16096779,ble=16317180,Mle=13358561;PA=class{constructor(e){this.raycaster=new df;this.occlusionRaycaster=new df;this.renderObservers=new Set;this.cameraZoomObservers=new Set;this.pointer=new It;this.annotationProjection=new re;this.annotationDirection=new re;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=EU();this.renderHandle=0;this.contextLost=!1;this.quality="high";this.renderScale=1;this.interactivePixelRatioActive=!1;this.interactionPixelRatioDeadline=0;this.renderObserverSettleFrames=0;this.frameBudgetPixelRatioScale=1;this.frameBudgetSlowStreak=0;this.frameBudgetFastStreak=0;this.frameBudgetObserverStride=1;this.frameBudgetObserverCursor=0;this.frameBudgetShadowDeferred=!1;this.lastFrameDurationMs=0;this.smoothness=new yA;this.viewportVisible=!0;this.viewportObserver=null;this.lastDisposalAudit={reason:"initial",meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};this.axesHelper=null;this.bboxHelper=null;this.groundShadowMesh=null;this.meshShadowFlagsPrepared=!1;this.gridHelper=null;this.bboxEnabled=!1;this.wireframeEnabled=!1;this.wireframeOriginalMaterials=new Map;this.sceneConfig={};this.focusSelectionEnabled=!1;this.explodeStateActive=!1;this.focusedObject=null;this.highlightedObject=null;this.selectionHelper=null;this.focusHelper=null;this.mixer=null;this.animationPlaying=!1;this.initialTarget=new re;this.initialPosition=new re(3,2,3);this.initialFov=45;this.initialZoom=1;this.initialCameraMode="perspective";this.cameraMode="perspective";this.lastPointerDown=null;this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new xA;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.disassembly=null;this.disassemblySetup=!1;this.renderDirty=!0;this.stlMaterial=null;this.cachedMeshes=null;this.cachedMeshRoot=null;this.cachedRenderables=null;this.cachedRenderableRoot=null;this.cachedRenderableObjectCount=null;this.cachedChildMeshMap=null;this.cachedChildMeshMapRoot=null;this.cachedRenderableBoundsMap=null;this.cachedRenderableBoundsMapRoot=null;this.cachedRootPreviewBounds=null;this.cachedRootPreviewBoundsObject=null;this.cachedGeometryQualityStats=null;this.cameraAnimHandle=0;this.preventCanvasWheelScroll=e=>{this.prepareInteractiveFrameBudget(),e.preventDefault(),e.stopPropagation(),this.markDirty()};this.handleControlsChange=()=>{this.prepareInteractiveFrameBudget(),this.markDirty(),this.notifyCameraZoomChanged()};this.handleViewportIntersection=e=>{let t=e[e.length-1];if(!t)return;let i=t.isIntersecting&&t.intersectionRatio>0;i!==this.viewportVisible&&(this.viewportVisible=i,i?(this.clock.last=performance.now(),this.markDirty(),this.markShadowDirty(),this.startRenderLoop()):(cancelAnimationFrame(this.renderHandle),this.renderHandle=0))};this.handlePointerDown=e=>{e.button!==0||e.isPrimary===!1||(this.lastPointerDown={x:e.clientX,y:e.clientY},this.prepareInteractiveFrameBudget())};this.handlePointerUp=e=>{var i;if(e.button!==0||e.isPrimary===!1)return;let t=this.lastPointerDown;this.lastPointerDown=null,t&&(Math.hypot(e.clientX-t.x,e.clientY-t.y)>4||(i=this.disassembly)!=null&&i.isEnabled()||this.dispatchPick(e))};this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},e.buttons&1&&this.prepareInteractiveFrameBudget(),!this.measurementActive||(this.pendingPoint&&this.schedulePreviewLineUpdate(),this.measurementMarkers.length===0))return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.measurementMarkers,!1),r=i.length>0?this.measurementMarkers.indexOf(i[0].object):-1;if(r!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&r{e.preventDefault(),this.contextLost=!0,this.renderHandle&&(cancelAnimationFrame(this.renderHandle),this.renderHandle=0)};this.handleContextRestored=()=>{this.contextLost=!1,this.markDirty(),this.startRenderLoop()};this.renderer=new CT({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Oi,this.renderer.toneMapping=Ns,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=wS,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(CA,1),this.scene=new Vd,this.camera=new gr(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new OT(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.65,this.controls.screenSpacePanning=!0,this.controls.target.copy(this.initialTarget),this.controls.addEventListener("change",this.handleControlsChange),this.installDefaultLighting(),this.resizeObs=new ResizeObserver(()=>this.resizeRenderer()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointerup",this.handlePointerUp),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.resizeRenderer(),this.startRenderLoop()}async loadModel(e,t,i,r,s){var l;gi(s),this.clearLoadedModel("model-switch"),gi(s),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=EU();let a=null,o=[];try{if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let h=await P2(e,this.loadedExt,i,r,s);a=h.scene,o=h.animations,this.resourceWarnings=h.warnings}else if(this.loadedExt==="stl")a=await D2(e),this.stlMaterial=La(a)?a.material:null;else if(this.loadedExt==="ply")a=await L2(e);else if(this.loadedExt==="obj"){let h=await O2(e,i,r);a=h.object,this.resourceWarnings=h.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);gi(s),this.rootObject=a,this.scene.add(a),this.invalidateMeshCache();let c=this.getRenderableObjects(a);this.prepareModelForQuality(c),gi(s),this.syncShadowFeatures();let f=this.getRootPreviewBounds(a);if(this.updateShadowFraming(f),this.syncSceneHelpers(),this.markDirty(),o.length>0){this.mixer=new J_(a);for(let h of o)this.mixer.clipAction(h).play();this.animationPlaying=!0}let d=TA(a,c,this.resourceWarnings,f!=null?f:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(a,f!=null?f:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(l=this.disassembly)==null||l.dispose(),this.disassembly=null,d}catch(c){throw a&&(a.removeFromParent(),this.rootObject===a&&(this.rootObject=null),this.lastDisposalAudit=this.disposeObjectGraph(a,"model-switch"),this.invalidateMeshCache()),c}}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.applySTLConfig(e.stl)}applySTLConfig(e){let t=this.stlMaterial;t&&(e.color!==void 0&&t.color.set(e.color),e.wireframe!==void 0&&(t.wireframe=e.wireframe,t.needsUpdate=!0),this.markDirty())}destroy(){var t,i;cancelAnimationFrame(this.renderHandle),cancelAnimationFrame(this.cameraAnimHandle),this._onPickCallbacks=[],this.renderObservers.clear(),this.cameraZoomObservers.clear(),this.measurementObservers.clear(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.clearFocusedMesh(),this.clearSelectionHighlight(),this.clearLoadedModel("destroy");for(let r of this.configLights)this.disposeConfiguredLight(r);this.configLights.length=0;for(let r of this.defaultLights)this.disposeConfiguredLight(r);this.defaultLights.length=0,this.disposeGlobalEnvironment(),this.controls.removeEventListener("change",this.handleControlsChange),this.controls.dispose();let e=this.renderer.domElement;e.removeEventListener("wheel",this.preventCanvasWheelScroll),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointerup",this.handlePointerUp),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.resizeObs.disconnect(),(i=this.viewportObserver)==null||i.disconnect(),this.viewportObserver=null,this.renderer.dispose()}getCanvas(){return this.renderer.domElement}captureSnapshot(){return this.renderNow(0),this.renderer.domElement.toDataURL("image/png")}getAnnotationProvider(){let e=this.renderer.domElement;return cA({canvas:e,observeRender:t=>(this.renderObservers.add(t),this.setRenderObserverSettleFrames(),this.markDirty(),{remove:()=>{this.renderObservers.delete(t),this.renderObservers.size===0&&this.setRenderObserverSettleFrames(0)}}),getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}exportModelInfo(e){var s;if(!this.rootObject)return"";let t=this.getRenderableObjects(this.rootObject),i=TA(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Vs(e)||i.rootName;return aA({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(iU)})}getModelEvidence(){var o;if(!this.rootObject)return null;let e=this.getRenderableObjects(this.rootObject),t=this.getRenderableMeshes(this.rootObject),i=this.getChildRenderableMeshMap(this.rootObject),r=this.getRenderableBoundsMap(this.rootObject),s=sU(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return dA({summary:TA(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>gC(l,this.rootObject,r),getMeshMaterialNames:tU,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:SU(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;if(!e)return null;let t=this.rootObject?this.getRenderableMeshes(this.rootObject):[],i=this.rootObject?this.getChildRenderableMeshMap(this.rootObject):void 0;return nU(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?oA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Jt(e.pickedPoint):SU(e.mesh)?Rr(En(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(TC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty()),this.resetDisassembly(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.switchCameraMode(this.initialCameraMode),this.camera.position.copy(this.initialPosition),this.controls.target.copy(this.initialTarget),this.camera.lookAt(this.controls.target),this.camera instanceof gr&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now()),this.notifyCameraZoomChanged()}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof er&&this.setFocusedObject(this._lastPickResult.mesh)):this.clearFocusedMesh(),this.markDirty(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}setWireframe(e){e!==this.wireframeEnabled&&(this.wireframeEnabled=e,this.applyWireframe(e),this.markDirty())}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}applyWireframe(e){if(this.rootObject)for(let t of this.getRenderableMeshes(this.rootObject))if(e){this.wireframeOriginalMaterials.set(t.id,t.material);let r=ks(t.material).map(s=>{if(s instanceof bn){let a=new ds({color:s.color,transparent:s.transparent,opacity:s.opacity,side:s.side,visible:s.visible});return a.wireframe=!0,a}if("wireframe"in s){let a=s.clone();return a.wireframe=!0,a}return s});t.material=Array.isArray(t.material)?r:r[0]}else{let i=this.wireframeOriginalMaterials.get(t.id);i&&(t.material=i),this.wireframeOriginalMaterials.delete(t.id)}}toggleOrientationGizmo(){if(!this.axesHelper){this.axesHelper=new Yu(1.2),this.axesHelper.visible=!1;let e=this.axesHelper.material;e.depthTest=!1,e.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}return this.axesHelper.visible=!this.axesHelper.visible,this.axesHelper.position.copy(this.controls.target),this.markDirty(),this.axesHelper.visible}isOrientationGizmoEnabled(){var e;return!!((e=this.axesHelper)!=null&&e.visible)}toggleBoundingBox(){var e;return this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled?(this.ensureBoundingBoxHelper(),this.markDirty(),!!this.bboxHelper):((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=null,this.markDirty(),!1)}hasAnimations(){return this.mixer!==null}toggleAnimation(){return this.mixer?(this.animationPlaying=!this.animationPlaying,this.mixer.timeScale=this.animationPlaying?1:0,this.markDirty(),this.animationPlaying):!1}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.renderer.domElement.classList.toggle("ai3d-measurement-active",this.measurementActive),this.measurementActive||this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,this.renderer.domElement.classList.remove("ai3d-measurement-active")),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments){i.line.removeFromParent(),i.line.geometry.dispose(),i.line.material.dispose(),i.label.removeFromParent();let r=i.label.material;(t=r.map)==null||t.dispose(),r.dispose()}this.measurementSegments=[];for(let i of this.measurementMarkers){i.removeFromParent(),i.geometry.dispose();let r=i.material;if(Array.isArray(r))for(let s of r)s.dispose();else r.dispose()}this.measurementMarkers=[],this.markDirty(),this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=Rg(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=hA(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootObject)return null;let e=En(this.rootObject);return tr(e)}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return pA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let i of this.measurementSegments){let r=um(this.createMeasurementReading(i.start,i.end));i.label.removeFromParent();let s=i.label.material;(t=s.map)==null||t.dispose(),s.dispose();let a=new re().addVectors(i.start,i.end).multiplyScalar(.5);i.label=this.createMeasurementLabelSprite(r,a,e),this.scene.add(i.label)}this.markDirty()}setRenderQuality(e,t=this.renderScale){this.quality=e,this.renderScale=t,this.syncGlobalEnvironmentForQuality(),this.applyShadowQuality(),this.resizeRenderer()}setRenderScale(e){return this.renderScale=Math.min(2,Math.max(.25,e)),this.resizeRenderer(),Number(this.renderScale.toFixed(2))}getCameraZoomState(){let e=this.getCameraZoomRange();if(!e)return null;let t=e.mode==="distance"?(e.max-e.current)/(e.max-e.min):(e.current-e.min)/(e.max-e.min),i=TU(t);return{value:i,percentage:Math.round(i*100)}}setCameraZoom(e){let t=this.getCameraZoomRange();if(!t)return null;let i=TU(e);if(t.mode==="distance"){let r=t.max-i*(t.max-t.min),s=this.camera.position.clone().sub(this.controls.target);s.lengthSq(){this.cameraZoomObservers.delete(e)}}getPerformanceSnapshot(){let e=this.smoothness.snapshot(),t=this.getQualitySnapshot();return{backend:"three",renderScale:Number(this.renderScale.toFixed(2)),quality:this.quality,pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),interactivePixelRatioActive:this.interactivePixelRatioActive,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames,frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,frameBudgetShadowDeferred:this.frameBudgetShadowDeferred,lastFrameDurationMs:Number(this.lastFrameDurationMs.toFixed(2)),averageRenderMs:e.averageRenderMs,p95RenderMs:e.p95RenderMs,maxRenderMs:e.maxRenderMs,renderedFrameCount:e.renderedFrameCount,slowFrameCount:e.slowFrameCount,idleFrameSkipCount:e.idleFrameSkipCount,adaptiveScaleChangeCount:e.adaptiveScaleChangeCount,viewportVisible:this.viewportVisible,disposalAudit:{...this.lastDisposalAudit},meshCount:t.geometry.meshCount,qualitySnapshot:t}}getQualitySnapshot(){let e=this.getGeometryQualityStats(),t=this.smoothness.snapshot();return{backend:"three",supportedFormats:["glb","gltf","stl","ply","obj"],colorPipeline:{outputColorSpace:String(this.renderer.outputColorSpace),toneMapping:this.renderer.toneMapping===Ns?"NoToneMapping":String(this.renderer.toneMapping),textureCount:this.textureAudit.textureCount,colorTextureCount:this.textureAudit.colorTextureCount,srgbColorTextureCount:this.textureAudit.srgbColorTextureCount},geometry:e,camera:{near:Number(this.camera.near.toPrecision(6)),far:Number(this.camera.far.toPrecision(6)),nearFarRatio:Number((this.camera.far/Math.max(this.camera.near,Number.EPSILON)).toPrecision(6))},performance:{renderScale:Number(this.renderScale.toFixed(2)),pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,viewportVisible:this.viewportVisible,renderedFrameCount:t.renderedFrameCount,idleFrameSkipCount:t.idleFrameSkipCount,slowFrameCount:t.slowFrameCount,averageRenderMs:t.averageRenderMs,p95RenderMs:t.p95RenderMs,maxRenderMs:t.maxRenderMs,adaptiveScaleChangeCount:t.adaptiveScaleChangeCount}}}setExplode(e,t){if(!this.rootObject)return;let i=Math.abs(e)>Number.EPSILON;!i&&!this.explodeStateActive||(uU(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(TC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new re(e.x,e.y,e.z),i=this.camera.position.distanceTo(this.controls.target),r=t.clone().sub(this.camera.position).normalize(),s=t.clone().sub(r.multiplyScalar(i));this.animateCamera(s,t)}toggleDisassembly(){if(this.ensureDisassembly(),!this.disassembly)return!1;let e=!this.disassembly.isEnabled();e&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh(),this.clearSelectionHighlight());let t=this.disassembly.setEnabled(e);return t||this.disassembly.reset(),t}resetDisassembly(){this.disassembly&&(this.disassembly.reset(),this.invalidateRootBoundsCache())}isDisassemblyEnabled(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}ensureDisassembly(){if(this.disassemblySetup||(this.disassemblySetup=!0,!this.rootObject))return;let e=this.getRenderableMeshes(this.rootObject);e.length!==0&&(this.disassembly=lU(this.scene,this.camera,this.renderer.domElement,this.rootObject,e,this.controls,()=>{this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty()},this.getChildRenderableMeshMap(this.rootObject)))}animateCamera(e,t){cancelAnimationFrame(this.cameraAnimHandle);let i=this.camera.position.clone(),r=this.controls.target.clone(),s=500,a=performance.now(),o=()=>{let l=performance.now()-a,c=Math.min(1,l/s),f=c<.5?4*c*c*c:1-Math.pow(-2*c+2,3)/2;this.camera.position.lerpVectors(i,e,f),this.controls.target.lerpVectors(r,t,f),this.controls.update(),this.markDirty(),c<1&&(this.cameraAnimHandle=window.requestAnimationFrame(o))};this.cameraAnimHandle=window.requestAnimationFrame(o)}startRenderLoop(){if(this.renderHandle||!this.viewportVisible||this.contextLost)return;let e=()=>{if(!this.viewportVisible||this.contextLost){this.renderHandle=0;return}let t=this.renderNow(performance.now());this.renderHandle=t?window.requestAnimationFrame(e):0};this.renderHandle=window.requestAnimationFrame(e)}renderNow(e){var l,c,f;let t=this.renderer.domElement;if(!this.viewportVisible||!t.isConnected||t.clientWidth<=0||t.clientHeight<=0)return!1;let i=Math.max(0,(e-this.clock.last)/1e3);this.clock.last=e;let r=this.controls.update(),s=!!this.mixer&&this.animationPlaying;if(s&&this.mixer&&(this.mixer.update(i),this.markShadowDirty()),this.restoreInteractivePixelRatioIfIdle(e,r),!r&&!s&&!this.renderDirty)return this.smoothness.recordIdleFrameSkip(),this.renderObserverSettleFrames>0&&(this.renderObserverSettleFrames--,this.notifyRenderObservers()),this.shouldContinueRenderLoop(r,s);this.renderDirty=!1,this.setRenderObserverSettleFrames(),(l=this.bboxHelper)==null||l.update(),(c=this.selectionHelper)==null||c.update(),(f=this.focusHelper)==null||f.update(),this.axesHelper&&this.axesHelper.visible&&this.axesHelper.position.copy(this.controls.target);let a=performance.now();this.renderer.render(this.scene,this.camera);let o=performance.now()-a;return this.smoothness.recordRenderedFrame(o,vU),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return pU({cameraMoved:e,animating:t,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames})}notifyRenderObservers(){if(!(this.frameBudgetObserverStride>1&&(this.frameBudgetObserverCursor=(this.frameBudgetObserverCursor+1)%this.frameBudgetObserverStride,this.frameBudgetObserverCursor!==0)))for(let e of this.renderObservers)e()}markDirty(){this.renderDirty=!0,this.startRenderLoop()}markShadowDirty(){if(!this.renderer.shadowMap.enabled){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}if(this.shouldDeferShadowRefresh()){this.frameBudgetShadowDeferred=!0;return}this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!0}prepareInteractiveFrameBudget(){let e=performance.now();this.interactionPixelRatioDeadline=e+hle,this.activateInteractivePixelRatio()&&this.resizeRenderer()}activateInteractivePixelRatio(){if(this.interactivePixelRatioActive)return!1;let e=this.computePixelRatio(!1);return this.computePixelRatio(!0)>=e?!1:(this.interactivePixelRatioActive=!0,!0)}restoreInteractivePixelRatioIfIdle(e,t){!this.interactivePixelRatioActive||t||e=vU?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=mle?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=ple){this.frameBudgetSlowStreak=0;let t=Math.max(Ele,this.frameBudgetPixelRatioScale*gle);t=_le&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*vle),this.frameBudgetObserverStride=Math.max(1,this.frameBudgetObserverStride-1),this.setRenderObserverSettleFrames(),this.smoothness.recordAdaptiveScaleChange(),this.resizeRenderer())}}resetFrameBudget(){let e=this.frameBudgetPixelRatioScale!==1||this.frameBudgetObserverStride!==1;this.frameBudgetPixelRatioScale=1,this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0,this.frameBudgetObserverStride=1,this.frameBudgetObserverCursor=0,this.setRenderObserverSettleFrames(),e&&this.markDirty()}setRenderObserverSettleFrames(e=gU){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=Sle}resizeRenderer(){let e=this.renderer.domElement,t=Math.max(1,Math.round(e.clientWidth||e.width||1)),i=Math.max(1,Math.round(e.clientHeight||e.height||1));this.renderer.setPixelRatio(this.computePixelRatio()),this.renderer.setSize(t,i,!1),this.camera instanceof hs?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}getCameraZoomRange(){if(!this.rootObject)return null;if(this.camera instanceof hs){let s=Math.max(this.initialZoom*.25,.05),a=Math.max(this.initialZoom*6,s*2),o=Number.isFinite(this.controls.minZoom)&&this.controls.minZoom>0?this.controls.minZoom:s,l=Number.isFinite(this.controls.maxZoom)&&this.controls.maxZoom>o?this.controls.maxZoom:a;return{mode:"zoom",current:Math.max(o,Math.min(this.camera.zoom,l)),min:o,max:l}}let e=this.camera.position.distanceTo(this.controls.target),t=Math.max(e*.08,1e-5),i=Number.isFinite(this.controls.minDistance)&&this.controls.minDistance>0?this.controls.minDistance:t,r=Number.isFinite(this.controls.maxDistance)&&this.controls.maxDistance>i?this.controls.maxDistance:Math.max(e*8,i*10);return{mode:"distance",current:Math.max(i,Math.min(e,r)),min:i,max:r}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:En(this.rootObject),t=tr(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof hs))return;let i=this.computeOrthographicViewSpan()/2,r=i*e;this.camera.left=-r,this.camera.right=r,this.camera.top=i,this.camera.bottom=-i}updateOrthographicFrustumForCamera(e,t){let r=this.computeOrthographicViewSpan()/2,s=r*t;e.left=-s,e.right=s,e.top=r,e.bottom=-r,e.updateProjectionMatrix()}switchCameraMode(e){if(this.cameraMode===e&&(e==="perspective"&&this.camera instanceof gr||e==="orthographic"&&this.camera instanceof hs))return;let t=this.renderer.domElement,i=Math.max(1,Math.round(t.clientWidth||t.width||1)),r=Math.max(1,Math.round(t.clientHeight||t.height||1)),s=i/r,a=this.camera,o=a.position.clone(),l=this.controls.target.clone(),c=a.zoom||1,f=a.near,d=a.far;if(this.scene.remove(a),e==="orthographic"){let h=new hs(-1,1,1,-1,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.updateOrthographicFrustumForCamera(h,s),this.camera=h}else{let h=new gr(this.initialFov,s,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.camera=h}this.scene.add(this.camera),this.controls.object=this.camera,this.controls.target.copy(l),this.controls.update(),this.cameraMode=e}applyCameraConfig(e){var i;let t=(i=e.mode)!=null?i:this.cameraMode;e.mode&&(this.initialCameraMode=e.mode),this.switchCameraMode(t),this.camera instanceof gr&&typeof e.fov=="number"&&Number.isFinite(e.fov)&&(this.camera.fov=e.fov,this.initialFov=e.fov),e.position&&(this.camera.position.set(...e.position),this.initialPosition.set(...e.position)),e.lookAt&&(this.controls.target.set(...e.lookAt),this.camera.lookAt(this.controls.target),this.initialTarget.set(...e.lookAt)),typeof e.near=="number"&&Number.isFinite(e.near)&&(this.camera.near=e.near),typeof e.far=="number"&&Number.isFinite(e.far)&&(this.camera.far=e.far),typeof e.zoom=="number"&&Number.isFinite(e.zoom)&&(this.camera.zoom=e.zoom,this.initialZoom=e.zoom),this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.notifyCameraZoomChanged()}applyLightConfig(e){for(let i of this.configLights)this.disposeConfiguredLight(i);this.configLights.length=0;let t=e.length>0;for(let i of this.defaultLights)i.visible=!t;for(let i of e){let r=this.createConfiguredLight(i);r&&(this.configLights.push(r),r.parent!==this.camera&&this.scene.add(r))}this.syncShadowFeatures(),this.updateShadowFraming(),this.markShadowDirty(),this.markDirty()}applySceneConfig(e){if(this.sceneConfig={...this.sceneConfig,...e},e.transparent!==void 0||e.background!==void 0)if(this.sceneConfig.transparent)this.scene.background=null,this.renderer.setClearColor(CA,0);else if(this.sceneConfig.background){let t=new ht(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=CA,this.renderer.setClearColor(CA,1);typeof e.autoRotate=="boolean"&&(this.controls.autoRotate=e.autoRotate),typeof e.autoRotateSpeed=="number"&&(this.controls.autoRotateSpeed=e.autoRotateSpeed),typeof e.axis=="boolean"&&this.syncAxisHelper(e.axis),this.syncSceneHelpers(),this.syncShadowFeatures(),this.markDirty()}installDefaultLighting(){let e=new zu(16777215,.96);e.name="default-global-ambient";let t=new Hu(16777215,7172736,.34);t.name="default-hemi",this.defaultLights.push(e,t);for(let i of this.defaultLights)this.scene.add(i)}installGlobalEnvironment(){this.disposeGlobalEnvironment();let e=new tm(this.renderer),t=new NT;this.environmentTarget=e.fromScene(t,.04),this.scene.environment=this.environmentTarget.texture,this.scene.environmentIntensity=.48,t.dispose(),e.dispose()}syncGlobalEnvironmentForQuality(){if(this.quality==="low"){this.cancelGlobalEnvironmentInstall(),this.disposeGlobalEnvironment(),this.markDirty();return}this.rootObject&&!this.environmentTarget&&this.scheduleGlobalEnvironmentInstall()}scheduleGlobalEnvironmentInstall(){this.quality==="low"||this.environmentTarget||this.environmentInstallHandle||(this.environmentInstallHandle=window.setTimeout(()=>{this.environmentInstallHandle=0,!(this.quality==="low"||this.contextLost||!this.rootObject)&&(this.installGlobalEnvironment(),this.markDirty())},Ale))}cancelGlobalEnvironmentInstall(){this.environmentInstallHandle&&(window.clearTimeout(this.environmentInstallHandle),this.environmentInstallHandle=0)}disposeGlobalEnvironment(){var e;this.cancelGlobalEnvironmentInstall(),this.scene.environment=null,(e=this.environmentTarget)==null||e.dispose(),this.environmentTarget=null}createConfiguredLight(e){var r,s,a,o,l,c,f;let t=e.color?new ht(e.color):new ht(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new zu(t,i);case"hemisphere":{let d=e.groundColor?new ht(e.groundColor):new ht(4473924);return new Hu(t,d,i)}case"directional":{let d=new rl(t,i),h=(s=e.position)!=null?s:[-1,2,1],u=(a=e.target)!=null?a:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new fo(t,i),h=(o=e.position)!=null?o:[0,5,0];return d.position.set(...h),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new Zl(t,i),h=(l=e.position)!=null?l:[0,5,0],u=(c=e.target)!=null?c:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.angle=e.angle?e.angle*Math.PI/180:Math.PI/4,d.penumbra=(f=e.penumbra)!=null?f:.5,typeof e.decay=="number"&&(d.decay=e.decay),d.castShadow=!!e.castShadow,d}case"attachToCam":{let d=new fo(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof rl||e instanceof Zl)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=I2(this.renderer.capabilities.getMaxAnisotropy(),this.quality),i=new Set;for(let r of e)for(let s of ks(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){Ile(this.textureAudit,jT(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!AC(i)||!i.castShadow||(i.shadow.mapSize.set(e,e),i.shadow.bias=-12e-5,i.shadow.normalBias=.018,i.shadow.needsUpdate=!0,t=!0);t&&(this.syncShadowFeatures(),this.markShadowDirty(),this.markDirty())}updateShadowFraming(e=this.getRootPreviewBounds()){if(!this.rootObject||!e)return;let t=Rr(e),i=tr(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new re(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!AC(l)||!l.castShadow)){if(this.ensureMeshShadowFlags(),l.shadow.mapSize.set(this.shadowMapSize(),this.shadowMapSize()),l.shadow.bias=-12e-5,l.shadow.normalBias=.018,l instanceof rl){let c=l.position.clone().sub(l.target.position);if(c.lengthSq()<.001&&c.set(4,7,5),l.target.position.copy(a),l.target.parent||this.scene.add(l.target),l.position.copy(a).add(c.normalize().multiplyScalar(s*2.4)),l.shadow.camera instanceof hs){let f=l.shadow.camera;f.left=-s,f.right=s,f.top=s,f.bottom=-s,f.near=.1,f.far=s*5,f.updateProjectionMatrix()}}l.shadow.needsUpdate=!0,o=!0}o&&this.markShadowDirty()}shadowMapSize(){return this.quality==="low"?512:this.quality==="medium"?1024:2048}allLights(){return[...this.defaultLights,...this.configLights]}hasActiveShadowFeatures(){return!!this.sceneConfig.groundShadow||this.allLights().some(e=>AC(e)&&e.castShadow)}syncShadowFeatures(){let e=this.hasActiveShadowFeatures();if(this.renderer.shadowMap.enabled!==e&&(this.renderer.shadowMap.enabled=e),!e){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}this.ensureMeshShadowFlags(),this.renderer.shadowMap.needsUpdate=!0}ensureMeshShadowFlags(){if(!(!this.rootObject||this.meshShadowFlagsPrepared)){for(let e of this.getRenderableObjects(this.rootObject))La(e)&&(e.castShadow=!0,e.receiveShadow=!0);this.meshShadowFlagsPrepared=!0}}syncSceneHelpers(){this.sceneConfig.groundShadow?this.createGroundShadow():this.removeGroundShadow(),this.sceneConfig.grid?this.createGrid():this.removeGrid(),typeof this.sceneConfig.axis=="boolean"&&this.syncAxisHelper(this.sceneConfig.axis)}syncAxisHelper(e){if(!this.axesHelper){this.axesHelper=new Yu(1.2);let t=this.axesHelper.material;t.depthTest=!1,t.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}this.axesHelper.visible=e,this.axesHelper.position.copy(this.controls.target)}createGroundShadow(){var l;if(!this.rootObject||this.groundShadowMesh)return;this.ensureMeshShadowFlags();let e=(l=this.getRootPreviewBounds())!=null?l:En(this.rootObject),t=Rr(e),i=tr(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*3,.001),a=e.min.y-Math.max(s*.002,1e-5),o=new ci(new Wd(s,s),new Y_({color:0,opacity:lle,transparent:!0}));o.name="ai3d-ground-shadow",o.rotation.x=-Math.PI/2,o.position.set(t.x,a,t.z),o.receiveShadow=!0,o.renderOrder=-1,this.scene.add(o),this.groundShadowMesh=o}removeGroundShadow(){if(this.groundShadowMesh){this.groundShadowMesh.removeFromParent(),this.groundShadowMesh.geometry.dispose();for(let e of ks(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:En(this.rootObject),t=Rr(e),i=tr(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new eg(s,20,7305093,3423046);a.name="ai3d-grid",a.position.set(t.x,e.min.y-Math.max(s*.003,1e-5),t.z);for(let l of ks(a.material))l.transparent=!0,l.opacity=.42;this.scene.add(a),this.gridHelper=a}removeGrid(){if(this.gridHelper){this.gridHelper.removeFromParent(),this.gridHelper.geometry.dispose();for(let e of ks(this.gridHelper.material))e.dispose();this.gridHelper=null}}dispatchPick(e){var c,f,d;if(!this.rootObject||(c=this.disassembly)!=null&&c.isEnabled())return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],r=pm(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?SA(this.rootObject,r,s,a):null,l={mesh:o,pickedPoint:(d=(f=i==null?void 0:i.point)==null?void 0:f.clone())!=null?d:null,screenX:e.clientX,screenY:e.clientY};if(this._lastPickResult=l,this.measurementActive&&(i!=null&&i.point)){this.addMeasurementPoint(i.point.clone());return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(h=>h(l))}clearLoadedModel(e="model-switch"){var t,i;if(this.cancelGlobalEnvironmentInstall(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.explodeStateActive=!1,this.meshShadowFlagsPrepared=!1,this.invalidateMeshCache(),this.markDirty(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.disposeMeasurementOverlays(!0),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,this.notifyCameraZoomChanged(),(i=this.bboxHelper)==null||i.removeFromParent(),this.bboxHelper=null,this.bboxEnabled=!1,this.removeGroundShadow(),this.removeGrid(),this.mixer=null,this.animationPlaying=!1,!this.rootObject){this.lastDisposalAudit={reason:e,meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};return}this.scene.remove(this.rootObject),this.lastDisposalAudit=this.disposeObjectGraph(this.rootObject,e),this.rootObject=null,this.invalidateMeshCache(),this.markShadowDirty()}disposeObjectGraph(e,t){var c;let i=new Set,r=new Set,s=new Set,a=0,o=0,l=f=>{La(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let h of ks(f.material))this.disposeMaterialWithTextures(h,r,s)};if(this.cachedRenderables&&this.cachedRenderableRoot===e){o=(c=this.cachedRenderableObjectCount)!=null?c:this.cachedRenderables.length;for(let f of this.cachedRenderables)l(f)}else e.traverse(f=>{o++,pm(f)&&l(f)});return{reason:t,meshCount:a,geometryCount:i.size,materialCount:r.size,textureCount:s.size,objectCount:o,timestamp:performance.now()}}disposeMaterialWithTextures(e,t,i){if(t.has(e.uuid))return;let r=e;for(let s of Object.values(r))if(s instanceof Pr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Pr&&!i.has(a.uuid)&&(a.dispose(),i.add(a.uuid));e.dispose(),t.add(e.uuid)}fitCameraToObject(e,t){var l;let i=(l=t!=null?t:this.getRootPreviewBounds(e))!=null?l:En(e),r=H2(i);this.initialTarget.set(r.target.x,r.target.y,r.target.z),this.initialPosition.set(r.position.x,r.position.y,r.position.z),this.initialFov=45;let s=tr(i),a=Math.max(s.x,s.y,s.z,Number.EPSILON),o=this.initialPosition.distanceTo(this.initialTarget);this.controls.minDistance=Math.max(r.near*4,a*.02,1e-5),this.controls.maxDistance=Math.max(o*8,this.controls.minDistance*10),this.controls.minZoom=.25,this.controls.maxZoom=8,this.raycaster.params.Points={threshold:Math.max(a*.01,1e-5)},this.raycaster.params.Line={threshold:Math.max(a*.002,1e-5)},this.occlusionRaycaster.params.Points={threshold:Math.max(a*.006,1e-5)},this.occlusionRaycaster.params.Line={threshold:Math.max(a*.001,1e-5)},this.resetView(),this.axesHelper&&(this.axesHelper.position.copy(this.controls.target),this.axesHelper.scale.setScalar(Math.max(a*.25,5e-4))),this.camera.near=r.near,this.camera.far=r.far,this.camera.updateProjectionMatrix(),this.markDirty(),this.notifyCameraZoomChanged()}getAnnotationCameraStateKey(){return fA([{value:this.camera.position.x,digits:3},{value:this.camera.position.y,digits:3},{value:this.camera.position.z,digits:3},{value:this.controls.target.x,digits:2},{value:this.controls.target.y,digits:2},{value:this.controls.target.z,digits:2},{value:this.camera instanceof gr?this.camera.fov:this.camera.zoom,digits:this.camera instanceof gr?2:3}])}projectAnnotationWorldPoint(e,t){let i=this.renderer.domElement;return!i.isConnected||i.clientWidth===0||i.clientHeight===0?!1:(this.scene.updateMatrixWorld(),this.camera.updateMatrixWorld(),this.annotationProjection.set(e.x,e.y,e.z).project(this.camera),Z2(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=Af(Jt(this.camera.position),e);if(!t)return!1;this.rootObject.updateWorldMatrix(!0,!0),this.annotationDirection.set(t.direction.x,t.direction.y,t.direction.z),this.occlusionRaycaster.set(this.camera.position,this.annotationDirection),this.occlusionRaycaster.far=t.distance;let i=this.occlusionRaycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];return!!i&&Tf(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{La(i)&&i.geometry&&t.push(i)}),this.cachedMeshes=t,this.cachedMeshRoot=e,t}getRenderableObjects(e){if(this.cachedRenderables&&this.cachedRenderableRoot===e)return this.cachedRenderables;let t=[],i=0;return e.traverse(r=>{i++,pm(r)&&r.geometry&&t.push(r)}),this.cachedRenderables=t,this.cachedRenderableRoot=e,this.cachedRenderableObjectCount=i,t}getChildRenderableMeshMap(e){return this.cachedChildMeshMap&&this.cachedChildMeshMapRoot===e?this.cachedChildMeshMap:(this.cachedChildMeshMap=vm(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=eU(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=aU(this.rootObject,this.getRenderableObjects(this.rootObject),(e=this.getRootPreviewBounds())!=null?e:void 0,this.getRenderableBoundsMap(this.rootObject))),this.cachedGeometryQualityStats):{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null}}invalidateMeshCache(){this.cachedMeshes=null,this.cachedMeshRoot=null,this.cachedRenderables=null,this.cachedRenderableRoot=null,this.cachedRenderableObjectCount=null,this.cachedChildMeshMap=null,this.cachedChildMeshMapRoot=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.invalidateRootBoundsCache()}invalidateRootBoundsCache(){this.cachedRootPreviewBounds=null,this.cachedRootPreviewBoundsObject=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.cachedGeometryQualityStats=null}getRootPreviewBounds(e=this.rootObject){return e?this.cachedRootPreviewBounds&&this.cachedRootPreviewBoundsObject===e?this.cachedRootPreviewBounds:(this.cachedRootPreviewBounds=En(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new ql(this.rootObject,16436245),this.scene.add(this.bboxHelper))}updateSelectionHighlight(e){var t;if(!this.rootObject||!e){this.clearSelectionHighlight();return}this.highlightedObject===e&&this.selectionHelper||((t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=new ql(e,4890367),this.scene.add(this.selectionHelper),this.highlightedObject=e,this.markDirty())}setFocusedObject(e){var r,s;if(!this.rootObject||!e){this.clearFocusedMesh();return}if(this.focusedObject===e)return;let t=this.getRenderableMeshes(this.rootObject),i=La(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!pm(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new ql(e,3065087),this.scene.add(this.focusHelper),this.focusedObject=e,this.focusedSelectedMeshes.clear();for(let a of i)this.focusedSelectedMeshes.set(a.id,a);this.markDirty()}clearFocusedMesh(){var e;this.restoreFocusedMaterials(),this.disposeFocusDimMaterials(),this.originalMaterials.clear(),this.focusedSelectedMeshes.clear(),(e=this.focusHelper)==null||e.removeFromParent(),this.focusHelper=null,this.focusedObject=null,this.markDirty()}restoreFocusedMaterials(){if(this.rootObject)for(let e of this.getRenderableMeshes(this.rootObject)){let t=this.originalMaterials.get(e.id);t&&(e.material=t)}}applyInitialFocusMaterials(e,t){let i=new Set(t.map(r=>r.id));for(let r of e)this.originalMaterials.set(r.id,r.material),!i.has(r.id)&&(r.material=this.focusDimMaterialCache.get(r.material))}applyFocusSelectionDelta(e){var i,r;let t=new Set(e.map(s=>s.id));for(let[s,a]of this.focusedSelectedMeshes){if(t.has(s))continue;let o=(i=this.originalMaterials.get(s))!=null?i:a.material;this.originalMaterials.has(s)||this.originalMaterials.set(s,o),a.material=this.focusDimMaterialCache.get(o)}for(let s of e){let a=(r=this.originalMaterials.get(s.id))!=null?r:s.material;this.originalMaterials.has(s.id)||this.originalMaterials.set(s.id,a),s.material=a}}disposeFocusDimMaterials(){this.focusDimMaterialCache.clear()}clearSelectionHighlight(){var e;(e=this.selectionHelper)==null||e.removeFromParent(),this.selectionHelper=null,this.highlightedObject=null,this.markDirty()}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:En(this.rootObject),t=tr(e);return Math.max(t.x,t.y,t.z,.001)*.015}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(yg));e&&this.markDirty()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>t.start.distanceTo(e)<1e-4||t.end.distanceTo(e)<1e-4)}disposeMeasurementMarker(e){e.removeFromParent(),e.geometry.dispose();let t=e.material;if(Array.isArray(t))for(let i of t)i.dispose();else t.dispose()}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(i.distanceTo(this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=new ku(r,16,16),a=new ds({color:yg,depthTest:!1,transparent:!0,opacity:.96}),o=new ci(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(yg)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=new ku(r,16,16),a=new ds({color:yg,depthTest:!1,transparent:!0,opacity:.96}),o=new ci(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o),this.pendingMarker=o}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(Rle),this.pendingPoint=i,this.ensurePreviewLine()}this.markDirty(),this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){let i=new Qi().setFromPoints([e,t]),r=new $o(i,new Vn({color:xle,transparent:!0,opacity:.94,depthTest:!1}));r.renderOrder=998,this.scene.add(r);let s=um(this.createMeasurementReading(e,t)),a=new re().addVectors(e,t).multiplyScalar(.5),o=this.createMeasurementLabelSprite(s,a,this.getMeasurementMarkerSize()*4);this.scene.add(o),this.measurementSegments.push({start:e,end:t,line:r,label:o})}createMeasurementLabelSprite(e,t,i){let r=ih("canvas"),s=r.getContext("2d");r.width=640,r.height=160,mA(s,e,r.width,r.height);let a=new z_(r),o=new Bu({map:a,depthTest:!1,transparent:!0}),l=new V_(o);return l.position.copy(t),l.scale.set(i*4,i*.95,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Qi().setFromPoints([new re,new re]);this.previewLine=new $o(e,new Vn({color:Mle,transparent:!0,opacity:.68,depthTest:!1})),this.previewLine.renderOrder=997,this.scene.add(this.previewLine)}updatePreviewLine(){if(this.previewLineUpdateHandle=0,!this.pendingPoint||!this.previewLine||!this.rootObject)return;let e=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-e.left)/e.width*2-1,this.pointer.y=-((this.lastPointerClient.y-e.top)/e.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let t=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],i;t!=null&&t.point?i=t.point.clone():i=this.pendingPoint.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5));let r=this.previewLine.geometry.getAttribute("position");r.setXYZ(0,this.pendingPoint.x,this.pendingPoint.y,this.pendingPoint.z),r.setXYZ(1,i.x,i.y,i.z),r.needsUpdate=!0,this.previewLine.geometry.computeBoundingSphere(),this.markDirty()}schedulePreviewLineUpdate(){this.previewLineUpdateHandle||(this.previewLineUpdateHandle=window.requestAnimationFrame(()=>this.updatePreviewLine()))}cancelPreviewLineUpdate(){this.previewLineUpdateHandle&&(window.cancelAnimationFrame(this.previewLineUpdateHandle),this.previewLineUpdateHandle=0)}removePreviewLine(){this.cancelPreviewLineUpdate(),this.previewLine&&(this.previewLine.removeFromParent(),this.previewLine.geometry.dispose(),this.previewLine.material.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return uA(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}}});var Cle,xC,RC,te,mi=I(()=>{Cle=typeof WeakRef!="undefined",xC=class{constructor(e,t=!1,i,r){this.initialize(e,t,i,r)}initialize(e,t=!1,i,r){return this.mask=e,this.skipNextObservers=t,this.target=i,this.currentTarget=r,this}},RC=class{constructor(e,t,i=null){this.callback=e,this.mask=t,this.scope=i,this._willBeUnregistered=!1,this.unregisterOnNextCall=!1,this._remove=null}remove(e=!1){this._remove&&this._remove(e)}},te=class n{static FromPromise(e,t){let i=new n;return e.then(r=>{i.notifyObservers(r)}).catch(r=>{if(t)t.notifyObservers(r);else throw r}),i}get observers(){return this._observers}constructor(e,t=!1){this.notifyIfTriggered=t,this._observers=new Array,this._numObserversMarkedAsDeleted=0,this._hasNotified=!1,this._eventState=new xC(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new RC(e,t,r);a.unregisterOnNextCall=s,i?this._observers.unshift(a):this._observers.push(a),this._onObserverAdded&&this._onObserverAdded(a),this._hasNotified&&this.notifyIfTriggered&&this._lastNotifiedValue!==void 0&&this.notifyObserver(a,this._lastNotifiedValue);let o=Cle?new WeakRef(this):{deref:()=>this};return a._remove=(l=!1)=>{let c=o.deref();c&&(l?c.remove(a):c._remove(a))},a}addOnce(e){return this.add(e,void 0,void 0,void 0,!0)}remove(e){return e?(e._remove=null,this._observers.indexOf(e)!==-1?(this._deferUnregister(e),!0):!1):!1}removeCallback(e,t){for(let i=0;i{this._remove(e)},0))}_remove(e,t=!0){if(!e)return!1;let i=this._observers.indexOf(e);return i!==-1?(t&&this._numObserversMarkedAsDeleted--,this._observers.splice(i,1),!0):!1}makeObserverTopPriority(e){this._remove(e,!1),this._observers.unshift(e)}makeObserverBottomPriority(e){this._remove(e,!1),this._observers.push(e)}notifyObservers(e,t=-1,i,r,s){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=e),!this._observers.length)return!0;let a=this._eventState;a.mask=t,a.target=i,a.currentTarget=r,a.skipNextObservers=!1,a.lastReturnValue=e,a.userInfo=s;for(let o of this._observers)if(!o._willBeUnregistered&&(o.mask&t&&(o.unregisterOnNextCall&&this._deferUnregister(o),o.scope?a.lastReturnValue=o.callback.apply(o.scope,[e,a]):a.lastReturnValue=o.callback(e,a)),a.skipNextObservers))return!1;return!0}notifyObserver(e,t,i=-1){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=t),e._willBeUnregistered)return;let r=this._eventState;r.mask=i,r.skipNextObservers=!1,e.unregisterOnNextCall&&this._deferUnregister(e),e.callback(t,r)}hasObservers(){return this._observers.length-this._numObserversMarkedAsDeleted>0}clear(){for(;this._observers.length;){let e=this._observers.pop();e&&(e._remove=null)}this._onObserverAdded=null,this._numObserversMarkedAsDeleted=0,this.cleanLastNotifiedState()}cleanLastNotifiedState(){this._hasNotified=!1,this._lastNotifiedValue=void 0}clone(){let e=new n;return e._observers=this._observers.slice(0),e}hasSpecificMask(e=-1){for(let t of this._observers)if(t.mask&e||t.mask===e)return!0;return!1}}});var DA,RU=I(()=>{DA=class{get wrapU(){return this._cachedWrapU}set wrapU(e){this._cachedWrapU=e}get wrapV(){return this._cachedWrapV}set wrapV(e){this._cachedWrapV=e}get wrapR(){return this._cachedWrapR}set wrapR(e){this._cachedWrapR=e}get anisotropicFilteringLevel(){return this._cachedAnisotropicFilteringLevel}set anisotropicFilteringLevel(e){this._cachedAnisotropicFilteringLevel=e}get comparisonFunction(){return this._comparisonFunction}set comparisonFunction(e){this._comparisonFunction=e}get useMipMaps(){return this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}constructor(){this.samplingMode=-1,this._useMipMaps=!0,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this._comparisonFunction=0}setParameters(e=1,t=1,i=1,r=1,s=2,a=0){return this._cachedWrapU=e,this._cachedWrapV=t,this._cachedWrapR=i,this._cachedAnisotropicFilteringLevel=r,this.samplingMode=s,this._comparisonFunction=a,this}compareSampler(e){return this._cachedWrapU===e._cachedWrapU&&this._cachedWrapV===e._cachedWrapV&&this._cachedWrapR===e._cachedWrapR&&this._cachedAnisotropicFilteringLevel===e._cachedAnisotropicFilteringLevel&&this.samplingMode===e.samplingMode&&this._comparisonFunction===e._comparisonFunction&&this._useMipMaps===e._useMipMaps}}});var bU,Vi,Ws=I(()=>{mi();RU();(function(n){n[n.Unknown=0]="Unknown",n[n.Url=1]="Url",n[n.Temp=2]="Temp",n[n.Raw=3]="Raw",n[n.Dynamic=4]="Dynamic",n[n.RenderTarget=5]="RenderTarget",n[n.MultiRenderTarget=6]="MultiRenderTarget",n[n.Cube=7]="Cube",n[n.CubeRaw=8]="CubeRaw",n[n.CubePrefiltered=9]="CubePrefiltered",n[n.Raw3D=10]="Raw3D",n[n.Raw2DArray=11]="Raw2DArray",n[n.DepthStencil=12]="DepthStencil",n[n.CubeRawRGBD=13]="CubeRawRGBD",n[n.Depth=14]="Depth"})(bU||(bU={}));Vi=class n extends DA{get useMipMaps(){return this._useMipMaps===null?this.generateMipMaps:this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}get uniqueId(){return this._uniqueId}_setUniqueId(e){this._uniqueId=e}getEngine(){return this._engine}get source(){return this._source}constructor(e,t,i=!1){super(),this.isReady=!1,this.isCube=!1,this.is3D=!1,this.is2DArray=!1,this.isMultiview=!1,this.url="",this.generateMipMaps=!1,this._useMipMaps=null,this.mipLevelCount=1,this.samples=0,this.type=-1,this.format=-1,this.onLoadedObservable=new te,this.onErrorObservable=new te,this.onRebuildCallback=null,this.width=0,this.height=0,this.depth=0,this.baseWidth=0,this.baseHeight=0,this.baseDepth=0,this.invertY=!1,this._invertVScale=!1,this._associatedChannel=-1,this._source=0,this._buffer=null,this._bufferView=null,this._bufferViewArray=null,this._bufferViewArrayArray=null,this._size=0,this._extension="",this._files=null,this._workingCanvas=null,this._workingContext=null,this._cachedCoordinatesMode=null,this._isDisabled=!1,this._compression=null,this._sphericalPolynomial=null,this._sphericalPolynomialPromise=null,this._sphericalPolynomialComputed=!1,this._lodGenerationScale=0,this._lodGenerationOffset=0,this._useSRGBBuffer=!1,this._creationFlags=0,this._lodTextureHigh=null,this._lodTextureMid=null,this._lodTextureLow=null,this._isRGBD=!1,this._linearSpecularLOD=!1,this._irradianceTexture=null,this._hardwareTexture=null,this._maxLodLevel=null,this._references=1,this._gammaSpace=null,this._premulAlpha=!1,this._dynamicTextureSource=null,this._autoMSAAManagement=!1,this._engine=e,this._source=t,this._uniqueId=n._Counter++,i||(this._hardwareTexture=e._createHardwareTexture())}incrementReferences(){this._references++}updateSize(e,t,i=1){this._engine.updateTextureDimensions(this,e,t,i),this.width=e,this.height=t,this.depth=i,this.baseWidth=e,this.baseHeight=t,this.baseDepth=i,this._size=e*t*i}_rebuild(){var t,i;if(this.isReady=!1,this._cachedCoordinatesMode=null,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this.onRebuildCallback){let r=this.onRebuildCallback(this),s=a=>{a._swapAndDie(this,!1),this.isReady=r.isReady};r.isAsync?r.proxy.then(s):s(r.proxy);return}let e;switch(this.source){case 2:break;case 1:e=this._engine.createTexture((t=this._originalUrl)!=null?t:this.url,!this.generateMipMaps,this.invertY,null,this.samplingMode,r=>{r._swapAndDie(this,!1),this.isReady=!0},null,this._buffer,void 0,this.format,this._extension,void 0,void 0,void 0,this._useSRGBBuffer);return;case 3:if(e=this._engine.createRawTexture(this._bufferView,this.baseWidth,this.baseHeight,this.format,this.generateMipMaps,this.invertY,this.samplingMode,this._compression,this.type,this._creationFlags,this._useSRGBBuffer,this.mipLevelCount),e._swapAndDie(this,!1),this._bufferViewArray)for(let r=0;r{e._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension,!1,0,0,null,void 0,this._useSRGBBuffer,ArrayBuffer.isView(this._buffer)?this._buffer:null);return;case 8:e=this._engine.createRawCubeTexture(this._bufferViewArray,this.width,(i=this._originalFormat)!=null?i:this.format,this.type,this.generateMipMaps,this.invertY,this.samplingMode,this._compression),e._swapAndDie(this,!1),this.isReady=!0;break;case 13:return;case 9:e=this._engine.createPrefilteredCubeTexture(this.url,null,this._lodGenerationScale,this._lodGenerationOffset,r=>{r&&r._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension),e._sphericalPolynomial=this._sphericalPolynomial;return;case 12:case 14:break}}_swapAndDie(e,t=!0){var s;(s=this._hardwareTexture)==null||s.setUsage(e._source,this.generateMipMaps,this.is2DArray,this.isCube,this.is3D,this.width,this.height,this.depth),e._hardwareTexture=this._hardwareTexture,t&&(e._isRGBD=this._isRGBD),this._lodTextureHigh&&(e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureHigh=this._lodTextureHigh),this._lodTextureMid&&(e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureMid=this._lodTextureMid),this._lodTextureLow&&(e._lodTextureLow&&e._lodTextureLow.dispose(),e._lodTextureLow=this._lodTextureLow),this._irradianceTexture&&(e._irradianceTexture&&e._irradianceTexture.dispose(),e._irradianceTexture=this._irradianceTexture);let i=this._engine.getLoadedTexturesCache(),r=i.indexOf(this);r!==-1&&i.splice(r,1),r=i.indexOf(e),r===-1&&i.push(e)}dispose(){this._references--,this._references===0&&(this.onLoadedObservable.clear(),this.onErrorObservable.clear(),this._engine._releaseTexture(this),this._hardwareTexture=null,this._dynamicTextureSource=null)}};Vi._Counter=0});var Oe,Gi=I(()=>{mi();Oe=class{static get LastCreatedEngine(){return this.Instances.length===0?null:this.Instances[this.Instances.length-1]}static get LastCreatedScene(){return this._LastCreatedScene}};Oe.Instances=[];Oe.OnEnginesDisposedObservable=new te;Oe._LastCreatedScene=null;Oe.UseFallbackTexture=!0;Oe.FallbackTexture=""});var ee,Lt=I(()=>{ee=class n{static _CheckLimit(e,t){let i=n._LogLimitOutputs[e];return i?i.current++:(i={limit:t,current:1},n._LogLimitOutputs[e]=i),i.current<=i.limit}static _GenerateLimitMessage(e,t=1){var s;let i=n._LogLimitOutputs[e];if(!i||!n.MessageLimitReached)return;let r=this._Levels[t];i.current===i.limit&&n[r.name](n.MessageLimitReached.replace(/%LIMIT%/g,""+i.limit).replace(/%TYPE%/g,(s=r.name)!=null?s:""))}static _AddLogEntry(e){n._LogCache=e+n._LogCache,n.OnNewCacheEntry&&n.OnNewCacheEntry(e)}static _FormatMessage(e){let t=r=>r<10?"0"+r:""+r,i=new Date;return"["+t(i.getHours())+":"+t(i.getMinutes())+":"+t(i.getSeconds())+"]: "+e}static _LogDisabled(e,t){}static _LogEnabled(e=1,t,i){let r=Array.isArray(t)?t[0]:t;if(i!==void 0&&!n._CheckLimit(r,i))return;let s=n._FormatMessage(r),a=this._Levels[e],o=Array.isArray(t)?t.slice(1):[];a.logFunc&&a.logFunc("BJS - "+s,...o);let l=`
${s}

`;n._AddLogEntry(l),n._GenerateLimitMessage(r,e)}static get LogCache(){return n._LogCache}static ClearLogCache(){n._LogCache="",n._LogLimitOutputs={},n.errorsCount=0}static set LogLevels(e){n.Log=n._LogDisabled,n.Warn=n._LogDisabled,n.Error=n._LogDisabled;let t=[n.MessageLogLevel,n.WarningLogLevel,n.ErrorLogLevel];for(let i of t)if((e&i)===i){let r=this._Levels[i];n[r.name]=n._LogEnabled.bind(n,i)}}};ee.NoneLogLevel=0;ee.MessageLogLevel=1;ee.WarningLogLevel=2;ee.ErrorLogLevel=4;ee.AllLogLevel=7;ee.MessageLimitReached="Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.";ee._LogCache="";ee._LogLimitOutputs={};ee._Levels=[{},{color:"white",logFunc:console.log,name:"Log"},{color:"orange",logFunc:console.warn,name:"Warn"},{},{color:"red",logFunc:console.error,name:"Error"}];ee.errorsCount=0;ee.Log=ee._LogEnabled.bind(ee,ee.MessageLogLevel);ee.Warn=ee._LogEnabled.bind(ee,ee.WarningLogLevel);ee.Error=ee._LogEnabled.bind(ee,ee.ErrorLogLevel)});var x,k=I(()=>{x=class n{static GetShadersRepository(e=0){return e===0?n.ShadersRepository:n.ShadersRepositoryWGSL}static GetShadersStore(e=0){return e===0?n.ShadersStore:n.ShadersStoreWGSL}static GetIncludesShadersStore(e=0){return e===0?n.IncludesShadersStore:n.IncludesShadersStoreWGSL}};x.ShadersRepository="src/Shaders/";x.ShadersStore={};x.IncludesShadersStore={};x.ShadersRepositoryWGSL="src/ShadersWGSL/";x.ShadersStoreWGSL={};x.IncludesShadersStoreWGSL={}});function Er(){return typeof window!="undefined"}function ec(){return typeof navigator!="undefined"}function Rf(){return typeof document!="undefined"}function LA(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var Oa=I(()=>{});var OA,MU=I(()=>{OA=class{constructor(){this._valueCache={},this.vertexCompilationError=null,this.fragmentCompilationError=null,this.programLinkError=null,this.programValidationError=null,this._isDisposed=!1}get isAsync(){return this.isParallelCompiled}get isReady(){return this.program?this.isParallelCompiled?this.engine._isRenderingStateCompiled(this):!0:!1}_handlesSpectorRebuildCallback(e){e&&this.program&&e(this.program)}setEngine(e){this.engine=e}_fillEffectInformation(e,t,i,r,s,a,o,l){let c=this.engine;if(c.supportsUniformBuffers)for(let h in t)e.bindUniformBlock(h,t[h]);this.engine.getUniforms(this,i).forEach((h,u)=>{r[i[u]]=h}),this._uniforms=r;let d;for(d=0;d{a[h]=u});for(let h of c.getAttributes(this,o))l.push(h)}dispose(){this._uniforms={},this._isDisposed=!0}_cacheMatrix(e,t){let i=this._valueCache[e],r=t.updateFlag;return i!==void 0&&i===r?!1:(this._valueCache[e]=r,!0)}_cacheFloat2(e,t,i){let r=this._valueCache[e];if(!r||r.length!==2)return r=[t,i],this._valueCache[e]=r,!0;let s=!1;return r[0]!==t&&(r[0]=t,s=!0),r[1]!==i&&(r[1]=i,s=!0),s}_cacheFloat3(e,t,i,r){let s=this._valueCache[e];if(!s||s.length!==3)return s=[t,i,r],this._valueCache[e]=s,!0;let a=!1;return s[0]!==t&&(s[0]=t,a=!0),s[1]!==i&&(s[1]=i,a=!0),s[2]!==r&&(s[2]=r,a=!0),a}_cacheFloat4(e,t,i,r,s){let a=this._valueCache[e];if(!a||a.length!==4)return a=[t,i,r,s],this._valueCache[e]=a,!0;let o=!1;return a[0]!==t&&(a[0]=t,o=!0),a[1]!==i&&(a[1]=i,o=!0),a[2]!==r&&(a[2]=r,o=!0),a[3]!==s&&(a[3]=s,o=!0),o}setInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setIntArray(e,t){this._valueCache[e]=null,this.engine.setIntArray(this._uniforms[e],t)}setIntArray2(e,t){this._valueCache[e]=null,this.engine.setIntArray2(this._uniforms[e],t)}setIntArray3(e,t){this._valueCache[e]=null,this.engine.setIntArray3(this._uniforms[e],t)}setIntArray4(e,t){this._valueCache[e]=null,this.engine.setIntArray4(this._uniforms[e],t)}setUInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setUInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setUInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setUInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setUInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setUInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setUInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setUInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setUIntArray(e,t){this._valueCache[e]=null,this.engine.setUIntArray(this._uniforms[e],t)}setUIntArray2(e,t){this._valueCache[e]=null,this.engine.setUIntArray2(this._uniforms[e],t)}setUIntArray3(e,t){this._valueCache[e]=null,this.engine.setUIntArray3(this._uniforms[e],t)}setUIntArray4(e,t){this._valueCache[e]=null,this.engine.setUIntArray4(this._uniforms[e],t)}setArray(e,t){this._valueCache[e]=null,this.engine.setArray(this._uniforms[e],t)}setArray2(e,t){this._valueCache[e]=null,this.engine.setArray2(this._uniforms[e],t)}setArray3(e,t){this._valueCache[e]=null,this.engine.setArray3(this._uniforms[e],t)}setArray4(e,t){this._valueCache[e]=null,this.engine.setArray4(this._uniforms[e],t)}setMatrices(e,t){t&&(this._valueCache[e]=null,this.engine.setMatrices(this._uniforms[e],t))}setMatrix(e,t){this._cacheMatrix(e,t)&&(this.engine.setMatrices(this._uniforms[e],t.asArray())||(this._valueCache[e]=null))}setMatrix3x3(e,t){this._valueCache[e]=null,this.engine.setMatrix3x3(this._uniforms[e],t)}setMatrix2x2(e,t){this._valueCache[e]=null,this.engine.setMatrix2x2(this._uniforms[e],t)}setFloat(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setFloat(this._uniforms[e],t)&&(this._valueCache[e]=t)}setVector2(e,t){this._cacheFloat2(e,t.x,t.y)&&(this.engine.setFloat2(this._uniforms[e],t.x,t.y)||(this._valueCache[e]=null))}setFloat2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setFloat2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setVector3(e,t){this._cacheFloat3(e,t.x,t.y,t.z)&&(this.engine.setFloat3(this._uniforms[e],t.x,t.y,t.z)||(this._valueCache[e]=null))}setFloat3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setFloat3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setVector4(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setQuaternion(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setFloat4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setFloat4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setColor3(e,t){this._cacheFloat3(e,t.r,t.g,t.b)&&(this.engine.setFloat3(this._uniforms[e],t.r,t.g,t.b)||(this._valueCache[e]=null))}setColor4(e,t,i){this._cacheFloat4(e,t.r,t.g,t.b,i)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,i)||(this._valueCache[e]=null))}setDirectColor4(e,t){this._cacheFloat4(e,t.r,t.g,t.b,t.a)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,t.a)||(this._valueCache[e]=null))}_getVertexShaderCode(){return this.vertexShader?this.engine._getShaderSource(this.vertexShader):null}_getFragmentShaderCode(){return this.fragmentShader?this.engine._getShaderSource(this.fragmentShader):null}}});function Qe(n,e=!1){if(!(e&&IU[n]))return IU[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var IU,Sn=I(()=>{IU={}});function NA(n,e,t=""){return t+(e?e+` -`:"")+n}function wA(n,e,t,i,r,s,a){let o=a||Em.loadFile;if(o)return o(n,e,t,i,r,s);throw Qe("FileTools")}function FA(n,e,t,i){if(n){e?n.IS_NDC_HALF_ZRANGE="":delete n.IS_NDC_HALF_ZRANGE,t?n.USE_REVERSE_DEPTHBUFFER="":delete n.USE_REVERSE_DEPTHBUFFER,i?n.USE_EXACT_SRGB_CONVERSIONS="":delete n.USE_EXACT_SRGB_CONVERSIONS;return}else{let r="";return e&&(r+="#define IS_NDC_HALF_ZRANGE"),t&&(r&&(r+=` +`),r=[];for(let o=0,l=i.length;o=7?(BT.setRGB(parseFloat(d[4]),parseFloat(d[5]),parseFloat(d[6]),Oi),t.colors.push(BT.r,BT.g,BT.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(d[1]),parseFloat(d[2]),parseFloat(d[3]));break;case"vt":t.uvs.push(parseFloat(d[1]),parseFloat(d[2]));break}}else if(f==="f"){let h=c.slice(1).trim().split(a2),u=[];for(let _=0,p=h.length;_0){let v=g.split("/");u.push(v)}}let m=u[0];for(let _=1,p=u.length-1;_1){let h=r[1].trim().toLowerCase();t.object.smooth=h!=="0"&&h!=="off"}else t.object.smooth=!0;let d=t.object.currentMaterial();d&&(d.smooth=t.object.smooth)}else{if(c==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+c+'"')}}t.finalize();let s=new sa;if(s.materialLibraries=[].concat(t.materialLibraries),!(t.objects.length===1&&t.objects[0].geometry.vertices.length===0)===!0)for(let o=0,l=t.objects.length;o0&&_.setAttribute("normal",new hi(f.normals,3)),f.colors.length>0&&(m=!0,_.setAttribute("color",new hi(f.colors,3))),f.hasUVIndices===!0&&_.setAttribute("uv",new hi(f.uvs,2));let p=[];for(let v=0,T=d.length;v1){for(let v=0,T=d.length;v0){let o=new Cs({size:1,sizeAttenuation:!1}),l=new Qi;l.setAttribute("position",new hi(t.vertices,3)),t.colors.length>0&&t.colors[0]!==void 0&&(l.setAttribute("color",new hi(t.colors,3)),o.vertexColors=!0);let c=new Ps(l,o);s.add(c)}return s}}});var Bs,VT,Sy,d2=I(()=>{us();Bs=new ht,VT=class extends vn{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(p,g=0){let v=/^ply([\s\S]*)end_header(\r\n|\r|\n)/,T="",S=v.exec(p);S!==null&&(T=S[1]);let E={comments:[],elements:[],headerLength:g,objInfo:""},A=T.split(/\r\n|\r|\n/),R;function M(y,C){let D={type:y[0]};return D.type==="list"?(D.name=y[3],D.countType=y[1],D.itemType=y[2]):D.name=y[1],D.name in C&&(D.name=C[D.name]),D}for(let y=0;yT.name);function v(T){for(let S=0,E=T.length;S0&&g.setIndex(p.indices),g.setAttribute("position",new hi(p.vertices,3)),p.normals.length>0&&g.setAttribute("normal",new hi(p.normals,3)),p.uvs.length>0&&g.setAttribute("uv",new hi(p.uvs,2)),p.colors.length>0&&g.setAttribute("color",new hi(p.colors,3)),(p.faceVertexUvs.length>0||p.faceVertexColors.length>0)&&(g=g.toNonIndexed(),p.faceVertexUvs.length>0&&g.setAttribute("uv",new hi(p.faceVertexUvs,2)),p.faceVertexColors.length>0&&g.setAttribute("color",new hi(p.faceVertexColors,3)));for(let v of Object.keys(_.customPropertyMapping))p[v].length>0&&g.setAttribute(v,new hi(p[v],_.customPropertyMapping[v].length));return g.computeBoundingSphere(),g}function c(p,g,v,T){if(g==="vertex"){p.vertices.push(v[T.attrX],v[T.attrY],v[T.attrZ]),T.attrNX!==null&&T.attrNY!==null&&T.attrNZ!==null&&p.normals.push(v[T.attrNX],v[T.attrNY],v[T.attrNZ]),T.attrS!==null&&T.attrT!==null&&p.uvs.push(v[T.attrS],v[T.attrT]),T.attrR!==null&&T.attrG!==null&&T.attrB!==null&&(Bs.setRGB(v[T.attrR]/255,v[T.attrG]/255,v[T.attrB]/255,Oi),p.colors.push(Bs.r,Bs.g,Bs.b));for(let S of Object.keys(_.customPropertyMapping))for(let E of _.customPropertyMapping[S])p[S].push(v[E])}else if(g==="face"){let S=v.vertex_indices||v.vertex_index,E=v.texcoord;S.length===3?(p.indices.push(S[0],S[1],S[2]),E&&E.length===6&&(p.faceVertexUvs.push(E[0],E[1]),p.faceVertexUvs.push(E[2],E[3]),p.faceVertexUvs.push(E[4],E[5]))):S.length===4&&(p.indices.push(S[0],S[1],S[3]),p.indices.push(S[1],S[2],S[3])),T.attrR!==null&&T.attrG!==null&&T.attrB!==null&&(Bs.setRGB(v[T.attrR]/255,v[T.attrG]/255,v[T.attrB]/255,Oi),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b),p.faceVertexColors.push(Bs.r,Bs.g,Bs.b))}}function f(p,g){let v={},T=0;for(let S=0;SS.getInt8(R),size:1};case"uint8":case"uchar":return{read:R=>S.getUint8(R),size:1};case"int16":case"short":return{read:R=>S.getInt16(R,A),size:2};case"uint16":case"ushort":return{read:R=>S.getUint16(R,A),size:2};case"int32":case"int":return{read:R=>S.getInt32(R,A),size:4};case"uint32":case"uint":return{read:R=>S.getUint32(R,A),size:4};case"float32":case"float":return{read:R=>S.getFloat32(R,A),size:4};case"float64":case"double":return{read:R=>S.getFloat64(R,A),size:8}}}for(let S=0,E=p.length;S=this.arr.length}next(){return this.arr[this.i++]}}});var GT,h2=I(()=>{us();GT=class extends vn{constructor(e){super(e)}load(e,t,i,r){let s=this,a=new Os(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(o){try{t(s.parse(o))}catch(l){r?r(l):console.error(l),s.manager.itemError(e)}},i,r)}parse(e){function t(c){let f=new DataView(c),d=32/8*3+32/8*3*3+16/8,h=f.getUint32(80,!0);if(80+32/8+h*d===f.byteLength)return!0;let m=[115,111,108,105,100];for(let _=0;_<5;_++)if(i(m,f,_))return!1;return!0}function i(c,f,d){for(let h=0,u=c.length;h>5&31)/31,m=(B>>10&31)/31):(h=g,u=v,m=T)}for(let B=1;B<=3;B++){let V=w+B*12,Q=D*3*3+(B-1)*3;M[Q]=f.getFloat32(V,!0),M[Q+1]=f.getFloat32(V+4,!0),M[Q+2]=f.getFloat32(V+8,!0),y[Q]=G,y[Q+1]=O,y[Q+2]=N,_&&(C.setRGB(h,u,m,Oi),p[Q]=C.r,p[Q+1]=C.g,p[Q+2]=C.b)}}return R.setAttribute("position",new vr(M,3)),R.setAttribute("normal",new vr(y,3)),_&&(R.setAttribute("color",new vr(p,3)),R.hasColors=!0,R.alpha=S),R}function s(c){let f=new Qi,d=/solid([\s\S]*?)endsolid/g,h=/facet([\s\S]*?)endfacet/g,u=/solid\s(.+)/,m=0,_=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,p=new RegExp("vertex"+_+_+_,"g"),g=new RegExp("normal"+_+_+_,"g"),v=[],T=[],S=[],E=new re,A,R=0,M=0,y=0;for(;(A=d.exec(c))!==null;){M=y;let C=A[0],D=(A=u.exec(C))!==null?A[1]:"";for(S.push(D);(A=h.exec(C))!==null;){let O=0,N=0,B=A[0];for(;(A=g.exec(B))!==null;)E.x=parseFloat(A[1]),E.y=parseFloat(A[2]),E.z=parseFloat(A[3]),N++;for(;(A=p.exec(B))!==null;)v.push(parseFloat(A[1]),parseFloat(A[2]),parseFloat(A[3])),T.push(E.x,E.y,E.z),O++,y++;N!==1&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+m),O!==3&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+m),m++}let w=M,G=y-M;f.userData.groupNames=S,f.addGroup(w,G,R),R++}return f.setAttribute("position",new hi(v,3)),f.setAttribute("normal",new hi(T,3)),f}function a(c){return typeof c!="string"?new TextDecoder().decode(c):c}function o(c){if(typeof c=="string"){let f=new Uint8Array(c.length);for(let d=0;d{us()});function m2(n){let e=new Map,t=new Map,i=n.clone();return p2(n,i,function(r,s){e.set(s,r),t.set(r,s)}),i.traverse(function(r){if(!r.isSkinnedMesh)return;let s=r,a=e.get(r),o=a.skeleton.bones;s.skeleton=a.skeleton.clone(),s.bindMatrix.copy(a.bindMatrix),s.skeleton.bones=o.map(function(l){return t.get(l)}),s.bind(s.skeleton,s.bindMatrix)}),i}function p2(n,e,t){t(n,e);for(let i=0;i{});function Uae(){let n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}function Hr(n,e,t){let i=n.json.materials[e];return i.extensions&&i.extensions[t]?i.extensions[t]:null}function kae(n){return n.DefaultMaterial===void 0&&(n.DefaultMaterial=new bn({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:aa})),n.DefaultMaterial}function qd(n,e,t){for(let i in t.extensions)n[i]===void 0&&(e.userData.gltfExtensions=e.userData.gltfExtensions||{},e.userData.gltfExtensions[i]=t.extensions[i])}function ll(n,e){e.extras!==void 0&&(typeof e.extras=="object"?Object.assign(n.userData,e.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+e.extras))}function Wae(n,e,t){let i=!1,r=!1,s=!1;for(let c=0,f=e.length;c0||n.search(/^data\:image\/jpeg/)===0?"image/jpeg":n.search(/\.webp($|\?)/i)>0||n.search(/^data\:image\/webp/)===0?"image/webp":n.search(/\.ktx2($|\?)/i)>0||n.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}function Kae(n,e,t){let i=e.attributes,r=new kr;if(i.POSITION!==void 0){let o=t.json.accessors[i.POSITION],l=o.min,c=o.max;if(l!==void 0&&c!==void 0){if(r.set(new re(l[0],l[1],l[2]),new re(c[0],c[1],c[2])),o.normalized){let f=jy(nm[o.componentType]);r.min.multiplyScalar(f),r.max.multiplyScalar(f)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;let s=e.targets;if(s!==void 0){let o=new re,l=new re;for(let c=0,f=s.length;c{us();u2();_2();gg=class extends vn{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(t){return new yy(t)}),this.register(function(t){return new Cy(t)}),this.register(function(t){return new Uy(t)}),this.register(function(t){return new Vy(t)}),this.register(function(t){return new Gy(t)}),this.register(function(t){return new Dy(t)}),this.register(function(t){return new Ly(t)}),this.register(function(t){return new Oy(t)}),this.register(function(t){return new Ny(t)}),this.register(function(t){return new Iy(t)}),this.register(function(t){return new wy(t)}),this.register(function(t){return new Py(t)}),this.register(function(t){return new By(t)}),this.register(function(t){return new Fy(t)}),this.register(function(t){return new by(t)}),this.register(function(t){return new kT(t,xi.EXT_MESHOPT_COMPRESSION)}),this.register(function(t){return new kT(t,xi.KHR_MESHOPT_COMPRESSION)}),this.register(function(t){return new ky(t)})}load(e,t,i,r){let s=this,a;if(this.resourcePath!=="")a=this.resourcePath;else if(this.path!==""){let c=ho.extractUrlBase(e);a=ho.resolveURL(c,this.path)}else a=ho.extractUrlBase(e);this.manager.itemStart(e);let o=function(c){r?r(c):console.error(c),s.manager.itemError(e),s.manager.itemEnd(e)},l=new Os(this.manager);l.setPath(this.path),l.setResponseType("arraybuffer"),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(e,function(c){try{s.parse(c,a,function(f){t(f),s.manager.itemEnd(e)},o)}catch(f){o(f)}},i,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,i,r){let s,a={},o={},l=new TextDecoder;if(typeof e=="string")s=JSON.parse(e);else if(e instanceof ArrayBuffer)if(l.decode(new Uint8Array(e,0,4))===T2){try{a[xi.KHR_BINARY_GLTF]=new Wy(e)}catch(d){r&&r(d);return}s=JSON.parse(a[xi.KHR_BINARY_GLTF].content)}else s=JSON.parse(l.decode(e));else s=e;if(s.asset===void 0||s.asset.version[0]<2){r&&r(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let c=new Zy(s,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let f=0;f=0&&o[d]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+d+'".')}}c.setExtensions(a),c.setPlugins(o),c.parse(i,r)}parseAsync(e,t){let i=this;return new Promise(function(r,s){i.parse(e,t,r,s)})}};xi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",KHR_MESHOPT_COMPRESSION:"KHR_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},by=class{constructor(e){this.parser=e,this.name=xi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,s.source,a)}},Vy=class{constructor(e){this.parser=e,this.name=xi.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},Gy=class{constructor(e){this.parser=e,this.name=xi.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,i=this.parser,r=i.json,s=r.textures[e];if(!s.extensions||!s.extensions[t])return null;let a=s.extensions[t],o=r.images[a.source],l=i.textureLoader;if(o.uri){let c=i.options.manager.getHandler(o.uri);c!==null&&(l=c)}return i.loadTextureImage(e,a.source,l)}},kT=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let r=i.extensions[this.name],s=this.parser.getDependency("buffer",r.buffer),a=this.parser.options.meshoptDecoder;if(!a||!a.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return s.then(function(o){let l=r.byteOffset||0,c=r.byteLength||0,f=r.count,d=r.byteStride,h=new Uint8Array(o,l,c);return a.decodeGltfBufferAsync?a.decodeGltfBufferAsync(f,d,h,r.mode,r.filter).then(function(u){return u.buffer}):a.ready.then(function(){let u=new ArrayBuffer(f*d);return a.decodeGltfBuffer(new Uint8Array(u),f,d,h,r.mode,r.filter),u})})}else return null}},ky=class{constructor(e){this.name=xi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||i.mesh===void 0)return null;let r=t.meshes[i.mesh];for(let c of r.primitives)if(c.mode!==Da.TRIANGLES&&c.mode!==Da.TRIANGLE_STRIP&&c.mode!==Da.TRIANGLE_FAN&&c.mode!==void 0)return null;let a=i.extensions[this.name].attributes,o=[],l={};for(let c in a)o.push(this.parser.getDependency("accessor",a[c]).then(f=>(l[c]=f,l[c])));return o.length<1?null:(o.push(this.parser.createNodeMesh(e)),Promise.all(o).then(c=>{let f=c.pop(),d=f.isGroup?f.children:[f],h=c[0].count,u=[];for(let m of d){let _=new li,p=new re,g=new nn,v=new re(1,1,1),T=new kd(m.geometry,m.material,h);for(let S=0;S-1,a=s?o.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap=="undefined"||i&&r<17||s&&a<98?this.textureLoader=new Xd(this.options.manager):this.textureLoader=new $_(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Os(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,s=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(a){return a._markDefs&&a._markDefs()}),Promise.all(this._invokeAll(function(a){return a.beforeRoot&&a.beforeRoot()})).then(function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(a){let o={scene:a[0][r.scene||0],scenes:a[0],animations:a[1],cameras:a[2],asset:r.asset,parser:i,userData:{}};return qd(s,o,r),ll(o,r),Promise.all(i._invokeAll(function(l){return l.afterRoot&&l.afterRoot(o)})).then(function(){for(let l of o.scenes)l.updateMatrixWorld();e(o)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let r=0,s=t.length;r{let l=this.associations.get(a);l!=null&&this.associations.set(o,l);for(let[c,f]of a.children.entries())s(f,o.children[c])};return s(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&p.setY(y,A[R*l+1]),l>=3&&p.setZ(y,A[R*l+2]),l>=4&&p.setW(y,A[R*l+3]),l>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}p.normalized=m}return p})}loadTexture(e){let t=this.json,i=this.options,s=t.textures[e].source,a=t.images[s],o=this.textureLoader;if(a.uri){let l=i.manager.getHandler(a.uri);l!==null&&(o=l)}return this.loadTextureImage(e,s,o)}loadTextureImage(e,t,i){let r=this,s=this.json,a=s.textures[e],o=s.images[t],l=(o.uri||o.bufferView)+":"+a.sampler;if(this.textureCache[l])return this.textureCache[l];let c=this.loadImageSource(t,i).then(function(f){f.flipY=!1,f.name=a.name||o.name||"",f.name===""&&typeof o.uri=="string"&&o.uri.startsWith("data:image/")===!1&&(f.name=o.uri);let h=(s.samplers||{})[a.sampler]||{};return f.magFilter=v2[h.magFilter]||Gr,f.minFilter=v2[h.minFilter]||uo,f.wrapS=E2[h.wrapS]||Zo,f.wrapT=E2[h.wrapT]||Zo,f.generateMipmaps=!f.isCompressedTexture&&f.minFilter!==Vr&&f.minFilter!==Gr,r.associations.set(f,{textures:e}),f}).catch(function(){return null});return this.textureCache[l]=c,c}loadImageSource(e,t){let i=this,r=this.json,s=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(d=>d.clone());let a=r.images[e],o=self.URL||self.webkitURL,l=a.uri||"",c=!1;if(a.bufferView!==void 0)l=i.getDependency("bufferView",a.bufferView).then(function(d){c=!0;let h=new Blob([d],{type:a.mimeType});return l=o.createObjectURL(h),l});else if(a.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let f=Promise.resolve(l).then(function(d){return new Promise(function(h,u){let m=h;t.isImageBitmapLoader===!0&&(m=function(_){let p=new Pr(_);p.needsUpdate=!0,h(p)}),t.load(ho.resolveURL(d,s.path),m,void 0,u)})}).then(function(d){return c===!0&&o.revokeObjectURL(l),ll(d,a),d.userData.mimeType=a.mimeType||Xae(a.uri),d}).catch(function(d){throw console.error("THREE.GLTFLoader: Couldn't load texture",l),d});return this.sourceCache[e]=f,f}assignTexture(e,t,i,r){let s=this;return this.getDependency("texture",i.index).then(function(a){if(!a)return null;if(i.texCoord!==void 0&&i.texCoord>0&&(a=a.clone(),a.channel=i.texCoord),s.extensions[xi.KHR_TEXTURE_TRANSFORM]){let o=i.extensions!==void 0?i.extensions[xi.KHR_TEXTURE_TRANSFORM]:void 0;if(o){let l=s.associations.get(a);a=s.extensions[xi.KHR_TEXTURE_TRANSFORM].extendTexture(a,o),s.associations.set(a,l)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=t.attributes.tangent===void 0,s=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let o="PointsMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Cs,Wr.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,l.sizeAttenuation=!1,this.cache.add(o,l)),i=l}else if(e.isLine){let o="LineBasicMaterial:"+i.uuid,l=this.cache.get(o);l||(l=new Vn,Wr.prototype.copy.call(l,i),l.color.copy(i.color),l.map=i.map,this.cache.add(o,l)),i=l}if(r||s||a){let o="ClonedMaterial:"+i.uuid+":";r&&(o+="derivative-tangents:"),s&&(o+="vertex-colors:"),a&&(o+="flat-shading:");let l=this.cache.get(o);l||(l=i.clone(),s&&(l.vertexColors=!0),a&&(l.flatShading=!0),r&&(l.normalScale&&(l.normalScale.y*=-1),l.clearcoatNormalScale&&(l.clearcoatNormalScale.y*=-1)),this.cache.add(o,l),this.associations.set(l,this.associations.get(i))),i=l}e.material=i}getMaterialType(){return bn}loadMaterial(e){let t=this,i=this.json,r=this.extensions,s=i.materials[e],a,o={},l=s.extensions||{},c=[];if(l[xi.KHR_MATERIALS_UNLIT]){let d=r[xi.KHR_MATERIALS_UNLIT];a=d.getMaterialType(),c.push(d.extendParams(o,s,t))}else{let d=s.pbrMetallicRoughness||{};if(o.color=new ht(1,1,1),o.opacity=1,Array.isArray(d.baseColorFactor)){let h=d.baseColorFactor;o.color.setRGB(h[0],h[1],h[2],fs),o.opacity=h[3]}d.baseColorTexture!==void 0&&c.push(t.assignTexture(o,"map",d.baseColorTexture,Oi)),o.metalness=d.metallicFactor!==void 0?d.metallicFactor:1,o.roughness=d.roughnessFactor!==void 0?d.roughnessFactor:1,d.metallicRoughnessTexture!==void 0&&(c.push(t.assignTexture(o,"metalnessMap",d.metallicRoughnessTexture)),c.push(t.assignTexture(o,"roughnessMap",d.metallicRoughnessTexture))),a=this._invokeOne(function(h){return h.getMaterialType&&h.getMaterialType(e)}),c.push(Promise.all(this._invokeAll(function(h){return h.extendMaterialParams&&h.extendMaterialParams(e,o)})))}s.doubleSided===!0&&(o.side=Ca);let f=s.alphaMode||xy.OPAQUE;if(f===xy.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,f===xy.MASK&&(o.alphaTest=s.alphaCutoff!==void 0?s.alphaCutoff:.5)),s.normalTexture!==void 0&&a!==ds&&(c.push(t.assignTexture(o,"normalMap",s.normalTexture)),o.normalScale=new It(1,1),s.normalTexture.scale!==void 0)){let d=s.normalTexture.scale;o.normalScale.set(d,d)}if(s.occlusionTexture!==void 0&&a!==ds&&(c.push(t.assignTexture(o,"aoMap",s.occlusionTexture)),s.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=s.occlusionTexture.strength)),s.emissiveFactor!==void 0&&a!==ds){let d=s.emissiveFactor;o.emissive=new ht().setRGB(d[0],d[1],d[2],fs)}return s.emissiveTexture!==void 0&&a!==ds&&c.push(t.assignTexture(o,"emissiveMap",s.emissiveTexture,Oi)),Promise.all(c).then(function(){let d=new a(o);return s.name&&(d.name=s.name),ll(d,s),t.associations.set(d,{materials:e}),s.extensions&&qd(r,d,s),d})}createUniqueName(e){let t=ar.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function s(o){return i[xi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(o,t).then(function(l){return S2(l,o,t)})}let a=[];for(let o=0,l=e.length;o0&&Hae(g,s),g.name=t.createUniqueName(s.name||"mesh_"+e),ll(g,s),p.extensions&&qd(r,g,p),t.assignFinalMaterial(g),d.push(g)}for(let u=0,m=d.length;u0){let u=f.userData.pivot,m=d[0];f.pivot=new re().fromArray(u),f.position.x-=u[0],f.position.y-=u[1],f.position.z-=u[2],m.position.set(0,0,0),delete f.userData.pivot}return f})}_loadNodeShallow(e){let t=this.json,i=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let s=t.nodes[e],a=s.name?r.createUniqueName(s.name):"",o=[],l=r._invokeOne(function(c){return c.createNodeMesh&&c.createNodeMesh(e)});return l&&o.push(l),s.camera!==void 0&&o.push(r.getDependency("camera",s.camera).then(function(c){return r._getNodeRef(r.cameraCache,s.camera,c)})),r._invokeAll(function(c){return c.createNodeAttachment&&c.createNodeAttachment(e)}).forEach(function(c){o.push(c)}),this.nodeCache[e]=Promise.all(o).then(function(c){let f;if(s.isBone===!0?f=new Uu:c.length>1?f=new sa:c.length===1?f=c[0]:f=new er,f!==c[0])for(let d=0,h=c.length;d1){let d=r.associations.get(f);r.associations.set(f,{...d})}return r.associations.get(f).nodes=e,f}),this.nodeCache[e]}loadScene(e){let t=this.extensions,i=this.json.scenes[e],r=this,s=new sa;i.name&&(s.name=r.createUniqueName(i.name)),ll(s,i),i.extensions&&qd(t,s,i);let a=i.nodes||[],o=[];for(let l=0,c=a.length;l{let d=new Map;for(let[h,u]of r.associations)(h instanceof Wr||h instanceof Pr)&&d.set(h,u);return f.traverse(h=>{let u=r.associations.get(h);u!=null&&d.set(h,u)}),d};return r.associations=c(s),s})}_createAnimationTracks(e,t,i,r,s){let a=[],o=e.name?e.name:e.uuid,l=[];function c(u){u.morphTargetInfluences&&l.push(u.name?u.name:u.uuid)}vf[s.path]===vf.weights?(c(e),e.isGroup&&e.children.forEach(c)):l.push(o);let f;switch(vf[s.path]){case vf.weights:f=el;break;case vf.rotation:f=tl;break;case vf.translation:case vf.scale:f=il;break;default:i.itemSize===1?f=el:f=il;break}let d=r.interpolation!==void 0?Gae[r.interpolation]:Bd,h=this._getArrayFromAccessor(i);for(let u=0,m=l.length;ups,X_OK:()=>eC,access:()=>ms,execFile:()=>ha,getRuntimeProcess:()=>sm,mkdir:()=>kn,osTmpdir:()=>eh,pathBasename:()=>Hn,pathDelimiter:()=>tC,pathDirname:()=>Wn,pathExtname:()=>zn,pathIsAbsolute:()=>Xn,pathJoin:()=>zi,pathNormalize:()=>zT,readFile:()=>da,rm:()=>$d,stat:()=>Jd,writeFile:()=>Qd});function R2(){return typeof activeWindow=="undefined"?void 0:activeWindow}function jae(){let n=R2();if(!(!n||!("require"in n)))return n.require}function sm(){let n=R2();if(!(!n||!("process"in n)))return n.process}function HT(n){let e=jae();if(!e)return null;try{return e(n)}catch(t){return null}}function am(){return qy===void 0&&(qy=HT("node:fs/promises")),qy}function om(){return Qy===void 0&&(Qy=HT("node:path")),Qy}function Zae(){return $y===void 0&&($y=HT("node:child_process")),$y}function qae(){return Jy===void 0&&(Jy=HT("node:os")),Jy}function Us(n,e){if(n===null)throw new Error(`${e} is not available in this environment (mobile or web).`);return n}function ms(n,e){return Us(am(),"node:fs/promises").access(n,e)}function da(n,e){return Us(am(),"node:fs/promises").readFile(n,e)}function Qd(n,e,t){return Us(am(),"node:fs/promises").writeFile(n,e,{encoding:t})}function kn(n,e){return Us(am(),"node:fs/promises").mkdir(n,e)}function $d(n,e){return Us(am(),"node:fs/promises").rm(n,e)}function Jd(n){return Us(am(),"node:fs/promises").stat(n)}function zi(...n){return Us(om(),"node:path").join(...n)}function Wn(n){return Us(om(),"node:path").dirname(n)}function Hn(n,e){return Us(om(),"node:path").basename(n,e)}function zn(n){return Us(om(),"node:path").extname(n)}function zT(n){return Us(om(),"node:path").normalize(n)}function Xn(n){return Us(om(),"node:path").isAbsolute(n)}function ha(n,e,t,i){Us(Zae(),"node:child_process").execFile(n,e,t,i)}function eh(){return Us(qae(),"node:os").tmpdir()}var qy,Qy,$y,Jy,ps,eC,x2,tC,rr=I(()=>{"use strict";ps=0,eC=1;tC=((x2=sm())==null?void 0:x2.platform)==="win32"?";":":"});function iC(n){return n.replace(/\\/g,"/")}function KT(n){let e=iC(n),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function b2(n){try{return decodeURIComponent(n)}catch(e){return n}}function In(n,e){var i;let t=b2((i=e.split(/[?#]/,1)[0])!=null?i:e);return KT(n?`${n}/${t}`:t)}function M2(n,e){return In(n.vault.configDir,e)}function vg(n){let e=iC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function Vs(n){let e=iC(n).replace(/\/+$/,""),t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function ln(n){return Vs(n).replace(/\.[^.]+$/,"")}async function Qae(n,e){let t=KT(e);if(!t)return null;let i=t.split("/"),r="",s=n.vault.getRoot().children;for(let a of i){let o=s.find(c=>c.name===a),l=o!=null?o:s.find(c=>c.name.toLowerCase()===a.toLowerCase());if(!l)return null;if(r=r?`${r}/${l.name}`:l.name,l instanceof lm.TFile)return r;if(!(l instanceof lm.TFolder))return null;s=l.children}return null}function $ae(n){return n.byteOffset===0&&n.byteLength===n.buffer.byteLength?n.buffer:n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength)}function Jae(){let n=new Error("File read aborted");return n.name="AbortError",n}function YT(n){if(n!=null&&n.aborted)throw n.reason instanceof Error?n.reason:Jae()}function eoe(n){let e=n.vault.adapter;return typeof e.getBasePath=="function"?e.getBasePath():typeof e.basePath=="string"&&e.basePath.length>0?e.basePath:null}function Ef(n,e){var r,s;let t=n.vault.getAbstractFileByPath(e);if(t)return t.path;let i=(s=(r=n.metadataCache)==null?void 0:r.getFirstLinkpathDest)==null?void 0:s.call(r,e,"");return i?i.path:null}function $l(n,e){if(Xn(e))return zT(e);let t=eoe(n);return t?zT(zi(t,e)):null}async function po(n,e,t={}){if(YT(t.signal),Xn(e)){let a=await da(e,t.signal?{signal:t.signal}:void 0);return YT(t.signal),$ae(a)}let i=KT(b2(e)),r=n.vault.getAbstractFileByPath(i);if(!(r instanceof lm.TFile)){let a=await Qae(n,i);if(a){let o=n.vault.getAbstractFileByPath(a);if(o instanceof lm.TFile){let l=await n.vault.readBinary(o);return YT(t.signal),l}}throw new Error(`File not found: ${i}`)}let s=await n.vault.readBinary(r);return YT(t.signal),s}var lm,_s=I(()=>{"use strict";lm=require("obsidian");rr();rr()});function th(n){let e=new Uint8Array(n),t=32768,i=[];for(let r=0;r{"use strict"});function ioe(n){return toe.has(n)}function I2(n,e){let t=Number.isFinite(n)&&n>0?Math.floor(n):1;return e==="low"?1:e==="medium"?Math.min(t,4):t}function ZT(n,e){let t=n,i={textureCount:0,colorTextureCount:0,srgbColorTextureCount:0};for(let[r,s]of Object.entries(t))s instanceof Pr&&(i.textureCount++,s.anisotropy=Math.max(s.anisotropy,e),ioe(r)&&(i.colorTextureCount++,s.colorSpace=Oi,i.srgbColorTextureCount++),s.needsUpdate=!0);return n.needsUpdate=!0,i}function rC(n){n.boundingBox||n.computeBoundingBox();let e=n.boundingBox;if(!e)return .02;let t=e.getSize(new re),i=Math.max(t.x,t.y,t.z);return!Number.isFinite(i)||i<=0?.02:Math.min(Math.max(i/180,5e-4),.05)}var toe,nC=I(()=>{"use strict";us();toe=new Set(["map","emissiveMap","specularMap","specularColorMap","sheenColorMap","clearcoatColorMap"])});function roe(n){var e,t;return n?((e=n.signal)==null?void 0:e.aborted)===!0||((t=n.isCurrent)==null?void 0:t.call(n))===!1:!1}function gi(n){if(roe(n))throw new qT}function Sf(n){return n instanceof qT||n instanceof Error&&n.name==="AbortError"}var qT,Eg=I(()=>{"use strict";qT=class extends Error{constructor(e="Preview load interrupted"){super(e),this.name="PreviewLoadInterruptedError"}}});function C2(n){var t,i,r;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return(r=noe[e])!=null?r:`image/${e}`}function ooe(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function sC(n){return In("",n)}function QT(n,e,t){e&&n.set(sC(e),t)}function loe(n,e,t,i,r){let s=ooe(t);QT(n,s,r),QT(n,In("",s),r),QT(n,i,r),e&&QT(n,`${e}/${s}`,r)}function coe(n){var i,r;let e=new Map,t=(s,a)=>{var c;if(!s||s.startsWith("data:"))return;let o=sC(s);if(!o)return;let l=e.get(o);if(l){l.aliases.push(s),(c=l.mimeType)!=null||(l.mimeType=a);return}e.set(o,{uri:s,mimeType:a,aliases:[s]})};for(let s of(i=n.buffers)!=null?i:[])t(s.uri,"application/octet-stream");for(let s of(r=n.images)!=null?r:[])t(s.uri);return[...e.values()]}async function foe(n,e,t,i){let r=0,s=Math.max(1,Math.min(e,n.length));await Promise.all(Array.from({length:s},async()=>{for(;r{var d;gi(i);let c=await moe(n,e,l.uri);gi(i);let f=URL.createObjectURL(new Blob([c.data],{type:(d=l.mimeType)!=null?d:C2(c.path)}));s.push(f);for(let h of l.aliases)loe(r,e,h,c.path,f)};try{await foe(coe(t),aoe,o,i)}catch(l){for(let c of s)URL.revokeObjectURL(c);throw l}return a.setURLModifier(l=>{var f,d;let c=sC(l);return(d=(f=r.get(c))!=null?f:r.get(In("",c)))!=null?d:l}),{manager:a,dispose:()=>{for(let l of s)URL.revokeObjectURL(l)}}}function hoe(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function uoe(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}async function moe(n,e,t){let i=In(e,t);try{return{data:await n(i),path:i}}catch(r){throw new Error(`Missing external model resource: ${i}`)}}function poe(n,e,t){let i=Vs(e),r=i.replace(/\.[^.]+$/,""),s=ln(t),a=[In(n,e),In(n,i)];if(s)for(let o of y2)a.push(In(n,`${s}.${o}`));for(let o of y2){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}async function P2(n,e,t,i,r){var c,f;let s=[];if(gi(r),e==="gltf"&&t&&i){let d=new TextDecoder().decode(new Uint8Array(n)),h=JSON.parse(d),u=vg(i),m=await doe(t,u,h,r);gi(r);let _=new gg(m.manager);try{gi(r);let p=await _.parseAsync(n,u?`${u}/`:""),g=p.scene||((c=p.scenes)==null?void 0:c[0]);if(!g)throw new Error("GLTF did not contain a scene");return{scene:g,animations:p.animations,warnings:s}}finally{m.dispose()}}gi(r);let o=await new gg().parseAsync(n,""),l=o.scene||((f=o.scenes)==null?void 0:f[0]);if(!l)throw new Error("GLB did not contain a scene");return{scene:l,animations:o.animations,warnings:s}}async function D2(n){let t=new GT().parse(n),i=t.hasAttribute("color")?new bn({color:16777215,vertexColors:!0}):new bn({color:13421772}),r=new ci(t,i);return r.name=Vs("")||"stl-model",r}async function L2(n){let t=new VT().parse(n),i=!!t.index||t.hasAttribute("normal");if(t.hasAttribute("color")){if(i){t.hasAttribute("normal")||t.computeVertexNormals();let a=new bn({vertexColors:!0});return new ci(t,a)}let s=new Cs({size:rC(t),vertexColors:!0});return new Ps(t,s)}if(i){t.hasAttribute("normal")||t.computeVertexNormals();let s=new bn({color:13421772});return new ci(t,s)}let r=new Cs({size:rC(t),color:13421772});return new Ps(t,r)}function _oe(n){return n?Array.isArray(n)?n:[n]:[]}function goe(n){n.traverse(e=>{if(!(e instanceof ci))return;let t=e;for(let i of _oe(t.material))ZT(i,1)})}async function O2(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n)),r=[],s=null,a=i.match(/mtllib\s+(.+)/);if(a&&e&&t){let c=hoe(a[1]),f=vg(t),d=In(f,c);try{let h=await e(d),m=new TextDecoder().decode(new Uint8Array(h)).split(` +`),_=new Map;for(let S=0;SS!=="");if(!p.some(S=>/^\s*Kd\s+/i.test(S))){let S=p.findIndex(E=>/^\s*newmtl\s+/i.test(E));p.splice(S>=0?S+1:0,0,"Kd 0.80 0.80 0.80")}let T=new FT().parse(p.join(` +`),f?`${f}/`:"");T.preload(),s=T}catch(h){r.push(`OBJ material library not found: ${d}`)}}else a&&(!e||!t)&&r.push("OBJ material library could not be resolved without a model path.");let o=new UT;s&&o.setMaterials(s);let l=o.parse(i);return goe(l),{object:l,warnings:r}}var noe,y2,soe,aoe,N2=I(()=>{"use strict";s2();f2();d2();h2();A2();us();_s();jT();nC();Eg();noe={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",tga:"image/x-tga",webp:"image/webp",tif:"image/tiff",tiff:"image/tiff"},y2=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],soe=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,aoe=4});function xr(){return w2.Platform.isMobile}var w2,ua=I(()=>{"use strict";w2=require("obsidian")});function cl(n){let e=activeDocument.createElement("div");return n&&(e.className=n),e}function ih(n,e){let t=activeDocument.createElement(n);return e&&(t.className=e),t}var cm=I(()=>{"use strict"});function Jt(n){return{x:n.x,y:n.y,z:n.z}}function cn(n){return{x:n.x,y:n.y,z:n.z}}function fm(n,e){return{x:n.x-e.x,y:n.y-e.y,z:n.z-e.z}}function Sg(n,e){return{x:n.x*e,y:n.y*e,z:n.z*e}}function U2(n,e){let t=fm(n,e);return Math.hypot(t.x,t.y,t.z)}function aC(n){let e=Math.hypot(n.x,n.y,n.z);return e<=Number.EPSILON?null:Sg(n,1/e)}function rh(n,e){return{x:n.x+e.x,y:n.y+e.y,z:n.z+e.z}}function F2(n,e){return n.x*e.x+n.y*e.y+n.z*e.z}function V2(n,e,t){return{x:e==="x"?n.x+t:n.x,y:e==="y"?n.y+t:n.y,z:e==="z"?n.z+t:n.z}}function G2(n){return Math.max(n*.01,.01)}function Tf(n,e,t=G2(e)){return n{"use strict"});function xf(n,e){return{min:cn(n),max:cn(e)}}function nh(n,e){return n?{min:{x:Math.min(n.min.x,e.min.x),y:Math.min(n.min.y,e.min.y),z:Math.min(n.min.z,e.min.z)},max:{x:Math.max(n.max.x,e.max.x),y:Math.max(n.max.y,e.max.y),z:Math.max(n.max.z,e.max.z)}}:xf(e.min,e.max)}function tr(n){return fm(n.max,n.min)}function Rr(n){return rh(n.min,Sg(tr(n),.5))}function k2(n){return U2(n.min,n.max)}function Tg(n){return k2(n)/2}function W2(n){let e=tr(n);return Math.max(e.x,e.y,e.z)}function oC(n){let e=tr(n),t=k2(n);return{center:rh(n.min,Sg(e,.5)),size:e,diagonalLength:t,radius:t/2,maxSpan:Math.max(e.x,e.y,e.z)}}var fl=I(()=>{"use strict";Gs()});function lC(n,e,t={}){var s,a,o,l,c;let i=Math.max(e,Number.EPSILON),r=(s=t.radiusMultiplier)!=null?s:2.5;return{target:cn(n),radius:i*r,lowerRadiusLimit:i*((a=t.lowerRadiusFactor)!=null?a:.05),upperRadiusLimit:i*((o=t.upperRadiusFactor)!=null?o:10),near:i*((l=t.nearFactor)!=null?l:.001),far:i*((c=t.farFactor)!=null?c:20)}}function iA(n,e={}){let t=oC(n);return lC(t.center,t.radius,e)}function H2(n,e={}){var o,l,c,f,d,h;let t=oC(n),i=Math.max(t.maxSpan,t.radius,Number.EPSILON),r=i*((o=e.distanceMultiplier)!=null?o:1.8),s=Math.max((l=e.minNear)!=null?l:Math.max(i/1e4,1e-5),i/((c=e.nearDivisor)!=null?c:1e3)),a=Math.max((d=e.minFar)!=null?d:Math.max(i*((f=e.farMultiplier)!=null?f:20),1),r+t.radius*4);return{target:cn(t.center),position:rh(t.center,{x:r,y:r*((h=e.elevationFactor)!=null?h:.65),z:r}),near:s,far:a}}var rA=I(()=>{"use strict";fl();Gs()});function Ui(n){return n.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}var nA=I(()=>{"use strict"});function sA(n){var s;let e=new Set,t=0,i=0;for(let a of n.meshes){t+=a.triangleCount,i+=a.vertexCount;for(let o of(s=a.materialKeys)!=null?s:[])o!=null&&e.add(o)}let r=Soe({triangleCount:t,splatCount:n.splatCount,meshCount:n.meshes.length,materialCount:e.size});return{meshCount:n.meshes.length,triangleCount:t,splatCount:n.splatCount,vertexCount:i,materialCount:e.size,performanceTier:r,performanceHint:Toe(r,{triangleCount:t,splatCount:n.splatCount,materialCount:e.size}),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:void 0,boundingSize:cn(n.boundingSize),rootName:n.rootName}}function Soe(n){var e,t,i;return((e=n.splatCount)!=null?e:0)>=15e5||n.triangleCount>=12e5||n.materialCount>=96||n.meshCount>=240?"extreme":((t=n.splatCount)!=null?t:0)>=65e4||n.triangleCount>=45e4||n.materialCount>=48||n.meshCount>=120?"heavy":((i=n.splatCount)!=null?i:0)>=18e4||n.triangleCount>=12e4||n.materialCount>=18||n.meshCount>=48?"medium":"light"}function Toe(n,e){var r;let t=((r=e.splatCount)!=null?r:e.triangleCount).toLocaleString(),i=e.splatCount!==void 0?"splats":"triangles";return n==="extreme"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Expect automatic quality throttling while interacting.`:n==="heavy"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Interaction may lower shadows and resolution temporarily.`:n==="medium"?`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance should be steady on most desktop GPUs.`:`${t} ${i}, ${e.materialCount.toLocaleString()} materials. Performance tier: light.`}function Jl(n){var e;return{name:n.name,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:(e=n.materialName)!=null?e:null,boundingSize:cn(n.boundingSize),center:cn(n.center),source:n.source,meshNames:n.meshNames?[...n.meshNames]:void 0,childCount:n.childCount,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath}}function z2(n){return n.splatCount!==void 0?"Splats":"Triangles"}function X2(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}var aA=I(()=>{"use strict";Gs()});function hm(n,e="-"){if(typeof n!="string")return e;let t=n.trim();return t.length>0?t:e}function Aoe(n){return n?n==="detail-cluster"?"Detail cluster":n.charAt(0).toUpperCase()+n.slice(1):null}function xoe(n){var r,s,a,o;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(s=(r=n.sourceFormat)!=null?r:n.effectiveFormat)!=null?s:"unknown",t=(a=n.effectiveFormat)!=null?a:e,i=(o=n.loadStrategy)!=null?o:e!==t?"convert":"direct";return`${e.toUpperCase()}${t!==e?` -> ${t.toUpperCase()}`:""} (${i})`}function Roe(n,e=8){if(!(n!=null&&n.length))return null;let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i} more`:t}function Y2(n,e={}){var r,s;let t=(r=e.countLabel)!=null?r:z2(n),i=(s=e.decimals)!=null?s:3;return[`| Meshes | ${n.meshCount} |`,`| ${t} | ${X2(n).toLocaleString()} |`,`| Vertices | ${n.vertexCount.toLocaleString()} |`,`| Materials | ${n.materialCount} |`,...n.performanceTier?[`| Performance Tier | ${n.performanceTier} |`]:[],`| Bounding Size | ${cC(n.boundingSize,{decimals:i})} |`]}function _o(n){return Ui(n).replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function cC(n,e={}){var r,s;let t=(r=e.decimals)!=null?r:3,i=(s=e.separator)!=null?s:" x ";return`${n.x.toFixed(t)}${i}${n.y.toFixed(t)}${i}${n.z.toFixed(t)}`}function K2(n,e={}){return["| Metric | Value |","|--------|-------|",...Y2(n,e)]}function boe(n,e,t={}){return["| Property | Value |","|----------|-------|",`| Format | ${n} |`,...Y2(e,t)]}function oA(n){var r,s;let e=[];e.push(`## ${n.title} - Model Info`),e.push(""),e.push(...boe(n.format,n.summary,{countLabel:n.countLabel})),e.push("");let t=(r=n.meshBreakdown)!=null?r:[];t.length>1&&t.length<=50&&(e.push("### Mesh Breakdown"),e.push(""),e.push("| # | Name | Triangles | Vertices | Material |"),e.push("|---|------|-----------|----------|----------|"),t.forEach((a,o)=>{let l=a.triangleCount===null?"-":a.triangleCount.toLocaleString();e.push(`| ${o+1} | ${_o(hm(a.name,`mesh-${o+1}`))} | ${l} | ${a.vertexCount.toLocaleString()} | ${_o(hm(a.materialName))} |`)}),e.push(""));let i=Array.from((s=n.materialNames)!=null?s:[]).map(a=>hm(a,"")).filter(a=>a.length>0);if(i.length>0){let a=Array.from(new Set(i));e.push("### Materials"),e.push("");for(let o of a)e.push(`- ${Ui(o)}`);e.push("")}return e.join(` +`)}function lA(n,e={}){var o;let t=Ui(hm((o=e.title)!=null?o:n.name,"Selected Part")),i=[];i.push(`## ${t} - Part Info`),i.push(""),i.push("| Property | Value |"),i.push("|----------|-------|"),i.push(`| Mesh | ${_o(hm(n.name))} |`);let r=Aoe(n.source);r&&i.push(`| Source | ${_o(r)} |`),n.childCount!==void 0&&n.childCount>1&&i.push(`| Child Meshes | ${n.childCount.toLocaleString()} |`),n.componentId&&i.push(`| Component ID | ${_o(n.componentId)} |`),n.occurrenceId&&i.push(`| Occurrence ID | ${_o(n.occurrenceId)} |`),n.partNumber&&i.push(`| Part Number | ${_o(n.partNumber)} |`),n.componentPath&&i.push(`| Component Path | ${_o(n.componentPath)} |`);let s=xoe(n);s&&i.push(`| Format Lineage | ${_o(s)} |`),i.push(`| Triangles | ${n.triangleCount.toLocaleString()} |`),i.push(`| Vertices | ${n.vertexCount.toLocaleString()} |`),i.push(`| Material | ${_o(hm(n.materialName))} |`),i.push(`| Bounding Size | ${cC(n.boundingSize)} |`),i.push(`| Center | ${cC(n.center,{separator:", "})} |`);let a=Roe(n.meshNames);return a&&n.childCount!==1&&i.push(`| Mesh Refs | ${_o(a)} |`),i.push(""),i.join(` +`)}var cA=I(()=>{"use strict";nA();aA()});function fA(n){return{canvas:n.canvas,observeRender:n.observeRender,getCameraStateKey:n.getCameraStateKey,projectWorldPoint:n.projectWorldPoint,isWorldPointOccluded:n.isWorldPointOccluded}}function dA(n){return n.map(e=>e.value.toFixed(e.digits)).join("_")}function j2(n){return Number.isFinite(n.x)&&Number.isFinite(n.y)&&Number.isFinite(n.z)}function Z2(n,e,t){return!j2(n)||e.clientWidth===0||e.clientHeight===0?!1:(t.screenX=(n.x+1)/2*e.clientWidth,t.screenY=(1-n.y)/2*e.clientHeight,t.depth=(n.z+1)/2,!0)}function q2(n,e,t,i,r){return!j2(n)||e===0||t===0||i.clientWidth===0||i.clientHeight===0?!1:(r.screenX=n.x*(i.clientWidth/e),r.screenY=n.y*(i.clientHeight/t),r.depth=n.z,!0)}var fC=I(()=>{"use strict"});function sh(n){var e;return n.size===0?null:n.size===1?(e=Array.from(n)[0])!=null?e:null:`${n.size} materials`}function Moe(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function Ioe(n){return Math.max(n.boundingSize.x,n.boundingSize.y,n.boundingSize.z)}function yoe(n){let e=n.trim().toLowerCase();return/^(mesh|node|object|primitive|points|pointcloud|geometry)[-_\s.]?\d+$/i.test(e)||/^(mesh|node|object|primitive|points|pointcloud|geometry)$/i.test(e)}function Coe(n){let e={x:n.boundingSize.x/2,y:n.boundingSize.y/2,z:n.boundingSize.z/2};return{min:{x:n.center.x-e.x,y:n.center.y-e.y,z:n.center.z-e.z},max:{x:n.center.x+e.x,y:n.center.y+e.y,z:n.center.z+e.z}}}function Poe(n,e){if(n.source&&n.source!=="mesh"||!Number.isFinite(e)||e<=0||!yoe(n.name))return!1;let t=Moe(n);return Number.isFinite(t)&&t>0&&t<=e*.04}function Doe(n){var o;let e=null,t=0,i=0,r=new Set,s=[];for(let l of n)e=nh(e,Coe(l)),t+=l.triangleCount,i+=l.vertexCount,l.materialName&&r.add(l.materialName),s.push(...(o=l.meshNames)!=null&&o.length?l.meshNames:[l.name]);let a=e!=null?e:{min:{x:0,y:0,z:0},max:{x:0,y:0,z:0}};return{name:"Small detail cluster",triangleCount:t,vertexCount:i,materialName:sh(r),boundingSize:tr(a),center:Rr(a),source:"detail-cluster",meshNames:s,childCount:n.length}}function Loe(n,e,t){let i=Ioe(n),r=t.filter(o=>Poe(o,i));if(r.length<2)return e.length>0?[...e,...t]:[...t];let s=new Set(r),a=t.filter(o=>!s.has(o));return[...e,Doe(r),...a]}function hA(n){var e;return{summary:n.summary,parts:Ooe(n),materialNames:Noe(n.renderableMeshes,n.getMeshMaterialNames),resourceWarnings:n.resourceWarnings?[...n.resourceWarnings]:[],capturedAt:(e=n.capturedAt)!=null?e:new Date().toISOString()}}function Ooe(n){let e=n.renderableMeshes.filter(t=>!n.groupedPartCandidates.groupedMeshes.has(t)).map(t=>n.createMeshPart(t));return Loe(n.summary,n.groupedPartCandidates.parts,e)}function Noe(n,e){let t=new Set;for(let i of n)for(let r of e(i))r&&t.add(r);return Array.from(t).sort((i,r)=>i.localeCompare(r))}var Ag=I(()=>{"use strict";fl()});function uA(n){switch(n){case"\xB5m":case"\u03BCm":return"um";case"um":case"mm":case"cm":case"m":return n;default:return"mm"}}function Rg(n){return{x:Number.isFinite(n.x)&&n.x>0?n.x:1,y:Number.isFinite(n.y)&&n.y>0?n.y:1,z:Number.isFinite(n.z)&&n.z>0?n.z:1}}function mA(n,e,t,i){let r=Rg(t),s={x:(e.x-n.x)*r.x,y:(e.y-n.y)*r.y,z:(e.z-n.z)*r.z},a={x:Math.abs(s.x),y:Math.abs(s.y),z:Math.abs(s.z)};return{distance:Math.sqrt(s.x*s.x+s.y*s.y+s.z*s.z),delta:s,absDelta:a,unit:i}}function xg(n,e){return n.toFixed(e).replace(/\.?0+$/,"")}function Foe(n,e){if(n===0)return e;let t=Math.abs(n)*uC[e];return t<.001?"um":t<.1?"mm":t<1?"cm":"m"}function $2(n){return n==="um"?"um":woe[n]}function ah(n,e,t=!0){let i=t?Foe(n,e):e,r=n*uC[e]/uC[i],s=Math.abs(r),a=s>=100?1:s>=10?2:3;return`${xg(r,a)} ${$2(i)}`}function hC(n){let e=Math.abs(n),t=e>=100?1:e>=10?2:3;return xg(e,t)}function um(n){return{primary:ah(n.distance,n.unit),secondary:[`X ${hC(n.absDelta.x)}`,`Y ${hC(n.absDelta.y)}`,`Z ${hC(n.absDelta.z)}`,$2(n.unit)].join(" ")}}function pA(n,e,t=640,i=160){n.clearRect(0,0,t,i);let r=t/2,s=i/2-10,a=i/2+20;n.textAlign="center",n.textBaseline="middle",n.lineJoin="round",n.lineWidth=4,n.strokeStyle=dC.labelOutline,n.fillStyle=dC.labelText,n.font="650 28px system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",n.strokeText(e.primary,r,s,t-120),n.fillText(e.primary,r,s,t-120),n.lineWidth=3,n.fillStyle=dC.labelSecondary,n.font="500 14px system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",n.strokeText(e.secondary,r,a,t-160),n.fillText(e.secondary,r,a,t-160)}function _A(n){if(n.length===0)return"";let e=["## Measurements","","| # | Distance | Delta X | Delta Y | Delta Z | Start | End |","|---|----------|---------|---------|---------|-------|-----|"];for(let t of n){let i=t.reading.unit,r=Q2(t.start),s=Q2(t.end);e.push([t.index,ah(t.reading.distance,i),ah(t.reading.absDelta.x,i,!1),ah(t.reading.absDelta.y,i,!1),ah(t.reading.absDelta.z,i,!1),r,s].join(" | ").replace(/^/,"| ").replace(/$/," |"))}return e.join(` +`)}function Q2(n){return`${xg(n.x,3)}, ${xg(n.y,3)}, ${xg(n.z,3)}`}var dC,uC,woe,gA=I(()=>{"use strict";dC={line:"#8ab4f8",marker:"#e2e8f0",pending:"#f59e0b",hover:"#f8fafc",preview:"#cbd5e1",labelText:"#f8fafc",labelSecondary:"rgba(226, 232, 240, 0.58)",labelOutline:"rgba(0, 0, 0, 0.45)"},uC={um:1e-6,mm:.001,cm:.01,m:1},woe={um:"\u03BCm",mm:"mm",cm:"cm",m:"m"}});function Boe(n){let e=typeof activeWindow=="undefined"?window:activeWindow;return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(n):e.setTimeout(()=>n(e.performance.now()),16)}function Uoe(n){let e=typeof activeWindow=="undefined"?window:activeWindow;if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(n);return}e.clearTimeout(n)}function EA(n){return new mC(n)}var vA,mC,pC=I(()=>{"use strict";vA=class vA{constructor(e){this.originals=new Map;this.unsubscribe=null;this.active=!1;this.drag=null;this.pendingDrag=null;this.selected=null;this.activePointerId=null;this.frameCount=0;this.pendingDragEvent=null;this.dragUpdateFrame=null;this.adapter=e}isEnabled(){return this.active}setEnabled(e){var t,i,r;return this.active===e?this.active:(this.active=e,this.finishDrag(),this.setSelected(null),this.activePointerId=null,e?this.unsubscribe=this.adapter.subscribe({onPointerDown:(s,a)=>this.handlePointerDown(s,a),onPointerMove:s=>this.handlePointerMove(s),onPointerUp:s=>this.handlePointerUp(s),onRender:()=>this.handleRender()}):((t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null),(r=(i=this.adapter).requestRender)==null||r.call(i),this.active)}toggle(){return this.setEnabled(!this.active)}reset(){var e,t;this.finishDrag(),this.setSelected(null);for(let{part:i,transform:r}of this.originals.values())this.adapter.isDisposed(i)||this.adapter.restoreTransform(i,r);this.activePointerId=null,(t=(e=this.adapter).requestRender)==null||t.call(e)}dispose(){this.setEnabled(!1),this.originals.clear()}handlePointerDown(e,t){if(t.button!==0||t.isPrimary===!1)return;let i=this.adapter.resolvePart(e);if(!i){this.drag=null,this.pendingDrag=null,this.activePointerId=null,this.setSelected(null);return}this.activePointerId=t.pointerId,this.setSelected(i),this.pendingDrag={part:i,event:t,x:t.clientX,y:t.clientY}}handlePointerMove(e){if(!(this.activePointerId!==null&&e.pointerId!==this.activePointerId)){if(!this.drag&&this.pendingDrag){if(e.pointerType==="mouse"&&(e.buttons&1)===0){this.pendingDrag=null,this.activePointerId=null;return}if(Math.hypot(e.clientX-this.pendingDrag.x,e.clientY-this.pendingDrag.y){this.dragUpdateFrame=null,this.flushDragUpdate()}))}flushDragUpdate(){this.dragUpdateFrame!==null&&(Uoe(this.dragUpdateFrame),this.dragUpdateFrame=null);let e=this.pendingDragEvent;this.pendingDragEvent=null,!(!this.drag||!e)&&this.adapter.updateDrag(this.drag,e)}setSelected(e){this.selected=e,this.frameCount=0,this.adapter.setSelected(e)}captureOriginalTransform(e){let t=this.adapter.getPartId(e);this.originals.has(t)||this.originals.set(t,{part:e,transform:this.adapter.captureTransform(e)})}};vA.DRAG_START_DISTANCE=4;mC=vA});function Xoe(n){return!!n&&typeof n=="object"&&!Array.isArray(n)}function SA(n){return n.toLowerCase().replace(/[^a-z0-9]+/g,"")}function Yoe(n){if(typeof n=="string"){let e=n.trim();return e.length>0?e:void 0}if(typeof n=="number"&&Number.isFinite(n))return String(n)}function J2(n,e=0){if(!Xoe(n)||e>2)return[];let t=[];for(let i of zoe)for(let[r,s]of Object.entries(n))SA(r)===SA(i)&&t.push(...J2(s,e+1));return t.push(n),t}function bg(n,e){let t=new Set(e.map(SA));for(let i of n)for(let[r,s]of Object.entries(i)){if(!t.has(SA(r)))continue;let a=Yoe(s);if(a)return a}}function ma(n,e={}){var c,f;let t=J2(n),i=bg(t,Voe),r=bg(t,Goe),s=bg(t,koe),a=(c=bg(t,Hoe))!=null?c:e.path,o=(f=bg(t,Woe))!=null?f:e.name;return{componentId:i,occurrenceId:r,partNumber:s,componentPath:a,displayName:o,hasExplicitIdentity:!!(i||r||s)}}var Voe,Goe,koe,Woe,Hoe,zoe,_C=I(()=>{"use strict";Voe=["ai3dPartId","partId","componentId","componentIdentifier","cadId","persistentId","externalId","id"],Goe=["ai3dOccurrenceId","occurrenceId","instanceId","occurrencePath","assemblyPath","pathId"],koe=["ai3dPartNumber","partNumber","partNo","partNum","swPartNumber","solidworksPartNumber","part_number"],Woe=["displayName","partName","componentName","cadName","name"],Hoe=["componentPath","cadPath","assemblyPath","occurrencePath"],zoe=["ai3d","cad","solidworks","sw","metadata","properties","extras","gltf","userData"]});function La(n){return n instanceof ci}function Mg(n){return n instanceof Ps}function pm(n){return La(n)||Mg(n)}function ks(n){return n?Array.isArray(n)?n:[n]:[]}function Ig(n){var r,s,a,o;if(Mg(n))return 0;let e=n.geometry,t=(s=(r=e.getIndex())==null?void 0:r.count)!=null?s:0;if(t>0)return Math.floor(t/3);let i=(o=(a=e.getAttribute("position"))==null?void 0:a.count)!=null?o:0;return Math.floor(i/3)}function _m(n){var e,t;return(t=(e=n.geometry.getAttribute("position"))==null?void 0:e.count)!=null?t:0}function gm(n){return n?n.name||n.type||`material-${n.uuid}`:null}function go(n,e){var i;let t=(i=n.userData)==null?void 0:i.name;return typeof t=="string"&&t.trim().length>0?t:n.name||e}function mm(n,e){let t=[],i=e;for(;i&&i!==n;)t.push(go(i,i.type||`object-${i.id}`)),i=i.parent;return t.reverse().join("/")}function En(n){let e=new kr().setFromObject(n);return xf(Jt(e.min),Jt(e.max))}function eU(n){let e=new Map;for(let t of n)t.updateWorldMatrix(!0,!1),e.set(t,En(t));return e}function tU(n){return ks(n.material).map(e=>gm(e))}function iU(n){return{name:go(n,Mg(n)?`points-${n.id}`:`mesh-${n.id}`),triangleCount:Mg(n)?null:Ig(n),vertexCount:_m(n),materialName:gm(ks(n.material)[0])}}function Koe(n,e,t){var a;n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:En(n),r=go(n,`mesh-${n.id}`),s=ma(n.userData,{name:r,path:e?mm(e,n):r});return Jl({name:xA(s,r),triangleCount:Ig(n),vertexCount:_m(n),materialName:gm(ks(n.material)[0]),boundingSize:tr(i),center:Rr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function gC(n,e,t){var a;if(La(n))return Koe(n,e,t);n.updateWorldMatrix(!0,!1);let i=(a=t==null?void 0:t.get(n))!=null?a:En(n),r=go(n,`points-${n.id}`),s=ma(n.userData,{name:r,path:e?mm(e,n):r});return Jl({name:xA(s,r),triangleCount:0,vertexCount:_m(n),materialName:gm(ks(n.material)[0]),boundingSize:tr(i),center:Rr(i),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[r],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function joe(n,e){let t=[];return n.traverse(i=>{La(i)&&e.has(i)&&t.push(i)}),t}function vm(n,e){let t=new Map;for(let i of e){let r=i.parent;for(;r&&r!==n;){let s=t.get(r);s||(s=[],t.set(r,s)),s.push(i),r=r.parent}}return t}function rU(n,e,t){var i;return(i=t==null?void 0:t.get(n))!=null?i:joe(n,e)}function Zoe(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component)[-_\s.]?\d*$/i.test(e)||e==="__root__"}function qoe(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function nU(n,e,t,i,r){var m;if(pm(n))return gC(n,e,r);n.updateWorldMatrix(!0,!0);let s=new Set(t!=null?t:[]);s.size===0&&n.traverse(_=>{La(_)&&s.add(_)});let a=rU(n,s,i),o=null,l=new Set,c=0,f=0;for(let _ of a){_.updateWorldMatrix(!0,!1),o=nh(o,(m=r==null?void 0:r.get(_))!=null?m:En(_)),c+=Ig(_),f+=_m(_);for(let p of ks(_.material)){let g=gm(p);g&&l.add(g)}}a.length===0&&(o=En(n));let d=o!=null?o:xf({x:0,y:0,z:0},{x:0,y:0,z:0}),h=go(n,`group-${n.id}`),u=ma(n.userData,{name:h,path:e?mm(e,n):h});return Jl({name:xA(u,h),triangleCount:c,vertexCount:f,materialName:sh(l),boundingSize:tr(d),center:Rr(d),source:u.hasExplicitIdentity?"component":"group",meshNames:a.map(_=>go(_,`mesh-${_.id}`)),childCount:a.length,componentId:u.componentId,occurrenceId:u.occurrenceId,partNumber:u.partNumber,componentPath:u.componentPath})}function TA(n,e,t,i){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=rU(o,r,i);if(f.length>0&&f.length1&&h.trim()&&!Zoe(h)&&(s=o)}o=o.parent}return(c=s!=null?s:a)!=null?c:e}function sU(n,e,t=vm(n,e),i){let r=[],s=new Set,a=[];return n.updateWorldMatrix(!0,!0),n.traverse(o=>{var f;if(o===n||La(o))return;let l=(f=t.get(o))!=null?f:[];if(l.length<2||l.length===e.length){let d=ma(o.userData,{name:go(o,`component-${o.id}`),path:mm(n,o)});if(!d.hasExplicitIdentity||l.length<1||l.length===e.length)return;a.push({object:o,childMeshes:l,identity:d});return}let c=ma(o.userData,{name:go(o,`group-${o.id}`),path:mm(n,o)});!c.hasExplicitIdentity&&!o.name.trim()||a.push({object:o,childMeshes:l,identity:c})}),a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({object:o,childMeshes:l,identity:c})=>{var p;let f=l.filter(g=>!s.has(g));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let g of f)s.add(g);let d=null;for(let g of f)g.updateWorldMatrix(!0,!1),d=nh(d,(p=i==null?void 0:i.get(g))!=null?p:En(g));let h=new Set,u=0,m=0;for(let g of f){u+=Ig(g),m+=_m(g);for(let v of ks(g.material)){let T=gm(v);T&&h.add(T)}}let _=d!=null?d:xf({x:0,y:0,z:0},{x:0,y:0,z:0});r.push(Jl({name:xA(c,go(o,`group-${o.id}`)),triangleCount:u,vertexCount:m,materialName:sh(h),boundingSize:tr(_),center:Rr(_),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(g=>go(g,`mesh-${g.id}`)),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function AA(n,e,t=[],i){return sA({rootName:n.name||"__root__",boundingSize:tr(i!=null?i:En(n)),meshes:e.map(r=>({triangleCount:Ig(r),vertexCount:_m(r),materialKeys:ks(r.material).map(s=>s.uuid)})),resourceWarnings:t})}function aU(n,e,t,i){var f;if(!n)return{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null};let r=tr(t!=null?t:En(n)),s=Math.max(r.x,r.y,r.z),a=Math.max(s*.04,Number.EPSILON),o=0,l=0,c=Number.POSITIVE_INFINITY;for(let d of e){Mg(d)&&o++;let h=tr((f=i==null?void 0:i.get(d))!=null?f:En(d)),u=Math.max(h.x,h.y,h.z);Number.isFinite(u)&&u>0&&(c=Math.min(c,u),La(d)&&u<=a&&u0?Number(s.toPrecision(6)):null}}function xA(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var vC=I(()=>{"use strict";us();fl();_C();Ag();Gs();aA()});function Qoe(n){return!!n&&typeof n=="object"&&"object"in n&&"meshes"in n}function $oe(n,e,t=vm(n,e)){let i=new Map;for(let r of e){let s=TA(n,r,e,t),a=i.get(s);a||(a={id:s.id,object:s,meshes:[]},i.set(s,a)),a.meshes.push(r)}return Array.from(i.values())}function Joe(n,e){var t;n.updateMatrixWorld(!0),(t=e.parent)==null||t.updateMatrixWorld(!0),e.updateMatrixWorld(!0),n.attach(e),e.updateMatrixWorld(!0)}function lU(n,e,t,i,r,s,a,o){return EA(new EC(n,e,t,i,r,s,a,o))}var oU,ele,EC,cU=I(()=>{"use strict";us();Gs();pC();vC();oU=new ht(4890367),ele=new ht(1722990),EC=class{constructor(e,t,i,r,s,a,o,l=vm(r,s)){this.meshToPart=new Map;this.raycaster=new df;this.pointer=new It;this.tempBox=new kr;this.tempCenter=new re;this.tempDirection=new re;this.tempCameraForward=new re;this.tempCameraRight=new re;this.tempCameraUp=new re;this.tempDragOffset=new re;this.tempNextPosition=new re;this.tempHelperDelta=new re;this.partCenterCache=new Map;this.selectionHelper=null;this.lastOccluded=!1;this.selected=null;this.lastPointerDown=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.canvas=i,this.meshes=s,this.parts=$oe(r,s,l);for(let c of this.parts)for(let f of c.meshes)this.meshToPart.set(f.id,c);this.controls=a,this.invalidate=o}requestRender(){this.invalidate()}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return!e.object.parent&&!this.scene.children.includes(e.object)}captureTransform(e){return{parent:e.object.parent,position:e.object.position.clone(),quaternion:e.object.quaternion.clone(),scale:e.object.scale.clone()}}restoreTransform(e,t){t.parent?t.parent.add(e.object):this.scene.add(e.object),e.object.position.copy(t.position),e.object.quaternion.copy(t.quaternion),e.object.scale.copy(t.scale),e.object.updateMatrixWorld(!0),this.invalidatePartCenter(e),this.requestRender()}subscribe(e){this.canvas.classList.add("ai3d-disassembly-active");let t=s=>{var o,l;if(s.button!==0||s.isPrimary===!1)return;this.lastPointerDown={x:s.clientX,y:s.clientY};let a=this.resolvePickTarget(s);if(this.partPointerActive=!!a,this.partPointerActive){s.preventDefault(),s.stopPropagation(),this.controls.enabled=!1,this.activePointerId=s.pointerId;try{(l=(o=this.canvas).setPointerCapture)==null||l.call(o,s.pointerId)}catch(c){}}e.onPointerDown(a,s)},i=s=>{this.activePointerId!==null&&s.pointerId!==this.activePointerId||(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),e.onPointerMove(s))},r=s=>{var a,o;if(!(this.activePointerId!==null&&s.pointerId!==this.activePointerId)){if(this.partPointerActive&&(s.preventDefault(),s.stopPropagation()),this.lastPointerDown=null,e.onPointerUp(s),this.partPointerActive=!1,this.activePointerId!==null&&((o=(a=this.canvas).hasPointerCapture)!=null&&o.call(a,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(l){}this.activePointerId=null,this.controls.enabled=!0}};return this.canvas.addEventListener("pointerdown",t),window.addEventListener("pointermove",i),window.addEventListener("pointerup",r),()=>{var s,a;if(this.canvas.removeEventListener("pointerdown",t),window.removeEventListener("pointermove",i),window.removeEventListener("pointerup",r),this.canvas.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.partPointerActive=!1,this.activePointerId!==null&&((a=(s=this.canvas).hasPointerCapture)!=null&&a.call(s,this.activePointerId)))try{this.canvas.releasePointerCapture(this.activePointerId)}catch(o){}this.activePointerId=null,this.controls.enabled=!0}}resolvePart(e){var t;return Qoe(e)?this.parts.includes(e)?e:null:e&&(t=this.meshToPart.get(e.id))!=null?t:null}setSelected(e){var t;(t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=null,this.selected=e,this.lastOccluded=!1,e&&!this.isDisposed(e)&&(this.selectionHelper=new ql(e.object,oU),this.scene.add(this.selectionHelper)),this.requestRender()}beginDrag(e,t){let i=this.getPartWorldCenter(e,this.tempCenter).clone(),r=this.getPointOnDragPlane(i,t);if(!r)return null;t.preventDefault(),t.stopPropagation(),Joe(this.scene,e.object),this.canvas.classList.add("ai3d-disassembly-dragging");let s="move";t.shiftKey&&(s="rotate");let a=this.tempCameraForward;this.camera.getWorldDirection(a);let o=dm(Jt(r),Jt(a));return o?(this.controls.enabled=!1,this.requestRender(),{part:e,mode:s,plane:o,startPoint:r.clone(),startPosition:e.object.position.clone(),startQuaternion:e.object.quaternion.clone(),pivot:i,pointerX:t.clientX,pointerY:t.clientY}):null}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=this.tempDragOffset.copy(i).sub(e.startPoint),s=this.tempNextPosition.copy(e.startPosition).add(r),a=this.tempHelperDelta.copy(s).sub(e.part.object.position);e.part.object.position.copy(s),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),this.translateSelectionHelper(a),this.requestRender()}endDrag(e){var t;this.controls.enabled=!0,this.canvas.classList.remove("ai3d-disassembly-dragging"),(t=this.selectionHelper)==null||t.update(),this.requestRender()}updateSelectionOcclusion(e){let t=this.getPartWorldCenter(e,this.tempCenter),i=this.camera.position,r=Af(Jt(i),Jt(t));if(!r)return;let s=this.tempDirection.set(r.direction.x,r.direction.y,r.direction.z);this.raycaster.set(i,s),this.raycaster.far=r.distance;let a=this.raycaster.intersectObjects(this.meshes,!1)[0],o=!!a&&Tf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.selectionHelper&&(this.selectionHelper.material.color.set(o?ele:oU),this.requestRender()))}updateRotation(e,t){var c;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=this.tempCameraForward;this.camera.getWorldDirection(s);let a=this.tempCameraUp.copy(this.camera.up).normalize(),o=this.tempCameraRight.crossVectors(a,s).normalize(),l=tA({startPosition:Jt(e.startPosition),pivot:Jt(e.pivot),startRotationQuaternion:eA(e.startQuaternion),yawAxis:Jt(a),pitchAxis:Jt(o),deltaX:i,deltaY:r,sensitivity:.01});l&&(e.part.object.position.set(l.position.x,l.position.y,l.position.z),e.part.object.quaternion.set(l.rotationQuaternion.x,l.rotationQuaternion.y,l.rotationQuaternion.z,l.rotationQuaternion.w),e.part.object.updateMatrixWorld(!0),this.invalidatePartCenter(e.part),(c=this.selectionHelper)==null||c.update(),this.requestRender())}resolvePickTarget(e){let t=this.canvas.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.meshes,!1)[0];return(i==null?void 0:i.object)instanceof ci?i.object:null}getPointOnDragPlane(e,t){var s;let i=this.tempCameraForward;this.camera.getWorldDirection(i);let r=dm(Jt(e),Jt(i));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:e}getRayPlanePoint(e,t){let i=this.canvas.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top;this.pointer.set(r/i.width*2-1,-(s/i.height)*2+1),this.raycaster.setFromCamera(this.pointer,this.camera);let a=JT({origin:Jt(this.raycaster.ray.origin),direction:Jt(this.raycaster.ray.direction)},t);return a?new re(a.x,a.y,a.z):null}getPartWorldCenter(e,t){let i=this.partCenterCache.get(e.id);return i?t.copy(i):(this.tempBox.setFromObject(e.object).getCenter(t),this.partCenterCache.set(e.id,t.clone()),t)}invalidatePartCenter(e){this.partCenterCache.delete(e.id)}translateSelectionHelper(e){if(!this.selectionHelper||e.lengthSq()<=Number.EPSILON)return;let t=this.selectionHelper.geometry.getAttribute("position");for(let i=0;ie.uuid).join("|"):n.uuid}function nle(n){if(n)for(let e of Array.isArray(n)?n:[n])e.dispose()}var tle,RA,dU=I(()=>{"use strict";tle=.242;RA=class{constructor(){this.materials=new Map}get(e){let t=rle(e),i=this.materials.get(t);if(i)return i;let r=ile(e);return this.materials.set(t,r),r}clear(){for(let e of this.materials.values())nle(e);this.materials.clear()}get size(){return this.materials.size}}});function hU(n){return cn(n)}function sle(n,e){return{originalPosition:hU(n),originalCenter:hU(e)}}function bA(n,e,t){let i=n.getRootCenter();for(let r of n.getParts()){let s=n.getPartState(r);s||(s=sle(n.getPartPosition(r),n.getPartCenter(r)),n.setPartState(r,s));let a=(s.originalCenter[t]-i[t])*e;n.setPartPosition(r,V2(s.originalPosition,t,a))}}function MA(n){for(let e of n.getParts()){let t=n.getPartState(e);t&&n.setPartPosition(e,t.originalPosition)}}var SC=I(()=>{"use strict";Gs()});function IA(n){return cn(n)}function ale(n){return n instanceof ci}function ole(n){let e=[];return n.traverse(t=>{ale(t)&&t.geometry&&e.push(t)}),e}function uU(n,e,t){bA(new yA(n),e,t)}function TC(n){MA(new yA(n))}var yA,mU=I(()=>{"use strict";us();Gs();fl();SC();yA=class{constructor(e){this.root=e}getParts(){return ole(this.root)}getRootCenter(){let e=new kr().setFromObject(this.root);return Rr({min:Jt(e.min),max:Jt(e.max)})}getPartPosition(e){return Jt(e.position)}getPartCenter(e){let i=new kr().setFromObject(e).getCenter(new re);return Jt(i)}setPartPosition(e,t){e.position.set(t.x,t.y,t.z)}getPartState(e){var i;let t=(i=e.userData)!=null?i:{};return t._previewExplodeState?{originalPosition:IA(t._previewExplodeState.originalPosition),originalCenter:IA(t._previewExplodeState.originalCenter)}:null}setPartState(e,t){e.userData._previewExplodeState={originalPosition:IA(t.originalPosition),originalCenter:IA(t.originalCenter)}}}});function pU(n){return n.cameraMoved||n.animating||n.renderDirty||n.renderObserverCount>0&&n.renderObserverSettleFrames>0}var CA,_U=I(()=>{"use strict";CA=class{constructor(e=120){this.maxSamples=e;this.samples=[];this.renderedFrameCount=0;this.idleFrameSkipCount=0;this.slowFrameCount=0;this.maxRenderMs=0;this.adaptiveScaleChangeCount=0}recordRenderedFrame(e,t){!Number.isFinite(e)||e<0||(this.renderedFrameCount++,e>=t&&this.slowFrameCount++,this.maxRenderMs=Math.max(this.maxRenderMs,e),this.samples.push(e),this.samples.length>this.maxSamples&&this.samples.shift())}recordIdleFrameSkip(){this.idleFrameSkipCount++}recordAdaptiveScaleChange(){this.adaptiveScaleChangeCount++}snapshot(){let e=[...this.samples].sort((r,s)=>r-s),t=this.samples.reduce((r,s)=>r+s,0),i=e.length===0?-1:Math.min(e.length-1,Math.ceil(e.length*.95)-1);return{renderedFrameCount:this.renderedFrameCount,idleFrameSkipCount:this.idleFrameSkipCount,slowFrameCount:this.slowFrameCount,averageRenderMs:e.length?Number((t/e.length).toFixed(2)):0,p95RenderMs:i>=0?Number(e[i].toFixed(2)):0,maxRenderMs:Number(this.maxRenderMs.toFixed(2)),adaptiveScaleChangeCount:this.adaptiveScaleChangeCount}}}});var AU={};Fe(AU,{ThreeModelPreview:()=>DA,createThreeModelPreview:()=>yle});function EU(){return{textureCount:0,colorTextureCount:0,srgbColorTextureCount:0}}function Ile(n,e){n.textureCount+=e.textureCount,n.colorTextureCount+=e.colorTextureCount,n.srgbColorTextureCount+=e.srgbColorTextureCount}function AC(n){return n instanceof rl||n instanceof fo||n instanceof Zl}function SU(n){return n instanceof er}function TU(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function yle(n){return new DA(n)}var PA,lle,cle,fle,dle,hle,gU,ule,vU,mle,ple,_le,gle,vle,Ele,Sle,Tle,Ale,xle,yg,Rle,ble,Mle,DA,xU=I(()=>{"use strict";us();r2();n2();N2();ua();cm();fl();rA();cA();Eg();fC();Gs();Ag();gA();cU();dU();mU();_s();nC();_U();vC();PA=new ht("#20242e"),lle=.28,cle=2.5,fle=1.5,dle=1.15,hle=260,gU=30,ule=8,vU=28,mle=18,ple=2,_le=28,gle=.86,vle=1.08,Ele=.62,Sle=.86,Tle=4,Ale=120,xle=9090296,yg=14870768,Rle=16096779,ble=16317180,Mle=13358561;DA=class{constructor(e){this.raycaster=new df;this.occlusionRaycaster=new df;this.renderObservers=new Set;this.cameraZoomObservers=new Set;this.pointer=new It;this.annotationProjection=new re;this.annotationDirection=new re;this.clock={last:performance.now()};this.defaultLights=[];this.configLights=[];this.environmentTarget=null;this.environmentInstallHandle=0;this.rootObject=null;this.loadedExt="";this.resourceWarnings=[];this.textureAudit=EU();this.renderHandle=0;this.contextLost=!1;this.quality="high";this.renderScale=1;this.interactivePixelRatioActive=!1;this.interactionPixelRatioDeadline=0;this.renderObserverSettleFrames=0;this.frameBudgetPixelRatioScale=1;this.frameBudgetSlowStreak=0;this.frameBudgetFastStreak=0;this.frameBudgetObserverStride=1;this.frameBudgetObserverCursor=0;this.frameBudgetShadowDeferred=!1;this.lastFrameDurationMs=0;this.smoothness=new CA;this.viewportVisible=!0;this.viewportObserver=null;this.lastDisposalAudit={reason:"initial",meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};this.axesHelper=null;this.bboxHelper=null;this.groundShadowMesh=null;this.meshShadowFlagsPrepared=!1;this.gridHelper=null;this.bboxEnabled=!1;this.wireframeEnabled=!1;this.wireframeOriginalMaterials=new Map;this.sceneConfig={};this.focusSelectionEnabled=!1;this.explodeStateActive=!1;this.focusedObject=null;this.highlightedObject=null;this.selectionHelper=null;this.focusHelper=null;this.mixer=null;this.animationPlaying=!1;this.initialTarget=new re;this.initialPosition=new re(3,2,3);this.initialFov=45;this.initialZoom=1;this.initialCameraMode="perspective";this.cameraMode="perspective";this.lastPointerDown=null;this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.previewLineUpdateHandle=0;this.originalMaterials=new Map;this.focusedSelectedMeshes=new Map;this.focusDimMaterialCache=new RA;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.disassembly=null;this.disassemblySetup=!1;this.renderDirty=!0;this.stlMaterial=null;this.cachedMeshes=null;this.cachedMeshRoot=null;this.cachedRenderables=null;this.cachedRenderableRoot=null;this.cachedRenderableObjectCount=null;this.cachedChildMeshMap=null;this.cachedChildMeshMapRoot=null;this.cachedRenderableBoundsMap=null;this.cachedRenderableBoundsMapRoot=null;this.cachedRootPreviewBounds=null;this.cachedRootPreviewBoundsObject=null;this.cachedGeometryQualityStats=null;this.cameraAnimHandle=0;this.preventCanvasWheelScroll=e=>{this.prepareInteractiveFrameBudget(),e.preventDefault(),e.stopPropagation(),this.markDirty()};this.handleControlsChange=()=>{this.prepareInteractiveFrameBudget(),this.markDirty(),this.notifyCameraZoomChanged()};this.handleViewportIntersection=e=>{let t=e[e.length-1];if(!t)return;let i=t.isIntersecting&&t.intersectionRatio>0;i!==this.viewportVisible&&(this.viewportVisible=i,i?(this.clock.last=performance.now(),this.markDirty(),this.markShadowDirty(),this.startRenderLoop()):(cancelAnimationFrame(this.renderHandle),this.renderHandle=0))};this.handlePointerDown=e=>{e.button!==0||e.isPrimary===!1||(this.lastPointerDown={x:e.clientX,y:e.clientY},this.prepareInteractiveFrameBudget())};this.handlePointerUp=e=>{var i;if(e.button!==0||e.isPrimary===!1)return;let t=this.lastPointerDown;this.lastPointerDown=null,t&&(Math.hypot(e.clientX-t.x,e.clientY-t.y)>4||(i=this.disassembly)!=null&&i.isEnabled()||this.dispatchPick(e))};this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},e.buttons&1&&this.prepareInteractiveFrameBudget(),!this.measurementActive||(this.pendingPoint&&this.schedulePreviewLineUpdate(),this.measurementMarkers.length===0))return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.measurementMarkers,!1),r=i.length>0?this.measurementMarkers.indexOf(i[0].object):-1;if(r!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&r{e.preventDefault(),this.contextLost=!0,this.renderHandle&&(cancelAnimationFrame(this.renderHandle),this.renderHandle=0)};this.handleContextRestored=()=>{this.contextLost=!1,this.markDirty(),this.startRenderLoop()};this.renderer=new PT({canvas:e,antialias:!0,alpha:!0,preserveDrawingBuffer:!0,powerPreference:"high-performance"}),this.renderer.outputColorSpace=Oi,this.renderer.toneMapping=Ns,this.renderer.toneMappingExposure=1,this.renderer.shadowMap.enabled=!1,this.renderer.shadowMap.type=FS,this.renderer.shadowMap.autoUpdate=!1,this.renderer.shadowMap.needsUpdate=!1,this.renderer.setClearColor(PA,1),this.scene=new Vd,this.camera=new gr(this.initialFov,1,.01,2e3),this.camera.position.copy(this.initialPosition),this.camera.lookAt(this.initialTarget),this.scene.add(this.camera),this.controls=new NT(this.camera,e),this.controls.enableDamping=!0,this.controls.dampingFactor=.08,this.controls.zoomSpeed=.65,this.controls.screenSpacePanning=!0,this.controls.target.copy(this.initialTarget),this.controls.addEventListener("change",this.handleControlsChange),this.installDefaultLighting(),this.resizeObs=new ResizeObserver(()=>this.resizeRenderer()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointerdown",this.handlePointerDown),e.addEventListener("pointerup",this.handlePointerUp),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.resizeRenderer(),this.startRenderLoop()}async loadModel(e,t,i,r,s){var l;gi(s),this.clearLoadedModel("model-switch"),gi(s),this.loadedExt=t.toLowerCase(),this.resourceWarnings=[],this.textureAudit=EU();let a=null,o=[];try{if(this.loadedExt==="glb"||this.loadedExt==="gltf"){let h=await P2(e,this.loadedExt,i,r,s);a=h.scene,o=h.animations,this.resourceWarnings=h.warnings}else if(this.loadedExt==="stl")a=await D2(e),this.stlMaterial=La(a)?a.material:null;else if(this.loadedExt==="ply")a=await L2(e);else if(this.loadedExt==="obj"){let h=await O2(e,i,r);a=h.object,this.resourceWarnings=h.warnings}else throw new Error(`Three preview does not support .${this.loadedExt} format`);gi(s),this.rootObject=a,this.scene.add(a),this.invalidateMeshCache();let c=this.getRenderableObjects(a);this.prepareModelForQuality(c),gi(s),this.syncShadowFeatures();let f=this.getRootPreviewBounds(a);if(this.updateShadowFraming(f),this.syncSceneHelpers(),this.markDirty(),o.length>0){this.mixer=new J_(a);for(let h of o)this.mixer.clipAction(h).play();this.animationPlaying=!0}let d=AA(a,c,this.resourceWarnings,f!=null?f:void 0);return this.cachedGeometryQualityStats=null,this.fitCameraToObject(a,f!=null?f:void 0),this.bboxEnabled&&this.ensureBoundingBoxHelper(),this.scheduleGlobalEnvironmentInstall(),this.disassemblySetup=!1,(l=this.disassembly)==null||l.dispose(),this.disassembly=null,d}catch(c){throw a&&(a.removeFromParent(),this.rootObject===a&&(this.rootObject=null),this.lastDisposalAudit=this.disposeObjectGraph(a,"model-switch"),this.invalidateMeshCache()),c}}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.applySTLConfig(e.stl)}applySTLConfig(e){let t=this.stlMaterial;t&&(e.color!==void 0&&t.color.set(e.color),e.wireframe!==void 0&&(t.wireframe=e.wireframe,t.needsUpdate=!0),this.markDirty())}destroy(){var t,i;cancelAnimationFrame(this.renderHandle),cancelAnimationFrame(this.cameraAnimHandle),this._onPickCallbacks=[],this.renderObservers.clear(),this.cameraZoomObservers.clear(),this.measurementObservers.clear(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.clearFocusedMesh(),this.clearSelectionHighlight(),this.clearLoadedModel("destroy");for(let r of this.configLights)this.disposeConfiguredLight(r);this.configLights.length=0;for(let r of this.defaultLights)this.disposeConfiguredLight(r);this.defaultLights.length=0,this.disposeGlobalEnvironment(),this.controls.removeEventListener("change",this.handleControlsChange),this.controls.dispose();let e=this.renderer.domElement;e.removeEventListener("wheel",this.preventCanvasWheelScroll),e.removeEventListener("pointerdown",this.handlePointerDown),e.removeEventListener("pointerup",this.handlePointerUp),e.removeEventListener("pointermove",this.handlePointerMove),e.removeEventListener("webglcontextlost",this.handleContextLost),e.removeEventListener("webglcontextrestored",this.handleContextRestored),this.resizeObs.disconnect(),(i=this.viewportObserver)==null||i.disconnect(),this.viewportObserver=null,this.renderer.dispose()}getCanvas(){return this.renderer.domElement}captureSnapshot(){return this.renderNow(0),this.renderer.domElement.toDataURL("image/png")}getAnnotationProvider(){let e=this.renderer.domElement;return fA({canvas:e,observeRender:t=>(this.renderObservers.add(t),this.setRenderObserverSettleFrames(),this.markDirty(),{remove:()=>{this.renderObservers.delete(t),this.renderObservers.size===0&&this.setRenderObserverSettleFrames(0)}}),getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}exportModelInfo(e){var s;if(!this.rootObject)return"";let t=this.getRenderableObjects(this.rootObject),i=AA(this.rootObject,t,this.resourceWarnings,(s=this.getRootPreviewBounds())!=null?s:void 0),r=e&&Vs(e)||i.rootName;return oA({title:r,format:this.loadedExt.toUpperCase(),summary:i,meshBreakdown:t.map(iU)})}getModelEvidence(){var o;if(!this.rootObject)return null;let e=this.getRenderableObjects(this.rootObject),t=this.getRenderableMeshes(this.rootObject),i=this.getChildRenderableMeshMap(this.rootObject),r=this.getRenderableBoundsMap(this.rootObject),s=sU(this.rootObject,t,i,r),a={parts:s.parts,groupedMeshes:new Set(s.groupedMeshes)};return hA({summary:AA(this.rootObject,e,this.resourceWarnings,(o=this.getRootPreviewBounds())!=null?o:void 0),renderableMeshes:e,groupedPartCandidates:a,createMeshPart:l=>gC(l,this.rootObject,r),getMeshMaterialNames:tU,resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var r;let e=(r=this.focusedObject)!=null?r:SU(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;if(!e)return null;let t=this.rootObject?this.getRenderableMeshes(this.rootObject):[],i=this.rootObject?this.getChildRenderableMeshMap(this.rootObject):void 0;return nU(e,this.rootObject,t,i)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?lA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Jt(e.pickedPoint):SU(e.mesh)?Rr(En(e.mesh)):null}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}resetView(){this.rootObject&&this.explodeStateActive&&(TC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty()),this.resetDisassembly(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.switchCameraMode(this.initialCameraMode),this.camera.position.copy(this.initialPosition),this.controls.target.copy(this.initialTarget),this.camera.lookAt(this.controls.target),this.camera instanceof gr&&(this.camera.fov=this.initialFov),this.camera.zoom=this.initialZoom,this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.renderNow(performance.now()),this.notifyCameraZoomChanged()}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&((t=this.disassembly)!=null&&t.isEnabled())&&this.disassembly.setEnabled(!1),this.focusSelectionEnabled=e,this.focusSelectionEnabled?(this.clearSelectionHighlight(),this._lastPickResult.mesh instanceof er&&this.setFocusedObject(this._lastPickResult.mesh)):this.clearFocusedMesh(),this.markDirty(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}setWireframe(e){e!==this.wireframeEnabled&&(this.wireframeEnabled=e,this.applyWireframe(e),this.markDirty())}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}applyWireframe(e){if(this.rootObject)for(let t of this.getRenderableMeshes(this.rootObject))if(e){this.wireframeOriginalMaterials.set(t.id,t.material);let r=ks(t.material).map(s=>{if(s instanceof bn){let a=new ds({color:s.color,transparent:s.transparent,opacity:s.opacity,side:s.side,visible:s.visible});return a.wireframe=!0,a}if("wireframe"in s){let a=s.clone();return a.wireframe=!0,a}return s});t.material=Array.isArray(t.material)?r:r[0]}else{let i=this.wireframeOriginalMaterials.get(t.id);i&&(t.material=i),this.wireframeOriginalMaterials.delete(t.id)}}toggleOrientationGizmo(){if(!this.axesHelper){this.axesHelper=new Yu(1.2),this.axesHelper.visible=!1;let e=this.axesHelper.material;e.depthTest=!1,e.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}return this.axesHelper.visible=!this.axesHelper.visible,this.axesHelper.position.copy(this.controls.target),this.markDirty(),this.axesHelper.visible}isOrientationGizmoEnabled(){var e;return!!((e=this.axesHelper)!=null&&e.visible)}toggleBoundingBox(){var e;return this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled?(this.ensureBoundingBoxHelper(),this.markDirty(),!!this.bboxHelper):((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=null,this.markDirty(),!1)}hasAnimations(){return this.mixer!==null}toggleAnimation(){return this.mixer?(this.animationPlaying=!this.animationPlaying,this.mixer.timeScale=this.animationPlaying?1:0,this.markDirty(),this.animationPlaying):!1}toggleMeasurement(){return this.measurementActive=!this.measurementActive,this.renderer.domElement.classList.toggle("ai3d-measurement-active",this.measurementActive),this.measurementActive||this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,this.renderer.domElement.classList.remove("ai3d-measurement-active")),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments){i.line.removeFromParent(),i.line.geometry.dispose(),i.line.material.dispose(),i.label.removeFromParent();let r=i.label.material;(t=r.map)==null||t.dispose(),r.dispose()}this.measurementSegments=[];for(let i of this.measurementMarkers){i.removeFromParent(),i.geometry.dispose();let r=i.material;if(Array.isArray(r))for(let s of r)s.dispose();else r.dispose()}this.measurementMarkers=[],this.markDirty(),this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=Rg(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=uA(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootObject)return null;let e=En(this.rootObject);return tr(e)}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return _A(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){var t;if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let i of this.measurementSegments){let r=um(this.createMeasurementReading(i.start,i.end));i.label.removeFromParent();let s=i.label.material;(t=s.map)==null||t.dispose(),s.dispose();let a=new re().addVectors(i.start,i.end).multiplyScalar(.5);i.label=this.createMeasurementLabelSprite(r,a,e),this.scene.add(i.label)}this.markDirty()}setRenderQuality(e,t=this.renderScale){this.quality=e,this.renderScale=t,this.syncGlobalEnvironmentForQuality(),this.applyShadowQuality(),this.resizeRenderer()}setRenderScale(e){return this.renderScale=Math.min(2,Math.max(.25,e)),this.resizeRenderer(),Number(this.renderScale.toFixed(2))}getCameraZoomState(){let e=this.getCameraZoomRange();if(!e)return null;let t=e.mode==="distance"?(e.max-e.current)/(e.max-e.min):(e.current-e.min)/(e.max-e.min),i=TU(t);return{value:i,percentage:Math.round(i*100)}}setCameraZoom(e){let t=this.getCameraZoomRange();if(!t)return null;let i=TU(e);if(t.mode==="distance"){let r=t.max-i*(t.max-t.min),s=this.camera.position.clone().sub(this.controls.target);s.lengthSq(){this.cameraZoomObservers.delete(e)}}getPerformanceSnapshot(){let e=this.smoothness.snapshot(),t=this.getQualitySnapshot();return{backend:"three",renderScale:Number(this.renderScale.toFixed(2)),quality:this.quality,pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),interactivePixelRatioActive:this.interactivePixelRatioActive,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames,frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,frameBudgetShadowDeferred:this.frameBudgetShadowDeferred,lastFrameDurationMs:Number(this.lastFrameDurationMs.toFixed(2)),averageRenderMs:e.averageRenderMs,p95RenderMs:e.p95RenderMs,maxRenderMs:e.maxRenderMs,renderedFrameCount:e.renderedFrameCount,slowFrameCount:e.slowFrameCount,idleFrameSkipCount:e.idleFrameSkipCount,adaptiveScaleChangeCount:e.adaptiveScaleChangeCount,viewportVisible:this.viewportVisible,disposalAudit:{...this.lastDisposalAudit},meshCount:t.geometry.meshCount,qualitySnapshot:t}}getQualitySnapshot(){let e=this.getGeometryQualityStats(),t=this.smoothness.snapshot();return{backend:"three",supportedFormats:["glb","gltf","stl","ply","obj"],colorPipeline:{outputColorSpace:String(this.renderer.outputColorSpace),toneMapping:this.renderer.toneMapping===Ns?"NoToneMapping":String(this.renderer.toneMapping),textureCount:this.textureAudit.textureCount,colorTextureCount:this.textureAudit.colorTextureCount,srgbColorTextureCount:this.textureAudit.srgbColorTextureCount},geometry:e,camera:{near:Number(this.camera.near.toPrecision(6)),far:Number(this.camera.far.toPrecision(6)),nearFarRatio:Number((this.camera.far/Math.max(this.camera.near,Number.EPSILON)).toPrecision(6))},performance:{renderScale:Number(this.renderScale.toFixed(2)),pixelRatio:Number(this.renderer.getPixelRatio().toFixed(2)),frameBudgetPixelRatioScale:Number(this.frameBudgetPixelRatioScale.toFixed(2)),frameBudgetObserverStride:this.frameBudgetObserverStride,viewportVisible:this.viewportVisible,renderedFrameCount:t.renderedFrameCount,idleFrameSkipCount:t.idleFrameSkipCount,slowFrameCount:t.slowFrameCount,averageRenderMs:t.averageRenderMs,p95RenderMs:t.p95RenderMs,maxRenderMs:t.maxRenderMs,adaptiveScaleChangeCount:t.adaptiveScaleChangeCount}}}setExplode(e,t){if(!this.rootObject)return;let i=Math.abs(e)>Number.EPSILON;!i&&!this.explodeStateActive||(uU(this.rootObject,e,t),this.explodeStateActive=i,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}resetExplode(){this.rootObject&&this.explodeStateActive&&(TC(this.rootObject),this.explodeStateActive=!1,this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty())}focusWorldPoint(e){let t=new re(e.x,e.y,e.z),i=this.camera.position.distanceTo(this.controls.target),r=t.clone().sub(this.camera.position).normalize(),s=t.clone().sub(r.multiplyScalar(i));this.animateCamera(s,t)}toggleDisassembly(){if(this.ensureDisassembly(),!this.disassembly)return!1;let e=!this.disassembly.isEnabled();e&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh(),this.clearSelectionHighlight());let t=this.disassembly.setEnabled(e);return t||this.disassembly.reset(),t}resetDisassembly(){this.disassembly&&(this.disassembly.reset(),this.invalidateRootBoundsCache())}isDisassemblyEnabled(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}ensureDisassembly(){if(this.disassemblySetup||(this.disassemblySetup=!0,!this.rootObject))return;let e=this.getRenderableMeshes(this.rootObject);e.length!==0&&(this.disassembly=lU(this.scene,this.camera,this.renderer.domElement,this.rootObject,e,this.controls,()=>{this.invalidateRootBoundsCache(),this.markShadowDirty(),this.markDirty()},this.getChildRenderableMeshMap(this.rootObject)))}animateCamera(e,t){cancelAnimationFrame(this.cameraAnimHandle);let i=this.camera.position.clone(),r=this.controls.target.clone(),s=500,a=performance.now(),o=()=>{let l=performance.now()-a,c=Math.min(1,l/s),f=c<.5?4*c*c*c:1-Math.pow(-2*c+2,3)/2;this.camera.position.lerpVectors(i,e,f),this.controls.target.lerpVectors(r,t,f),this.controls.update(),this.markDirty(),c<1&&(this.cameraAnimHandle=window.requestAnimationFrame(o))};this.cameraAnimHandle=window.requestAnimationFrame(o)}startRenderLoop(){if(this.renderHandle||!this.viewportVisible||this.contextLost)return;let e=()=>{if(!this.viewportVisible||this.contextLost){this.renderHandle=0;return}let t=this.renderNow(performance.now());this.renderHandle=t?window.requestAnimationFrame(e):0};this.renderHandle=window.requestAnimationFrame(e)}renderNow(e){var l,c,f;let t=this.renderer.domElement;if(!this.viewportVisible||!t.isConnected||t.clientWidth<=0||t.clientHeight<=0)return!1;let i=Math.max(0,(e-this.clock.last)/1e3);this.clock.last=e;let r=this.controls.update(),s=!!this.mixer&&this.animationPlaying;if(s&&this.mixer&&(this.mixer.update(i),this.markShadowDirty()),this.restoreInteractivePixelRatioIfIdle(e,r),!r&&!s&&!this.renderDirty)return this.smoothness.recordIdleFrameSkip(),this.renderObserverSettleFrames>0&&(this.renderObserverSettleFrames--,this.notifyRenderObservers()),this.shouldContinueRenderLoop(r,s);this.renderDirty=!1,this.setRenderObserverSettleFrames(),(l=this.bboxHelper)==null||l.update(),(c=this.selectionHelper)==null||c.update(),(f=this.focusHelper)==null||f.update(),this.axesHelper&&this.axesHelper.visible&&this.axesHelper.position.copy(this.controls.target);let a=performance.now();this.renderer.render(this.scene,this.camera);let o=performance.now()-a;return this.smoothness.recordRenderedFrame(o,vU),this.updateFrameBudget(o),this.notifyRenderObservers(),this.shouldContinueRenderLoop(r,s)}shouldContinueRenderLoop(e,t){return pU({cameraMoved:e,animating:t,renderDirty:this.renderDirty,renderObserverCount:this.renderObservers.size,renderObserverSettleFrames:this.renderObserverSettleFrames})}notifyRenderObservers(){if(!(this.frameBudgetObserverStride>1&&(this.frameBudgetObserverCursor=(this.frameBudgetObserverCursor+1)%this.frameBudgetObserverStride,this.frameBudgetObserverCursor!==0)))for(let e of this.renderObservers)e()}markDirty(){this.renderDirty=!0,this.startRenderLoop()}markShadowDirty(){if(!this.renderer.shadowMap.enabled){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}if(this.shouldDeferShadowRefresh()){this.frameBudgetShadowDeferred=!0;return}this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!0}prepareInteractiveFrameBudget(){let e=performance.now();this.interactionPixelRatioDeadline=e+hle,this.activateInteractivePixelRatio()&&this.resizeRenderer()}activateInteractivePixelRatio(){if(this.interactivePixelRatioActive)return!1;let e=this.computePixelRatio(!1);return this.computePixelRatio(!0)>=e?!1:(this.interactivePixelRatioActive=!0,!0)}restoreInteractivePixelRatioIfIdle(e,t){!this.interactivePixelRatioActive||t||e=vU?(this.frameBudgetSlowStreak++,this.frameBudgetFastStreak=0):e<=mle?(this.frameBudgetFastStreak++,this.frameBudgetSlowStreak=0):(this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0),this.frameBudgetSlowStreak>=ple){this.frameBudgetSlowStreak=0;let t=Math.max(Ele,this.frameBudgetPixelRatioScale*gle);t=_le&&this.frameBudgetPixelRatioScale<1&&(this.frameBudgetFastStreak=0,this.frameBudgetPixelRatioScale=Math.min(1,this.frameBudgetPixelRatioScale*vle),this.frameBudgetObserverStride=Math.max(1,this.frameBudgetObserverStride-1),this.setRenderObserverSettleFrames(),this.smoothness.recordAdaptiveScaleChange(),this.resizeRenderer())}}resetFrameBudget(){let e=this.frameBudgetPixelRatioScale!==1||this.frameBudgetObserverStride!==1;this.frameBudgetPixelRatioScale=1,this.frameBudgetSlowStreak=0,this.frameBudgetFastStreak=0,this.frameBudgetObserverStride=1,this.frameBudgetObserverCursor=0,this.setRenderObserverSettleFrames(),e&&this.markDirty()}setRenderObserverSettleFrames(e=gU){this.renderObserverSettleFrames=this.renderObservers.size>0?e:0}shouldDeferShadowRefresh(){return this.interactivePixelRatioActive&&this.frameBudgetPixelRatioScale<=Sle}resizeRenderer(){let e=this.renderer.domElement,t=Math.max(1,Math.round(e.clientWidth||e.width||1)),i=Math.max(1,Math.round(e.clientHeight||e.height||1));this.renderer.setPixelRatio(this.computePixelRatio()),this.renderer.setSize(t,i,!1),this.camera instanceof hs?this.updateOrthographicFrustum(t/i):this.camera.aspect=t/i,this.camera.updateProjectionMatrix(),this.markDirty()}getCameraZoomRange(){if(!this.rootObject)return null;if(this.camera instanceof hs){let s=Math.max(this.initialZoom*.25,.05),a=Math.max(this.initialZoom*6,s*2),o=Number.isFinite(this.controls.minZoom)&&this.controls.minZoom>0?this.controls.minZoom:s,l=Number.isFinite(this.controls.maxZoom)&&this.controls.maxZoom>o?this.controls.maxZoom:a;return{mode:"zoom",current:Math.max(o,Math.min(this.camera.zoom,l)),min:o,max:l}}let e=this.camera.position.distanceTo(this.controls.target),t=Math.max(e*.08,1e-5),i=Number.isFinite(this.controls.minDistance)&&this.controls.minDistance>0?this.controls.minDistance:t,r=Number.isFinite(this.controls.maxDistance)&&this.controls.maxDistance>i?this.controls.maxDistance:Math.max(e*8,i*10);return{mode:"distance",current:Math.max(i,Math.min(e,r)),min:i,max:r}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}computeOrthographicViewSpan(){var i;if(!this.rootObject)return 2;let e=(i=this.getRootPreviewBounds())!=null?i:En(this.rootObject),t=tr(e);return Math.max(Math.max(t.x,t.y,t.z,Number.EPSILON)*1.2,.001)}updateOrthographicFrustum(e){if(!(this.camera instanceof hs))return;let i=this.computeOrthographicViewSpan()/2,r=i*e;this.camera.left=-r,this.camera.right=r,this.camera.top=i,this.camera.bottom=-i}updateOrthographicFrustumForCamera(e,t){let r=this.computeOrthographicViewSpan()/2,s=r*t;e.left=-s,e.right=s,e.top=r,e.bottom=-r,e.updateProjectionMatrix()}switchCameraMode(e){if(this.cameraMode===e&&(e==="perspective"&&this.camera instanceof gr||e==="orthographic"&&this.camera instanceof hs))return;let t=this.renderer.domElement,i=Math.max(1,Math.round(t.clientWidth||t.width||1)),r=Math.max(1,Math.round(t.clientHeight||t.height||1)),s=i/r,a=this.camera,o=a.position.clone(),l=this.controls.target.clone(),c=a.zoom||1,f=a.near,d=a.far;if(this.scene.remove(a),e==="orthographic"){let h=new hs(-1,1,1,-1,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.updateOrthographicFrustumForCamera(h,s),this.camera=h}else{let h=new gr(this.initialFov,s,f,d);h.position.copy(o),h.zoom=c,h.lookAt(l),this.camera=h}this.scene.add(this.camera),this.controls.object=this.camera,this.controls.target.copy(l),this.controls.update(),this.cameraMode=e}applyCameraConfig(e){var i;let t=(i=e.mode)!=null?i:this.cameraMode;e.mode&&(this.initialCameraMode=e.mode),this.switchCameraMode(t),this.camera instanceof gr&&typeof e.fov=="number"&&Number.isFinite(e.fov)&&(this.camera.fov=e.fov,this.initialFov=e.fov),e.position&&(this.camera.position.set(...e.position),this.initialPosition.set(...e.position)),e.lookAt&&(this.controls.target.set(...e.lookAt),this.camera.lookAt(this.controls.target),this.initialTarget.set(...e.lookAt)),typeof e.near=="number"&&Number.isFinite(e.near)&&(this.camera.near=e.near),typeof e.far=="number"&&Number.isFinite(e.far)&&(this.camera.far=e.far),typeof e.zoom=="number"&&Number.isFinite(e.zoom)&&(this.camera.zoom=e.zoom,this.initialZoom=e.zoom),this.camera.updateProjectionMatrix(),this.controls.update(),this.markDirty(),this.notifyCameraZoomChanged()}applyLightConfig(e){for(let i of this.configLights)this.disposeConfiguredLight(i);this.configLights.length=0;let t=e.length>0;for(let i of this.defaultLights)i.visible=!t;for(let i of e){let r=this.createConfiguredLight(i);r&&(this.configLights.push(r),r.parent!==this.camera&&this.scene.add(r))}this.syncShadowFeatures(),this.updateShadowFraming(),this.markShadowDirty(),this.markDirty()}applySceneConfig(e){if(this.sceneConfig={...this.sceneConfig,...e},e.transparent!==void 0||e.background!==void 0)if(this.sceneConfig.transparent)this.scene.background=null,this.renderer.setClearColor(PA,0);else if(this.sceneConfig.background){let t=new ht(this.sceneConfig.background);this.scene.background=t,this.renderer.setClearColor(t,1)}else this.scene.background=PA,this.renderer.setClearColor(PA,1);typeof e.autoRotate=="boolean"&&(this.controls.autoRotate=e.autoRotate),typeof e.autoRotateSpeed=="number"&&(this.controls.autoRotateSpeed=e.autoRotateSpeed),typeof e.axis=="boolean"&&this.syncAxisHelper(e.axis),this.syncSceneHelpers(),this.syncShadowFeatures(),this.markDirty()}installDefaultLighting(){let e=new zu(16777215,.96);e.name="default-global-ambient";let t=new Hu(16777215,7172736,.34);t.name="default-hemi",this.defaultLights.push(e,t);for(let i of this.defaultLights)this.scene.add(i)}installGlobalEnvironment(){this.disposeGlobalEnvironment();let e=new tm(this.renderer),t=new wT;this.environmentTarget=e.fromScene(t,.04),this.scene.environment=this.environmentTarget.texture,this.scene.environmentIntensity=.48,t.dispose(),e.dispose()}syncGlobalEnvironmentForQuality(){if(this.quality==="low"){this.cancelGlobalEnvironmentInstall(),this.disposeGlobalEnvironment(),this.markDirty();return}this.rootObject&&!this.environmentTarget&&this.scheduleGlobalEnvironmentInstall()}scheduleGlobalEnvironmentInstall(){this.quality==="low"||this.environmentTarget||this.environmentInstallHandle||(this.environmentInstallHandle=window.setTimeout(()=>{this.environmentInstallHandle=0,!(this.quality==="low"||this.contextLost||!this.rootObject)&&(this.installGlobalEnvironment(),this.markDirty())},Ale))}cancelGlobalEnvironmentInstall(){this.environmentInstallHandle&&(window.clearTimeout(this.environmentInstallHandle),this.environmentInstallHandle=0)}disposeGlobalEnvironment(){var e;this.cancelGlobalEnvironmentInstall(),this.scene.environment=null,(e=this.environmentTarget)==null||e.dispose(),this.environmentTarget=null}createConfiguredLight(e){var r,s,a,o,l,c,f;let t=e.color?new ht(e.color):new ht(16777215),i=(r=e.intensity)!=null?r:1;switch(e.type){case"ambient":return new zu(t,i);case"hemisphere":{let d=e.groundColor?new ht(e.groundColor):new ht(4473924);return new Hu(t,d,i)}case"directional":{let d=new rl(t,i),h=(s=e.position)!=null?s:[-1,2,1],u=(a=e.target)!=null?a:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.castShadow=!!e.castShadow,d}case"point":{let d=new fo(t,i),h=(o=e.position)!=null?o:[0,5,0];return d.position.set(...h),d.castShadow=!!e.castShadow,typeof e.decay=="number"&&(d.decay=e.decay),d}case"spot":{let d=new Zl(t,i),h=(l=e.position)!=null?l:[0,5,0],u=(c=e.target)!=null?c:[0,0,0];return d.position.set(...h),d.target.position.set(...u),this.scene.add(d.target),d.angle=e.angle?e.angle*Math.PI/180:Math.PI/4,d.penumbra=(f=e.penumbra)!=null?f:.5,typeof e.decay=="number"&&(d.decay=e.decay),d.castShadow=!!e.castShadow,d}case"attachToCam":{let d=new fo(t,i);return this.camera.add(d),d}default:return null}}disposeConfiguredLight(e){(e instanceof rl||e instanceof Zl)&&e.target.removeFromParent(),e.removeFromParent(),e.dispose()}prepareModelForQuality(e){let t=I2(this.renderer.capabilities.getMaxAnisotropy(),this.quality),i=new Set;for(let r of e)for(let s of ks(r.material))i.has(s.uuid)||(i.add(s.uuid),this.prepareMaterialForQuality(s,t))}prepareMaterialForQuality(e,t){Ile(this.textureAudit,ZT(e,t))}applyShadowQuality(){let e=this.shadowMapSize(),t=!1;for(let i of this.allLights())!AC(i)||!i.castShadow||(i.shadow.mapSize.set(e,e),i.shadow.bias=-12e-5,i.shadow.normalBias=.018,i.shadow.needsUpdate=!0,t=!0);t&&(this.syncShadowFeatures(),this.markShadowDirty(),this.markDirty())}updateShadowFraming(e=this.getRootPreviewBounds()){if(!this.rootObject||!e)return;let t=Rr(e),i=tr(e),r=Math.max(i.x,i.y,i.z,Number.EPSILON),s=Math.max(r*1.8,.001),a=new re(t.x,t.y,t.z),o=!1;for(let l of this.allLights())if(!(!AC(l)||!l.castShadow)){if(this.ensureMeshShadowFlags(),l.shadow.mapSize.set(this.shadowMapSize(),this.shadowMapSize()),l.shadow.bias=-12e-5,l.shadow.normalBias=.018,l instanceof rl){let c=l.position.clone().sub(l.target.position);if(c.lengthSq()<.001&&c.set(4,7,5),l.target.position.copy(a),l.target.parent||this.scene.add(l.target),l.position.copy(a).add(c.normalize().multiplyScalar(s*2.4)),l.shadow.camera instanceof hs){let f=l.shadow.camera;f.left=-s,f.right=s,f.top=s,f.bottom=-s,f.near=.1,f.far=s*5,f.updateProjectionMatrix()}}l.shadow.needsUpdate=!0,o=!0}o&&this.markShadowDirty()}shadowMapSize(){return this.quality==="low"?512:this.quality==="medium"?1024:2048}allLights(){return[...this.defaultLights,...this.configLights]}hasActiveShadowFeatures(){return!!this.sceneConfig.groundShadow||this.allLights().some(e=>AC(e)&&e.castShadow)}syncShadowFeatures(){let e=this.hasActiveShadowFeatures();if(this.renderer.shadowMap.enabled!==e&&(this.renderer.shadowMap.enabled=e),!e){this.frameBudgetShadowDeferred=!1,this.renderer.shadowMap.needsUpdate=!1;return}this.ensureMeshShadowFlags(),this.renderer.shadowMap.needsUpdate=!0}ensureMeshShadowFlags(){if(!(!this.rootObject||this.meshShadowFlagsPrepared)){for(let e of this.getRenderableObjects(this.rootObject))La(e)&&(e.castShadow=!0,e.receiveShadow=!0);this.meshShadowFlagsPrepared=!0}}syncSceneHelpers(){this.sceneConfig.groundShadow?this.createGroundShadow():this.removeGroundShadow(),this.sceneConfig.grid?this.createGrid():this.removeGrid(),typeof this.sceneConfig.axis=="boolean"&&this.syncAxisHelper(this.sceneConfig.axis)}syncAxisHelper(e){if(!this.axesHelper){this.axesHelper=new Yu(1.2);let t=this.axesHelper.material;t.depthTest=!1,t.depthWrite=!1,this.axesHelper.renderOrder=999,this.scene.add(this.axesHelper)}this.axesHelper.visible=e,this.axesHelper.position.copy(this.controls.target)}createGroundShadow(){var l;if(!this.rootObject||this.groundShadowMesh)return;this.ensureMeshShadowFlags();let e=(l=this.getRootPreviewBounds())!=null?l:En(this.rootObject),t=Rr(e),i=tr(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*3,.001),a=e.min.y-Math.max(s*.002,1e-5),o=new ci(new Wd(s,s),new Y_({color:0,opacity:lle,transparent:!0}));o.name="ai3d-ground-shadow",o.rotation.x=-Math.PI/2,o.position.set(t.x,a,t.z),o.receiveShadow=!0,o.renderOrder=-1,this.scene.add(o),this.groundShadowMesh=o}removeGroundShadow(){if(this.groundShadowMesh){this.groundShadowMesh.removeFromParent(),this.groundShadowMesh.geometry.dispose();for(let e of ks(this.groundShadowMesh.material))e.dispose();this.groundShadowMesh=null}}createGrid(){var o;if(!this.rootObject||this.gridHelper)return;let e=(o=this.getRootPreviewBounds())!=null?o:En(this.rootObject),t=Rr(e),i=tr(e),r=Math.max(i.x,i.z,Number.EPSILON),s=Math.max(r*2,.001),a=new eg(s,20,7305093,3423046);a.name="ai3d-grid",a.position.set(t.x,e.min.y-Math.max(s*.003,1e-5),t.z);for(let l of ks(a.material))l.transparent=!0,l.opacity=.42;this.scene.add(a),this.gridHelper=a}removeGrid(){if(this.gridHelper){this.gridHelper.removeFromParent(),this.gridHelper.geometry.dispose();for(let e of ks(this.gridHelper.material))e.dispose();this.gridHelper=null}}dispatchPick(e){var c,f,d;if(!this.rootObject||(c=this.disassembly)!=null&&c.isEnabled())return;let t=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(e.clientX-t.left)/t.width*2-1,this.pointer.y=-((e.clientY-t.top)/t.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let i=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],r=pm(i==null?void 0:i.object)?i.object:null,s=this.getRenderableMeshes(this.rootObject),a=this.getChildRenderableMeshMap(this.rootObject),o=r?TA(this.rootObject,r,s,a):null,l={mesh:o,pickedPoint:(d=(f=i==null?void 0:i.point)==null?void 0:f.clone())!=null?d:null,screenX:e.clientX,screenY:e.clientY};if(this._lastPickResult=l,this.measurementActive&&(i!=null&&i.point)){this.addMeasurementPoint(i.point.clone());return}this.focusSelectionEnabled&&o?(this.clearSelectionHighlight(),this.focusedObject!==o&&this.setFocusedObject(o)):this.focusSelectionEnabled?this.clearSelectionHighlight():this.updateSelectionHighlight(o),this._onPickCallbacks.forEach(h=>h(l))}clearLoadedModel(e="model-switch"){var t,i;if(this.cancelGlobalEnvironmentInstall(),(t=this.disassembly)==null||t.dispose(),this.disassembly=null,this.disassemblySetup=!1,this.explodeStateActive=!1,this.meshShadowFlagsPrepared=!1,this.invalidateMeshCache(),this.markDirty(),this.clearFocusedMesh(),this.clearSelectionHighlight(),this.disposeMeasurementOverlays(!0),this.wireframeEnabled=!1,this.wireframeOriginalMaterials.clear(),this.stlMaterial=null,this.notifyCameraZoomChanged(),(i=this.bboxHelper)==null||i.removeFromParent(),this.bboxHelper=null,this.bboxEnabled=!1,this.removeGroundShadow(),this.removeGrid(),this.mixer=null,this.animationPlaying=!1,!this.rootObject){this.lastDisposalAudit={reason:e,meshCount:0,geometryCount:0,materialCount:0,textureCount:0,objectCount:0,timestamp:performance.now()};return}this.scene.remove(this.rootObject),this.lastDisposalAudit=this.disposeObjectGraph(this.rootObject,e),this.rootObject=null,this.invalidateMeshCache(),this.markShadowDirty()}disposeObjectGraph(e,t){var c;let i=new Set,r=new Set,s=new Set,a=0,o=0,l=f=>{La(f)&&a++;let d=f.geometry;d&&!i.has(d.uuid)&&(d.dispose(),i.add(d.uuid));for(let h of ks(f.material))this.disposeMaterialWithTextures(h,r,s)};if(this.cachedRenderables&&this.cachedRenderableRoot===e){o=(c=this.cachedRenderableObjectCount)!=null?c:this.cachedRenderables.length;for(let f of this.cachedRenderables)l(f)}else e.traverse(f=>{o++,pm(f)&&l(f)});return{reason:t,meshCount:a,geometryCount:i.size,materialCount:r.size,textureCount:s.size,objectCount:o,timestamp:performance.now()}}disposeMaterialWithTextures(e,t,i){if(t.has(e.uuid))return;let r=e;for(let s of Object.values(r))if(s instanceof Pr&&!i.has(s.uuid))s.dispose(),i.add(s.uuid);else if(Array.isArray(s))for(let a of s)a instanceof Pr&&!i.has(a.uuid)&&(a.dispose(),i.add(a.uuid));e.dispose(),t.add(e.uuid)}fitCameraToObject(e,t){var l;let i=(l=t!=null?t:this.getRootPreviewBounds(e))!=null?l:En(e),r=H2(i);this.initialTarget.set(r.target.x,r.target.y,r.target.z),this.initialPosition.set(r.position.x,r.position.y,r.position.z),this.initialFov=45;let s=tr(i),a=Math.max(s.x,s.y,s.z,Number.EPSILON),o=this.initialPosition.distanceTo(this.initialTarget);this.controls.minDistance=Math.max(r.near*4,a*.02,1e-5),this.controls.maxDistance=Math.max(o*8,this.controls.minDistance*10),this.controls.minZoom=.25,this.controls.maxZoom=8,this.raycaster.params.Points={threshold:Math.max(a*.01,1e-5)},this.raycaster.params.Line={threshold:Math.max(a*.002,1e-5)},this.occlusionRaycaster.params.Points={threshold:Math.max(a*.006,1e-5)},this.occlusionRaycaster.params.Line={threshold:Math.max(a*.001,1e-5)},this.resetView(),this.axesHelper&&(this.axesHelper.position.copy(this.controls.target),this.axesHelper.scale.setScalar(Math.max(a*.25,5e-4))),this.camera.near=r.near,this.camera.far=r.far,this.camera.updateProjectionMatrix(),this.markDirty(),this.notifyCameraZoomChanged()}getAnnotationCameraStateKey(){return dA([{value:this.camera.position.x,digits:3},{value:this.camera.position.y,digits:3},{value:this.camera.position.z,digits:3},{value:this.controls.target.x,digits:2},{value:this.controls.target.y,digits:2},{value:this.controls.target.z,digits:2},{value:this.camera instanceof gr?this.camera.fov:this.camera.zoom,digits:this.camera instanceof gr?2:3}])}projectAnnotationWorldPoint(e,t){let i=this.renderer.domElement;return!i.isConnected||i.clientWidth===0||i.clientHeight===0?!1:(this.scene.updateMatrixWorld(),this.camera.updateMatrixWorld(),this.annotationProjection.set(e.x,e.y,e.z).project(this.camera),Z2(this.annotationProjection,i,t))}isAnnotationWorldPointOccluded(e){if(!this.rootObject)return!1;let t=Af(Jt(this.camera.position),e);if(!t)return!1;this.rootObject.updateWorldMatrix(!0,!0),this.annotationDirection.set(t.direction.x,t.direction.y,t.direction.z),this.occlusionRaycaster.set(this.camera.position,this.annotationDirection),this.occlusionRaycaster.far=t.distance;let i=this.occlusionRaycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0];return!!i&&Tf(i.distance,t.distance,t.epsilon)}getRenderableMeshes(e){if(this.cachedMeshes&&this.cachedMeshRoot===e)return this.cachedMeshes;let t=[];return e.traverse(i=>{La(i)&&i.geometry&&t.push(i)}),this.cachedMeshes=t,this.cachedMeshRoot=e,t}getRenderableObjects(e){if(this.cachedRenderables&&this.cachedRenderableRoot===e)return this.cachedRenderables;let t=[],i=0;return e.traverse(r=>{i++,pm(r)&&r.geometry&&t.push(r)}),this.cachedRenderables=t,this.cachedRenderableRoot=e,this.cachedRenderableObjectCount=i,t}getChildRenderableMeshMap(e){return this.cachedChildMeshMap&&this.cachedChildMeshMapRoot===e?this.cachedChildMeshMap:(this.cachedChildMeshMap=vm(e,this.getRenderableMeshes(e)),this.cachedChildMeshMapRoot=e,this.cachedChildMeshMap)}getRenderableBoundsMap(e){return this.cachedRenderableBoundsMap&&this.cachedRenderableBoundsMapRoot===e?this.cachedRenderableBoundsMap:(this.cachedRenderableBoundsMap=eU(this.getRenderableObjects(e)),this.cachedRenderableBoundsMapRoot=e,this.cachedRenderableBoundsMap)}getGeometryQualityStats(){var e;return this.rootObject?(this.cachedGeometryQualityStats||(this.cachedGeometryQualityStats=aU(this.rootObject,this.getRenderableObjects(this.rootObject),(e=this.getRootPreviewBounds())!=null?e:void 0,this.getRenderableBoundsMap(this.rootObject))),this.cachedGeometryQualityStats):{meshCount:0,pointCloudCount:0,smallPartCount:0,smallestPartSpan:null,modelSpan:null}}invalidateMeshCache(){this.cachedMeshes=null,this.cachedMeshRoot=null,this.cachedRenderables=null,this.cachedRenderableRoot=null,this.cachedRenderableObjectCount=null,this.cachedChildMeshMap=null,this.cachedChildMeshMapRoot=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.invalidateRootBoundsCache()}invalidateRootBoundsCache(){this.cachedRootPreviewBounds=null,this.cachedRootPreviewBoundsObject=null,this.cachedRenderableBoundsMap=null,this.cachedRenderableBoundsMapRoot=null,this.cachedGeometryQualityStats=null}getRootPreviewBounds(e=this.rootObject){return e?this.cachedRootPreviewBounds&&this.cachedRootPreviewBoundsObject===e?this.cachedRootPreviewBounds:(this.cachedRootPreviewBounds=En(e),this.cachedRootPreviewBoundsObject=e,this.cachedRootPreviewBounds):null}ensureBoundingBoxHelper(){var e;this.rootObject&&((e=this.bboxHelper)==null||e.removeFromParent(),this.bboxHelper=new ql(this.rootObject,16436245),this.scene.add(this.bboxHelper))}updateSelectionHighlight(e){var t;if(!this.rootObject||!e){this.clearSelectionHighlight();return}this.highlightedObject===e&&this.selectionHelper||((t=this.selectionHelper)==null||t.removeFromParent(),this.selectionHelper=new ql(e,4890367),this.scene.add(this.selectionHelper),this.highlightedObject=e,this.markDirty())}setFocusedObject(e){var r,s;if(!this.rootObject||!e){this.clearFocusedMesh();return}if(this.focusedObject===e)return;let t=this.getRenderableMeshes(this.rootObject),i=La(e)?[e]:(r=this.getChildRenderableMeshMap(this.rootObject).get(e))!=null?r:[];if(i.length===0&&!pm(e)){this.clearFocusedMesh();return}this.originalMaterials.size===0?this.applyInitialFocusMaterials(t,i):this.applyFocusSelectionDelta(i),(s=this.focusHelper)==null||s.removeFromParent(),this.focusHelper=new ql(e,3065087),this.scene.add(this.focusHelper),this.focusedObject=e,this.focusedSelectedMeshes.clear();for(let a of i)this.focusedSelectedMeshes.set(a.id,a);this.markDirty()}clearFocusedMesh(){var e;this.restoreFocusedMaterials(),this.disposeFocusDimMaterials(),this.originalMaterials.clear(),this.focusedSelectedMeshes.clear(),(e=this.focusHelper)==null||e.removeFromParent(),this.focusHelper=null,this.focusedObject=null,this.markDirty()}restoreFocusedMaterials(){if(this.rootObject)for(let e of this.getRenderableMeshes(this.rootObject)){let t=this.originalMaterials.get(e.id);t&&(e.material=t)}}applyInitialFocusMaterials(e,t){let i=new Set(t.map(r=>r.id));for(let r of e)this.originalMaterials.set(r.id,r.material),!i.has(r.id)&&(r.material=this.focusDimMaterialCache.get(r.material))}applyFocusSelectionDelta(e){var i,r;let t=new Set(e.map(s=>s.id));for(let[s,a]of this.focusedSelectedMeshes){if(t.has(s))continue;let o=(i=this.originalMaterials.get(s))!=null?i:a.material;this.originalMaterials.has(s)||this.originalMaterials.set(s,o),a.material=this.focusDimMaterialCache.get(o)}for(let s of e){let a=(r=this.originalMaterials.get(s.id))!=null?r:s.material;this.originalMaterials.has(s.id)||this.originalMaterials.set(s.id,a),s.material=a}}disposeFocusDimMaterials(){this.focusDimMaterialCache.clear()}clearSelectionHighlight(){var e;(e=this.selectionHelper)==null||e.removeFromParent(),this.selectionHelper=null,this.highlightedObject=null,this.markDirty()}getMeasurementMarkerSize(){var r;if(!this.rootObject)return .02;let e=(r=this.getRootPreviewBounds())!=null?r:En(this.rootObject),t=tr(e);return Math.max(t.x,t.y,t.z,.001)*.015}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),this.disposeMeasurementMarker(t)}else t&&(t.scale.setScalar(1),t.material.color.setHex(yg));e&&this.markDirty()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>t.start.distanceTo(e)<1e-4||t.end.distanceTo(e)<1e-4)}disposeMeasurementMarker(e){e.removeFromParent(),e.geometry.dispose();let t=e.material;if(Array.isArray(t))for(let i of t)i.dispose();else t.dispose()}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(i.distanceTo(this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=new ku(r,16,16),a=new ds({color:yg,depthTest:!1,transparent:!0,opacity:.96}),o=new ci(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scale.setScalar(1),this.pendingMarker.material.color.setHex(yg)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=new ku(r,16,16),a=new ds({color:yg,depthTest:!1,transparent:!0,opacity:.96}),o=new ci(s,a);o.position.copy(i),o.renderOrder=999,this.scene.add(o),this.measurementMarkers.push(o),this.pendingMarker=o}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scale.setScalar(1.6),this.pendingMarker.material.color.setHex(Rle),this.pendingPoint=i,this.ensurePreviewLine()}this.markDirty(),this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){let i=new Qi().setFromPoints([e,t]),r=new $o(i,new Vn({color:xle,transparent:!0,opacity:.94,depthTest:!1}));r.renderOrder=998,this.scene.add(r);let s=um(this.createMeasurementReading(e,t)),a=new re().addVectors(e,t).multiplyScalar(.5),o=this.createMeasurementLabelSprite(s,a,this.getMeasurementMarkerSize()*4);this.scene.add(o),this.measurementSegments.push({start:e,end:t,line:r,label:o})}createMeasurementLabelSprite(e,t,i){let r=ih("canvas"),s=r.getContext("2d");r.width=640,r.height=160,pA(s,e,r.width,r.height);let a=new z_(r),o=new Bu({map:a,depthTest:!1,transparent:!0}),l=new V_(o);return l.position.copy(t),l.scale.set(i*4,i*.95,1),l.renderOrder=1e3,l}ensurePreviewLine(){if(this.previewLine)return;let e=new Qi().setFromPoints([new re,new re]);this.previewLine=new $o(e,new Vn({color:Mle,transparent:!0,opacity:.68,depthTest:!1})),this.previewLine.renderOrder=997,this.scene.add(this.previewLine)}updatePreviewLine(){if(this.previewLineUpdateHandle=0,!this.pendingPoint||!this.previewLine||!this.rootObject)return;let e=this.renderer.domElement.getBoundingClientRect();this.pointer.x=(this.lastPointerClient.x-e.left)/e.width*2-1,this.pointer.y=-((this.lastPointerClient.y-e.top)/e.height)*2+1,this.raycaster.setFromCamera(this.pointer,this.camera);let t=this.raycaster.intersectObjects(this.getRenderableObjects(this.rootObject),!1)[0],i;t!=null&&t.point?i=t.point.clone():i=this.pendingPoint.clone().add(this.raycaster.ray.direction.clone().multiplyScalar(5));let r=this.previewLine.geometry.getAttribute("position");r.setXYZ(0,this.pendingPoint.x,this.pendingPoint.y,this.pendingPoint.z),r.setXYZ(1,i.x,i.y,i.z),r.needsUpdate=!0,this.previewLine.geometry.computeBoundingSphere(),this.markDirty()}schedulePreviewLineUpdate(){this.previewLineUpdateHandle||(this.previewLineUpdateHandle=window.requestAnimationFrame(()=>this.updatePreviewLine()))}cancelPreviewLineUpdate(){this.previewLineUpdateHandle&&(window.cancelAnimationFrame(this.previewLineUpdateHandle),this.previewLineUpdateHandle=0)}removePreviewLine(){this.cancelPreviewLineUpdate(),this.previewLine&&(this.previewLine.removeFromParent(),this.previewLine.geometry.dispose(),this.previewLine.material.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return mA(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}}});var Cle,xC,RC,te,mi=I(()=>{Cle=typeof WeakRef!="undefined",xC=class{constructor(e,t=!1,i,r){this.initialize(e,t,i,r)}initialize(e,t=!1,i,r){return this.mask=e,this.skipNextObservers=t,this.target=i,this.currentTarget=r,this}},RC=class{constructor(e,t,i=null){this.callback=e,this.mask=t,this.scope=i,this._willBeUnregistered=!1,this.unregisterOnNextCall=!1,this._remove=null}remove(e=!1){this._remove&&this._remove(e)}},te=class n{static FromPromise(e,t){let i=new n;return e.then(r=>{i.notifyObservers(r)}).catch(r=>{if(t)t.notifyObservers(r);else throw r}),i}get observers(){return this._observers}constructor(e,t=!1){this.notifyIfTriggered=t,this._observers=new Array,this._numObserversMarkedAsDeleted=0,this._hasNotified=!1,this._eventState=new xC(0),e&&(this._onObserverAdded=e)}add(e,t=-1,i=!1,r=null,s=!1){if(!e)return null;let a=new RC(e,t,r);a.unregisterOnNextCall=s,i?this._observers.unshift(a):this._observers.push(a),this._onObserverAdded&&this._onObserverAdded(a),this._hasNotified&&this.notifyIfTriggered&&this._lastNotifiedValue!==void 0&&this.notifyObserver(a,this._lastNotifiedValue);let o=Cle?new WeakRef(this):{deref:()=>this};return a._remove=(l=!1)=>{let c=o.deref();c&&(l?c.remove(a):c._remove(a))},a}addOnce(e){return this.add(e,void 0,void 0,void 0,!0)}remove(e){return e?(e._remove=null,this._observers.indexOf(e)!==-1?(this._deferUnregister(e),!0):!1):!1}removeCallback(e,t){for(let i=0;i{this._remove(e)},0))}_remove(e,t=!0){if(!e)return!1;let i=this._observers.indexOf(e);return i!==-1?(t&&this._numObserversMarkedAsDeleted--,this._observers.splice(i,1),!0):!1}makeObserverTopPriority(e){this._remove(e,!1),this._observers.unshift(e)}makeObserverBottomPriority(e){this._remove(e,!1),this._observers.push(e)}notifyObservers(e,t=-1,i,r,s){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=e),!this._observers.length)return!0;let a=this._eventState;a.mask=t,a.target=i,a.currentTarget=r,a.skipNextObservers=!1,a.lastReturnValue=e,a.userInfo=s;for(let o of this._observers)if(!o._willBeUnregistered&&(o.mask&t&&(o.unregisterOnNextCall&&this._deferUnregister(o),o.scope?a.lastReturnValue=o.callback.apply(o.scope,[e,a]):a.lastReturnValue=o.callback(e,a)),a.skipNextObservers))return!1;return!0}notifyObserver(e,t,i=-1){if(this.notifyIfTriggered&&(this._hasNotified=!0,this._lastNotifiedValue=t),e._willBeUnregistered)return;let r=this._eventState;r.mask=i,r.skipNextObservers=!1,e.unregisterOnNextCall&&this._deferUnregister(e),e.callback(t,r)}hasObservers(){return this._observers.length-this._numObserversMarkedAsDeleted>0}clear(){for(;this._observers.length;){let e=this._observers.pop();e&&(e._remove=null)}this._onObserverAdded=null,this._numObserversMarkedAsDeleted=0,this.cleanLastNotifiedState()}cleanLastNotifiedState(){this._hasNotified=!1,this._lastNotifiedValue=void 0}clone(){let e=new n;return e._observers=this._observers.slice(0),e}hasSpecificMask(e=-1){for(let t of this._observers)if(t.mask&e||t.mask===e)return!0;return!1}}});var LA,RU=I(()=>{LA=class{get wrapU(){return this._cachedWrapU}set wrapU(e){this._cachedWrapU=e}get wrapV(){return this._cachedWrapV}set wrapV(e){this._cachedWrapV=e}get wrapR(){return this._cachedWrapR}set wrapR(e){this._cachedWrapR=e}get anisotropicFilteringLevel(){return this._cachedAnisotropicFilteringLevel}set anisotropicFilteringLevel(e){this._cachedAnisotropicFilteringLevel=e}get comparisonFunction(){return this._comparisonFunction}set comparisonFunction(e){this._comparisonFunction=e}get useMipMaps(){return this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}constructor(){this.samplingMode=-1,this._useMipMaps=!0,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this._comparisonFunction=0}setParameters(e=1,t=1,i=1,r=1,s=2,a=0){return this._cachedWrapU=e,this._cachedWrapV=t,this._cachedWrapR=i,this._cachedAnisotropicFilteringLevel=r,this.samplingMode=s,this._comparisonFunction=a,this}compareSampler(e){return this._cachedWrapU===e._cachedWrapU&&this._cachedWrapV===e._cachedWrapV&&this._cachedWrapR===e._cachedWrapR&&this._cachedAnisotropicFilteringLevel===e._cachedAnisotropicFilteringLevel&&this.samplingMode===e.samplingMode&&this._comparisonFunction===e._comparisonFunction&&this._useMipMaps===e._useMipMaps}}});var bU,Vi,Ws=I(()=>{mi();RU();(function(n){n[n.Unknown=0]="Unknown",n[n.Url=1]="Url",n[n.Temp=2]="Temp",n[n.Raw=3]="Raw",n[n.Dynamic=4]="Dynamic",n[n.RenderTarget=5]="RenderTarget",n[n.MultiRenderTarget=6]="MultiRenderTarget",n[n.Cube=7]="Cube",n[n.CubeRaw=8]="CubeRaw",n[n.CubePrefiltered=9]="CubePrefiltered",n[n.Raw3D=10]="Raw3D",n[n.Raw2DArray=11]="Raw2DArray",n[n.DepthStencil=12]="DepthStencil",n[n.CubeRawRGBD=13]="CubeRawRGBD",n[n.Depth=14]="Depth"})(bU||(bU={}));Vi=class n extends LA{get useMipMaps(){return this._useMipMaps===null?this.generateMipMaps:this._useMipMaps}set useMipMaps(e){this._useMipMaps=e}get uniqueId(){return this._uniqueId}_setUniqueId(e){this._uniqueId=e}getEngine(){return this._engine}get source(){return this._source}constructor(e,t,i=!1){super(),this.isReady=!1,this.isCube=!1,this.is3D=!1,this.is2DArray=!1,this.isMultiview=!1,this.url="",this.generateMipMaps=!1,this._useMipMaps=null,this.mipLevelCount=1,this.samples=0,this.type=-1,this.format=-1,this.onLoadedObservable=new te,this.onErrorObservable=new te,this.onRebuildCallback=null,this.width=0,this.height=0,this.depth=0,this.baseWidth=0,this.baseHeight=0,this.baseDepth=0,this.invertY=!1,this._invertVScale=!1,this._associatedChannel=-1,this._source=0,this._buffer=null,this._bufferView=null,this._bufferViewArray=null,this._bufferViewArrayArray=null,this._size=0,this._extension="",this._files=null,this._workingCanvas=null,this._workingContext=null,this._cachedCoordinatesMode=null,this._isDisabled=!1,this._compression=null,this._sphericalPolynomial=null,this._sphericalPolynomialPromise=null,this._sphericalPolynomialComputed=!1,this._lodGenerationScale=0,this._lodGenerationOffset=0,this._useSRGBBuffer=!1,this._creationFlags=0,this._lodTextureHigh=null,this._lodTextureMid=null,this._lodTextureLow=null,this._isRGBD=!1,this._linearSpecularLOD=!1,this._irradianceTexture=null,this._hardwareTexture=null,this._maxLodLevel=null,this._references=1,this._gammaSpace=null,this._premulAlpha=!1,this._dynamicTextureSource=null,this._autoMSAAManagement=!1,this._engine=e,this._source=t,this._uniqueId=n._Counter++,i||(this._hardwareTexture=e._createHardwareTexture())}incrementReferences(){this._references++}updateSize(e,t,i=1){this._engine.updateTextureDimensions(this,e,t,i),this.width=e,this.height=t,this.depth=i,this.baseWidth=e,this.baseHeight=t,this.baseDepth=i,this._size=e*t*i}_rebuild(){var t,i;if(this.isReady=!1,this._cachedCoordinatesMode=null,this._cachedWrapU=null,this._cachedWrapV=null,this._cachedWrapR=null,this._cachedAnisotropicFilteringLevel=null,this.onRebuildCallback){let r=this.onRebuildCallback(this),s=a=>{a._swapAndDie(this,!1),this.isReady=r.isReady};r.isAsync?r.proxy.then(s):s(r.proxy);return}let e;switch(this.source){case 2:break;case 1:e=this._engine.createTexture((t=this._originalUrl)!=null?t:this.url,!this.generateMipMaps,this.invertY,null,this.samplingMode,r=>{r._swapAndDie(this,!1),this.isReady=!0},null,this._buffer,void 0,this.format,this._extension,void 0,void 0,void 0,this._useSRGBBuffer);return;case 3:if(e=this._engine.createRawTexture(this._bufferView,this.baseWidth,this.baseHeight,this.format,this.generateMipMaps,this.invertY,this.samplingMode,this._compression,this.type,this._creationFlags,this._useSRGBBuffer,this.mipLevelCount),e._swapAndDie(this,!1),this._bufferViewArray)for(let r=0;r{e._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension,!1,0,0,null,void 0,this._useSRGBBuffer,ArrayBuffer.isView(this._buffer)?this._buffer:null);return;case 8:e=this._engine.createRawCubeTexture(this._bufferViewArray,this.width,(i=this._originalFormat)!=null?i:this.format,this.type,this.generateMipMaps,this.invertY,this.samplingMode,this._compression),e._swapAndDie(this,!1),this.isReady=!0;break;case 13:return;case 9:e=this._engine.createPrefilteredCubeTexture(this.url,null,this._lodGenerationScale,this._lodGenerationOffset,r=>{r&&r._swapAndDie(this,!1),this.isReady=!0},null,this.format,this._extension),e._sphericalPolynomial=this._sphericalPolynomial;return;case 12:case 14:break}}_swapAndDie(e,t=!0){var s;(s=this._hardwareTexture)==null||s.setUsage(e._source,this.generateMipMaps,this.is2DArray,this.isCube,this.is3D,this.width,this.height,this.depth),e._hardwareTexture=this._hardwareTexture,t&&(e._isRGBD=this._isRGBD),this._lodTextureHigh&&(e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureHigh=this._lodTextureHigh),this._lodTextureMid&&(e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureMid=this._lodTextureMid),this._lodTextureLow&&(e._lodTextureLow&&e._lodTextureLow.dispose(),e._lodTextureLow=this._lodTextureLow),this._irradianceTexture&&(e._irradianceTexture&&e._irradianceTexture.dispose(),e._irradianceTexture=this._irradianceTexture);let i=this._engine.getLoadedTexturesCache(),r=i.indexOf(this);r!==-1&&i.splice(r,1),r=i.indexOf(e),r===-1&&i.push(e)}dispose(){this._references--,this._references===0&&(this.onLoadedObservable.clear(),this.onErrorObservable.clear(),this._engine._releaseTexture(this),this._hardwareTexture=null,this._dynamicTextureSource=null)}};Vi._Counter=0});var Oe,Gi=I(()=>{mi();Oe=class{static get LastCreatedEngine(){return this.Instances.length===0?null:this.Instances[this.Instances.length-1]}static get LastCreatedScene(){return this._LastCreatedScene}};Oe.Instances=[];Oe.OnEnginesDisposedObservable=new te;Oe._LastCreatedScene=null;Oe.UseFallbackTexture=!0;Oe.FallbackTexture=""});var ee,Lt=I(()=>{ee=class n{static _CheckLimit(e,t){let i=n._LogLimitOutputs[e];return i?i.current++:(i={limit:t,current:1},n._LogLimitOutputs[e]=i),i.current<=i.limit}static _GenerateLimitMessage(e,t=1){var s;let i=n._LogLimitOutputs[e];if(!i||!n.MessageLimitReached)return;let r=this._Levels[t];i.current===i.limit&&n[r.name](n.MessageLimitReached.replace(/%LIMIT%/g,""+i.limit).replace(/%TYPE%/g,(s=r.name)!=null?s:""))}static _AddLogEntry(e){n._LogCache=e+n._LogCache,n.OnNewCacheEntry&&n.OnNewCacheEntry(e)}static _FormatMessage(e){let t=r=>r<10?"0"+r:""+r,i=new Date;return"["+t(i.getHours())+":"+t(i.getMinutes())+":"+t(i.getSeconds())+"]: "+e}static _LogDisabled(e,t){}static _LogEnabled(e=1,t,i){let r=Array.isArray(t)?t[0]:t;if(i!==void 0&&!n._CheckLimit(r,i))return;let s=n._FormatMessage(r),a=this._Levels[e],o=Array.isArray(t)?t.slice(1):[];a.logFunc&&a.logFunc("BJS - "+s,...o);let l=`
${s}

`;n._AddLogEntry(l),n._GenerateLimitMessage(r,e)}static get LogCache(){return n._LogCache}static ClearLogCache(){n._LogCache="",n._LogLimitOutputs={},n.errorsCount=0}static set LogLevels(e){n.Log=n._LogDisabled,n.Warn=n._LogDisabled,n.Error=n._LogDisabled;let t=[n.MessageLogLevel,n.WarningLogLevel,n.ErrorLogLevel];for(let i of t)if((e&i)===i){let r=this._Levels[i];n[r.name]=n._LogEnabled.bind(n,i)}}};ee.NoneLogLevel=0;ee.MessageLogLevel=1;ee.WarningLogLevel=2;ee.ErrorLogLevel=4;ee.AllLogLevel=7;ee.MessageLimitReached="Too many %TYPE%s (%LIMIT%), no more %TYPE%s will be reported for this message.";ee._LogCache="";ee._LogLimitOutputs={};ee._Levels=[{},{color:"white",logFunc:console.log,name:"Log"},{color:"orange",logFunc:console.warn,name:"Warn"},{},{color:"red",logFunc:console.error,name:"Error"}];ee.errorsCount=0;ee.Log=ee._LogEnabled.bind(ee,ee.MessageLogLevel);ee.Warn=ee._LogEnabled.bind(ee,ee.WarningLogLevel);ee.Error=ee._LogEnabled.bind(ee,ee.ErrorLogLevel)});var x,k=I(()=>{x=class n{static GetShadersRepository(e=0){return e===0?n.ShadersRepository:n.ShadersRepositoryWGSL}static GetShadersStore(e=0){return e===0?n.ShadersStore:n.ShadersStoreWGSL}static GetIncludesShadersStore(e=0){return e===0?n.IncludesShadersStore:n.IncludesShadersStoreWGSL}};x.ShadersRepository="src/Shaders/";x.ShadersStore={};x.IncludesShadersStore={};x.ShadersRepositoryWGSL="src/ShadersWGSL/";x.ShadersStoreWGSL={};x.IncludesShadersStoreWGSL={}});function Er(){return typeof window!="undefined"}function ec(){return typeof navigator!="undefined"}function Rf(){return typeof document!="undefined"}function OA(n){let e="",t=n.firstChild;for(;t;)t.nodeType===3&&(e+=t.textContent),t=t.nextSibling;return e}var Oa=I(()=>{});var NA,MU=I(()=>{NA=class{constructor(){this._valueCache={},this.vertexCompilationError=null,this.fragmentCompilationError=null,this.programLinkError=null,this.programValidationError=null,this._isDisposed=!1}get isAsync(){return this.isParallelCompiled}get isReady(){return this.program?this.isParallelCompiled?this.engine._isRenderingStateCompiled(this):!0:!1}_handlesSpectorRebuildCallback(e){e&&this.program&&e(this.program)}setEngine(e){this.engine=e}_fillEffectInformation(e,t,i,r,s,a,o,l){let c=this.engine;if(c.supportsUniformBuffers)for(let h in t)e.bindUniformBlock(h,t[h]);this.engine.getUniforms(this,i).forEach((h,u)=>{r[i[u]]=h}),this._uniforms=r;let d;for(d=0;d{a[h]=u});for(let h of c.getAttributes(this,o))l.push(h)}dispose(){this._uniforms={},this._isDisposed=!0}_cacheMatrix(e,t){let i=this._valueCache[e],r=t.updateFlag;return i!==void 0&&i===r?!1:(this._valueCache[e]=r,!0)}_cacheFloat2(e,t,i){let r=this._valueCache[e];if(!r||r.length!==2)return r=[t,i],this._valueCache[e]=r,!0;let s=!1;return r[0]!==t&&(r[0]=t,s=!0),r[1]!==i&&(r[1]=i,s=!0),s}_cacheFloat3(e,t,i,r){let s=this._valueCache[e];if(!s||s.length!==3)return s=[t,i,r],this._valueCache[e]=s,!0;let a=!1;return s[0]!==t&&(s[0]=t,a=!0),s[1]!==i&&(s[1]=i,a=!0),s[2]!==r&&(s[2]=r,a=!0),a}_cacheFloat4(e,t,i,r,s){let a=this._valueCache[e];if(!a||a.length!==4)return a=[t,i,r,s],this._valueCache[e]=a,!0;let o=!1;return a[0]!==t&&(a[0]=t,o=!0),a[1]!==i&&(a[1]=i,o=!0),a[2]!==r&&(a[2]=r,o=!0),a[3]!==s&&(a[3]=s,o=!0),o}setInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setIntArray(e,t){this._valueCache[e]=null,this.engine.setIntArray(this._uniforms[e],t)}setIntArray2(e,t){this._valueCache[e]=null,this.engine.setIntArray2(this._uniforms[e],t)}setIntArray3(e,t){this._valueCache[e]=null,this.engine.setIntArray3(this._uniforms[e],t)}setIntArray4(e,t){this._valueCache[e]=null,this.engine.setIntArray4(this._uniforms[e],t)}setUInt(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setUInt(this._uniforms[e],t)&&(this._valueCache[e]=t)}setUInt2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setUInt2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setUInt3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setUInt3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setUInt4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setUInt4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setUIntArray(e,t){this._valueCache[e]=null,this.engine.setUIntArray(this._uniforms[e],t)}setUIntArray2(e,t){this._valueCache[e]=null,this.engine.setUIntArray2(this._uniforms[e],t)}setUIntArray3(e,t){this._valueCache[e]=null,this.engine.setUIntArray3(this._uniforms[e],t)}setUIntArray4(e,t){this._valueCache[e]=null,this.engine.setUIntArray4(this._uniforms[e],t)}setArray(e,t){this._valueCache[e]=null,this.engine.setArray(this._uniforms[e],t)}setArray2(e,t){this._valueCache[e]=null,this.engine.setArray2(this._uniforms[e],t)}setArray3(e,t){this._valueCache[e]=null,this.engine.setArray3(this._uniforms[e],t)}setArray4(e,t){this._valueCache[e]=null,this.engine.setArray4(this._uniforms[e],t)}setMatrices(e,t){t&&(this._valueCache[e]=null,this.engine.setMatrices(this._uniforms[e],t))}setMatrix(e,t){this._cacheMatrix(e,t)&&(this.engine.setMatrices(this._uniforms[e],t.asArray())||(this._valueCache[e]=null))}setMatrix3x3(e,t){this._valueCache[e]=null,this.engine.setMatrix3x3(this._uniforms[e],t)}setMatrix2x2(e,t){this._valueCache[e]=null,this.engine.setMatrix2x2(this._uniforms[e],t)}setFloat(e,t){let i=this._valueCache[e];i!==void 0&&i===t||this.engine.setFloat(this._uniforms[e],t)&&(this._valueCache[e]=t)}setVector2(e,t){this._cacheFloat2(e,t.x,t.y)&&(this.engine.setFloat2(this._uniforms[e],t.x,t.y)||(this._valueCache[e]=null))}setFloat2(e,t,i){this._cacheFloat2(e,t,i)&&(this.engine.setFloat2(this._uniforms[e],t,i)||(this._valueCache[e]=null))}setVector3(e,t){this._cacheFloat3(e,t.x,t.y,t.z)&&(this.engine.setFloat3(this._uniforms[e],t.x,t.y,t.z)||(this._valueCache[e]=null))}setFloat3(e,t,i,r){this._cacheFloat3(e,t,i,r)&&(this.engine.setFloat3(this._uniforms[e],t,i,r)||(this._valueCache[e]=null))}setVector4(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setQuaternion(e,t){this._cacheFloat4(e,t.x,t.y,t.z,t.w)&&(this.engine.setFloat4(this._uniforms[e],t.x,t.y,t.z,t.w)||(this._valueCache[e]=null))}setFloat4(e,t,i,r,s){this._cacheFloat4(e,t,i,r,s)&&(this.engine.setFloat4(this._uniforms[e],t,i,r,s)||(this._valueCache[e]=null))}setColor3(e,t){this._cacheFloat3(e,t.r,t.g,t.b)&&(this.engine.setFloat3(this._uniforms[e],t.r,t.g,t.b)||(this._valueCache[e]=null))}setColor4(e,t,i){this._cacheFloat4(e,t.r,t.g,t.b,i)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,i)||(this._valueCache[e]=null))}setDirectColor4(e,t){this._cacheFloat4(e,t.r,t.g,t.b,t.a)&&(this.engine.setFloat4(this._uniforms[e],t.r,t.g,t.b,t.a)||(this._valueCache[e]=null))}_getVertexShaderCode(){return this.vertexShader?this.engine._getShaderSource(this.vertexShader):null}_getFragmentShaderCode(){return this.fragmentShader?this.engine._getShaderSource(this.fragmentShader):null}}});function Qe(n,e=!1){if(!(e&&IU[n]))return IU[n]=!0,`${n} needs to be imported before as it contains a side-effect required by your code.`}var IU,Sn=I(()=>{IU={}});function wA(n,e,t=""){return t+(e?e+` +`:"")+n}function FA(n,e,t,i,r,s,a){let o=a||Em.loadFile;if(o)return o(n,e,t,i,r,s);throw Qe("FileTools")}function BA(n,e,t,i){if(n){e?n.IS_NDC_HALF_ZRANGE="":delete n.IS_NDC_HALF_ZRANGE,t?n.USE_REVERSE_DEPTHBUFFER="":delete n.USE_REVERSE_DEPTHBUFFER,i?n.USE_EXACT_SRGB_CONVERSIONS="":delete n.USE_EXACT_SRGB_CONVERSIONS;return}else{let r="";return e&&(r+="#define IS_NDC_HALF_ZRANGE"),t&&(r&&(r+=` `),r+="#define USE_REVERSE_DEPTHBUFFER"),i&&(r&&(r+=` -`),r+="#define USE_EXACT_SRGB_CONVERSIONS"),r}}function yU(n,e,t=!1,i){switch(n){case 3:{let s=new Int8Array(e);return i&&s.set(new Int8Array(i)),s}case 0:{let s=new Uint8Array(e);return i&&s.set(new Uint8Array(i)),s}case 4:{let s=typeof e!="number"?new Int16Array(e):new Int16Array(t?e/2:e);return i&&s.set(new Int16Array(i)),s}case 5:case 8:case 9:case 10:case 2:{let s=typeof e!="number"?new Uint16Array(e):new Uint16Array(t?e/2:e);return i&&s.set(new Uint16Array(i)),s}case 6:{let s=typeof e!="number"?new Int32Array(e):new Int32Array(t?e/4:e);return i&&s.set(new Int32Array(i)),s}case 7:case 11:case 12:case 13:case 14:case 15:{let s=typeof e!="number"?new Uint32Array(e):new Uint32Array(t?e/4:e);return i&&s.set(new Uint32Array(i)),s}case 1:{let s=typeof e!="number"?new Float32Array(e):new Float32Array(t?e/4:e);return i&&s.set(new Float32Array(i)),s}}let r=new Uint8Array(e);return i&&r.set(new Uint8Array(i)),r}var Em,bf=I(()=>{Sn();Oa();Em={}});function Yn(n){let e=bC.get(n);if(!e){if(!n)return Ple;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},bC.set(n,e)}return e}function BA(n){bC.delete(n)}function IC(n,e,t,i,r,s){var c;let a=Yn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:UA);let o=MC(e,"vertex",i,a._contextWasLost),l=MC(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function yC(n,e,t,i,r,s=null,a){var d;let o=Yn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:UA);let l=o._webGLVersion>1?`#version 300 es +`),r+="#define USE_EXACT_SRGB_CONVERSIONS"),r}}function yU(n,e,t=!1,i){switch(n){case 3:{let s=new Int8Array(e);return i&&s.set(new Int8Array(i)),s}case 0:{let s=new Uint8Array(e);return i&&s.set(new Uint8Array(i)),s}case 4:{let s=typeof e!="number"?new Int16Array(e):new Int16Array(t?e/2:e);return i&&s.set(new Int16Array(i)),s}case 5:case 8:case 9:case 10:case 2:{let s=typeof e!="number"?new Uint16Array(e):new Uint16Array(t?e/2:e);return i&&s.set(new Uint16Array(i)),s}case 6:{let s=typeof e!="number"?new Int32Array(e):new Int32Array(t?e/4:e);return i&&s.set(new Int32Array(i)),s}case 7:case 11:case 12:case 13:case 14:case 15:{let s=typeof e!="number"?new Uint32Array(e):new Uint32Array(t?e/4:e);return i&&s.set(new Uint32Array(i)),s}case 1:{let s=typeof e!="number"?new Float32Array(e):new Float32Array(t?e/4:e);return i&&s.set(new Float32Array(i)),s}}let r=new Uint8Array(e);return i&&r.set(new Uint8Array(i)),r}var Em,bf=I(()=>{Sn();Oa();Em={}});function Yn(n){let e=bC.get(n);if(!e){if(!n)return Ple;e={_webGLVersion:n.TEXTURE_BINDING_3D?2:1,_context:n,parallelShaderCompile:n.getExtension("KHR_parallel_shader_compile")||void 0,cachedPipelines:{}},bC.set(n,e)}return e}function UA(n){bC.delete(n)}function IC(n,e,t,i,r,s){var c;let a=Yn(i);s||(s=(c=a._createShaderProgramInjection)!=null?c:VA);let o=MC(e,"vertex",i,a._contextWasLost),l=MC(t,"fragment",i,a._contextWasLost);return s(n,o,l,i,r,a.validateShaderPrograms)}function yC(n,e,t,i,r,s=null,a){var d;let o=Yn(r);a||(a=(d=o._createShaderProgramInjection)!=null?d:VA);let l=o._webGLVersion>1?`#version 300 es #define WEBGL2 -`:"",c=CU(e,"vertex",i,l,r,o._contextWasLost),f=CU(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function PU(n,e){let t=new OA,i=Yn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function UA(n,e,t,i,r=null,s){let a=i.createProgram();if(n.program=a,!a)throw new Error("Unable to create program");return i.attachShader(a,e),i.attachShader(a,t),i.linkProgram(a),n.context=i,n.vertexShader=e,n.fragmentShader=t,n.isParallelCompiled||VA(n,i,s),a}function DU(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Yn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(VA(i,e,t),!0):!1}function VA(n,e,t){let i=n.context,r=n.vertexShader,s=n.fragmentShader,a=n.program;if(!i.getProgramParameter(a,i.LINK_STATUS)){if(!e.getShaderParameter(r,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(r);if(c)throw n.vertexCompilationError=c,new Error("VERTEX SHADER "+c)}if(!e.getShaderParameter(s,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(s);if(c)throw n.fragmentCompilationError=c,new Error("FRAGMENT SHADER "+c)}let l=i.getProgramInfoLog(a);if(l)throw n.programLinkError=l,new Error(l)}if(t&&(i.validateProgram(a),!i.getProgramParameter(a,i.VALIDATE_STATUS))){let c=i.getProgramInfoLog(a);if(c)throw n.programValidationError=c,new Error(c)}i.deleteShader(r),i.deleteShader(s),n.vertexShader=void 0,n.fragmentShader=void 0,n.onCompiled&&(n.onCompiled(),n.onCompiled=void 0)}function LU(n,e,t,i,r,s,a,o,l,c="",f,d,h){var _,p;let u=Yn(n.context);d||(d=(_=u.createRawShaderProgramInjection)!=null?_:IC),h||(h=(p=u.createShaderProgramInjection)!=null?p:yC);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=h(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function CU(n,e,t,i,r,s){return MC(NA(n,t,i),e,r,s)}function MC(n,e,t,i){let r=t.createShader(e==="vertex"?t.VERTEX_SHADER:t.FRAGMENT_SHADER);if(!r){let s=t.NO_ERROR,a;for(;(a=t.getError())!==t.NO_ERROR;)s=a;throw new Error(`Something went wrong while creating a gl ${e} shader object. gl error=${s}, gl isContextLost=${t.isContextLost()}, _contextWasLost=${i}`)}return t.shaderSource(r,n),t.compileShader(r),r}function OU(n,e){e.useProgram(n)}function NU(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var bC,Ple,CC=I(()=>{MU();bf();bC=new WeakMap,Ple={_webGLVersion:2,cachedPipelines:{}}});var Dle,Lle,dl,GA=I(()=>{Dle="attribute",Lle="varying",dl=class{constructor(){this.children=[]}isValid(e){return!0}process(e,t,i){var s,a,o,l,c,f,d;let r="";if(this.line){let h=this.line,u=t.processor;if(u){u.lineProcessor&&(h=u.lineProcessor(h,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Dle,_=t.isFragment&&((o=t.processor)!=null&&o.varyingFragmentKeywordName)?(l=t.processor)==null?void 0:l.varyingFragmentKeywordName:!t.isFragment&&((c=t.processor)!=null&&c.varyingVertexKeywordName)?(f=t.processor)==null?void 0:f.varyingVertexKeywordName:Lle;!t.isFragment&&u.attributeProcessor&&this.line.startsWith(m)?h=u.attributeProcessor(this.line,e,t.processingContext):u.varyingProcessor&&((d=u.varyingCheck)!=null&&d.call(u,this.line,t.isFragment)||!u.varyingCheck&&this.line.startsWith(_))?h=u.varyingProcessor(this.line,t.isFragment,e,t.processingContext):u.uniformProcessor&&u.uniformRegexp&&u.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&u.uniformBufferRegexp&&u.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):u.textureProcessor&&u.textureRegexp&&u.textureRegexp.test(this.line)?h=u.textureProcessor(this.line,t.isFragment,e,t.processingContext):(u.uniformProcessor||u.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?u.uniformProcessor&&(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,u.endOfUniformBufferProcessor&&(h=u.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=h+` -`}for(let h of this.children)r+=h.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var kA,wU=I(()=>{kA=class{constructor(){this._lines=[]}get currentLine(){return this._lines[this.lineIndex]}get canRead(){return this.lineIndex1&&this._lines.push(i);else{let s=t.split(";");for(let a=0;a{GA();Sm=class extends dl{process(e,t,i){for(let r=0;r{GA();WA=class extends dl{isValid(e){return this.testExpression.isTrue(e)}}});var yn,Tm=I(()=>{yn=class n{isTrue(e){return!0}static postfixToInfix(e){let t=[];for(let i of e)if(n._OperatorPriority[i]===void 0)t.push(i);else{let r=t[t.length-1],s=t[t.length-2];t.length-=2,t.push(`(${s}${i}${r})`)}return t[t.length-1]}static infixToPostfix(e){let t=n._InfixToPostfixCache.get(e);if(t)return t.accessTime=Date.now(),t.result;if(!e.includes("&&")&&!e.includes("||")&&!e.includes(")")&&!e.includes("("))return[e];let i=[],r=-1,s=()=>{f=f.trim(),f!==""&&(i.push(f),f="")},a=d=>{rn._Stack[r],l=()=>r===-1?"!!INVALID EXPRESSION!!":n._Stack[r--],c=0,f="";for(;c1){for(s();r!==-1&&n._OperatorPriority[o()]>=n._OperatorPriority[h];)i.push(l());a(h),c++}else f+=d;c++}for(s();r!==-1;)o()==="("?l():i.push(l());return n._InfixToPostfixCache.size>=n.InfixToPostfixCacheLimitSize&&n.ClearCache(),n._InfixToPostfixCache.set(e,{result:i,accessTime:Date.now()}),i}static ClearCache(){let e=Array.from(n._InfixToPostfixCache.entries()).sort((t,i)=>t[1].accessTime-i[1].accessTime);for(let t=0;t{Tm();oh=class extends yn{constructor(e,t=!1){super(),this.define=e,this.not=t}isTrue(e){let t=e[this.define]!==void 0;return this.not&&(t=!t),t}}});var HA,VU=I(()=>{Tm();HA=class extends yn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var zA,GU=I(()=>{Tm();zA=class extends yn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var XA,kU=I(()=>{Tm();XA=class extends yn{constructor(e,t,i){super(),this.define=e,this.operand=t,this.testValue=i}toString(){return`${this.define} ${this.operand} ${this.testValue}`}isTrue(e){let t=!1,i=parseInt(e[this.define]!=null?e[this.define]:this.define),r=parseInt(e[this.testValue]!=null?e[this.testValue]:this.testValue);if(isNaN(i)||isNaN(r))return!1;switch(this.operand){case">":t=i>r;break;case"<":t=i=":t=i>=r;break;case"==":t=i===r;break;case"!=":t=i!==r;break}return t}}});function zU(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function NC(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),Cg(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=kle(s,e,i);t(a,s)})}function XU(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function Ble(n,e){var i;if((i=e.processor)!=null&&i.noPrecision)return n;let t=e.shouldUseHighPrecisionShader;return n.indexOf("precision highp float")===-1?t?n=`precision highp float; +`:"",c=CU(e,"vertex",i,l,r,o._contextWasLost),f=CU(t,"fragment",i,l,r,o._contextWasLost);return a(n,c,f,r,s,o.validateShaderPrograms)}function PU(n,e){let t=new NA,i=Yn(n);return i.parallelShaderCompile&&!i.disableParallelShaderCompile&&(t.isParallelCompiled=!0),t.context=i._context,t}function VA(n,e,t,i,r=null,s){let a=i.createProgram();if(n.program=a,!a)throw new Error("Unable to create program");return i.attachShader(a,e),i.attachShader(a,t),i.linkProgram(a),n.context=i,n.vertexShader=e,n.fragmentShader=t,n.isParallelCompiled||GA(n,i,s),a}function DU(n,e,t){let i=n;if(i._isDisposed)return!1;let r=Yn(e);return r&&r.parallelShaderCompile&&r.parallelShaderCompile.COMPLETION_STATUS_KHR&&i.program&&e.getProgramParameter(i.program,r.parallelShaderCompile.COMPLETION_STATUS_KHR)?(GA(i,e,t),!0):!1}function GA(n,e,t){let i=n.context,r=n.vertexShader,s=n.fragmentShader,a=n.program;if(!i.getProgramParameter(a,i.LINK_STATUS)){if(!e.getShaderParameter(r,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(r);if(c)throw n.vertexCompilationError=c,new Error("VERTEX SHADER "+c)}if(!e.getShaderParameter(s,e.COMPILE_STATUS)){let c=e.getShaderInfoLog(s);if(c)throw n.fragmentCompilationError=c,new Error("FRAGMENT SHADER "+c)}let l=i.getProgramInfoLog(a);if(l)throw n.programLinkError=l,new Error(l)}if(t&&(i.validateProgram(a),!i.getProgramParameter(a,i.VALIDATE_STATUS))){let c=i.getProgramInfoLog(a);if(c)throw n.programValidationError=c,new Error(c)}i.deleteShader(r),i.deleteShader(s),n.vertexShader=void 0,n.fragmentShader=void 0,n.onCompiled&&(n.onCompiled(),n.onCompiled=void 0)}function LU(n,e,t,i,r,s,a,o,l,c="",f,d,h){var _,p;let u=Yn(n.context);d||(d=(_=u.createRawShaderProgramInjection)!=null?_:IC),h||(h=(p=u.createShaderProgramInjection)!=null?p:yC);let m=n;i?m.program=d(m,e,t,m.context,l):m.program=h(m,e,t,o,m.context,l),m.program.__SPECTOR_rebuildProgram=a,f()}function CU(n,e,t,i,r,s){return MC(wA(n,t,i),e,r,s)}function MC(n,e,t,i){let r=t.createShader(e==="vertex"?t.VERTEX_SHADER:t.FRAGMENT_SHADER);if(!r){let s=t.NO_ERROR,a;for(;(a=t.getError())!==t.NO_ERROR;)s=a;throw new Error(`Something went wrong while creating a gl ${e} shader object. gl error=${s}, gl isContextLost=${t.isContextLost()}, _contextWasLost=${i}`)}return t.shaderSource(r,n),t.compileShader(r),r}function OU(n,e){e.useProgram(n)}function NU(n,e){let t=n;if(!t.isParallelCompiled){e(n);return}let i=t.onCompiled;t.onCompiled=()=>{i==null||i(),e(n)}}var bC,Ple,CC=I(()=>{MU();bf();bC=new WeakMap,Ple={_webGLVersion:2,cachedPipelines:{}}});var Dle,Lle,dl,kA=I(()=>{Dle="attribute",Lle="varying",dl=class{constructor(){this.children=[]}isValid(e){return!0}process(e,t,i){var s,a,o,l,c,f,d;let r="";if(this.line){let h=this.line,u=t.processor;if(u){u.lineProcessor&&(h=u.lineProcessor(h,t.isFragment,t.processingContext));let m=(a=(s=t.processor)==null?void 0:s.attributeKeywordName)!=null?a:Dle,_=t.isFragment&&((o=t.processor)!=null&&o.varyingFragmentKeywordName)?(l=t.processor)==null?void 0:l.varyingFragmentKeywordName:!t.isFragment&&((c=t.processor)!=null&&c.varyingVertexKeywordName)?(f=t.processor)==null?void 0:f.varyingVertexKeywordName:Lle;!t.isFragment&&u.attributeProcessor&&this.line.startsWith(m)?h=u.attributeProcessor(this.line,e,t.processingContext):u.varyingProcessor&&((d=u.varyingCheck)!=null&&d.call(u,this.line,t.isFragment)||!u.varyingCheck&&this.line.startsWith(_))?h=u.varyingProcessor(this.line,t.isFragment,e,t.processingContext):u.uniformProcessor&&u.uniformRegexp&&u.uniformRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&u.uniformBufferRegexp&&u.uniformBufferRegexp.test(this.line)?t.lookForClosingBracketForUniformBuffer||(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0):u.textureProcessor&&u.textureRegexp&&u.textureRegexp.test(this.line)?h=u.textureProcessor(this.line,t.isFragment,e,t.processingContext):(u.uniformProcessor||u.uniformBufferProcessor)&&this.line.startsWith("uniform")&&!t.lookForClosingBracketForUniformBuffer&&(/uniform\s+(?:(?:highp)?|(?:lowp)?)\s*(\S+)\s+(\S+)\s*;/.test(this.line)?u.uniformProcessor&&(h=u.uniformProcessor(this.line,t.isFragment,e,t.processingContext)):u.uniformBufferProcessor&&(h=u.uniformBufferProcessor(this.line,t.isFragment,t.processingContext),t.lookForClosingBracketForUniformBuffer=!0)),t.lookForClosingBracketForUniformBuffer&&this.line.indexOf("}")!==-1&&(t.lookForClosingBracketForUniformBuffer=!1,u.endOfUniformBufferProcessor&&(h=u.endOfUniformBufferProcessor(this.line,t.isFragment,t.processingContext)))}r+=h+` +`}for(let h of this.children)r+=h.process(e,t,i);return this.additionalDefineKey&&(e[this.additionalDefineKey]=this.additionalDefineValue||"true",i[this.additionalDefineKey]=e[this.additionalDefineKey]),r}}});var WA,wU=I(()=>{WA=class{constructor(){this._lines=[]}get currentLine(){return this._lines[this.lineIndex]}get canRead(){return this.lineIndex1&&this._lines.push(i);else{let s=t.split(";");for(let a=0;a{kA();Sm=class extends dl{process(e,t,i){for(let r=0;r{kA();HA=class extends dl{isValid(e){return this.testExpression.isTrue(e)}}});var yn,Tm=I(()=>{yn=class n{isTrue(e){return!0}static postfixToInfix(e){let t=[];for(let i of e)if(n._OperatorPriority[i]===void 0)t.push(i);else{let r=t[t.length-1],s=t[t.length-2];t.length-=2,t.push(`(${s}${i}${r})`)}return t[t.length-1]}static infixToPostfix(e){let t=n._InfixToPostfixCache.get(e);if(t)return t.accessTime=Date.now(),t.result;if(!e.includes("&&")&&!e.includes("||")&&!e.includes(")")&&!e.includes("("))return[e];let i=[],r=-1,s=()=>{f=f.trim(),f!==""&&(i.push(f),f="")},a=d=>{rn._Stack[r],l=()=>r===-1?"!!INVALID EXPRESSION!!":n._Stack[r--],c=0,f="";for(;c1){for(s();r!==-1&&n._OperatorPriority[o()]>=n._OperatorPriority[h];)i.push(l());a(h),c++}else f+=d;c++}for(s();r!==-1;)o()==="("?l():i.push(l());return n._InfixToPostfixCache.size>=n.InfixToPostfixCacheLimitSize&&n.ClearCache(),n._InfixToPostfixCache.set(e,{result:i,accessTime:Date.now()}),i}static ClearCache(){let e=Array.from(n._InfixToPostfixCache.entries()).sort((t,i)=>t[1].accessTime-i[1].accessTime);for(let t=0;t{Tm();oh=class extends yn{constructor(e,t=!1){super(),this.define=e,this.not=t}isTrue(e){let t=e[this.define]!==void 0;return this.not&&(t=!t),t}}});var zA,VU=I(()=>{Tm();zA=class extends yn{isTrue(e){return this.leftOperand.isTrue(e)||this.rightOperand.isTrue(e)}}});var XA,GU=I(()=>{Tm();XA=class extends yn{isTrue(e){return this.leftOperand.isTrue(e)&&this.rightOperand.isTrue(e)}}});var YA,kU=I(()=>{Tm();YA=class extends yn{constructor(e,t,i){super(),this.define=e,this.operand=t,this.testValue=i}toString(){return`${this.define} ${this.operand} ${this.testValue}`}isTrue(e){let t=!1,i=parseInt(e[this.define]!=null?e[this.define]:this.define),r=parseInt(e[this.testValue]!=null?e[this.testValue]:this.testValue);if(isNaN(i)||isNaN(r))return!1;switch(this.operand){case">":t=i>r;break;case"<":t=i=":t=i>=r;break;case"==":t=i===r;break;case"!=":t=i!==r;break}return t}}});function zU(n){n.processor&&n.processor.initializeShaders&&n.processor.initializeShaders(n.processingContext)}function NC(n,e,t,i){var r;(r=e.processor)!=null&&r.preProcessShaderCode&&(n=e.processor.preProcessShaderCode(n,e.isFragment)),Cg(n,e,s=>{e.processCodeAfterIncludes&&(s=e.processCodeAfterIncludes(e.isFragment?"fragment":"vertex",s,e.defines));let a=kle(s,e,i);t(a,s)})}function XU(n,e,t){return!t.processor||!t.processor.finalizeShaders?{vertexCode:n,fragmentCode:e}:t.processor.finalizeShaders(n,e,t.processingContext)}function Ble(n,e){var i;if((i=e.processor)!=null&&i.noPrecision)return n;let t=e.shouldUseHighPrecisionShader;return n.indexOf("precision highp float")===-1?t?n=`precision highp float; `+n:n=`precision mediump float; -`+n:t||(n=n.replace("precision highp float","precision mediump float")),n}function DC(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new oh(t[1].trim(),n[0]==="!");let i=["==","!=",">=","<=","<",">"],r="",s=0;for(r of i)if(s=n.indexOf(r),s>-1)break;if(s===-1)return new oh(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new XA(a,r,o)}function Ule(n){n=n.replace(Ole,"defined[$1]");let e=yn.infixToPostfix(n),t=[];for(let r of e)if(r!=="||"&&r!=="&&")t.push(r);else if(t.length>=2){let s=t[t.length-1],a=t[t.length-2];t.length-=2;let o=r=="&&"?new zA:new HA;typeof s=="string"&&(s=s.replace(PC,"defined($1)")),typeof a=="string"&&(a=a.replace(PC,"defined($1)")),o.leftOperand=typeof a=="string"?DC(a):a,o.rightOperand=typeof s=="string"?DC(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace(PC,"defined($1)")),typeof i=="string"?DC(i):i}function KA(n,e){let t=new WA,i=n.substring(0,e),r=n.substring(e);return r=r.substring(0,(r.indexOf("//")+1||r.length+1)-1).trim(),i==="#ifdef"?t.testExpression=new oh(r):i==="#ifndef"?t.testExpression=new oh(r,!0):t.testExpression=Ule(r),t}function LC(n,e,t,i){let r;for(;OC(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new dl;e.children.push(a),OC(n,a,i);return}else if(s==="#elif"){let a=KA(r,5);e.children.push(a),t=a}}}function OC(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=Fle.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new Sm;e.children.push(o);let l=KA(i,6);o.children.push(l),LC(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new Sm;e.children.push(o);let l=KA(i,7);o.children.push(l),LC(n,o,l,t);break}case"#if":{let o=new Sm,l=KA(i,3);e.children.push(o),o.children.push(l),LC(n,o,l,t);break}}continue}}let r=new dl;if(r.line=i,e.children.push(r),i[0]==="#"&&i[1]==="d"){let s=i.replace(";","").split(" ");r.additionalDefineKey=s[1],s.length===3&&(r.additionalDefineValue=s[2])}}return!1}function Vle(n,e,t,i){let r=new dl,s=new kA;return s.lineIndex=-1,s.lines=n.split(` -`),OC(s,r,i),r.process(e,t,i)}function Gle(n,e){var r;let t=n.defines,i={};for(let s of t){let o=s.replace("#define","").replace(";","").trim().split(" ");i[o[0]]=o.length>1?o[1]:""}return((r=n.processor)==null?void 0:r.shaderLanguage)===0&&(i.GL_ES="true"),i.__VERSION__=n.version,i[n.platformName]="true",FA(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function kle(n,e,t){let i=Ble(n,e);if(!e.processor||e.processor.shaderLanguage===0&&i.indexOf("#version 3")!==-1&&(i=i.replace("#version 300 es",""),!e.processor.parseGLES3))return i;let r=e.defines,s=Gle(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Vle(i,s,e,a),e.processor.postProcessor&&(i=e.processor.postProcessor(i,r,e.isFragment,e.processingContext,t?{drawBuffersExtensionDisabled:!t.getCaps().drawBuffersExtension}:{},s,a)),t!=null&&t._features.needShaderCodeInlining&&(i=t.inlineShaderCode(i)),i}function Cg(n,e,t){YA.length=0;let i;for(;(i=Nle.exec(n))!==null;)YA.push(i);let r=[n],s=!1;for(let o of YA){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(wle,""),e.supportsUniformBuffers&&(l=l.replace("Vertex","Ubo").replace("Fragment","Ubo")),l=l+"Declaration"),e.includesShadersStore[l]){let c=e.includesShadersStore[l];if(o[2]){let d=o[3].split(",");for(let h=0;hv+"{X}")),c+=_.replace(HU,p.toString())+` -`}else e.supportsUniformBuffers||(c=c.replace(WU,(h,u)=>u+"{X}")),c=c.replace(HU,d)}let f=[];for(let d of r){let h=d.split(o[0]);for(let u=0;u=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";wC.loadFile(c,f=>{e.includesShadersStore[l]=f,Cg(r.join(""),e,t)});return}}YA.length=0;let a=r.join("");s?Cg(a.toString(),e,t):t(a)}var Ole,PC,Nle,wle,WU,HU,YA,Fle,wC,jA=I(()=>{GA();wU();FU();BU();UU();VU();GU();Tm();kU();Sn();bf();Ole=/defined\s*?\((.+?)\)/g,PC=/defined\s*?\[(.+?)\]/g,Nle=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,wle=/__decl__/,WU=/light\{X\}.(\w*)/g,HU=/\{X\}/g,YA=[],Fle=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;wC={loadFile:(n,e,t,i,r,s)=>{throw Qe("FileTools")}}});function KU(n,e){return Yn(e).cachedPipelines[n]}function ZA(n){let e=n._name,t=n.context;if(e&&t){let i=Yn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function jU(n,e,t,i,r,s,a){let o,l,c=Er()?s==null?void 0:s.getHostDocument():null;typeof e=="string"?o=e:typeof e.vertexSource=="string"?o="source:"+e.vertexSource:typeof e.vertexElement=="string"?o=(c==null?void 0:c.getElementById(e.vertexElement))||e.vertexElement:o=e.vertex||e,typeof e=="string"?l=e:typeof e.fragmentSource=="string"?l="source:"+e.fragmentSource:typeof e.fragmentElement=="string"?l=(c==null?void 0:c.getElementById(e.fragmentElement))||e.fragmentElement:l=e.fragment||e;let f=[void 0,void 0],d=()=>{if(f[0]&&f[1]){let[h,u]=f;zU(n),NC(h,n,(m,_)=>{a&&(a._vertexSourceCodeBeforeMigration=_),t&&(m=t("vertex",m)),n.isFragment=!0,NC(u,n,(p,g)=>{a&&(a._fragmentSourceCodeBeforeMigration=g),t&&(p=t("fragment",p));let v=XU(m,p,n);n=null;let T=Wle(v.vertexCode,v.fragmentCode,e,r);i==null||i(T.vertexSourceCode,T.fragmentSourceCode)},s)},s)}};YU(o,"Vertex","",h=>{a&&(a._rawVertexSourceCode=h),f[0]=h,d()},r),YU(l,"Fragment","Pixel",h=>{a&&(a._rawFragmentSourceCode=h),f[1]=h,d()},r)}function YU(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=LA(n);i(l);return}if(n.substring(0,7)==="source:"){i(n.substring(7));return}if(n.substring(0,7)==="base64:"){let l=window.atob(n.substring(7));i(l);return}let a=x.GetShadersStore(r);if(a[n+e+"Shader"]){i(a[n+e+"Shader"]);return}if(t&&a[n+t+"Shader"]){i(a[n+t+"Shader"]);return}let o;if(n[0]==="."||n[0]==="/"||n.indexOf("http")>-1?o=n:o=x.GetShadersRepository(r)+n,s=s||wA,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function Wle(n,e,t,i){if(t){let r=t.vertexElement||t.vertex||t.spectorName||t,s=t.fragmentElement||t.fragment||t.spectorName||t;return{vertexSourceCode:(i===1?"//":"")+"#define SHADER_NAME vertex:"+r+` +`+n:t||(n=n.replace("precision highp float","precision mediump float")),n}function DC(n){let t=/defined\((.+)\)/.exec(n);if(t&&t.length)return new oh(t[1].trim(),n[0]==="!");let i=["==","!=",">=","<=","<",">"],r="",s=0;for(r of i)if(s=n.indexOf(r),s>-1)break;if(s===-1)return new oh(n);let a=n.substring(0,s).trim(),o=n.substring(s+r.length).trim();return new YA(a,r,o)}function Ule(n){n=n.replace(Ole,"defined[$1]");let e=yn.infixToPostfix(n),t=[];for(let r of e)if(r!=="||"&&r!=="&&")t.push(r);else if(t.length>=2){let s=t[t.length-1],a=t[t.length-2];t.length-=2;let o=r=="&&"?new XA:new zA;typeof s=="string"&&(s=s.replace(PC,"defined($1)")),typeof a=="string"&&(a=a.replace(PC,"defined($1)")),o.leftOperand=typeof a=="string"?DC(a):a,o.rightOperand=typeof s=="string"?DC(s):s,t.push(o)}let i=t[t.length-1];return typeof i=="string"&&(i=i.replace(PC,"defined($1)")),typeof i=="string"?DC(i):i}function jA(n,e){let t=new HA,i=n.substring(0,e),r=n.substring(e);return r=r.substring(0,(r.indexOf("//")+1||r.length+1)-1).trim(),i==="#ifdef"?t.testExpression=new oh(r):i==="#ifndef"?t.testExpression=new oh(r,!0):t.testExpression=Ule(r),t}function LC(n,e,t,i){let r;for(;OC(n,t,i);){r=n.currentLine;let s=r.substring(0,5).toLowerCase();if(s==="#else"){let a=new dl;e.children.push(a),OC(n,a,i);return}else if(s==="#elif"){let a=jA(r,5);e.children.push(a),t=a}}}function OC(n,e,t){for(;n.canRead;){n.lineIndex++;let i=n.currentLine;if(i.indexOf("#")>=0){let s=Fle.exec(i);if(s&&s.length){switch(s[0]){case"#ifdef":{let o=new Sm;e.children.push(o);let l=jA(i,6);o.children.push(l),LC(n,o,l,t);break}case"#else":case"#elif":return!0;case"#endif":return!1;case"#ifndef":{let o=new Sm;e.children.push(o);let l=jA(i,7);o.children.push(l),LC(n,o,l,t);break}case"#if":{let o=new Sm,l=jA(i,3);e.children.push(o),o.children.push(l),LC(n,o,l,t);break}}continue}}let r=new dl;if(r.line=i,e.children.push(r),i[0]==="#"&&i[1]==="d"){let s=i.replace(";","").split(" ");r.additionalDefineKey=s[1],s.length===3&&(r.additionalDefineValue=s[2])}}return!1}function Vle(n,e,t,i){let r=new dl,s=new WA;return s.lineIndex=-1,s.lines=n.split(` +`),OC(s,r,i),r.process(e,t,i)}function Gle(n,e){var r;let t=n.defines,i={};for(let s of t){let o=s.replace("#define","").replace(";","").trim().split(" ");i[o[0]]=o.length>1?o[1]:""}return((r=n.processor)==null?void 0:r.shaderLanguage)===0&&(i.GL_ES="true"),i.__VERSION__=n.version,i[n.platformName]="true",BA(i,e==null?void 0:e.isNDCHalfZRange,e==null?void 0:e.useReverseDepthBuffer,e==null?void 0:e.useExactSrgbConversions),i}function kle(n,e,t){let i=Ble(n,e);if(!e.processor||e.processor.shaderLanguage===0&&i.indexOf("#version 3")!==-1&&(i=i.replace("#version 300 es",""),!e.processor.parseGLES3))return i;let r=e.defines,s=Gle(e,t);e.processor.preProcessor&&(i=e.processor.preProcessor(i,r,s,e.isFragment,e.processingContext));let a={};return i=Vle(i,s,e,a),e.processor.postProcessor&&(i=e.processor.postProcessor(i,r,e.isFragment,e.processingContext,t?{drawBuffersExtensionDisabled:!t.getCaps().drawBuffersExtension}:{},s,a)),t!=null&&t._features.needShaderCodeInlining&&(i=t.inlineShaderCode(i)),i}function Cg(n,e,t){KA.length=0;let i;for(;(i=Nle.exec(n))!==null;)KA.push(i);let r=[n],s=!1;for(let o of KA){let l=o[1];if(l.indexOf("__decl__")!==-1&&(l=l.replace(wle,""),e.supportsUniformBuffers&&(l=l.replace("Vertex","Ubo").replace("Fragment","Ubo")),l=l+"Declaration"),e.includesShadersStore[l]){let c=e.includesShadersStore[l];if(o[2]){let d=o[3].split(",");for(let h=0;hv+"{X}")),c+=_.replace(HU,p.toString())+` +`}else e.supportsUniformBuffers||(c=c.replace(WU,(h,u)=>u+"{X}")),c=c.replace(HU,d)}let f=[];for(let d of r){let h=d.split(o[0]);for(let u=0;u=0||c.indexOf("#include <")>=0}else{let c=e.shadersRepository+"ShadersInclude/"+l+".fx";wC.loadFile(c,f=>{e.includesShadersStore[l]=f,Cg(r.join(""),e,t)});return}}KA.length=0;let a=r.join("");s?Cg(a.toString(),e,t):t(a)}var Ole,PC,Nle,wle,WU,HU,KA,Fle,wC,ZA=I(()=>{kA();wU();FU();BU();UU();VU();GU();Tm();kU();Sn();bf();Ole=/defined\s*?\((.+?)\)/g,PC=/defined\s*?\[(.+?)\]/g,Nle=/#include\s?<(.+)>(\((.*)\))*(\[(.*)\])*/g,wle=/__decl__/,WU=/light\{X\}.(\w*)/g,HU=/\{X\}/g,KA=[],Fle=/(#ifdef)|(#else)|(#elif)|(#endif)|(#ifndef)|(#if)/;wC={loadFile:(n,e,t,i,r,s)=>{throw Qe("FileTools")}}});function KU(n,e){return Yn(e).cachedPipelines[n]}function qA(n){let e=n._name,t=n.context;if(e&&t){let i=Yn(t),r=i.cachedPipelines[e];r==null||r.dispose(),delete i.cachedPipelines[e]}}function jU(n,e,t,i,r,s,a){let o,l,c=Er()?s==null?void 0:s.getHostDocument():null;typeof e=="string"?o=e:typeof e.vertexSource=="string"?o="source:"+e.vertexSource:typeof e.vertexElement=="string"?o=(c==null?void 0:c.getElementById(e.vertexElement))||e.vertexElement:o=e.vertex||e,typeof e=="string"?l=e:typeof e.fragmentSource=="string"?l="source:"+e.fragmentSource:typeof e.fragmentElement=="string"?l=(c==null?void 0:c.getElementById(e.fragmentElement))||e.fragmentElement:l=e.fragment||e;let f=[void 0,void 0],d=()=>{if(f[0]&&f[1]){let[h,u]=f;zU(n),NC(h,n,(m,_)=>{a&&(a._vertexSourceCodeBeforeMigration=_),t&&(m=t("vertex",m)),n.isFragment=!0,NC(u,n,(p,g)=>{a&&(a._fragmentSourceCodeBeforeMigration=g),t&&(p=t("fragment",p));let v=XU(m,p,n);n=null;let T=Wle(v.vertexCode,v.fragmentCode,e,r);i==null||i(T.vertexSourceCode,T.fragmentSourceCode)},s)},s)}};YU(o,"Vertex","",h=>{a&&(a._rawVertexSourceCode=h),f[0]=h,d()},r),YU(l,"Fragment","Pixel",h=>{a&&(a._rawFragmentSourceCode=h),f[1]=h,d()},r)}function YU(n,e,t,i,r,s){if(typeof HTMLElement!="undefined"&&n instanceof HTMLElement){let l=OA(n);i(l);return}if(n.substring(0,7)==="source:"){i(n.substring(7));return}if(n.substring(0,7)==="base64:"){let l=window.atob(n.substring(7));i(l);return}let a=x.GetShadersStore(r);if(a[n+e+"Shader"]){i(a[n+e+"Shader"]);return}if(t&&a[n+t+"Shader"]){i(a[n+t+"Shader"]);return}let o;if(n[0]==="."||n[0]==="/"||n.indexOf("http")>-1?o=n:o=x.GetShadersRepository(r)+n,s=s||FA,!s)throw new Error("loadFileInjection is not defined");s(o+"."+e.toLowerCase()+".fx",i)}function Wle(n,e,t,i){if(t){let r=t.vertexElement||t.vertex||t.spectorName||t,s=t.fragmentElement||t.fragment||t.spectorName||t;return{vertexSourceCode:(i===1?"//":"")+"#define SHADER_NAME vertex:"+r+` `+n,fragmentSourceCode:(i===1?"//":"")+"#define SHADER_NAME fragment:"+s+` -`+e}}else return{vertexSourceCode:n,fragmentSourceCode:e}}var ZU,FC=I(()=>{Oa();CC();k();Lt();jA();bf();ZU=(n,e,t,i)=>{try{let r=n.context?Yn(n.context):null;r&&(r.disableParallelShaderCompile=n.disableParallelCompilation);let s=n.existingPipelineContext||e(n.shaderProcessingContext);return s._name=n.name,n.name&&r&&(r.cachedPipelines[n.name]=s),t(s,n.vertex,n.fragment,!!n.createAsRaw,"","",n.rebuildRebind,n.defines,n.transformFeedbackVaryings,"",()=>{i(s,()=>{var a;(a=n.onRenderingStateCompiled)==null||a.call(n,s)})}),s}catch(r){throw ee.Error("Error compiling effect"),r}}});function qU(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var qA,vo,hl,ul=I(()=>{qA=[],vo=class{static SetImmediate(e){qA.length===0&&setTimeout(()=>{let t=qA;qA=[];for(let i of t)i()},1),qA.push(e)}};hl=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&qU(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!qU(n,e,t)){if(r-=i,r<0){t==null||t(new Error("Operation timed out after maximum retries. "+(a||"")),!0);return}l=setTimeout(c,i)}};return l=setTimeout(c,i),()=>{o=!0,l!==null&&clearTimeout(l)}}});var hr,lh=I(()=>{mi();Lt();k();FC();ul();hr=class n{static get ShadersRepository(){return x.ShadersRepository}static set ShadersRepository(e){x.ShadersRepository=e}get isDisposed(){return this._isDisposed}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new te),this._onBindObservable}get shaderLanguage(){return this._shaderLanguage}constructor(e,t,i,r=null,s,a=null,o=null,l=null,c=null,f,d="",h=0,u){var p,g,v,T;this.defines="",this.onCompiled=null,this.onError=null,this.onBind=null,this.uniqueId=0,this.onCompileObservable=new te,this.onErrorObservable=new te,this._onBindObservable=null,this._isDisposed=!1,this._refCount=1,this._bonesComputationForcedToCPU=!1,this._uniformBuffersNames={},this._multiTarget=!1,this._samplers={},this._isReady=!1,this._compilationError="",this._allFallbacksProcessed=!1,this._uniforms={},this._key="",this._fallbacks=null,this._vertexSourceCodeOverride="",this._fragmentSourceCodeOverride="",this._transformFeedbackVaryings=null,this._disableParallelShaderCompilation=!1,this._pipelineContext=null,this._vertexSourceCode="",this._fragmentSourceCode="",this._vertexSourceCodeBeforeMigration="",this._fragmentSourceCodeBeforeMigration="",this._rawVertexSourceCode="",this._rawFragmentSourceCode="",this._processCodeAfterIncludes=void 0,this._processFinalCode=null,this._onReleaseEffectsObserver=null,this.name=e,this._key=d;let m=this._key.replace(/\r/g,"").replace(/\n/g,"|"),_;if(t.attributes){let S=t;if(this._engine=i,this._attributesNames=S.attributes,this._uniformsNames=S.uniformsNames.concat(S.samplers),this._samplerList=S.samplers.slice(),this.defines=S.defines,this.onError=S.onError,this.onCompiled=S.onCompiled,this._fallbacks=S.fallbacks,this._indexParameters=S.indexParameters,this._transformFeedbackVaryings=S.transformFeedbackVaryings||null,this._multiTarget=!!S.multiTarget,this._shaderLanguage=(p=S.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!S.disableParallelShaderCompilation,S.uniformBuffersNames){this._uniformBuffersNamesList=S.uniformBuffersNames.slice();for(let E=0;E{this._onReleaseEffectsObserver=null,!this.isDisposed&&this.dispose(!0)})}async _processShaderCodeAsync(e=null,t=!1,i=null,r){r&&await r(),this._processingContext=i||this._engine._getShaderProcessingContext(this._shaderLanguage,!1);let s={defines:this.defines.split(` +`+e}}else return{vertexSourceCode:n,fragmentSourceCode:e}}var ZU,FC=I(()=>{Oa();CC();k();Lt();ZA();bf();ZU=(n,e,t,i)=>{try{let r=n.context?Yn(n.context):null;r&&(r.disableParallelShaderCompile=n.disableParallelCompilation);let s=n.existingPipelineContext||e(n.shaderProcessingContext);return s._name=n.name,n.name&&r&&(r.cachedPipelines[n.name]=s),t(s,n.vertex,n.fragment,!!n.createAsRaw,"","",n.rebuildRebind,n.defines,n.transformFeedbackVaryings,"",()=>{i(s,()=>{var a;(a=n.onRenderingStateCompiled)==null||a.call(n,s)})}),s}catch(r){throw ee.Error("Error compiling effect"),r}}});function qU(n,e,t){try{if(n())return e(),!0}catch(i){return t==null||t(i),!0}return!1}var QA,vo,hl,ul=I(()=>{QA=[],vo=class{static SetImmediate(e){QA.length===0&&setTimeout(()=>{let t=QA;QA=[];for(let i of t)i()},1),QA.push(e)}};hl=(n,e,t,i=16,r=3e4,s=!0,a)=>{if(s&&qU(n,e,t))return null;let o=!1,l=null,c=()=>{if(!o&&!qU(n,e,t)){if(r-=i,r<0){t==null||t(new Error("Operation timed out after maximum retries. "+(a||"")),!0);return}l=setTimeout(c,i)}};return l=setTimeout(c,i),()=>{o=!0,l!==null&&clearTimeout(l)}}});var hr,lh=I(()=>{mi();Lt();k();FC();ul();hr=class n{static get ShadersRepository(){return x.ShadersRepository}static set ShadersRepository(e){x.ShadersRepository=e}get isDisposed(){return this._isDisposed}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new te),this._onBindObservable}get shaderLanguage(){return this._shaderLanguage}constructor(e,t,i,r=null,s,a=null,o=null,l=null,c=null,f,d="",h=0,u){var p,g,v,T;this.defines="",this.onCompiled=null,this.onError=null,this.onBind=null,this.uniqueId=0,this.onCompileObservable=new te,this.onErrorObservable=new te,this._onBindObservable=null,this._isDisposed=!1,this._refCount=1,this._bonesComputationForcedToCPU=!1,this._uniformBuffersNames={},this._multiTarget=!1,this._samplers={},this._isReady=!1,this._compilationError="",this._allFallbacksProcessed=!1,this._uniforms={},this._key="",this._fallbacks=null,this._vertexSourceCodeOverride="",this._fragmentSourceCodeOverride="",this._transformFeedbackVaryings=null,this._disableParallelShaderCompilation=!1,this._pipelineContext=null,this._vertexSourceCode="",this._fragmentSourceCode="",this._vertexSourceCodeBeforeMigration="",this._fragmentSourceCodeBeforeMigration="",this._rawVertexSourceCode="",this._rawFragmentSourceCode="",this._processCodeAfterIncludes=void 0,this._processFinalCode=null,this._onReleaseEffectsObserver=null,this.name=e,this._key=d;let m=this._key.replace(/\r/g,"").replace(/\n/g,"|"),_;if(t.attributes){let S=t;if(this._engine=i,this._attributesNames=S.attributes,this._uniformsNames=S.uniformsNames.concat(S.samplers),this._samplerList=S.samplers.slice(),this.defines=S.defines,this.onError=S.onError,this.onCompiled=S.onCompiled,this._fallbacks=S.fallbacks,this._indexParameters=S.indexParameters,this._transformFeedbackVaryings=S.transformFeedbackVaryings||null,this._multiTarget=!!S.multiTarget,this._shaderLanguage=(p=S.shaderLanguage)!=null?p:0,this._disableParallelShaderCompilation=!!S.disableParallelShaderCompilation,S.uniformBuffersNames){this._uniformBuffersNamesList=S.uniformBuffersNames.slice();for(let E=0;E{this._onReleaseEffectsObserver=null,!this.isDisposed&&this.dispose(!0)})}async _processShaderCodeAsync(e=null,t=!1,i=null,r){r&&await r(),this._processingContext=i||this._engine._getShaderProcessingContext(this._shaderLanguage,!1);let s={defines:this.defines.split(` `),indexParameters:this._indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:e!=null?e:this._engine._getShaderProcessor(this._shaderLanguage),supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:x.GetShadersRepository(this._shaderLanguage),includesShadersStore:x.GetIncludesShadersStore(this._shaderLanguage),version:(this._engine.version*100).toString(),platformName:this._engine.shaderPlatformName,processingContext:this._processingContext,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,processCodeAfterIncludes:this._processCodeAfterIncludes};jU(s,this.name,this._processFinalCode,(a,o)=>{this._vertexSourceCode=a,this._fragmentSourceCode=o,this._prepareEffect(t)},this._shaderLanguage,this._engine,this)}get key(){return this._key}isReady(){try{return this._isReadyInternal()}catch(e){return!1}}_isReadyInternal(){return this._engine.isDisposed||this._isReady?!0:this._pipelineContext?this._pipelineContext.isReady:!1}getEngine(){return this._engine}getPipelineContext(){return this._pipelineContext}getAttributesNames(){return this._attributesNames}getAttributeLocation(e){return this._attributes[e]}getAttributeLocationByName(e){return this._attributeLocationByName[e]}getAttributesCount(){return this._attributes.length}getUniformIndex(e){return this._uniformsNames.indexOf(e)}getUniform(e){return this._uniforms[e]}getSamplers(){return this._samplerList}getUniformNames(){return this._uniformsNames}getUniformBuffersNames(){return this._uniformBuffersNamesList}getIndexParameters(){return this._indexParameters}getCompilationError(){return this._compilationError}allFallbacksProcessed(){return this._allFallbacksProcessed}async whenCompiledAsync(){return await new Promise(e=>{this.executeWhenCompiled(e)})}executeWhenCompiled(e){if(this.isReady()){e(this);return}this.onCompileObservable.add(t=>{e(t)}),(!this._pipelineContext||this._pipelineContext.isAsync)&&this._checkIsReady(null)}_checkIsReady(e){hl(()=>this._isReadyInternal()||this._isDisposed,()=>{},t=>{this._processCompilationErrors(t,e)},16,12e4,!0,` - Effect: ${typeof this.name=="string"?this.name:this.key}`)}get vertexSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._vertexSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getVertexShaderCode())!=null?t:this._vertexSourceCode}get fragmentSourceCode(){var e,t;return this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride?this._fragmentSourceCodeOverride:(t=(e=this._pipelineContext)==null?void 0:e._getFragmentShaderCode())!=null?t:this._fragmentSourceCode}get vertexSourceCodeBeforeMigration(){return this._vertexSourceCodeBeforeMigration}get fragmentSourceCodeBeforeMigration(){return this._fragmentSourceCodeBeforeMigration}get rawVertexSourceCode(){return this._rawVertexSourceCode}get rawFragmentSourceCode(){return this._rawFragmentSourceCode}getPipelineGenerationOptions(){return{platformName:this._engine.shaderPlatformName,shaderLanguage:this._shaderLanguage,shaderNameOrContent:this.name,key:this._key,defines:this.defines.split(` `),addGlobalDefines:!1,extendedProcessingOptions:{indexParameters:this._indexParameters,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,supportsUniformBuffers:this._engine.supportsUniformBuffers},extendedCreatePipelineOptions:{transformFeedbackVaryings:this._transformFeedbackVaryings,createAsRaw:!!(this._vertexSourceCodeOverride&&this._fragmentSourceCodeOverride)}}}_rebuildProgram(e,t,i,r){this._isReady=!1,this._vertexSourceCodeOverride=e,this._fragmentSourceCodeOverride=t,this.onError=(s,a)=>{r&&r(a)},this.onCompiled=()=>{var a,o;let s=this.getEngine().scenes;if(s)for(let l=0;lthis._rebuildProgram(l,c,f,d),defines:r,transformFeedbackVaryings:this._transformFeedbackVaryings,name:this._key.replace(/\r/g,"").replace(/\n/g,"|"),createAsRaw:i,disableParallelCompilation:this._disableParallelShaderCompilation,shaderProcessingContext:this._processingContext,onRenderingStateCompiled:l=>{t&&!e&&this._engine._deletePipelineContext(t),l&&this._onRenderingStateCompiled(l)}},this._engine.createPipelineContext.bind(this._engine),this._engine._preparePipelineContextAsync.bind(this._engine),this._engine._executeWhenRenderingStateIsCompiled.bind(this._engine)),this._pipelineContext.isAsync&&this._checkIsReady(t)}catch(i){this._processCompilationErrors(i,t)}}_getShaderCodeAndErrorLine(e,t,i){let r=i?/FRAGMENT SHADER ERROR: 0:(\d+?):/:/VERTEX SHADER ERROR: 0:(\d+?):/,s=null;if(t&&e){let a=t.match(r);if(a&&a.length===2){let o=parseInt(a[1]),l=e.split(` `,-1);l.length>=o&&(s=`Offending line [${o}] in ${i?"fragment":"vertex"} code: ${l[o-1]}`)}}return[e,s]}_processCompilationErrors(e,t=null){var a,o,l;this._compilationError=e.message;let i=this._attributesNames,r=this._fallbacks;if(ee.Error("Unable to compile effect:"),ee.Error(`Uniforms: ${this._uniformsNames.join(" ")}`),ee.Error(`Attributes: ${i.join(" ")}`),ee.Error(`Defines: -`+this.defines),n.LogShaderCodeOnCompilationError){let c=null,f=null,d;(a=this._pipelineContext)!=null&&a._getVertexShaderCode()&&([d,c]=this._getShaderCodeAndErrorLine(this._pipelineContext._getVertexShaderCode(),this._compilationError,!1),d&&(ee.Error("Vertex code:"),ee.Error(d))),(o=this._pipelineContext)!=null&&o._getFragmentShaderCode()&&([d,f]=this._getShaderCodeAndErrorLine((l=this._pipelineContext)==null?void 0:l._getFragmentShaderCode(),this._compilationError,!0),d&&(ee.Error("Fragment code:"),ee.Error(d))),c&&ee.Error(c),f&&ee.Error(f)}ee.Error("Error: "+this._compilationError);let s=()=>{this.onError&&this.onError(this,this._compilationError),this.onErrorObservable.notifyObservers(this),this._engine.onEffectErrorObservable.notifyObservers({effect:this,errors:this._compilationError})};t&&(this._pipelineContext=t,this._isReady=!0,s()),r?(this._pipelineContext=null,r.hasMoreFallbacks?(this._allFallbacksProcessed=!1,ee.Error("Trying next fallback."),this.defines=r.reduce(this.defines,this),this._prepareEffect()):(this._allFallbacksProcessed=!0,s(),this.onErrorObservable.clear(),this._fallbacks&&this._fallbacks.unBindMesh())):(this._allFallbacksProcessed=!0,t||s())}get isSupported(){return this._compilationError===""}_bindTexture(e,t){this._engine._bindTexture(this._samplers[e],t,e)}setTexture(e,t){this._engine.setTexture(this._samplers[e],this._uniforms[e],t,e)}setTextureArray(e,t){let i=e+"Ex";if(this._samplerList.indexOf(i+"0")===-1){let r=this._samplerList.indexOf(e);for(let a=1;a0||this._isDisposed||(this._onReleaseEffectsObserver&&(this._engine.onReleaseEffectsObservable.remove(this._onReleaseEffectsObserver),this._onReleaseEffectsObserver=null),this._pipelineContext&&ZA(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(x.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(x.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};hr.LogShaderCodeOnCompilationError=!0;hr.PersistentMode=!1;hr.AutomaticallyClearCodeCache=!1;hr._UniqueIdSeed=0;hr._BaseCache={};hr.ShadersStore=x.ShadersStore;hr.IncludesShadersStore=x.IncludesShadersStore});var gs,BC=I(()=>{gs=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{Oa();br=class{static get Now(){return Er()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var QA,QU=I(()=>{QA=class{constructor(e=!0){this._isDepthTestDirty=!1,this._isDepthMaskDirty=!1,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!1,this._isFrontFaceDirty=!1,e&&this.reset()}get isDirty(){return this._isDepthFuncDirty||this._isDepthTestDirty||this._isDepthMaskDirty||this._isCullFaceDirty||this._isCullDirty||this._isZOffsetDirty||this._isFrontFaceDirty}get zOffset(){return this._zOffset}set zOffset(e){this._zOffset!==e&&(this._zOffset=e,this._isZOffsetDirty=!0)}get zOffsetUnits(){return this._zOffsetUnits}set zOffsetUnits(e){this._zOffsetUnits!==e&&(this._zOffsetUnits=e,this._isZOffsetDirty=!0)}get cullFace(){return this._cullFace}set cullFace(e){this._cullFace!==e&&(this._cullFace=e,this._isCullFaceDirty=!0)}get cull(){return this._cull}set cull(e){this._cull!==e&&(this._cull=e,this._isCullDirty=!0)}get depthFunc(){return this._depthFunc}set depthFunc(e){this._depthFunc!==e&&(this._depthFunc=e,this._isDepthFuncDirty=!0)}get depthMask(){return this._depthMask}set depthMask(e){this._depthMask!==e&&(this._depthMask=e,this._isDepthMaskDirty=!0)}get depthTest(){return this._depthTest}set depthTest(e){this._depthTest!==e&&(this._depthTest=e,this._isDepthTestDirty=!0)}get frontFace(){return this._frontFace}set frontFace(e){this._frontFace!==e&&(this._frontFace=e,this._isFrontFaceDirty=!0)}reset(){this._depthMask=!0,this._depthTest=!0,this._depthFunc=null,this._cullFace=null,this._cull=null,this._zOffset=0,this._zOffsetUnits=0,this._frontFace=null,this._isDepthTestDirty=!0,this._isDepthMaskDirty=!0,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!0,this._isFrontFaceDirty=!1}apply(e){this.isDirty&&(this._isCullDirty&&(this.cull?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this._isCullDirty=!1),this._isCullFaceDirty&&(e.cullFace(this.cullFace),this._isCullFaceDirty=!1),this._isDepthMaskDirty&&(e.depthMask(this.depthMask),this._isDepthMaskDirty=!1),this._isDepthTestDirty&&(this.depthTest?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this._isDepthTestDirty=!1),this._isDepthFuncDirty&&(e.depthFunc(this.depthFunc),this._isDepthFuncDirty=!1),this._isZOffsetDirty&&(this.zOffset||this.zOffsetUnits?(e.enable(e.POLYGON_OFFSET_FILL),e.polygonOffset(this.zOffset,this.zOffsetUnits)):e.disable(e.POLYGON_OFFSET_FILL),this._isZOffsetDirty=!1),this._isFrontFaceDirty&&(e.frontFace(this.frontFace),this._isFrontFaceDirty=!1))}}});var $A,$U=I(()=>{$A=class{get isDirty(){return this._isStencilTestDirty||this._isStencilMaskDirty||this._isStencilFuncDirty||this._isStencilOpDirty}get func(){return this._func}set func(e){this._func!==e&&(this._func=e,this._isStencilFuncDirty=!0)}get backFunc(){return this._func}set backFunc(e){this._backFunc!==e&&(this._backFunc=e,this._isStencilFuncDirty=!0)}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef!==e&&(this._funcRef=e,this._isStencilFuncDirty=!0)}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask!==e&&(this._funcMask=e,this._isStencilFuncDirty=!0)}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail!==e&&(this._opStencilFail=e,this._isStencilOpDirty=!0)}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail!==e&&(this._opDepthFail=e,this._isStencilOpDirty=!0)}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass!==e&&(this._opStencilDepthPass=e,this._isStencilOpDirty=!0)}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail!==e&&(this._backOpStencilFail=e,this._isStencilOpDirty=!0)}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail!==e&&(this._backOpDepthFail=e,this._isStencilOpDirty=!0)}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass!==e&&(this._backOpStencilDepthPass=e,this._isStencilOpDirty=!0)}get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this._isStencilMaskDirty=!0)}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this._isStencilTestDirty=!0)}constructor(e=!0){this._isStencilTestDirty=!1,this._isStencilMaskDirty=!1,this._isStencilFuncDirty=!1,this._isStencilOpDirty=!1,this.useStencilGlobalOnly=!1,e&&this.reset()}reset(){var e;this.stencilMaterial=void 0,(e=this.stencilGlobal)==null||e.reset(),this._isStencilTestDirty=!0,this._isStencilMaskDirty=!0,this._isStencilFuncDirty=!0,this._isStencilOpDirty=!0}apply(e){var i;if(!e)return;let t=!this.useStencilGlobalOnly&&!!((i=this.stencilMaterial)!=null&&i.enabled);this.enabled=t?this.stencilMaterial.enabled:this.stencilGlobal.enabled,this.func=t?this.stencilMaterial.func:this.stencilGlobal.func,this.backFunc=t?this.stencilMaterial.backFunc:this.stencilGlobal.backFunc,this.funcRef=t?this.stencilMaterial.funcRef:this.stencilGlobal.funcRef,this.funcMask=t?this.stencilMaterial.funcMask:this.stencilGlobal.funcMask,this.opStencilFail=t?this.stencilMaterial.opStencilFail:this.stencilGlobal.opStencilFail,this.opDepthFail=t?this.stencilMaterial.opDepthFail:this.stencilGlobal.opDepthFail,this.opStencilDepthPass=t?this.stencilMaterial.opStencilDepthPass:this.stencilGlobal.opStencilDepthPass,this.backOpStencilFail=t?this.stencilMaterial.backOpStencilFail:this.stencilGlobal.backOpStencilFail,this.backOpDepthFail=t?this.stencilMaterial.backOpDepthFail:this.stencilGlobal.backOpDepthFail,this.backOpStencilDepthPass=t?this.stencilMaterial.backOpStencilDepthPass:this.stencilGlobal.backOpStencilDepthPass,this.mask=t?this.stencilMaterial.mask:this.stencilGlobal.mask,this.isDirty&&(this._isStencilTestDirty&&(this.enabled?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this._isStencilTestDirty=!1),this._isStencilMaskDirty&&(e.stencilMask(this.mask),this._isStencilMaskDirty=!1),this._isStencilFuncDirty&&(e.stencilFuncSeparate(e.FRONT,this.func,this.funcRef,this.funcMask),e.stencilFuncSeparate(e.BACK,this.backFunc,this.funcRef,this.funcMask),this._isStencilFuncDirty=!1),this._isStencilOpDirty&&(e.stencilOpSeparate(e.FRONT,this.opStencilFail,this.opDepthFail,this.opStencilDepthPass),e.stencilOpSeparate(e.BACK,this.backOpStencilFail,this.backOpDepthFail,this.backOpStencilDepthPass),this._isStencilOpDirty=!1))}}});var ch,JU=I(()=>{ch=class n{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=n.ALWAYS,this.opStencilFail=n.KEEP,this.opDepthFail=n.KEEP,this.opStencilDepthPass=n.REPLACE,this.backFunc=n.ALWAYS,this.backOpStencilFail=n.KEEP,this.backOpDepthFail=n.KEEP,this.backOpStencilDepthPass=n.REPLACE}get stencilFunc(){return this.func}set stencilFunc(e){this.func=e}get stencilBackFunc(){return this.backFunc}set stencilBackFunc(e){this.backFunc=e}get stencilFuncRef(){return this.funcRef}set stencilFuncRef(e){this.funcRef=e}get stencilFuncMask(){return this.funcMask}set stencilFuncMask(e){this.funcMask=e}get stencilOpStencilFail(){return this.opStencilFail}set stencilOpStencilFail(e){this.opStencilFail=e}get stencilOpDepthFail(){return this.opDepthFail}set stencilOpDepthFail(e){this.opDepthFail=e}get stencilOpStencilDepthPass(){return this.opStencilDepthPass}set stencilOpStencilDepthPass(e){this.opStencilDepthPass=e}get stencilBackOpStencilFail(){return this.backOpStencilFail}set stencilBackOpStencilFail(e){this.backOpStencilFail=e}get stencilBackOpDepthFail(){return this.backOpDepthFail}set stencilBackOpDepthFail(e){this.backOpDepthFail=e}get stencilBackOpStencilDepthPass(){return this.backOpStencilDepthPass}set stencilBackOpStencilDepthPass(e){this.backOpStencilDepthPass=e}get stencilMask(){return this.mask}set stencilMask(e){this.mask=e}get stencilTest(){return this.enabled}set stencilTest(e){this.enabled=e}};ch.ALWAYS=519;ch.KEEP=7680;ch.REPLACE=7681});var Am,UC=I(()=>{Am=class{constructor(e){this._supportBlendParametersPerTarget=e,this._blendFunctionParameters=new Array(32),this._blendEquationParameters=new Array(16),this._blendConstants=new Array(4),this._isBlendConstantsDirty=!1,this._alphaBlend=Array(8).fill(!1),this._numTargetEnabled=0,this._isAlphaBlendDirty=!1,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this.reset()}get isDirty(){return this._isAlphaBlendDirty||this._isBlendFunctionParametersDirty||this._isBlendEquationParametersDirty}get alphaBlend(){return this._numTargetEnabled>0}set alphaBlend(e){this.setAlphaBlend(e)}setAlphaBlend(e,t=0){this._alphaBlend[t]!==e&&(e?this._numTargetEnabled++:this._numTargetEnabled--,this._alphaBlend[t]=e,this._isAlphaBlendDirty=!0)}setAlphaBlendConstants(e,t,i,r){this._blendConstants[0]===e&&this._blendConstants[1]===t&&this._blendConstants[2]===i&&this._blendConstants[3]===r||(this._blendConstants[0]=e,this._blendConstants[1]=t,this._blendConstants[2]=i,this._blendConstants[3]=r,this._isBlendConstantsDirty=!0)}setAlphaBlendFunctionParameters(e,t,i,r,s=0){let a=s*4;this._blendFunctionParameters[a+0]===e&&this._blendFunctionParameters[a+1]===t&&this._blendFunctionParameters[a+2]===i&&this._blendFunctionParameters[a+3]===r||(this._blendFunctionParameters[a+0]=e,this._blendFunctionParameters[a+1]=t,this._blendFunctionParameters[a+2]=i,this._blendFunctionParameters[a+3]=r,this._isBlendFunctionParametersDirty=!0)}setAlphaEquationParameters(e,t,i=0){let r=i*2;this._blendEquationParameters[r+0]===e&&this._blendEquationParameters[r+1]===t||(this._blendEquationParameters[r+0]=e,this._blendEquationParameters[r+1]=t,this._isBlendEquationParametersDirty=!0)}reset(){this._alphaBlend.fill(!1),this._numTargetEnabled=0,this._blendFunctionParameters.fill(null),this._blendEquationParameters.fill(null),this._blendConstants[0]=null,this._blendConstants[1]=null,this._blendConstants[2]=null,this._blendConstants[3]=null,this._isAlphaBlendDirty=!0,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this._isBlendConstantsDirty=!1}apply(e,t=1){if(!this.isDirty)return;if(this._isBlendConstantsDirty&&(e.blendColor(this._blendConstants[0],this._blendConstants[1],this._blendConstants[2],this._blendConstants[3]),this._isBlendConstantsDirty=!1),t===1||!this._supportBlendParametersPerTarget){this._isAlphaBlendDirty&&(this._alphaBlend[0]?e.enable(e.BLEND):e.disable(e.BLEND),this._isAlphaBlendDirty=!1),this._isBlendFunctionParametersDirty&&(e.blendFuncSeparate(this._blendFunctionParameters[0],this._blendFunctionParameters[1],this._blendFunctionParameters[2],this._blendFunctionParameters[3]),this._isBlendFunctionParametersDirty=!1),this._isBlendEquationParametersDirty&&(e.blendEquationSeparate(this._blendEquationParameters[0],this._blendEquationParameters[1]),this._isBlendEquationParametersDirty=!1);return}let i=e;if(this._isAlphaBlendDirty){for(let r=0;r{mi();lh();Gi();Lt();BC();tc();QU();$U();JU();UC();Sn();Ws();Oa();bf();Re=class n{get frameId(){return this._frameId}get isWebGPU(){return this._isWebGPU}_getShaderProcessor(e){return this._shaderProcessor}_resetAlphaMode(){this._alphaMode.fill(-1),this._alphaEquation.fill(-1)}get shaderPlatformName(){return this._shaderPlatformName}_clearEmptyResources(){this._emptyTexture=null,this._emptyCubeTexture=null,this._emptyTexture3D=null,this._emptyTexture2DArray=null}get useReverseDepthBuffer(){return this._useReverseDepthBuffer}set useReverseDepthBuffer(e){e!==this._useReverseDepthBuffer&&(this._useReverseDepthBuffer=e,e?this._depthCullingState.depthFunc=518:this._depthCullingState.depthFunc=515)}setColorWrite(e){e!==this._colorWrite&&(this._colorWriteChanged=!0,this._colorWrite=e)}getColorWrite(){return this._colorWrite}get depthCullingState(){return this._depthCullingState}get alphaState(){return this._alphaState}get stencilState(){return this._stencilState}get stencilStateComposer(){return this._stencilStateComposer}_getGlobalDefines(e){if(e){this.isNDCHalfZRange?e.IS_NDC_HALF_ZRANGE="":delete e.IS_NDC_HALF_ZRANGE,this.useReverseDepthBuffer?e.USE_REVERSE_DEPTHBUFFER="":delete e.USE_REVERSE_DEPTHBUFFER,this.useExactSrgbConversions?e.USE_EXACT_SRGB_CONVERSIONS="":delete e.USE_EXACT_SRGB_CONVERSIONS;return}else{let t="";return this.isNDCHalfZRange&&(t+="#define IS_NDC_HALF_ZRANGE"),this.useReverseDepthBuffer&&(t&&(t+=` +`+this.defines),n.LogShaderCodeOnCompilationError){let c=null,f=null,d;(a=this._pipelineContext)!=null&&a._getVertexShaderCode()&&([d,c]=this._getShaderCodeAndErrorLine(this._pipelineContext._getVertexShaderCode(),this._compilationError,!1),d&&(ee.Error("Vertex code:"),ee.Error(d))),(o=this._pipelineContext)!=null&&o._getFragmentShaderCode()&&([d,f]=this._getShaderCodeAndErrorLine((l=this._pipelineContext)==null?void 0:l._getFragmentShaderCode(),this._compilationError,!0),d&&(ee.Error("Fragment code:"),ee.Error(d))),c&&ee.Error(c),f&&ee.Error(f)}ee.Error("Error: "+this._compilationError);let s=()=>{this.onError&&this.onError(this,this._compilationError),this.onErrorObservable.notifyObservers(this),this._engine.onEffectErrorObservable.notifyObservers({effect:this,errors:this._compilationError})};t&&(this._pipelineContext=t,this._isReady=!0,s()),r?(this._pipelineContext=null,r.hasMoreFallbacks?(this._allFallbacksProcessed=!1,ee.Error("Trying next fallback."),this.defines=r.reduce(this.defines,this),this._prepareEffect()):(this._allFallbacksProcessed=!0,s(),this.onErrorObservable.clear(),this._fallbacks&&this._fallbacks.unBindMesh())):(this._allFallbacksProcessed=!0,t||s())}get isSupported(){return this._compilationError===""}_bindTexture(e,t){this._engine._bindTexture(this._samplers[e],t,e)}setTexture(e,t){this._engine.setTexture(this._samplers[e],this._uniforms[e],t,e)}setTextureArray(e,t){let i=e+"Ex";if(this._samplerList.indexOf(i+"0")===-1){let r=this._samplerList.indexOf(e);for(let a=1;a0||this._isDisposed||(this._onReleaseEffectsObserver&&(this._engine.onReleaseEffectsObservable.remove(this._onReleaseEffectsObserver),this._onReleaseEffectsObserver=null),this._pipelineContext&&qA(this._pipelineContext),this._engine._releaseEffect(this),this.clearCodeCache(),this._isDisposed=!0)}static RegisterShader(e,t,i,r=0){t&&(x.GetShadersStore(r)[`${e}PixelShader`]=t),i&&(x.GetShadersStore(r)[`${e}VertexShader`]=i)}static ResetCache(){n._BaseCache={}}};hr.LogShaderCodeOnCompilationError=!0;hr.PersistentMode=!1;hr.AutomaticallyClearCodeCache=!1;hr._UniqueIdSeed=0;hr._BaseCache={};hr.ShadersStore=x.ShadersStore;hr.IncludesShadersStore=x.IncludesShadersStore});var gs,BC=I(()=>{gs=class n{static SetMatrixPrecision(e){if(n.MatrixTrackPrecisionChange=!1,e&&!n.MatrixUse64Bits&&n.MatrixTrackedMatrices)for(let t=0;t{Oa();br=class{static get Now(){return Er()&&window.performance&&window.performance.now?window.performance.now():Date.now()}}});var $A,QU=I(()=>{$A=class{constructor(e=!0){this._isDepthTestDirty=!1,this._isDepthMaskDirty=!1,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!1,this._isFrontFaceDirty=!1,e&&this.reset()}get isDirty(){return this._isDepthFuncDirty||this._isDepthTestDirty||this._isDepthMaskDirty||this._isCullFaceDirty||this._isCullDirty||this._isZOffsetDirty||this._isFrontFaceDirty}get zOffset(){return this._zOffset}set zOffset(e){this._zOffset!==e&&(this._zOffset=e,this._isZOffsetDirty=!0)}get zOffsetUnits(){return this._zOffsetUnits}set zOffsetUnits(e){this._zOffsetUnits!==e&&(this._zOffsetUnits=e,this._isZOffsetDirty=!0)}get cullFace(){return this._cullFace}set cullFace(e){this._cullFace!==e&&(this._cullFace=e,this._isCullFaceDirty=!0)}get cull(){return this._cull}set cull(e){this._cull!==e&&(this._cull=e,this._isCullDirty=!0)}get depthFunc(){return this._depthFunc}set depthFunc(e){this._depthFunc!==e&&(this._depthFunc=e,this._isDepthFuncDirty=!0)}get depthMask(){return this._depthMask}set depthMask(e){this._depthMask!==e&&(this._depthMask=e,this._isDepthMaskDirty=!0)}get depthTest(){return this._depthTest}set depthTest(e){this._depthTest!==e&&(this._depthTest=e,this._isDepthTestDirty=!0)}get frontFace(){return this._frontFace}set frontFace(e){this._frontFace!==e&&(this._frontFace=e,this._isFrontFaceDirty=!0)}reset(){this._depthMask=!0,this._depthTest=!0,this._depthFunc=null,this._cullFace=null,this._cull=null,this._zOffset=0,this._zOffsetUnits=0,this._frontFace=null,this._isDepthTestDirty=!0,this._isDepthMaskDirty=!0,this._isDepthFuncDirty=!1,this._isCullFaceDirty=!1,this._isCullDirty=!1,this._isZOffsetDirty=!0,this._isFrontFaceDirty=!1}apply(e){this.isDirty&&(this._isCullDirty&&(this.cull?e.enable(e.CULL_FACE):e.disable(e.CULL_FACE),this._isCullDirty=!1),this._isCullFaceDirty&&(e.cullFace(this.cullFace),this._isCullFaceDirty=!1),this._isDepthMaskDirty&&(e.depthMask(this.depthMask),this._isDepthMaskDirty=!1),this._isDepthTestDirty&&(this.depthTest?e.enable(e.DEPTH_TEST):e.disable(e.DEPTH_TEST),this._isDepthTestDirty=!1),this._isDepthFuncDirty&&(e.depthFunc(this.depthFunc),this._isDepthFuncDirty=!1),this._isZOffsetDirty&&(this.zOffset||this.zOffsetUnits?(e.enable(e.POLYGON_OFFSET_FILL),e.polygonOffset(this.zOffset,this.zOffsetUnits)):e.disable(e.POLYGON_OFFSET_FILL),this._isZOffsetDirty=!1),this._isFrontFaceDirty&&(e.frontFace(this.frontFace),this._isFrontFaceDirty=!1))}}});var JA,$U=I(()=>{JA=class{get isDirty(){return this._isStencilTestDirty||this._isStencilMaskDirty||this._isStencilFuncDirty||this._isStencilOpDirty}get func(){return this._func}set func(e){this._func!==e&&(this._func=e,this._isStencilFuncDirty=!0)}get backFunc(){return this._func}set backFunc(e){this._backFunc!==e&&(this._backFunc=e,this._isStencilFuncDirty=!0)}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef!==e&&(this._funcRef=e,this._isStencilFuncDirty=!0)}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask!==e&&(this._funcMask=e,this._isStencilFuncDirty=!0)}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail!==e&&(this._opStencilFail=e,this._isStencilOpDirty=!0)}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail!==e&&(this._opDepthFail=e,this._isStencilOpDirty=!0)}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass!==e&&(this._opStencilDepthPass=e,this._isStencilOpDirty=!0)}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail!==e&&(this._backOpStencilFail=e,this._isStencilOpDirty=!0)}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail!==e&&(this._backOpDepthFail=e,this._isStencilOpDirty=!0)}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass!==e&&(this._backOpStencilDepthPass=e,this._isStencilOpDirty=!0)}get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this._isStencilMaskDirty=!0)}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,this._isStencilTestDirty=!0)}constructor(e=!0){this._isStencilTestDirty=!1,this._isStencilMaskDirty=!1,this._isStencilFuncDirty=!1,this._isStencilOpDirty=!1,this.useStencilGlobalOnly=!1,e&&this.reset()}reset(){var e;this.stencilMaterial=void 0,(e=this.stencilGlobal)==null||e.reset(),this._isStencilTestDirty=!0,this._isStencilMaskDirty=!0,this._isStencilFuncDirty=!0,this._isStencilOpDirty=!0}apply(e){var i;if(!e)return;let t=!this.useStencilGlobalOnly&&!!((i=this.stencilMaterial)!=null&&i.enabled);this.enabled=t?this.stencilMaterial.enabled:this.stencilGlobal.enabled,this.func=t?this.stencilMaterial.func:this.stencilGlobal.func,this.backFunc=t?this.stencilMaterial.backFunc:this.stencilGlobal.backFunc,this.funcRef=t?this.stencilMaterial.funcRef:this.stencilGlobal.funcRef,this.funcMask=t?this.stencilMaterial.funcMask:this.stencilGlobal.funcMask,this.opStencilFail=t?this.stencilMaterial.opStencilFail:this.stencilGlobal.opStencilFail,this.opDepthFail=t?this.stencilMaterial.opDepthFail:this.stencilGlobal.opDepthFail,this.opStencilDepthPass=t?this.stencilMaterial.opStencilDepthPass:this.stencilGlobal.opStencilDepthPass,this.backOpStencilFail=t?this.stencilMaterial.backOpStencilFail:this.stencilGlobal.backOpStencilFail,this.backOpDepthFail=t?this.stencilMaterial.backOpDepthFail:this.stencilGlobal.backOpDepthFail,this.backOpStencilDepthPass=t?this.stencilMaterial.backOpStencilDepthPass:this.stencilGlobal.backOpStencilDepthPass,this.mask=t?this.stencilMaterial.mask:this.stencilGlobal.mask,this.isDirty&&(this._isStencilTestDirty&&(this.enabled?e.enable(e.STENCIL_TEST):e.disable(e.STENCIL_TEST),this._isStencilTestDirty=!1),this._isStencilMaskDirty&&(e.stencilMask(this.mask),this._isStencilMaskDirty=!1),this._isStencilFuncDirty&&(e.stencilFuncSeparate(e.FRONT,this.func,this.funcRef,this.funcMask),e.stencilFuncSeparate(e.BACK,this.backFunc,this.funcRef,this.funcMask),this._isStencilFuncDirty=!1),this._isStencilOpDirty&&(e.stencilOpSeparate(e.FRONT,this.opStencilFail,this.opDepthFail,this.opStencilDepthPass),e.stencilOpSeparate(e.BACK,this.backOpStencilFail,this.backOpDepthFail,this.backOpStencilDepthPass),this._isStencilOpDirty=!1))}}});var ch,JU=I(()=>{ch=class n{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=n.ALWAYS,this.opStencilFail=n.KEEP,this.opDepthFail=n.KEEP,this.opStencilDepthPass=n.REPLACE,this.backFunc=n.ALWAYS,this.backOpStencilFail=n.KEEP,this.backOpDepthFail=n.KEEP,this.backOpStencilDepthPass=n.REPLACE}get stencilFunc(){return this.func}set stencilFunc(e){this.func=e}get stencilBackFunc(){return this.backFunc}set stencilBackFunc(e){this.backFunc=e}get stencilFuncRef(){return this.funcRef}set stencilFuncRef(e){this.funcRef=e}get stencilFuncMask(){return this.funcMask}set stencilFuncMask(e){this.funcMask=e}get stencilOpStencilFail(){return this.opStencilFail}set stencilOpStencilFail(e){this.opStencilFail=e}get stencilOpDepthFail(){return this.opDepthFail}set stencilOpDepthFail(e){this.opDepthFail=e}get stencilOpStencilDepthPass(){return this.opStencilDepthPass}set stencilOpStencilDepthPass(e){this.opStencilDepthPass=e}get stencilBackOpStencilFail(){return this.backOpStencilFail}set stencilBackOpStencilFail(e){this.backOpStencilFail=e}get stencilBackOpDepthFail(){return this.backOpDepthFail}set stencilBackOpDepthFail(e){this.backOpDepthFail=e}get stencilBackOpStencilDepthPass(){return this.backOpStencilDepthPass}set stencilBackOpStencilDepthPass(e){this.backOpStencilDepthPass=e}get stencilMask(){return this.mask}set stencilMask(e){this.mask=e}get stencilTest(){return this.enabled}set stencilTest(e){this.enabled=e}};ch.ALWAYS=519;ch.KEEP=7680;ch.REPLACE=7681});var Am,UC=I(()=>{Am=class{constructor(e){this._supportBlendParametersPerTarget=e,this._blendFunctionParameters=new Array(32),this._blendEquationParameters=new Array(16),this._blendConstants=new Array(4),this._isBlendConstantsDirty=!1,this._alphaBlend=Array(8).fill(!1),this._numTargetEnabled=0,this._isAlphaBlendDirty=!1,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this.reset()}get isDirty(){return this._isAlphaBlendDirty||this._isBlendFunctionParametersDirty||this._isBlendEquationParametersDirty}get alphaBlend(){return this._numTargetEnabled>0}set alphaBlend(e){this.setAlphaBlend(e)}setAlphaBlend(e,t=0){this._alphaBlend[t]!==e&&(e?this._numTargetEnabled++:this._numTargetEnabled--,this._alphaBlend[t]=e,this._isAlphaBlendDirty=!0)}setAlphaBlendConstants(e,t,i,r){this._blendConstants[0]===e&&this._blendConstants[1]===t&&this._blendConstants[2]===i&&this._blendConstants[3]===r||(this._blendConstants[0]=e,this._blendConstants[1]=t,this._blendConstants[2]=i,this._blendConstants[3]=r,this._isBlendConstantsDirty=!0)}setAlphaBlendFunctionParameters(e,t,i,r,s=0){let a=s*4;this._blendFunctionParameters[a+0]===e&&this._blendFunctionParameters[a+1]===t&&this._blendFunctionParameters[a+2]===i&&this._blendFunctionParameters[a+3]===r||(this._blendFunctionParameters[a+0]=e,this._blendFunctionParameters[a+1]=t,this._blendFunctionParameters[a+2]=i,this._blendFunctionParameters[a+3]=r,this._isBlendFunctionParametersDirty=!0)}setAlphaEquationParameters(e,t,i=0){let r=i*2;this._blendEquationParameters[r+0]===e&&this._blendEquationParameters[r+1]===t||(this._blendEquationParameters[r+0]=e,this._blendEquationParameters[r+1]=t,this._isBlendEquationParametersDirty=!0)}reset(){this._alphaBlend.fill(!1),this._numTargetEnabled=0,this._blendFunctionParameters.fill(null),this._blendEquationParameters.fill(null),this._blendConstants[0]=null,this._blendConstants[1]=null,this._blendConstants[2]=null,this._blendConstants[3]=null,this._isAlphaBlendDirty=!0,this._isBlendFunctionParametersDirty=!1,this._isBlendEquationParametersDirty=!1,this._isBlendConstantsDirty=!1}apply(e,t=1){if(!this.isDirty)return;if(this._isBlendConstantsDirty&&(e.blendColor(this._blendConstants[0],this._blendConstants[1],this._blendConstants[2],this._blendConstants[3]),this._isBlendConstantsDirty=!1),t===1||!this._supportBlendParametersPerTarget){this._isAlphaBlendDirty&&(this._alphaBlend[0]?e.enable(e.BLEND):e.disable(e.BLEND),this._isAlphaBlendDirty=!1),this._isBlendFunctionParametersDirty&&(e.blendFuncSeparate(this._blendFunctionParameters[0],this._blendFunctionParameters[1],this._blendFunctionParameters[2],this._blendFunctionParameters[3]),this._isBlendFunctionParametersDirty=!1),this._isBlendEquationParametersDirty&&(e.blendEquationSeparate(this._blendEquationParameters[0],this._blendEquationParameters[1]),this._isBlendEquationParametersDirty=!1);return}let i=e;if(this._isAlphaBlendDirty){for(let r=0;r{mi();lh();Gi();Lt();BC();tc();QU();$U();JU();UC();Sn();Ws();Oa();bf();Re=class n{get frameId(){return this._frameId}get isWebGPU(){return this._isWebGPU}_getShaderProcessor(e){return this._shaderProcessor}_resetAlphaMode(){this._alphaMode.fill(-1),this._alphaEquation.fill(-1)}get shaderPlatformName(){return this._shaderPlatformName}_clearEmptyResources(){this._emptyTexture=null,this._emptyCubeTexture=null,this._emptyTexture3D=null,this._emptyTexture2DArray=null}get useReverseDepthBuffer(){return this._useReverseDepthBuffer}set useReverseDepthBuffer(e){e!==this._useReverseDepthBuffer&&(this._useReverseDepthBuffer=e,e?this._depthCullingState.depthFunc=518:this._depthCullingState.depthFunc=515)}setColorWrite(e){e!==this._colorWrite&&(this._colorWriteChanged=!0,this._colorWrite=e)}getColorWrite(){return this._colorWrite}get depthCullingState(){return this._depthCullingState}get alphaState(){return this._alphaState}get stencilState(){return this._stencilState}get stencilStateComposer(){return this._stencilStateComposer}_getGlobalDefines(e){if(e){this.isNDCHalfZRange?e.IS_NDC_HALF_ZRANGE="":delete e.IS_NDC_HALF_ZRANGE,this.useReverseDepthBuffer?e.USE_REVERSE_DEPTHBUFFER="":delete e.USE_REVERSE_DEPTHBUFFER,this.useExactSrgbConversions?e.USE_EXACT_SRGB_CONVERSIONS="":delete e.USE_EXACT_SRGB_CONVERSIONS;return}else{let t="";return this.isNDCHalfZRange&&(t+="#define IS_NDC_HALF_ZRANGE"),this.useReverseDepthBuffer&&(t&&(t+=` `),t+="#define USE_REVERSE_DEPTHBUFFER"),this.useExactSrgbConversions&&(t&&(t+=` -`),t+="#define USE_EXACT_SRGB_CONVERSIONS"),t}}_rebuildInternalTextures(){let e=this._internalTexturesCache.slice();for(let t of e)t._rebuild()}_rebuildRenderTargetWrappers(){let e=this._renderTargetWrapperCache.slice();for(let t of e)t._rebuild()}_rebuildEffects(){for(let e in this._compiledEffects){let t=this._compiledEffects[e];t._pipelineContext=null,t._prepareEffect()}hr.ResetCache()}_rebuildGraphicsResources(){var e;this.wipeCaches(!0),this._rebuildEffects(),(e=this._rebuildComputeEffects)==null||e.call(this),this._rebuildBuffers(),this._rebuildInternalTextures(),this._rebuildTextures(),this._rebuildRenderTargetWrappers(),this.wipeCaches(!0)}_flagContextRestored(){ee.Warn(this.name+" context successfully restored."),this.onContextRestoredObservable.notifyObservers(this),this._contextWasLost=!1}_restoreEngineAfterContextLost(e){setTimeout(()=>{this._clearEmptyResources();let t=this._depthCullingState.depthTest,i=this._depthCullingState.depthFunc,r=this._depthCullingState.depthMask,s=this._stencilState.stencilTest;e(),this._rebuildGraphicsResources(),this._depthCullingState.depthTest=t,this._depthCullingState.depthFunc=i,this._depthCullingState.depthMask=r,this._stencilState.stencilTest=s,this._flagContextRestored()},0)}get isDisposed(){return this._isDisposed}get snapshotRendering(){return!1}set snapshotRendering(e){}get snapshotRenderingMode(){return 0}set snapshotRenderingMode(e){}getClassName(){return"AbstractEngine"}get emptyTexture(){return this._emptyTexture||(this._emptyTexture=this.createRawTexture(new Uint8Array(4),1,1,5,!1,!1,1)),this._emptyTexture}get emptyTexture3D(){return this._emptyTexture3D||(this._emptyTexture3D=this.createRawTexture3D(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture3D}get emptyTexture2DArray(){return this._emptyTexture2DArray||(this._emptyTexture2DArray=this.createRawTexture2DArray(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture2DArray}get emptyCubeTexture(){if(!this._emptyCubeTexture){let e=new Uint8Array(4),t=[e,e,e,e,e,e];this._emptyCubeTexture=this.createRawCubeTexture(t,1,5,0,!1,!1,1)}return this._emptyCubeTexture}get activeRenderLoops(){return this._activeRenderLoops}stopRenderLoop(e){if(!e){this._activeRenderLoops.length=0,this._cancelFrame();return}let t=this._activeRenderLoops.indexOf(e);t>=0&&(this._activeRenderLoops.splice(t,1),this._activeRenderLoops.length==0&&this._cancelFrame())}_cancelFrame(){if(this._frameHandler!==0){let e=this._frameHandler;if(this._frameHandler=0,Er()){let{cancelAnimationFrame:t}=this.getHostWindow()||window;if(typeof t=="function")return t(e)}else if(typeof cancelAnimationFrame=="function")return cancelAnimationFrame(e);return clearTimeout(e)}}beginFrame(){this.onBeginFrameObservable.notifyObservers(this)}endFrame(){this._frameId++,this.onEndFrameObservable.notifyObservers(this)}get maxFPS(){return this._maxFPS}set maxFPS(e){if(this._maxFPS=e,e!==void 0){if(e<=0){this._minFrameTime=Number.MAX_VALUE;return}this._minFrameTime=1e3/e}}_isOverFrameTime(e){if(!e||this._maxFPS===void 0)return!1;let t=e-this._lastFrameTime;return this._lastFrameTime=e,this._renderAccumulator+=t,this._renderAccumulatorthis._minFrameTime&&(this._renderAccumulator=this._minFrameTime),!1)}_processFrame(e){if(this._frameHandler=0,!this._contextWasLost&&!this._isOverFrameTime(e)){let t=!0;(this.isDisposed||!this.renderEvenInBackground&&this._windowIsBackground)&&(t=!1),t&&(this.beginFrame(),!this.skipFrameRender&&!this._renderViews()&&this._renderFrame(),this.endFrame())}}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}_renderFrame(){for(let e=0;e-1?e.substring(A).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let y=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(S),S.url=e,S.generateMipMaps=!t,S.samplingMode=s,S.invertY=i,S._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(S._buffer=f);let C=null;a&&!d&&(C=S.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(S);let D=(w,G)=>{r&&r.removePendingData(S),e===E?(C&&S.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,S.invertY,r,s,null,o,l,c,f,S),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),S.onErrorObservable.notifyObservers({message:w,exception:G}),o&&o(w,G)):(ee.Warn(`Failed to load ${e}, falling back to ${E}`),this._createTextureBase(E,t,S.invertY,r,s,a,o,l,c,f,S,h,u,m,_,p))};if(y){let w=async G=>{(await y).loadData(G,S,(N,B,V,Q,K,J)=>{J?D("TextureLoader failed to load data"):l(S,R,r,{width:N,height:B},S.invertY,!V,Q,()=>(K(),!1),s)},_)};if(!f)this._loadFile(e,async G=>{try{await w(new Uint8Array(G))}catch(O){D("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(G,O)=>{D("Unable to load "+(G&&G.responseURL,O))});else{let G=async O=>{try{await w(O)}catch(N){D("Failed to parse texture data",N)}};f instanceof ArrayBuffer?G(new Uint8Array(f)):ArrayBuffer.isView(f)?G(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=G=>{v&&!this._doNotHandleContextLost&&(S._buffer=G),l(S,R,r,G,S.invertY,t,!1,c,s)};!g||T?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,D,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):typeof f=="string"||f instanceof ArrayBuffer||ArrayBuffer.isView(f)||f instanceof Blob?n._FileToolsLoadImage(f,w,D,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return S}_rebuildBuffers(){for(let e of this._uniformBuffers)e._rebuildAfterContextLost()}get _shouldUseHighPrecisionShader(){return!!(this._caps.highPrecisionShaderSupported&&this._highPrecisionShadersAllowed)}getHostDocument(){return this._renderingCanvas&&this._renderingCanvas.ownerDocument?this._renderingCanvas.ownerDocument:Rf()?document:null}getLoadedTexturesCache(){return this._internalTexturesCache}clearInternalTexturesCache(){this._internalTexturesCache.length=0}getCaps(){return this._caps}resetTextureCache(){for(let e in this._boundTexturesCache)Object.prototype.hasOwnProperty.call(this._boundTexturesCache,e)&&(this._boundTexturesCache[e]=null);this._currentTextureChannel=-1}get name(){return this._name}set name(e){this._name=e}static get NpmPackage(){return"babylonjs@9.6.0"}static get Version(){return"9.6.0"}getRenderingCanvas(){return this._renderingCanvas}getAudioContext(){return this._audioContext}getAudioDestination(){return this._audioDestination}setHardwareScalingLevel(e){this._hardwareScalingLevel=e,this.resize()}getHardwareScalingLevel(){return this._hardwareScalingLevel}get doNotHandleContextLost(){return this._doNotHandleContextLost}set doNotHandleContextLost(e){this._doNotHandleContextLost=e}get isStencilEnable(){return this._isStencilEnable}getCreationOptions(){return this._creationOptions}constructor(e,t,i){var a,o,l,c,f,d,h,u,m,_;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new QA,this._stencilStateComposer=new $A,this._stencilState=new ch,this._alphaState=new Am(!1),this._alphaMode=Array(8).fill(-1),this._alphaEquation=Array(8).fill(-1),this._activeRequests=[],this._badOS=!1,this._badDesktopOS=!1,this._compatibilityMode=!0,this._internalTexturesCache=new Array,this._currentRenderTarget=null,this._boundTexturesCache={},this._activeChannel=0,this._currentTextureChannel=-1,this._viewportCached={x:0,y:0,z:0,w:0},this._isWebGPU=!1,this._enableGPUDebugMarkers=!1,this.onCanvasBlurObservable=new te,this.onCanvasFocusObservable=new te,this.onNewSceneAddedObservable=new te,this.onResizeObservable=new te,this.onCanvasPointerOutObservable=new te,this.onEffectErrorObservable=new te,this.disablePerformanceMonitorInBackground=!1,this.disableVertexArrayObjects=!1,this._frameId=0,this.hostInformation={isMobile:!1},this.isFullscreen=!1,this.enableOfflineSupport=!1,this.disableManifestCheck=!1,this.disableContextMenu=!0,this.currentRenderPassId=0,this.isPointerLock=!1,this.postProcesses=[],this.canvasTabIndex=1,this._contextWasLost=!1,this._useReverseDepthBuffer=!1,this.isNDCHalfZRange=!1,this.hasOriginBottomLeft=!0,this._renderTargetWrapperCache=new Array,this._compiledEffects={},this._isDisposed=!1,this.scenes=[],this._virtualScenes=new Array,this.onBeforeTextureInitObservable=new te,this.renderEvenInBackground=!0,this.preventCacheWipeBetweenFrames=!1,this._frameHandler=0,this._activeRenderLoops=new Array,this._windowIsBackground=!1,this._boundRenderFunction=p=>this._renderLoop(p),this._lastFrameTime=0,this._renderAccumulator=0,this.skipFrameRender=!1,this.onBeforeShaderCompilationObservable=new te,this.onAfterShaderCompilationObservable=new te,this.onBeginFrameObservable=new te,this.onEndFrameObservable=new te,this._transformTextureUrl=null,this._uniformBuffers=new Array,this._storageBuffers=new Array,this._highPrecisionShadersAllowed=!0,this.onContextLostObservable=new te,this.onContextRestoredObservable=new te,this._name="",this.premultipliedAlpha=!0,this.adaptToDeviceRatio=!1,this._lastDevicePixelRatio=1,this._doNotHandleContextLost=!1,this.cullBackFaces=null,this._renderPassNames=["main"],this._fps=60,this._deltaTime=0,this._deterministicLockstep=!1,this._lockstepMaxSteps=4,this._timeStep=1/60,this.onDisposeObservable=new te,this.onReleaseEffectsObservable=new te,Oe.Instances.push(this),this.startTime=br.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,gs.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),ec()&&navigator.userAgent&&(this._badOS=/iPad/i.test(navigator.userAgent)||/iPhone/i.test(navigator.userAgent),this._badDesktopOS=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),this.adaptToDeviceRatio=i!=null?i:!1,t.antialias=e!=null?e:t.antialias,t.deterministicLockstep=(a=t.deterministicLockstep)!=null?a:!1,t.lockstepMaxSteps=(o=t.lockstepMaxSteps)!=null?o:4,t.timeStep=(l=t.timeStep)!=null?l:1/60,t.stencil=(c=t.stencil)!=null?c:!0,this._audioContext=(d=(f=t.audioEngineOptions)==null?void 0:f.audioContext)!=null?d:null,this._audioDestination=(u=(h=t.audioEngineOptions)==null?void 0:h.audioDestination)!=null?u:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(_=t.useExactSrgbConversions)!=null?_:!1;let r=Er()&&window.devicePixelRatio||1,s=t.limitDeviceRatio||r;i=i||t.adaptToDeviceRatio||!1,this._hardwareScalingLevel=i?1/Math.min(s,r):1,this._lastDevicePixelRatio=r,this._creationOptions=t}resize(e=!1){var r,s;let t,i;if(this.adaptToDeviceRatio){let a=Er()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(Er()&&Rf())if(this._renderingCanvas){let a=(s=(r=this._renderingCanvas).getBoundingClientRect)==null?void 0:s.call(r);t=this._renderingCanvas.clientWidth||(a==null?void 0:a.width)||this._renderingCanvas.width*this._hardwareScalingLevel||100,i=this._renderingCanvas.clientHeight||(a==null?void 0:a.height)||this._renderingCanvas.height*this._hardwareScalingLevel||100}else t=window.innerWidth,i=window.innerHeight;else t=this._renderingCanvas?this._renderingCanvas.width:100,i=this._renderingCanvas?this._renderingCanvas.height:100;this.setSize(t/this._hardwareScalingLevel,i/this._hardwareScalingLevel,e)}setSize(e,t,i=!1){if(!this._renderingCanvas||(e=e|0,t=t|0,!i&&this._renderingCanvas.width===e&&this._renderingCanvas.height===t))return!1;if(this._renderingCanvas.width=e,this._renderingCanvas.height=t,this.scenes){for(let r=0;r{let e=navigator.userAgent;this.hostInformation.isMobile=e.indexOf("Mobile")!==-1||e.indexOf("Mac")!==-1&&Rf()&&"ontouchend"in document},this._checkForMobile(),Er()&&window.addEventListener("resize",this._checkForMobile))}createVideoElement(e){return document.createElement("video")}_reportDrawCall(e=1){var t;(t=this._drawCalls)==null||t.addCount(e,!1)}getFps(){return this._fps}getDeltaTime(){return this._deltaTime}isDeterministicLockStep(){return this._deterministicLockstep}getLockstepMaxSteps(){return this._lockstepMaxSteps}getTimeStep(){return this._timeStep*1e3}_createImageBitmapFromSource(e,t){throw new Error("createImageBitmapFromSource is not implemented")}createImageBitmap(e,t){return createImageBitmap(e,t)}resizeImageBitmap(e,t,i){throw new Error("resizeImageBitmap is not implemented")}getFontOffset(e){throw new Error("getFontOffset is not implemented")}static _CreateCanvas(e,t){if(typeof document=="undefined")return new OffscreenCanvas(e,t);let i=document.createElement("canvas");return i.width=e,i.height=t,i}createCanvas(e,t){return n._CreateCanvas(e,t)}static _FileToolsLoadImage(e,t,i,r,s,a,o){throw Qe("FileTools")}_loadFile(e,t,i,r,s,a){let o=wA(e,t,i,r,s,a);return this._activeRequests.push(o),o.onCompleteObservable.add(()=>{let l=this._activeRequests.indexOf(o);l!==-1&&this._activeRequests.splice(l,1)}),o}static _FileToolsLoadFile(e,t,i,r,s,a){if(Em.loadFile)return Em.loadFile(e,t,i,r,s,a);throw Qe("FileTools")}dispose(){var t;for(this.releaseEffects(),this._isDisposed=!0,this.stopRenderLoop(),this._emptyTexture&&(this._releaseTexture(this._emptyTexture),this._emptyTexture=null),this._emptyCubeTexture&&(this._releaseTexture(this._emptyCubeTexture),this._emptyCubeTexture=null),this._renderingCanvas=null,this.onBeforeTextureInitObservable&&this.onBeforeTextureInitObservable.clear();this.postProcesses.length;)this.postProcesses[0].dispose();for(;this.scenes.length;)this.scenes[0].dispose();for(;this._virtualScenes.length;)this._virtualScenes[0].dispose();(t=this.releaseComputeEffects)==null||t.call(this),hr.ResetCache();for(let i of this._activeRequests)i.abort();this._boundRenderFunction=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onResizeObservable.clear(),this.onCanvasBlurObservable.clear(),this.onCanvasFocusObservable.clear(),this.onCanvasPointerOutObservable.clear(),this.onNewSceneAddedObservable.clear(),this.onEffectErrorObservable.clear(),Er()&&window.removeEventListener("resize",this._checkForMobile);let e=Oe.Instances.indexOf(this);e>=0&&Oe.Instances.splice(e,1),Oe.Instances.length||(Oe.OnEnginesDisposedObservable.notifyObservers(this),Oe.OnEnginesDisposedObservable.clear()),this.onBeginFrameObservable.clear(),this.onEndFrameObservable.clear()}static DefaultLoadingScreenFactory(e){throw Qe("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var ex,tV=I(()=>{ex=class{constructor(){this.shaderLanguage=0}postProcessor(e,t,i,r,s){if(s.drawBuffersExtensionDisabled){let a=/#extension.+GL_EXT_draw_buffers.+(enable|require)/g;e=e.replace(a,"")}return e}}});var Hle,tx,iV=I(()=>{Hle=/(flat\s)?\s*varying\s*.*/,tx=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return Hle.test(e)}varyingProcessor(e,t){return e.replace("varying",t?"in":"out")}postProcessor(e,t,i){let r=e.search(/#extension.+GL_EXT_draw_buffers.+require/)!==-1,s=/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;if(e=e.replace(s,""),e=e.replace(/texture2D\s*\(/g,"texture("),i){let a=e.search(/layout *\(location *= *0\) *out/g)!==-1,o=t.indexOf("#define DUAL_SOURCE_BLENDING")!==-1,l=o?`layout(location = 0, index = 0) out vec4 glFragColor; +`),t+="#define USE_EXACT_SRGB_CONVERSIONS"),t}}_rebuildInternalTextures(){let e=this._internalTexturesCache.slice();for(let t of e)t._rebuild()}_rebuildRenderTargetWrappers(){let e=this._renderTargetWrapperCache.slice();for(let t of e)t._rebuild()}_rebuildEffects(){for(let e in this._compiledEffects){let t=this._compiledEffects[e];t._pipelineContext=null,t._prepareEffect()}hr.ResetCache()}_rebuildGraphicsResources(){var e;this.wipeCaches(!0),this._rebuildEffects(),(e=this._rebuildComputeEffects)==null||e.call(this),this._rebuildBuffers(),this._rebuildInternalTextures(),this._rebuildTextures(),this._rebuildRenderTargetWrappers(),this.wipeCaches(!0)}_flagContextRestored(){ee.Warn(this.name+" context successfully restored."),this.onContextRestoredObservable.notifyObservers(this),this._contextWasLost=!1}_restoreEngineAfterContextLost(e){setTimeout(()=>{this._clearEmptyResources();let t=this._depthCullingState.depthTest,i=this._depthCullingState.depthFunc,r=this._depthCullingState.depthMask,s=this._stencilState.stencilTest;e(),this._rebuildGraphicsResources(),this._depthCullingState.depthTest=t,this._depthCullingState.depthFunc=i,this._depthCullingState.depthMask=r,this._stencilState.stencilTest=s,this._flagContextRestored()},0)}get isDisposed(){return this._isDisposed}get snapshotRendering(){return!1}set snapshotRendering(e){}get snapshotRenderingMode(){return 0}set snapshotRenderingMode(e){}getClassName(){return"AbstractEngine"}get emptyTexture(){return this._emptyTexture||(this._emptyTexture=this.createRawTexture(new Uint8Array(4),1,1,5,!1,!1,1)),this._emptyTexture}get emptyTexture3D(){return this._emptyTexture3D||(this._emptyTexture3D=this.createRawTexture3D(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture3D}get emptyTexture2DArray(){return this._emptyTexture2DArray||(this._emptyTexture2DArray=this.createRawTexture2DArray(new Uint8Array(4),1,1,1,5,!1,!1,1)),this._emptyTexture2DArray}get emptyCubeTexture(){if(!this._emptyCubeTexture){let e=new Uint8Array(4),t=[e,e,e,e,e,e];this._emptyCubeTexture=this.createRawCubeTexture(t,1,5,0,!1,!1,1)}return this._emptyCubeTexture}get activeRenderLoops(){return this._activeRenderLoops}stopRenderLoop(e){if(!e){this._activeRenderLoops.length=0,this._cancelFrame();return}let t=this._activeRenderLoops.indexOf(e);t>=0&&(this._activeRenderLoops.splice(t,1),this._activeRenderLoops.length==0&&this._cancelFrame())}_cancelFrame(){if(this._frameHandler!==0){let e=this._frameHandler;if(this._frameHandler=0,Er()){let{cancelAnimationFrame:t}=this.getHostWindow()||window;if(typeof t=="function")return t(e)}else if(typeof cancelAnimationFrame=="function")return cancelAnimationFrame(e);return clearTimeout(e)}}beginFrame(){this.onBeginFrameObservable.notifyObservers(this)}endFrame(){this._frameId++,this.onEndFrameObservable.notifyObservers(this)}get maxFPS(){return this._maxFPS}set maxFPS(e){if(this._maxFPS=e,e!==void 0){if(e<=0){this._minFrameTime=Number.MAX_VALUE;return}this._minFrameTime=1e3/e}}_isOverFrameTime(e){if(!e||this._maxFPS===void 0)return!1;let t=e-this._lastFrameTime;return this._lastFrameTime=e,this._renderAccumulator+=t,this._renderAccumulatorthis._minFrameTime&&(this._renderAccumulator=this._minFrameTime),!1)}_processFrame(e){if(this._frameHandler=0,!this._contextWasLost&&!this._isOverFrameTime(e)){let t=!0;(this.isDisposed||!this.renderEvenInBackground&&this._windowIsBackground)&&(t=!1),t&&(this.beginFrame(),!this.skipFrameRender&&!this._renderViews()&&this._renderFrame(),this.endFrame())}}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}_renderFrame(){for(let e=0;e-1?e.substring(A).toLowerCase():"");R.indexOf("?")>-1&&(R=R.split("?")[0]);let y=n.GetCompatibleTextureLoader(R,m);r&&r.addPendingData(S),S.url=e,S.generateMipMaps=!t,S.samplingMode=s,S.invertY=i,S._useSRGBBuffer=this._getUseSRGBBuffer(!!p,t),this._doNotHandleContextLost||(S._buffer=f);let C=null;a&&!d&&(C=S.onLoadedObservable.add(a)),d||this._internalTexturesCache.push(S);let D=(w,G)=>{r&&r.removePendingData(S),e===E?(C&&S.onLoadedObservable.remove(C),Oe.UseFallbackTexture&&e!==Oe.FallbackTexture&&this._createTextureBase(Oe.FallbackTexture,t,S.invertY,r,s,null,o,l,c,f,S),w=(w||"Unknown error")+(Oe.UseFallbackTexture?" - Fallback texture was used":""),S.onErrorObservable.notifyObservers({message:w,exception:G}),o&&o(w,G)):(ee.Warn(`Failed to load ${e}, falling back to ${E}`),this._createTextureBase(E,t,S.invertY,r,s,a,o,l,c,f,S,h,u,m,_,p))};if(y){let w=async G=>{(await y).loadData(G,S,(N,B,V,Q,K,J)=>{J?D("TextureLoader failed to load data"):l(S,R,r,{width:N,height:B},S.invertY,!V,Q,()=>(K(),!1),s)},_)};if(!f)this._loadFile(e,async G=>{try{await w(new Uint8Array(G))}catch(O){D("Failed to parse texture data",O)}},void 0,r?r.offlineProvider:void 0,!0,(G,O)=>{D("Unable to load "+(G&&G.responseURL,O))});else{let G=async O=>{try{await w(O)}catch(N){D("Failed to parse texture data",N)}};f instanceof ArrayBuffer?G(new Uint8Array(f)):ArrayBuffer.isView(f)?G(f):o&&o("Unable to load: only ArrayBuffer or ArrayBufferView is supported",null)}}else{let w=G=>{v&&!this._doNotHandleContextLost&&(S._buffer=G),l(S,R,r,G,S.invertY,t,!1,c,s)};!g||T?f&&(typeof f.decoding=="string"||f.close)?w(f):n._FileToolsLoadImage(e||"",w,D,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):typeof f=="string"||f instanceof ArrayBuffer||ArrayBuffer.isView(f)||f instanceof Blob?n._FileToolsLoadImage(f,w,D,r?r.offlineProvider:null,m,S.invertY&&this._features.needsInvertingBitmap?{imageOrientation:"flipY"}:void 0,this):f&&w(f)}return S}_rebuildBuffers(){for(let e of this._uniformBuffers)e._rebuildAfterContextLost()}get _shouldUseHighPrecisionShader(){return!!(this._caps.highPrecisionShaderSupported&&this._highPrecisionShadersAllowed)}getHostDocument(){return this._renderingCanvas&&this._renderingCanvas.ownerDocument?this._renderingCanvas.ownerDocument:Rf()?document:null}getLoadedTexturesCache(){return this._internalTexturesCache}clearInternalTexturesCache(){this._internalTexturesCache.length=0}getCaps(){return this._caps}resetTextureCache(){for(let e in this._boundTexturesCache)Object.prototype.hasOwnProperty.call(this._boundTexturesCache,e)&&(this._boundTexturesCache[e]=null);this._currentTextureChannel=-1}get name(){return this._name}set name(e){this._name=e}static get NpmPackage(){return"babylonjs@9.6.0"}static get Version(){return"9.6.0"}getRenderingCanvas(){return this._renderingCanvas}getAudioContext(){return this._audioContext}getAudioDestination(){return this._audioDestination}setHardwareScalingLevel(e){this._hardwareScalingLevel=e,this.resize()}getHardwareScalingLevel(){return this._hardwareScalingLevel}get doNotHandleContextLost(){return this._doNotHandleContextLost}set doNotHandleContextLost(e){this._doNotHandleContextLost=e}get isStencilEnable(){return this._isStencilEnable}getCreationOptions(){return this._creationOptions}constructor(e,t,i){var a,o,l,c,f,d,h,u,m,_;this._colorWrite=!0,this._colorWriteChanged=!0,this._depthCullingState=new $A,this._stencilStateComposer=new JA,this._stencilState=new ch,this._alphaState=new Am(!1),this._alphaMode=Array(8).fill(-1),this._alphaEquation=Array(8).fill(-1),this._activeRequests=[],this._badOS=!1,this._badDesktopOS=!1,this._compatibilityMode=!0,this._internalTexturesCache=new Array,this._currentRenderTarget=null,this._boundTexturesCache={},this._activeChannel=0,this._currentTextureChannel=-1,this._viewportCached={x:0,y:0,z:0,w:0},this._isWebGPU=!1,this._enableGPUDebugMarkers=!1,this.onCanvasBlurObservable=new te,this.onCanvasFocusObservable=new te,this.onNewSceneAddedObservable=new te,this.onResizeObservable=new te,this.onCanvasPointerOutObservable=new te,this.onEffectErrorObservable=new te,this.disablePerformanceMonitorInBackground=!1,this.disableVertexArrayObjects=!1,this._frameId=0,this.hostInformation={isMobile:!1},this.isFullscreen=!1,this.enableOfflineSupport=!1,this.disableManifestCheck=!1,this.disableContextMenu=!0,this.currentRenderPassId=0,this.isPointerLock=!1,this.postProcesses=[],this.canvasTabIndex=1,this._contextWasLost=!1,this._useReverseDepthBuffer=!1,this.isNDCHalfZRange=!1,this.hasOriginBottomLeft=!0,this._renderTargetWrapperCache=new Array,this._compiledEffects={},this._isDisposed=!1,this.scenes=[],this._virtualScenes=new Array,this.onBeforeTextureInitObservable=new te,this.renderEvenInBackground=!0,this.preventCacheWipeBetweenFrames=!1,this._frameHandler=0,this._activeRenderLoops=new Array,this._windowIsBackground=!1,this._boundRenderFunction=p=>this._renderLoop(p),this._lastFrameTime=0,this._renderAccumulator=0,this.skipFrameRender=!1,this.onBeforeShaderCompilationObservable=new te,this.onAfterShaderCompilationObservable=new te,this.onBeginFrameObservable=new te,this.onEndFrameObservable=new te,this._transformTextureUrl=null,this._uniformBuffers=new Array,this._storageBuffers=new Array,this._highPrecisionShadersAllowed=!0,this.onContextLostObservable=new te,this.onContextRestoredObservable=new te,this._name="",this.premultipliedAlpha=!0,this.adaptToDeviceRatio=!1,this._lastDevicePixelRatio=1,this._doNotHandleContextLost=!1,this.cullBackFaces=null,this._renderPassNames=["main"],this._fps=60,this._deltaTime=0,this._deterministicLockstep=!1,this._lockstepMaxSteps=4,this._timeStep=1/60,this.onDisposeObservable=new te,this.onReleaseEffectsObservable=new te,Oe.Instances.push(this),this.startTime=br.Now,this._stencilStateComposer.stencilGlobal=this._stencilState,gs.SetMatrixPrecision(!!t.useLargeWorldRendering||!!t.useHighPrecisionMatrix),ec()&&navigator.userAgent&&(this._badOS=/iPad/i.test(navigator.userAgent)||/iPhone/i.test(navigator.userAgent),this._badDesktopOS=/^((?!chrome|android).)*safari/i.test(navigator.userAgent)),this.adaptToDeviceRatio=i!=null?i:!1,t.antialias=e!=null?e:t.antialias,t.deterministicLockstep=(a=t.deterministicLockstep)!=null?a:!1,t.lockstepMaxSteps=(o=t.lockstepMaxSteps)!=null?o:4,t.timeStep=(l=t.timeStep)!=null?l:1/60,t.stencil=(c=t.stencil)!=null?c:!0,this._audioContext=(d=(f=t.audioEngineOptions)==null?void 0:f.audioContext)!=null?d:null,this._audioDestination=(u=(h=t.audioEngineOptions)==null?void 0:h.audioDestination)!=null?u:null,this.premultipliedAlpha=(m=t.premultipliedAlpha)!=null?m:!0,this._doNotHandleContextLost=!!t.doNotHandleContextLost,this._isStencilEnable=!!t.stencil,this.useExactSrgbConversions=(_=t.useExactSrgbConversions)!=null?_:!1;let r=Er()&&window.devicePixelRatio||1,s=t.limitDeviceRatio||r;i=i||t.adaptToDeviceRatio||!1,this._hardwareScalingLevel=i?1/Math.min(s,r):1,this._lastDevicePixelRatio=r,this._creationOptions=t}resize(e=!1){var r,s;let t,i;if(this.adaptToDeviceRatio){let a=Er()&&window.devicePixelRatio||1,o=this._lastDevicePixelRatio/a;this._lastDevicePixelRatio=a,this._hardwareScalingLevel*=o}if(Er()&&Rf())if(this._renderingCanvas){let a=(s=(r=this._renderingCanvas).getBoundingClientRect)==null?void 0:s.call(r);t=this._renderingCanvas.clientWidth||(a==null?void 0:a.width)||this._renderingCanvas.width*this._hardwareScalingLevel||100,i=this._renderingCanvas.clientHeight||(a==null?void 0:a.height)||this._renderingCanvas.height*this._hardwareScalingLevel||100}else t=window.innerWidth,i=window.innerHeight;else t=this._renderingCanvas?this._renderingCanvas.width:100,i=this._renderingCanvas?this._renderingCanvas.height:100;this.setSize(t/this._hardwareScalingLevel,i/this._hardwareScalingLevel,e)}setSize(e,t,i=!1){if(!this._renderingCanvas||(e=e|0,t=t|0,!i&&this._renderingCanvas.width===e&&this._renderingCanvas.height===t))return!1;if(this._renderingCanvas.width=e,this._renderingCanvas.height=t,this.scenes){for(let r=0;r{let e=navigator.userAgent;this.hostInformation.isMobile=e.indexOf("Mobile")!==-1||e.indexOf("Mac")!==-1&&Rf()&&"ontouchend"in document},this._checkForMobile(),Er()&&window.addEventListener("resize",this._checkForMobile))}createVideoElement(e){return document.createElement("video")}_reportDrawCall(e=1){var t;(t=this._drawCalls)==null||t.addCount(e,!1)}getFps(){return this._fps}getDeltaTime(){return this._deltaTime}isDeterministicLockStep(){return this._deterministicLockstep}getLockstepMaxSteps(){return this._lockstepMaxSteps}getTimeStep(){return this._timeStep*1e3}_createImageBitmapFromSource(e,t){throw new Error("createImageBitmapFromSource is not implemented")}createImageBitmap(e,t){return createImageBitmap(e,t)}resizeImageBitmap(e,t,i){throw new Error("resizeImageBitmap is not implemented")}getFontOffset(e){throw new Error("getFontOffset is not implemented")}static _CreateCanvas(e,t){if(typeof document=="undefined")return new OffscreenCanvas(e,t);let i=document.createElement("canvas");return i.width=e,i.height=t,i}createCanvas(e,t){return n._CreateCanvas(e,t)}static _FileToolsLoadImage(e,t,i,r,s,a,o){throw Qe("FileTools")}_loadFile(e,t,i,r,s,a){let o=FA(e,t,i,r,s,a);return this._activeRequests.push(o),o.onCompleteObservable.add(()=>{let l=this._activeRequests.indexOf(o);l!==-1&&this._activeRequests.splice(l,1)}),o}static _FileToolsLoadFile(e,t,i,r,s,a){if(Em.loadFile)return Em.loadFile(e,t,i,r,s,a);throw Qe("FileTools")}dispose(){var t;for(this.releaseEffects(),this._isDisposed=!0,this.stopRenderLoop(),this._emptyTexture&&(this._releaseTexture(this._emptyTexture),this._emptyTexture=null),this._emptyCubeTexture&&(this._releaseTexture(this._emptyCubeTexture),this._emptyCubeTexture=null),this._renderingCanvas=null,this.onBeforeTextureInitObservable&&this.onBeforeTextureInitObservable.clear();this.postProcesses.length;)this.postProcesses[0].dispose();for(;this.scenes.length;)this.scenes[0].dispose();for(;this._virtualScenes.length;)this._virtualScenes[0].dispose();(t=this.releaseComputeEffects)==null||t.call(this),hr.ResetCache();for(let i of this._activeRequests)i.abort();this._boundRenderFunction=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onResizeObservable.clear(),this.onCanvasBlurObservable.clear(),this.onCanvasFocusObservable.clear(),this.onCanvasPointerOutObservable.clear(),this.onNewSceneAddedObservable.clear(),this.onEffectErrorObservable.clear(),Er()&&window.removeEventListener("resize",this._checkForMobile);let e=Oe.Instances.indexOf(this);e>=0&&Oe.Instances.splice(e,1),Oe.Instances.length||(Oe.OnEnginesDisposedObservable.notifyObservers(this),Oe.OnEnginesDisposedObservable.clear()),this.onBeginFrameObservable.clear(),this.onEndFrameObservable.clear()}static DefaultLoadingScreenFactory(e){throw Qe("LoadingScreen")}static MarkAllMaterialsAsDirty(e,t){for(let i=0;i{});var tx,tV=I(()=>{tx=class{constructor(){this.shaderLanguage=0}postProcessor(e,t,i,r,s){if(s.drawBuffersExtensionDisabled){let a=/#extension.+GL_EXT_draw_buffers.+(enable|require)/g;e=e.replace(a,"")}return e}}});var Hle,ix,iV=I(()=>{Hle=/(flat\s)?\s*varying\s*.*/,ix=class{constructor(){this.shaderLanguage=0}attributeProcessor(e){return e.replace("attribute","in")}varyingCheck(e,t){return Hle.test(e)}varyingProcessor(e,t){return e.replace("varying",t?"in":"out")}postProcessor(e,t,i){let r=e.search(/#extension.+GL_EXT_draw_buffers.+require/)!==-1,s=/#extension.+(GL_OVR_multiview2|GL_OES_standard_derivatives|GL_EXT_shader_texture_lod|GL_EXT_frag_depth|GL_EXT_draw_buffers).+(enable|require)/g;if(e=e.replace(s,""),e=e.replace(/texture2D\s*\(/g,"texture("),i){let a=e.search(/layout *\(location *= *0\) *out/g)!==-1,o=t.indexOf("#define DUAL_SOURCE_BLENDING")!==-1,l=o?`layout(location = 0, index = 0) out vec4 glFragColor; layout(location = 0, index = 1) out vec4 glFragColor2; `:`layout(location = 0) out vec4 glFragColor; `;o&&(e=`#extension GL_EXT_blend_func_extended : require `+e),e=e.replace(/texture2DLodEXT\s*\(/g,"textureLod("),e=e.replace(/textureCubeLodEXT\s*\(/g,"textureLod("),e=e.replace(/textureCube\s*\(/g,"texture("),e=e.replace(/gl_FragDepthEXT/g,"gl_FragDepth"),e=e.replace(/gl_FragColor/g,"glFragColor"),e=e.replace(/gl_FragData/g,"glFragData"),e=e.replace(/void\s+?main\s*\(/g,(r||a?"":l)+"void main(")}else if(t.indexOf("#define VERTEXOUTPUT_INVARIANT")>=0&&(e=`invariant gl_Position; `+e),t.indexOf("#define MULTIVIEW")!==-1)return`#extension GL_OVR_multiview2 : require layout (num_views = 2) in; -`+e;return e}}});var fh,GC=I(()=>{fh=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};fh._Counter=0});var ml,ix=I(()=>{GC();ml=class extends fh{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function dh(n){let e=1;do e*=2;while(en-t?t:e}function rV(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function rx(n){return n=n|n>>1,n=n|n>>2,n=n|n>>4,n=n|n>>8,n=n|n>>16,n-(n>>1)}function Cn(n,e,t=2){let i;switch(t){case 1:i=rx(n);break;case 2:i=kC(n);break;default:i=rV(n);break}return Math.min(i,e)}var Eo=I(()=>{});var xm,WC=I(()=>{xm=class{get underlyingResource(){return this._webGLTexture}constructor(e=null,t){if(this._MSAARenderBuffers=null,this._context=t,!e&&(e=t.createTexture(),!e))throw new Error("Unable to create webGL texture");this.set(e)}setUsage(){}set(e){this._webGLTexture=e}reset(){this._webGLTexture=null,this._MSAARenderBuffers=null}addMSAARenderBuffer(e){this._MSAARenderBuffers||(this._MSAARenderBuffers=[]),this._MSAARenderBuffers.push(e)}releaseMSAARenderBuffers(){if(this._MSAARenderBuffers){for(let e of this._MSAARenderBuffers)this._context.deleteRenderbuffer(e);this._MSAARenderBuffers=null}}getMSAARenderBuffer(e=0){var t,i;return(i=(t=this._MSAARenderBuffers)==null?void 0:t[e])!=null?i:null}release(){this.releaseMSAARenderBuffers(),this._webGLTexture&&this._context.deleteTexture(this._webGLTexture),this.reset()}}});function HC(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function ic(n){return n===13||n===17||n===18||n===19}var Dg=I(()=>{});var nV={};Fe(nV,{ThinEngine:()=>bt});var zC,bt,vs=I(()=>{lh();CC();zr();VC();Lt();Oa();tV();iV();ix();Eo();WC();Ws();bf();FC();Dg();UC();zC=class{},bt=class n extends Re{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return hr.ShadersRepository}static set ShadersRepository(e){hr.ShadersRepository=e}get supportsUniformBuffers(){return this.webGLVersion>1&&!this.disableUniformBuffers}get needPOTTextures(){return this._webGLVersion<2||this.forcePOTTextures}get _supportsHardwareTextureRescaling(){return!1}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e}snapshotRenderingReset(){this.snapshotRendering=!1}constructor(e,t,i,r){if(i=i||{},super(t!=null?t:i.antialias,i,r),this._name="WebGL",this.forcePOTTextures=!1,this.validateShaderPrograms=!1,this.disableUniformBuffers=!1,this._webGLVersion=1,this._vertexAttribArraysEnabled=[],this._uintIndicesCurrentlySet=!1,this._currentBoundBuffer=new Array,this._currentFramebuffer=null,this._dummyFramebuffer=null,this._currentBufferPointers=new Array,this._currentInstanceLocations=new Array,this._currentInstanceBuffers=new Array,this._vaoRecordInProgress=!1,this._mustWipeVertexAttributes=!1,this._nextFreeTextureSlots=new Array,this._maxSimultaneousTextures=0,this._maxMSAASamplesOverride=null,this._unpackFlipYCached=null,this.enableUnpackFlipYCached=!0,this._boundUniforms={},!e)return;let s;if(e.getContext){if(s=e,i.preserveDrawingBuffer===void 0&&(i.preserveDrawingBuffer=!1),i.xrCompatible===void 0&&(i.xrCompatible=!1),navigator&&navigator.userAgent){this._setupMobileChecks();let l=navigator.userAgent;for(let c of n.ExceptionList){let f=c.key,d=c.targets;if(new RegExp(f).test(l)){if(c.capture&&c.captureConstraint){let u=c.capture,m=c.captureConstraint,p=new RegExp(u).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let u of d)switch(u){case"uniformBuffer":this.disableUniformBuffers=!0;break;case"vao":this.disableVertexArrayObjects=!0;break;case"antialias":i.antialias=!1;break;case"maxMSAASamples":this._maxMSAASamplesOverride=1;break}}}}if(this._doNotHandleContextLost?this._onContextLost=()=>{BA(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,BA(this._gl),ee.Warn("WebGL context lost."),this.onContextLostObservable.notifyObservers(this)},this._onContextRestored=()=>{this._restoreEngineAfterContextLost(()=>this._initGLContext())},s.addEventListener("webglcontextrestored",this._onContextRestored,!1),i.powerPreference=i.powerPreference||"high-performance"),s.addEventListener("webglcontextlost",this._onContextLost,!1),this._badDesktopOS&&(i.xrCompatible=!1),!i.disableWebGL2Support)try{this._gl=s.getContext("webgl2",i)||s.getContext("experimental-webgl2",i),this._gl&&(this._webGLVersion=2,this._shaderPlatformName="WEBGL2",this._gl.deleteQuery||(this._webGLVersion=1,this._shaderPlatformName="WEBGL1"))}catch(l){}if(!this._gl){if(!s)throw new Error("The provided canvas is null or undefined.");try{this._gl=s.getContext("webgl",i)||s.getContext("experimental-webgl",i)}catch(l){throw new Error("WebGL not supported",{cause:l})}}if(!this._gl)throw new Error("WebGL not supported")}else{this._gl=e,s=this._gl.canvas,this._gl.renderbufferStorageMultisample?(this._webGLVersion=2,this._shaderPlatformName="WEBGL2"):this._shaderPlatformName="WEBGL1";let l=this._gl.getContextAttributes();l&&(i.stencil=l.stencil)}this._sharedInit(s),this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),i.useHighPrecisionFloats!==void 0&&(this._highPrecisionShadersAllowed=i.useHighPrecisionFloats),this.resize(),this._initGLContext(),this._initFeatures();for(let l=0;l1?new tx:new ex;let a=`Babylon.js v${n.Version}`;ee.Log(a+` - ${this.description}`),this._renderingCanvas&&this._renderingCanvas.setAttribute&&this._renderingCanvas.setAttribute("data-engine",a);let o=Yn(this._gl);o.validateShaderPrograms=this.validateShaderPrograms,o.parallelShaderCompile=this._caps.parallelShaderCompile}_clearEmptyResources(){this._dummyFramebuffer=null,super._clearEmptyResources()}_getShaderProcessingContext(e){return null}areAllEffectsReady(){for(let e in this._compiledEffects)if(!this._compiledEffects[e].isReady())return!1;return!0}_initGLContext(){var i;this._caps={maxTexturesImageUnits:this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS),maxCombinedTexturesImageUnits:this._gl.getParameter(this._gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),maxSamples:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_SAMPLES):1,maxCubemapTextureSize:this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE),maxRenderTextureSize:this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:this._gl.getParameter(this._gl.MAX_VERTEX_ATTRIBS),maxVaryingVectors:this._gl.getParameter(this._gl.MAX_VARYING_VECTORS),maxFragmentUniformVectors:this._gl.getParameter(this._gl.MAX_FRAGMENT_UNIFORM_VECTORS),maxVertexUniformVectors:this._gl.getParameter(this._gl.MAX_VERTEX_UNIFORM_VECTORS),shaderFloatPrecision:0,parallelShaderCompile:this._gl.getExtension("KHR_parallel_shader_compile")||void 0,standardDerivatives:this._webGLVersion>1||this._gl.getExtension("OES_standard_derivatives")!==null,maxAnisotropy:1,astc:this._gl.getExtension("WEBGL_compressed_texture_astc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),bptc:this._gl.getExtension("EXT_texture_compression_bptc")||this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),s3tc:this._gl.getExtension("WEBGL_compressed_texture_s3tc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),s3tc_srgb:this._gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),pvrtc:this._gl.getExtension("WEBGL_compressed_texture_pvrtc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:this._gl.getExtension("WEBGL_compressed_texture_etc1")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),etc2:this._gl.getExtension("WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBGL_compressed_texture_es3_0"),textureAnisotropicFilterExtension:this._gl.getExtension("EXT_texture_filter_anisotropic")||this._gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||this._gl.getExtension("MOZ_EXT_texture_filter_anisotropic"),uintIndices:this._webGLVersion>1||this._gl.getExtension("OES_element_index_uint")!==null,fragmentDepthSupported:this._webGLVersion>1||this._gl.getExtension("EXT_frag_depth")!==null,highPrecisionShaderSupported:!1,timerQuery:this._gl.getExtension("EXT_disjoint_timer_query_webgl2")||this._gl.getExtension("EXT_disjoint_timer_query"),supportOcclusionQuery:this._webGLVersion>1,canUseTimestampForTimerQuery:!1,drawBuffersExtension:!1,maxMSAASamples:1,colorBufferFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_float")),blendFloat:this._gl.getExtension("EXT_float_blend")!==null,supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:!1,colorBufferHalfFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_half_float")),textureFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_float")),textureHalfFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_half_float")),textureHalfFloatRender:!1,textureFloatLinearFiltering:!1,textureFloatRender:!1,textureHalfFloatLinearFiltering:!1,vertexArrayObject:!1,instancedArrays:!1,textureLOD:!!(this._webGLVersion>1||this._gl.getExtension("EXT_shader_texture_lod")),texelFetch:this._webGLVersion!==1,blendMinMax:!1,multiview:this._gl.getExtension("OVR_multiview2"),oculusMultiview:this._gl.getExtension("OCULUS_multiview"),depthTextureExtension:!1,canUseGLInstanceID:this._webGLVersion>1,canUseGLVertexID:this._webGLVersion>1,supportComputeShaders:!1,supportSRGBBuffers:!1,supportTransformFeedbacks:this._webGLVersion>1,textureMaxLevel:this._webGLVersion>1,texture2DArrayMaxLayerCount:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS):128,disableMorphTargetTexture:!1,textureNorm16:!!this._gl.getExtension("EXT_texture_norm16"),blendParametersPerTarget:!1,dualSourceBlending:!1,supportReadWriteStorageTextures:!1},this._caps.supportFloatTexturesResolve=this._caps.colorBufferFloat,this._caps.rg11b10ufColorRenderable=this._caps.colorBufferFloat,this._glVersion=this._gl.getParameter(this._gl.VERSION);let e=this._gl.getExtension("WEBGL_debug_renderer_info");e!=null&&(this._glRenderer=this._gl.getParameter(e.UNMASKED_RENDERER_WEBGL),this._glVendor=this._gl.getParameter(e.UNMASKED_VENDOR_WEBGL)),this._glVendor||(this._glVendor=this._gl.getParameter(this._gl.VENDOR)||"Unknown vendor"),this._glRenderer||(this._glRenderer=this._gl.getParameter(this._gl.RENDERER)||"Unknown renderer"),this._gl.HALF_FLOAT_OES!==36193&&(this._gl.HALF_FLOAT_OES=36193),this._gl.RGBA16F!==34842&&(this._gl.RGBA16F=34842),this._gl.RGBA32F!==34836&&(this._gl.RGBA32F=34836),this._gl.DEPTH24_STENCIL8!==35056&&(this._gl.DEPTH24_STENCIL8=35056),this._caps.timerQuery&&(this._webGLVersion===1&&(this._gl.getQuery=this._caps.timerQuery.getQueryEXT.bind(this._caps.timerQuery)),this._caps.canUseTimestampForTimerQuery=((i=this._gl.getQuery(this._caps.timerQuery.TIMESTAMP_EXT,this._caps.timerQuery.QUERY_COUNTER_BITS_EXT))!=null?i:0)>0),this._caps.maxAnisotropy=this._caps.textureAnisotropicFilterExtension?this._gl.getParameter(this._caps.textureAnisotropicFilterExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,this._caps.textureFloatLinearFiltering=!!(this._caps.textureFloat&&this._gl.getExtension("OES_texture_float_linear")),this._caps.textureFloatRender=!!(this._caps.textureFloat&&this._canRenderToFloatFramebuffer()),this._caps.textureHalfFloatLinearFiltering=!!(this._webGLVersion>1||this._caps.textureHalfFloat&&this._gl.getExtension("OES_texture_half_float_linear")),this._caps.textureNorm16&&(this._gl.R16_EXT=33322,this._gl.RG16_EXT=33324,this._gl.RGB16_EXT=32852,this._gl.RGBA16_EXT=32859,this._gl.R16_SNORM_EXT=36760,this._gl.RG16_SNORM_EXT=36761,this._gl.RGB16_SNORM_EXT=36762,this._gl.RGBA16_SNORM_EXT=36763);let t=this._gl.getExtension("OES_draw_buffers_indexed");if(this._caps.blendParametersPerTarget=!!t,this._alphaState=new Am(this._caps.blendParametersPerTarget),t&&(this._gl.blendEquationSeparateIndexed=t.blendEquationSeparateiOES.bind(t),this._gl.blendEquationIndexed=t.blendEquationiOES.bind(t),this._gl.blendFuncSeparateIndexed=t.blendFuncSeparateiOES.bind(t),this._gl.blendFuncIndexed=t.blendFunciOES.bind(t),this._gl.colorMaskIndexed=t.colorMaskiOES.bind(t),this._gl.disableIndexed=t.disableiOES.bind(t),this._gl.enableIndexed=t.enableiOES.bind(t)),this._caps.dualSourceBlending=!!this._gl.getExtension("WEBGL_blend_func_extended"),this._caps.astc&&(this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR),this._caps.bptc&&(this._gl.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=this._caps.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT),this._caps.s3tc_srgb&&(this._gl.COMPRESSED_SRGB_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT),this._caps.etc2&&(this._gl.COMPRESSED_SRGB8_ETC2=this._caps.etc2.COMPRESSED_SRGB8_ETC2,this._gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=this._caps.etc2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC),this._webGLVersion>1&&this._gl.HALF_FLOAT_OES!==5131&&(this._gl.HALF_FLOAT_OES=5131),this._caps.textureHalfFloatRender=this._caps.textureHalfFloat&&this._canRenderToHalfFloatFramebuffer(),this._webGLVersion>1)this._caps.drawBuffersExtension=!0,this._caps.maxMSAASamples=this._maxMSAASamplesOverride!==null?this._maxMSAASamplesOverride:this._gl.getParameter(this._gl.MAX_SAMPLES),this._caps.maxDrawBuffers=this._gl.getParameter(this._gl.MAX_DRAW_BUFFERS);else{let r=this._gl.getExtension("WEBGL_draw_buffers");if(r!==null){this._caps.drawBuffersExtension=!0,this._gl.drawBuffers=r.drawBuffersWEBGL.bind(r),this._caps.maxDrawBuffers=this._gl.getParameter(r.MAX_DRAW_BUFFERS_WEBGL),this._gl.DRAW_FRAMEBUFFER=this._gl.FRAMEBUFFER;for(let s=0;s<16;s++)this._gl["COLOR_ATTACHMENT"+s+"_WEBGL"]=r["COLOR_ATTACHMENT"+s+"_WEBGL"]}}if(this._webGLVersion>1)this._caps.depthTextureExtension=!0;else{let r=this._gl.getExtension("WEBGL_depth_texture");r!=null&&(this._caps.depthTextureExtension=!0,this._gl.UNSIGNED_INT_24_8=r.UNSIGNED_INT_24_8_WEBGL)}if(this.disableVertexArrayObjects)this._caps.vertexArrayObject=!1;else if(this._webGLVersion>1)this._caps.vertexArrayObject=!0;else{let r=this._gl.getExtension("OES_vertex_array_object");r!=null&&(this._caps.vertexArrayObject=!0,this._gl.createVertexArray=r.createVertexArrayOES.bind(r),this._gl.bindVertexArray=r.bindVertexArrayOES.bind(r),this._gl.deleteVertexArray=r.deleteVertexArrayOES.bind(r))}if(this._webGLVersion>1)this._caps.instancedArrays=!0;else{let r=this._gl.getExtension("ANGLE_instanced_arrays");r!=null?(this._caps.instancedArrays=!0,this._gl.drawArraysInstanced=r.drawArraysInstancedANGLE.bind(r),this._gl.drawElementsInstanced=r.drawElementsInstancedANGLE.bind(r),this._gl.vertexAttribDivisor=r.vertexAttribDivisorANGLE.bind(r)):this._caps.instancedArrays=!1}if(this._gl.getShaderPrecisionFormat){let r=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.HIGH_FLOAT),s=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.HIGH_FLOAT);if(r&&s&&(this._caps.highPrecisionShaderSupported=r.precision!==0&&s.precision!==0,this._caps.shaderFloatPrecision=Math.min(r.precision,s.precision)),!this._shouldUseHighPrecisionShader){let a=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.MEDIUM_FLOAT),o=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.MEDIUM_FLOAT);a&&o&&(this._caps.shaderFloatPrecision=Math.min(a.precision,o.precision))}this._caps.shaderFloatPrecision<10&&(this._caps.shaderFloatPrecision=10)}if(this._webGLVersion>1)this._caps.blendMinMax=!0;else{let r=this._gl.getExtension("EXT_blend_minmax");r!=null&&(this._caps.blendMinMax=!0,this._gl.MAX=r.MAX_EXT,this._gl.MIN=r.MIN_EXT)}if(!this._caps.supportSRGBBuffers){if(this._webGLVersion>1)this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:WebGL2RenderingContext.SRGB,SRGB8:WebGL2RenderingContext.SRGB8,SRGB8_ALPHA8:WebGL2RenderingContext.SRGB8_ALPHA8};else{let r=this._gl.getExtension("EXT_sRGB");r!=null&&(this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:r.SRGB_EXT,SRGB8:r.SRGB_ALPHA_EXT,SRGB8_ALPHA8:r.SRGB_ALPHA_EXT})}if(this._creationOptions){let r=this._creationOptions.forceSRGBBufferSupportState;r!==void 0&&(this._caps.supportSRGBBuffers=this._caps.supportSRGBBuffers&&r)}}this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=this._gl.LEQUAL,this._depthCullingState.depthMask=!0,this._maxSimultaneousTextures=this._caps.maxCombinedTexturesImageUnits;for(let r=0;r=65535)return new Uint32Array(e);return new Uint16Array(e)}return new Uint16Array(e)}bindArrayBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ARRAY_BUFFER)}bindUniformBlock(e,t,i){let r=e.program,s=this._gl.getUniformBlockIndex(r,t);this._gl.uniformBlockBinding(r,s,i)}bindIndexBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ELEMENT_ARRAY_BUFFER)}_bindBuffer(e,t){(this._vaoRecordInProgress||this._currentBoundBuffer[t]!==e)&&(this._gl.bindBuffer(t,e?e.underlyingResource:null),this._currentBoundBuffer[t]=e)}updateArrayBuffer(e){this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,e)}_vertexAttribPointer(e,t,i,r,s,a,o){let l=this._currentBufferPointers[t];if(!l)return;let c=!1;l.active?(l.buffer!==e&&(l.buffer=e,c=!0),l.size!==i&&(l.size=i,c=!0),l.type!==r&&(l.type=r,c=!0),l.normalized!==s&&(l.normalized=s,c=!0),l.stride!==a&&(l.stride=a,c=!0),l.offset!==o&&(l.offset=o,c=!0)):(c=!0,l.active=!0,l.index=t,l.size=i,l.type=r,l.normalized=s,l.stride=a,l.offset=o,l.buffer=e),(c||this._vaoRecordInProgress)&&(this.bindArrayBuffer(e),r===this._gl.UNSIGNED_INT||r===this._gl.INT?this._gl.vertexAttribIPointer(t,i,r,a,o):this._gl.vertexAttribPointer(t,i,r,s,a,o))}_bindIndexBufferWithCache(e){e!=null&&this._cachedIndexBuffer!==e&&(this._cachedIndexBuffer=e,this.bindIndexBuffer(e),this._uintIndicesCurrentlySet=e.is32Bits)}_bindVertexBuffersAttributes(e,t,i){let r=t.getAttributesNames();this._vaoRecordInProgress||this._unbindVertexArrayObject(),this.unbindAllAttributes();for(let s=0;s=0){let o=r[s],l=null;if(i&&(l=i[o]),l||(l=e[o]),!l)continue;this._gl.enableVertexAttribArray(a),this._vaoRecordInProgress||(this._vertexAttribArraysEnabled[a]=!0);let c=l.getBuffer();c&&(this._vertexAttribPointer(c,a,l.getSize(),l.type,l.normalized,l.byteStride,l.byteOffset),l.getIsInstanced()&&(this._gl.vertexAttribDivisor(a,l.getInstanceDivisor()),this._vaoRecordInProgress||(this._currentInstanceLocations.push(a),this._currentInstanceBuffers.push(c))))}}}recordVertexArrayObject(e,t,i,r){let s=this._gl.createVertexArray();if(!s)throw new Error("Unable to create VAO");return this._vaoRecordInProgress=!0,this._gl.bindVertexArray(s),this._mustWipeVertexAttributes=!0,this._bindVertexBuffersAttributes(e,i,r),this.bindIndexBuffer(t),this._vaoRecordInProgress=!1,this._gl.bindVertexArray(null),s}bindVertexArrayObject(e,t){this._cachedVertexArrayObject!==e&&(this._cachedVertexArrayObject=e,this._gl.bindVertexArray(e),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._uintIndicesCurrentlySet=t!=null&&t.is32Bits,this._mustWipeVertexAttributes=!0)}bindBuffersDirectly(e,t,i,r,s){if(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==s){this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=s;let a=s.getAttributesCount();this._unbindVertexArrayObject(),this.unbindAllAttributes();let o=0;for(let l=0;l=0&&(this._gl.enableVertexAttribArray(c),this._vertexAttribArraysEnabled[c]=!0,this._vertexAttribPointer(e,c,i[l],this._gl.FLOAT,!1,r,o)),o+=i[l]*4}}this._bindIndexBufferWithCache(t)}_unbindVertexArrayObject(){this._cachedVertexArrayObject&&(this._cachedVertexArrayObject=null,this._gl.bindVertexArray(null))}bindBuffers(e,t,i,r){(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==i)&&(this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=i,this._bindVertexBuffersAttributes(e,i,r)),this._bindIndexBufferWithCache(t)}unbindInstanceAttributes(){let e;for(let t=0,i=this._currentInstanceLocations.length;t1||this.isWebGPU)),(o===1&&!this._caps.textureFloatLinearFiltering||o===2&&!this._caps.textureHalfFloatLinearFiltering)&&(l=1),o===1&&!this._caps.textureFloat&&(o=0,ee.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));let p=HC(c),g=ic(c),v=this._gl,T=new Vi(this,r),S=e.width||e,E=e.height||e,A=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),y=R!==0?v.TEXTURE_2D_ARRAY:A!==0?v.TEXTURE_3D:_?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,g):this._getRGBABufferInternalSizedFormat(o,c,f),D=p?g?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(y,T),R!==0)T.is2DArray=!0,v.texImage3D(y,0,C,S,E,R,0,D,w,null);else if(A!==0)T.is3D=!0,v.texImage3D(y,0,C,S,E,A,0,D,w,null);else if(_){T.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,S,E,0,D,w,null)}else v.texImage2D(y,0,C,S,E,0,D,w,null);if(v.texParameteri(y,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(y,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(y,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(y,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(y),this._bindTextureDirectly(y,null),T._useSRGBBuffer=f,T.baseWidth=S,T.baseHeight=E,T.width=S,T.height=E,T.depth=R||A,T.isReady=!0,T.samples=d,T.generateMipMaps=s,T.samplingMode=l,T.type=o,T.format=c,T.label=h,T.comparisonFunction=m,this._internalTexturesCache.push(T),u){let O;if(HC(T.format)?O=this._setupFramebufferDepthAttachments(ic(T.format),T.format!==19,T.width,T.height,d,T.format,!0):O=this._createRenderBuffer(T.width,T.height,d,-1,this._getRGBABufferInternalSizedFormat(T.type,T.format,T._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");T._autoMSAAManagement=!0;let N=T._hardwareTexture;N||(N=T._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return T}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers&&(this.webGLVersion>1||t)}createTexture(e,t,i,r,s=3,a=null,o=null,l=null,c=null,f=null,d=null,h,u,m,_){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,g,v,T,S,E)=>{let A=this._gl,R=v.width===p&&v.height===g;S._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(S.format,S._useSRGBBuffer);if(R)return A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let y=this._caps.maxTextureSize;if(v.width>y||v.height>y||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=g,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,g),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),S.width=p,S.height=g),!1;{let C=new Vi(this,2);this._bindTextureDirectly(A.TEXTURE_2D,C,!0),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,S,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(A.TEXTURE_2D,S,!0),E()})}return!0},l,c,f,d,h,u,_)}_getTexImageParametersForCreateTexture(e,t){let i,r;return this.webGLVersion===1?(i=this._getInternalFormat(e,t),r=i):(i=this._getInternalFormat(e,!1),r=this._getRGBABufferInternalSizedFormat(0,e,t)),{internalFormat:r,format:i,type:this._gl.UNSIGNED_BYTE}}_rescaleTexture(e,t,i,r,s){}_unpackFlipY(e){this._unpackFlipYCached!==e&&(this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,e?1:0),this.enableUnpackFlipYCached&&(this._unpackFlipYCached=e))}_getUnpackAlignement(){return this._gl.getParameter(this._gl.UNPACK_ALIGNMENT)}_getTextureTarget(e){return e.isCube?this._gl.TEXTURE_CUBE_MAP:e.is3D?this._gl.TEXTURE_3D:e.is2DArray||e.isMultiview?this._gl.TEXTURE_2D_ARRAY:this._gl.TEXTURE_2D}updateTextureSamplingMode(e,t,i=!1){let r=this._getTextureTarget(t),s=this._getSamplingParameters(e,t.useMipMaps||i);this._setTextureParameterInteger(r,this._gl.TEXTURE_MAG_FILTER,s.mag,t),this._setTextureParameterInteger(r,this._gl.TEXTURE_MIN_FILTER,s.min),i&&s.hasMipMaps&&(t.generateMipMaps=!0,this._gl.generateMipmap(r)),this._bindTextureDirectly(r,null),t.samplingMode=e}updateTextureDimensions(e,t,i,r=1){}updateTextureWrappingMode(e,t,i=null,r=null){let s=this._getTextureTarget(e);t!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t),e),e._cachedWrapU=t),i!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(i),e),e._cachedWrapV=i),(e.is2DArray||e.is3D)&&r!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(r),e),e._cachedWrapR=r),this._bindTextureDirectly(s,null)}_uploadCompressedDataToTextureDirectly(e,t,i,r,s,a=0,o=0){let l=this._gl,c=l.TEXTURE_2D;if(e.isCube&&(c=l.TEXTURE_CUBE_MAP_POSITIVE_X+a),e._useSRGBBuffer)switch(t){case 37492:case 36196:this._caps.etc2?t=l.COMPRESSED_SRGB8_ETC2:e._useSRGBBuffer=!1;break;case 37496:this._caps.etc2?t=l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:e._useSRGBBuffer=!1;break;case 36492:t=l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;break;case 37808:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;break;case 37809:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;break;case 37810:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;break;case 37811:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;break;case 37812:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;break;case 37813:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;break;case 37814:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;break;case 37815:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;break;case 37816:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;break;case 37817:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;break;case 37818:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;break;case 37819:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;break;case 37820:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;break;case 37821:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR;break;case 33776:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33777:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33779:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:e._useSRGBBuffer=!1;break;default:e._useSRGBBuffer=!1;break}if(e.generateMipMaps){let f=e._hardwareTexture;f.memoryAllocated||(l.texStorage2D(e.isCube?l.TEXTURE_CUBE_MAP:l.TEXTURE_2D,Math.floor(Math.log2(Math.max(i,r)))+1,t,e.width,e.height),f.memoryAllocated=!0),this._gl.compressedTexSubImage2D(c,o,0,0,i,r,t,s)}else this._gl.compressedTexImage2D(c,o,t,i,r,0,s)}_uploadDataToTextureDirectly(e,t,i=0,r=0,s,a=!1){let o=this._gl,l=this._getWebGLTextureType(e.type),c=this._getInternalFormat(e.format),f=s===void 0?this._getRGBABufferInternalSizedFormat(e.type,e.format,e._useSRGBBuffer):this._getInternalFormat(s,e._useSRGBBuffer);this._unpackFlipY(e.invertY);let d=o.TEXTURE_2D;e.isCube&&(d=o.TEXTURE_CUBE_MAP_POSITIVE_X+i);let h=Math.round(Math.log(e.width)*Math.LOG2E),u=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(h-r,0)),_=a?e.height:Math.pow(2,Math.max(u-r,0));o.texImage2D(d,r,f,m,_,0,c,l,t)}updateTextureData(e,t,i,r,s,a,o=0,l=0,c=!1){let f=this._gl,d=this._getWebGLTextureType(e.type),h=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let u=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,u=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(u,e,!0),f.texSubImage2D(m,l,i,r,s,a,h,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(u,null)}_uploadArrayBufferViewToTexture(e,t,i=0,r=0){let s=this._gl,a=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(a,e,!0),this._uploadDataToTextureDirectly(e,t,i,r),this._bindTextureDirectly(a,null,!0)}_prepareWebGLTextureContinuation(e,t,i,r,s){let a=this._gl;if(!a)return;let o=this._getSamplingParameters(s,!i);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,o.mag),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,o.min),!i&&!r&&a.generateMipmap(a.TEXTURE_2D),this._bindTextureDirectly(a.TEXTURE_2D,null),t&&t.removePendingData(e),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}_prepareWebGLTexture(e,t,i,r,s,a,o,l,c,f){let d=this.getCaps().maxTextureSize,h=Math.min(d,this.needPOTTextures?Cn(r.width,d):r.width),u=Math.min(d,this.needPOTTextures?Cn(r.height,d):r.height),m=this._gl;if(m){if(!e._hardwareTexture){i&&i.removePendingData(e);return}this._bindTextureDirectly(m.TEXTURE_2D,e,!0),this._unpackFlipY(s===void 0?!0:!!s),e.baseWidth=r.width,e.baseHeight=r.height,e.width=h,e.height=u,e.isReady=!0,e.type=e.type!==-1?e.type:0,e.format=e.format!==-1?e.format:f!=null?f:t===".jpg"&&!e._useSRGBBuffer?4:5,!l(h,u,r,t,e,()=>{this._prepareWebGLTextureContinuation(e,i,a,o,c)})&&this._prepareWebGLTextureContinuation(e,i,a,o,c)}}_getInternalFormatFromDepthTextureFormat(e,t,i){let r=this._gl;if(!t)return r.STENCIL_INDEX8;let a=i?r.DEPTH_STENCIL:r.DEPTH_COMPONENT;return this.webGLVersion>1?e===15?a=r.DEPTH_COMPONENT16:e===16?a=r.DEPTH_COMPONENT24:e===17||e===13?a=i?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24:e===14?a=r.DEPTH_COMPONENT32F:e===18&&(a=i?r.DEPTH32F_STENCIL8:r.DEPTH_COMPONENT32F):a=r.DEPTH_COMPONENT16,a}_getWebGLTextureTypeFromDepthTextureFormat(e){let t=this._gl,i=t.UNSIGNED_INT;return e===15?i=t.UNSIGNED_SHORT:e===17||e===13?i=t.UNSIGNED_INT_24_8:e===14?i=t.FLOAT:e===18?i=t.FLOAT_32_UNSIGNED_INT_24_8_REV:e===19&&(i=t.UNSIGNED_BYTE),i}_setupFramebufferDepthAttachments(e,t,i,r,s=1,a,o=!1){let l=this._gl;a=a!=null?a:e?13:14;let c=this._getInternalFormatFromDepthTextureFormat(a,t,e);return e&&t?this._createRenderBuffer(i,r,s,l.DEPTH_STENCIL,c,o?-1:l.DEPTH_STENCIL_ATTACHMENT):t?this._createRenderBuffer(i,r,s,c,c,o?-1:l.DEPTH_ATTACHMENT):e?this._createRenderBuffer(i,r,s,c,c,o?-1:l.STENCIL_ATTACHMENT):null}_createRenderBuffer(e,t,i,r,s,a,o=!0){let c=this._gl.createRenderbuffer();return this._updateRenderBuffer(c,e,t,i,r,s,a,o)}_updateRenderBuffer(e,t,i,r,s,a,o,l=!0){let c=this._gl;return c.bindRenderbuffer(c.RENDERBUFFER,e),r>1&&c.renderbufferStorageMultisample?c.renderbufferStorageMultisample(c.RENDERBUFFER,r,a,t,i):c.renderbufferStorage(c.RENDERBUFFER,s,t,i),o!==-1&&c.framebufferRenderbuffer(c.FRAMEBUFFER,o,c.RENDERBUFFER,e),l&&c.bindRenderbuffer(c.RENDERBUFFER,null),e}_releaseTexture(e){this._deleteTexture(e._hardwareTexture),this.unbindAllTextures();let t=this._internalTexturesCache.indexOf(e);t!==-1&&this._internalTexturesCache.splice(t,1),e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureLow&&e._lodTextureLow.dispose(),e._irradianceTexture&&e._irradianceTexture.dispose()}_deleteTexture(e){e==null||e.release()}_setProgram(e){this._currentProgram!==e&&(OU(e,this._gl),this._currentProgram=e)}bindSamplers(e){let t=e.getPipelineContext();this._setProgram(t.program);let i=e.getSamplers();for(let r=0;r-1;if(i&&a&&(this._activeChannel=t._associatedChannel),this._boundTexturesCache[this._activeChannel]!==t||r){if(this._activateCurrentTexture(),t&&t.isMultiview)throw ee.Error(["_bindTextureDirectly called with a multiview texture!",e,t]),"_bindTextureDirectly called with a multiview texture!";this._gl.bindTexture(e,(c=(l=t==null?void 0:t._hardwareTexture)==null?void 0:l.underlyingResource)!=null?c:null),this._boundTexturesCache[this._activeChannel]=t,t&&(t._associatedChannel=this._activeChannel)}else i&&(s=!0,this._activateCurrentTexture());return a&&!i&&this._bindSamplerUniformToChannel(t._associatedChannel,this._activeChannel),s}_bindTexture(e,t,i){if(e===void 0)return;t&&(t._associatedChannel=e),this._activeChannel=e;let r=t?this._getTextureTarget(t):this._gl.TEXTURE_2D;this._bindTextureDirectly(r,t)}unbindAllTextures(){for(let e=0;e1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))}setTexture(e,t,i,r){e!==void 0&&(t&&(this._boundUniforms[e]=t),this._setTexture(e,i))}_bindSamplerUniformToChannel(e,t){let i=this._boundUniforms[e];!i||i._currentState===t||(this._gl.uniform1i(i,t),i._currentState=t)}_getTextureWrapMode(e){switch(e){case 1:return this._gl.REPEAT;case 0:return this._gl.CLAMP_TO_EDGE;case 2:return this._gl.MIRRORED_REPEAT}return this._gl.REPEAT}_setTexture(e,t,i=!1,r=!1,s=""){if(!t)return this._boundTexturesCache[e]!=null&&(this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))),!1;if(t.video){this._activeChannel=e;let c=t.getInternalTexture();c&&(c._associatedChannel=e),t.update()}else if(t.delayLoadState===4)return t.delayLoad(),!1;let a;r?a=t.depthStencilTexture:t.isReady()?a=t.getInternalTexture():t.isCube?a=this.emptyCubeTexture:t.is3D?a=this.emptyTexture3D:t.is2DArray?a=this.emptyTexture2DArray:a=this.emptyTexture,!i&&a&&(a._associatedChannel=e);let o=!0;this._boundTexturesCache[e]===a&&(i||this._bindSamplerUniformToChannel(a._associatedChannel,e),o=!1),this._activeChannel=e;let l=this._getTextureTarget(a);if(o&&this._bindTextureDirectly(l,a,i),a&&!a.isMultiview){if(a.isCube&&a._cachedCoordinatesMode!==t.coordinatesMode){a._cachedCoordinatesMode=t.coordinatesMode;let c=t.coordinatesMode!==3&&t.coordinatesMode!==5?1:0;t.wrapU=c,t.wrapV=c}a._cachedWrapU!==t.wrapU&&(a._cachedWrapU=t.wrapU,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t.wrapU),a)),a._cachedWrapV!==t.wrapV&&(a._cachedWrapV=t.wrapV,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(t.wrapV),a)),a.is3D&&a._cachedWrapR!==t.wrapR&&(a._cachedWrapR=t.wrapR,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(t.wrapR),a)),this._setAnisotropicLevel(l,a,t.anisotropicFilteringLevel)}return!0}setTextureArray(e,t,i,r){if(!(e===void 0||!t)){(!this._textureUnits||this._textureUnits.length!==i.length)&&(this._textureUnits=new Int32Array(i.length));for(let s=0;s=this._caps.maxVertexAttribs||!this._vertexAttribArraysEnabled[e]||this.disableAttributeByIndex(e)}releaseEffects(){this._compiledEffects={},this.onReleaseEffectsObservable.notifyObservers(this)}dispose(){var e;Er()&&this._renderingCanvas&&(this._renderingCanvas.removeEventListener("webglcontextlost",this._onContextLost),this._onContextRestored&&this._renderingCanvas.removeEventListener("webglcontextrestored",this._onContextRestored)),super.dispose(),this._dummyFramebuffer&&this._gl.deleteFramebuffer(this._dummyFramebuffer),this.unbindAllAttributes(),this._boundUniforms={},this._workingCanvas=null,this._workingContext=null,this._currentBufferPointers.length=0,this._currentProgram=null,this._creationOptions.loseContextOnDispose&&((e=this._gl.getExtension("WEBGL_lose_context"))==null||e.loseContext()),BA(this._gl)}attachContextLostEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextlost",e,!1)}attachContextRestoredEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextrestored",e,!1)}getError(){return this._gl.getError()}_canRenderToFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(1)}_canRenderToHalfFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(2)}_canRenderToFramebuffer(e){let t=this._gl;for(;t.getError()!==t.NO_ERROR;);let i=!0,r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,this._getRGBABufferInternalSizedFormat(e),1,1,0,t.RGBA,this._getWebGLTextureType(e),null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);let a=t.checkFramebufferStatus(t.FRAMEBUFFER);if(i=i&&a===t.FRAMEBUFFER_COMPLETE,i=i&&t.getError()===t.NO_ERROR,i&&(t.clear(t.COLOR_BUFFER_BIT),i=i&&t.getError()===t.NO_ERROR),i){t.bindFramebuffer(t.FRAMEBUFFER,null);let o=t.RGBA,l=t.UNSIGNED_BYTE,c=new Uint8Array(4);t.readPixels(0,0,1,1,o,l,c),i=i&&t.getError()===t.NO_ERROR}for(t.deleteTexture(r),t.deleteFramebuffer(s),t.bindFramebuffer(t.FRAMEBUFFER,null);!i&&t.getError()!==t.NO_ERROR;);return i}_getWebGLTextureType(e){if(this._webGLVersion===1){switch(e){case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT_OES;case 0:return this._gl.UNSIGNED_BYTE;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5}return this._gl.UNSIGNED_BYTE}switch(e){case 3:return this._gl.BYTE;case 0:return this._gl.UNSIGNED_BYTE;case 4:return this._gl.SHORT;case 5:return this._gl.UNSIGNED_SHORT;case 6:return this._gl.INT;case 7:return this._gl.UNSIGNED_INT;case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5;case 11:return this._gl.UNSIGNED_INT_2_10_10_10_REV;case 12:return this._gl.UNSIGNED_INT_24_8;case 13:return this._gl.UNSIGNED_INT_10F_11F_11F_REV;case 14:return this._gl.UNSIGNED_INT_5_9_9_9_REV;case 15:return this._gl.FLOAT_32_UNSIGNED_INT_24_8_REV}return this._gl.UNSIGNED_BYTE}_getInternalFormat(e,t=!1){let i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;switch(e){case 0:i=this._gl.ALPHA;break;case 1:i=this._gl.LUMINANCE;break;case 2:i=this._gl.LUMINANCE_ALPHA;break;case 6:case 33322:case 36760:i=this._gl.RED;break;case 7:case 33324:case 36761:i=this._gl.RG;break;case 4:case 32852:case 36762:i=t?this._glSRGBExtensionValues.SRGB:this._gl.RGB;break;case 5:case 32859:case 36763:i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;break}if(this._webGLVersion>1)switch(e){case 8:i=this._gl.RED_INTEGER;break;case 9:i=this._gl.RG_INTEGER;break;case 10:i=this._gl.RGB_INTEGER;break;case 11:i=this._gl.RGBA_INTEGER;break}return i}_getRGBABufferInternalSizedFormat(e,t,i=!1){if(this._webGLVersion===1){if(t!==void 0)switch(t){case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;case 4:return i?this._glSRGBExtensionValues.SRGB:this._gl.RGB}return this._gl.RGBA}switch(e){case 3:switch(t){case 6:return this._gl.R8_SNORM;case 7:return this._gl.RG8_SNORM;case 4:return this._gl.RGB8_SNORM;case 8:return this._gl.R8I;case 9:return this._gl.RG8I;case 10:return this._gl.RGB8I;case 11:return this._gl.RGBA8I;default:return this._gl.RGBA8_SNORM}case 0:switch(t){case 6:return this._gl.R8;case 7:return this._gl.RG8;case 4:return i?this._glSRGBExtensionValues.SRGB8:this._gl.RGB8;case 5:return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8;case 8:return this._gl.R8UI;case 9:return this._gl.RG8UI;case 10:return this._gl.RGB8UI;case 11:return this._gl.RGBA8UI;case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;default:return this._gl.RGBA8}case 4:switch(t){case 8:return this._gl.R16I;case 36760:return this._gl.R16_SNORM_EXT;case 36761:return this._gl.RG16_SNORM_EXT;case 36762:return this._gl.RGB16_SNORM_EXT;case 36763:return this._gl.RGBA16_SNORM_EXT;case 9:return this._gl.RG16I;case 10:return this._gl.RGB16I;case 11:return this._gl.RGBA16I;default:return this._gl.RGBA16I}case 5:switch(t){case 8:return this._gl.R16UI;case 33322:return this._gl.R16_EXT;case 33324:return this._gl.RG16_EXT;case 32852:return this._gl.RGB16_EXT;case 32859:return this._gl.RGBA16_EXT;case 9:return this._gl.RG16UI;case 10:return this._gl.RGB16UI;case 11:return this._gl.RGBA16UI;default:return this._gl.RGBA16UI}case 6:switch(t){case 8:return this._gl.R32I;case 9:return this._gl.RG32I;case 10:return this._gl.RGB32I;case 11:return this._gl.RGBA32I;default:return this._gl.RGBA32I}case 7:switch(t){case 8:return this._gl.R32UI;case 9:return this._gl.RG32UI;case 10:return this._gl.RGB32UI;case 11:return this._gl.RGBA32UI;default:return this._gl.RGBA32UI}case 1:switch(t){case 6:return this._gl.R32F;case 7:return this._gl.RG32F;case 4:return this._gl.RGB32F;case 5:return this._gl.RGBA32F;default:return this._gl.RGBA32F}case 2:switch(t){case 6:return this._gl.R16F;case 7:return this._gl.RG16F;case 4:return this._gl.RGB16F;case 5:return this._gl.RGBA16F;default:return this._gl.RGBA16F}case 10:return this._gl.RGB565;case 13:return this._gl.R11F_G11F_B10F;case 14:return this._gl.RGB9_E5;case 8:return this._gl.RGBA4;case 9:return this._gl.RGB5_A1;case 11:switch(t){case 5:return this._gl.RGB10_A2;case 11:return this._gl.RGB10_A2UI;default:return this._gl.RGB10_A2}}return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8}readPixels(e,t,i,r,s=!0,a=!0,o=null){let l=s?4:3,c=s?this._gl.RGBA:this._gl.RGB,f=i*r*l;if(!o)o=new Uint8Array(f);else if(o.length{tc();nx=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new XC(e)}sampleFrame(e=br.Now){if(this._enabled){if(this._lastFrameTimeMs!=null){let t=e-this._lastFrameTimeMs;this._rollingFrameTime.add(t)}this._lastFrameTimeMs=e}}get averageFrameTime(){return this._rollingFrameTime.average}get averageFrameTimeVariance(){return this._rollingFrameTime.variance}get instantaneousFrameTime(){return this._rollingFrameTime.history(0)}get averageFPS(){return 1e3/this._rollingFrameTime.average}get instantaneousFPS(){let e=this._rollingFrameTime.history(0);return e===0?0:1e3/e}get isSaturated(){return this._rollingFrameTime.isSaturated()}enable(){this._enabled=!0}disable(){this._enabled=!1,this._lastFrameTimeMs=null}get isEnabled(){return this._enabled}reset(){this._lastFrameTimeMs=null,this._rollingFrameTime.reset()}},XC=class{constructor(e){this._samples=new Array(e),this.reset()}add(e){let t;if(this.isSaturated()){let i=this._samples[this._pos];t=i-this.average,this.average-=t/(this._sampleCount-1),this._m2-=t*(i-this.average)}else this._sampleCount++;t=e-this.average,this.average+=t/this._sampleCount,this._m2+=t*(e-this.average),this.variance=this._m2/(this._sampleCount-1),this._samples[this._pos]=e,this._pos++,this._pos%=this._samples.length}history(e){if(e>=this._sampleCount||e>=this._samples.length)return 0;let t=this._wrapPosition(this._pos-1);return this._samples[this._wrapPosition(t-e)]}isSaturated(){return this._sampleCount>=this._samples.length}reset(){this.average=0,this.variance=0,this._sampleCount=0,this._pos=0,this._m2=0}_wrapPosition(e){let t=this._samples.length;return(e%t+t)%t}}});var aV=I(()=>{vs();bt.prototype.setAlphaMode=function(n,e=!1,t=0){if(this._alphaMode[t]===n){if(!e){let r=n===0;this.depthCullingState.depthMask!==r&&(this.depthCullingState.depthMask=r)}return}let i=n===0;this._alphaState.setAlphaBlend(!i,t),this._alphaState.setAlphaMode(n,t),e||(this.depthCullingState.depthMask=i),this._alphaMode[t]=n}});function oV(n,e,t,i){let r,s=1;i===1?r=new Float32Array(e*t*4):i===2?(r=new Uint16Array(e*t*4),s=15360):i===7?r=new Uint32Array(e*t*4):r=new Uint8Array(e*t*4);for(let a=0;a{Ws();Lt();vs();Eo();bt.prototype.updateRawTexture=function(n,e,t,i,r=null,s=0,a=!1){if(!n)return;let o=this._getRGBABufferInternalSizedFormat(s,t,a),l=this._getInternalFormat(t),c=this._getWebGLTextureType(s);this._bindTextureDirectly(this._gl.TEXTURE_2D,n,!0),this._unpackFlipY(i===void 0?!0:!!i),this._doNotHandleContextLost||(n._bufferView=e,n.format=t,n.type=s,n.invertY=i,n._compression=r),n.width%4!==0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),r&&e?this._gl.compressedTexImage2D(this._gl.TEXTURE_2D,0,this.getCaps().s3tc[r],n.width,n.height,0,e):this._gl.texImage2D(this._gl.TEXTURE_2D,0,o,n.width,n.height,0,l,c,e),n.generateMipMaps&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),n.isReady=!0};bt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Vi(this,3);d.baseWidth=e,d.baseHeight=t,d.width=e,d.height=t,d.format=i,d.generateMipMaps=r,d.samplingMode=a,d.invertY=s,d._compression=o,d.type=l,d._useSRGBBuffer=this._getUseSRGBBuffer(f,!r),this._doNotHandleContextLost||(d._bufferView=n),this.updateRawTexture(d,n,i,s,o,l,d._useSRGBBuffer),this._bindTextureDirectly(this._gl.TEXTURE_2D,d,!0);let h=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,h.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,h.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};bt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Vi(this,8);c.isCube=!0,c.format=t,c.type=i,this._doNotHandleContextLost||(c._bufferViewArray=n);let f=this._getWebGLTextureType(i),d=this._getInternalFormat(t);d===l.RGB&&(d=l.RGBA),f===l.FLOAT&&!this._caps.textureFloatLinearFiltering?(r=!1,a=1,ee.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===this._gl.HALF_FLOAT_OES&&!this._caps.textureHalfFloatLinearFiltering?(r=!1,a=1,ee.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===l.FLOAT&&!this._caps.textureFloatRender?(r=!1,ee.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):f===l.HALF_FLOAT&&!this._caps.colorBufferFloat&&(r=!1,ee.Warn("Render to half float textures is not supported. Mipmap generation forced to false."));let h=e,u=h;if(c.width=h,c.height=u,c.invertY=s,c._compression=o,!this.needPOTTextures||dh(c.width)&&dh(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),g=0;this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,c,!0);for(let v=0;v<6;v++)o?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,p,c.width,c.height,0,d,f,null);this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)}this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,c,!0),n&&r&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);let _=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,_.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,_.min),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,null),c.generateMipMaps=r,c.samplingMode=a,c.isReady=!0,c};bt.prototype.updateRawCubeTexture=function(n,e,t,i,r,s=null,a=0){n._bufferViewArray=e,n.format=t,n.type=i,n.invertY=r,n._compression=s;let o=this._gl,l=this._getWebGLTextureType(i),c=this._getInternalFormat(t),f=this._getRGBABufferInternalSizedFormat(i),d=!1;c===o.RGB&&(c=o.RGBA,d=!0),this._bindTextureDirectly(o.TEXTURE_CUBE_MAP,n,!0),this._unpackFlipY(r===void 0?!0:!!r),n.width%4!==0&&o.pixelStorei(o.UNPACK_ALIGNMENT,1);for(let u=0;u<6;u++){let m=e[u];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=oV(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||dh(n.width)&&dh(n.height))&&n.generateMipMaps&&a===0&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),n.isReady=!0};bt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let h=this._gl,u=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(u),u.url=n,u.isReady=!1,this._internalTexturesCache.push(u);let m=(p,g)=>{e==null||e.removePendingData(u),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",g)},_=async p=>{if(!u._hardwareTexture)return;let g=a(p);if(!g)return;let v=g instanceof Promise?await g:g,T=u.width;if(o){let S=this._getWebGLTextureType(r),E=this._getInternalFormat(i),A=this._getRGBABufferInternalSizedFormat(r),R=!1;E===h.RGB&&(E=h.RGBA,R=!0),this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,u,!0),this._unpackFlipY(!1);let M=o(v);for(let y=0;y>y;for(let D=0;D<6;D++){let w=M[y][D];R&&(w=oV(w,C,C,r)),h.texImage2D(D,y,A,C,C,0,E,S,w)}}this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(u,v,i,r,d);u.isReady=!0,e==null||e.removePendingData(u),u.onLoadedObservable.notifyObservers(u),u.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{_(p).catch(g=>{m(void 0,g)})},void 0,e==null?void 0:e.offlineProvider,!0,m),u};bt.prototype.createRawTexture2DArray=lV(!1);bt.prototype.createRawTexture3D=lV(!0);bt.prototype.updateRawTexture2DArray=cV(!1);bt.prototype.updateRawTexture3D=cV(!0)});var dV=I(()=>{vs();bf();bt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var h,u,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let _=f.createFramebuffer();if(!_)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=_}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(h=n._hardwareTexture)==null?void 0:h.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r):f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,(m=n._hardwareTexture)==null?void 0:m.underlyingResource,r);let d=n.type!==void 0?this._getWebGLTextureType(n.type):f.UNSIGNED_BYTE;return o?s||(s=yU(n.type,4*e*t)):d===f.UNSIGNED_BYTE?(s||(s=new Uint8Array(4*e*t)),d=f.UNSIGNED_BYTE):(s||(s=new Float32Array(4*e*t)),d=f.FLOAT),a&&this.flushFramebuffer(),f.readPixels(l,c,e,t,f.RGBA,d,s),f.bindFramebuffer(f.FRAMEBUFFER,this._currentFramebuffer),s};bt.prototype._readTexturePixels=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){return Promise.resolve(this._readTexturePixelsSync(n,e,t,i,r,s,a,o,l,c))}});var hV=I(()=>{vs();bt.prototype.updateDynamicIndexBuffer=function(n,e,t=0){this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER]=null,this.bindIndexBuffer(n);let i;n.is32Bits?i=e instanceof Uint32Array?e:new Uint32Array(e):i=e instanceof Uint16Array?e:new Uint16Array(e),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,i,this._gl.DYNAMIC_DRAW),this._resetIndexBufferBinding()};bt.prototype.updateDynamicVertexBuffer=function(n,e,t,i){this.bindArrayBuffer(n),t===void 0&&(t=0);let r=e.byteLength||e.length;i===void 0||i>=r&&t===0?e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e)):this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e):e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e).subarray(0,i/4)):(ArrayBuffer.isView(e)?e=new Uint8Array(e.buffer,e.byteOffset,i):e=new Uint8Array(e,0,i),this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e)),this._resetVertexBufferBinding()}});var uV=I(()=>{vs();Ws();Lt();Eo();bt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Vi(this,12);if(t.isCube=!0,this.webGLVersion===1)return ee.Error("Depth cube texture is not supported by WebGL 1."),t;let i={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e},r=this._gl;this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,t,!0),this._setupDepthStencilTexture(t,n,i.bilinearFiltering,i.comparisonFunction);for(let s=0;s<6;s++)i.generateStencil?r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH24_STENCIL8,n,n,0,r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8,null):r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH_COMPONENT24,n,n,0,r.DEPTH_COMPONENT,r.UNSIGNED_INT,null);return this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._internalTexturesCache.push(t),t};bt.prototype._setCubeMapTextureParams=function(n,e,t){let i=this._gl;i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MIN_FILTER,e?i.LINEAR_MIPMAP_LINEAR:i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),n.samplingMode=e?3:2,e&&this.getCaps().textureMaxLevel&&t!==void 0&&t>0&&(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAX_LEVEL,t),n._maxLodLevel=t),this._bindTextureDirectly(i.TEXTURE_CUBE_MAP,null)};bt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h,u=!1,m=null){let _=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),(p,g)=>{let v=this.needPOTTextures?Cn(g[0].width,this._caps.maxCubemapTextureSize):g[0].width,T=v,S=[_.TEXTURE_CUBE_MAP_POSITIVE_X,_.TEXTURE_CUBE_MAP_POSITIVE_Y,_.TEXTURE_CUBE_MAP_POSITIVE_Z,_.TEXTURE_CUBE_MAP_NEGATIVE_X,_.TEXTURE_CUBE_MAP_NEGATIVE_Y,_.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let E=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:_.RGBA,A=a?this._getInternalFormat(a):_.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(A=E);for(let R=0;R{Dg();sx=class{get depthStencilTexture(){return this._depthStencilTexture}setDepthStencilTexture(e,t=!0){t&&this._depthStencilTexture&&this._depthStencilTexture.dispose(),this._depthStencilTexture=e,this._generateDepthBuffer=this._generateStencilBuffer=this._depthStencilTextureWithStencil=!1,e&&(this._generateDepthBuffer=!0,this._generateStencilBuffer=this._depthStencilTextureWithStencil=ic(e.format))}get depthStencilTextureWithStencil(){return this._depthStencilTextureWithStencil}get isCube(){return this._isCube}get isMulti(){return this._isMulti}get is2DArray(){return this.layers>0}get is3D(){return this.depth>0}get size(){return this.width}get width(){var e;return(e=this._size.width)!=null?e:this._size}get height(){var e;return(e=this._size.height)!=null?e:this._size}get layers(){return this._size.layers||0}get depth(){return this._size.depth||0}get texture(){var e,t;return(t=(e=this._textures)==null?void 0:e[0])!=null?t:null}get textures(){return this._textures}get faceIndices(){return this._faceIndices}get layerIndices(){return this._layerIndices}getBaseArrayLayer(e){var s,a,o,l;if(!this._textures)return-1;let t=this._textures[e],i=(a=(s=this._layerIndices)==null?void 0:s[e])!=null?a:0,r=(l=(o=this._faceIndices)==null?void 0:o[e])!=null?l:0;return t.isCube?i*6+r:t.is3D?0:i}get samples(){return this._samples}setSamples(e,t=!0,i=!1){if(this.samples===e&&!i)return e;let r=this._isMulti?this._engine.updateMultipleRenderTargetTextureSampleCount(this,e,t):this._engine.updateRenderTargetTextureSampleCount(this,e);return this._samples=e,r}resolveMSAATextures(){this.isMulti?this._engine.resolveMultiFramebuffer(this):this._engine.resolveFramebuffer(this)}generateMipMaps(){this._engine._currentRenderTarget===this&&(this.isMulti?this._engine.unBindMultiColorAttachmentFramebuffer(this,!0):this._engine.unBindFramebuffer(this,!0)),this.isMulti?this._engine.generateMipMapsMultiFramebuffer(this):this._engine.generateMipMapsFramebuffer(this)}constructor(e,t,i,r,s){this._textures=null,this._faceIndices=null,this._layerIndices=null,this._samples=1,this._attachments=null,this._generateStencilBuffer=!1,this._generateDepthBuffer=!1,this._depthStencilTextureWithStencil=!1,this.disableAutomaticMSAAResolve=!1,this.resolveMSAAColors=!0,this.resolveMSAADepth=!1,this.resolveMSAAStencil=!1,this.depthReadOnly=!1,this.stencilReadOnly=!1,this._isMulti=e,this._isCube=t,this._size=i,this._engine=r,this._depthStencilTexture=null,this.label=s}setTextures(e){Array.isArray(e)?this._textures=e:e?this._textures=[e]:this._textures=null}setTexture(e,t=0,i=!0){this._textures||(this._textures=[]),this._textures[t]!==e&&(this._textures[t]&&i&&this._textures[t].dispose(),this._textures[t]=e)}setLayerAndFaceIndices(e,t){this._layerIndices=e,this._faceIndices=t}setLayerAndFaceIndex(e=0,t,i){this._layerIndices||(this._layerIndices=[]),this._faceIndices||(this._faceIndices=[]),t!==void 0&&t>=0&&(this._layerIndices[e]=t),i!==void 0&&i>=0&&(this._faceIndices[e]=i)}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;return(o=this._depthStencilTexture)==null||o.dispose(),this._depthStencilTextureWithStencil=i,this._depthStencilTextureLabel=a,this._depthStencilTexture=this._engine.createDepthStencilTexture(this._size,{bilinearFiltering:t,comparisonFunction:e,generateStencil:i,isCube:this._isCube,samples:r,depthTextureFormat:s,label:a},this),this._depthStencilTexture}_shareDepth(e){this.shareDepth(e)}shareDepth(e){this._depthStencilTexture&&(e._depthStencilTexture&&e._depthStencilTexture.dispose(),e._depthStencilTexture=this._depthStencilTexture,e._depthStencilTextureWithStencil=this._depthStencilTextureWithStencil,this._depthStencilTexture.incrementReferences())}_swapAndDie(e){this.texture&&this.texture._swapAndDie(e),this._textures=null,this.dispose(!0)}_cloneRenderTargetWrapper(){var t,i,r,s,a,o,l,c;let e=null;if(this._isMulti){let f=this.textures;if(f&&f.length>0){let d=!1,h=f.length,u=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,u=f[f.length-1].format,h--);let _=[],p=[],g=[],v=[],T=[],S=[],E=[],A={};for(let y=0;y1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{mV();Dg();ax=class extends sx{setDepthStencilTexture(e,t=!0){if(super.setDepthStencilTexture(e,t),!e)return;let i=this._engine,r=this._context,s=e._hardwareTexture;if(s&&e._autoMSAAManagement&&this._MSAAFramebuffer){let a=i._currentFramebuffer;i._bindUnboundFramebuffer(this._MSAAFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,ic(e.format)?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,r.RENDERBUFFER,s.getMSAARenderBuffer()),i._bindUnboundFramebuffer(a)}}constructor(e,t,i,r,s){super(e,t,i,r),this._framebuffer=null,this._depthStencilBuffer=null,this._MSAAFramebuffer=null,this._colorTextureArray=null,this._depthStencilTextureArray=null,this._disposeOnlyFramebuffers=!1,this._currentLOD=0,this._context=s}_cloneRenderTargetWrapper(){let e;return this._colorTextureArray&&this._depthStencilTextureArray?(e=this._engine.createMultiviewRenderTargetTexture(this.width,this.height),e.texture.isReady=!0):e=super._cloneRenderTargetWrapper(),e}_swapRenderTargetWrapper(e){super._swapRenderTargetWrapper(e),e._framebuffer=this._framebuffer,e._depthStencilBuffer=this._depthStencilBuffer,e._MSAAFramebuffer=this._MSAAFramebuffer,e._colorTextureArray=this._colorTextureArray,e._depthStencilTextureArray=this._depthStencilTextureArray,this._framebuffer=this._depthStencilBuffer=this._MSAAFramebuffer=this._colorTextureArray=this._depthStencilTextureArray=null}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){if(this._depthStencilBuffer){let o=this._engine,l=o._currentFramebuffer,c=this._context;o._bindUnboundFramebuffer(this._framebuffer),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.STENCIL_ATTACHMENT,c.RENDERBUFFER,null),o._bindUnboundFramebuffer(l),c.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null}return super.createDepthStencilTexture(e,t,i,r,s,a)}shareDepth(e){super.shareDepth(e);let t=this._context,i=this._depthStencilBuffer,r=e._MSAAFramebuffer||e._framebuffer,s=this._engine;e._depthStencilBuffer&&e._depthStencilBuffer!==i&&t.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=i;let a=e._generateStencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;s._bindUnboundFramebuffer(r),t.framebufferRenderbuffer(t.FRAMEBUFFER,a,t.RENDERBUFFER,i),s._bindUnboundFramebuffer(null)}_bindTextureRenderTarget(e,t=0,i,r=0){var f,d,h,u;let s=e._hardwareTexture;if(!s)return;let a=this._framebuffer,o=this._engine,l=o._currentFramebuffer;o._bindUnboundFramebuffer(a);let c;if(o.webGLVersion>1){let m=this._context;c=m["COLOR_ATTACHMENT"+t],e.is2DArray||e.is3D?(i=(d=i!=null?i:(f=this.layerIndices)==null?void 0:f[t])!=null?d:0,m.framebufferTextureLayer(m.FRAMEBUFFER,c,s.underlyingResource,r,i)):e.isCube?(i=(u=i!=null?i:(h=this.faceIndices)==null?void 0:h[t])!=null?u:0,m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_CUBE_MAP_POSITIVE_X+i,s.underlyingResource,r)):m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_2D,s.underlyingResource,r)}else{let m=this._context;c=m["COLOR_ATTACHMENT"+t+"_WEBGL"];let _=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,_,s.underlyingResource,r)}if(e._autoMSAAManagement&&this._MSAAFramebuffer){let m=this._context;o._bindUnboundFramebuffer(this._MSAAFramebuffer),m.framebufferRenderbuffer(m.FRAMEBUFFER,c,m.RENDERBUFFER,s.getMSAARenderBuffer())}o._bindUnboundFramebuffer(l)}setTexture(e,t=0,i=!0){super.setTexture(e,t,i),this._bindTextureRenderTarget(e,t)}setLayerAndFaceIndices(e,t){var r,s;if(super.setLayerAndFaceIndices(e,t),!this.textures||!this.layerIndices||!this.faceIndices)return;let i=(s=(r=this._attachments)==null?void 0:r.length)!=null?s:this.textures.length;for(let a=0;a{zr();Re.prototype.createDepthStencilTexture=function(n,e,t){if(e.isCube){let i=n.width||n;return this._createDepthStencilCubeTexture(i,e)}else return this._createDepthStencilTexture(n,e,t)}});var _V=I(()=>{Ws();Lt();vs();pV();Dg();YC();bt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new ax(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};bt.prototype.createRenderTargetTexture=function(n,e){var _,p;let t=this._createHardwareRenderTargetWrapper(!1,!1,n),i=!0,r=!1,s=!1,a,o=1,l;e!==void 0&&typeof e=="object"&&(i=(_=e.generateDepthBuffer)!=null?_:!0,r=!!e.generateStencilBuffer,s=!!e.noColorAttachment,a=e.colorAttachment,o=(p=e.samples)!=null?p:1,l=e.label);let c=a||(s?null:this._createInternalTexture(n,e,!0,5)),f=n.width||n,d=n.height||n,h=this._currentFramebuffer,u=this._gl,m=u.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(h),t.label=l!=null?l:"RenderTargetWrapper",t._framebuffer=m,t._generateDepthBuffer=i,t._generateStencilBuffer=r,t.setTextures(c),!a)this.updateRenderTargetTextureSampleCount(t,o);else if(t._samples=a.samples,a.samples>1){let g=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=u.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),u.framebufferRenderbuffer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.RENDERBUFFER,g),this._bindUnboundFramebuffer(null)}return t};bt.prototype._createDepthStencilTexture=function(n,e,t){var u;let i=this._gl,r=n.layers||0,s=n.depth||0,a=i.TEXTURE_2D;r!==0?a=i.TEXTURE_2D_ARRAY:s!==0&&(a=i.TEXTURE_3D);let o=new Vi(this,12);if(o.label=e.label,!this._caps.depthTextureExtension)return ee.Error("Depth texture is not supported by your browser or hardware."),o;let l={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e};if(this._bindTextureDirectly(a,o,!0),this._setupDepthStencilTexture(o,n,l.comparisonFunction===0?!1:l.bilinearFiltering,l.comparisonFunction,l.samples),l.depthTextureFormat!==void 0){if(l.depthTextureFormat!==15&&l.depthTextureFormat!==16&&l.depthTextureFormat!==17&&l.depthTextureFormat!==13&&l.depthTextureFormat!==14&&l.depthTextureFormat!==18)return ee.Error(`Depth texture ${l.depthTextureFormat} format is not supported.`),o;o.format=l.depthTextureFormat}else o.format=l.generateStencil?13:16;let c=ic(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,h=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,h,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,h,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,h,o.width,o.height,0,d,f,null),this._bindTextureDirectly(a,null),this._internalTexturesCache.push(o),t._depthStencilBuffer&&(i.deleteRenderbuffer(t._depthStencilBuffer),t._depthStencilBuffer=null),this._bindUnboundFramebuffer((u=t._MSAAFramebuffer)!=null?u:t._framebuffer),t._generateStencilBuffer=c,t._depthStencilTextureWithStencil=c,t._depthStencilBuffer=this._setupFramebufferDepthAttachments(t._generateStencilBuffer,t._generateDepthBuffer,t.width,t.height,t.samples,o.format),this._bindUnboundFramebuffer(null),o};bt.prototype.updateRenderTargetTextureSampleCount=function(n,e){var s,a;if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let t=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(t.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(t.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let i=(s=n.texture)==null?void 0:s._hardwareTexture;if(i==null||i.releaseMSAARenderBuffers(),n.texture&&e>1&&typeof t.renderbufferStorageMultisample=="function"){let o=t.createFramebuffer();if(!o)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=o,this._bindUnboundFramebuffer(n._MSAAFramebuffer);let l=this._createRenderBuffer(n.texture.width,n.texture.height,e,-1,this._getRGBABufferInternalSizedFormat(n.texture.type,n.texture.format,n.texture._useSRGBBuffer),t.COLOR_ATTACHMENT0,!1);if(!l)throw new Error("Unable to create multi sampled framebuffer");i==null||i.addMSAARenderBuffer(l)}this._bindUnboundFramebuffer((a=n._MSAAFramebuffer)!=null?a:n._framebuffer),n.texture&&(n.texture.samples=e),n._samples=e;let r=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,r),this._bindUnboundFramebuffer(null),e};bt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var h,u;let s=(h=e.width)!=null?h:e,a=(u=e.height)!=null?u:e,o=e.layers||0,l=e.depth||0;n.baseWidth=s,n.baseHeight=a,n.width=s,n.height=a,n.is2DArray=o>0,n.depth=o||l,n.isReady=!0,n.samples=r,n.generateMipMaps=!1,n.samplingMode=t?2:1,n.type=0,n._comparisonFunction=i;let c=this._gl,f=this._getTextureTarget(n),d=this._getSamplingParameters(n.samplingMode,!1);c.texParameteri(f,c.TEXTURE_MAG_FILTER,d.mag),c.texParameteri(f,c.TEXTURE_MIN_FILTER,d.min),c.texParameteri(f,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(f,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),this.webGLVersion>1&&(i===0?(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,515),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.NONE)):(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,i),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.COMPARE_REF_TO_TEXTURE)))}});var gV=I(()=>{vs();bt.prototype.setDepthStencilTexture=function(n,e,t,i){n!==void 0&&(e&&(this._boundUniforms[n]=e),!t||!t.depthStencilTexture?this._setTexture(n,null,void 0,void 0,i):this._setTexture(n,t,!1,!0,i))}});var vV=I(()=>{Ws();Lt();vs();bt.prototype.createRenderTargetCubeTexture=function(n,e){let t=this._createHardwareRenderTargetWrapper(!1,!0,n),i={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:0,samplingMode:3,format:5,...e};i.generateStencilBuffer=i.generateDepthBuffer&&i.generateStencilBuffer,(i.type===1&&!this._caps.textureFloatLinearFiltering||i.type===2&&!this._caps.textureHalfFloatLinearFiltering)&&(i.samplingMode=1);let r=this._gl,s=new Vi(this,5);this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,s,!0);let a=this._getSamplingParameters(i.samplingMode,i.generateMipMaps);i.type===1&&!this._caps.textureFloat&&(i.type=0,ee.Warn("Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type")),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,a.mag),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,a.min),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE);for(let l=0;l<6;l++)r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,this._getRGBABufferInternalSizedFormat(i.type,i.format),n,n,0,this._getInternalFormat(i.format),this._getWebGLTextureType(i.type),null);let o=r.createFramebuffer();return this._bindUnboundFramebuffer(o),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(i.generateStencilBuffer,i.generateDepthBuffer,n,n),i.generateMipMaps&&r.generateMipmap(r.TEXTURE_CUBE_MAP),this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._bindUnboundFramebuffer(null),t._framebuffer=o,t._generateDepthBuffer=i.generateDepthBuffer,t._generateStencilBuffer=i.generateStencilBuffer,s.width=n,s.height=n,s.isReady=!0,s.isCube=!0,s.samples=1,s.generateMipMaps=i.generateMipMaps,s.samplingMode=i.samplingMode,s.type=i.type,s.format=i.format,this._internalTexturesCache.push(s),t.setTextures(s),t}});var EV,Rm,Mr,Ft,Kn=I(()=>{EV=.45454545454545453,Rm=2.2,Mr=(1+Math.sqrt(5))/2,Ft=.001});function Tn(n,e){let t=[];for(let i=0;i{let s=r.previous;if(!s)return;let a=r.next;a?(s.next=a,a.previous=s):(s.next=void 0,n[e]=s),r.next=void 0,r.previous=void 0}}function ox(n,e){let t=Xle.map(i=>zle(n,i,e));return()=>{for(let i of t)i==null||i()}}var Xle,pl=I(()=>{Xle=["push","splice","pop","shift","unshift"]});function Ut(n,e){SV[n]=e}function Pn(n){return SV[n]}var SV,$i=I(()=>{SV={}});function Ri(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function ur(n,e){return n===e?n:Math.random()*(e-n)+n}function So(n,e,t){return n+(e-n)*t}function TV(n,e,t,i,r){let s=r*r,a=r*s,o=2*a-3*s+1,l=-2*a+3*s,c=a-2*s+r,f=a-s;return n*o+t*l+e*c+i*f}function Bt(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function AV(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function To(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function xV(n){if(Math.log2)return Math.floor(Math.log2(n));if(n<0)return NaN;if(n===0)return-1/0;let e=0;if(n<1){for(;n<1;)e++,n=n*2;e=-e}else if(n>1)for(;n>1;)e++,n=Math.floor(n/2);return e}function lx(n,e){let t=n%e;return t===0?e:lx(e,t)}var jn=I(()=>{});function RV(n){n.updateFlag=bm._UpdateFlagSeed++}function KC(n,e,t,i=0){let r=n.asArray(),s=e.asArray(),a=r[0],o=r[1],l=r[2],c=r[3],f=r[4],d=r[5],h=r[6],u=r[7],m=r[8],_=r[9],p=r[10],g=r[11],v=r[12],T=r[13],S=r[14],E=r[15],A=s[0],R=s[1],M=s[2],y=s[3],C=s[4],D=s[5],w=s[6],G=s[7],O=s[8],N=s[9],B=s[10],V=s[11],Q=s[12],K=s[13],J=s[14],z=s[15];t[i]=a*A+o*C+l*O+c*Q,t[i+1]=a*R+o*D+l*N+c*K,t[i+2]=a*M+o*w+l*B+c*J,t[i+3]=a*y+o*G+l*V+c*z,t[i+4]=f*A+d*C+h*O+u*Q,t[i+5]=f*R+d*D+h*N+u*K,t[i+6]=f*M+d*w+h*B+u*J,t[i+7]=f*y+d*G+h*V+u*z,t[i+8]=m*A+_*C+p*O+g*Q,t[i+9]=m*R+_*D+p*N+g*K,t[i+10]=m*M+_*w+p*B+g*J,t[i+11]=m*y+_*G+p*V+g*z,t[i+12]=v*A+T*C+S*O+E*Q,t[i+13]=v*R+T*D+S*N+E*K,t[i+14]=v*M+T*w+S*B+E*J,t[i+15]=v*y+T*G+S*V+E*z}function hh(n,e,t,i=0){KC(n,e,t.asArray(),i),RV(t)}function bV(n,e,t=0){let i=n.asArray();e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15]}function Lg(n,e){let t=jC(n,e.asArray());return t&&RV(e),t}function jC(n,e){let t=n.asArray(),i=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],f=t[7],d=t[8],h=t[9],u=t[10],m=t[11],_=t[12],p=t[13],g=t[14],v=t[15],T=u*v-g*m,S=h*v-p*m,E=h*g-p*u,A=d*v-_*m,R=d*g-u*_,M=d*p-_*h,y=+(l*T-c*S+f*E),C=-(o*T-c*A+f*R),D=+(o*S-l*A+f*M),w=-(o*E-l*R+c*M),G=i*y+r*C+s*D+a*w;if(G===0)return!1;let O=1/G,N=c*v-g*f,B=l*v-p*f,V=l*g-p*c,Q=o*v-_*f,K=o*g-_*c,J=o*p-_*l,z=c*m-u*f,Y=l*m-h*f,de=l*u-h*c,ge=o*m-d*f,Ue=o*u-d*c,oe=o*h-d*l,ve=-(r*T-s*S+a*E),ie=+(i*T-s*A+a*R),ue=-(i*S-r*A+a*M),Pe=+(i*E-r*R+s*M),me=+(r*N-s*B+a*V),be=-(i*N-s*Q+a*K),De=+(i*B-r*Q+a*J),ut=-(i*V-r*K+s*J),Ye=-(r*z-s*Y+a*de),je=+(i*z-s*ge+a*Ue),Qt=-(i*Y-r*ge+a*oe),Pt=+(i*de-r*Ue+s*oe);return e[0]=y*O,e[1]=ve*O,e[2]=me*O,e[3]=Ye*O,e[4]=C*O,e[5]=ie*O,e[6]=be*O,e[7]=je*O,e[8]=D*O,e[9]=ue*O,e[10]=De*O,e[11]=Qt*O,e[12]=w*O,e[13]=Pe*O,e[14]=ut*O,e[15]=Pt*O,!0}var bm,ZC=I(()=>{bm=class{};bm._UpdateFlagSeed=0});var Es,we,b,Ni,Ke,Z,Xe,$,uh,ke=I(()=>{Kn();pl();$i();BC();Gi();jn();ZC();Es=n=>parseInt(n.toString().replace(/\W/g,"")),we=class n{constructor(e=0,t=0){this.x=e,this.y=t}toString(){return`{X: ${this.x} Y: ${this.y}}`}getClassName(){return"Vector2"}getHashCode(){let e=Es(this.x),t=Es(this.y),i=e;return i=i*397^t,i}toArray(e,t=0){return e[t]=this.x,e[t+1]=this.y,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}asArray(){return[this.x,this.y]}copyFrom(e){return this.x=e.x,this.y=e.y,this}copyFromFloats(e,t){return this.x=e,this.y=t,this}set(e,t){return this.copyFromFloats(e,t)}setAll(e){return this.copyFromFloats(e,e)}add(e){return new n(this.x+e.x,this.y+e.y)}addToRef(e,t){return t.x=this.x+e.x,t.y=this.y+e.y,t}addInPlace(e){return this.x+=e.x,this.y+=e.y,this}addInPlaceFromFloats(e,t){return this.x+=e,this.y+=t,this}addVector3(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new n(this.x-e.x,this.y-e.y)}subtractToRef(e,t){return t.x=this.x-e.x,t.y=this.y-e.y,t}subtractInPlace(e){return this.x-=e.x,this.y-=e.y,this}multiplyInPlace(e){return this.x*=e.x,this.y*=e.y,this}multiply(e){return new n(this.x*e.x,this.y*e.y)}multiplyToRef(e,t){return t.x=this.x*e.x,t.y=this.y*e.y,t}multiplyByFloats(e,t){return new n(this.x*e,this.y*t)}divide(e){return new n(this.x/e.x,this.y/e.y)}divideToRef(e,t){return t.x=this.x/e.x,t.y=this.y/e.y,t}divideInPlace(e){return this.x=this.x/e.x,this.y=this.y/e.y,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.x,e.y)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.x,e.y)}minimizeInPlaceFromFloats(e,t){return this.x=Math.min(e,this.x),this.y=Math.min(t,this.y),this}maximizeInPlaceFromFloats(e,t){return this.x=Math.max(e,this.x),this.y=Math.max(t,this.y),this}subtractFromFloats(e,t){return new n(this.x-e,this.y-t)}subtractFromFloatsToRef(e,t,i){return i.x=this.x-e,i.y=this.y-t,i}negate(){return new n(-this.x,-this.y)}negateInPlace(){return this.x*=-1,this.y*=-1,this}negateToRef(e){return e.x=-this.x,e.y=-this.y,e}scaleInPlace(e){return this.x*=e,this.y*=e,this}scale(e){return new n(this.x*e,this.y*e)}scaleToRef(e,t){return t.x=this.x*e,t.y=this.y*e,t}scaleAndAddToRef(e,t){return t.x+=this.x*e,t.y+=this.y*e,t}equals(e){return e&&this.x===e.x&&this.y===e.y}equalsWithEpsilon(e,t=Ft){return e&&Ri(this.x,e.x,t)&&Ri(this.y,e.y,t)}equalsToFloats(e,t){return this.x===e&&this.y===t}floor(){return new n(Math.floor(this.x),Math.floor(this.y))}floorToRef(e){return e.x=Math.floor(this.x),e.y=Math.floor(this.y),e}fract(){return new n(this.x-Math.floor(this.x),this.y-Math.floor(this.y))}fractToRef(e){return e.x=this.x-Math.floor(this.x),e.y=this.y-Math.floor(this.y),e}rotate(e){return this.rotateToRef(e,new n)}rotateToRef(e,t){let i=Math.cos(e),r=Math.sin(e);return t.x=i*this.x-r*this.y,t.y=r*this.x+i*this.y,t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSquared(){return this.x*this.x+this.y*this.y}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n;return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0&&(e.x=this.x,e.y=this.y),this.scaleToRef(1/t,e)}clone(){return new n(this.x,this.y)}dot(e){return this.x*e.x+this.y*e.y}static Zero(){return new n(0,0)}static One(){return new n(1,1)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t))}static get ZeroReadOnly(){return n._ZeroReadOnly}static FromArray(e,t=0){return new n(e[t],e[t+1])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i}static FromFloatsToRef(e,t,i){return i.copyFromFloats(e,t),i}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t.x+(-e.x+i.x)*s+(2*e.x-5*t.x+4*i.x-r.x)*a+(-e.x+3*t.x-3*i.x+r.x)*o),c=.5*(2*t.y+(-e.y+i.y)*s+(2*e.y-5*t.y+4*i.y-r.y)*a+(-e.y+3*t.y-3*i.y+r.y)*o);return new n(l,c)}static ClampToRef(e,t,i,r){return r.x=Bt(e.x,t.x,i.x),r.y=Bt(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=Bt(e.x,t.x,i.x),s=Bt(e.y,t.y,i.y);return new n(r,s)}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.x*l+i.x*c+t.x*f+r.x*d,u=e.y*l+i.y*c+t.y*f+r.y*d;return new n(h,u)}static Hermite1stDerivative(e,t,i,r,s){return this.Hermite1stDerivativeToRef(e,t,i,r,s,new n)}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a.x=(o-s)*6*e.x+(3*o-4*s+1)*t.x+(-o+s)*6*i.x+(3*o-2*s)*r.x,a.y=(o-s)*6*e.y+(3*o-4*s+1)*t.y+(-o+s)*6*i.y+(3*o-2*s)*r.y,a}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.x=e.x+(t.x-e.x)*i,r.y=e.y+(t.y-e.y)*i,r}static Dot(e,t){return e.x*t.x+e.y*t.y}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=e.xt.x?e.x:t.x,r=e.y>t.y?e.y:t.y;return new n(i,r)}static Transform(e,t){return n.TransformToRef(e,t,new n)}static TransformToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+r[12],a=e.x*r[1]+e.y*r[5]+r[13];return i.x=s,i.y=a,i}static PointInTriangle(e,t,i,r){let s=.5*(-i.y*r.x+t.y*(-i.x+r.x)+t.x*(i.y-r.y)+i.x*r.y),a=s<0?-1:1,o=(t.y*r.x-t.x*r.y+(r.y-t.y)*e.x+(t.x-r.x)*e.y)*a,l=(t.x*i.y-t.y*i.x+(t.y-i.y)*e.x+(i.x-t.x)*e.y)*a;return o>0&&l>0&&o+l<2*s*a}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y;return i*i+r*r}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2)}static DistanceOfPointFromSegment(e,t,i){let r=n.DistanceSquared(t,i);if(r===0)return n.Distance(e,t);let s=i.subtract(t),a=Math.max(0,Math.min(1,n.Dot(e.subtract(t),s)/r)),o=t.add(s.multiplyByFloats(a,a));return n.Distance(e,o)}};we._V8PerformanceHack=new we(.5,.5);we._ZeroReadOnly=we.Zero();Object.defineProperties(we.prototype,{dimension:{value:[2]},rank:{value:1}});b=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}constructor(e=0,t=0,i=0){this._isDirty=!0,this._x=e,this._y=t,this._z=i}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z}}`}getClassName(){return"Vector3"}getHashCode(){let e=Es(this._x),t=Es(this._y),i=Es(this._z),r=e;return r=r*397^t,r=r*397^i,r}asArray(){return[this._x,this._y,this._z]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toQuaternion(){return Ke.RotationYawPitchRoll(this._y,this._x,this._z)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._isDirty=!0,this}addInPlaceFromFloats(e,t,i){return this._x+=e,this._y+=t,this._z+=i,this._isDirty=!0,this}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z)}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._isDirty=!0,t}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._isDirty=!0,this}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z)}subtractToRef(e,t){return this.subtractFromFloatsToRef(e._x,e._y,e._z,t)}subtractFromFloats(e,t,i){return new n(this._x-e,this._y-t,this._z-i)}subtractFromFloatsToRef(e,t,i,r){return r._x=this._x-e,r._y=this._y-t,r._z=this._z-i,r._isDirty=!0,r}negate(){return new n(-this._x,-this._y,-this._z)}negateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}negateToRef(e){return e._x=this._x*-1,e._y=this._y*-1,e._z=this._z*-1,e._isDirty=!0,e}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._isDirty=!0,t}getNormalToRef(e){let t=this.length(),i=Math.acos(this._y/t),r=Math.atan2(this._z,this._x);i>Math.PI/2?i-=Math.PI/2:i+=Math.PI/2;let s=t*Math.sin(i)*Math.cos(r),a=t*Math.cos(i),o=t*Math.sin(i)*Math.sin(r);return e.set(s,a,o),e}applyRotationQuaternionToRef(e,t){let i=this._x,r=this._y,s=this._z,a=e._x,o=e._y,l=e._z,c=e._w,f=2*(o*s-l*r),d=2*(l*i-a*s),h=2*(a*r-o*i);return t._x=i+c*f+o*h-l*d,t._y=r+c*d+l*f-a*h,t._z=s+c*h+a*d-o*f,t._isDirty=!0,t}applyRotationQuaternionInPlace(e){return this.applyRotationQuaternionToRef(e,this)}applyRotationQuaternion(e){return this.applyRotationQuaternionToRef(e,new n)}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._isDirty=!0,t}projectOnPlane(e,t){return this.projectOnPlaneToRef(e,t,new n)}projectOnPlaneToRef(e,t,i){let r=e.normal,s=e.d,a=Xe.Vector3[0];this.subtractToRef(t,a),a.normalize();let o=n.Dot(a,r);if(Math.abs(o)<1e-10)i.setAll(1/0);else{let l=-(n.Dot(t,r)+s)/o,c=a.scaleInPlace(l);t.addToRef(c,i)}return i}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z}equalsWithEpsilon(e,t=Ft){return e&&Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)}equalsToFloats(e,t,i){return this._x===e&&this._y===t&&this._z===i}multiplyInPlace(e){return this._x*=e._x,this._y*=e._y,this._z*=e._z,this._isDirty=!0,this}multiply(e){return this.multiplyByFloats(e._x,e._y,e._z)}multiplyToRef(e,t){return t._x=this._x*e._x,t._y=this._y*e._y,t._z=this._z*e._z,t._isDirty=!0,t}multiplyByFloats(e,t,i){return new n(this._x*e,this._y*t,this._z*i)}divide(e){return new n(this._x/e._x,this._y/e._y,this._z/e._z)}divideToRef(e,t){return t._x=this._x/e._x,t._y=this._y/e._y,t._z=this._z/e._z,t._isDirty=!0,t}divideInPlace(e){return this._x=this._x/e._x,this._y=this._y/e._y,this._z=this._z/e._z,this._isDirty=!0,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e._x,e._y,e._z)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e._x,e._y,e._z)}minimizeInPlaceFromFloats(e,t,i){return ethis._x&&(this.x=e),t>this._y&&(this.y=t),i>this._z&&(this.z=i),this}isNonUniformWithinEpsilon(e){let t=Math.abs(this._x),i=Math.abs(this._y);if(!Ri(t,i,e))return!0;let r=Math.abs(this._z);return!Ri(t,r,e)||!Ri(i,r,e)}get isNonUniform(){let e=Math.abs(this._x),t=Math.abs(this._y);if(e!==t)return!0;let i=Math.abs(this._z);return e!==i}floorToRef(e){return e._x=Math.floor(this._x),e._y=Math.floor(this._y),e._z=Math.floor(this._z),e._isDirty=!0,e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))}fractToRef(e){return e._x=this._x-Math.floor(this._x),e._y=this._y-Math.floor(this._y),e._z=this._z-Math.floor(this._z),e._isDirty=!0,e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z))}length(){return Math.sqrt(this.lengthSquared())}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z}get hasAZeroComponent(){return this._x*this._y*this._z===0}normalize(){return this.normalizeFromLength(this.length())}reorderInPlace(e){if(e=e.toLowerCase(),e==="xyz")return this;let t=Xe.Vector3[0].copyFrom(this);return this.x=t[e[0]],this.y=t[e[1]],this.z=t[e[2]],this}rotateByQuaternionToRef(e,t){return e.toRotationMatrix(Xe.Matrix[0]),n.TransformCoordinatesToRef(this,Xe.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,Xe.Vector3[0]),Xe.Vector3[0].rotateByQuaternionToRef(e,Xe.Vector3[0]),t.addToRef(Xe.Vector3[0],i),i}cross(e){return n.CrossToRef(this,e,new n)}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e._x=this._x,e._y=this._y,e._z=this._z,e._isDirty=!0,e):this.scaleToRef(1/t,e)}clone(){return new n(this._x,this._y,this._z)}copyFrom(e){return this.copyFromFloats(e._x,e._y,e._z)}copyFromFloats(e,t,i){return this._x=e,this._y=t,this._z=i,this._isDirty=!0,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this._x=this._y=this._z=e,this._isDirty=!0,this}static GetClipFactor(e,t,i,r){let s=n.Dot(e,i),a=n.Dot(t,i);return(s-r)/(s-a)}static GetAngleBetweenVectors(e,t,i){let r=e.normalizeToRef(Xe.Vector3[1]),s=t.normalizeToRef(Xe.Vector3[2]),a=n.Dot(r,s);a=Bt(a,-1,1);let o=Math.acos(a),l=Xe.Vector3[3];return n.CrossToRef(r,s,l),n.Dot(l,i)>0?isNaN(o)?0:o:isNaN(o)?-Math.PI:-Math.acos(a)}static GetAngleBetweenVectorsOnPlane(e,t,i){Xe.Vector3[0].copyFrom(e);let r=Xe.Vector3[0];Xe.Vector3[1].copyFrom(t);let s=Xe.Vector3[1];Xe.Vector3[2].copyFrom(i);let a=Xe.Vector3[2],o=Xe.Vector3[3],l=Xe.Vector3[4];r.normalize(),s.normalize(),a.normalize(),n.CrossToRef(a,r,o),n.CrossToRef(o,a,l);let c=Math.atan2(n.Dot(s,o),n.Dot(s,l));return AV(c)}static PitchYawRollToMoveBetweenPointsToRef(e,t,i){let r=$.Vector3[0];return t.subtractToRef(e,r),i._y=Math.atan2(r.x,r.z)||0,i._x=Math.atan2(Math.sqrt(r.x**2+r.z**2),r.y)||0,i._z=0,i._isDirty=!0,i}static PitchYawRollToMoveBetweenPoints(e,t){let i=n.Zero();return n.PitchYawRollToMoveBetweenPointsToRef(e,t,i)}static SlerpToRef(e,t,i,r){i=Bt(i,0,1);let s=Xe.Vector3[0],a=Xe.Vector3[1];s.copyFrom(e);let o=s.length();s.normalizeFromLength(o),a.copyFrom(t);let l=a.length();a.normalizeFromLength(l);let c=n.Dot(s,a),f,d;if(c<1-Ft){let h=Math.acos(c),u=1/Math.sin(h);f=Math.sin((1-i)*h)*u,d=Math.sin(i*h)*u}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(So(o,l,i)),r}static SmoothToRef(e,t,i,r,s){return n.SlerpToRef(e,t,r===0?1:i/r,s),s}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromFloatArray(e,t){return n.FromArray(e,t)}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._isDirty=!0,i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i)}static FromFloatsToRef(e,t,i,r){return r.copyFromFloats(e,t,i),r}static Zero(){return new n(0,0,0)}static One(){return new n(1,1,1)}static Up(){return new n(0,1,0)}static get UpReadOnly(){return n._UpReadOnly}static get DownReadOnly(){return n._DownReadOnly}static get RightReadOnly(){return n._RightReadOnly}static get LeftReadOnly(){return n._LeftReadOnly}static get LeftHandedForwardReadOnly(){return n._LeftHandedForwardReadOnly}static get RightHandedForwardReadOnly(){return n._RightHandedForwardReadOnly}static get LeftHandedBackwardReadOnly(){return n._LeftHandedBackwardReadOnly}static get RightHandedBackwardReadOnly(){return n._RightHandedBackwardReadOnly}static get ZeroReadOnly(){return n._ZeroReadOnly}static get OneReadOnly(){return n._OneReadOnly}static Down(){return new n(0,-1,0)}static Forward(e=!1){return new n(0,0,e?-1:1)}static Backward(e=!1){return new n(0,0,e?1:-1)}static Right(){return new n(1,0,0)}static Left(){return new n(-1,0,0)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t),ur(e,t))}static TransformCoordinates(e,t){let i=n.Zero();return n.TransformCoordinatesToRef(e,t,i),i}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=1/(e*a[3]+t*a[7]+i*a[11]+a[15]);return s._x=o*f,s._y=l*f,s._z=c*f,s._isDirty=!0,s}static TransformNormal(e,t){let i=n.Zero();return n.TransformNormalToRef(e,t,i),i}static TransformNormalToRef(e,t,i){return this.TransformNormalFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformNormalFromFloatsToRef(e,t,i,r,s){let a=r.m;return s._x=e*a[0]+t*a[4]+i*a[8],s._y=e*a[1]+t*a[5]+i*a[9],s._z=e*a[2]+t*a[6]+i*a[10],s._isDirty=!0,s}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t._x+(-e._x+i._x)*s+(2*e._x-5*t._x+4*i._x-r._x)*a+(-e._x+3*t._x-3*i._x+r._x)*o),c=.5*(2*t._y+(-e._y+i._y)*s+(2*e._y-5*t._y+4*i._y-r._y)*a+(-e._y+3*t._y-3*i._y+r._y)*o),f=.5*(2*t._z+(-e._z+i._z)*s+(2*e._z-5*t._z+4*i._z-r._z)*a+(-e._z+3*t._z-3*i._z+r._z)*o);return new n(l,c,f)}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){let s=e._x;s=s>i._x?i._x:s,s=si._y?i._y:a,a=ai._z?i._z:o,o=o0&&C<0?(w.copyFrom(a),G=t,O=i):C>0&&D<0?(w.copyFrom(l),G=i,O=r):(w.copyFrom(o).scaleInPlace(-1),G=r,O=t);let N=Xe.Vector3[9],B=Xe.Vector3[4];if(G.subtractToRef(v,A),O.subtractToRef(v,N),n.CrossToRef(A,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(_*p);let Q=Xe.Vector3[5];n.CrossToRef(w,B,Q),Q.normalize();let K=Xe.Vector3[9];K.copyFrom(G).subtractInPlace(v);let J=K.length();if(Jthis._x&&(this.x=e.x),e.y>this._y&&(this.y=e.y),e.z>this._z&&(this.z=e.z),e.w>this._w&&(this.w=e.w),this}minimizeInPlaceFromFloats(e,t,i,r){return this.x=Math.min(e,this._x),this.y=Math.min(t,this._y),this.z=Math.min(i,this._z),this.w=Math.min(r,this._w),this}maximizeInPlaceFromFloats(e,t,i,r){return this.x=Math.max(e,this._x),this.y=Math.max(t,this._y),this.z=Math.max(i,this._z),this.w=Math.max(r,this._w),this}floorToRef(e){return e.x=Math.floor(this._x),e.y=Math.floor(this._y),e.z=Math.floor(this._z),e.w=Math.floor(this._w),e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),Math.floor(this._w))}fractToRef(e){return e.x=this._x-Math.floor(this._x),e.y=this._y-Math.floor(this._y),e.z=this._z-Math.floor(this._z),e.w=this._w-Math.floor(this._w),e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z),this._w-Math.floor(this._w))}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e.x=this._x,e.y=this._y,e.z=this._z,e.w=this._w,e):this.scaleToRef(1/t,e)}toVector3(){return new b(this._x,this._y,this._z)}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}copyFromFloats(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.x=this.y=this.z=this.w=e,this}dot(e){return this._x*e.x+this._y*e.y+this._z*e.z+this._w*e.w}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i.z=e[t+2],i.w=e[t+3],i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i),i}static FromFloatsToRef(e,t,i,r,s){return s.x=e,s.y=t,s.z=i,s.w=r,s}static Zero(){return new n(0,0,0,0)}static One(){return new n(1,1,1,1)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.x=ur(e,t),i.y=ur(e,t),i.z=ur(e,t),i.w=ur(e,t),i}static Clamp(e,t,i){return n.ClampToRef(e,t,i,new n)}static ClampToRef(e,t,i,r){return r.x=Bt(e.x,t.x,i.x),r.y=Bt(e.y,t.y,i.y),r.z=Bt(e.z,t.z,i.z),r.w=Bt(e.w,t.w,i.w),r}static CheckExtends(e,t,i){t.minimizeInPlace(e),i.maximizeInPlace(e)}static get ZeroReadOnly(){return n._ZeroReadOnly}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=new n;return i.copyFrom(e),i.minimizeInPlace(t),i}static Maximize(e,t){let i=new n;return i.copyFrom(e),i.maximizeInPlace(t),i}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.x=(e.x+t.x)/2,i.y=(e.y+t.y)/2,i.z=(e.z+t.z)/2,i.w=(e.w+t.w)/2,i}static TransformCoordinates(e,t){return n.TransformCoordinatesToRef(e,t,new n)}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=e*a[3]+t*a[7]+i*a[11]+a[15];return s.x=o,s.y=l,s.z=c,s.w=f,s}static TransformNormal(e,t){return n.TransformNormalToRef(e,t,new n)}static TransformNormalToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+e.z*r[8],a=e.x*r[1]+e.y*r[5]+e.z*r[9],o=e.x*r[2]+e.y*r[6]+e.z*r[10];return i.x=s,i.y=a,i.z=o,i.w=e.w,i}static TransformNormalFromFloatsToRef(e,t,i,r,s,a){let o=s.m;return a.x=e*o[0]+t*o[4]+i*o[8],a.y=e*o[1]+t*o[5]+i*o[9],a.z=e*o[2]+t*o[6]+i*o[10],a.w=r,a}static FromVector3(e,t=0){return new n(e._x,e._y,e._z,t)}static Dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}};Ni._V8PerformanceHack=new Ni(.5,.5,.5,.5);Ni._ZeroReadOnly=Ni.Zero();Object.defineProperties(Ni.prototype,{dimension:{value:[4]},rank:{value:1}});Ke=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}get w(){return this._w}set w(e){this._w=e,this._isDirty=!0}constructor(e=0,t=0,i=0,r=1){this._isDirty=!0,this._x=e,this._y=t,this._z=i,this._w=r}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z} W: ${this._w}}`}getClassName(){return"Quaternion"}getHashCode(){let e=Es(this._x),t=Es(this._y),i=Es(this._z),r=Es(this._w),s=e;return s=s*397^t,s=s*397^i,s=s*397^r,s}asArray(){return[this._x,this._y,this._z,this._w]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z&&this._w===e._w}equalsWithEpsilon(e,t=Ft){return e&&Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)&&Ri(this._w,e._w,t)}isApprox(e,t=Ft){return e&&(Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)&&Ri(this._w,e._w,t)||Ri(this._x,-e._x,t)&&Ri(this._y,-e._y,t)&&Ri(this._z,-e._z,t)&&Ri(this._w,-e._w,t))}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._w=e._w,this._isDirty=!0,this}copyFromFloats(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._isDirty=!0,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.copyFromFloats(e,e,e,e)}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z,this._w+e._w)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._w+=e._w,this._isDirty=!0,this}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._w=this._w+e._w,t._isDirty=!0,t}addInPlaceFromFloats(e,t,i,r){return this._x+=e,this._y+=t,this._z+=i,this._w+=r,this._isDirty=!0,this}subtractToRef(e,t){return t._x=this._x-e._x,t._y=this._y-e._y,t._z=this._z-e._z,t._w=this._w-e._w,t._isDirty=!0,t}subtractFromFloats(e,t,i,r){return this.subtractFromFloatsToRef(e,t,i,r,new n)}subtractFromFloatsToRef(e,t,i,r,s){return s._x=this._x-e,s._y=this._y-t,s._z=this._z-i,s._w=this._w-r,s._isDirty=!0,s}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z,this._w-e._w)}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._w-=e._w,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e,this._w*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._w=this._w*e,t._isDirty=!0,t}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._w*=e,this._isDirty=!0,this}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._w+=this._w*e,t._isDirty=!0,t}multiply(e){let t=new n(0,0,0,1);return this.multiplyToRef(e,t),t}multiplyToRef(e,t){let i=this._x*e._w+this._y*e._z-this._z*e._y+this._w*e._x,r=-this._x*e._z+this._y*e._w+this._z*e._x+this._w*e._y,s=this._x*e._y-this._y*e._x+this._z*e._w+this._w*e._z,a=-this._x*e._x-this._y*e._y-this._z*e._z+this._w*e._w;return t.copyFromFloats(i,r,s,a),t}multiplyInPlace(e){return this.multiplyToRef(e,this)}multiplyByFloats(e,t,i,r){return this._x*=e,this._y*=t,this._z*=i,this._w*=r,this._isDirty=!0,this}divide(e){throw new ReferenceError("Can not divide a quaternion")}divideToRef(e,t){throw new ReferenceError("Can not divide a quaternion")}divideInPlace(e){throw new ReferenceError("Can not divide a quaternion")}minimizeInPlace(){throw new ReferenceError("Can not minimize a quaternion")}minimizeInPlaceFromFloats(){throw new ReferenceError("Can not minimize a quaternion")}maximizeInPlace(){throw new ReferenceError("Can not maximize a quaternion")}maximizeInPlaceFromFloats(){throw new ReferenceError("Can not maximize a quaternion")}negate(){return this.negateToRef(new n)}negateInPlace(){return this._x=-this._x,this._y=-this._y,this._z=-this._z,this._w=-this._w,this._isDirty=!0,this}negateToRef(e){return e._x=-this._x,e._y=-this._y,e._z=-this._z,e._w=-this._w,e._isDirty=!0,e}equalsToFloats(e,t,i,r){return this._x===e&&this._y===t&&this._z===i&&this._w===r}floorToRef(e){throw new ReferenceError("Can not floor a quaternion")}floor(){throw new ReferenceError("Can not floor a quaternion")}fractToRef(e){throw new ReferenceError("Can not fract a quaternion")}fract(){throw new ReferenceError("Can not fract a quaternion")}conjugateToRef(e){return e.copyFromFloats(-this._x,-this._y,-this._z,this._w),e}conjugateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}conjugate(){return new n(-this._x,-this._y,-this._z,this._w)}invert(){let e=this.conjugate(),t=this.lengthSquared();return t==0||t==1||e.scaleInPlace(1/t),e}invertInPlace(){this.conjugateInPlace();let e=this.lengthSquared();return e==0||e==1?this:(this.scaleInPlace(1/e),this)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this.lengthSquared())}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n(0,0,0,1);return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0||t===1?e.copyFromFloats(this._x,this._y,this._z,this._w):this.scaleToRef(1/t,e)}toEulerAngles(){let e=b.Zero();return this.toEulerAnglesToRef(e),e}toEulerAnglesToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=r*t-i*s,o=.4999999;if(a<-o)e._y=2*Math.atan2(r,s),e._x=Math.PI/2,e._z=0,e._isDirty=!0;else if(a>o)e._y=2*Math.atan2(r,s),e._x=-Math.PI/2,e._z=0,e._isDirty=!0;else{let l=s*s,c=t*t,f=i*i,d=r*r;e._z=Math.atan2(2*(i*r+t*s),-c-f+d+l),e._x=Math.asin(-2*a),e._y=Math.atan2(2*(t*i+r*s),c-f-d+l),e._isDirty=!0}return e}toAlphaBetaGammaToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=Math.sqrt(i*i+r*r),o=Math.sqrt(t*t+s*s),l=2*Math.atan2(a,o),c=2*Math.atan2(t,s),f=2*Math.atan2(r,i),d=(c+f)/2,h=(c-f)/2;return e.set(h,l,d),e}toRotationMatrix(e){return Z.FromQuaternionToRef(this,e),e}fromRotationMatrix(e){return n.FromRotationMatrixToRef(e,this),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}toAxisAngle(){let e=b.Zero(),t=this.toAxisAngleToRef(e);return{axis:e,angle:t}}toAxisAngleToRef(e){let t,i=Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z),r=this._w;return i>0?(t=2*Math.atan2(i,r),e.set(this._x/i,this._y/i,this._z/i)):(t=0,e.set(1,0,0)),t}static FromRotationMatrix(e){let t=new n;return n.FromRotationMatrixToRef(e,t),t}static FromRotationMatrixToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],c=i[9],f=i[2],d=i[6],h=i[10],u=r+l+h,m;return u>0?(m=.5/Math.sqrt(u+1),t._w=.25/m,t._x=(d-c)*m,t._y=(a-f)*m,t._z=(o-s)*m,t._isDirty=!0):r>l&&r>h?(m=2*Math.sqrt(1+r-l-h),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>h?(m=2*Math.sqrt(1+l-r-h),t._w=(a-f)/m,t._x=(s+o)/m,t._y=.25*m,t._z=(c+d)/m,t._isDirty=!0):(m=2*Math.sqrt(1+h-r-l),t._w=(o-s)/m,t._x=(a+f)/m,t._y=(c+d)/m,t._z=.25*m,t._isDirty=!0),t}static Dot(e,t){return e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w}static AreClose(e,t,i=.1){let r=n.Dot(e,t);return 1-r*r<=i}static SmoothToRef(e,t,i,r,s){let a=r===0?1:i/r;return a=Bt(a,0,1),n.SlerpToRef(e,t,a,s),s}static Zero(){return new n(0,0,0,0)}static Inverse(e){return new n(-e._x,-e._y,-e._z,e._w)}static InverseToRef(e,t){return t.set(-e._x,-e._y,-e._z,e._w),t}static Identity(){return new n(0,0,0,1)}static IsIdentity(e){return e&&e._x===0&&e._y===0&&e._z===0&&e._w===1}static RotationAxis(e,t){return n.RotationAxisToRef(e,t,new n)}static RotationAxisToRef(e,t,i){i._w=Math.cos(t/2);let r=Math.sin(t/2)/e.length();return i._x=e._x*r,i._y=e._y*r,i._z=e._z*r,i._isDirty=!0,i}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._w=e[t+3],i._isDirty=!0,i}static FromFloatsToRef(e,t,i,r,s){return s.copyFromFloats(e,t,i,r),s}static FromEulerAngles(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerAnglesToRef(e,t,i,r){return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerVector(e){let t=new n;return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromEulerVectorToRef(e,t){return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromUnitVectorsToRef(e,t,i,r=Ft){let s=b.Dot(e,t)+1;return sMath.abs(e.z)?i.set(-e.y,e.x,0,0):i.set(0,-e.z,e.y,0):(b.CrossToRef(e,t,$.Vector3[0]),i.set($.Vector3[0].x,$.Vector3[0].y,$.Vector3[0].z,s)),i.normalize()}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){let s=i*.5,a=t*.5,o=e*.5,l=Math.sin(s),c=Math.cos(s),f=Math.sin(a),d=Math.cos(a),h=Math.sin(o),u=Math.cos(o);return r._x=u*f*c+h*d*l,r._y=h*d*c-u*f*l,r._z=u*d*l-h*f*c,r._w=u*d*c+h*f*l,r._isDirty=!0,r}static RotationAlphaBetaGamma(e,t,i){let r=new n;return n.RotationAlphaBetaGammaToRef(e,t,i,r),r}static RotationAlphaBetaGammaToRef(e,t,i,r){let s=(i+e)*.5,a=(i-e)*.5,o=t*.5;return r._x=Math.cos(a)*Math.sin(o),r._y=Math.sin(a)*Math.sin(o),r._z=Math.sin(s)*Math.cos(o),r._w=Math.cos(s)*Math.cos(o),r._isDirty=!0,r}static RotationQuaternionFromAxis(e,t,i){let r=new n(0,0,0,0);return n.RotationQuaternionFromAxisToRef(e,t,i,r),r}static RotationQuaternionFromAxisToRef(e,t,i,r){let s=Xe.Matrix[0];return e=e.normalizeToRef(Xe.Vector3[0]),t=t.normalizeToRef(Xe.Vector3[1]),i=i.normalizeToRef(Xe.Vector3[2]),Z.FromXYZAxesToRef(e,t,i,s),n.FromRotationMatrixToRef(s,r),r}static FromLookDirectionLH(e,t){let i=new n;return n.FromLookDirectionLHToRef(e,t,i),i}static FromLookDirectionLHToRef(e,t,i){let r=Xe.Matrix[0];return Z.LookDirectionLHToRef(e,t,r),n.FromRotationMatrixToRef(r,i),i}static FromLookDirectionRH(e,t){let i=new n;return n.FromLookDirectionRHToRef(e,t,i),i}static FromLookDirectionRHToRef(e,t,i){let r=Xe.Matrix[0];return Z.LookDirectionRHToRef(e,t,r),n.FromRotationMatrixToRef(r,i)}static Slerp(e,t,i){let r=n.Identity();return n.SlerpToRef(e,t,i,r),r}static SlerpToRef(e,t,i,r){let s,a,o=e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w,l=!1;if(o<0&&(l=!0,o=-o),o>.999999)a=1-i,s=l?-i:i;else{let c=Math.acos(o),f=1/Math.sin(c);a=Math.sin((1-i)*c)*f,s=l?-Math.sin(i*c)*f:Math.sin(i*c)*f}return r._x=a*e._x+s*t._x,r._y=a*e._y+s*t._y,r._z=a*e._z+s*t._z,r._w=a*e._w+s*t._w,r._isDirty=!0,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e._x*l+i._x*c+t._x*f+r._x*d,u=e._y*l+i._y*c+t._y*f+r._y*d,m=e._z*l+i._z*c+t._z*f+r._z*d,_=e._w*l+i._w*c+t._w*f+r._w*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a._x=(o-s)*6*e._x+(3*o-4*s+1)*t._x+(-o+s)*6*i._x+(3*o-2*s)*r._x,a._y=(o-s)*6*e._y+(3*o-4*s+1)*t._y+(-o+s)*6*i._y+(3*o-2*s)*r._y,a._z=(o-s)*6*e._z+(3*o-4*s+1)*t._z+(-o+s)*6*i._z+(3*o-2*s)*r._z,a._w=(o-s)*6*e._w+(3*o-4*s+1)*t._w+(-o+s)*6*i._w+(3*o-2*s)*r._w,a._isDirty=!0,a}static Normalize(e){let t=n.Zero();return n.NormalizeToRef(e,t),t}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){return r.copyFromFloats(Bt(e.x,t.x,i.x),Bt(e.y,t.y,i.y),Bt(e.z,t.z,i.z),Bt(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static Minimize(){throw new ReferenceError("Quaternion.Minimize does not make sense")}static Maximize(){throw new ReferenceError("Quaternion.Maximize does not make sense")}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,n.Zero())}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2,(e.w+t.w)/2)}};Ke._V8PerformanceHack=new Ke(.5,.5,.5,.5);Object.defineProperties(Ke.prototype,{dimension:{value:[4]},rank:{value:1}});Z=class n{static get Use64Bits(){return gs.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=bm._UpdateFlagSeed++,this._isIdentity=!1,this._isIdentity3x2=!1,this._isIdentityDirty=!0,this._isIdentity3x2Dirty=!0}_updateIdentityStatus(e,t=!1,i=!1,r=!0){this._isIdentity=e,this._isIdentity3x2=e||i,this._isIdentityDirty=this._isIdentity?!1:t,this._isIdentity3x2Dirty=this._isIdentity3x2?!1:r}constructor(){this._isIdentity=!1,this._isIdentityDirty=!0,this._isIdentity3x2=!0,this._isIdentity3x2Dirty=!0,this.updateFlag=-1,gs.MatrixTrackPrecisionChange&&gs.MatrixTrackedMatrices.push(this),this._m=new gs.MatrixCurrentType(16),this.markAsUpdated()}isIdentity(){if(this._isIdentityDirty){this._isIdentityDirty=!1;let e=this._m;this._isIdentity=e[0]===1&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0&&e[8]===0&&e[9]===0&&e[10]===1&&e[11]===0&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1}return this._isIdentity}isIdentityAs3x2(){return this._isIdentity3x2Dirty&&(this._isIdentity3x2Dirty=!1,this._m[0]!==1||this._m[5]!==1||this._m[15]!==1?this._isIdentity3x2=!1:this._m[1]!==0||this._m[2]!==0||this._m[3]!==0||this._m[4]!==0||this._m[6]!==0||this._m[7]!==0||this._m[8]!==0||this._m[9]!==0||this._m[10]!==0||this._m[11]!==0||this._m[12]!==0||this._m[13]!==0||this._m[14]!==0?this._isIdentity3x2=!1:this._isIdentity3x2=!0),this._isIdentity3x2}determinant(){if(this._isIdentity===!0)return 1;let e=this._m,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=e[9],h=e[10],u=e[11],m=e[12],_=e[13],p=e[14],g=e[15],v=h*g-p*u,T=d*g-_*u,S=d*p-_*h,E=f*g-m*u,A=f*p-h*m,R=f*_-m*d,M=+(o*v-l*T+c*S),y=-(a*v-l*E+c*A),C=+(a*T-o*E+c*R),D=-(a*S-o*A+l*R);return t*M+i*y+r*C+s*D}toString(){return`{${this.m[0]}, ${this.m[1]}, ${this.m[2]}, ${this.m[3]} +`+e;return e}}});var fh,GC=I(()=>{fh=class n{get underlyingResource(){return null}constructor(){this.references=0,this.capacity=0,this.is32Bits=!1,this.uniqueId=n._Counter++}};fh._Counter=0});var ml,rx=I(()=>{GC();ml=class extends fh{constructor(e){super(),this._buffer=e}get underlyingResource(){return this._buffer}}});function dh(n){let e=1;do e*=2;while(en-t?t:e}function rV(n){return n--,n|=n>>1,n|=n>>2,n|=n>>4,n|=n>>8,n|=n>>16,n++,n}function nx(n){return n=n|n>>1,n=n|n>>2,n=n|n>>4,n=n|n>>8,n=n|n>>16,n-(n>>1)}function Cn(n,e,t=2){let i;switch(t){case 1:i=nx(n);break;case 2:i=kC(n);break;default:i=rV(n);break}return Math.min(i,e)}var Eo=I(()=>{});var xm,WC=I(()=>{xm=class{get underlyingResource(){return this._webGLTexture}constructor(e=null,t){if(this._MSAARenderBuffers=null,this._context=t,!e&&(e=t.createTexture(),!e))throw new Error("Unable to create webGL texture");this.set(e)}setUsage(){}set(e){this._webGLTexture=e}reset(){this._webGLTexture=null,this._MSAARenderBuffers=null}addMSAARenderBuffer(e){this._MSAARenderBuffers||(this._MSAARenderBuffers=[]),this._MSAARenderBuffers.push(e)}releaseMSAARenderBuffers(){if(this._MSAARenderBuffers){for(let e of this._MSAARenderBuffers)this._context.deleteRenderbuffer(e);this._MSAARenderBuffers=null}}getMSAARenderBuffer(e=0){var t,i;return(i=(t=this._MSAARenderBuffers)==null?void 0:t[e])!=null?i:null}release(){this.releaseMSAARenderBuffers(),this._webGLTexture&&this._context.deleteTexture(this._webGLTexture),this.reset()}}});function HC(n){return n===13||n===14||n===15||n===16||n===17||n===18||n===19}function ic(n){return n===13||n===17||n===18||n===19}var Dg=I(()=>{});var nV={};Fe(nV,{ThinEngine:()=>bt});var zC,bt,vs=I(()=>{lh();CC();zr();VC();Lt();Oa();tV();iV();rx();Eo();WC();Ws();bf();FC();Dg();UC();zC=class{},bt=class n extends Re{get name(){return this._name}set name(e){this._name=e}get version(){return this._webGLVersion}static get ShadersRepository(){return hr.ShadersRepository}static set ShadersRepository(e){hr.ShadersRepository=e}get supportsUniformBuffers(){return this.webGLVersion>1&&!this.disableUniformBuffers}get needPOTTextures(){return this._webGLVersion<2||this.forcePOTTextures}get _supportsHardwareTextureRescaling(){return!1}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e}snapshotRenderingReset(){this.snapshotRendering=!1}constructor(e,t,i,r){if(i=i||{},super(t!=null?t:i.antialias,i,r),this._name="WebGL",this.forcePOTTextures=!1,this.validateShaderPrograms=!1,this.disableUniformBuffers=!1,this._webGLVersion=1,this._vertexAttribArraysEnabled=[],this._uintIndicesCurrentlySet=!1,this._currentBoundBuffer=new Array,this._currentFramebuffer=null,this._dummyFramebuffer=null,this._currentBufferPointers=new Array,this._currentInstanceLocations=new Array,this._currentInstanceBuffers=new Array,this._vaoRecordInProgress=!1,this._mustWipeVertexAttributes=!1,this._nextFreeTextureSlots=new Array,this._maxSimultaneousTextures=0,this._maxMSAASamplesOverride=null,this._unpackFlipYCached=null,this.enableUnpackFlipYCached=!0,this._boundUniforms={},!e)return;let s;if(e.getContext){if(s=e,i.preserveDrawingBuffer===void 0&&(i.preserveDrawingBuffer=!1),i.xrCompatible===void 0&&(i.xrCompatible=!1),navigator&&navigator.userAgent){this._setupMobileChecks();let l=navigator.userAgent;for(let c of n.ExceptionList){let f=c.key,d=c.targets;if(new RegExp(f).test(l)){if(c.capture&&c.captureConstraint){let u=c.capture,m=c.captureConstraint,p=new RegExp(u).exec(l);if(p&&p.length>0&&parseInt(p[p.length-1])>=m)continue}for(let u of d)switch(u){case"uniformBuffer":this.disableUniformBuffers=!0;break;case"vao":this.disableVertexArrayObjects=!0;break;case"antialias":i.antialias=!1;break;case"maxMSAASamples":this._maxMSAASamplesOverride=1;break}}}}if(this._doNotHandleContextLost?this._onContextLost=()=>{UA(this._gl)}:(this._onContextLost=l=>{l.preventDefault(),this._contextWasLost=!0,UA(this._gl),ee.Warn("WebGL context lost."),this.onContextLostObservable.notifyObservers(this)},this._onContextRestored=()=>{this._restoreEngineAfterContextLost(()=>this._initGLContext())},s.addEventListener("webglcontextrestored",this._onContextRestored,!1),i.powerPreference=i.powerPreference||"high-performance"),s.addEventListener("webglcontextlost",this._onContextLost,!1),this._badDesktopOS&&(i.xrCompatible=!1),!i.disableWebGL2Support)try{this._gl=s.getContext("webgl2",i)||s.getContext("experimental-webgl2",i),this._gl&&(this._webGLVersion=2,this._shaderPlatformName="WEBGL2",this._gl.deleteQuery||(this._webGLVersion=1,this._shaderPlatformName="WEBGL1"))}catch(l){}if(!this._gl){if(!s)throw new Error("The provided canvas is null or undefined.");try{this._gl=s.getContext("webgl",i)||s.getContext("experimental-webgl",i)}catch(l){throw new Error("WebGL not supported",{cause:l})}}if(!this._gl)throw new Error("WebGL not supported")}else{this._gl=e,s=this._gl.canvas,this._gl.renderbufferStorageMultisample?(this._webGLVersion=2,this._shaderPlatformName="WEBGL2"):this._shaderPlatformName="WEBGL1";let l=this._gl.getContextAttributes();l&&(i.stencil=l.stencil)}this._sharedInit(s),this._gl.pixelStorei(this._gl.UNPACK_COLORSPACE_CONVERSION_WEBGL,this._gl.NONE),i.useHighPrecisionFloats!==void 0&&(this._highPrecisionShadersAllowed=i.useHighPrecisionFloats),this.resize(),this._initGLContext(),this._initFeatures();for(let l=0;l1?new ix:new tx;let a=`Babylon.js v${n.Version}`;ee.Log(a+` - ${this.description}`),this._renderingCanvas&&this._renderingCanvas.setAttribute&&this._renderingCanvas.setAttribute("data-engine",a);let o=Yn(this._gl);o.validateShaderPrograms=this.validateShaderPrograms,o.parallelShaderCompile=this._caps.parallelShaderCompile}_clearEmptyResources(){this._dummyFramebuffer=null,super._clearEmptyResources()}_getShaderProcessingContext(e){return null}areAllEffectsReady(){for(let e in this._compiledEffects)if(!this._compiledEffects[e].isReady())return!1;return!0}_initGLContext(){var i;this._caps={maxTexturesImageUnits:this._gl.getParameter(this._gl.MAX_TEXTURE_IMAGE_UNITS),maxCombinedTexturesImageUnits:this._gl.getParameter(this._gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS),maxVertexTextureImageUnits:this._gl.getParameter(this._gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS),maxTextureSize:this._gl.getParameter(this._gl.MAX_TEXTURE_SIZE),maxSamples:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_SAMPLES):1,maxCubemapTextureSize:this._gl.getParameter(this._gl.MAX_CUBE_MAP_TEXTURE_SIZE),maxRenderTextureSize:this._gl.getParameter(this._gl.MAX_RENDERBUFFER_SIZE),maxVertexAttribs:this._gl.getParameter(this._gl.MAX_VERTEX_ATTRIBS),maxVaryingVectors:this._gl.getParameter(this._gl.MAX_VARYING_VECTORS),maxFragmentUniformVectors:this._gl.getParameter(this._gl.MAX_FRAGMENT_UNIFORM_VECTORS),maxVertexUniformVectors:this._gl.getParameter(this._gl.MAX_VERTEX_UNIFORM_VECTORS),shaderFloatPrecision:0,parallelShaderCompile:this._gl.getExtension("KHR_parallel_shader_compile")||void 0,standardDerivatives:this._webGLVersion>1||this._gl.getExtension("OES_standard_derivatives")!==null,maxAnisotropy:1,astc:this._gl.getExtension("WEBGL_compressed_texture_astc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_astc"),bptc:this._gl.getExtension("EXT_texture_compression_bptc")||this._gl.getExtension("WEBKIT_EXT_texture_compression_bptc"),s3tc:this._gl.getExtension("WEBGL_compressed_texture_s3tc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc"),s3tc_srgb:this._gl.getExtension("WEBGL_compressed_texture_s3tc_srgb")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc_srgb"),pvrtc:this._gl.getExtension("WEBGL_compressed_texture_pvrtc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc"),etc1:this._gl.getExtension("WEBGL_compressed_texture_etc1")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc1"),etc2:this._gl.getExtension("WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBKIT_WEBGL_compressed_texture_etc")||this._gl.getExtension("WEBGL_compressed_texture_es3_0"),textureAnisotropicFilterExtension:this._gl.getExtension("EXT_texture_filter_anisotropic")||this._gl.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||this._gl.getExtension("MOZ_EXT_texture_filter_anisotropic"),uintIndices:this._webGLVersion>1||this._gl.getExtension("OES_element_index_uint")!==null,fragmentDepthSupported:this._webGLVersion>1||this._gl.getExtension("EXT_frag_depth")!==null,highPrecisionShaderSupported:!1,timerQuery:this._gl.getExtension("EXT_disjoint_timer_query_webgl2")||this._gl.getExtension("EXT_disjoint_timer_query"),supportOcclusionQuery:this._webGLVersion>1,canUseTimestampForTimerQuery:!1,drawBuffersExtension:!1,maxMSAASamples:1,colorBufferFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_float")),blendFloat:this._gl.getExtension("EXT_float_blend")!==null,supportFloatTexturesResolve:!1,rg11b10ufColorRenderable:!1,colorBufferHalfFloat:!!(this._webGLVersion>1&&this._gl.getExtension("EXT_color_buffer_half_float")),textureFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_float")),textureHalfFloat:!!(this._webGLVersion>1||this._gl.getExtension("OES_texture_half_float")),textureHalfFloatRender:!1,textureFloatLinearFiltering:!1,textureFloatRender:!1,textureHalfFloatLinearFiltering:!1,vertexArrayObject:!1,instancedArrays:!1,textureLOD:!!(this._webGLVersion>1||this._gl.getExtension("EXT_shader_texture_lod")),texelFetch:this._webGLVersion!==1,blendMinMax:!1,multiview:this._gl.getExtension("OVR_multiview2"),oculusMultiview:this._gl.getExtension("OCULUS_multiview"),depthTextureExtension:!1,canUseGLInstanceID:this._webGLVersion>1,canUseGLVertexID:this._webGLVersion>1,supportComputeShaders:!1,supportSRGBBuffers:!1,supportTransformFeedbacks:this._webGLVersion>1,textureMaxLevel:this._webGLVersion>1,texture2DArrayMaxLayerCount:this._webGLVersion>1?this._gl.getParameter(this._gl.MAX_ARRAY_TEXTURE_LAYERS):128,disableMorphTargetTexture:!1,textureNorm16:!!this._gl.getExtension("EXT_texture_norm16"),blendParametersPerTarget:!1,dualSourceBlending:!1,supportReadWriteStorageTextures:!1},this._caps.supportFloatTexturesResolve=this._caps.colorBufferFloat,this._caps.rg11b10ufColorRenderable=this._caps.colorBufferFloat,this._glVersion=this._gl.getParameter(this._gl.VERSION);let e=this._gl.getExtension("WEBGL_debug_renderer_info");e!=null&&(this._glRenderer=this._gl.getParameter(e.UNMASKED_RENDERER_WEBGL),this._glVendor=this._gl.getParameter(e.UNMASKED_VENDOR_WEBGL)),this._glVendor||(this._glVendor=this._gl.getParameter(this._gl.VENDOR)||"Unknown vendor"),this._glRenderer||(this._glRenderer=this._gl.getParameter(this._gl.RENDERER)||"Unknown renderer"),this._gl.HALF_FLOAT_OES!==36193&&(this._gl.HALF_FLOAT_OES=36193),this._gl.RGBA16F!==34842&&(this._gl.RGBA16F=34842),this._gl.RGBA32F!==34836&&(this._gl.RGBA32F=34836),this._gl.DEPTH24_STENCIL8!==35056&&(this._gl.DEPTH24_STENCIL8=35056),this._caps.timerQuery&&(this._webGLVersion===1&&(this._gl.getQuery=this._caps.timerQuery.getQueryEXT.bind(this._caps.timerQuery)),this._caps.canUseTimestampForTimerQuery=((i=this._gl.getQuery(this._caps.timerQuery.TIMESTAMP_EXT,this._caps.timerQuery.QUERY_COUNTER_BITS_EXT))!=null?i:0)>0),this._caps.maxAnisotropy=this._caps.textureAnisotropicFilterExtension?this._gl.getParameter(this._caps.textureAnisotropicFilterExtension.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,this._caps.textureFloatLinearFiltering=!!(this._caps.textureFloat&&this._gl.getExtension("OES_texture_float_linear")),this._caps.textureFloatRender=!!(this._caps.textureFloat&&this._canRenderToFloatFramebuffer()),this._caps.textureHalfFloatLinearFiltering=!!(this._webGLVersion>1||this._caps.textureHalfFloat&&this._gl.getExtension("OES_texture_half_float_linear")),this._caps.textureNorm16&&(this._gl.R16_EXT=33322,this._gl.RG16_EXT=33324,this._gl.RGB16_EXT=32852,this._gl.RGBA16_EXT=32859,this._gl.R16_SNORM_EXT=36760,this._gl.RG16_SNORM_EXT=36761,this._gl.RGB16_SNORM_EXT=36762,this._gl.RGBA16_SNORM_EXT=36763);let t=this._gl.getExtension("OES_draw_buffers_indexed");if(this._caps.blendParametersPerTarget=!!t,this._alphaState=new Am(this._caps.blendParametersPerTarget),t&&(this._gl.blendEquationSeparateIndexed=t.blendEquationSeparateiOES.bind(t),this._gl.blendEquationIndexed=t.blendEquationiOES.bind(t),this._gl.blendFuncSeparateIndexed=t.blendFuncSeparateiOES.bind(t),this._gl.blendFuncIndexed=t.blendFunciOES.bind(t),this._gl.colorMaskIndexed=t.colorMaskiOES.bind(t),this._gl.disableIndexed=t.disableiOES.bind(t),this._gl.enableIndexed=t.enableiOES.bind(t)),this._caps.dualSourceBlending=!!this._gl.getExtension("WEBGL_blend_func_extended"),this._caps.astc&&(this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR,this._gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=this._caps.astc.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR),this._caps.bptc&&(this._gl.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT=this._caps.bptc.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT),this._caps.s3tc_srgb&&(this._gl.COMPRESSED_SRGB_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,this._gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=this._caps.s3tc_srgb.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT),this._caps.etc2&&(this._gl.COMPRESSED_SRGB8_ETC2=this._caps.etc2.COMPRESSED_SRGB8_ETC2,this._gl.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=this._caps.etc2.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC),this._webGLVersion>1&&this._gl.HALF_FLOAT_OES!==5131&&(this._gl.HALF_FLOAT_OES=5131),this._caps.textureHalfFloatRender=this._caps.textureHalfFloat&&this._canRenderToHalfFloatFramebuffer(),this._webGLVersion>1)this._caps.drawBuffersExtension=!0,this._caps.maxMSAASamples=this._maxMSAASamplesOverride!==null?this._maxMSAASamplesOverride:this._gl.getParameter(this._gl.MAX_SAMPLES),this._caps.maxDrawBuffers=this._gl.getParameter(this._gl.MAX_DRAW_BUFFERS);else{let r=this._gl.getExtension("WEBGL_draw_buffers");if(r!==null){this._caps.drawBuffersExtension=!0,this._gl.drawBuffers=r.drawBuffersWEBGL.bind(r),this._caps.maxDrawBuffers=this._gl.getParameter(r.MAX_DRAW_BUFFERS_WEBGL),this._gl.DRAW_FRAMEBUFFER=this._gl.FRAMEBUFFER;for(let s=0;s<16;s++)this._gl["COLOR_ATTACHMENT"+s+"_WEBGL"]=r["COLOR_ATTACHMENT"+s+"_WEBGL"]}}if(this._webGLVersion>1)this._caps.depthTextureExtension=!0;else{let r=this._gl.getExtension("WEBGL_depth_texture");r!=null&&(this._caps.depthTextureExtension=!0,this._gl.UNSIGNED_INT_24_8=r.UNSIGNED_INT_24_8_WEBGL)}if(this.disableVertexArrayObjects)this._caps.vertexArrayObject=!1;else if(this._webGLVersion>1)this._caps.vertexArrayObject=!0;else{let r=this._gl.getExtension("OES_vertex_array_object");r!=null&&(this._caps.vertexArrayObject=!0,this._gl.createVertexArray=r.createVertexArrayOES.bind(r),this._gl.bindVertexArray=r.bindVertexArrayOES.bind(r),this._gl.deleteVertexArray=r.deleteVertexArrayOES.bind(r))}if(this._webGLVersion>1)this._caps.instancedArrays=!0;else{let r=this._gl.getExtension("ANGLE_instanced_arrays");r!=null?(this._caps.instancedArrays=!0,this._gl.drawArraysInstanced=r.drawArraysInstancedANGLE.bind(r),this._gl.drawElementsInstanced=r.drawElementsInstancedANGLE.bind(r),this._gl.vertexAttribDivisor=r.vertexAttribDivisorANGLE.bind(r)):this._caps.instancedArrays=!1}if(this._gl.getShaderPrecisionFormat){let r=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.HIGH_FLOAT),s=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.HIGH_FLOAT);if(r&&s&&(this._caps.highPrecisionShaderSupported=r.precision!==0&&s.precision!==0,this._caps.shaderFloatPrecision=Math.min(r.precision,s.precision)),!this._shouldUseHighPrecisionShader){let a=this._gl.getShaderPrecisionFormat(this._gl.VERTEX_SHADER,this._gl.MEDIUM_FLOAT),o=this._gl.getShaderPrecisionFormat(this._gl.FRAGMENT_SHADER,this._gl.MEDIUM_FLOAT);a&&o&&(this._caps.shaderFloatPrecision=Math.min(a.precision,o.precision))}this._caps.shaderFloatPrecision<10&&(this._caps.shaderFloatPrecision=10)}if(this._webGLVersion>1)this._caps.blendMinMax=!0;else{let r=this._gl.getExtension("EXT_blend_minmax");r!=null&&(this._caps.blendMinMax=!0,this._gl.MAX=r.MAX_EXT,this._gl.MIN=r.MIN_EXT)}if(!this._caps.supportSRGBBuffers){if(this._webGLVersion>1)this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:WebGL2RenderingContext.SRGB,SRGB8:WebGL2RenderingContext.SRGB8,SRGB8_ALPHA8:WebGL2RenderingContext.SRGB8_ALPHA8};else{let r=this._gl.getExtension("EXT_sRGB");r!=null&&(this._caps.supportSRGBBuffers=!0,this._glSRGBExtensionValues={SRGB:r.SRGB_EXT,SRGB8:r.SRGB_ALPHA_EXT,SRGB8_ALPHA8:r.SRGB_ALPHA_EXT})}if(this._creationOptions){let r=this._creationOptions.forceSRGBBufferSupportState;r!==void 0&&(this._caps.supportSRGBBuffers=this._caps.supportSRGBBuffers&&r)}}this._depthCullingState.depthTest=!0,this._depthCullingState.depthFunc=this._gl.LEQUAL,this._depthCullingState.depthMask=!0,this._maxSimultaneousTextures=this._caps.maxCombinedTexturesImageUnits;for(let r=0;r=65535)return new Uint32Array(e);return new Uint16Array(e)}return new Uint16Array(e)}bindArrayBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ARRAY_BUFFER)}bindUniformBlock(e,t,i){let r=e.program,s=this._gl.getUniformBlockIndex(r,t);this._gl.uniformBlockBinding(r,s,i)}bindIndexBuffer(e){this._vaoRecordInProgress||this._unbindVertexArrayObject(),this._bindBuffer(e,this._gl.ELEMENT_ARRAY_BUFFER)}_bindBuffer(e,t){(this._vaoRecordInProgress||this._currentBoundBuffer[t]!==e)&&(this._gl.bindBuffer(t,e?e.underlyingResource:null),this._currentBoundBuffer[t]=e)}updateArrayBuffer(e){this._gl.bufferSubData(this._gl.ARRAY_BUFFER,0,e)}_vertexAttribPointer(e,t,i,r,s,a,o){let l=this._currentBufferPointers[t];if(!l)return;let c=!1;l.active?(l.buffer!==e&&(l.buffer=e,c=!0),l.size!==i&&(l.size=i,c=!0),l.type!==r&&(l.type=r,c=!0),l.normalized!==s&&(l.normalized=s,c=!0),l.stride!==a&&(l.stride=a,c=!0),l.offset!==o&&(l.offset=o,c=!0)):(c=!0,l.active=!0,l.index=t,l.size=i,l.type=r,l.normalized=s,l.stride=a,l.offset=o,l.buffer=e),(c||this._vaoRecordInProgress)&&(this.bindArrayBuffer(e),r===this._gl.UNSIGNED_INT||r===this._gl.INT?this._gl.vertexAttribIPointer(t,i,r,a,o):this._gl.vertexAttribPointer(t,i,r,s,a,o))}_bindIndexBufferWithCache(e){e!=null&&this._cachedIndexBuffer!==e&&(this._cachedIndexBuffer=e,this.bindIndexBuffer(e),this._uintIndicesCurrentlySet=e.is32Bits)}_bindVertexBuffersAttributes(e,t,i){let r=t.getAttributesNames();this._vaoRecordInProgress||this._unbindVertexArrayObject(),this.unbindAllAttributes();for(let s=0;s=0){let o=r[s],l=null;if(i&&(l=i[o]),l||(l=e[o]),!l)continue;this._gl.enableVertexAttribArray(a),this._vaoRecordInProgress||(this._vertexAttribArraysEnabled[a]=!0);let c=l.getBuffer();c&&(this._vertexAttribPointer(c,a,l.getSize(),l.type,l.normalized,l.byteStride,l.byteOffset),l.getIsInstanced()&&(this._gl.vertexAttribDivisor(a,l.getInstanceDivisor()),this._vaoRecordInProgress||(this._currentInstanceLocations.push(a),this._currentInstanceBuffers.push(c))))}}}recordVertexArrayObject(e,t,i,r){let s=this._gl.createVertexArray();if(!s)throw new Error("Unable to create VAO");return this._vaoRecordInProgress=!0,this._gl.bindVertexArray(s),this._mustWipeVertexAttributes=!0,this._bindVertexBuffersAttributes(e,i,r),this.bindIndexBuffer(t),this._vaoRecordInProgress=!1,this._gl.bindVertexArray(null),s}bindVertexArrayObject(e,t){this._cachedVertexArrayObject!==e&&(this._cachedVertexArrayObject=e,this._gl.bindVertexArray(e),this._cachedVertexBuffers=null,this._cachedIndexBuffer=null,this._uintIndicesCurrentlySet=t!=null&&t.is32Bits,this._mustWipeVertexAttributes=!0)}bindBuffersDirectly(e,t,i,r,s){if(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==s){this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=s;let a=s.getAttributesCount();this._unbindVertexArrayObject(),this.unbindAllAttributes();let o=0;for(let l=0;l=0&&(this._gl.enableVertexAttribArray(c),this._vertexAttribArraysEnabled[c]=!0,this._vertexAttribPointer(e,c,i[l],this._gl.FLOAT,!1,r,o)),o+=i[l]*4}}this._bindIndexBufferWithCache(t)}_unbindVertexArrayObject(){this._cachedVertexArrayObject&&(this._cachedVertexArrayObject=null,this._gl.bindVertexArray(null))}bindBuffers(e,t,i,r){(this._cachedVertexBuffers!==e||this._cachedEffectForVertexBuffers!==i)&&(this._cachedVertexBuffers=e,this._cachedEffectForVertexBuffers=i,this._bindVertexBuffersAttributes(e,i,r)),this._bindIndexBufferWithCache(t)}unbindInstanceAttributes(){let e;for(let t=0,i=this._currentInstanceLocations.length;t1||this.isWebGPU)),(o===1&&!this._caps.textureFloatLinearFiltering||o===2&&!this._caps.textureHalfFloatLinearFiltering)&&(l=1),o===1&&!this._caps.textureFloat&&(o=0,ee.Warn("Float textures are not supported. Type forced to TEXTURETYPE_UNSIGNED_BYTE"));let p=HC(c),g=ic(c),v=this._gl,T=new Vi(this,r),S=e.width||e,E=e.height||e,A=e.depth||0,R=e.layers||0,M=this._getSamplingParameters(l,(s||a)&&!p),y=R!==0?v.TEXTURE_2D_ARRAY:A!==0?v.TEXTURE_3D:_?v.TEXTURE_CUBE_MAP:v.TEXTURE_2D,C=p?this._getInternalFormatFromDepthTextureFormat(c,!0,g):this._getRGBABufferInternalSizedFormat(o,c,f),D=p?g?v.DEPTH_STENCIL:v.DEPTH_COMPONENT:this._getInternalFormat(c),w=p?this._getWebGLTextureTypeFromDepthTextureFormat(c):this._getWebGLTextureType(o);if(this._bindTextureDirectly(y,T),R!==0)T.is2DArray=!0,v.texImage3D(y,0,C,S,E,R,0,D,w,null);else if(A!==0)T.is3D=!0,v.texImage3D(y,0,C,S,E,A,0,D,w,null);else if(_){T.isCube=!0;for(let O=0;O<6;O++)v.texImage2D(v.TEXTURE_CUBE_MAP_POSITIVE_X+O,0,C,S,E,0,D,w,null)}else v.texImage2D(y,0,C,S,E,0,D,w,null);if(v.texParameteri(y,v.TEXTURE_MAG_FILTER,M.mag),v.texParameteri(y,v.TEXTURE_MIN_FILTER,M.min),v.texParameteri(y,v.TEXTURE_WRAP_S,v.CLAMP_TO_EDGE),v.texParameteri(y,v.TEXTURE_WRAP_T,v.CLAMP_TO_EDGE),p&&this.webGLVersion>1&&(m===0?(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,515),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.NONE)):(v.texParameteri(y,v.TEXTURE_COMPARE_FUNC,m),v.texParameteri(y,v.TEXTURE_COMPARE_MODE,v.COMPARE_REF_TO_TEXTURE))),(s||a)&&this._gl.generateMipmap(y),this._bindTextureDirectly(y,null),T._useSRGBBuffer=f,T.baseWidth=S,T.baseHeight=E,T.width=S,T.height=E,T.depth=R||A,T.isReady=!0,T.samples=d,T.generateMipMaps=s,T.samplingMode=l,T.type=o,T.format=c,T.label=h,T.comparisonFunction=m,this._internalTexturesCache.push(T),u){let O;if(HC(T.format)?O=this._setupFramebufferDepthAttachments(ic(T.format),T.format!==19,T.width,T.height,d,T.format,!0):O=this._createRenderBuffer(T.width,T.height,d,-1,this._getRGBABufferInternalSizedFormat(T.type,T.format,T._useSRGBBuffer),-1),!O)throw new Error("Unable to create render buffer");T._autoMSAAManagement=!0;let N=T._hardwareTexture;N||(N=T._hardwareTexture=this._createHardwareTexture()),N.addMSAARenderBuffer(O)}return T}_getUseSRGBBuffer(e,t){return e&&this._caps.supportSRGBBuffers&&(this.webGLVersion>1||t)}createTexture(e,t,i,r,s=3,a=null,o=null,l=null,c=null,f=null,d=null,h,u,m,_){return this._createTextureBase(e,t,i,r,s,a,o,(...p)=>this._prepareWebGLTexture(...p,f),(p,g,v,T,S,E)=>{let A=this._gl,R=v.width===p&&v.height===g;S._creationFlags=m!=null?m:0;let M=this._getTexImageParametersForCreateTexture(S.format,S._useSRGBBuffer);if(R)return A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),!1;let y=this._caps.maxTextureSize;if(v.width>y||v.height>y||!this._supportsHardwareTextureRescaling)return this._prepareWorkingCanvas(),!this._workingCanvas||!this._workingContext||(this._workingCanvas.width=p,this._workingCanvas.height=g,this._workingContext.drawImage(v,0,0,v.width,v.height,0,0,p,g),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,this._workingCanvas),S.width=p,S.height=g),!1;{let C=new Vi(this,2);this._bindTextureDirectly(A.TEXTURE_2D,C,!0),A.texImage2D(A.TEXTURE_2D,0,M.internalFormat,M.format,M.type,v),this._rescaleTexture(C,S,r,M.format,()=>{this._releaseTexture(C),this._bindTextureDirectly(A.TEXTURE_2D,S,!0),E()})}return!0},l,c,f,d,h,u,_)}_getTexImageParametersForCreateTexture(e,t){let i,r;return this.webGLVersion===1?(i=this._getInternalFormat(e,t),r=i):(i=this._getInternalFormat(e,!1),r=this._getRGBABufferInternalSizedFormat(0,e,t)),{internalFormat:r,format:i,type:this._gl.UNSIGNED_BYTE}}_rescaleTexture(e,t,i,r,s){}_unpackFlipY(e){this._unpackFlipYCached!==e&&(this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,e?1:0),this.enableUnpackFlipYCached&&(this._unpackFlipYCached=e))}_getUnpackAlignement(){return this._gl.getParameter(this._gl.UNPACK_ALIGNMENT)}_getTextureTarget(e){return e.isCube?this._gl.TEXTURE_CUBE_MAP:e.is3D?this._gl.TEXTURE_3D:e.is2DArray||e.isMultiview?this._gl.TEXTURE_2D_ARRAY:this._gl.TEXTURE_2D}updateTextureSamplingMode(e,t,i=!1){let r=this._getTextureTarget(t),s=this._getSamplingParameters(e,t.useMipMaps||i);this._setTextureParameterInteger(r,this._gl.TEXTURE_MAG_FILTER,s.mag,t),this._setTextureParameterInteger(r,this._gl.TEXTURE_MIN_FILTER,s.min),i&&s.hasMipMaps&&(t.generateMipMaps=!0,this._gl.generateMipmap(r)),this._bindTextureDirectly(r,null),t.samplingMode=e}updateTextureDimensions(e,t,i,r=1){}updateTextureWrappingMode(e,t,i=null,r=null){let s=this._getTextureTarget(e);t!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t),e),e._cachedWrapU=t),i!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(i),e),e._cachedWrapV=i),(e.is2DArray||e.is3D)&&r!==null&&(this._setTextureParameterInteger(s,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(r),e),e._cachedWrapR=r),this._bindTextureDirectly(s,null)}_uploadCompressedDataToTextureDirectly(e,t,i,r,s,a=0,o=0){let l=this._gl,c=l.TEXTURE_2D;if(e.isCube&&(c=l.TEXTURE_CUBE_MAP_POSITIVE_X+a),e._useSRGBBuffer)switch(t){case 37492:case 36196:this._caps.etc2?t=l.COMPRESSED_SRGB8_ETC2:e._useSRGBBuffer=!1;break;case 37496:this._caps.etc2?t=l.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:e._useSRGBBuffer=!1;break;case 36492:t=l.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;break;case 37808:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;break;case 37809:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR;break;case 37810:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR;break;case 37811:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR;break;case 37812:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR;break;case 37813:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR;break;case 37814:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR;break;case 37815:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR;break;case 37816:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR;break;case 37817:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR;break;case 37818:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR;break;case 37819:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR;break;case 37820:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR;break;case 37821:t=l.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR;break;case 33776:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33777:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:e._useSRGBBuffer=!1;break;case 33779:this._caps.s3tc_srgb?t=l.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:e._useSRGBBuffer=!1;break;default:e._useSRGBBuffer=!1;break}if(e.generateMipMaps){let f=e._hardwareTexture;f.memoryAllocated||(l.texStorage2D(e.isCube?l.TEXTURE_CUBE_MAP:l.TEXTURE_2D,Math.floor(Math.log2(Math.max(i,r)))+1,t,e.width,e.height),f.memoryAllocated=!0),this._gl.compressedTexSubImage2D(c,o,0,0,i,r,t,s)}else this._gl.compressedTexImage2D(c,o,t,i,r,0,s)}_uploadDataToTextureDirectly(e,t,i=0,r=0,s,a=!1){let o=this._gl,l=this._getWebGLTextureType(e.type),c=this._getInternalFormat(e.format),f=s===void 0?this._getRGBABufferInternalSizedFormat(e.type,e.format,e._useSRGBBuffer):this._getInternalFormat(s,e._useSRGBBuffer);this._unpackFlipY(e.invertY);let d=o.TEXTURE_2D;e.isCube&&(d=o.TEXTURE_CUBE_MAP_POSITIVE_X+i);let h=Math.round(Math.log(e.width)*Math.LOG2E),u=Math.round(Math.log(e.height)*Math.LOG2E),m=a?e.width:Math.pow(2,Math.max(h-r,0)),_=a?e.height:Math.pow(2,Math.max(u-r,0));o.texImage2D(d,r,f,m,_,0,c,l,t)}updateTextureData(e,t,i,r,s,a,o=0,l=0,c=!1){let f=this._gl,d=this._getWebGLTextureType(e.type),h=this._getInternalFormat(e.format);this._unpackFlipY(e.invertY);let u=f.TEXTURE_2D,m=f.TEXTURE_2D;e.isCube&&(m=f.TEXTURE_CUBE_MAP_POSITIVE_X+o,u=f.TEXTURE_CUBE_MAP),this._bindTextureDirectly(u,e,!0),f.texSubImage2D(m,l,i,r,s,a,h,d,t),c&&this._gl.generateMipmap(m),this._bindTextureDirectly(u,null)}_uploadArrayBufferViewToTexture(e,t,i=0,r=0){let s=this._gl,a=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(a,e,!0),this._uploadDataToTextureDirectly(e,t,i,r),this._bindTextureDirectly(a,null,!0)}_prepareWebGLTextureContinuation(e,t,i,r,s){let a=this._gl;if(!a)return;let o=this._getSamplingParameters(s,!i);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,o.mag),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,o.min),!i&&!r&&a.generateMipmap(a.TEXTURE_2D),this._bindTextureDirectly(a.TEXTURE_2D,null),t&&t.removePendingData(e),e.onLoadedObservable.notifyObservers(e),e.onLoadedObservable.clear()}_prepareWebGLTexture(e,t,i,r,s,a,o,l,c,f){let d=this.getCaps().maxTextureSize,h=Math.min(d,this.needPOTTextures?Cn(r.width,d):r.width),u=Math.min(d,this.needPOTTextures?Cn(r.height,d):r.height),m=this._gl;if(m){if(!e._hardwareTexture){i&&i.removePendingData(e);return}this._bindTextureDirectly(m.TEXTURE_2D,e,!0),this._unpackFlipY(s===void 0?!0:!!s),e.baseWidth=r.width,e.baseHeight=r.height,e.width=h,e.height=u,e.isReady=!0,e.type=e.type!==-1?e.type:0,e.format=e.format!==-1?e.format:f!=null?f:t===".jpg"&&!e._useSRGBBuffer?4:5,!l(h,u,r,t,e,()=>{this._prepareWebGLTextureContinuation(e,i,a,o,c)})&&this._prepareWebGLTextureContinuation(e,i,a,o,c)}}_getInternalFormatFromDepthTextureFormat(e,t,i){let r=this._gl;if(!t)return r.STENCIL_INDEX8;let a=i?r.DEPTH_STENCIL:r.DEPTH_COMPONENT;return this.webGLVersion>1?e===15?a=r.DEPTH_COMPONENT16:e===16?a=r.DEPTH_COMPONENT24:e===17||e===13?a=i?r.DEPTH24_STENCIL8:r.DEPTH_COMPONENT24:e===14?a=r.DEPTH_COMPONENT32F:e===18&&(a=i?r.DEPTH32F_STENCIL8:r.DEPTH_COMPONENT32F):a=r.DEPTH_COMPONENT16,a}_getWebGLTextureTypeFromDepthTextureFormat(e){let t=this._gl,i=t.UNSIGNED_INT;return e===15?i=t.UNSIGNED_SHORT:e===17||e===13?i=t.UNSIGNED_INT_24_8:e===14?i=t.FLOAT:e===18?i=t.FLOAT_32_UNSIGNED_INT_24_8_REV:e===19&&(i=t.UNSIGNED_BYTE),i}_setupFramebufferDepthAttachments(e,t,i,r,s=1,a,o=!1){let l=this._gl;a=a!=null?a:e?13:14;let c=this._getInternalFormatFromDepthTextureFormat(a,t,e);return e&&t?this._createRenderBuffer(i,r,s,l.DEPTH_STENCIL,c,o?-1:l.DEPTH_STENCIL_ATTACHMENT):t?this._createRenderBuffer(i,r,s,c,c,o?-1:l.DEPTH_ATTACHMENT):e?this._createRenderBuffer(i,r,s,c,c,o?-1:l.STENCIL_ATTACHMENT):null}_createRenderBuffer(e,t,i,r,s,a,o=!0){let c=this._gl.createRenderbuffer();return this._updateRenderBuffer(c,e,t,i,r,s,a,o)}_updateRenderBuffer(e,t,i,r,s,a,o,l=!0){let c=this._gl;return c.bindRenderbuffer(c.RENDERBUFFER,e),r>1&&c.renderbufferStorageMultisample?c.renderbufferStorageMultisample(c.RENDERBUFFER,r,a,t,i):c.renderbufferStorage(c.RENDERBUFFER,s,t,i),o!==-1&&c.framebufferRenderbuffer(c.FRAMEBUFFER,o,c.RENDERBUFFER,e),l&&c.bindRenderbuffer(c.RENDERBUFFER,null),e}_releaseTexture(e){this._deleteTexture(e._hardwareTexture),this.unbindAllTextures();let t=this._internalTexturesCache.indexOf(e);t!==-1&&this._internalTexturesCache.splice(t,1),e._lodTextureHigh&&e._lodTextureHigh.dispose(),e._lodTextureMid&&e._lodTextureMid.dispose(),e._lodTextureLow&&e._lodTextureLow.dispose(),e._irradianceTexture&&e._irradianceTexture.dispose()}_deleteTexture(e){e==null||e.release()}_setProgram(e){this._currentProgram!==e&&(OU(e,this._gl),this._currentProgram=e)}bindSamplers(e){let t=e.getPipelineContext();this._setProgram(t.program);let i=e.getSamplers();for(let r=0;r-1;if(i&&a&&(this._activeChannel=t._associatedChannel),this._boundTexturesCache[this._activeChannel]!==t||r){if(this._activateCurrentTexture(),t&&t.isMultiview)throw ee.Error(["_bindTextureDirectly called with a multiview texture!",e,t]),"_bindTextureDirectly called with a multiview texture!";this._gl.bindTexture(e,(c=(l=t==null?void 0:t._hardwareTexture)==null?void 0:l.underlyingResource)!=null?c:null),this._boundTexturesCache[this._activeChannel]=t,t&&(t._associatedChannel=this._activeChannel)}else i&&(s=!0,this._activateCurrentTexture());return a&&!i&&this._bindSamplerUniformToChannel(t._associatedChannel,this._activeChannel),s}_bindTexture(e,t,i){if(e===void 0)return;t&&(t._associatedChannel=e),this._activeChannel=e;let r=t?this._getTextureTarget(t):this._gl.TEXTURE_2D;this._bindTextureDirectly(r,t)}unbindAllTextures(){for(let e=0;e1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))}setTexture(e,t,i,r){e!==void 0&&(t&&(this._boundUniforms[e]=t),this._setTexture(e,i))}_bindSamplerUniformToChannel(e,t){let i=this._boundUniforms[e];!i||i._currentState===t||(this._gl.uniform1i(i,t),i._currentState=t)}_getTextureWrapMode(e){switch(e){case 1:return this._gl.REPEAT;case 0:return this._gl.CLAMP_TO_EDGE;case 2:return this._gl.MIRRORED_REPEAT}return this._gl.REPEAT}_setTexture(e,t,i=!1,r=!1,s=""){if(!t)return this._boundTexturesCache[e]!=null&&(this._activeChannel=e,this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),this.webGLVersion>1&&(this._bindTextureDirectly(this._gl.TEXTURE_3D,null),this._bindTextureDirectly(this._gl.TEXTURE_2D_ARRAY,null))),!1;if(t.video){this._activeChannel=e;let c=t.getInternalTexture();c&&(c._associatedChannel=e),t.update()}else if(t.delayLoadState===4)return t.delayLoad(),!1;let a;r?a=t.depthStencilTexture:t.isReady()?a=t.getInternalTexture():t.isCube?a=this.emptyCubeTexture:t.is3D?a=this.emptyTexture3D:t.is2DArray?a=this.emptyTexture2DArray:a=this.emptyTexture,!i&&a&&(a._associatedChannel=e);let o=!0;this._boundTexturesCache[e]===a&&(i||this._bindSamplerUniformToChannel(a._associatedChannel,e),o=!1),this._activeChannel=e;let l=this._getTextureTarget(a);if(o&&this._bindTextureDirectly(l,a,i),a&&!a.isMultiview){if(a.isCube&&a._cachedCoordinatesMode!==t.coordinatesMode){a._cachedCoordinatesMode=t.coordinatesMode;let c=t.coordinatesMode!==3&&t.coordinatesMode!==5?1:0;t.wrapU=c,t.wrapV=c}a._cachedWrapU!==t.wrapU&&(a._cachedWrapU=t.wrapU,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_S,this._getTextureWrapMode(t.wrapU),a)),a._cachedWrapV!==t.wrapV&&(a._cachedWrapV=t.wrapV,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_T,this._getTextureWrapMode(t.wrapV),a)),a.is3D&&a._cachedWrapR!==t.wrapR&&(a._cachedWrapR=t.wrapR,this._setTextureParameterInteger(l,this._gl.TEXTURE_WRAP_R,this._getTextureWrapMode(t.wrapR),a)),this._setAnisotropicLevel(l,a,t.anisotropicFilteringLevel)}return!0}setTextureArray(e,t,i,r){if(!(e===void 0||!t)){(!this._textureUnits||this._textureUnits.length!==i.length)&&(this._textureUnits=new Int32Array(i.length));for(let s=0;s=this._caps.maxVertexAttribs||!this._vertexAttribArraysEnabled[e]||this.disableAttributeByIndex(e)}releaseEffects(){this._compiledEffects={},this.onReleaseEffectsObservable.notifyObservers(this)}dispose(){var e;Er()&&this._renderingCanvas&&(this._renderingCanvas.removeEventListener("webglcontextlost",this._onContextLost),this._onContextRestored&&this._renderingCanvas.removeEventListener("webglcontextrestored",this._onContextRestored)),super.dispose(),this._dummyFramebuffer&&this._gl.deleteFramebuffer(this._dummyFramebuffer),this.unbindAllAttributes(),this._boundUniforms={},this._workingCanvas=null,this._workingContext=null,this._currentBufferPointers.length=0,this._currentProgram=null,this._creationOptions.loseContextOnDispose&&((e=this._gl.getExtension("WEBGL_lose_context"))==null||e.loseContext()),UA(this._gl)}attachContextLostEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextlost",e,!1)}attachContextRestoredEvent(e){this._renderingCanvas&&this._renderingCanvas.addEventListener("webglcontextrestored",e,!1)}getError(){return this._gl.getError()}_canRenderToFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(1)}_canRenderToHalfFloatFramebuffer(){return this._webGLVersion>1?this._caps.colorBufferFloat:this._canRenderToFramebuffer(2)}_canRenderToFramebuffer(e){let t=this._gl;for(;t.getError()!==t.NO_ERROR;);let i=!0,r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r),t.texImage2D(t.TEXTURE_2D,0,this._getRGBABufferInternalSizedFormat(e),1,1,0,t.RGBA,this._getWebGLTextureType(e),null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST);let s=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,s),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);let a=t.checkFramebufferStatus(t.FRAMEBUFFER);if(i=i&&a===t.FRAMEBUFFER_COMPLETE,i=i&&t.getError()===t.NO_ERROR,i&&(t.clear(t.COLOR_BUFFER_BIT),i=i&&t.getError()===t.NO_ERROR),i){t.bindFramebuffer(t.FRAMEBUFFER,null);let o=t.RGBA,l=t.UNSIGNED_BYTE,c=new Uint8Array(4);t.readPixels(0,0,1,1,o,l,c),i=i&&t.getError()===t.NO_ERROR}for(t.deleteTexture(r),t.deleteFramebuffer(s),t.bindFramebuffer(t.FRAMEBUFFER,null);!i&&t.getError()!==t.NO_ERROR;);return i}_getWebGLTextureType(e){if(this._webGLVersion===1){switch(e){case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT_OES;case 0:return this._gl.UNSIGNED_BYTE;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5}return this._gl.UNSIGNED_BYTE}switch(e){case 3:return this._gl.BYTE;case 0:return this._gl.UNSIGNED_BYTE;case 4:return this._gl.SHORT;case 5:return this._gl.UNSIGNED_SHORT;case 6:return this._gl.INT;case 7:return this._gl.UNSIGNED_INT;case 1:return this._gl.FLOAT;case 2:return this._gl.HALF_FLOAT;case 8:return this._gl.UNSIGNED_SHORT_4_4_4_4;case 9:return this._gl.UNSIGNED_SHORT_5_5_5_1;case 10:return this._gl.UNSIGNED_SHORT_5_6_5;case 11:return this._gl.UNSIGNED_INT_2_10_10_10_REV;case 12:return this._gl.UNSIGNED_INT_24_8;case 13:return this._gl.UNSIGNED_INT_10F_11F_11F_REV;case 14:return this._gl.UNSIGNED_INT_5_9_9_9_REV;case 15:return this._gl.FLOAT_32_UNSIGNED_INT_24_8_REV}return this._gl.UNSIGNED_BYTE}_getInternalFormat(e,t=!1){let i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;switch(e){case 0:i=this._gl.ALPHA;break;case 1:i=this._gl.LUMINANCE;break;case 2:i=this._gl.LUMINANCE_ALPHA;break;case 6:case 33322:case 36760:i=this._gl.RED;break;case 7:case 33324:case 36761:i=this._gl.RG;break;case 4:case 32852:case 36762:i=t?this._glSRGBExtensionValues.SRGB:this._gl.RGB;break;case 5:case 32859:case 36763:i=t?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA;break}if(this._webGLVersion>1)switch(e){case 8:i=this._gl.RED_INTEGER;break;case 9:i=this._gl.RG_INTEGER;break;case 10:i=this._gl.RGB_INTEGER;break;case 11:i=this._gl.RGBA_INTEGER;break}return i}_getRGBABufferInternalSizedFormat(e,t,i=!1){if(this._webGLVersion===1){if(t!==void 0)switch(t){case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;case 4:return i?this._glSRGBExtensionValues.SRGB:this._gl.RGB}return this._gl.RGBA}switch(e){case 3:switch(t){case 6:return this._gl.R8_SNORM;case 7:return this._gl.RG8_SNORM;case 4:return this._gl.RGB8_SNORM;case 8:return this._gl.R8I;case 9:return this._gl.RG8I;case 10:return this._gl.RGB8I;case 11:return this._gl.RGBA8I;default:return this._gl.RGBA8_SNORM}case 0:switch(t){case 6:return this._gl.R8;case 7:return this._gl.RG8;case 4:return i?this._glSRGBExtensionValues.SRGB8:this._gl.RGB8;case 5:return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8;case 8:return this._gl.R8UI;case 9:return this._gl.RG8UI;case 10:return this._gl.RGB8UI;case 11:return this._gl.RGBA8UI;case 0:return this._gl.ALPHA;case 1:return this._gl.LUMINANCE;case 2:return this._gl.LUMINANCE_ALPHA;default:return this._gl.RGBA8}case 4:switch(t){case 8:return this._gl.R16I;case 36760:return this._gl.R16_SNORM_EXT;case 36761:return this._gl.RG16_SNORM_EXT;case 36762:return this._gl.RGB16_SNORM_EXT;case 36763:return this._gl.RGBA16_SNORM_EXT;case 9:return this._gl.RG16I;case 10:return this._gl.RGB16I;case 11:return this._gl.RGBA16I;default:return this._gl.RGBA16I}case 5:switch(t){case 8:return this._gl.R16UI;case 33322:return this._gl.R16_EXT;case 33324:return this._gl.RG16_EXT;case 32852:return this._gl.RGB16_EXT;case 32859:return this._gl.RGBA16_EXT;case 9:return this._gl.RG16UI;case 10:return this._gl.RGB16UI;case 11:return this._gl.RGBA16UI;default:return this._gl.RGBA16UI}case 6:switch(t){case 8:return this._gl.R32I;case 9:return this._gl.RG32I;case 10:return this._gl.RGB32I;case 11:return this._gl.RGBA32I;default:return this._gl.RGBA32I}case 7:switch(t){case 8:return this._gl.R32UI;case 9:return this._gl.RG32UI;case 10:return this._gl.RGB32UI;case 11:return this._gl.RGBA32UI;default:return this._gl.RGBA32UI}case 1:switch(t){case 6:return this._gl.R32F;case 7:return this._gl.RG32F;case 4:return this._gl.RGB32F;case 5:return this._gl.RGBA32F;default:return this._gl.RGBA32F}case 2:switch(t){case 6:return this._gl.R16F;case 7:return this._gl.RG16F;case 4:return this._gl.RGB16F;case 5:return this._gl.RGBA16F;default:return this._gl.RGBA16F}case 10:return this._gl.RGB565;case 13:return this._gl.R11F_G11F_B10F;case 14:return this._gl.RGB9_E5;case 8:return this._gl.RGBA4;case 9:return this._gl.RGB5_A1;case 11:switch(t){case 5:return this._gl.RGB10_A2;case 11:return this._gl.RGB10_A2UI;default:return this._gl.RGB10_A2}}return i?this._glSRGBExtensionValues.SRGB8_ALPHA8:this._gl.RGBA8}readPixels(e,t,i,r,s=!0,a=!0,o=null){let l=s?4:3,c=s?this._gl.RGBA:this._gl.RGB,f=i*r*l;if(!o)o=new Uint8Array(f);else if(o.length{tc();sx=class{constructor(e=30){this._enabled=!0,this._rollingFrameTime=new XC(e)}sampleFrame(e=br.Now){if(this._enabled){if(this._lastFrameTimeMs!=null){let t=e-this._lastFrameTimeMs;this._rollingFrameTime.add(t)}this._lastFrameTimeMs=e}}get averageFrameTime(){return this._rollingFrameTime.average}get averageFrameTimeVariance(){return this._rollingFrameTime.variance}get instantaneousFrameTime(){return this._rollingFrameTime.history(0)}get averageFPS(){return 1e3/this._rollingFrameTime.average}get instantaneousFPS(){let e=this._rollingFrameTime.history(0);return e===0?0:1e3/e}get isSaturated(){return this._rollingFrameTime.isSaturated()}enable(){this._enabled=!0}disable(){this._enabled=!1,this._lastFrameTimeMs=null}get isEnabled(){return this._enabled}reset(){this._lastFrameTimeMs=null,this._rollingFrameTime.reset()}},XC=class{constructor(e){this._samples=new Array(e),this.reset()}add(e){let t;if(this.isSaturated()){let i=this._samples[this._pos];t=i-this.average,this.average-=t/(this._sampleCount-1),this._m2-=t*(i-this.average)}else this._sampleCount++;t=e-this.average,this.average+=t/this._sampleCount,this._m2+=t*(e-this.average),this.variance=this._m2/(this._sampleCount-1),this._samples[this._pos]=e,this._pos++,this._pos%=this._samples.length}history(e){if(e>=this._sampleCount||e>=this._samples.length)return 0;let t=this._wrapPosition(this._pos-1);return this._samples[this._wrapPosition(t-e)]}isSaturated(){return this._sampleCount>=this._samples.length}reset(){this.average=0,this.variance=0,this._sampleCount=0,this._pos=0,this._m2=0}_wrapPosition(e){let t=this._samples.length;return(e%t+t)%t}}});var aV=I(()=>{vs();bt.prototype.setAlphaMode=function(n,e=!1,t=0){if(this._alphaMode[t]===n){if(!e){let r=n===0;this.depthCullingState.depthMask!==r&&(this.depthCullingState.depthMask=r)}return}let i=n===0;this._alphaState.setAlphaBlend(!i,t),this._alphaState.setAlphaMode(n,t),e||(this.depthCullingState.depthMask=i),this._alphaMode[t]=n}});function oV(n,e,t,i){let r,s=1;i===1?r=new Float32Array(e*t*4):i===2?(r=new Uint16Array(e*t*4),s=15360):i===7?r=new Uint32Array(e*t*4):r=new Uint8Array(e*t*4);for(let a=0;a{Ws();Lt();vs();Eo();bt.prototype.updateRawTexture=function(n,e,t,i,r=null,s=0,a=!1){if(!n)return;let o=this._getRGBABufferInternalSizedFormat(s,t,a),l=this._getInternalFormat(t),c=this._getWebGLTextureType(s);this._bindTextureDirectly(this._gl.TEXTURE_2D,n,!0),this._unpackFlipY(i===void 0?!0:!!i),this._doNotHandleContextLost||(n._bufferView=e,n.format=t,n.type=s,n.invertY=i,n._compression=r),n.width%4!==0&&this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,1),r&&e?this._gl.compressedTexImage2D(this._gl.TEXTURE_2D,0,this.getCaps().s3tc[r],n.width,n.height,0,e):this._gl.texImage2D(this._gl.TEXTURE_2D,0,o,n.width,n.height,0,l,c,e),n.generateMipMaps&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),n.isReady=!0};bt.prototype.createRawTexture=function(n,e,t,i,r,s,a,o=null,l=0,c=0,f=!1){let d=new Vi(this,3);d.baseWidth=e,d.baseHeight=t,d.width=e,d.height=t,d.format=i,d.generateMipMaps=r,d.samplingMode=a,d.invertY=s,d._compression=o,d.type=l,d._useSRGBBuffer=this._getUseSRGBBuffer(f,!r),this._doNotHandleContextLost||(d._bufferView=n),this.updateRawTexture(d,n,i,s,o,l,d._useSRGBBuffer),this._bindTextureDirectly(this._gl.TEXTURE_2D,d,!0);let h=this._getSamplingParameters(a,r);return this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,h.mag),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,h.min),r&&this._gl.generateMipmap(this._gl.TEXTURE_2D),this._bindTextureDirectly(this._gl.TEXTURE_2D,null),this._internalTexturesCache.push(d),d};bt.prototype.createRawCubeTexture=function(n,e,t,i,r,s,a,o=null){let l=this._gl,c=new Vi(this,8);c.isCube=!0,c.format=t,c.type=i,this._doNotHandleContextLost||(c._bufferViewArray=n);let f=this._getWebGLTextureType(i),d=this._getInternalFormat(t);d===l.RGB&&(d=l.RGBA),f===l.FLOAT&&!this._caps.textureFloatLinearFiltering?(r=!1,a=1,ee.Warn("Float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===this._gl.HALF_FLOAT_OES&&!this._caps.textureHalfFloatLinearFiltering?(r=!1,a=1,ee.Warn("Half float texture filtering is not supported. Mipmap generation and sampling mode are forced to false and TEXTURE_NEAREST_SAMPLINGMODE, respectively.")):f===l.FLOAT&&!this._caps.textureFloatRender?(r=!1,ee.Warn("Render to float textures is not supported. Mipmap generation forced to false.")):f===l.HALF_FLOAT&&!this._caps.colorBufferFloat&&(r=!1,ee.Warn("Render to half float textures is not supported. Mipmap generation forced to false."));let h=e,u=h;if(c.width=h,c.height=u,c.invertY=s,c._compression=o,!this.needPOTTextures||dh(c.width)&&dh(c.height)||(r=!1),n)this.updateRawCubeTexture(c,n,t,i,s,o);else{let p=this._getRGBABufferInternalSizedFormat(i),g=0;this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,c,!0);for(let v=0;v<6;v++)o?l.compressedTexImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,this.getCaps().s3tc[o],c.width,c.height,0,void 0):l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+v,g,p,c.width,c.height,0,d,f,null);this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)}this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,c,!0),n&&r&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP);let _=this._getSamplingParameters(a,r);return l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MAG_FILTER,_.mag),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_MIN_FILTER,_.min),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_CUBE_MAP,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),this._bindTextureDirectly(l.TEXTURE_CUBE_MAP,null),c.generateMipMaps=r,c.samplingMode=a,c.isReady=!0,c};bt.prototype.updateRawCubeTexture=function(n,e,t,i,r,s=null,a=0){n._bufferViewArray=e,n.format=t,n.type=i,n.invertY=r,n._compression=s;let o=this._gl,l=this._getWebGLTextureType(i),c=this._getInternalFormat(t),f=this._getRGBABufferInternalSizedFormat(i),d=!1;c===o.RGB&&(c=o.RGBA,d=!0),this._bindTextureDirectly(o.TEXTURE_CUBE_MAP,n,!0),this._unpackFlipY(r===void 0?!0:!!r),n.width%4!==0&&o.pixelStorei(o.UNPACK_ALIGNMENT,1);for(let u=0;u<6;u++){let m=e[u];s?o.compressedTexImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,this.getCaps().s3tc[s],n.width,n.height,0,m):(d&&(m=oV(m,n.width,n.height,i)),o.texImage2D(o.TEXTURE_CUBE_MAP_POSITIVE_X+u,a,f,n.width,n.height,0,c,l,m))}(!this.needPOTTextures||dh(n.width)&&dh(n.height))&&n.generateMipMaps&&a===0&&this._gl.generateMipmap(this._gl.TEXTURE_CUBE_MAP),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null),n.isReady=!0};bt.prototype.createRawCubeTextureFromUrl=function(n,e,t,i,r,s,a,o,l=null,c=null,f=3,d=!1){let h=this._gl,u=this.createRawCubeTexture(null,t,i,r,!s,d,f,null);e==null||e.addPendingData(u),u.url=n,u.isReady=!1,this._internalTexturesCache.push(u);let m=(p,g)=>{e==null||e.removePendingData(u),c&&c(p?p.status+" "+p.statusText:"Failed to parse texture data",g)},_=async p=>{if(!u._hardwareTexture)return;let g=a(p);if(!g)return;let v=g instanceof Promise?await g:g,T=u.width;if(o){let S=this._getWebGLTextureType(r),E=this._getInternalFormat(i),A=this._getRGBABufferInternalSizedFormat(r),R=!1;E===h.RGB&&(E=h.RGBA,R=!0),this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,u,!0),this._unpackFlipY(!1);let M=o(v);for(let y=0;y>y;for(let D=0;D<6;D++){let w=M[y][D];R&&(w=oV(w,C,C,r)),h.texImage2D(D,y,A,C,C,0,E,S,w)}}this._bindTextureDirectly(h.TEXTURE_CUBE_MAP,null)}else this.updateRawCubeTexture(u,v,i,r,d);u.isReady=!0,e==null||e.removePendingData(u),u.onLoadedObservable.notifyObservers(u),u.onLoadedObservable.clear(),l&&l()};return this._loadFile(n,p=>{_(p).catch(g=>{m(void 0,g)})},void 0,e==null?void 0:e.offlineProvider,!0,m),u};bt.prototype.createRawTexture2DArray=lV(!1);bt.prototype.createRawTexture3D=lV(!0);bt.prototype.updateRawTexture2DArray=cV(!1);bt.prototype.updateRawTexture3D=cV(!0)});var dV=I(()=>{vs();bf();bt.prototype._readTexturePixelsSync=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){var h,u,m;let f=this._gl;if(!f)throw new Error("Engine does not have gl rendering context.");if(!this._dummyFramebuffer){let _=f.createFramebuffer();if(!_)throw new Error("Unable to create dummy framebuffer");this._dummyFramebuffer=_}f.bindFramebuffer(f.FRAMEBUFFER,this._dummyFramebuffer),i>-1&&(n.is2DArray||n.is3D)?f.framebufferTextureLayer(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,(h=n._hardwareTexture)==null?void 0:h.underlyingResource,r,i):i>-1?f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_CUBE_MAP_POSITIVE_X+i,(u=n._hardwareTexture)==null?void 0:u.underlyingResource,r):f.framebufferTexture2D(f.FRAMEBUFFER,f.COLOR_ATTACHMENT0,f.TEXTURE_2D,(m=n._hardwareTexture)==null?void 0:m.underlyingResource,r);let d=n.type!==void 0?this._getWebGLTextureType(n.type):f.UNSIGNED_BYTE;return o?s||(s=yU(n.type,4*e*t)):d===f.UNSIGNED_BYTE?(s||(s=new Uint8Array(4*e*t)),d=f.UNSIGNED_BYTE):(s||(s=new Float32Array(4*e*t)),d=f.FLOAT),a&&this.flushFramebuffer(),f.readPixels(l,c,e,t,f.RGBA,d,s),f.bindFramebuffer(f.FRAMEBUFFER,this._currentFramebuffer),s};bt.prototype._readTexturePixels=function(n,e,t,i=-1,r=0,s=null,a=!0,o=!1,l=0,c=0){return Promise.resolve(this._readTexturePixelsSync(n,e,t,i,r,s,a,o,l,c))}});var hV=I(()=>{vs();bt.prototype.updateDynamicIndexBuffer=function(n,e,t=0){this._currentBoundBuffer[this._gl.ELEMENT_ARRAY_BUFFER]=null,this.bindIndexBuffer(n);let i;n.is32Bits?i=e instanceof Uint32Array?e:new Uint32Array(e):i=e instanceof Uint16Array?e:new Uint16Array(e),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,i,this._gl.DYNAMIC_DRAW),this._resetIndexBufferBinding()};bt.prototype.updateDynamicVertexBuffer=function(n,e,t,i){this.bindArrayBuffer(n),t===void 0&&(t=0);let r=e.byteLength||e.length;i===void 0||i>=r&&t===0?e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e)):this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e):e instanceof Array?this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,new Float32Array(e).subarray(0,i/4)):(ArrayBuffer.isView(e)?e=new Uint8Array(e.buffer,e.byteOffset,i):e=new Uint8Array(e,0,i),this._gl.bufferSubData(this._gl.ARRAY_BUFFER,t,e)),this._resetVertexBufferBinding()}});var uV=I(()=>{vs();Ws();Lt();Eo();bt.prototype._createDepthStencilCubeTexture=function(n,e){let t=new Vi(this,12);if(t.isCube=!0,this.webGLVersion===1)return ee.Error("Depth cube texture is not supported by WebGL 1."),t;let i={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e},r=this._gl;this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,t,!0),this._setupDepthStencilTexture(t,n,i.bilinearFiltering,i.comparisonFunction);for(let s=0;s<6;s++)i.generateStencil?r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH24_STENCIL8,n,n,0,r.DEPTH_STENCIL,r.UNSIGNED_INT_24_8,null):r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+s,0,r.DEPTH_COMPONENT24,n,n,0,r.DEPTH_COMPONENT,r.UNSIGNED_INT,null);return this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._internalTexturesCache.push(t),t};bt.prototype._setCubeMapTextureParams=function(n,e,t){let i=this._gl;i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAG_FILTER,i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MIN_FILTER,e?i.LINEAR_MIPMAP_LINEAR:i.LINEAR),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_S,i.CLAMP_TO_EDGE),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_WRAP_T,i.CLAMP_TO_EDGE),n.samplingMode=e?3:2,e&&this.getCaps().textureMaxLevel&&t!==void 0&&t>0&&(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_MAX_LEVEL,t),n._maxLodLevel=t),this._bindTextureDirectly(i.TEXTURE_CUBE_MAP,null)};bt.prototype.createCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h,u=!1,m=null){let _=this._gl;return this.createCubeTextureBase(n,e,t,!!i,r,s,a,o,l,c,f,d,p=>this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),(p,g)=>{let v=this.needPOTTextures?Cn(g[0].width,this._caps.maxCubemapTextureSize):g[0].width,T=v,S=[_.TEXTURE_CUBE_MAP_POSITIVE_X,_.TEXTURE_CUBE_MAP_POSITIVE_Y,_.TEXTURE_CUBE_MAP_POSITIVE_Z,_.TEXTURE_CUBE_MAP_NEGATIVE_X,_.TEXTURE_CUBE_MAP_NEGATIVE_Y,_.TEXTURE_CUBE_MAP_NEGATIVE_Z];this._bindTextureDirectly(_.TEXTURE_CUBE_MAP,p,!0),this._unpackFlipY(!1);let E=a?this._getInternalFormat(a,p._useSRGBBuffer):p._useSRGBBuffer?this._glSRGBExtensionValues.SRGB8_ALPHA8:_.RGBA,A=a?this._getInternalFormat(a):_.RGBA;p._useSRGBBuffer&&this.webGLVersion===1&&(A=E);for(let R=0;R{Dg();ax=class{get depthStencilTexture(){return this._depthStencilTexture}setDepthStencilTexture(e,t=!0){t&&this._depthStencilTexture&&this._depthStencilTexture.dispose(),this._depthStencilTexture=e,this._generateDepthBuffer=this._generateStencilBuffer=this._depthStencilTextureWithStencil=!1,e&&(this._generateDepthBuffer=!0,this._generateStencilBuffer=this._depthStencilTextureWithStencil=ic(e.format))}get depthStencilTextureWithStencil(){return this._depthStencilTextureWithStencil}get isCube(){return this._isCube}get isMulti(){return this._isMulti}get is2DArray(){return this.layers>0}get is3D(){return this.depth>0}get size(){return this.width}get width(){var e;return(e=this._size.width)!=null?e:this._size}get height(){var e;return(e=this._size.height)!=null?e:this._size}get layers(){return this._size.layers||0}get depth(){return this._size.depth||0}get texture(){var e,t;return(t=(e=this._textures)==null?void 0:e[0])!=null?t:null}get textures(){return this._textures}get faceIndices(){return this._faceIndices}get layerIndices(){return this._layerIndices}getBaseArrayLayer(e){var s,a,o,l;if(!this._textures)return-1;let t=this._textures[e],i=(a=(s=this._layerIndices)==null?void 0:s[e])!=null?a:0,r=(l=(o=this._faceIndices)==null?void 0:o[e])!=null?l:0;return t.isCube?i*6+r:t.is3D?0:i}get samples(){return this._samples}setSamples(e,t=!0,i=!1){if(this.samples===e&&!i)return e;let r=this._isMulti?this._engine.updateMultipleRenderTargetTextureSampleCount(this,e,t):this._engine.updateRenderTargetTextureSampleCount(this,e);return this._samples=e,r}resolveMSAATextures(){this.isMulti?this._engine.resolveMultiFramebuffer(this):this._engine.resolveFramebuffer(this)}generateMipMaps(){this._engine._currentRenderTarget===this&&(this.isMulti?this._engine.unBindMultiColorAttachmentFramebuffer(this,!0):this._engine.unBindFramebuffer(this,!0)),this.isMulti?this._engine.generateMipMapsMultiFramebuffer(this):this._engine.generateMipMapsFramebuffer(this)}constructor(e,t,i,r,s){this._textures=null,this._faceIndices=null,this._layerIndices=null,this._samples=1,this._attachments=null,this._generateStencilBuffer=!1,this._generateDepthBuffer=!1,this._depthStencilTextureWithStencil=!1,this.disableAutomaticMSAAResolve=!1,this.resolveMSAAColors=!0,this.resolveMSAADepth=!1,this.resolveMSAAStencil=!1,this.depthReadOnly=!1,this.stencilReadOnly=!1,this._isMulti=e,this._isCube=t,this._size=i,this._engine=r,this._depthStencilTexture=null,this.label=s}setTextures(e){Array.isArray(e)?this._textures=e:e?this._textures=[e]:this._textures=null}setTexture(e,t=0,i=!0){this._textures||(this._textures=[]),this._textures[t]!==e&&(this._textures[t]&&i&&this._textures[t].dispose(),this._textures[t]=e)}setLayerAndFaceIndices(e,t){this._layerIndices=e,this._faceIndices=t}setLayerAndFaceIndex(e=0,t,i){this._layerIndices||(this._layerIndices=[]),this._faceIndices||(this._faceIndices=[]),t!==void 0&&t>=0&&(this._layerIndices[e]=t),i!==void 0&&i>=0&&(this._faceIndices[e]=i)}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;return(o=this._depthStencilTexture)==null||o.dispose(),this._depthStencilTextureWithStencil=i,this._depthStencilTextureLabel=a,this._depthStencilTexture=this._engine.createDepthStencilTexture(this._size,{bilinearFiltering:t,comparisonFunction:e,generateStencil:i,isCube:this._isCube,samples:r,depthTextureFormat:s,label:a},this),this._depthStencilTexture}_shareDepth(e){this.shareDepth(e)}shareDepth(e){this._depthStencilTexture&&(e._depthStencilTexture&&e._depthStencilTexture.dispose(),e._depthStencilTexture=this._depthStencilTexture,e._depthStencilTextureWithStencil=this._depthStencilTextureWithStencil,this._depthStencilTexture.incrementReferences())}_swapAndDie(e){this.texture&&this.texture._swapAndDie(e),this._textures=null,this.dispose(!0)}_cloneRenderTargetWrapper(){var t,i,r,s,a,o,l,c;let e=null;if(this._isMulti){let f=this.textures;if(f&&f.length>0){let d=!1,h=f.length,u=-1,m=f[f.length-1]._source;(m===14||m===12)&&(d=!0,u=f[f.length-1].format,h--);let _=[],p=[],g=[],v=[],T=[],S=[],E=[],A={};for(let y=0;y1&&e.setSamples(this.samples),e._swapRenderTargetWrapper(this),e.dispose()}}releaseTextures(){if(this._textures)for(let e=0;e{mV();Dg();ox=class extends ax{setDepthStencilTexture(e,t=!0){if(super.setDepthStencilTexture(e,t),!e)return;let i=this._engine,r=this._context,s=e._hardwareTexture;if(s&&e._autoMSAAManagement&&this._MSAAFramebuffer){let a=i._currentFramebuffer;i._bindUnboundFramebuffer(this._MSAAFramebuffer),r.framebufferRenderbuffer(r.FRAMEBUFFER,ic(e.format)?r.DEPTH_STENCIL_ATTACHMENT:r.DEPTH_ATTACHMENT,r.RENDERBUFFER,s.getMSAARenderBuffer()),i._bindUnboundFramebuffer(a)}}constructor(e,t,i,r,s){super(e,t,i,r),this._framebuffer=null,this._depthStencilBuffer=null,this._MSAAFramebuffer=null,this._colorTextureArray=null,this._depthStencilTextureArray=null,this._disposeOnlyFramebuffers=!1,this._currentLOD=0,this._context=s}_cloneRenderTargetWrapper(){let e;return this._colorTextureArray&&this._depthStencilTextureArray?(e=this._engine.createMultiviewRenderTargetTexture(this.width,this.height),e.texture.isReady=!0):e=super._cloneRenderTargetWrapper(),e}_swapRenderTargetWrapper(e){super._swapRenderTargetWrapper(e),e._framebuffer=this._framebuffer,e._depthStencilBuffer=this._depthStencilBuffer,e._MSAAFramebuffer=this._MSAAFramebuffer,e._colorTextureArray=this._colorTextureArray,e._depthStencilTextureArray=this._depthStencilTextureArray,this._framebuffer=this._depthStencilBuffer=this._MSAAFramebuffer=this._colorTextureArray=this._depthStencilTextureArray=null}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){if(this._depthStencilBuffer){let o=this._engine,l=o._currentFramebuffer,c=this._context;o._bindUnboundFramebuffer(this._framebuffer),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_STENCIL_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.DEPTH_ATTACHMENT,c.RENDERBUFFER,null),c.framebufferRenderbuffer(c.FRAMEBUFFER,c.STENCIL_ATTACHMENT,c.RENDERBUFFER,null),o._bindUnboundFramebuffer(l),c.deleteRenderbuffer(this._depthStencilBuffer),this._depthStencilBuffer=null}return super.createDepthStencilTexture(e,t,i,r,s,a)}shareDepth(e){super.shareDepth(e);let t=this._context,i=this._depthStencilBuffer,r=e._MSAAFramebuffer||e._framebuffer,s=this._engine;e._depthStencilBuffer&&e._depthStencilBuffer!==i&&t.deleteRenderbuffer(e._depthStencilBuffer),e._depthStencilBuffer=i;let a=e._generateStencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;s._bindUnboundFramebuffer(r),t.framebufferRenderbuffer(t.FRAMEBUFFER,a,t.RENDERBUFFER,i),s._bindUnboundFramebuffer(null)}_bindTextureRenderTarget(e,t=0,i,r=0){var f,d,h,u;let s=e._hardwareTexture;if(!s)return;let a=this._framebuffer,o=this._engine,l=o._currentFramebuffer;o._bindUnboundFramebuffer(a);let c;if(o.webGLVersion>1){let m=this._context;c=m["COLOR_ATTACHMENT"+t],e.is2DArray||e.is3D?(i=(d=i!=null?i:(f=this.layerIndices)==null?void 0:f[t])!=null?d:0,m.framebufferTextureLayer(m.FRAMEBUFFER,c,s.underlyingResource,r,i)):e.isCube?(i=(u=i!=null?i:(h=this.faceIndices)==null?void 0:h[t])!=null?u:0,m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_CUBE_MAP_POSITIVE_X+i,s.underlyingResource,r)):m.framebufferTexture2D(m.FRAMEBUFFER,c,m.TEXTURE_2D,s.underlyingResource,r)}else{let m=this._context;c=m["COLOR_ATTACHMENT"+t+"_WEBGL"];let _=i!==void 0?m.TEXTURE_CUBE_MAP_POSITIVE_X+i:m.TEXTURE_2D;m.framebufferTexture2D(m.FRAMEBUFFER,c,_,s.underlyingResource,r)}if(e._autoMSAAManagement&&this._MSAAFramebuffer){let m=this._context;o._bindUnboundFramebuffer(this._MSAAFramebuffer),m.framebufferRenderbuffer(m.FRAMEBUFFER,c,m.RENDERBUFFER,s.getMSAARenderBuffer())}o._bindUnboundFramebuffer(l)}setTexture(e,t=0,i=!0){super.setTexture(e,t,i),this._bindTextureRenderTarget(e,t)}setLayerAndFaceIndices(e,t){var r,s;if(super.setLayerAndFaceIndices(e,t),!this.textures||!this.layerIndices||!this.faceIndices)return;let i=(s=(r=this._attachments)==null?void 0:r.length)!=null?s:this.textures.length;for(let a=0;a{zr();Re.prototype.createDepthStencilTexture=function(n,e,t){if(e.isCube){let i=n.width||n;return this._createDepthStencilCubeTexture(i,e)}else return this._createDepthStencilTexture(n,e,t)}});var _V=I(()=>{Ws();Lt();vs();pV();Dg();YC();bt.prototype._createHardwareRenderTargetWrapper=function(n,e,t){let i=new ox(n,e,t,this,this._gl);return this._renderTargetWrapperCache.push(i),i};bt.prototype.createRenderTargetTexture=function(n,e){var _,p;let t=this._createHardwareRenderTargetWrapper(!1,!1,n),i=!0,r=!1,s=!1,a,o=1,l;e!==void 0&&typeof e=="object"&&(i=(_=e.generateDepthBuffer)!=null?_:!0,r=!!e.generateStencilBuffer,s=!!e.noColorAttachment,a=e.colorAttachment,o=(p=e.samples)!=null?p:1,l=e.label);let c=a||(s?null:this._createInternalTexture(n,e,!0,5)),f=n.width||n,d=n.height||n,h=this._currentFramebuffer,u=this._gl,m=u.createFramebuffer();if(this._bindUnboundFramebuffer(m),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(r,i,f,d),c&&!c.is2DArray&&!c.is3D&&u.framebufferTexture2D(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.TEXTURE_2D,c._hardwareTexture.underlyingResource,0),this._bindUnboundFramebuffer(h),t.label=l!=null?l:"RenderTargetWrapper",t._framebuffer=m,t._generateDepthBuffer=i,t._generateStencilBuffer=r,t.setTextures(c),!a)this.updateRenderTargetTextureSampleCount(t,o);else if(t._samples=a.samples,a.samples>1){let g=a._hardwareTexture.getMSAARenderBuffer(0);t._MSAAFramebuffer=u.createFramebuffer(),this._bindUnboundFramebuffer(t._MSAAFramebuffer),u.framebufferRenderbuffer(u.FRAMEBUFFER,u.COLOR_ATTACHMENT0,u.RENDERBUFFER,g),this._bindUnboundFramebuffer(null)}return t};bt.prototype._createDepthStencilTexture=function(n,e,t){var u;let i=this._gl,r=n.layers||0,s=n.depth||0,a=i.TEXTURE_2D;r!==0?a=i.TEXTURE_2D_ARRAY:s!==0&&(a=i.TEXTURE_3D);let o=new Vi(this,12);if(o.label=e.label,!this._caps.depthTextureExtension)return ee.Error("Depth texture is not supported by your browser or hardware."),o;let l={bilinearFiltering:!1,comparisonFunction:0,generateStencil:!1,...e};if(this._bindTextureDirectly(a,o,!0),this._setupDepthStencilTexture(o,n,l.comparisonFunction===0?!1:l.bilinearFiltering,l.comparisonFunction,l.samples),l.depthTextureFormat!==void 0){if(l.depthTextureFormat!==15&&l.depthTextureFormat!==16&&l.depthTextureFormat!==17&&l.depthTextureFormat!==13&&l.depthTextureFormat!==14&&l.depthTextureFormat!==18)return ee.Error(`Depth texture ${l.depthTextureFormat} format is not supported.`),o;o.format=l.depthTextureFormat}else o.format=l.generateStencil?13:16;let c=ic(o.format),f=this._getWebGLTextureTypeFromDepthTextureFormat(o.format),d=c?i.DEPTH_STENCIL:i.DEPTH_COMPONENT,h=this._getInternalFormatFromDepthTextureFormat(o.format,!0,c);return o.is2DArray?i.texImage3D(a,0,h,o.width,o.height,r,0,d,f,null):o.is3D?i.texImage3D(a,0,h,o.width,o.height,s,0,d,f,null):i.texImage2D(a,0,h,o.width,o.height,0,d,f,null),this._bindTextureDirectly(a,null),this._internalTexturesCache.push(o),t._depthStencilBuffer&&(i.deleteRenderbuffer(t._depthStencilBuffer),t._depthStencilBuffer=null),this._bindUnboundFramebuffer((u=t._MSAAFramebuffer)!=null?u:t._framebuffer),t._generateStencilBuffer=c,t._depthStencilTextureWithStencil=c,t._depthStencilBuffer=this._setupFramebufferDepthAttachments(t._generateStencilBuffer,t._generateDepthBuffer,t.width,t.height,t.samples,o.format),this._bindUnboundFramebuffer(null),o};bt.prototype.updateRenderTargetTextureSampleCount=function(n,e){var s,a;if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let t=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(t.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(t.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let i=(s=n.texture)==null?void 0:s._hardwareTexture;if(i==null||i.releaseMSAARenderBuffers(),n.texture&&e>1&&typeof t.renderbufferStorageMultisample=="function"){let o=t.createFramebuffer();if(!o)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=o,this._bindUnboundFramebuffer(n._MSAAFramebuffer);let l=this._createRenderBuffer(n.texture.width,n.texture.height,e,-1,this._getRGBABufferInternalSizedFormat(n.texture.type,n.texture.format,n.texture._useSRGBBuffer),t.COLOR_ATTACHMENT0,!1);if(!l)throw new Error("Unable to create multi sampled framebuffer");i==null||i.addMSAARenderBuffer(l)}this._bindUnboundFramebuffer((a=n._MSAAFramebuffer)!=null?a:n._framebuffer),n.texture&&(n.texture.samples=e),n._samples=e;let r=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,r),this._bindUnboundFramebuffer(null),e};bt.prototype._setupDepthStencilTexture=function(n,e,t,i,r=1){var h,u;let s=(h=e.width)!=null?h:e,a=(u=e.height)!=null?u:e,o=e.layers||0,l=e.depth||0;n.baseWidth=s,n.baseHeight=a,n.width=s,n.height=a,n.is2DArray=o>0,n.depth=o||l,n.isReady=!0,n.samples=r,n.generateMipMaps=!1,n.samplingMode=t?2:1,n.type=0,n._comparisonFunction=i;let c=this._gl,f=this._getTextureTarget(n),d=this._getSamplingParameters(n.samplingMode,!1);c.texParameteri(f,c.TEXTURE_MAG_FILTER,d.mag),c.texParameteri(f,c.TEXTURE_MIN_FILTER,d.min),c.texParameteri(f,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE),c.texParameteri(f,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE),this.webGLVersion>1&&(i===0?(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,515),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.NONE)):(c.texParameteri(f,c.TEXTURE_COMPARE_FUNC,i),c.texParameteri(f,c.TEXTURE_COMPARE_MODE,c.COMPARE_REF_TO_TEXTURE)))}});var gV=I(()=>{vs();bt.prototype.setDepthStencilTexture=function(n,e,t,i){n!==void 0&&(e&&(this._boundUniforms[n]=e),!t||!t.depthStencilTexture?this._setTexture(n,null,void 0,void 0,i):this._setTexture(n,t,!1,!0,i))}});var vV=I(()=>{Ws();Lt();vs();bt.prototype.createRenderTargetCubeTexture=function(n,e){let t=this._createHardwareRenderTargetWrapper(!1,!0,n),i={generateMipMaps:!0,generateDepthBuffer:!0,generateStencilBuffer:!1,type:0,samplingMode:3,format:5,...e};i.generateStencilBuffer=i.generateDepthBuffer&&i.generateStencilBuffer,(i.type===1&&!this._caps.textureFloatLinearFiltering||i.type===2&&!this._caps.textureHalfFloatLinearFiltering)&&(i.samplingMode=1);let r=this._gl,s=new Vi(this,5);this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,s,!0);let a=this._getSamplingParameters(i.samplingMode,i.generateMipMaps);i.type===1&&!this._caps.textureFloat&&(i.type=0,ee.Warn("Float textures are not supported. Cube render target forced to TEXTURETYPE_UNESIGNED_BYTE type")),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MAG_FILTER,a.mag),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_MIN_FILTER,a.min),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_CUBE_MAP,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE);for(let l=0;l<6;l++)r.texImage2D(r.TEXTURE_CUBE_MAP_POSITIVE_X+l,0,this._getRGBABufferInternalSizedFormat(i.type,i.format),n,n,0,this._getInternalFormat(i.format),this._getWebGLTextureType(i.type),null);let o=r.createFramebuffer();return this._bindUnboundFramebuffer(o),t._depthStencilBuffer=this._setupFramebufferDepthAttachments(i.generateStencilBuffer,i.generateDepthBuffer,n,n),i.generateMipMaps&&r.generateMipmap(r.TEXTURE_CUBE_MAP),this._bindTextureDirectly(r.TEXTURE_CUBE_MAP,null),this._bindUnboundFramebuffer(null),t._framebuffer=o,t._generateDepthBuffer=i.generateDepthBuffer,t._generateStencilBuffer=i.generateStencilBuffer,s.width=n,s.height=n,s.isReady=!0,s.isCube=!0,s.samples=1,s.generateMipMaps=i.generateMipMaps,s.samplingMode=i.samplingMode,s.type=i.type,s.format=i.format,this._internalTexturesCache.push(s),t.setTextures(s),t}});var EV,Rm,Mr,Ft,Kn=I(()=>{EV=.45454545454545453,Rm=2.2,Mr=(1+Math.sqrt(5))/2,Ft=.001});function Tn(n,e){let t=[];for(let i=0;i{let s=r.previous;if(!s)return;let a=r.next;a?(s.next=a,a.previous=s):(s.next=void 0,n[e]=s),r.next=void 0,r.previous=void 0}}function lx(n,e){let t=Xle.map(i=>zle(n,i,e));return()=>{for(let i of t)i==null||i()}}var Xle,pl=I(()=>{Xle=["push","splice","pop","shift","unshift"]});function Ut(n,e){SV[n]=e}function Pn(n){return SV[n]}var SV,$i=I(()=>{SV={}});function Ri(n,e,t=1401298e-51){return Math.abs(n-e)<=t}function ur(n,e){return n===e?n:Math.random()*(e-n)+n}function So(n,e,t){return n+(e-n)*t}function TV(n,e,t,i,r){let s=r*r,a=r*s,o=2*a-3*s+1,l=-2*a+3*s,c=a-2*s+r,f=a-s;return n*o+t*l+e*c+i*f}function Bt(n,e=0,t=1){return Math.min(t,Math.max(e,n))}function AV(n){return n-=Math.PI*2*Math.floor((n+Math.PI)/(Math.PI*2)),n}function To(n){let e=n.toString(16);return n<=15?("0"+e).toUpperCase():e.toUpperCase()}function xV(n){if(Math.log2)return Math.floor(Math.log2(n));if(n<0)return NaN;if(n===0)return-1/0;let e=0;if(n<1){for(;n<1;)e++,n=n*2;e=-e}else if(n>1)for(;n>1;)e++,n=Math.floor(n/2);return e}function cx(n,e){let t=n%e;return t===0?e:cx(e,t)}var jn=I(()=>{});function RV(n){n.updateFlag=bm._UpdateFlagSeed++}function KC(n,e,t,i=0){let r=n.asArray(),s=e.asArray(),a=r[0],o=r[1],l=r[2],c=r[3],f=r[4],d=r[5],h=r[6],u=r[7],m=r[8],_=r[9],p=r[10],g=r[11],v=r[12],T=r[13],S=r[14],E=r[15],A=s[0],R=s[1],M=s[2],y=s[3],C=s[4],D=s[5],w=s[6],G=s[7],O=s[8],N=s[9],B=s[10],V=s[11],Q=s[12],K=s[13],J=s[14],z=s[15];t[i]=a*A+o*C+l*O+c*Q,t[i+1]=a*R+o*D+l*N+c*K,t[i+2]=a*M+o*w+l*B+c*J,t[i+3]=a*y+o*G+l*V+c*z,t[i+4]=f*A+d*C+h*O+u*Q,t[i+5]=f*R+d*D+h*N+u*K,t[i+6]=f*M+d*w+h*B+u*J,t[i+7]=f*y+d*G+h*V+u*z,t[i+8]=m*A+_*C+p*O+g*Q,t[i+9]=m*R+_*D+p*N+g*K,t[i+10]=m*M+_*w+p*B+g*J,t[i+11]=m*y+_*G+p*V+g*z,t[i+12]=v*A+T*C+S*O+E*Q,t[i+13]=v*R+T*D+S*N+E*K,t[i+14]=v*M+T*w+S*B+E*J,t[i+15]=v*y+T*G+S*V+E*z}function hh(n,e,t,i=0){KC(n,e,t.asArray(),i),RV(t)}function bV(n,e,t=0){let i=n.asArray();e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15]}function Lg(n,e){let t=jC(n,e.asArray());return t&&RV(e),t}function jC(n,e){let t=n.asArray(),i=t[0],r=t[1],s=t[2],a=t[3],o=t[4],l=t[5],c=t[6],f=t[7],d=t[8],h=t[9],u=t[10],m=t[11],_=t[12],p=t[13],g=t[14],v=t[15],T=u*v-g*m,S=h*v-p*m,E=h*g-p*u,A=d*v-_*m,R=d*g-u*_,M=d*p-_*h,y=+(l*T-c*S+f*E),C=-(o*T-c*A+f*R),D=+(o*S-l*A+f*M),w=-(o*E-l*R+c*M),G=i*y+r*C+s*D+a*w;if(G===0)return!1;let O=1/G,N=c*v-g*f,B=l*v-p*f,V=l*g-p*c,Q=o*v-_*f,K=o*g-_*c,J=o*p-_*l,z=c*m-u*f,Y=l*m-h*f,de=l*u-h*c,ge=o*m-d*f,Ue=o*u-d*c,oe=o*h-d*l,ve=-(r*T-s*S+a*E),ie=+(i*T-s*A+a*R),ue=-(i*S-r*A+a*M),Pe=+(i*E-r*R+s*M),me=+(r*N-s*B+a*V),be=-(i*N-s*Q+a*K),De=+(i*B-r*Q+a*J),ut=-(i*V-r*K+s*J),Ye=-(r*z-s*Y+a*de),je=+(i*z-s*ge+a*Ue),Qt=-(i*Y-r*ge+a*oe),Pt=+(i*de-r*Ue+s*oe);return e[0]=y*O,e[1]=ve*O,e[2]=me*O,e[3]=Ye*O,e[4]=C*O,e[5]=ie*O,e[6]=be*O,e[7]=je*O,e[8]=D*O,e[9]=ue*O,e[10]=De*O,e[11]=Qt*O,e[12]=w*O,e[13]=Pe*O,e[14]=ut*O,e[15]=Pt*O,!0}var bm,ZC=I(()=>{bm=class{};bm._UpdateFlagSeed=0});var Es,we,b,Ni,Ke,Z,Xe,$,uh,ke=I(()=>{Kn();pl();$i();BC();Gi();jn();ZC();Es=n=>parseInt(n.toString().replace(/\W/g,"")),we=class n{constructor(e=0,t=0){this.x=e,this.y=t}toString(){return`{X: ${this.x} Y: ${this.y}}`}getClassName(){return"Vector2"}getHashCode(){let e=Es(this.x),t=Es(this.y),i=e;return i=i*397^t,i}toArray(e,t=0){return e[t]=this.x,e[t+1]=this.y,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}asArray(){return[this.x,this.y]}copyFrom(e){return this.x=e.x,this.y=e.y,this}copyFromFloats(e,t){return this.x=e,this.y=t,this}set(e,t){return this.copyFromFloats(e,t)}setAll(e){return this.copyFromFloats(e,e)}add(e){return new n(this.x+e.x,this.y+e.y)}addToRef(e,t){return t.x=this.x+e.x,t.y=this.y+e.y,t}addInPlace(e){return this.x+=e.x,this.y+=e.y,this}addInPlaceFromFloats(e,t){return this.x+=e,this.y+=t,this}addVector3(e){return new n(this.x+e.x,this.y+e.y)}subtract(e){return new n(this.x-e.x,this.y-e.y)}subtractToRef(e,t){return t.x=this.x-e.x,t.y=this.y-e.y,t}subtractInPlace(e){return this.x-=e.x,this.y-=e.y,this}multiplyInPlace(e){return this.x*=e.x,this.y*=e.y,this}multiply(e){return new n(this.x*e.x,this.y*e.y)}multiplyToRef(e,t){return t.x=this.x*e.x,t.y=this.y*e.y,t}multiplyByFloats(e,t){return new n(this.x*e,this.y*t)}divide(e){return new n(this.x/e.x,this.y/e.y)}divideToRef(e,t){return t.x=this.x/e.x,t.y=this.y/e.y,t}divideInPlace(e){return this.x=this.x/e.x,this.y=this.y/e.y,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.x,e.y)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.x,e.y)}minimizeInPlaceFromFloats(e,t){return this.x=Math.min(e,this.x),this.y=Math.min(t,this.y),this}maximizeInPlaceFromFloats(e,t){return this.x=Math.max(e,this.x),this.y=Math.max(t,this.y),this}subtractFromFloats(e,t){return new n(this.x-e,this.y-t)}subtractFromFloatsToRef(e,t,i){return i.x=this.x-e,i.y=this.y-t,i}negate(){return new n(-this.x,-this.y)}negateInPlace(){return this.x*=-1,this.y*=-1,this}negateToRef(e){return e.x=-this.x,e.y=-this.y,e}scaleInPlace(e){return this.x*=e,this.y*=e,this}scale(e){return new n(this.x*e,this.y*e)}scaleToRef(e,t){return t.x=this.x*e,t.y=this.y*e,t}scaleAndAddToRef(e,t){return t.x+=this.x*e,t.y+=this.y*e,t}equals(e){return e&&this.x===e.x&&this.y===e.y}equalsWithEpsilon(e,t=Ft){return e&&Ri(this.x,e.x,t)&&Ri(this.y,e.y,t)}equalsToFloats(e,t){return this.x===e&&this.y===t}floor(){return new n(Math.floor(this.x),Math.floor(this.y))}floorToRef(e){return e.x=Math.floor(this.x),e.y=Math.floor(this.y),e}fract(){return new n(this.x-Math.floor(this.x),this.y-Math.floor(this.y))}fractToRef(e){return e.x=this.x-Math.floor(this.x),e.y=this.y-Math.floor(this.y),e}rotate(e){return this.rotateToRef(e,new n)}rotateToRef(e,t){let i=Math.cos(e),r=Math.sin(e);return t.x=i*this.x-r*this.y,t.y=r*this.x+i*this.y,t}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}lengthSquared(){return this.x*this.x+this.y*this.y}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n;return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0&&(e.x=this.x,e.y=this.y),this.scaleToRef(1/t,e)}clone(){return new n(this.x,this.y)}dot(e){return this.x*e.x+this.y*e.y}static Zero(){return new n(0,0)}static One(){return new n(1,1)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t))}static get ZeroReadOnly(){return n._ZeroReadOnly}static FromArray(e,t=0){return new n(e[t],e[t+1])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i}static FromFloatsToRef(e,t,i){return i.copyFromFloats(e,t),i}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t.x+(-e.x+i.x)*s+(2*e.x-5*t.x+4*i.x-r.x)*a+(-e.x+3*t.x-3*i.x+r.x)*o),c=.5*(2*t.y+(-e.y+i.y)*s+(2*e.y-5*t.y+4*i.y-r.y)*a+(-e.y+3*t.y-3*i.y+r.y)*o);return new n(l,c)}static ClampToRef(e,t,i,r){return r.x=Bt(e.x,t.x,i.x),r.y=Bt(e.y,t.y,i.y),r}static Clamp(e,t,i){let r=Bt(e.x,t.x,i.x),s=Bt(e.y,t.y,i.y);return new n(r,s)}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.x*l+i.x*c+t.x*f+r.x*d,u=e.y*l+i.y*c+t.y*f+r.y*d;return new n(h,u)}static Hermite1stDerivative(e,t,i,r,s){return this.Hermite1stDerivativeToRef(e,t,i,r,s,new n)}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a.x=(o-s)*6*e.x+(3*o-4*s+1)*t.x+(-o+s)*6*i.x+(3*o-2*s)*r.x,a.y=(o-s)*6*e.y+(3*o-4*s+1)*t.y+(-o+s)*6*i.y+(3*o-2*s)*r.y,a}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.x=e.x+(t.x-e.x)*i,r.y=e.y+(t.y-e.y)*i,r}static Dot(e,t){return e.x*t.x+e.y*t.y}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=e.xt.x?e.x:t.x,r=e.y>t.y?e.y:t.y;return new n(i,r)}static Transform(e,t){return n.TransformToRef(e,t,new n)}static TransformToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+r[12],a=e.x*r[1]+e.y*r[5]+r[13];return i.x=s,i.y=a,i}static PointInTriangle(e,t,i,r){let s=.5*(-i.y*r.x+t.y*(-i.x+r.x)+t.x*(i.y-r.y)+i.x*r.y),a=s<0?-1:1,o=(t.y*r.x-t.x*r.y+(r.y-t.y)*e.x+(t.x-r.x)*e.y)*a,l=(t.x*i.y-t.y*i.x+(t.y-i.y)*e.x+(i.x-t.x)*e.y)*a;return o>0&&l>0&&o+l<2*s*a}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y;return i*i+r*r}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2)}static DistanceOfPointFromSegment(e,t,i){let r=n.DistanceSquared(t,i);if(r===0)return n.Distance(e,t);let s=i.subtract(t),a=Math.max(0,Math.min(1,n.Dot(e.subtract(t),s)/r)),o=t.add(s.multiplyByFloats(a,a));return n.Distance(e,o)}};we._V8PerformanceHack=new we(.5,.5);we._ZeroReadOnly=we.Zero();Object.defineProperties(we.prototype,{dimension:{value:[2]},rank:{value:1}});b=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}constructor(e=0,t=0,i=0){this._isDirty=!0,this._x=e,this._y=t,this._z=i}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z}}`}getClassName(){return"Vector3"}getHashCode(){let e=Es(this._x),t=Es(this._y),i=Es(this._z),r=e;return r=r*397^t,r=r*397^i,r}asArray(){return[this._x,this._y,this._z]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toQuaternion(){return Ke.RotationYawPitchRoll(this._y,this._x,this._z)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._isDirty=!0,this}addInPlaceFromFloats(e,t,i){return this._x+=e,this._y+=t,this._z+=i,this._isDirty=!0,this}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z)}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._isDirty=!0,t}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._isDirty=!0,this}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z)}subtractToRef(e,t){return this.subtractFromFloatsToRef(e._x,e._y,e._z,t)}subtractFromFloats(e,t,i){return new n(this._x-e,this._y-t,this._z-i)}subtractFromFloatsToRef(e,t,i,r){return r._x=this._x-e,r._y=this._y-t,r._z=this._z-i,r._isDirty=!0,r}negate(){return new n(-this._x,-this._y,-this._z)}negateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}negateToRef(e){return e._x=this._x*-1,e._y=this._y*-1,e._z=this._z*-1,e._isDirty=!0,e}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._isDirty=!0,t}getNormalToRef(e){let t=this.length(),i=Math.acos(this._y/t),r=Math.atan2(this._z,this._x);i>Math.PI/2?i-=Math.PI/2:i+=Math.PI/2;let s=t*Math.sin(i)*Math.cos(r),a=t*Math.cos(i),o=t*Math.sin(i)*Math.sin(r);return e.set(s,a,o),e}applyRotationQuaternionToRef(e,t){let i=this._x,r=this._y,s=this._z,a=e._x,o=e._y,l=e._z,c=e._w,f=2*(o*s-l*r),d=2*(l*i-a*s),h=2*(a*r-o*i);return t._x=i+c*f+o*h-l*d,t._y=r+c*d+l*f-a*h,t._z=s+c*h+a*d-o*f,t._isDirty=!0,t}applyRotationQuaternionInPlace(e){return this.applyRotationQuaternionToRef(e,this)}applyRotationQuaternion(e){return this.applyRotationQuaternionToRef(e,new n)}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._isDirty=!0,t}projectOnPlane(e,t){return this.projectOnPlaneToRef(e,t,new n)}projectOnPlaneToRef(e,t,i){let r=e.normal,s=e.d,a=Xe.Vector3[0];this.subtractToRef(t,a),a.normalize();let o=n.Dot(a,r);if(Math.abs(o)<1e-10)i.setAll(1/0);else{let l=-(n.Dot(t,r)+s)/o,c=a.scaleInPlace(l);t.addToRef(c,i)}return i}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z}equalsWithEpsilon(e,t=Ft){return e&&Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)}equalsToFloats(e,t,i){return this._x===e&&this._y===t&&this._z===i}multiplyInPlace(e){return this._x*=e._x,this._y*=e._y,this._z*=e._z,this._isDirty=!0,this}multiply(e){return this.multiplyByFloats(e._x,e._y,e._z)}multiplyToRef(e,t){return t._x=this._x*e._x,t._y=this._y*e._y,t._z=this._z*e._z,t._isDirty=!0,t}multiplyByFloats(e,t,i){return new n(this._x*e,this._y*t,this._z*i)}divide(e){return new n(this._x/e._x,this._y/e._y,this._z/e._z)}divideToRef(e,t){return t._x=this._x/e._x,t._y=this._y/e._y,t._z=this._z/e._z,t._isDirty=!0,t}divideInPlace(e){return this._x=this._x/e._x,this._y=this._y/e._y,this._z=this._z/e._z,this._isDirty=!0,this}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e._x,e._y,e._z)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e._x,e._y,e._z)}minimizeInPlaceFromFloats(e,t,i){return ethis._x&&(this.x=e),t>this._y&&(this.y=t),i>this._z&&(this.z=i),this}isNonUniformWithinEpsilon(e){let t=Math.abs(this._x),i=Math.abs(this._y);if(!Ri(t,i,e))return!0;let r=Math.abs(this._z);return!Ri(t,r,e)||!Ri(i,r,e)}get isNonUniform(){let e=Math.abs(this._x),t=Math.abs(this._y);if(e!==t)return!0;let i=Math.abs(this._z);return e!==i}floorToRef(e){return e._x=Math.floor(this._x),e._y=Math.floor(this._y),e._z=Math.floor(this._z),e._isDirty=!0,e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z))}fractToRef(e){return e._x=this._x-Math.floor(this._x),e._y=this._y-Math.floor(this._y),e._z=this._z-Math.floor(this._z),e._isDirty=!0,e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z))}length(){return Math.sqrt(this.lengthSquared())}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z}get hasAZeroComponent(){return this._x*this._y*this._z===0}normalize(){return this.normalizeFromLength(this.length())}reorderInPlace(e){if(e=e.toLowerCase(),e==="xyz")return this;let t=Xe.Vector3[0].copyFrom(this);return this.x=t[e[0]],this.y=t[e[1]],this.z=t[e[2]],this}rotateByQuaternionToRef(e,t){return e.toRotationMatrix(Xe.Matrix[0]),n.TransformCoordinatesToRef(this,Xe.Matrix[0],t),t}rotateByQuaternionAroundPointToRef(e,t,i){return this.subtractToRef(t,Xe.Vector3[0]),Xe.Vector3[0].rotateByQuaternionToRef(e,Xe.Vector3[0]),t.addToRef(Xe.Vector3[0],i),i}cross(e){return n.CrossToRef(this,e,new n)}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e._x=this._x,e._y=this._y,e._z=this._z,e._isDirty=!0,e):this.scaleToRef(1/t,e)}clone(){return new n(this._x,this._y,this._z)}copyFrom(e){return this.copyFromFloats(e._x,e._y,e._z)}copyFromFloats(e,t,i){return this._x=e,this._y=t,this._z=i,this._isDirty=!0,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this._x=this._y=this._z=e,this._isDirty=!0,this}static GetClipFactor(e,t,i,r){let s=n.Dot(e,i),a=n.Dot(t,i);return(s-r)/(s-a)}static GetAngleBetweenVectors(e,t,i){let r=e.normalizeToRef(Xe.Vector3[1]),s=t.normalizeToRef(Xe.Vector3[2]),a=n.Dot(r,s);a=Bt(a,-1,1);let o=Math.acos(a),l=Xe.Vector3[3];return n.CrossToRef(r,s,l),n.Dot(l,i)>0?isNaN(o)?0:o:isNaN(o)?-Math.PI:-Math.acos(a)}static GetAngleBetweenVectorsOnPlane(e,t,i){Xe.Vector3[0].copyFrom(e);let r=Xe.Vector3[0];Xe.Vector3[1].copyFrom(t);let s=Xe.Vector3[1];Xe.Vector3[2].copyFrom(i);let a=Xe.Vector3[2],o=Xe.Vector3[3],l=Xe.Vector3[4];r.normalize(),s.normalize(),a.normalize(),n.CrossToRef(a,r,o),n.CrossToRef(o,a,l);let c=Math.atan2(n.Dot(s,o),n.Dot(s,l));return AV(c)}static PitchYawRollToMoveBetweenPointsToRef(e,t,i){let r=$.Vector3[0];return t.subtractToRef(e,r),i._y=Math.atan2(r.x,r.z)||0,i._x=Math.atan2(Math.sqrt(r.x**2+r.z**2),r.y)||0,i._z=0,i._isDirty=!0,i}static PitchYawRollToMoveBetweenPoints(e,t){let i=n.Zero();return n.PitchYawRollToMoveBetweenPointsToRef(e,t,i)}static SlerpToRef(e,t,i,r){i=Bt(i,0,1);let s=Xe.Vector3[0],a=Xe.Vector3[1];s.copyFrom(e);let o=s.length();s.normalizeFromLength(o),a.copyFrom(t);let l=a.length();a.normalizeFromLength(l);let c=n.Dot(s,a),f,d;if(c<1-Ft){let h=Math.acos(c),u=1/Math.sin(h);f=Math.sin((1-i)*h)*u,d=Math.sin(i*h)*u}else f=1-i,d=i;return s.scaleInPlace(f),a.scaleInPlace(d),r.copyFrom(s).addInPlace(a),r.scaleInPlace(So(o,l,i)),r}static SmoothToRef(e,t,i,r,s){return n.SlerpToRef(e,t,r===0?1:i/r,s),s}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromFloatArray(e,t){return n.FromArray(e,t)}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._isDirty=!0,i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i)}static FromFloatsToRef(e,t,i,r){return r.copyFromFloats(e,t,i),r}static Zero(){return new n(0,0,0)}static One(){return new n(1,1,1)}static Up(){return new n(0,1,0)}static get UpReadOnly(){return n._UpReadOnly}static get DownReadOnly(){return n._DownReadOnly}static get RightReadOnly(){return n._RightReadOnly}static get LeftReadOnly(){return n._LeftReadOnly}static get LeftHandedForwardReadOnly(){return n._LeftHandedForwardReadOnly}static get RightHandedForwardReadOnly(){return n._RightHandedForwardReadOnly}static get LeftHandedBackwardReadOnly(){return n._LeftHandedBackwardReadOnly}static get RightHandedBackwardReadOnly(){return n._RightHandedBackwardReadOnly}static get ZeroReadOnly(){return n._ZeroReadOnly}static get OneReadOnly(){return n._OneReadOnly}static Down(){return new n(0,-1,0)}static Forward(e=!1){return new n(0,0,e?-1:1)}static Backward(e=!1){return new n(0,0,e?1:-1)}static Right(){return new n(1,0,0)}static Left(){return new n(-1,0,0)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t),ur(e,t))}static TransformCoordinates(e,t){let i=n.Zero();return n.TransformCoordinatesToRef(e,t,i),i}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=1/(e*a[3]+t*a[7]+i*a[11]+a[15]);return s._x=o*f,s._y=l*f,s._z=c*f,s._isDirty=!0,s}static TransformNormal(e,t){let i=n.Zero();return n.TransformNormalToRef(e,t,i),i}static TransformNormalToRef(e,t,i){return this.TransformNormalFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformNormalFromFloatsToRef(e,t,i,r,s){let a=r.m;return s._x=e*a[0]+t*a[4]+i*a[8],s._y=e*a[1]+t*a[5]+i*a[9],s._z=e*a[2]+t*a[6]+i*a[10],s._isDirty=!0,s}static CatmullRom(e,t,i,r,s){let a=s*s,o=s*a,l=.5*(2*t._x+(-e._x+i._x)*s+(2*e._x-5*t._x+4*i._x-r._x)*a+(-e._x+3*t._x-3*i._x+r._x)*o),c=.5*(2*t._y+(-e._y+i._y)*s+(2*e._y-5*t._y+4*i._y-r._y)*a+(-e._y+3*t._y-3*i._y+r._y)*o),f=.5*(2*t._z+(-e._z+i._z)*s+(2*e._z-5*t._z+4*i._z-r._z)*a+(-e._z+3*t._z-3*i._z+r._z)*o);return new n(l,c,f)}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){let s=e._x;s=s>i._x?i._x:s,s=si._y?i._y:a,a=ai._z?i._z:o,o=o0&&C<0?(w.copyFrom(a),G=t,O=i):C>0&&D<0?(w.copyFrom(l),G=i,O=r):(w.copyFrom(o).scaleInPlace(-1),G=r,O=t);let N=Xe.Vector3[9],B=Xe.Vector3[4];if(G.subtractToRef(v,A),O.subtractToRef(v,N),n.CrossToRef(A,N,B),!(n.Dot(B,c)<0))return s.copyFrom(v),Math.abs(_*p);let Q=Xe.Vector3[5];n.CrossToRef(w,B,Q),Q.normalize();let K=Xe.Vector3[9];K.copyFrom(G).subtractInPlace(v);let J=K.length();if(Jthis._x&&(this.x=e.x),e.y>this._y&&(this.y=e.y),e.z>this._z&&(this.z=e.z),e.w>this._w&&(this.w=e.w),this}minimizeInPlaceFromFloats(e,t,i,r){return this.x=Math.min(e,this._x),this.y=Math.min(t,this._y),this.z=Math.min(i,this._z),this.w=Math.min(r,this._w),this}maximizeInPlaceFromFloats(e,t,i,r){return this.x=Math.max(e,this._x),this.y=Math.max(t,this._y),this.z=Math.max(i,this._z),this.w=Math.max(r,this._w),this}floorToRef(e){return e.x=Math.floor(this._x),e.y=Math.floor(this._y),e.z=Math.floor(this._z),e.w=Math.floor(this._w),e}floor(){return new n(Math.floor(this._x),Math.floor(this._y),Math.floor(this._z),Math.floor(this._w))}fractToRef(e){return e.x=this._x-Math.floor(this._x),e.y=this._y-Math.floor(this._y),e.z=this._z-Math.floor(this._z),e.w=this._w-Math.floor(this._w),e}fract(){return new n(this._x-Math.floor(this._x),this._y-Math.floor(this._y),this._z-Math.floor(this._z),this._w-Math.floor(this._w))}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){return this.normalizeToRef(new n)}normalizeToRef(e){let t=this.length();return t===0||t===1?(e.x=this._x,e.y=this._y,e.z=this._z,e.w=this._w,e):this.scaleToRef(1/t,e)}toVector3(){return new b(this._x,this._y,this._z)}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}copyFromFloats(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.x=this.y=this.z=this.w=e,this}dot(e){return this._x*e.x+this._y*e.y+this._z*e.z+this._w*e.w}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i.x=e[t],i.y=e[t+1],i.z=e[t+2],i.w=e[t+3],i}static FromFloatArrayToRef(e,t,i){return n.FromArrayToRef(e,t,i),i}static FromFloatsToRef(e,t,i,r,s){return s.x=e,s.y=t,s.z=i,s.w=r,s}static Zero(){return new n(0,0,0,0)}static One(){return new n(1,1,1,1)}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.x=ur(e,t),i.y=ur(e,t),i.z=ur(e,t),i.w=ur(e,t),i}static Clamp(e,t,i){return n.ClampToRef(e,t,i,new n)}static ClampToRef(e,t,i,r){return r.x=Bt(e.x,t.x,i.x),r.y=Bt(e.y,t.y,i.y),r.z=Bt(e.z,t.z,i.z),r.w=Bt(e.w,t.w,i.w),r}static CheckExtends(e,t,i){t.minimizeInPlace(e),i.maximizeInPlace(e)}static get ZeroReadOnly(){return n._ZeroReadOnly}static Normalize(e){return n.NormalizeToRef(e,new n)}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Minimize(e,t){let i=new n;return i.copyFrom(e),i.minimizeInPlace(t),i}static Maximize(e,t){let i=new n;return i.copyFrom(e),i.maximizeInPlace(t),i}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,new n)}static CenterToRef(e,t,i){return i.x=(e.x+t.x)/2,i.y=(e.y+t.y)/2,i.z=(e.z+t.z)/2,i.w=(e.w+t.w)/2,i}static TransformCoordinates(e,t){return n.TransformCoordinatesToRef(e,t,new n)}static TransformCoordinatesToRef(e,t,i){return n.TransformCoordinatesFromFloatsToRef(e._x,e._y,e._z,t,i),i}static TransformCoordinatesFromFloatsToRef(e,t,i,r,s){let a=r.m,o=e*a[0]+t*a[4]+i*a[8]+a[12],l=e*a[1]+t*a[5]+i*a[9]+a[13],c=e*a[2]+t*a[6]+i*a[10]+a[14],f=e*a[3]+t*a[7]+i*a[11]+a[15];return s.x=o,s.y=l,s.z=c,s.w=f,s}static TransformNormal(e,t){return n.TransformNormalToRef(e,t,new n)}static TransformNormalToRef(e,t,i){let r=t.m,s=e.x*r[0]+e.y*r[4]+e.z*r[8],a=e.x*r[1]+e.y*r[5]+e.z*r[9],o=e.x*r[2]+e.y*r[6]+e.z*r[10];return i.x=s,i.y=a,i.z=o,i.w=e.w,i}static TransformNormalFromFloatsToRef(e,t,i,r,s,a){let o=s.m;return a.x=e*o[0]+t*o[4]+i*o[8],a.y=e*o[1]+t*o[5]+i*o[9],a.z=e*o[2]+t*o[6]+i*o[10],a.w=r,a}static FromVector3(e,t=0){return new n(e._x,e._y,e._z,t)}static Dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}};Ni._V8PerformanceHack=new Ni(.5,.5,.5,.5);Ni._ZeroReadOnly=Ni.Zero();Object.defineProperties(Ni.prototype,{dimension:{value:[4]},rank:{value:1}});Ke=class n{get x(){return this._x}set x(e){this._x=e,this._isDirty=!0}get y(){return this._y}set y(e){this._y=e,this._isDirty=!0}get z(){return this._z}set z(e){this._z=e,this._isDirty=!0}get w(){return this._w}set w(e){this._w=e,this._isDirty=!0}constructor(e=0,t=0,i=0,r=1){this._isDirty=!0,this._x=e,this._y=t,this._z=i,this._w=r}toString(){return`{X: ${this._x} Y: ${this._y} Z: ${this._z} W: ${this._w}}`}getClassName(){return"Quaternion"}getHashCode(){let e=Es(this._x),t=Es(this._y),i=Es(this._z),r=Es(this._w),s=e;return s=s*397^t,s=s*397^i,s=s*397^r,s}asArray(){return[this._x,this._y,this._z,this._w]}toArray(e,t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}equals(e){return e&&this._x===e._x&&this._y===e._y&&this._z===e._z&&this._w===e._w}equalsWithEpsilon(e,t=Ft){return e&&Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)&&Ri(this._w,e._w,t)}isApprox(e,t=Ft){return e&&(Ri(this._x,e._x,t)&&Ri(this._y,e._y,t)&&Ri(this._z,e._z,t)&&Ri(this._w,e._w,t)||Ri(this._x,-e._x,t)&&Ri(this._y,-e._y,t)&&Ri(this._z,-e._z,t)&&Ri(this._w,-e._w,t))}clone(){return new n(this._x,this._y,this._z,this._w)}copyFrom(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._w=e._w,this._isDirty=!0,this}copyFromFloats(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._isDirty=!0,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.copyFromFloats(e,e,e,e)}add(e){return new n(this._x+e._x,this._y+e._y,this._z+e._z,this._w+e._w)}addInPlace(e){return this._x+=e._x,this._y+=e._y,this._z+=e._z,this._w+=e._w,this._isDirty=!0,this}addToRef(e,t){return t._x=this._x+e._x,t._y=this._y+e._y,t._z=this._z+e._z,t._w=this._w+e._w,t._isDirty=!0,t}addInPlaceFromFloats(e,t,i,r){return this._x+=e,this._y+=t,this._z+=i,this._w+=r,this._isDirty=!0,this}subtractToRef(e,t){return t._x=this._x-e._x,t._y=this._y-e._y,t._z=this._z-e._z,t._w=this._w-e._w,t._isDirty=!0,t}subtractFromFloats(e,t,i,r){return this.subtractFromFloatsToRef(e,t,i,r,new n)}subtractFromFloatsToRef(e,t,i,r,s){return s._x=this._x-e,s._y=this._y-t,s._z=this._z-i,s._w=this._w-r,s._isDirty=!0,s}subtract(e){return new n(this._x-e._x,this._y-e._y,this._z-e._z,this._w-e._w)}subtractInPlace(e){return this._x-=e._x,this._y-=e._y,this._z-=e._z,this._w-=e._w,this._isDirty=!0,this}scale(e){return new n(this._x*e,this._y*e,this._z*e,this._w*e)}scaleToRef(e,t){return t._x=this._x*e,t._y=this._y*e,t._z=this._z*e,t._w=this._w*e,t._isDirty=!0,t}scaleInPlace(e){return this._x*=e,this._y*=e,this._z*=e,this._w*=e,this._isDirty=!0,this}scaleAndAddToRef(e,t){return t._x+=this._x*e,t._y+=this._y*e,t._z+=this._z*e,t._w+=this._w*e,t._isDirty=!0,t}multiply(e){let t=new n(0,0,0,1);return this.multiplyToRef(e,t),t}multiplyToRef(e,t){let i=this._x*e._w+this._y*e._z-this._z*e._y+this._w*e._x,r=-this._x*e._z+this._y*e._w+this._z*e._x+this._w*e._y,s=this._x*e._y-this._y*e._x+this._z*e._w+this._w*e._z,a=-this._x*e._x-this._y*e._y-this._z*e._z+this._w*e._w;return t.copyFromFloats(i,r,s,a),t}multiplyInPlace(e){return this.multiplyToRef(e,this)}multiplyByFloats(e,t,i,r){return this._x*=e,this._y*=t,this._z*=i,this._w*=r,this._isDirty=!0,this}divide(e){throw new ReferenceError("Can not divide a quaternion")}divideToRef(e,t){throw new ReferenceError("Can not divide a quaternion")}divideInPlace(e){throw new ReferenceError("Can not divide a quaternion")}minimizeInPlace(){throw new ReferenceError("Can not minimize a quaternion")}minimizeInPlaceFromFloats(){throw new ReferenceError("Can not minimize a quaternion")}maximizeInPlace(){throw new ReferenceError("Can not maximize a quaternion")}maximizeInPlaceFromFloats(){throw new ReferenceError("Can not maximize a quaternion")}negate(){return this.negateToRef(new n)}negateInPlace(){return this._x=-this._x,this._y=-this._y,this._z=-this._z,this._w=-this._w,this._isDirty=!0,this}negateToRef(e){return e._x=-this._x,e._y=-this._y,e._z=-this._z,e._w=-this._w,e._isDirty=!0,e}equalsToFloats(e,t,i,r){return this._x===e&&this._y===t&&this._z===i&&this._w===r}floorToRef(e){throw new ReferenceError("Can not floor a quaternion")}floor(){throw new ReferenceError("Can not floor a quaternion")}fractToRef(e){throw new ReferenceError("Can not fract a quaternion")}fract(){throw new ReferenceError("Can not fract a quaternion")}conjugateToRef(e){return e.copyFromFloats(-this._x,-this._y,-this._z,this._w),e}conjugateInPlace(){return this._x*=-1,this._y*=-1,this._z*=-1,this._isDirty=!0,this}conjugate(){return new n(-this._x,-this._y,-this._z,this._w)}invert(){let e=this.conjugate(),t=this.lengthSquared();return t==0||t==1||e.scaleInPlace(1/t),e}invertInPlace(){this.conjugateInPlace();let e=this.lengthSquared();return e==0||e==1?this:(this.scaleInPlace(1/e),this)}lengthSquared(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this.lengthSquared())}normalize(){return this.normalizeFromLength(this.length())}normalizeFromLength(e){return e===0||e===1?this:this.scaleInPlace(1/e)}normalizeToNew(){let e=new n(0,0,0,1);return this.normalizeToRef(e),e}normalizeToRef(e){let t=this.length();return t===0||t===1?e.copyFromFloats(this._x,this._y,this._z,this._w):this.scaleToRef(1/t,e)}toEulerAngles(){let e=b.Zero();return this.toEulerAnglesToRef(e),e}toEulerAnglesToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=r*t-i*s,o=.4999999;if(a<-o)e._y=2*Math.atan2(r,s),e._x=Math.PI/2,e._z=0,e._isDirty=!0;else if(a>o)e._y=2*Math.atan2(r,s),e._x=-Math.PI/2,e._z=0,e._isDirty=!0;else{let l=s*s,c=t*t,f=i*i,d=r*r;e._z=Math.atan2(2*(i*r+t*s),-c-f+d+l),e._x=Math.asin(-2*a),e._y=Math.atan2(2*(t*i+r*s),c-f-d+l),e._isDirty=!0}return e}toAlphaBetaGammaToRef(e){let t=this._z,i=this._x,r=this._y,s=this._w,a=Math.sqrt(i*i+r*r),o=Math.sqrt(t*t+s*s),l=2*Math.atan2(a,o),c=2*Math.atan2(t,s),f=2*Math.atan2(r,i),d=(c+f)/2,h=(c-f)/2;return e.set(h,l,d),e}toRotationMatrix(e){return Z.FromQuaternionToRef(this,e),e}fromRotationMatrix(e){return n.FromRotationMatrixToRef(e,this),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}toAxisAngle(){let e=b.Zero(),t=this.toAxisAngleToRef(e);return{axis:e,angle:t}}toAxisAngleToRef(e){let t,i=Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z),r=this._w;return i>0?(t=2*Math.atan2(i,r),e.set(this._x/i,this._y/i,this._z/i)):(t=0,e.set(1,0,0)),t}static FromRotationMatrix(e){let t=new n;return n.FromRotationMatrixToRef(e,t),t}static FromRotationMatrixToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[1],l=i[5],c=i[9],f=i[2],d=i[6],h=i[10],u=r+l+h,m;return u>0?(m=.5/Math.sqrt(u+1),t._w=.25/m,t._x=(d-c)*m,t._y=(a-f)*m,t._z=(o-s)*m,t._isDirty=!0):r>l&&r>h?(m=2*Math.sqrt(1+r-l-h),t._w=(d-c)/m,t._x=.25*m,t._y=(s+o)/m,t._z=(a+f)/m,t._isDirty=!0):l>h?(m=2*Math.sqrt(1+l-r-h),t._w=(a-f)/m,t._x=(s+o)/m,t._y=.25*m,t._z=(c+d)/m,t._isDirty=!0):(m=2*Math.sqrt(1+h-r-l),t._w=(o-s)/m,t._x=(a+f)/m,t._y=(c+d)/m,t._z=.25*m,t._isDirty=!0),t}static Dot(e,t){return e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w}static AreClose(e,t,i=.1){let r=n.Dot(e,t);return 1-r*r<=i}static SmoothToRef(e,t,i,r,s){let a=r===0?1:i/r;return a=Bt(a,0,1),n.SlerpToRef(e,t,a,s),s}static Zero(){return new n(0,0,0,0)}static Inverse(e){return new n(-e._x,-e._y,-e._z,e._w)}static InverseToRef(e,t){return t.set(-e._x,-e._y,-e._z,e._w),t}static Identity(){return new n(0,0,0,1)}static IsIdentity(e){return e&&e._x===0&&e._y===0&&e._z===0&&e._w===1}static RotationAxis(e,t){return n.RotationAxisToRef(e,t,new n)}static RotationAxisToRef(e,t,i){i._w=Math.cos(t/2);let r=Math.sin(t/2)/e.length();return i._x=e._x*r,i._y=e._y*r,i._z=e._z*r,i._isDirty=!0,i}static FromArray(e,t){return t||(t=0),new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t,i){return i._x=e[t],i._y=e[t+1],i._z=e[t+2],i._w=e[t+3],i._isDirty=!0,i}static FromFloatsToRef(e,t,i,r,s){return s.copyFromFloats(e,t,i,r),s}static FromEulerAngles(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerAnglesToRef(e,t,i,r){return n.RotationYawPitchRollToRef(t,e,i,r),r}static FromEulerVector(e){let t=new n;return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromEulerVectorToRef(e,t){return n.RotationYawPitchRollToRef(e._y,e._x,e._z,t),t}static FromUnitVectorsToRef(e,t,i,r=Ft){let s=b.Dot(e,t)+1;return sMath.abs(e.z)?i.set(-e.y,e.x,0,0):i.set(0,-e.z,e.y,0):(b.CrossToRef(e,t,$.Vector3[0]),i.set($.Vector3[0].x,$.Vector3[0].y,$.Vector3[0].z,s)),i.normalize()}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){let s=i*.5,a=t*.5,o=e*.5,l=Math.sin(s),c=Math.cos(s),f=Math.sin(a),d=Math.cos(a),h=Math.sin(o),u=Math.cos(o);return r._x=u*f*c+h*d*l,r._y=h*d*c-u*f*l,r._z=u*d*l-h*f*c,r._w=u*d*c+h*f*l,r._isDirty=!0,r}static RotationAlphaBetaGamma(e,t,i){let r=new n;return n.RotationAlphaBetaGammaToRef(e,t,i,r),r}static RotationAlphaBetaGammaToRef(e,t,i,r){let s=(i+e)*.5,a=(i-e)*.5,o=t*.5;return r._x=Math.cos(a)*Math.sin(o),r._y=Math.sin(a)*Math.sin(o),r._z=Math.sin(s)*Math.cos(o),r._w=Math.cos(s)*Math.cos(o),r._isDirty=!0,r}static RotationQuaternionFromAxis(e,t,i){let r=new n(0,0,0,0);return n.RotationQuaternionFromAxisToRef(e,t,i,r),r}static RotationQuaternionFromAxisToRef(e,t,i,r){let s=Xe.Matrix[0];return e=e.normalizeToRef(Xe.Vector3[0]),t=t.normalizeToRef(Xe.Vector3[1]),i=i.normalizeToRef(Xe.Vector3[2]),Z.FromXYZAxesToRef(e,t,i,s),n.FromRotationMatrixToRef(s,r),r}static FromLookDirectionLH(e,t){let i=new n;return n.FromLookDirectionLHToRef(e,t,i),i}static FromLookDirectionLHToRef(e,t,i){let r=Xe.Matrix[0];return Z.LookDirectionLHToRef(e,t,r),n.FromRotationMatrixToRef(r,i),i}static FromLookDirectionRH(e,t){let i=new n;return n.FromLookDirectionRHToRef(e,t,i),i}static FromLookDirectionRHToRef(e,t,i){let r=Xe.Matrix[0];return Z.LookDirectionRHToRef(e,t,r),n.FromRotationMatrixToRef(r,i)}static Slerp(e,t,i){let r=n.Identity();return n.SlerpToRef(e,t,i,r),r}static SlerpToRef(e,t,i,r){let s,a,o=e._x*t._x+e._y*t._y+e._z*t._z+e._w*t._w,l=!1;if(o<0&&(l=!0,o=-o),o>.999999)a=1-i,s=l?-i:i;else{let c=Math.acos(o),f=1/Math.sin(c);a=Math.sin((1-i)*c)*f,s=l?-Math.sin(i*c)*f:Math.sin(i*c)*f}return r._x=a*e._x+s*t._x,r._y=a*e._y+s*t._y,r._z=a*e._z+s*t._z,r._w=a*e._w+s*t._w,r._isDirty=!0,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e._x*l+i._x*c+t._x*f+r._x*d,u=e._y*l+i._y*c+t._y*f+r._y*d,m=e._z*l+i._z*c+t._z*f+r._z*d,_=e._w*l+i._w*c+t._w*f+r._w*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;return a._x=(o-s)*6*e._x+(3*o-4*s+1)*t._x+(-o+s)*6*i._x+(3*o-2*s)*r._x,a._y=(o-s)*6*e._y+(3*o-4*s+1)*t._y+(-o+s)*6*i._y+(3*o-2*s)*r._y,a._z=(o-s)*6*e._z+(3*o-4*s+1)*t._z+(-o+s)*6*i._z+(3*o-2*s)*r._z,a._w=(o-s)*6*e._w+(3*o-4*s+1)*t._w+(-o+s)*6*i._w+(3*o-2*s)*r._w,a._isDirty=!0,a}static Normalize(e){let t=n.Zero();return n.NormalizeToRef(e,t),t}static NormalizeToRef(e,t){return e.normalizeToRef(t),t}static Clamp(e,t,i){let r=new n;return n.ClampToRef(e,t,i,r),r}static ClampToRef(e,t,i,r){return r.copyFromFloats(Bt(e.x,t.x,i.x),Bt(e.y,t.y,i.y),Bt(e.z,t.z,i.z),Bt(e.w,t.w,i.w))}static Random(e=0,t=1){return new n(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static RandomToRef(e=0,t=1,i){return i.copyFromFloats(ur(e,t),ur(e,t),ur(e,t),ur(e,t))}static Minimize(){throw new ReferenceError("Quaternion.Minimize does not make sense")}static Maximize(){throw new ReferenceError("Quaternion.Maximize does not make sense")}static Distance(e,t){return Math.sqrt(n.DistanceSquared(e,t))}static DistanceSquared(e,t){let i=e.x-t.x,r=e.y-t.y,s=e.z-t.z,a=e.w-t.w;return i*i+r*r+s*s+a*a}static Center(e,t){return n.CenterToRef(e,t,n.Zero())}static CenterToRef(e,t,i){return i.copyFromFloats((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2,(e.w+t.w)/2)}};Ke._V8PerformanceHack=new Ke(.5,.5,.5,.5);Object.defineProperties(Ke.prototype,{dimension:{value:[4]},rank:{value:1}});Z=class n{static get Use64Bits(){return gs.MatrixUse64Bits}get m(){return this._m}markAsUpdated(){this.updateFlag=bm._UpdateFlagSeed++,this._isIdentity=!1,this._isIdentity3x2=!1,this._isIdentityDirty=!0,this._isIdentity3x2Dirty=!0}_updateIdentityStatus(e,t=!1,i=!1,r=!0){this._isIdentity=e,this._isIdentity3x2=e||i,this._isIdentityDirty=this._isIdentity?!1:t,this._isIdentity3x2Dirty=this._isIdentity3x2?!1:r}constructor(){this._isIdentity=!1,this._isIdentityDirty=!0,this._isIdentity3x2=!0,this._isIdentity3x2Dirty=!0,this.updateFlag=-1,gs.MatrixTrackPrecisionChange&&gs.MatrixTrackedMatrices.push(this),this._m=new gs.MatrixCurrentType(16),this.markAsUpdated()}isIdentity(){if(this._isIdentityDirty){this._isIdentityDirty=!1;let e=this._m;this._isIdentity=e[0]===1&&e[1]===0&&e[2]===0&&e[3]===0&&e[4]===0&&e[5]===1&&e[6]===0&&e[7]===0&&e[8]===0&&e[9]===0&&e[10]===1&&e[11]===0&&e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1}return this._isIdentity}isIdentityAs3x2(){return this._isIdentity3x2Dirty&&(this._isIdentity3x2Dirty=!1,this._m[0]!==1||this._m[5]!==1||this._m[15]!==1?this._isIdentity3x2=!1:this._m[1]!==0||this._m[2]!==0||this._m[3]!==0||this._m[4]!==0||this._m[6]!==0||this._m[7]!==0||this._m[8]!==0||this._m[9]!==0||this._m[10]!==0||this._m[11]!==0||this._m[12]!==0||this._m[13]!==0||this._m[14]!==0?this._isIdentity3x2=!1:this._isIdentity3x2=!0),this._isIdentity3x2}determinant(){if(this._isIdentity===!0)return 1;let e=this._m,t=e[0],i=e[1],r=e[2],s=e[3],a=e[4],o=e[5],l=e[6],c=e[7],f=e[8],d=e[9],h=e[10],u=e[11],m=e[12],_=e[13],p=e[14],g=e[15],v=h*g-p*u,T=d*g-_*u,S=d*p-_*h,E=f*g-m*u,A=f*p-h*m,R=f*_-m*d,M=+(o*v-l*T+c*S),y=-(a*v-l*E+c*A),C=+(a*T-o*E+c*R),D=-(a*S-o*A+l*R);return t*M+i*y+r*C+s*D}toString(){return`{${this.m[0]}, ${this.m[1]}, ${this.m[2]}, ${this.m[3]} ${this.m[4]}, ${this.m[5]}, ${this.m[6]}, ${this.m[7]} ${this.m[8]}, ${this.m[9]}, ${this.m[10]}, ${this.m[11]} -${this.m[12]}, ${this.m[13]}, ${this.m[14]}, ${this.m[15]}}`}toArray(e=null,t=0){if(!e)return this._m;let i=this._m;for(let r=0;r<16;r++)e[t+r]=i[r];return this}asArray(){return this._m}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}copyFromFloats(...e){return n.FromArrayToRef(e,0,this)}set(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=e[i];return this.markAsUpdated(),this}setAll(e){let t=this._m;for(let i=0;i<16;i++)t[i]=e;return this.markAsUpdated(),this}invert(){return this.invertToRef(this),this}reset(){return n.FromValuesToRef(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,this),this._updateIdentityStatus(!1),this}add(e){let t=new n;return this.addToRef(e,t),t}addToRef(e,t){let i=this._m,r=t._m,s=e.m;for(let a=0;a<16;a++)r[a]=i[a]+s[a];return t.markAsUpdated(),t}addToSelf(e){let t=this._m,i=e.m;return t[0]+=i[0],t[1]+=i[1],t[2]+=i[2],t[3]+=i[3],t[4]+=i[4],t[5]+=i[5],t[6]+=i[6],t[7]+=i[7],t[8]+=i[8],t[9]+=i[9],t[10]+=i[10],t[11]+=i[11],t[12]+=i[12],t[13]+=i[13],t[14]+=i[14],t[15]+=i[15],this.markAsUpdated(),this}addInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]+=i[r];return this.markAsUpdated(),this}addInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]+=e[i];return this.markAsUpdated(),this}subtract(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]-r[a];return t.markAsUpdated(),t}subtractInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractFromFloats(...e){return this.subtractFromFloatsToRef(...e,new n)}subtractFromFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]-s[a];return t.markAsUpdated(),t}invertToRef(e){return this._isIdentity===!0?(n.IdentityToRef(e),e):(jC(this,e.asArray())?e.markAsUpdated():e.copyFrom(this),e)}addAtIndex(e,t){return this._m[e]+=t,this.markAsUpdated(),this}multiplyAtIndex(e,t){return this._m[e]*=t,this.markAsUpdated(),this}setTranslationFromFloats(e,t,i){return this._m[12]=e,this._m[13]=t,this._m[14]=i,this.markAsUpdated(),this}addTranslationFromFloats(e,t,i){return this._m[12]+=e,this._m[13]+=t,this._m[14]+=i,this.markAsUpdated(),this}setTranslation(e){return this.setTranslationFromFloats(e._x,e._y,e._z)}getTranslation(){return new b(this._m[12],this._m[13],this._m[14])}getTranslationToRef(e){return e.x=this._m[12],e.y=this._m[13],e.z=this._m[14],e}removeRotationAndScaling(){let e=this.m;return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e[12],e[13],e[14],e[15],this),this._updateIdentityStatus(e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1),this}copyFrom(e){e.copyToArray(this._m);let t=e;return this.updateFlag=t.updateFlag,this._updateIdentityStatus(t._isIdentity,t._isIdentityDirty,t._isIdentity3x2,t._isIdentity3x2Dirty),this}copyToArray(e,t=0){return bV(this,e,t),this}multiply(e){let t=new n;return this.multiplyToRef(e,t),t}multiplyInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]*=i[r];return this.markAsUpdated(),this}multiplyByFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e[i];return this.markAsUpdated(),this}multiplyByFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]*s[a];return t.markAsUpdated(),t}multiplyToRef(e,t){return this._isIdentity?(t.copyFrom(e),t):e._isIdentity?(t.copyFrom(this),t):(this.multiplyToArray(e,t._m,0),t.markAsUpdated(),t)}multiplyToArray(e,t,i){return KC(this,e,t,i),this}divide(e){return this.divideToRef(e,new n)}divideToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]/r[a];return t.markAsUpdated(),t}divideInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]/=i[r];return this.markAsUpdated(),this}minimizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}minimizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}maximizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}maximizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}negate(){return this.negateToRef(new n)}negateInPlace(){let e=this._m;for(let t=0;t<16;t++)e[t]=-e[t];return this.markAsUpdated(),this}negateToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=-t[r];return e.markAsUpdated(),e}equals(e){let t=e;if(!t)return!1;if((this._isIdentity||t._isIdentity)&&!this._isIdentityDirty&&!t._isIdentityDirty)return this._isIdentity&&t._isIdentity;let i=this.m,r=t.m;return i[0]===r[0]&&i[1]===r[1]&&i[2]===r[2]&&i[3]===r[3]&&i[4]===r[4]&&i[5]===r[5]&&i[6]===r[6]&&i[7]===r[7]&&i[8]===r[8]&&i[9]===r[9]&&i[10]===r[10]&&i[11]===r[11]&&i[12]===r[12]&&i[13]===r[13]&&i[14]===r[14]&&i[15]===r[15]}equalsWithEpsilon(e,t=0){let i=this._m,r=e.m;for(let s=0;s<16;s++)if(!Ri(i[s],r[s],t))return!1;return!0}equalsToFloats(...e){let t=this._m;for(let i=0;i<16;i++)if(t[i]!=e[i])return!1;return!0}floor(){return this.floorToRef(new n)}floorToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=Math.floor(t[r]);return e.markAsUpdated(),e}fract(){return this.fractToRef(new n)}fractToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=t[r]-Math.floor(t[r]);return e.markAsUpdated(),e}clone(){let e=new n;return e.copyFrom(this),e}getClassName(){return"Matrix"}getHashCode(){let e=Es(this._m[0]);for(let t=1;t<16;t++)e=e*397^Es(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new Ke,this.decompose(e.scaling,e.rotationQuaternion,e.position)}decompose(e,t,i,r,s=!0){if(this._isIdentity)return i&&i.setAll(0),e&&e.setAll(1),t&&t.copyFromFloats(0,0,0,1),!0;let a=this._m;if(i&&i.copyFromFloats(a[12],a[13],a[14]),e=e||Xe.Vector3[0],e.x=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]),e.y=Math.sqrt(a[4]*a[4]+a[5]*a[5]+a[6]*a[6]),e.z=Math.sqrt(a[8]*a[8]+a[9]*a[9]+a[10]*a[10]),r){let o=(s?r.absoluteScaling.x:r.scaling.x)<0?-1:1,l=(s?r.absoluteScaling.y:r.scaling.y)<0?-1:1,c=(s?r.absoluteScaling.z:r.scaling.z)<0?-1:1;e.x*=o,e.y*=l,e.z*=c}else this.determinant()<=0&&(e.y*=-1);if(e._x===0||e._y===0||e._z===0)return t&&t.copyFromFloats(0,0,0,1),!1;if(t){let o=1/e._x,l=1/e._y,c=1/e._z;n.FromValuesToRef(a[0]*o,a[1]*o,a[2]*o,0,a[4]*l,a[5]*l,a[6]*l,0,a[8]*c,a[9]*c,a[10]*c,0,0,0,0,1,Xe.Matrix[0]),Ke.FromRotationMatrixToRef(Xe.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Ni(this._m[t+0],this._m[t+1],this._m[t+2],this._m[t+3])}getRowToRef(e,t){if(e>=0&&e<=3){let i=e*4;t.x=this._m[i+0],t.y=this._m[i+1],t.z=this._m[i+2],t.w=this._m[i+3]}return t}setRow(e,t){return this.setRowFromFloats(e,t.x,t.y,t.z,t.w)}transpose(){let e=new n;return n.TransposeToRef(this,e),e}transposeToRef(e){return n.TransposeToRef(this,e),e}setRowFromFloats(e,t,i,r,s){if(e<0||e>3)return this;let a=e*4;return this._m[a+0]=t,this._m[a+1]=i,this._m[a+2]=r,this._m[a+3]=s,this.markAsUpdated(),this}scale(e){let t=new n;return this.scaleToRef(e,t),t}scaleToRef(e,t){for(let i=0;i<16;i++)t._m[i]=this._m[i]*e;return t.markAsUpdated(),t}scaleAndAddToRef(e,t){for(let i=0;i<16;i++)t._m[i]+=this._m[i]*e;return t.markAsUpdated(),t}scaleInPlace(e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e;return this.markAsUpdated(),this}toNormalMatrix(e){let t=Xe.Matrix[0];this.invertToRef(t),t.transposeToRef(e);let i=e._m;return n.FromValuesToRef(i[0],i[1],i[2],0,i[4],i[5],i[6],0,i[8],i[9],i[10],0,0,0,0,1,e),e}getRotationMatrix(){let e=new n;return this.getRotationMatrixToRef(e),e}getRotationMatrixToRef(e){let t=Xe.Vector3[0];if(!this.decompose(t))return n.IdentityToRef(e),e;let i=this._m,r=1/t._x,s=1/t._y,a=1/t._z;return n.FromValuesToRef(i[0]*r,i[1]*r,i[2]*r,0,i[4]*s,i[5]*s,i[6]*s,0,i[8]*a,i[9]*a,i[10]*a,0,0,0,0,1,e),e}toggleModelMatrixHandInPlace(){let e=this._m;return e[2]*=-1,e[6]*=-1,e[8]*=-1,e[9]*=-1,e[14]*=-1,this.markAsUpdated(),this}toggleProjectionMatrixHandInPlace(){let e=this._m;return e[8]*=-1,e[9]*=-1,e[10]*=-1,e[11]*=-1,this.markAsUpdated(),this}static FromArray(e,t=0){let i=new n;return n.FromArrayToRef(e,t,i),i}static FromArrayToRef(e,t,i){for(let r=0;r<16;r++)i._m[r]=e[r+t];return i.markAsUpdated(),i}static FromFloat32ArrayToRefScaled(e,t,i,r){return r._m[0]=e[0+t]*i,r._m[1]=e[1+t]*i,r._m[2]=e[2+t]*i,r._m[3]=e[3+t]*i,r._m[4]=e[4+t]*i,r._m[5]=e[5+t]*i,r._m[6]=e[6+t]*i,r._m[7]=e[7+t]*i,r._m[8]=e[8+t]*i,r._m[9]=e[9+t]*i,r._m[10]=e[10+t]*i,r._m[11]=e[11+t]*i,r._m[12]=e[12+t]*i,r._m[13]=e[13+t]*i,r._m[14]=e[14+t]*i,r._m[15]=e[15+t]*i,r.markAsUpdated(),r}static get IdentityReadOnly(){return n._IdentityReadOnly}static FromValuesToRef(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){let v=g._m;v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p){let g=new n,v=g._m;return v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated(),g}static Compose(e,t,i){let r=new n;return n.ComposeToRef(e,t,i,r),r}static ComposeToRef(e,t,i,r){let s=r._m,a=t._x,o=t._y,l=t._z,c=t._w,f=a+a,d=o+o,h=l+l,u=a*f,m=a*d,_=a*h,p=o*d,g=o*h,v=l*h,T=c*f,S=c*d,E=c*h,A=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*A,s[1]=(m+E)*A,s[2]=(_-S)*A,s[3]=0,s[4]=(m-E)*R,s[5]=(1-(u+v))*R,s[6]=(g+T)*R,s[7]=0,s[8]=(_+S)*M,s[9]=(g-T)*M,s[10]=(1-(u+p))*M,s[11]=0,s[12]=i._x,s[13]=i._y,s[14]=i._z,s[15]=1,r.markAsUpdated(),r}static Identity(){let e=n.FromValues(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return e._updateIdentityStatus(!0),e}static IdentityToRef(e){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,e),e._updateIdentityStatus(!0),e}static Zero(){let e=n.FromValues(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return e._updateIdentityStatus(!1),e}static RotationX(e){let t=new n;return n.RotationXToRef(e,t),t}static Invert(e){let t=new n;return e.invertToRef(t),t}static RotationXToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(1,0,0,0,0,r,i,0,0,-i,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationY(e){let t=new n;return n.RotationYToRef(e,t),t}static RotationYToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,0,-i,0,0,1,0,0,i,0,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationZ(e){let t=new n;return n.RotationZToRef(e,t),t}static RotationZToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,i,0,0,-i,r,0,0,0,0,1,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationAxis(e,t){let i=new n;return n.RotationAxisToRef(e,t,i),i}static RotationAxisToRef(e,t,i){let r=Math.sin(-t),s=Math.cos(-t),a=1-s;e=e.normalizeToRef(Xe.Vector3[0]);let o=i._m;return o[0]=e._x*e._x*a+s,o[1]=e._x*e._y*a-e._z*r,o[2]=e._x*e._z*a+e._y*r,o[3]=0,o[4]=e._y*e._x*a+e._z*r,o[5]=e._y*e._y*a+s,o[6]=e._y*e._z*a-e._x*r,o[7]=0,o[8]=e._z*e._x*a-e._y*r,o[9]=e._z*e._y*a+e._x*r,o[10]=e._z*e._z*a+s,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,i.markAsUpdated(),i}static RotationAlignToRef(e,t,i,r=!1){let s=b.Dot(t,e),a=i._m;if(s<-1+Ft)a[0]=-1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=r?1:-1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=r?-1:1,a[11]=0;else{let o=b.Cross(t,e),l=1/(1+s);a[0]=o._x*o._x*l+s,a[1]=o._y*o._x*l-o._z,a[2]=o._z*o._x*l+o._y,a[3]=0,a[4]=o._x*o._y*l+o._z,a[5]=o._y*o._y*l+s,a[6]=o._z*o._y*l-o._x,a[7]=0,a[8]=o._x*o._z*l-o._y,a[9]=o._y*o._z*l+o._x,a[10]=o._z*o._z*l+s,a[11]=0}return a[12]=0,a[13]=0,a[14]=0,a[15]=1,i.markAsUpdated(),i}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){return Ke.RotationYawPitchRollToRef(e,t,i,Xe.Quaternion[0]),Xe.Quaternion[0].toRotationMatrix(r),r}static Scaling(e,t,i){let r=new n;return n.ScalingToRef(e,t,i,r),r}static ScalingToRef(e,t,i,r){return n.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1,r),r._updateIdentityStatus(e===1&&t===1&&i===1),r}static Translation(e,t,i){let r=new n;return n.TranslationToRef(e,t,i,r),r}static TranslationToRef(e,t,i,r){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e,t,i,1,r),r._updateIdentityStatus(e===0&&t===0&&i===0),r}static Lerp(e,t,i){let r=new n;return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){let s=r._m,a=e.m,o=t.m;for(let l=0;l<16;l++)s[l]=a[l]*(1-i)+o[l]*i;return r.markAsUpdated(),r}static DecomposeLerp(e,t,i){let r=new n;return n.DecomposeLerpToRef(e,t,i,r),r}static DecomposeLerpToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Quaternion[0],o=Xe.Vector3[1];e.decompose(s,a,o);let l=Xe.Vector3[2],c=Xe.Quaternion[1],f=Xe.Vector3[3];t.decompose(l,c,f);let d=Xe.Vector3[4];b.LerpToRef(s,l,i,d);let h=Xe.Quaternion[2];Ke.SlerpToRef(a,c,i,h);let u=Xe.Vector3[5];return b.LerpToRef(o,f,i,u),n.ComposeToRef(d,h,u,r),r}static LookAtLH(e,t,i){let r=new n;return n.LookAtLHToRef(e,t,i,r),r}static LookAtLHToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.Vector3[2];t.subtractToRef(e,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookAtRH(e,t,i){let r=new n;return n.LookAtRHToRef(e,t,i,r),r}static LookAtRHToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.Vector3[2];e.subtractToRef(t,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookDirectionLH(e,t){let i=new n;return n.LookDirectionLHToRef(e,t,i),i}static LookDirectionLHToRef(e,t,i){let r=Xe.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=Xe.Vector3[1];return b.CrossToRef(t,r,s),n.FromValuesToRef(s._x,s._y,s._z,0,t._x,t._y,t._z,0,r._x,r._y,r._z,0,0,0,0,1,i),i}static LookDirectionRH(e,t){let i=new n;return n.LookDirectionRHToRef(e,t,i),i}static LookDirectionRHToRef(e,t,i){let r=Xe.Vector3[2];return b.CrossToRef(t,e,r),n.FromValuesToRef(r._x,r._y,r._z,0,t._x,t._y,t._z,0,e._x,e._y,e._z,0,0,0,0,1,i),i}static OrthoLH(e,t,i,r,s){let a=new n;return n.OrthoLHToRef(e,t,i,r,a,s),a}static OrthoLHToRef(e,t,i,r,s,a){let o=i,l=r,c=2/e,f=2/t,d=2/(l-o),h=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,h,1,s),a&&s.multiplyToRef(uh,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&h===0),s}static OrthoOffCenterLH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l){let c=s,f=a,d=2/(t-e),h=2/(r-i),u=2/(f-c),m=-(f+c)/(f-c),_=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,h,0,0,0,0,u,0,_,p,m,1,o),l&&o.multiplyToRef(uh,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=-o*Math.cos(l),u=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),Xe.Matrix[0].multiplyToRef(f,f),f}static OrthoOffCenterRH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterRHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterRHToRef(e,t,i,r,s,a,o,l){return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l),o._m[10]*=-1,o}static ObliqueOffCenterRHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=o*Math.cos(l),u=o*Math.sin(l);return n.TranslationToRef(0,0,c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,-c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),Xe.Matrix[0].multiplyToRef(f,f),f}static PerspectiveLH(e,t,i,r,s,a=0){let o=new n,l=i,c=r,f=2*l/e,d=2*l/t,h=(c+l)/(c-l),u=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,h,1,0,0,u,0,o),s&&o.multiplyToRef(uh,o),o._updateIdentityStatus(!1),o}static PerspectiveFovLH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovLHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovLHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?-1:d!==0?(d+f)/(d-f):1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,1,0,0,p,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseLHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovRH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovRHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovRHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?1:d!==0?-(d+f)/(d-f):-1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,-1,0,0,p,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseRHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static GetFinalMatrix(e,t,i,r,s,a){let o=e.width,l=e.height,c=e.x,f=e.y,d=n.FromValues(o/2,0,0,0,0,-l/2,0,0,0,0,a-s,0,c+o/2,l/2+f,s,1),h=new n;return t.multiplyToRef(i,h),h.multiplyToRef(r,h),h.multiplyToRef(d,h)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return gs.MatrixUse64Bits?i:new Float32Array(i)}static GetAsMatrix3x3(e){let t=e.m,i=[t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]];return gs.MatrixUse64Bits?i:new Float32Array(i)}static Transpose(e){let t=new n;return n.TransposeToRef(e,t),t}static TransposeToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[12],l=i[1],c=i[5],f=i[9],d=i[13],h=i[2],u=i[6],m=i[10],_=i[14],p=i[3],g=i[7],v=i[11],T=i[15],S=t._m;return S[0]=r,S[1]=s,S[2]=a,S[3]=o,S[4]=l,S[5]=c,S[6]=f,S[7]=d,S[8]=h,S[9]=u,S[10]=m,S[11]=_,S[12]=p,S[13]=g,S[14]=v,S[15]=T,t.markAsUpdated(),t._updateIdentityStatus(e._isIdentity,e._isIdentityDirty),t}static Reflection(e){let t=new n;return n.ReflectionToRef(e,t),t}static ReflectionToRef(e,t){e.normalize();let i=e.normal.x,r=e.normal.y,s=e.normal.z,a=-2*i,o=-2*r,l=-2*s;return n.FromValuesToRef(a*i+1,o*i,l*i,0,a*r,o*r+1,l*r,0,a*s,o*s,l*s+1,0,a*e.d,o*e.d,l*e.d,1,t),t}static FromXYZAxesToRef(e,t,i,r){return n.FromValuesToRef(e._x,e._y,e._z,0,t._x,t._y,t._z,0,i._x,i._y,i._z,0,0,0,0,1,r),r}static FromQuaternionToRef(e,t){let i=e._x*e._x,r=e._y*e._y,s=e._z*e._z,a=e._x*e._y,o=e._z*e._w,l=e._z*e._x,c=e._y*e._w,f=e._y*e._z,d=e._x*e._w;return t._m[0]=1-2*(r+s),t._m[1]=2*(a+o),t._m[2]=2*(l-c),t._m[3]=0,t._m[4]=2*(a-o),t._m[5]=1-2*(s+i),t._m[6]=2*(f+d),t._m[7]=0,t._m[8]=2*(l+c),t._m[9]=2*(f-d),t._m[10]=1-2*(r+i),t._m[11]=0,t._m[12]=0,t._m[13]=0,t._m[14]=0,t._m[15]=1,t.markAsUpdated(),t}};Z._IdentityReadOnly=Z.Identity();Object.defineProperties(Z.prototype,{dimension:{value:[4,4]},rank:{value:2}});Xe=class{};Xe.Vector3=rc(11,b.Zero);Xe.Matrix=rc(2,Z.Identity);Xe.Quaternion=rc(3,Ke.Zero);$=class{};$.Vector2=rc(3,we.Zero);$.Vector3=rc(13,b.Zero);$.Vector4=rc(3,Ni.Zero);$.Quaternion=rc(3,Ke.Zero);$.Matrix=rc(8,Z.Identity);Ut("BABYLON.Vector2",we);Ut("BABYLON.Vector3",b);Ut("BABYLON.Vector4",Ni);Ut("BABYLON.Matrix",Z);uh=Z.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var MV,Hs,IV,Mm=I(()=>{ke();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(MV||(MV={}));Hs=class{};Hs.X=new b(1,0,0);Hs.Y=new b(0,1,0);Hs.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(IV||(IV={}))});function Im(n){return Math.pow(n,Rm)}function ym(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function Cm(n){return Math.pow(n,EV)}function Pm(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var Ee,ft,Dn,zt=I(()=>{pl();$i();Kn();jn();Ee=class n{constructor(e=0,t=0,i=0){this.r=e,this.g=t,this.b=i}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+"}"}getClassName(){return"Color3"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toColor4(e=1){return new ft(this.r,this.g,this.b,e)}asArray(){return[this.r,this.g,this.b]}toLuminance(){return this.r*.3+this.g*.59+this.b*.11}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyByFloats(e,t,i){return new n(this.r*e,this.g*t,this.b*i)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.r,e.g,e.b)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.r,e.g,e.b)}minimizeInPlaceFromFloats(e,t,i){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this}maximizeInPlaceFromFloats(e,t,i){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b}equalsFloats(e,t,i){return this.equalsToFloats(e,t,i)}equalsToFloats(e,t,i){return this.r===e&&this.g===t&&this.b===i}equalsWithEpsilon(e,t=Ft){return Ri(this.r,e.r,t)&&Ri(this.g,e.g,t)&&Ri(this.b,e.b,t)}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}scale(e){return new n(this.r*e,this.g*e,this.b*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t}clampToRef(e=0,t=1,i){return i.r=Bt(this.r,e,t),i.g=Bt(this.g,e,t),i.b=Bt(this.b,e,t),i}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b)}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addInPlaceFromFloats(e,t,i){return this.r+=e,this.g+=t,this.b+=i,this}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this}subtractFromFloats(e,t,i){return new n(this.r-e,this.g-t,this.b-i)}subtractFromFloatsToRef(e,t,i,r){return r.r=this.r-e,r.g=this.g-t,r.b=this.b-i,r}clone(){return new n(this.r,this.g,this.b)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copyFromFloats(e,t,i){return this.r=e,this.g=t,this.b=i,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this.r=this.g=this.b=e,this}toHexString(){let e=Math.round(this.r*255),t=Math.round(this.g*255),i=Math.round(this.b*255);return"#"+To(e)+To(t)+To(i)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,this)}toHSV(){return this.toHSVToRef(new n)}toHSVToRef(e){let t=this.r,i=this.g,r=this.b,s=Math.max(t,i,r),a=Math.min(t,i,r),o=0,l=0,c=s,f=s-a;return s!==0&&(l=f/s),s!=a&&(s==t?(o=(i-r)/f,i=0&&a<=1?(l=s,c=o):a>=1&&a<=2?(l=o,c=s):a>=2&&a<=3?(c=s,f=o):a>=3&&a<=4?(c=o,f=s):a>=4&&a<=5?(l=o,f=s):a>=5&&a<=6&&(l=s,f=o);let d=i-s;return r.r=l+d,r.g=c+d,r.b=f+d,r}static FromHSV(e,t,i){let r=new n(0,0,0);return n.HSVtoRGBToRef(e,t,i,r),r}static FromHexString(e){return new n(0,0,0).fromHexString(e)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2]}static FromInts(e,t,i){return new n(e/255,t/255,i/255)}static Lerp(e,t,i){let r=new n(0,0,0);return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d;return new n(h,u,m)}static Hermite1stDerivative(e,t,i,r,s){let a=n.Black();return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b}static Red(){return new n(1,0,0)}static Green(){return new n(0,1,0)}static Blue(){return new n(0,0,1)}static Black(){return new n(0,0,0)}static get BlackReadOnly(){return n._BlackReadOnly}static White(){return new n(1,1,1)}static Purple(){return new n(.5,0,.5)}static Magenta(){return new n(1,0,1)}static Yellow(){return new n(1,1,0)}static Gray(){return new n(.5,.5,.5)}static Teal(){return new n(0,1,1)}static Random(){return new n(Math.random(),Math.random(),Math.random())}};Ee._V8PerformanceHack=new Ee(.5,.5,.5);Ee._BlackReadOnly=Ee.Black();Object.defineProperties(Ee.prototype,{dimension:{value:[3]},rank:{value:1}});ft=class n{constructor(e=0,t=0,i=0,r=1){this.r=e,this.g=t,this.b=i,this.a=r}asArray(){return[this.r,this.g,this.b,this.a]}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e[t+3]=this.a,this}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this.a=e[t+3],this}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b,this.a+e.a)}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t.a=this.a+e.a,t}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this.a+=e.a,this}addInPlaceFromFloats(e,t,i,r){return this.r+=e,this.g+=t,this.b+=i,this.a+=r,this}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b,this.a-e.a)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t.a=this.a-e.a,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this.a-=e.a,this}subtractFromFloats(e,t,i,r){return new n(this.r-e,this.g-t,this.b-i,this.a-r)}subtractFromFloatsToRef(e,t,i,r,s){return s.r=this.r-e,s.g=this.g-t,s.b=this.b-i,s.a=this.a-r,s}scale(e){return new n(this.r*e,this.g*e,this.b*e,this.a*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this.a*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t.a=this.a*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t.a+=this.a*e,t}clampToRef(e=0,t=1,i){return i.r=Bt(this.r,e,t),i.g=Bt(this.g,e,t),i.b=Bt(this.b,e,t),i.a=Bt(this.a,e,t),i}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b,this.a*e.a)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t.a=this.a*e.a,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this.a*=e.a,this}multiplyByFloats(e,t,i,r){return new n(this.r*e,this.g*t,this.b*i,this.a*r)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.r=Math.min(this.r,e.r),this.g=Math.min(this.g,e.g),this.b=Math.min(this.b,e.b),this.a=Math.min(this.a,e.a),this}maximizeInPlace(e){return this.r=Math.max(this.r,e.r),this.g=Math.max(this.g,e.g),this.b=Math.max(this.b,e.b),this.a=Math.max(this.a,e.a),this}minimizeInPlaceFromFloats(e,t,i,r){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this.a=Math.min(r,this.a),this}maximizeInPlaceFromFloats(e,t,i,r){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this.a=Math.max(r,this.a),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}equalsWithEpsilon(e,t=Ft){return Ri(this.r,e.r,t)&&Ri(this.g,e.g,t)&&Ri(this.b,e.b,t)&&Ri(this.a,e.a,t)}equalsToFloats(e,t,i,r){return this.r===e&&this.g===t&&this.b===i&&this.a===r}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+" A:"+this.a+"}"}getClassName(){return"Color4"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e=e*397^(this.a*255|0),e}clone(){return new n().copyFrom(this)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this}copyFromFloats(e,t,i,r){return this.r=e,this.g=t,this.b=i,this.a=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.r=this.g=this.b=this.a=e,this}toHexString(e=!1){let t=Math.round(this.r*255),i=Math.round(this.g*255),r=Math.round(this.b*255);if(e)return"#"+To(t)+To(i)+To(r);let s=Math.round(this.a*255);return"#"+To(t)+To(i)+To(r)+To(s)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,e.length===9&&(this.a=parseInt(e.substring(7,9),16)/255),this)}toLinearSpace(e=!1){let t=new n;return this.toLinearSpaceToRef(t,e),t}toLinearSpaceToRef(e,t=!1){return t?(e.r=ym(this.r),e.g=ym(this.g),e.b=ym(this.b)):(e.r=Im(this.r),e.g=Im(this.g),e.b=Im(this.b)),e.a=this.a,this}toGammaSpace(e=!1){let t=new n;return this.toGammaSpaceToRef(t,e),t}toGammaSpaceToRef(e,t=!1){return t?(e.r=Pm(this.r),e.g=Pm(this.g),e.b=Pm(this.b)):(e.r=Cm(this.r),e.g=Cm(this.g),e.b=Cm(this.b)),e.a=this.a,this}static FromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?new n(0,0,0,0):new n(0,0,0,1).fromHexString(e)}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i,r.a=e.a+(t.a-e.a)*i,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d,_=e.a*l+i.a*c+t.a*f+r.a*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b,a.a=(o-s)*6*e.a+(3*o-4*s+1)*t.a+(-o+s)*6*i.a+(3*o-2*s)*r.a}static FromColor3(e,t=1){return new n(e.r,e.g,e.b,t)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2],i.a=e[t+3]}static FromInts(e,t,i,r){return new n(e/255,t/255,i/255,r/255)}static CheckColors4(e,t){if(e.length===t*3){let i=[];for(let r=0;rnew ft(0,0,0,0));Ut("BABYLON.Color3",Ee);Ut("BABYLON.Color4",ft)});var Ao,Dm=I(()=>{ke();Ao=class n{constructor(e,t,i,r){this.normal=new b(e,t,i),this.d=r}asArray(){return[this.normal.x,this.normal.y,this.normal.z,this.d]}clone(){return new n(this.normal.x,this.normal.y,this.normal.z,this.d)}getClassName(){return"Plane"}getHashCode(){let e=this.normal.getHashCode();return e=e*397^(this.d|0),e}normalize(){let e=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y+this.normal.z*this.normal.z),t=0;return e!==0&&(t=1/e),this.normal.x*=t,this.normal.y*=t,this.normal.z*=t,this.d*=t,this}transform(e){let t=n._TmpMatrix;e.invertToRef(t);let i=t.m,r=this.normal.x,s=this.normal.y,a=this.normal.z,o=this.d,l=r*i[0]+s*i[1]+a*i[2]+o*i[3],c=r*i[4]+s*i[5]+a*i[6]+o*i[7],f=r*i[8]+s*i[9]+a*i[10]+o*i[11],d=r*i[12]+s*i[13]+a*i[14]+o*i[15];return new n(l,c,f,d)}dotCoordinate(e){return this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z+this.d}copyFromPoints(e,t,i){let r=t.x-e.x,s=t.y-e.y,a=t.z-e.z,o=i.x-e.x,l=i.y-e.y,c=i.z-e.z,f=s*c-a*l,d=a*o-r*c,h=r*l-s*o,u=Math.sqrt(f*f+d*d+h*h),m;return u!==0?m=1/u:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=h*m,this.d=-(this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z),this}isFrontFacingTo(e,t){return b.Dot(this.normal,e)<=t}signedDistanceTo(e){return b.Dot(e,this.normal)+this.d}static FromArray(e){return new n(e[0],e[1],e[2],e[3])}static FromPoints(e,t,i){let r=new n(0,0,0,0);return r.copyFromPoints(e,t,i),r}static FromPositionAndNormal(e,t){let i=new n(0,0,0,0);return this.FromPositionAndNormalToRef(e,t,i)}static FromPositionAndNormalToRef(e,t,i){return i.normal.copyFrom(t),i.normal.normalize(),i.d=-e.dot(i.normal),i}static SignedDistanceToPlaneFromPositionAndNormal(e,t,i){let r=-(t.x*e.x+t.y*e.y+t.z*e.z);return b.Dot(i,t)+r}};Ao._TmpMatrix=Z.Identity()});var Mf,cx=I(()=>{Dm();Mf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new Ao(0,0,0,0));return n.GetPlanesToRef(e,t),t}static GetNearPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[2],t.normal.y=i[7]+i[6],t.normal.z=i[11]+i[10],t.d=i[15]+i[14],t.normalize()}static GetFarPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[2],t.normal.y=i[7]-i[6],t.normal.z=i[11]-i[10],t.d=i[15]-i[14],t.normalize()}static GetLeftPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[0],t.normal.y=i[7]+i[4],t.normal.z=i[11]+i[8],t.d=i[15]+i[12],t.normalize()}static GetRightPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[0],t.normal.y=i[7]-i[4],t.normal.z=i[11]-i[8],t.d=i[15]-i[12],t.normalize()}static GetTopPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[1],t.normal.y=i[7]-i[5],t.normal.z=i[11]-i[9],t.d=i[15]-i[13],t.normalize()}static GetBottomPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[1],t.normal.y=i[7]+i[5],t.normal.z=i[11]+i[9],t.d=i[15]+i[13],t.normalize()}static GetPlanesToRef(e,t){n.GetNearPlaneToRef(e,t[0]),n.GetFarPlaneToRef(e,t[1]),n.GetLeftPlaneToRef(e,t[2]),n.GetRightPlaneToRef(e,t[3]),n.GetTopPlaneToRef(e,t[4]),n.GetBottomPlaneToRef(e,t[5])}static IsPointInFrustum(e,t){for(let i=0;i<6;i++)if(t[i].dotCoordinate(e)<0)return!1;return!0}}});var yV,Lm,qC,Om,mh,ph=I(()=>{jn();ke();Kn();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(yV||(yV={}));Lm=class n{constructor(e){this._radians=e,this._radians<0&&(this._radians+=2*Math.PI)}degrees(){return this._radians*180/Math.PI}radians(){return this._radians}static BetweenTwoPoints(e,t){let i=t.subtract(e),r=Math.atan2(i.y,i.x);return new n(r)}static BetweenTwoVectors(e,t){let i=e.lengthSquared()*t.lengthSquared();if(i===0)return new n(Math.PI/2);i=Math.sqrt(i);let r=e.dot(t)/i;r=Bt(r,-1,1);let s=Math.acos(r);return new n(s)}static FromRadians(e){return new n(e)}static FromDegrees(e){return new n(e*Math.PI/180)}},qC=class{constructor(e,t,i){this.startPoint=e,this.midPoint=t,this.endPoint=i;let r=Math.pow(t.x,2)+Math.pow(t.y,2),s=(Math.pow(e.x,2)+Math.pow(e.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,o=(e.x-t.x)*(t.y-i.y)-(t.x-i.x)*(e.y-t.y);this.centerPoint=new we((s*(t.y-i.y)-a*(e.y-t.y))/o,((e.x-t.x)*a-(t.x-i.x)*s)/o),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=Lm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=Lm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=Lm.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();c-l>180&&(c-=360),c-l<-180&&(c+=360),f-c>180&&(f-=360),f-c<-180&&(f+=360),this.orientation=c-l<0?0:1,this.angle=Lm.FromDegrees(this.orientation===0?l-f:f-l)}},Om=class n{constructor(e,t){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new we(e,t))}addLineTo(e,t){if(this.closed)return this;let i=new we(e,t),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this}addArcTo(e,t,i,r,s=36){if(this.closed)return this;let a=this._points[this._points.length-1],o=new we(e,t),l=new we(i,r),c=new qC(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let h=0;h(1-l)*(1-l)*c+2*l*(1-l)*f+l*l*d,o=this._points[this._points.length-1];for(let l=0;l<=s;l++){let c=l/s,f=a(c,o.x,e,i),d=a(c,o.y,t,r);this.addLineTo(f,d)}return this}addBezierCurveTo(e,t,i,r,s,a,o=36){if(this.closed)return this;let l=(f,d,h,u,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*h+3*f*f*(1-f)*u+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,h=l(d,c.x,e,i,s),u=l(d,c.y,t,r,a);this.addLineTo(h,u)}return this}isPointInside(e){let t=!1,i=this._points.length;for(let r=i-1,s=0;sNumber.EPSILON){if(c<0&&(a=this._points[s],l=-l,o=this._points[r],c=-c),e.yo.y)continue;if(e.y===a.y&&e.x===a.x)return!0;{let f=c*(e.x-a.x)-l*(e.y-a.y);if(f===0)return!0;if(f<0)continue;t=!t}}else{if(e.y!==a.y)continue;if(o.x<=e.x&&e.x<=a.x||a.x<=e.x&&e.x<=o.x)return!0}}return t}close(){return this.closed=!0,this}length(){let e=this._length;if(this.closed){let t=this._points[this._points.length-1],i=this._points[0];e+=i.subtract(t).length()}return e}area(){let e=this._points.length,t=0;for(let i=e-1,r=0;r1)return we.Zero();let t=e*this.length(),i=0;for(let r=0;r=i&&t<=c){let f=l.normalize(),d=t-i;return new we(a.x+f.x*d,a.y+f.y*d)}i=c}return we.Zero()}static StartingAt(e,t){return new n(e,t)}},mh=class n{constructor(e,t=null,i,r=!1){this.path=e,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:b.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:Z.Identity()};for(let s=0;st){let c=e;e=t,t=c}let i=this.getCurve(),r=this.getPointAt(e),s=this.getPreviousPointIndexAt(e),a=this.getPointAt(t),o=this.getPreviousPointIndexAt(t)+1,l=[];return e!==0&&(s++,l.push(r)),l.push(...i.slice(s,o)),(t!==1||e===1)&&l.push(a),new n(l,this.getNormalAt(e),this._raw,this._alignTangentsWithPath)}update(e,t=null,i=!1){for(let r=0;rt+1;)t++,i=this._curve[e].subtract(this._curve[e-t]);return i}_normalVector(e,t){let i,r=e.length();if(r===0&&(r=1),t==null){let s;Ri(Math.abs(e.y)/r,1,Ft)?Ri(Math.abs(e.x)/r,1,Ft)?Ri(Math.abs(e.z)/r,1,Ft)?s=b.Zero():s=new b(0,0,1):s=new b(1,0,0):s=new b(0,-1,0),i=b.Cross(e,s)}else i=b.Cross(e,t),b.CrossToRef(i,e,i);return i.normalize(),i}_updatePointAtData(e,t=!1){if(this._pointAtData.id===e)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=e;let i=this.getPoints();if(e<=0)return this._setPointAtData(0,0,i[0],0,t);if(e>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,t);let r=i[0],s,a=0,o=e*this.length();for(let l=1;lo){let d=(a-o)/c,h=r.subtract(s),u=s.add(h.scaleInPlace(d));return this._setPointAtData(e,1-d,u,l-1,t)}r=s}return this._pointAtData}_setPointAtData(e,t,i,r,s){return this._pointAtData.point=i,this._pointAtData.position=e,this._pointAtData.subPosition=t,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=s,s&&this._updateInterpolationMatrix(),this._pointAtData}_updateInterpolationMatrix(){this._pointAtData.interpolationMatrix=Z.Identity();let e=this._pointAtData.previousPointArrayIndex;if(e!==this._tangents.length-1){let t=e+1,i=this._tangents[e].clone(),r=this._normals[e].clone(),s=this._binormals[e].clone(),a=this._tangents[t].clone(),o=this._normals[t].clone(),l=this._binormals[t].clone(),c=Ke.RotationQuaternionFromAxis(r,s,i),f=Ke.RotationQuaternionFromAxis(o,l,a);Ke.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var nc,fx=I(()=>{nc=class n{constructor(e,t){this.width=e,this.height=t}toString(){return`{W: ${this.width}, H: ${this.height}}`}getClassName(){return"Size"}getHashCode(){let e=this.width|0;return e=e*397^(this.height|0),e}copyFrom(e){this.width=e.width,this.height=e.height}copyFromFloats(e,t){return this.width=e,this.height=t,this}set(e,t){return this.copyFromFloats(e,t)}multiplyByFloats(e,t){return new n(this.width*e,this.height*t)}clone(){return new n(this.width,this.height)}equals(e){return e?this.width===e.width&&this.height===e.height:!1}get surface(){return this.width*this.height}static Zero(){return new n(0,0)}add(e){return new n(this.width+e.width,this.height+e.height)}subtract(e){return new n(this.width-e.width,this.height-e.height)}scale(e){return new n(this.width*e,this.height*e)}static Lerp(e,t,i){let r=e.width+(t.width-e.width)*i,s=e.height+(t.height-e.height)*i;return new n(r,s)}}});var CV=I(()=>{ke()});var xo,Nm=I(()=>{xo=class n{constructor(e,t,i,r){this.x=e,this.y=t,this.width=i,this.height=r}toGlobal(e,t){return new n(this.x*e,this.y*t,this.width*e,this.height*t)}toGlobalToRef(e,t,i){return i.x=this.x*e,i.y=this.y*t,i.width=this.width*e,i.height=this.height*t,this}clone(){return new n(this.x,this.y,this.width,this.height)}}});var PV=I(()=>{Mm();zt();Kn();cx();ph();Dm();fx();ke();CV();Nm()});var _l,Yle,sc,ac,Og,gl,Ng=I(()=>{ke();PV();_l=[Math.sqrt(1/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(3/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(15/(4*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(5/(16*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(15/(16*Math.PI))],Yle=[()=>1,n=>n.y,n=>n.z,n=>n.x,n=>n.x*n.y,n=>n.y*n.z,n=>3*n.z*n.z-1,n=>n.x*n.z,n=>n.x*n.x-n.y*n.y],sc=(n,e)=>_l[n]*Yle[n](e),ac=[Math.PI,2*Math.PI/3,2*Math.PI/3,2*Math.PI/3,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4],Og=class n{constructor(){this.preScaled=!1,this.l00=b.Zero(),this.l1_1=b.Zero(),this.l10=b.Zero(),this.l11=b.Zero(),this.l2_2=b.Zero(),this.l2_1=b.Zero(),this.l20=b.Zero(),this.l21=b.Zero(),this.l22=b.Zero()}addLight(e,t,i){$.Vector3[0].set(t.r,t.g,t.b);let r=$.Vector3[0],s=$.Vector3[1];r.scaleToRef(i,s),s.scaleToRef(sc(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(sc(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(sc(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(sc(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(sc(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(sc(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(sc(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(sc(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(sc(8,e),$.Vector3[2]),this.l22.addInPlace($.Vector3[2])}scaleInPlace(e){this.l00.scaleInPlace(e),this.l1_1.scaleInPlace(e),this.l10.scaleInPlace(e),this.l11.scaleInPlace(e),this.l2_2.scaleInPlace(e),this.l2_1.scaleInPlace(e),this.l20.scaleInPlace(e),this.l21.scaleInPlace(e),this.l22.scaleInPlace(e)}convertIncidentRadianceToIrradiance(){this.l00.scaleInPlace(ac[0]),this.l1_1.scaleInPlace(ac[1]),this.l10.scaleInPlace(ac[2]),this.l11.scaleInPlace(ac[3]),this.l2_2.scaleInPlace(ac[4]),this.l2_1.scaleInPlace(ac[5]),this.l20.scaleInPlace(ac[6]),this.l21.scaleInPlace(ac[7]),this.l22.scaleInPlace(ac[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(_l[0]),this.l1_1.scaleInPlace(_l[1]),this.l10.scaleInPlace(_l[2]),this.l11.scaleInPlace(_l[3]),this.l2_2.scaleInPlace(_l[4]),this.l2_1.scaleInPlace(_l[5]),this.l20.scaleInPlace(_l[6]),this.l21.scaleInPlace(_l[7]),this.l22.scaleInPlace(_l[8])}updateFromArray(e){return b.FromArrayToRef(e[0],0,this.l00),b.FromArrayToRef(e[1],0,this.l1_1),b.FromArrayToRef(e[2],0,this.l10),b.FromArrayToRef(e[3],0,this.l11),b.FromArrayToRef(e[4],0,this.l2_2),b.FromArrayToRef(e[5],0,this.l2_1),b.FromArrayToRef(e[6],0,this.l20),b.FromArrayToRef(e[7],0,this.l21),b.FromArrayToRef(e[8],0,this.l22),this}updateFromFloatsArray(e){return b.FromFloatsToRef(e[0],e[1],e[2],this.l00),b.FromFloatsToRef(e[3],e[4],e[5],this.l1_1),b.FromFloatsToRef(e[6],e[7],e[8],this.l10),b.FromFloatsToRef(e[9],e[10],e[11],this.l11),b.FromFloatsToRef(e[12],e[13],e[14],this.l2_2),b.FromFloatsToRef(e[15],e[16],e[17],this.l2_1),b.FromFloatsToRef(e[18],e[19],e[20],this.l20),b.FromFloatsToRef(e[21],e[22],e[23],this.l21),b.FromFloatsToRef(e[24],e[25],e[26],this.l22),this}static FromArray(e){return new n().updateFromArray(e)}static FromPolynomial(e){let t=new n;return t.l00=e.xx.scale(.376127).add(e.yy.scale(.376127)).add(e.zz.scale(.376126)),t.l1_1=e.y.scale(.977204),t.l10=e.z.scale(.977204),t.l11=e.x.scale(.977204),t.l2_2=e.xy.scale(1.16538),t.l2_1=e.yz.scale(1.16538),t.l20=e.zz.scale(1.34567).subtract(e.xx.scale(.672834)).subtract(e.yy.scale(.672834)),t.l21=e.zx.scale(1.16538),t.l22=e.xx.scale(1.16538).subtract(e.yy.scale(1.16538)),t.l1_1.scaleInPlace(-1),t.l11.scaleInPlace(-1),t.l2_1.scaleInPlace(-1),t.l21.scaleInPlace(-1),t.scaleInPlace(Math.PI),t}},gl=class n{constructor(){this.x=b.Zero(),this.y=b.Zero(),this.z=b.Zero(),this.xx=b.Zero(),this.yy=b.Zero(),this.zz=b.Zero(),this.xy=b.Zero(),this.yz=b.Zero(),this.zx=b.Zero()}get preScaledHarmonics(){return this._harmonics||(this._harmonics=Og.FromPolynomial(this)),this._harmonics.preScaled||this._harmonics.preScaleForRendering(),this._harmonics}addAmbient(e){$.Vector3[0].copyFromFloats(e.r,e.g,e.b);let t=$.Vector3[0];this.xx.addInPlace(t),this.yy.addInPlace(t),this.zz.addInPlace(t)}scaleInPlace(e){this.x.scaleInPlace(e),this.y.scaleInPlace(e),this.z.scaleInPlace(e),this.xx.scaleInPlace(e),this.yy.scaleInPlace(e),this.zz.scaleInPlace(e),this.yz.scaleInPlace(e),this.zx.scaleInPlace(e),this.xy.scaleInPlace(e)}updateFromHarmonics(e){return this._harmonics=e,this.x.copyFrom(e.l11),this.x.scaleInPlace(1.02333).scaleInPlace(-1),this.y.copyFrom(e.l1_1),this.y.scaleInPlace(1.02333).scaleInPlace(-1),this.z.copyFrom(e.l10),this.z.scaleInPlace(1.02333),this.xx.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.247708),$.Vector3[1].copyFrom(e.l22).scaleInPlace(.429043),this.xx.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).addInPlace($.Vector3[1]),this.yy.copyFrom(e.l00),this.yy.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).subtractInPlace($.Vector3[1]),this.zz.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.495417),this.zz.scaleInPlace(.886277).addInPlace($.Vector3[0]),this.yz.copyFrom(e.l2_1),this.yz.scaleInPlace(.858086).scaleInPlace(-1),this.zx.copyFrom(e.l21),this.zx.scaleInPlace(.858086).scaleInPlace(-1),this.xy.copyFrom(e.l2_2),this.xy.scaleInPlace(.858086),this.scaleInPlace(1/Math.PI),this}static FromHarmonics(e){return new n().updateFromHarmonics(e)}static FromArray(e){let t=new n;return b.FromArrayToRef(e[0],0,t.x),b.FromArrayToRef(e[1],0,t.y),b.FromArrayToRef(e[2],0,t.z),b.FromArrayToRef(e[3],0,t.xx),b.FromArrayToRef(e[4],0,t.yy),b.FromArrayToRef(e[5],0,t.zz),b.FromArrayToRef(e[6],0,t.yz),b.FromArrayToRef(e[7],0,t.zx),b.FromArrayToRef(e[8],0,t.xy),t}}});function P(n,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,i);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(s=(r<3?a(s):r>3?a(e,t,s):a(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s}var Wt=I(()=>{});function DV(n){let e=n.getClassName();return hx[e]||(hx[e]={}),hx[e]}function ux(n){let e=n.getClassName();if(dx[e])return dx[e];dx[e]={};let t=dx[e],i=n,r=e;for(;r;){let s=hx[r];for(let l in s)t[l]=s[l];let a,o=!1;do{if(a=Object.getPrototypeOf(i),!a.getClassName){o=!0;break}if(a.getClassName()!==r)break;i=a}while(a);if(o)break;r=a.getClassName(),i=a}return t}var dx,hx,QC=I(()=>{dx={},hx={}});function Na(n,e){return(t,i)=>{let r=DV(t);r[i]||(r[i]={type:n,sourceName:e})}}function Kle(n,e=null){return(t,i)=>{let r=e||"_"+i;Object.defineProperty(t,i,{get:function(){return this[r]},set:function(s){var a;typeof((a=this[r])==null?void 0:a.equals)=="function"&&this[r].equals(s)||this[r]!==s&&(this[r]=s,t[n].apply(this))},enumerable:!0,configurable:!0})}}function le(n,e=null){return Kle(n,e)}function F(n){return Na(0,n)}function Gt(n){return Na(1,n)}function Ir(n){return Na(2,n)}function wm(n){return Na(3,n)}function Fm(n){return Na(4,n)}function Qr(n){return Na(5,n)}function mx(n){return Na(6,n)}function LV(n){return Na(7,n)}function Bm(n){return Na(8,n)}function OV(n){return Na(9,n)}function NV(n){return Na(10,n)}function wV(n){return Na(11,n)}function zs(n,e,t,i){let r=t.value;t.value=(...s)=>{let a=r;if(typeof _native!="undefined"&&_native[e]){let o=_native[e];i?a=(...l)=>i(...l)?o(...l):r(...l):a=o}return n[e]=a,a(...s)}}function _t(n,e=null){return(t,i)=>{let r=i;Object.defineProperty(t,e||"",{get:function(){return this[r].value},set:function(a){var o,l;typeof((l=(o=this[r])==null?void 0:o.value)==null?void 0:l.equals)=="function"&&this[r].value.equals(a)||this[r].value!==a&&(this[r].value=a,t[n].apply(this))},enumerable:!0,configurable:!0})}}var kt=I(()=>{QC();zs.filter=function(n){return(e,t,i)=>zs(e,t,i,n)}});function If(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}var wg=I(()=>{});function jle(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var wr,_h=I(()=>{wr=class n{constructor(){this._xhr=jle(),this._requestURL=""}static get IsCustomRequestAvailable(){return Object.keys(n.CustomRequestHeaders).length>0||n.CustomRequestModifiers.length>0}static _CleanUrl(e){return e=e.replace("file:http:","http:"),e=e.replace("file:https:","https:"),e}static _ShouldSkipRequestModifications(e){return n.SkipRequestModificationForBabylonCDN&&(e.includes("preview.babylonjs.com")||e.includes("cdn.babylonjs.com"))}static _CollectCustomizations(e,t={}){let i={...t};if(n._ShouldSkipRequestModifications(e))return{url:e,headers:i};for(let s in n.CustomRequestHeaders){let a=n.CustomRequestHeaders[s];a&&(i[s]=a)}let r={setRequestHeader:(s,a)=>{i[s]=a}};for(let s of n.CustomRequestModifiers){if(n._ShouldSkipRequestModifications(e))break;let a=s(r,e);typeof a=="string"&&(e=a)}return{url:e,headers:i}}static async FetchAsync(e,t={}){var r,s,a;let i=(r=t.method)!=null?r:"GET";if(typeof fetch!="undefined"){let{url:o,headers:l}=n._CollectCustomizations(n._CleanUrl(e),(s=t.headers)!=null?s:{});return await fetch(o,{method:i,headers:l,body:(a=t.body)!=null?a:void 0})}return await new Promise((o,l)=>{var f;let c=new n;c.responseType="arraybuffer",c.addEventListener("readystatechange",()=>{if(c.readyState===4)if(c.status>=200&&c.status<300){let d=typeof Headers!="undefined"?new Headers:void 0,h=c.getResponseHeader("Content-Type");h&&d&&d.set("Content-Type",h),o(typeof Response!="undefined"?new Response(c.response,{status:c.status,statusText:c.statusText,headers:d}):{ok:!0,status:c.status,statusText:c.statusText,headers:{get:u=>c.getResponseHeader(u)},arrayBuffer:async()=>await Promise.resolve(c.response)})}else l(new Error(`HTTP ${c.status} loading '${c.requestURL}': ${c.statusText}`))}),c.open(i,e,t.headers),c.send((f=t.body)!=null?f:null)})}get requestURL(){return this._requestURL}get onprogress(){return this._xhr.onprogress}set onprogress(e){this._xhr.onprogress=e}get readyState(){return this._xhr.readyState}get status(){return this._xhr.status}get statusText(){return this._xhr.statusText}get response(){return this._xhr.response}get responseURL(){return this._xhr.responseURL}get responseText(){return this._xhr.responseText}get responseType(){return this._xhr.responseType}set responseType(e){this._xhr.responseType=e}get timeout(){return this._xhr.timeout}set timeout(e){this._xhr.timeout=e}addEventListener(e,t,i){this._xhr.addEventListener(e,t,i)}removeEventListener(e,t,i){this._xhr.removeEventListener(e,t,i)}abort(){this._xhr.abort()}send(e){this._xhr.send(e)}open(e,t,i){let{url:r,headers:s}=n._CollectCustomizations(t,i);this._requestURL=n._CleanUrl(r),this._xhr.open(e,this._requestURL,!0);for(let a in s)this._xhr.setRequestHeader(a,s[a])}setRequestHeader(e,t){this._xhr.setRequestHeader(e,t)}getResponseHeader(e){return this._xhr.getResponseHeader(e)}};wr.CustomRequestHeaders={};wr.CustomRequestModifiers=new Array;wr.SkipRequestModificationForBabylonCDN=!0});var yf,FV=I(()=>{yf=class{};yf.FilesToLoad={}});var px,BV=I(()=>{px=class{static ExponentialBackoff(e=3,t=500){return(i,r,s)=>r.status!==0||s>=e||i.indexOf("file:")!==-1?-1:Math.pow(2,s)*t}}});var oc,wa,Xs,Fg=I(()=>{oc=class extends Error{};oc._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));wa={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Xs=class n extends oc{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",oc._setPrototypeOf(this,n.prototype)}}});function Zle(n){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="",i,r,s,a,o,l,c,f=0;for(;f>2,o=(i&3)<<4|r>>4,l=(r&15)<<2|s>>6,c=s&63,isNaN(r)?l=c=64:isNaN(s)&&(c=64),t+=e.charAt(a)+e.charAt(o)+e.charAt(l)+e.charAt(c);return t}function qle(n){let e=$C(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{UV=n=>{if(typeof TextDecoder!="undefined")return new TextDecoder().decode(n);let e="";for(let t=0;t{let e=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);return typeof e.toBase64=="function"?e.toBase64():Zle(e)},$C=n=>atob(n),VV=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:qle(n)});function Qle(n,e,t,i){switch(e){case 5120:{let r=n.getInt8(t);return i&&(r=Math.max(r/127,-1)),r}case 5121:{let r=n.getUint8(t);return i&&(r=r/255),r}case 5122:{let r=n.getInt16(t,!0);return i&&(r=Math.max(r/32767,-1)),r}case 5123:{let r=n.getUint16(t,!0);return i&&(r=r/65535),r}case 5124:return n.getInt32(t,!0);case 5125:return n.getUint32(t,!0);case 5126:return n.getFloat32(t,!0);default:throw new Error(`Invalid component type ${e}`)}}function $le(n,e,t,i,r){switch(e){case 5120:{i&&(r=Math.round(r*127)),n.setInt8(t,r);break}case 5121:{i&&(r=Math.round(r*255)),n.setUint8(t,r);break}case 5122:{i&&(r=Math.round(r*32767)),n.setInt16(t,r,!0);break}case 5123:{i&&(r=Math.round(r*65535)),n.setUint16(t,r,!0);break}case 5124:{n.setInt32(t,r,!0);break}case 5125:{n.setUint32(t,r,!0);break}case 5126:{n.setFloat32(t,r,!0);break}default:throw new Error(`Invalid component type ${e}`)}}function vl(n){switch(n){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5124:case 5125:case 5126:return 4;default:throw new Error(`Invalid type '${n}'`)}}function JC(n){switch(n){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error(`Invalid component type '${n}'`)}}function gh(n,e,t,i,r,s,a,o){let l=new Array(i),c=new Array(i);if(n instanceof Array){let f=e/4,d=t/4;for(let h=0;h{for(let u=0;un.length)throw new Error("Last accessed index is out of bounds.");if(_{for(let S=0;Sf.byteLength)throw new Error("Last accessed byte is out of bounds.");let u=e*o;if(r{for(let g=0;g{for(let h=0;h{Lt()});function Pf(n){return VV(n.split(",")[1])}var HV,Gm,gx,tP,Jle,ji,vx,WV,km,vh,El,Ex,zV,XV,Cf,YV,KV,ece,Ug,tce,lc=I(()=>{_h();Oa();mi();FV();BV();Fg();Bg();jA();Gi();Lt();ul();bf();zr();Vm();HV=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),Gm=class n extends Xs{constructor(e,t){super(e,wa.LoadFileError),this.name="LoadFileError",oc._setPrototypeOf(this,n.prototype),t instanceof wr?this.request=t:this.file=t}},gx=class n extends Xs{constructor(e,t){super(e,wa.RequestFileError),this.request=t,this.name="RequestFileError",oc._setPrototypeOf(this,n.prototype)}},tP=class n extends Xs{constructor(e,t){super(e,wa.ReadFileError),this.file=t,this.name="ReadFileError",oc._setPrototypeOf(this,n.prototype)}},Jle=n=>(n=n.replace(/#/gm,"%23"),n),ji={DefaultRetryStrategy:px.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:Jle},vx=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&ji.CorsBehavior)if(typeof ji.CorsBehavior=="string"||ji.CorsBehavior instanceof String)e.crossOrigin=ji.CorsBehavior;else{let t=ji.CorsBehavior(n);t&&(e.crossOrigin=t)}},WV={getRequiredSize:null},km=(n,e,t,i,r="",s,a=Oe.LastCreatedEngine)=>{if(typeof HTMLImageElement=="undefined"&&!(a!=null&&a._features.forceBitmapOverHTMLImageElement))return t("LoadImage is only supported in web or BabylonNative environments."),null;let o,l=!1;if(n instanceof ArrayBuffer||ArrayBuffer.isView(n))if(typeof Blob!="undefined"&&typeof URL!="undefined"){let E;n instanceof ArrayBuffer?E=n:E=_x(n),o=URL.createObjectURL(new Blob([E],{type:r})),l=!0}else o=`data:${r};base64,`+Um(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=ji.CleanUrl(n),o=ji.PreprocessUrl(o));let c=E=>{if(t){let A=o||n.toString();t(`Error while trying to load image: ${A.indexOf("http")===0||A.length<=128?A:A.slice(0,128)+"..."}`,E)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return El(o,E=>{a.createImageBitmap(new Blob([E],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(A=>{e(A),l&&URL.revokeObjectURL(o)}).catch(A=>{t&&t("Error while trying to load image: "+n,A)})},void 0,i||void 0,!0,(E,A)=>{c(A)}),null;let f=new Image;if(WV.getRequiredSize){let E=WV.getRequiredSize(n);E.width&&(f.width=E.width),E.height&&(f.height=E.height)}vx(o,f);let d=[],h=()=>{for(let E of d)E.target.addEventListener(E.name,E.handler)},u=()=>{for(let E of d)E.target.removeEventListener(E.name,E.handler);d.length=0},m=()=>{u(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},_=E=>{u(),c(E),l&&f.src&&URL.revokeObjectURL(f.src)},p=E=>{if(E.blockedURI!==f.src||E.disposition==="report")return;u();let A=new Error(`CSP violation of policy ${E.effectiveDirective} ${E.blockedURI}. Current policy is ${E.originalPolicy}`);Oe.UseFallbackTexture=!1,c(A),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:_}),d.push({target:document,name:"securitypolicyviolation",handler:p}),h();let g=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",T=()=>{g||v||!wr.IsCustomRequestAvailable?f.src=o:El(o,(E,A,R)=>{let M=!r&&R?R:r,y=new Blob([E],{type:M}),C=URL.createObjectURL(y);l=!0,f.src=C},void 0,i||void 0,!0,(E,A)=>{c(A)})},S=()=>{i&&i.loadImage(o,f)};if(!g&&!v&&i&&i.enableTexturesOffline)i.open(S,T);else{if(o.indexOf("file:")!==-1){let E=decodeURIComponent(o.substring(5).toLowerCase());if(yf.FilesToLoad[E]&&typeof URL!="undefined"){try{let A;try{A=URL.createObjectURL(yf.FilesToLoad[E])}catch(R){A=URL.createObjectURL(yf.FilesToLoad[E])}f.src=A,l=!0}catch(A){f.src=""}return f}}T()}return f},vh=(n,e,t,i,r)=>{let s=new FileReader,a={onCompleteObservable:new te,abort:()=>s.abort()};return s.onloadend=()=>a.onCompleteObservable.notifyObservers(a),r&&(s.onerror=()=>{r(new tP(`Unable to read ${n.name}`,n))}),s.onload=o=>{e(o.target.result)},t&&(s.onprogress=t),i?s.readAsArrayBuffer(n):s.readAsText(n),a},El=(n,e,t,i,r,s,a)=>{if(n.name)return vh(n,e,t,r,s?f=>{s(void 0,f)}:void 0);let o=n;if(o.indexOf("file:")!==-1){let f=decodeURIComponent(o.substring(5).toLowerCase());f.indexOf("./")===0&&(f=f.substring(2));let d=yf.FilesToLoad[f];if(d)return vh(d,e,t,r,s?h=>s(void 0,new Gm(h.message,h.file)):void 0)}let{match:l,type:c}=YV(o);if(l){let f={onCompleteObservable:new te,abort:()=>()=>{}};try{let d=r?Pf(o):KV(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return vo.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return Ex(o,(f,d)=>{e(f,d==null?void 0:d.responseURL,d==null?void 0:d.getResponseHeader("content-type"))},t,i,r,s?f=>{s(f.request,new Gm(f.message,f.request))}:void 0,a)},Ex=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=ji.CleanUrl(n),n=ji.PreprocessUrl(n);let o=ji.BaseUrl+n,l=!1,c={onCompleteObservable:new te,abort:()=>l=!0},f=()=>{let h=new wr,u=null,m,_=()=>{h&&(t&&h.removeEventListener("progress",t),m&&h.removeEventListener("readystatechange",m),h.removeEventListener("loadend",p))},p=()=>{_(),c.onCompleteObservable.notifyObservers(c),c.onCompleteObservable.clear(),t=void 0,m=null,p=null,s=void 0,a=void 0,e=void 0};c.abort=()=>{l=!0,p&&p(),h&&h.readyState!==(XMLHttpRequest.DONE||4)&&h.abort(),u!==null&&(clearTimeout(u),u=null),h=null};let g=T=>{let S=T.message||"Unknown error";s&&h?s(new gx(S,h)):ee.Error(S)},v=T=>{if(h){if(h.open("GET",o),a)try{a(h)}catch(S){g(S);return}r&&(h.responseType="arraybuffer"),t&&h.addEventListener("progress",t),p&&h.addEventListener("loadend",p),m=()=>{if(!(l||!h)&&h.readyState===(XMLHttpRequest.DONE||4)){if(m&&h.removeEventListener("readystatechange",m),h.status>=200&&h.status<300||h.status===0&&(!Er()||XV())){let A=r?h.response:h.responseText;if(A!==null){try{e&&e(A,h)}catch(R){g(R)}return}}let S=ji.DefaultRetryStrategy;if(S){let A=S(o,h,T);if(A!==-1){_(),h=new wr,u=setTimeout(()=>v(T+1),A);return}}let E=new gx("Error status: "+h.status+" "+h.statusText+" - Unable to load "+o,h);s&&s(E)}},h.addEventListener("readystatechange",m),h.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let h=m=>{m&&m.status>400?s&&s(m):f()},u=()=>{i&&i.loadFile(ji.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,h,r)};i.open(u,h)}else f();return c},zV=n=>{let{match:e,type:t}=YV(n);if(e)return t||void 0;let i=n.lastIndexOf(".");switch(n.substring(i+1).toLowerCase()){case"glb":return"model/gltf-binary";case"bin":return"application/octet-stream";case"gltf":return"model/gltf+json";case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp";case"ktx":return"image/ktx";case"ktx2":return"image/ktx2";case"avif":return"image/avif";default:return}},XV=()=>typeof location!="undefined"&&location.protocol==="file:",Cf=n=>HV.test(n),YV=n=>{let e=HV.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};KV=n=>$C(n.split(",")[1]),ece=()=>{Re._FileToolsLoadImage=km,Em.loadFile=El,wC.loadFile=El};ece();tce=(n,e,t,i,r,s,a,o,l,c)=>{Ug={DecodeBase64UrlToBinary:n,DecodeBase64UrlToString:e,DefaultRetryStrategy:t.DefaultRetryStrategy,BaseUrl:t.BaseUrl,CorsBehavior:t.CorsBehavior,PreprocessUrl:t.PreprocessUrl,IsBase64DataUrl:i,IsFileURL:r,LoadFile:s,LoadImage:a,ReadFile:o,RequestFile:l,SetCorsBehavior:c},Object.defineProperty(Ug,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(Ug,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(Ug,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(Ug,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};tce(Pf,KV,ji,Cf,XV,El,km,vh,Ex,vx)});var Sx,jV=I(()=>{fx();Sx=class n{get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get coordinatesMode(){return 0}get isCube(){return this._texture?this._texture.isCube:!1}set isCube(e){this._texture&&(this._texture.isCube=e)}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}getClassName(){return"ThinTexture"}static _IsRenderTargetWrapper(e){return(e==null?void 0:e.shareDepth)!==void 0}constructor(e){var t,i,r;this._wrapU=1,this._wrapV=1,this.wrapR=1,this.anisotropicFilteringLevel=4,this.delayLoadState=0,this._texture=null,this._engine=null,this._cachedSize=nc.Zero(),this._cachedBaseSize=nc.Zero(),this._initialSamplingMode=2,this._texture=n._IsRenderTargetWrapper(e)?e.texture:e,this._texture&&(this._engine=this._texture.getEngine(),this.wrapU=(t=this._texture._cachedWrapU)!=null?t:this.wrapU,this.wrapV=(i=this._texture._cachedWrapV)!=null?i:this.wrapV,this.wrapR=(r=this._texture._cachedWrapR)!=null?r:this.wrapR)}isReady(){return this.delayLoadState===4?(this.delayLoad(),!1):this._texture?this._texture.isReady:!1}delayLoad(){}getInternalTexture(){return this._texture}getSize(){if(this._texture){if(this._texture.width)return this._cachedSize.width=this._texture.width,this._cachedSize.height=this._texture.height,this._cachedSize;if(this._texture._size)return this._cachedSize.width=this._texture._size,this._cachedSize.height=this._texture._size,this._cachedSize}return this._cachedSize}getBaseSize(){return!this.isReady()||!this._texture?(this._cachedBaseSize.width=0,this._cachedBaseSize.height=0,this._cachedBaseSize):this._texture._size?(this._cachedBaseSize.width=this._texture._size,this._cachedBaseSize.height=this._texture._size,this._cachedBaseSize):(this._cachedBaseSize.width=this._texture.baseWidth,this._cachedBaseSize.height=this._texture.baseHeight,this._cachedBaseSize)}get samplingMode(){return this._texture?this._texture.samplingMode:this._initialSamplingMode}updateSamplingMode(e,t=!1){this._texture&&this._engine&&this._engine.updateTextureSamplingMode(e,this._texture,this._texture.generateMipMaps&&t)}releaseInternalTexture(){this._texture&&(this._texture.dispose(),this._texture=null)}dispose(){this._texture&&(this.releaseInternalTexture(),this._engine=null)}}});var Tx,ZV=I(()=>{Tx=class n{static Eval(e,t){return e.match(/\([^()]*\)/g)?e=e.replace(/\([^()]*\)/g,i=>(i=i.slice(1,i.length-1),n._HandleParenthesisContent(i,t))):e=n._HandleParenthesisContent(e,t),e==="true"?!0:e==="false"?!1:n.Eval(e,t)}static _HandleParenthesisContent(e,t){t=t||(s=>s==="true");let i,r=e.split("||");for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=n._SimplifyNegation(r[s].trim()),o=a.split("&&");if(o.length>1)for(let l=0;l(t=t.replace(/[\s]/g,()=>""),t.length%2?"!":"")),e=e.trim(),e==="!true"?e="false":e==="!false"&&(e="true"),e}}});var ei,Df=I(()=>{ZV();ei=class n{static EnableFor(e){e._tags=e._tags||{},e.hasTags=()=>n.HasTags(e),e.addTags=t=>n.AddTagsTo(e,t),e.removeTags=t=>n.RemoveTagsFrom(e,t),e.matchesTagsQuery=t=>n.MatchesQuery(e,t)}static DisableFor(e){delete e._tags,delete e.hasTags,delete e.addTags,delete e.removeTags,delete e.matchesTagsQuery}static HasTags(e){if(!e._tags)return!1;let t=e._tags;for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))return!0;return!1}static GetTags(e,t=!0){if(!e._tags)return null;if(t){let i=[];for(let r in e._tags)Object.prototype.hasOwnProperty.call(e._tags,r)&&e._tags[r]===!0&&i.push(r);return i.join(" ")}else return e._tags}static AddTagsTo(e,t){if(!t||typeof t!="string")return;let i=t.split(" ");for(let r of i)n._AddTagTo(e,r)}static _AddTagTo(e,t){t=t.trim(),!(t===""||t==="true"||t==="false")&&(t.match(/[\s]/)||t.match(/^([!]|([|]|[&]){2})/)||(n.EnableFor(e),e._tags[t]=!0))}static RemoveTagsFrom(e,t){if(!n.HasTags(e))return;let i=t.split(" ");for(let r in i)n._RemoveTagFrom(e,i[r])}static _RemoveTagFrom(e,t){delete e._tags[t]}static MatchesQuery(e,t){return t===void 0?!0:t===""?n.HasTags(e):Tx.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var qV,nt,Dr=I(()=>{Sn();Df();zt();ke();QC();qV=function(n,e,t,i={}){let r=n();ei&&ei.HasTags(e)&&ei.AddTagsTo(r,ei.GetTags(e,!0));let s=ux(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||nt.AllowLoadingUniqueId))switch(f){case 0:case 6:case 9:case 11:typeof c.slice=="function"?r[o]=c.slice():r[o]=c;break;case 1:i.cloneTexturesOnlyOnce&&a[c.uniqueId]?r[o]=a[c.uniqueId]:(r[o]=t||c.isRenderTarget?c:c.clone(),a[c.uniqueId]=r[o]);break;case 2:case 3:case 4:case 5:case 7:case 8:case 10:case 12:r[o]=t?c:c.clone();break}}return r},nt=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw Qe("ImageProcessingConfiguration")};nt._FresnelParametersParser=n=>{throw Qe("FresnelParameters")};nt._ColorCurvesParser=n=>{throw Qe("ColorCurves")};nt._TextureParser=(n,e,t)=>{throw Qe("Texture")}});var vi,Vg=I(()=>{Wt();kt();mi();ke();Gi();wg();lc();jV();Dr();vi=class n extends Sx{set hasAlpha(e){this._hasAlpha!==e&&(this._hasAlpha=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get hasAlpha(){return this._hasAlpha}set getAlphaFromRGB(e){this._getAlphaFromRGB!==e&&(this._getAlphaFromRGB=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get getAlphaFromRGB(){return this._getAlphaFromRGB}set coordinatesIndex(e){this._coordinatesIndex!==e&&(this._coordinatesIndex=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesIndex(){return this._coordinatesIndex}set coordinatesMode(e){this._coordinatesMode!==e&&(this._coordinatesMode=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesMode(){return this._coordinatesMode}get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get isCube(){return this._texture?this._texture.isCube:this._isCube}set isCube(e){this._texture?this._texture.isCube=e:this._isCube=e}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}get gammaSpace(){if(this._texture)this._texture._gammaSpace===null&&(this._texture._gammaSpace=this._gammaSpace);else return this._gammaSpace;return this._texture._gammaSpace&&!this._texture._useSRGBBuffer}set gammaSpace(e){var t;if(this._texture){if(this._texture._gammaSpace===e)return;this._texture._gammaSpace=e}else{if(this._gammaSpace===e)return;this._gammaSpace=e}(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this))}get isRGBD(){return this._texture!=null&&this._texture._isRGBD}set isRGBD(e){var t;e!==this.isRGBD&&(this._texture&&(this._texture._isRGBD=e),(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)))}get noMipmap(){return!1}get lodGenerationOffset(){return this._texture?this._texture._lodGenerationOffset:0}set lodGenerationOffset(e){this._texture&&(this._texture._lodGenerationOffset=e)}get lodGenerationScale(){return this._texture?this._texture._lodGenerationScale:0}set lodGenerationScale(e){this._texture&&(this._texture._lodGenerationScale=e)}get linearSpecularLOD(){return this._texture?this._texture._linearSpecularLOD:!1}set linearSpecularLOD(e){this._texture&&(this._texture._linearSpecularLOD=e)}get irradianceTexture(){return this._texture?this._texture._irradianceTexture:null}set irradianceTexture(e){this._texture&&(this._texture._irradianceTexture=e)}get uid(){return this._uid||(this._uid=If()),this._uid}toString(){return this.name}getClassName(){return"BaseTexture"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get isBlocking(){return!0}get loadingError(){return this._loadingError}get errorObject(){return this._errorObject}constructor(e,t=null){super(null),this.metadata=null,this.reservedDataStore=null,this._hasAlpha=!1,this._getAlphaFromRGB=!1,this.level=1,this._coordinatesIndex=0,this.optimizeUVAllocation=!0,this._coordinatesMode=0,this.wrapR=1,this.anisotropicFilteringLevel=n.DEFAULT_ANISOTROPIC_FILTERING_LEVEL,this._isCube=!1,this._gammaSpace=!0,this.invertZ=!1,this.lodLevelInAlpha=!1,this._dominantDirection=null,this.isRenderTarget=!1,this._prefiltered=!1,this._forceSerialize=!1,this.animations=[],this.onDisposeObservable=new te,this._onDisposeObserver=null,this._scene=null,this._uid=null,this._parentContainer=null,this._loadingError=!1,e?n._IsScene(e)?this._scene=e:this._engine=e:this._scene=Oe.LastCreatedScene,this._scene&&(this.uniqueId=this._scene.getUniqueId(),this._scene.addTexture(this),this._engine=this._scene.getEngine()),this._texture=t,this._uid=null}getScene(){return this._scene}_getEngine(){return this._engine}getTextureMatrix(){return Z.IdentityReadOnly}getReflectionTextureMatrix(){return Z.IdentityReadOnly}getRefractionTextureMatrix(){return this.getReflectionTextureMatrix()}isReadyOrNotBlocking(){return!this.isBlocking||this.isReady()||this.loadingError}scale(e){}get canRescale(){return!1}_getFromCache(e,t,i,r,s,a){let o=this._getEngine();if(!o)return null;let l=o._getUseSRGBBuffer(!!s,t),c=o.getLoadedTexturesCache();for(let f=0;f=0&&this._scene.textures.splice(e,1),this._scene.onTextureRemovedObservable.notifyObservers(this),this._scene=null,this._parentContainer){let t=this._parentContainer.textures.indexOf(this);t>-1&&this._parentContainer.textures.splice(t,1),this._parentContainer=null}}this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.metadata=null,super.dispose()}serialize(e=!1){if(!this.name&&!e)return null;let t=nt.Serialize(this);return nt.AppendSerializedAnimations(this,t),t}static WhenAllReady(e,t){let i=e.length;if(i===0){t();return}for(let r=0;r{--i===0&&t()}):--i===0&&t()}}}static _IsScene(e){return e.getClassName()==="Scene"}};vi.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],vi.prototype,"uniqueId",void 0);P([F()],vi.prototype,"name",void 0);P([F()],vi.prototype,"displayName",void 0);P([F()],vi.prototype,"metadata",void 0);P([F("hasAlpha")],vi.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],vi.prototype,"_getAlphaFromRGB",void 0);P([F()],vi.prototype,"level",void 0);P([F("coordinatesIndex")],vi.prototype,"_coordinatesIndex",void 0);P([F()],vi.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],vi.prototype,"_coordinatesMode",void 0);P([F()],vi.prototype,"wrapU",null);P([F()],vi.prototype,"wrapV",null);P([F()],vi.prototype,"wrapR",void 0);P([F()],vi.prototype,"anisotropicFilteringLevel",void 0);P([F()],vi.prototype,"isCube",null);P([F()],vi.prototype,"is3D",null);P([F()],vi.prototype,"is2DArray",null);P([F()],vi.prototype,"gammaSpace",null);P([F()],vi.prototype,"invertZ",void 0);P([F()],vi.prototype,"lodLevelInAlpha",void 0);P([F()],vi.prototype,"lodGenerationOffset",null);P([F()],vi.prototype,"lodGenerationScale",null);P([F()],vi.prototype,"linearSpecularLOD",null);P([Gt()],vi.prototype,"irradianceTexture",null);P([F()],vi.prototype,"isRenderTarget",void 0)});var Lf,cc,iP=I(()=>{ke();jn();Ng();Kn();zt();Lf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},cc=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((T=e._texture)==null?void 0:T.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,h,u,m]).then(([E,A,R,M,y,C])=>{let D=l;g&&(E=this._DownsampleFace(E,t,r,4),A=this._DownsampleFace(A,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),y=this._DownsampleFace(y,t,r,4),C=this._DownsampleFace(C,t,r,4),D=r);let w={size:D,right:A,left:E,up:R,down:M,front:y,back:C,format:p,type:E instanceof Float32Array?1:0,gammaSpace:_};S(this.ConvertCubeMapToSphericalPolynomial(w))})})}static _AreaElement(e,t){return Math.atan2(e*t,Math.sqrt(e*e+t*t+1))}static _DownsampleFace(e,t,i,r){let s=e instanceof Float32Array?e:Float32Array.from(e),a=i*i*r,o=new Float32Array(a),l=t/i,c=1/(l*l);for(let h=0;h0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,_=["right","left","up","down","front","back"],p={};for(let g of _)p[g]=this._DownsampleFace(e[g],e.size,i,m);e={...e,...p,size:i}}let r=new Og,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let _=this._FileFaces[m],p=e[_.name],g=c,v=e.format===5?4:3;for(let T=0;TD){let O=D/G;M*=O,y*=O,C*=O}}else M=Bt(M,0,D),y=Bt(y,0,D),C=Bt(C,0,D);let w=new Ee(M,y,C);r.addLight(A,w,R),s+=R,S+=a}g+=o}}let u=4*Math.PI*6/6/s;return r.scaleInPlace(u),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),gl.FromHarmonics(r)}};cc._FileFaces=[new Lf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Lf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Lf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Lf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Lf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Lf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];cc.MAX_HDRI_VALUE=4096;cc.PRESERVE_CLAMPED_COLORS=!1});var fc,rP=I(()=>{Lt();$i();fc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=Pn(e);if(t)return t;ee.Warn(e+" not found, you may have missed an import.");let i=e.split("."),r=window||this;for(let s=0,a=i.length;s=0;){let d=n[c];d<0?d=0:d>1&&(d=1),f[c]=d*255}n=f}let s=document.createElement("canvas");s.width=i,s.height=r;let a=s.getContext("2d");if(!a)return null;let o=a.createImageData(i,r);if(o.data.set(n),a.putImageData(o,0,0),t){let c=document.createElement("canvas");c.width=i,c.height=r;let f=c.getContext("2d");return f?(f.translate(0,r),f.scale(1,-1),f.drawImage(s,0,0),c.toDataURL("image/png")):null}return s.toDataURL("image/png")}function $V(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?QV(r,n.getSize(),i.invertY):null}async function JV(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?QV(r,n.getSize(),i.invertY):null}var eG=I(()=>{});var yt,fn=I(()=>{yt=!1});var _e,Xr=I(()=>{Wt();kt();mi();ke();Vg();$i();Sn();ul();rP();Dm();Bg();eG();fn();Dr();_e=class n extends vi{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw Qe("VideoTexture")}get noMipmap(){return this._noMipmap}get mimeType(){return this._mimeType}set isBlocking(e){this._isBlocking=e}get isBlocking(){return this._isBlocking}get invertY(){return this._invertY}constructor(e,t,i,r,s=n.TRILINEAR_SAMPLINGMODE,a=null,o=null,l=null,c=!1,f,d,h,u,m){var R,M,y,C,D,w,G,O,N,B,V;super(t),this.url=null,this.uOffset=0,this.vOffset=0,this.uScale=1,this.vScale=1,this.uAng=0,this.vAng=0,this.wAng=0,this.uRotationCenter=.5,this.vRotationCenter=.5,this.wRotationCenter=.5,this.homogeneousRotationInUVTransform=!1,this.inspectableCustomProperties=null,this._noMipmap=!1,this._invertY=!1,this._rowGenerationMatrix=null,this._cachedTextureMatrix=null,this._projectionModeMatrix=null,this._t0=null,this._t1=null,this._t2=null,this._cachedUOffset=-1,this._cachedVOffset=-1,this._cachedUScale=0,this._cachedVScale=0,this._cachedUAng=-1,this._cachedVAng=-1,this._cachedWAng=-1,this._cachedReflectionProjectionMatrixId=-1,this._cachedURotationCenter=-1,this._cachedVRotationCenter=-1,this._cachedWRotationCenter=-1,this._cachedHomogeneousRotationInUVTransform=!1,this._cachedIdentity3x2=!0,this._cachedReflectionTextureMatrix=null,this._cachedReflectionUOffset=-1,this._cachedReflectionVOffset=-1,this._cachedReflectionUScale=0,this._cachedReflectionVScale=0,this._cachedReflectionCoordinatesMode=-1,this._buffer=null,this._deleteBuffer=!1,this._format=null,this._delayedOnLoad=null,this._delayedOnError=null,this.onLoadObservable=new te,this._isBlocking=!0,this.name=e||"",this.url=e;let _,p=!1,g=null,v=!0;typeof i=="object"&&i!==null?(_=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!yt,s=(y=i.samplingMode)!=null?y:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(D=i.onError)!=null?D:null,l=(w=i.buffer)!=null?w:null,c=(G=i.deleteBuffer)!=null?G:!1,f=i.format,d=i.mimeType,h=i.loaderOptions,u=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,g=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):_=!!i,this._gammaSpace=v,this._noMipmap=_,this._invertY=r===void 0?!yt:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=h,this._creationFlags=u,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let T=this.getScene(),S=this._getEngine();if(!S)return;S.onBeforeTextureInitObservable.notifyObservers(this);let E=()=>{this._texture&&(this._texture._invertVScale&&(this.vScale*=-1,this.vOffset+=1),this._texture._cachedWrapU!==null&&(this.wrapU=this._texture._cachedWrapU,this._texture._cachedWrapU=null),this._texture._cachedWrapV!==null&&(this.wrapV=this._texture._cachedWrapV,this._texture._cachedWrapV=null),this._texture._cachedWrapR!==null&&(this.wrapR=this._texture._cachedWrapR,this._texture._cachedWrapR=null)),this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),a&&a(),!this.isBlocking&&T&&T.resetCachedMaterial()},A=(Q,K)=>{this._loadingError=!0,this._errorObject={message:Q,exception:K},o&&o(Q,K),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!g){this._delayedOnLoad=E,this._delayedOnError=A;return}if(this._texture=g!=null?g:this._getFromCache(this.url,_,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)vo.SetImmediate(()=>E());else{let Q=this._texture.onLoadedObservable.add(E);this._texture.onErrorObservable.add(K=>{var J;A(K.message,K.exception),(J=this._texture)==null||J.onLoadedObservable.remove(Q)})}else if(!T||!T.useDelayedTextureLoading){try{this._texture=S.createTexture(this.url,_,this._invertY,T,s,E,A,this._buffer,void 0,this._format,this._forcedExtension,d,h,u,p)}catch(Q){throw A("error loading",Q),Q}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=E,this._delayedOnError=A}updateURL(e,t=null,i,r){this.url&&(this.releaseInternalTexture(),this.getScene().markAllMaterialsAsDirty(1,o=>o.hasTexture(this))),(!this.name||this.name.startsWith("data:"))&&(this.name=e),this.url=e,this._buffer=t,this._forcedExtension=r,this.delayLoadState=4;let s=this._delayedOnLoad,a=()=>{s?s():this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),i&&i()};this._delayedOnLoad=a,this.delayLoad()}delayLoad(){if(this.delayLoadState!==4)return;let e=this.getScene();if(!e)return;let t=this.url;!t&&(this.name.indexOf("://")>0||this.name.startsWith("data:"))&&(t=this.name),this.delayLoadState=1,this._texture=this._getFromCache(t,this._noMipmap,this.samplingMode,this._invertY,this._useSRGBBuffer,this.isCube),this._texture?this._delayedOnLoad&&(this._texture.isReady?vo.SetImmediate(this._delayedOnLoad):this._texture.onLoadedObservable.add(this._delayedOnLoad)):(this._texture=e.getEngine().createTexture(t,this._noMipmap,this._invertY,e,this.samplingMode,this._delayedOnLoad,this._delayedOnError,this._buffer,null,this._format,this._forcedExtension,this._mimeType,this._loaderOptions,this._creationFlags,this._useSRGBBuffer),this._deleteBuffer&&(this._buffer=null)),this._delayedOnLoad=null,this._delayedOnError=null}_prepareRowForTextureGeneration(e,t,i,r){e*=this._cachedUScale,t*=this._cachedVScale,e-=this.uRotationCenter*this._cachedUScale,t-=this.vRotationCenter*this._cachedVScale,i-=this.wRotationCenter,b.TransformCoordinatesFromFloatsToRef(e,t,i,this._rowGenerationMatrix,r),r.x+=this.uRotationCenter*this._cachedUScale+this._cachedUOffset,r.y+=this.vRotationCenter*this._cachedVScale+this._cachedVOffset,r.z+=this.wRotationCenter}getTextureMatrix(e=1){if(this.uOffset===this._cachedUOffset&&this.vOffset===this._cachedVOffset&&this.uScale*e===this._cachedUScale&&this.vScale===this._cachedVScale&&this.uAng===this._cachedUAng&&this.vAng===this._cachedVAng&&this.wAng===this._cachedWAng&&this.uRotationCenter===this._cachedURotationCenter&&this.vRotationCenter===this._cachedVRotationCenter&&this.wRotationCenter===this._cachedWRotationCenter&&this.homogeneousRotationInUVTransform===this._cachedHomogeneousRotationInUVTransform)return this._cachedTextureMatrix;this._cachedUOffset=this.uOffset,this._cachedVOffset=this.vOffset,this._cachedUScale=this.uScale*e,this._cachedVScale=this.vScale,this._cachedUAng=this.uAng,this._cachedVAng=this.vAng,this._cachedWAng=this.wAng,this._cachedURotationCenter=this.uRotationCenter,this._cachedVRotationCenter=this.vRotationCenter,this._cachedWRotationCenter=this.wRotationCenter,this._cachedHomogeneousRotationInUVTransform=this.homogeneousRotationInUVTransform,(!this._cachedTextureMatrix||!this._rowGenerationMatrix)&&(this._cachedTextureMatrix=Z.Zero(),this._rowGenerationMatrix=new Z,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),Z.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(Z.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),Z.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),Z.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),Z.TranslationToRef(this._cachedUOffset,this._cachedVOffset,0,$.Matrix[3]),$.Matrix[0].multiplyToRef(this._rowGenerationMatrix,this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[1],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[2],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[3],this._cachedTextureMatrix),this._cachedTextureMatrix.setRowFromFloats(2,this._cachedTextureMatrix.m[12],this._cachedTextureMatrix.m[13],this._cachedTextureMatrix.m[14],1)):(this._prepareRowForTextureGeneration(0,0,0,this._t0),this._prepareRowForTextureGeneration(1,0,0,this._t1),this._prepareRowForTextureGeneration(0,1,0,this._t2),this._t1.subtractInPlace(this._t0),this._t2.subtractInPlace(this._t0),Z.FromValuesToRef(this._t1.x,this._t1.y,this._t1.z,0,this._t2.x,this._t2.y,this._t2.z,0,this._t0.x,this._t0.y,this._t0.z,0,0,0,0,1,this._cachedTextureMatrix));let t=this.getScene();if(!t)return this._cachedTextureMatrix;let i=this._cachedIdentity3x2;return this._cachedIdentity3x2=this._cachedTextureMatrix.isIdentityAs3x2(),this.optimizeUVAllocation&&i!==this._cachedIdentity3x2&&t.markAllMaterialsAsDirty(1,r=>r.hasTexture(this)),this._cachedTextureMatrix}getReflectionTextureMatrix(){let e=this.getScene();if(!e)return this._cachedReflectionTextureMatrix;if(this.uOffset===this._cachedReflectionUOffset&&this.vOffset===this._cachedReflectionVOffset&&this.uScale===this._cachedReflectionUScale&&this.vScale===this._cachedReflectionVScale&&this.coordinatesMode===this._cachedReflectionCoordinatesMode)if(this.coordinatesMode===n.PROJECTION_MODE){if(this._cachedReflectionProjectionMatrixId===e.getProjectionMatrix().updateFlag)return this._cachedReflectionTextureMatrix}else return this._cachedReflectionTextureMatrix;this._cachedReflectionTextureMatrix||(this._cachedReflectionTextureMatrix=Z.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=Z.Zero());let t=this._cachedReflectionCoordinatesMode!==this.coordinatesMode;switch(this._cachedReflectionUOffset=this.uOffset,this._cachedReflectionVOffset=this.vOffset,this._cachedReflectionUScale=this.uScale,this._cachedReflectionVScale=this.vScale,this._cachedReflectionCoordinatesMode=this.coordinatesMode,this.coordinatesMode){case n.PLANAR_MODE:{Z.IdentityToRef(this._cachedReflectionTextureMatrix),this._cachedReflectionTextureMatrix[0]=this.uScale,this._cachedReflectionTextureMatrix[5]=this.vScale,this._cachedReflectionTextureMatrix[12]=this.uOffset,this._cachedReflectionTextureMatrix[13]=this.vOffset;break}case n.PROJECTION_MODE:{Z.FromValuesToRef(.5,0,0,0,0,-.5,0,0,0,0,0,0,.5,.5,1,1,this._projectionModeMatrix);let i=e.getProjectionMatrix();this._cachedReflectionProjectionMatrixId=i.updateFlag,i.multiplyToRef(this._projectionModeMatrix,this._cachedReflectionTextureMatrix);break}default:Z.IdentityToRef(this._cachedReflectionTextureMatrix);break}return t&&e.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)),this._cachedReflectionTextureMatrix}clone(){let e={noMipmap:this._noMipmap,invertY:this._invertY,samplingMode:this.samplingMode,onLoad:void 0,onError:void 0,buffer:this._texture?this._texture._buffer:void 0,deleteBuffer:this._deleteBuffer,format:this.textureFormat,mimeType:this.mimeType,loaderOptions:this._loaderOptions,creationFlags:this._creationFlags,useSRGBBuffer:this._useSRGBBuffer};return nt.Clone(()=>new n(this._texture?this._texture.url:null,this.getScene(),e),this)}serialize(){var i,r;let e=this.name;n.SerializeBuffers||this.name.startsWith("data:")&&(this.name=""),this.name.startsWith("data:")&&this.url===this.name&&(this.url="");let t=super.serialize(n._SerializeInternalTextureUniqueId);if(!t)return null;if(n.SerializeBuffers||n.ForceSerializeBuffers)if(typeof this._buffer=="string"&&this._buffer.startsWith("data:"))t.base64String=this._buffer,t.name=t.name.replace("data:","");else if(this.url&&this.url.startsWith("data:")&&this._buffer instanceof Uint8Array){let s=this.mimeType||"image/png";t.base64String=`data:${s};base64,${Um(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?$V(this):JV(this));return t.invertY=this._invertY,t.samplingMode=this.samplingMode,t._creationFlags=this._creationFlags,t._useSRGBBuffer=this._useSRGBBuffer,n._SerializeInternalTextureUniqueId&&(t.internalTextureUniqueId=(i=this._texture)==null?void 0:i.uniqueId),t.internalTextureLabel=(r=this._texture)==null?void 0:r.label,t.noMipmap=this._noMipmap,this.name=e,t}getClassName(){return"Texture"}dispose(){super.dispose(),this.onLoadObservable.clear(),this._delayedOnLoad=null,this._delayedOnError=null,this._buffer=null}static Parse(e,t,i){if(e.customType){let c=fc.Instantiate(e.customType).Parse(e,t,i);return e.samplingMode&&c.updateSamplingMode&&c._samplingMode&&c._samplingMode!==e.samplingMode&&c.updateSamplingMode(e.samplingMode),c}if(e.isCube&&!e.isRenderTarget)return n._CubeTextureParser(e,t,i);let r=e.internalTextureUniqueId!==void 0;if(!e.name&&!e.isRenderTarget&&!r)return null;let s;if(r){let l=t.getEngine().getLoadedTexturesCache();for(let c of l)if(c.uniqueId===e.internalTextureUniqueId){s=c;break}}let a=l=>{if(l&&l._texture&&(l._texture._cachedWrapU=null,l._texture._cachedWrapV=null,l._texture._cachedWrapR=null),e.samplingMode){let c=e.samplingMode;l&&l.samplingMode!==c&&l.updateSamplingMode(c)}if(l&&e.animations)for(let c=0;c{var c,f,d,h,u;let l=!0;if(e.noMipmap&&(l=!1),e.mirrorPlane){let m=n._CreateMirror(e.name,e.renderTargetSize,t,l);return m._waitingRenderList=e.renderList,m.mirrorPlane=Ao.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let _=0;_{a(m)}},p=e.base64String,g=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",g,t,_),m.name=e.name}else{let _;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?_=e.name:_=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(_=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(h=e._useSRGBBuffer)!=null?h:!1,creationFlags:(u=e._creationFlags)!=null?u:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(_,t,p)}return m}},e,t)}static CreateFromBase64String(e,t,i,r,s,a=n.TRILINEAR_SAMPLINGMODE,o=null,l=null,c=5,f,d){return new n("data:"+t,i,r,s,a,o,l,e,!1,c,void 0,void 0,f,d)}static LoadFromDataString(e,t,i,r=!1,s,a=!0,o=n.TRILINEAR_SAMPLINGMODE,l=null,c=null,f=5,d,h){return e.substring(0,5)!=="data:"&&(e="data:"+e),new n(e,i,s,a,o,l,c,t,r,f,void 0,void 0,d,h)}};_e.SerializeBuffers=!0;_e.ForceSerializeBuffers=!1;_e.OnTextureLoadErrorObservable=new te;_e._SerializeInternalTextureUniqueId=!1;_e._CubeTextureParser=(n,e,t)=>{throw Qe("CubeTexture")};_e._CreateMirror=(n,e,t,i)=>{throw Qe("MirrorTexture")};_e._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw Qe("RenderTargetTexture")};_e.NEAREST_SAMPLINGMODE=1;_e.NEAREST_NEAREST_MIPLINEAR=8;_e.BILINEAR_SAMPLINGMODE=2;_e.LINEAR_LINEAR_MIPNEAREST=11;_e.TRILINEAR_SAMPLINGMODE=3;_e.LINEAR_LINEAR_MIPLINEAR=3;_e.NEAREST_NEAREST_MIPNEAREST=4;_e.NEAREST_LINEAR_MIPNEAREST=5;_e.NEAREST_LINEAR_MIPLINEAR=6;_e.NEAREST_LINEAR=7;_e.NEAREST_NEAREST=1;_e.LINEAR_NEAREST_MIPNEAREST=9;_e.LINEAR_NEAREST_MIPLINEAR=10;_e.LINEAR_LINEAR=2;_e.LINEAR_NEAREST=12;_e.EXPLICIT_MODE=0;_e.SPHERICAL_MODE=1;_e.PLANAR_MODE=2;_e.CUBIC_MODE=3;_e.PROJECTION_MODE=4;_e.SKYBOX_MODE=5;_e.INVCUBIC_MODE=6;_e.EQUIRECTANGULAR_MODE=7;_e.FIXED_EQUIRECTANGULAR_MODE=8;_e.FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;_e.CLAMP_ADDRESSMODE=0;_e.WRAP_ADDRESSMODE=1;_e.MIRROR_ADDRESSMODE=2;_e.UseSerializedUrlIfAny=!1;P([F()],_e.prototype,"url",void 0);P([F()],_e.prototype,"uOffset",void 0);P([F()],_e.prototype,"vOffset",void 0);P([F()],_e.prototype,"uScale",void 0);P([F()],_e.prototype,"vScale",void 0);P([F()],_e.prototype,"uAng",void 0);P([F()],_e.prototype,"vAng",void 0);P([F()],_e.prototype,"wAng",void 0);P([F()],_e.prototype,"uRotationCenter",void 0);P([F()],_e.prototype,"vRotationCenter",void 0);P([F()],_e.prototype,"wRotationCenter",void 0);P([F()],_e.prototype,"homogeneousRotationInUVTransform",void 0);P([F()],_e.prototype,"isBlocking",null);Ut("BABYLON.Texture",_e);nt._TextureParser=_e.Parse});var Ro,L,Zi=I(()=>{GC();Lt();Vm();Ro=class{get isDisposed(){return this._isDisposed}constructor(e,t,i,r=0,s=!1,a=!1,o=!1,l,c){this._isAlreadyOwned=!1,this._isDisposed=!1,e&&e.getScene?this._engine=e.getScene().getEngine():this._engine=e,this._updatable=i,this._instanced=a,this._divisor=l||1,this._label=c,t instanceof fh?(this._data=null,this._buffer=t):(this._data=t,this._buffer=null),this.byteStride=o?r:r*Float32Array.BYTES_PER_ELEMENT,s||this.create()}createVertexBuffer(e,t,i,r,s,a=!1,o){let l=a?t:t*Float32Array.BYTES_PER_ELEMENT,c=r?a?r:r*Float32Array.BYTES_PER_ELEMENT:this.byteStride;return new L(this._engine,this,e,this._updatable,!0,c,s===void 0?this._instanced:s,l,i,void 0,void 0,!0,this._divisor||o)}isUpdatable(){return this._updatable}getData(){return this._data}getBuffer(){return this._buffer}getStrideSize(){return this.byteStride/Float32Array.BYTES_PER_ELEMENT}create(e=null){!e&&this._buffer||(e=e||this._data,e&&(this._buffer?this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e),this._data=e):this._updatable?(this._buffer=this._engine.createDynamicVertexBuffer(e,this._label),this._data=e):this._buffer=this._engine.createVertexBuffer(e,void 0,this._label)))}_rebuild(){if(this._data)this._buffer=null,this.create(this._data);else{if(!this._buffer)return;if(this._buffer.capacity>0){this._updatable?this._buffer=this._engine.createDynamicVertexBuffer(this._buffer.capacity,this._label):this._buffer=this._engine.createVertexBuffer(this._buffer.capacity,void 0,this._label);return}ee.Warn(`Missing data for buffer "${this._label}" ${this._buffer?"(uniqueId: "+this._buffer.uniqueId+")":""}. Buffer reconstruction failed.`),this._buffer=null}}update(e){this.create(e)}updateDirectly(e,t,i,r=!1){this._buffer&&this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e,r?t:t*Float32Array.BYTES_PER_ELEMENT,i?i*this.byteStride:void 0),t===0&&i===void 0?this._data=e:this._data=null)}_increaseReferences(){if(this._buffer){if(!this._isAlreadyOwned){this._isAlreadyOwned=!0;return}this._buffer.references++}}dispose(){this._buffer&&this._engine._releaseBuffer(this._buffer)&&(this._isDisposed=!0,this._data=null,this._buffer=null)}},L=class n{get isDisposed(){return this._isDisposed}get instanceDivisor(){return this._instanceDivisor}set instanceDivisor(e){let t=e!=0;this._instanceDivisor=e,t!==this._instanced&&(this._instanced=t,this._computeHashCode())}get _maxVerticesCount(){let e=this.getData();return e?Array.isArray(e)?e.length/(this.byteStride/4)-this.byteOffset/4:(e.byteLength-this.byteOffset)/this.byteStride:0}constructor(e,t,i,r,s,a,o,l,c,f,d=!1,h=!1,u=1,m=!1){var g,v,T,S,E;this._isDisposed=!1;let _;if(this.engine=e,typeof r=="object"&&r!==null?(_=(g=r.updatable)!=null?g:!1,s=r.postponeInternalCreation,a=r.stride,o=r.instanced,l=r.offset,c=r.size,f=r.type,d=(v=r.normalized)!=null?v:!1,h=(T=r.useBytes)!=null?T:!1,u=(S=r.divisor)!=null?S:1,m=(E=r.takeBufferOwnership)!=null?E:!1,this._label=r.label):_=!!r,t instanceof Ro?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new Ro(e,t,_,a,s,o,h,u,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let A=this.getData();this.type=A?n.GetDataType(A):n.FLOAT}else this.type=f;let p=vl(this.type);h?(this._size=c||(a?a/p:n.DeduceStride(i)),this.byteStride=a||this._buffer.byteStride||this._size*p,this.byteOffset=l||0):(this._size=c||a||n.DeduceStride(i),this.byteStride=a?a*p:this._buffer.byteStride||this._size*p,this.byteOffset=(l||0)*p),this.normalized=d,this._instanced=o!==void 0?o:!1,this._instanceDivisor=o?u:0,this._alignBuffer(),this._computeHashCode()}_computeHashCode(){this.hashCode=(this.type-5120<<0)+((this.normalized?1:0)<<3)+(this._size<<4)+((this._instanced?1:0)<<6)+(this.byteStride<<12)}_rebuild(){var e;(e=this._buffer)==null||e._rebuild()}getKind(){return this._kind}isUpdatable(){return this._buffer.isUpdatable()}getData(){return this._buffer.getData()}getFloatData(e,t){let i=this.getData();return i?eP(i,this._size,this.type,this.byteOffset,this.byteStride,this.normalized,e,t):null}getBuffer(){return this._buffer.getBuffer()}getWrapperBuffer(){return this._buffer}getStrideSize(){return this.byteStride/vl(this.type)}getOffset(){return this.byteOffset/vl(this.type)}getSize(e=!1){return e?this._size*vl(this.type):this._size}getIsInstanced(){return this._instanced}getInstanceDivisor(){return this._instanceDivisor}create(e){this._buffer.create(e),this._alignBuffer()}update(e){this._buffer.update(e),this._alignBuffer()}updateDirectly(e,t,i=!1){this._buffer.updateDirectly(e,t,void 0,i),this._alignBuffer()}dispose(){this._ownsBuffer&&this._buffer.dispose(),this._isDisposed=!0}forEach(e,t){gh(this._buffer.getData(),this.byteOffset,this.byteStride,this._size,this.type,e,this.normalized,(i,r)=>{for(let s=0;s{for(let d=0;d{Zi();mi();dc=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new te,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[L.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[L.PositionKind]=new L(this._scene.getEngine(),e,L.PositionKind,!1,!1,2),this._buildIndexBuffer()}_buildIndexBuffer(){let e=[];e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),this._indexBuffer=this._scene.getEngine().createIndexBuffer(e)}_getActivePostProcesses(e){let t=this._activePostProcesses;t.length=0;for(let i=0;i{Lt();tG=(n,e,t)=>!n||n.getClassName&&n.getClassName()==="Mesh"?null:n.getClassName&&(n.getClassName()==="SubMesh"||n.getClassName()==="PhysicsBody")?n.clone(e):n.clone?n.clone():Array.isArray(n)?n.slice():t&&typeof n=="object"?{...n}:null;Sl=class{static DeepCopy(e,t,i,r,s=!1){let a=ice(e);for(let o of a){if(o[0]==="_"&&(!r||r.indexOf(o)===-1)||o.endsWith("Observable")||i&&i.indexOf(o)!==-1)continue;let l=e[o],c=typeof l;if(c!=="function")try{if(c==="object")if(l instanceof Uint8Array)t[o]=Uint8Array.from(l);else if(l instanceof Array){if(t[o]=[],l.length>0)if(typeof l[0]=="object")for(let f=0;f{mi();Oa();Lt();Gg();tc();Sn();_h();Gi();lc();ul();rP();wg();Eo();pe=class{static get BaseUrl(){return ji.BaseUrl}static set BaseUrl(e){ji.BaseUrl=e}static get CleanUrl(){return ji.CleanUrl}static set CleanUrl(e){ji.CleanUrl=e}static IsAbsoluteUrl(e){return e.indexOf("//")===0?!0:e.indexOf("://")===-1||e.indexOf(".")===-1||e.indexOf("/")===-1||e.indexOf(":")>e.indexOf("/")?!1:e.indexOf("://"){El(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(St.AssetBaseUrl&&e.startsWith(St._DefaultAssetsUrl)){let t=St.AssetBaseUrl.endsWith("/")?St.AssetBaseUrl.slice(0,-1):St.AssetBaseUrl;return e.replace(St._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(St._DefaultCdnUrl)){if(St.ScriptBaseUrl){let i=St.ScriptBaseUrl.endsWith("/")?St.ScriptBaseUrl.slice(0,-1):St.ScriptBaseUrl;e=e.replace(St._DefaultCdnUrl,i)}else if(St._CdnVersion){let i=`${St._DefaultCdnUrl}/v${St._CdnVersion}`;e.startsWith(i)||(e=e.replace(St._DefaultCdnUrl,i))}}return e=St.ScriptPreprocessUrl(e),t&&!St.IsAbsoluteUrl(e)&&(e=St.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=St.GetBabylonScriptURL(e),St.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=St.GetBabylonScriptURL(e),await St.LoadScriptAsync(e)}static _LoadScriptNative(e,t,i){let r=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(r.message,r)}static _LoadScriptWeb(e,t,i,r,s=!1){let a=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(a.message,a)}static async LoadScriptAsync(e,t){return await new Promise((i,r)=>{this.LoadScript(e,()=>{i()},(s,a)=>{r(a||new Error(s))},t)})}static ReadFileAsDataURL(e,t,i){let r=new FileReader,s={onCompleteObservable:new te,abort:()=>r.abort()};return r.onloadend=()=>{s.onCompleteObservable.notifyObservers(s)},r.onload=a=>{t(a.target.result)},r.onprogress=i,r.readAsDataURL(e),s}static ReadFile(e,t,i,r,s){return vh(e,t,i,r,s)}static FileAsURL(e){let t=new Blob([e]);return window.URL.createObjectURL(t)}static Format(e,t=2){return e.toFixed(t)}static DeepCopy(e,t,i,r){Sl.DeepCopy(e,t,i,r)}static IsEmpty(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}static RegisterTopRootEvents(e,t){for(let i=0;i{let l=atob(this.toDataURL(a,o).split(",")[1]),c=l.length,f=new Uint8Array(c);for(let d=0;dt(s)):e.toBlob(function(s){t(s)},i,r)}static DownloadBlob(e,t){if("download"in document.createElement("a")){if(!t){let i=new Date;t="screenshot_"+((i.getFullYear()+"-"+(i.getMonth()+1)).slice(2)+"-"+i.getDate()+"_"+i.getHours()+"-"+("0"+i.getMinutes()).slice(-2))+".png"}St.Download(e,t)}else if(e&&typeof URL!="undefined"){let i=URL.createObjectURL(e),r=window.open("");if(!r)return;let s=r.document.createElement("img");s.onload=function(){URL.revokeObjectURL(i)},s.src=i,r.document.body.appendChild(s)}}static EncodeScreenshotCanvasData(e,t,i="image/png",r,s){if(typeof r=="string"||!t)this.ToBlob(e,function(a){a&&St.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(St._IsOffScreenCanvas(e)){e.convertToBlob({type:i,quality:s}).then(o=>{let l=new FileReader;l.readAsDataURL(o),l.onloadend=()=>{let c=l.result;t(c)}});return}let a=e.toDataURL(i,s);t(a)}}static Download(e,t){if(typeof URL=="undefined")return;let i=window.URL.createObjectURL(e),r=document.createElement("a");document.body.appendChild(r),r.style.display="none",r.href=i,r.download=t,r.addEventListener("click",()=>{r.parentElement&&r.parentElement.removeChild(r)}),r.click(),window.URL.revokeObjectURL(i)}static BackCompatCameraNoPreventDefault(e){return typeof e[0]=="boolean"?e[0]:typeof e[1]=="boolean"?e[1]:!1}static CreateScreenshot(e,t,i,r,s="image/png",a=!1,o){throw Qe("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw Qe("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,h,u){throw Qe("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,h){throw Qe("ScreenshotTools")}static RandomId(){return If()}static IsBase64(e){return Cf(e)}static DecodeBase64(e){return Pf(e)}static get errorsCount(){return ee.errorsCount}static Log(e){ee.Log(e)}static Warn(e){ee.Warn(e)}static Error(e){ee.Error(e)}static get LogCache(){return ee.LogCache}static ClearLogCache(){ee.ClearLogCache()}static set LogLevels(e){ee.LogLevels=e}static set PerformanceLogLevel(e){var t;if((e&St.PerformanceUserMarkLogLevel)===St.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartUserMark,St.EndPerformanceCounter=St._EndUserMark);return}if((e&St.PerformanceConsoleLogLevel)===St.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartPerformanceConsole,St.EndPerformanceCounter=St._EndPerformanceConsole);return}St.StartPerformanceCounter=St._StartPerformanceCounterDisabled,St.EndPerformanceCounter=St._EndPerformanceCounterDisabled,(t=_native==null?void 0:_native.disablePerformanceLogging)==null||t.call(_native)}static _StartPerformanceCounterDisabled(e,t){}static _EndPerformanceCounterDisabled(e,t){}static _StartUserMark(e,t=!0){if(!St._Performance){if(!Er())return;St._Performance=window.performance}!t||!St._Performance.mark||St._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!St._Performance.mark||(St._Performance.mark(e+"-End"),St._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(St._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(St._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(St._NativePerformanceCounterHandles.has(e))St.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);St._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=St._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),St._NativePerformanceCounterHandles.delete(e)):St.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return br.Now}static GetClassName(e,t=!1){let i=null;return!t&&e.getClassName?i=e.getClassName():(e instanceof Object&&(i=(t?e:Object.getPrototypeOf(e)).constructor.__bjsclassName__),i||(i=typeof e)),i}static First(e,t){for(let i of e)if(t(i))return i;return null}static getFullClassName(e,t=!1){let i=null,r=null;if(!t&&e.getClassName)i=e.getClassName();else{if(e instanceof Object){let s=t?e:Object.getPrototypeOf(e);i=s.constructor.__bjsclassName__,r=s.constructor.__bjsmoduleName__}i||(i=typeof e)}return i?(r!=null?r+".":"")+i:null}static async DelayAsync(e){await new Promise(t=>{setTimeout(()=>{t()},e)})}static IsSafari(){return ec()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};St=pe;pe.AssetBaseUrl="";pe.UseCustomRequestHeaders=!1;pe.CustomRequestHeaders=wr.CustomRequestHeaders;pe.GetDOMTextContent=LA;pe._DefaultCdnUrl="https://cdn.babylonjs.com";pe._CdnVersion="9.6.0";pe._DefaultAssetsUrl="https://assets.babylonjs.com/core";pe.LoadScript=typeof _native=="undefined"?St._LoadScriptWeb:St._LoadScriptNative;pe.GetAbsoluteUrl=typeof document=="object"?n=>{let e=document.createElement("a");return e.href=n,e.href}:typeof URL=="function"&&typeof location=="object"?n=>new URL(n,location.origin).href:()=>{throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.")};pe.NoneLogLevel=ee.NoneLogLevel;pe.MessageLogLevel=ee.MessageLogLevel;pe.WarningLogLevel=ee.WarningLogLevel;pe.ErrorLogLevel=ee.ErrorLogLevel;pe.AllLogLevel=ee.AllLogLevel;pe.IsWindowObjectExist=Er;pe.PerformanceNoneLogLevel=0;pe.PerformanceUserMarkLogLevel=1;pe.PerformanceConsoleLogLevel=2;pe._NativePerformanceCounterHandles=new Map;pe.StartPerformanceCounter=St._StartPerformanceCounterDisabled;pe.EndPerformanceCounter=St._EndPerformanceCounterDisabled;xx=class n{constructor(e,t,i,r=0){this.iterations=e,this.index=r-1,this._done=!1,this._fn=t,this._successCallback=i}executeNext(){this._done||(this.index+1{s&&s()?o.breakLoop():setTimeout(()=>{for(let l=0;l=e)break;if(i(c),s&&s()){o.breakLoop();break}}o.executeNext()},a)},r)}};pe.Mix=Pg;pe.IsExponentOfTwo=dh;Oe.FallbackTexture="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z"});var Sr,Of=I(()=>{Lt();wi();Sr=class n{constructor(e,t,i=!1,r,s=!1,a){this._uniformNames=[],this._valueCache={},this._engine=e,this._noUBO=!e.supportsUniformBuffers||s,this._dynamic=i,this._name=r!=null?r:"no-name",this._data=t||[],this._uniformLocations={},this._uniformSizes={},this._uniformArraySizes={},this._uniformLocationPointer=0,this._needSync=!1,this._trackUBOsInFrame=!1,(a===void 0&&this._engine._features.trackUbosInFrame||a===!0)&&(this._buffers=[],this._bufferIndex=-1,this._bufferUpdatedLastFrame=!1,this._createBufferOnWrite=!1,this._currentFrameId=0,this._trackUBOsInFrame=!0),this._noUBO?(this.updateMatrix3x3=this._updateMatrix3x3ForEffect,this.updateMatrix2x2=this._updateMatrix2x2ForEffect,this.updateFloat=this._updateFloatForEffect,this.updateFloat2=this._updateFloat2ForEffect,this.updateFloat3=this._updateFloat3ForEffect,this.updateFloat4=this._updateFloat4ForEffect,this.updateFloatArray=this._updateFloatArrayForEffect,this.updateArray=this._updateArrayForEffect,this.updateIntArray=this._updateIntArrayForEffect,this.updateUIntArray=this._updateUIntArrayForEffect,this.updateMatrix=this._updateMatrixForEffect,this.updateMatrices=this._updateMatricesForEffect,this.updateVector3=this._updateVector3ForEffect,this.updateVector4=this._updateVector4ForEffect,this.updateColor3=this._updateColor3ForEffect,this.updateColor4=this._updateColor4ForEffect,this.updateDirectColor4=this._updateDirectColor4ForEffect,this.updateInt=this._updateIntForEffect,this.updateInt2=this._updateInt2ForEffect,this.updateInt3=this._updateInt3ForEffect,this.updateInt4=this._updateInt4ForEffect,this.updateUInt=this._updateUIntForEffect,this.updateUInt2=this._updateUInt2ForEffect,this.updateUInt3=this._updateUInt3ForEffect,this.updateUInt4=this._updateUInt4ForEffect):(this._engine._uniformBuffers.push(this),this.updateMatrix3x3=this._updateMatrix3x3ForUniform,this.updateMatrix2x2=this._updateMatrix2x2ForUniform,this.updateFloat=this._updateFloatForUniform,this.updateFloat2=this._updateFloat2ForUniform,this.updateFloat3=this._updateFloat3ForUniform,this.updateFloat4=this._updateFloat4ForUniform,this.updateFloatArray=this._updateFloatArrayForUniform,this.updateArray=this._updateArrayForUniform,this.updateIntArray=this._updateIntArrayForUniform,this.updateUIntArray=this._updateUIntArrayForUniform,this.updateMatrix=this._updateMatrixForUniform,this.updateMatrices=this._updateMatricesForUniform,this.updateVector3=this._updateVector3ForUniform,this.updateVector4=this._updateVector4ForUniform,this.updateColor3=this._updateColor3ForUniform,this.updateColor4=this._updateColor4ForUniform,this.updateDirectColor4=this._updateDirectColor4ForUniform,this.updateInt=this._updateIntForUniform,this.updateInt2=this._updateInt2ForUniform,this.updateInt3=this._updateInt3ForUniform,this.updateInt4=this._updateInt4ForUniform,this.updateUInt=this._updateUIntForUniform,this.updateUInt2=this._updateUInt2ForUniform,this.updateUInt3=this._updateUInt3ForUniform,this.updateUInt4=this._updateUInt4ForUniform)}get useUbo(){return!this._noUBO}get isSync(){return!this._needSync}isDynamic(){return this._dynamic}getData(){return this._bufferData}getBuffer(){return this._buffer}getUniformNames(){return this._uniformNames}_fillAlignment(e){let t;if(e<=2?t=e:t=4,this._uniformLocationPointer%t!==0){let i=this._uniformLocationPointer;this._uniformLocationPointer+=t-this._uniformLocationPointer%t;let r=this._uniformLocationPointer-i;for(let s=0;s0&&typeof t=="number"&&(this._uniformArraySizes[e]={strideSize:t,arraySize:i}),this._uniformLocations[e]!==void 0||(this._uniformNames.push(e),this._noUBO))return;let r;if(i>0){if(t instanceof Array)throw"addUniform should not be use with Array in UBO: "+e;if(this._fillAlignment(4),t==16)t=t*i;else{let a=(4-t)*i;t=t*i+a}r=[];for(let s=0;s1&&this._buffers[this._bufferIndex][1])if(this._buffersEqual(this._bufferData,this._buffers[this._bufferIndex][1])){this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame;return}else this._copyBuffer(this._bufferData,this._buffers[this._bufferIndex][1]);this._bufferUpdatedLastFrame=!0,this._engine.updateUniformBuffer(this._buffer,this._bufferData),this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame}}_createNewBuffer(){this._bufferIndex+10?(this._buffers.length===1?this._needSync=!this._bufferUpdatedLastFrame:this._needSync=this._bufferIndex!==0,this._bufferIndex=0,this._buffer=this._buffers[this._bufferIndex][0]):this._bufferIndex=-1)}updateUniform(e,t,i){this._checkNewFrame();let r=this._uniformLocations[e];if(r===void 0){if(this._buffer){ee.Error("Cannot add an uniform after UBO has been created. uniformName="+e);return}this.addUniform(e,i),r=this._uniformLocations[e]}if(this._buffer||this.create(),this._dynamic)for(let s=0;s1&&this._buffers[t][1]&&this._bufferData.set(this._buffers[t][1]),this._valueCache={},this._currentFrameId=this._engine.frameId,!0;return!1}has(e){return this._uniformLocations[e]!==void 0}dispose(){if(this._noUBO)return;let e=this._engine._uniformBuffers,t=e.indexOf(this);if(t!==-1&&(e[t]=e[e.length-1],e.pop()),this._trackUBOsInFrame&&this._buffers)for(let i=0;i{Xi=class n{constructor(e){this.length=0,this.data=new Array(e),this._id=n._GlobalId++}push(e){this.data[this.length++]=e,this.length>this.data.length&&(this.data.length*=2)}forEach(e){for(let t=0;tthis.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t=this.length?-1:t}contains(e){return this.indexOf(e)!==-1}};Xi._GlobalId=0;bo=class extends Xi{constructor(){super(...arguments),this._duplicateId=0}push(e){super.push(e),e.__smartArrayFlags||(e.__smartArrayFlags={}),e.__smartArrayFlags[this._id]=this._duplicateId}pushNoDuplicate(e){return e.__smartArrayFlags&&e.__smartArrayFlags[this._id]===this._duplicateId?!1:(this.push(e),!0)}reset(){super.reset(),this._duplicateId++}concatWithNoDuplicate(e){if(e.length!==0){this.length+e.length>this.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t{Mo();ke();kg=class n{set opaqueSortCompareFn(e){e?this._opaqueSortCompareFn=e:this._opaqueSortCompareFn=n.PainterSortCompare,this._renderOpaque=this._renderOpaqueSorted}set alphaTestSortCompareFn(e){e?this._alphaTestSortCompareFn=e:this._alphaTestSortCompareFn=n.PainterSortCompare,this._renderAlphaTest=this._renderAlphaTestSorted}set transparentSortCompareFn(e){e?this._transparentSortCompareFn=e:this._transparentSortCompareFn=n.defaultTransparentSortCompare,this._renderTransparent=this._renderTransparentSorted}constructor(e,t,i=null,r=null,s=null){this.index=e,this._opaqueSubMeshes=new Xi(256),this._transparentSubMeshes=new Xi(256),this._alphaTestSubMeshes=new Xi(256),this._depthOnlySubMeshes=new Xi(256),this._particleSystems=new Xi(256),this._spriteManagers=new Xi(256),this._empty=!0,this._edgesRenderers=new bo(16),this.disableDepthPrePass=!1,this._scene=t,this.opaqueSortCompareFn=i,this.alphaTestSortCompareFn=r,this.transparentSortCompareFn=s}render(e,t,i,r,s=!0,a=!0,o=!0,l=!0,c){if(e){e(this._opaqueSubMeshes,this._alphaTestSubMeshes,this._transparentSubMeshes,this._depthOnlySubMeshes);return}let f=this._scene.getEngine();s&&this._depthOnlySubMeshes.length!==0&&(f.setColorWrite(!1),this._renderAlphaTest(this._depthOnlySubMeshes),f.setColorWrite(!0)),a&&this._opaqueSubMeshes.length!==0&&this._renderOpaque(this._opaqueSubMeshes),o&&this._alphaTestSubMeshes.length!==0&&this._renderAlphaTest(this._alphaTestSubMeshes);let d=f.getStencilBuffer();if(f.setStencilBuffer(!1),t&&this._renderSprites(),i&&this._renderParticles(r),this.onBeforeTransparentRendering&&this.onBeforeTransparentRendering(),l&&(c||this._transparentSubMeshes.length!==0||this._scene.useOrderIndependentTransparency)){if(f.setStencilBuffer(d),c)c(this._transparentSubMeshes,this);else if(this._scene.useOrderIndependentTransparency){let h=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);h.length&&this._renderTransparent(h)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let h=0;ht._alphaIndex?1:e._alphaIndext._distanceToCamera?-1:0}static frontToBackSortCompare(e,t){return e._distanceToCamerat._distanceToCamera?1:0}static PainterSortCompare(e,t){let i=e.getMesh(),r=t.getMesh();return i.material&&r.material?i.material.uniqueId-r.material.uniqueId:i.uniqueId-r.uniqueId}prepare(){this._opaqueSubMeshes.reset(),this._transparentSubMeshes.reset(),this._alphaTestSubMeshes.reset(),this._depthOnlySubMeshes.reset(),this._particleSystems.reset(),this.prepareSprites(),this._edgesRenderers.reset(),this._empty=!0}prepareSprites(){this._spriteManagers.reset()}dispose(){this._opaqueSubMeshes.dispose(),this._transparentSubMeshes.dispose(),this._alphaTestSubMeshes.dispose(),this._depthOnlySubMeshes.dispose(),this._particleSystems.dispose(),this._spriteManagers.dispose(),this._edgesRenderers.dispose()}dispatch(e,t,i){t===void 0&&(t=e.getMesh()),i===void 0&&(i=e.getMaterial()),i!=null&&(i.needAlphaBlendingForMesh(t)?this._transparentSubMeshes.push(e):i.needAlphaTestingForMesh(t)?(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._alphaTestSubMeshes.push(e)):(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._opaqueSubMeshes.push(e)),t._renderingGroup=this,t._edgesRenderer&&t.isEnabled()&&t.isVisible&&t._edgesRenderer.isEnabled&&this._edgesRenderers.pushNoDuplicate(t._edgesRenderer),this._empty=!1)}dispatchSprites(e){this._spriteManagers.push(e),this._empty=!1}dispatchParticles(e){this._particleSystems.push(e),this._empty=!1}_renderParticles(e){if(this._particleSystems.length===0)return;let t=this._scene.activeCamera;this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);for(let i=0;i{iG();nP=class{},Fa=class n{get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e;for(let t of this._renderingGroups)t.disableDepthPrePass=e}get maintainStateBetweenFrames(){return this._maintainStateBetweenFrames}set maintainStateBetweenFrames(e){e!==this._maintainStateBetweenFrames&&(this._maintainStateBetweenFrames=e,this._maintainStateBetweenFrames||this.restoreDispachedFlags())}restoreDispachedFlags(){for(let e of this._scene.meshes)if(e.subMeshes)for(let t of e.subMeshes)t._wasDispatched=!1;if(this._scene.spriteManagers)for(let e of this._scene.spriteManagers)e._wasDispatched=!1;for(let e of this._scene.particleSystems)e._wasDispatched=!1}constructor(e){this._useSceneAutoClearSetup=!1,this._disableDepthPrePass=!1,this._renderingGroups=new Array,this._autoClearDepthStencil={},this._customOpaqueSortCompareFn={},this._customAlphaTestSortCompareFn={},this._customTransparentSortCompareFn={},this._renderingGroupInfo=new nP,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{jt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};jt.FALLOFF_DEFAULT=0;jt.FALLOFF_PHYSICAL=1;jt.FALLOFF_GLTF=2;jt.FALLOFF_STANDARD=3;jt.LIGHTMAP_DEFAULT=0;jt.LIGHTMAP_SPECULAR=1;jt.LIGHTMAP_SHADOWSONLY=2;jt.INTENSITYMODE_AUTOMATIC=0;jt.INTENSITYMODE_LUMINOUSPOWER=1;jt.INTENSITYMODE_LUMINOUSINTENSITY=2;jt.INTENSITYMODE_ILLUMINANCE=3;jt.INTENSITYMODE_LUMINANCE=4;jt.LIGHTTYPEID_POINTLIGHT=0;jt.LIGHTTYPEID_DIRECTIONALLIGHT=1;jt.LIGHTTYPEID_SPOTLIGHT=2;jt.LIGHTTYPEID_HEMISPHERICLIGHT=3;jt.LIGHTTYPEID_RECT_AREALIGHT=4;jt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ba,sP=I(()=>{Of();mi();Rx();pl();ul();Lt();Mo();Wg();Ba=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=ox(e,this._renderListHasChanged)),this._renderList=e)}get disableImageProcessing(){return this._disableImageProcessing}set disableImageProcessing(e){e!==this._disableImageProcessing&&(this._disableImageProcessing=e,this._scene.markAllMaterialsAsDirty(64))}get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e,this._renderingManager.disableDepthPrePass=e}get name(){return this._name}set name(e){if(this._name!==e){if(this._name=e,this._sceneUBOs)for(let t=0;tthis._checkReadiness(),()=>{if(this._freezeActiveMeshesCancel=null,e)for(let t=0;t{this._freezeActiveMeshesCancel=null,i?(ee.Error("ObjectRenderer: Timeout while waiting for the renderer to be ready."),t&&ee.Error(t)):(ee.Error("ObjectRenderer: An unexpected error occurred while waiting for the renderer to be ready."),t&&(ee.Error(t),t.stack&&ee.Error(t.stack)))})}_unfreezeActiveMeshes(){var e;(e=this._freezeActiveMeshesCancel)==null||e.call(this),this._freezeActiveMeshesCancel=null;for(let t=0;t{let a=this._renderList?this._renderList.length:0;if(s===0&&a>0||a===0)for(let o of this._scene.meshes)o._markSubMeshesAsLightDirty()},this.particleSystemList=null,this.getCustomRenderList=null,this.renderMeshes=!0,this.renderDepthOnlyMeshes=!0,this.renderOpaqueMeshes=!0,this.renderAlphaTestMeshes=!0,this.renderTransparentMeshes=!0,this.renderParticles=!0,this.renderSprites=!1,this.forceLayerMaskCheck=!1,this.enableBoundingBoxRendering=!1,this.enableOutlineRendering=!0,this._disableImageProcessing=!1,this.dontSetTransformationMatrix=!1,this._disableDepthPrePass=!1,this.onBeforeRenderObservable=new te,this.onAfterRenderObservable=new te,this.onBeforeRenderingManagerRenderObservable=new te,this.onAfterRenderingManagerRenderObservable=new te,this.onInitRenderingObservable=new te,this.onFinishRenderingObservable=new te,this.onFastPathRenderObservable=new te,this._currentRefreshId=-1,this._refreshRate=1,this._currentApplyByPostProcessSetting=!1,this._activeMeshes=new Xi(256),this._activeBoundingBoxes=new Xi(32),this._currentFrameId=-1,this._currentSceneUBOIndex=0,this._isFrozen=!1,this._freezeActiveMeshesCancel=null,this._currentSceneCamera=null,this.name=e,this._scene=t,this._engine=this._scene.getEngine(),this._useUBO=this._engine.supportsUniformBuffers,this.renderList=[],this._renderPassIds=[],this.options={numPasses:1,doNotChangeAspectRatio:!0,enableClusteredLights:!1,...i},this._createRenderPassId(),this.renderPassId=this._renderPassIds[0],this._renderingManager=new Fa(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===jt.LIGHTTYPEID_CLUSTERED_CONTAINER&&r.isSupported&&r._updateBatches(this.activeCamera).render()}),this._scene.addObjectRenderer(this)}_releaseRenderPassId(){for(let e=0;e=this._sceneUBOs.length){let s=this._sceneUBOs.length;this._sceneUBOs.push(this._createSceneUBO(`Scene ubo #${s} for ${this.name}`,t)),this._sceneUBOIsMultiview.push(t)}else this._sceneUBOIsMultiview[this._currentSceneUBOIndex]!==t&&(this._sceneUBOs[this._currentSceneUBOIndex].dispose(),this._sceneUBOs[this._currentSceneUBOIndex]=this._createSceneUBO(`Scene ubo #${this._currentSceneUBOIndex} for ${this.name}`,t),this._sceneUBOIsMultiview[this._currentSceneUBOIndex]=t);let i=this._sceneUBOs[this._currentSceneUBOIndex++];return i.unbindEffect(),i}resetRefreshCounter(){this._currentRefreshId=-1}get refreshRate(){return this._refreshRate}set refreshRate(e){this._refreshRate=e,this.resetRefreshCounter()}shouldRender(){return this._engine.snapshotRendering?!0:this._currentRefreshId===-1?(this._currentRefreshId=1,!0):this.refreshRate===this._currentRefreshId?(this._currentRefreshId=1,!0):(this._currentRefreshId++,!1)}isReadyForRendering(e,t){this.prepareRenderList(),this.initRender(e,t);let i=this._checkReadiness();return this.finishRender(),i}prepareRenderList(){let e=this._scene;if(this._waitingRenderList){if(!this.renderListPredicate){this.renderList=[];for(let t=0;t1&&(e.incrementRenderId(),e.resetCachedMaterial())}let s=this.particleSystemList||e.particleSystems;for(let a of s)a.isReady()||(i=!1);return this._engine.currentRenderPassId=t,i}_prepareRenderingManager(e=0,t=!1){var h,u;let i=this._scene,r=null,s,a,o=this.renderList?this.renderList:i.frameGraph?i.meshes:i.getActiveMeshes().data,l=this.renderList||i.frameGraph?o.length:i.getActiveMeshes().length;if(this.getCustomRenderList&&(r=this.getCustomRenderList(e,o,l)),r)s=r.length,a=this.forceLayerMaskCheck;else{if(this._defaultRenderListPrepared&&!t&&!this._engine.isWebGPU)return o;this._defaultRenderListPrepared=!0,r=o,s=l,a=!this.renderList||this.forceLayerMaskCheck}let c=i.activeCamera,f=(h=this.cameraForLOD)!=null?h:c,d=(u=i.getBoundingBoxRenderer)==null?void 0:u.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{ul();Ss=class{static GetEffect(e){return e.getPipelineContext===void 0?e.effect:e}constructor(e,t=!0){this._wasPreviouslyReady=!1,this._forceRebindOnNextCall=!0,this._wasPreviouslyUsingInstances=null,this.effect=null,this.defines=null,this.drawContext=e.createDrawContext(),t&&(this.materialContext=e.createMaterialContext())}setEffect(e,t,i=!0){var r;this.effect=e,t!==void 0&&(this.defines=t),i&&((r=this.drawContext)==null||r.reset())}dispose(e=!1){var t;if(this.effect){let i=this.effect;e?i.dispose():vo.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var nG={};Fe(nG,{postprocessVertexShader:()=>rce});var aP,rG,rce,oP=I(()=>{k();aP="postprocessVertexShader",rG=`attribute vec2 position;uniform vec2 scale;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); +${this.m[12]}, ${this.m[13]}, ${this.m[14]}, ${this.m[15]}}`}toArray(e=null,t=0){if(!e)return this._m;let i=this._m;for(let r=0;r<16;r++)e[t+r]=i[r];return this}asArray(){return this._m}fromArray(e,t=0){return n.FromArrayToRef(e,t,this)}copyFromFloats(...e){return n.FromArrayToRef(e,0,this)}set(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=e[i];return this.markAsUpdated(),this}setAll(e){let t=this._m;for(let i=0;i<16;i++)t[i]=e;return this.markAsUpdated(),this}invert(){return this.invertToRef(this),this}reset(){return n.FromValuesToRef(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,this),this._updateIdentityStatus(!1),this}add(e){let t=new n;return this.addToRef(e,t),t}addToRef(e,t){let i=this._m,r=t._m,s=e.m;for(let a=0;a<16;a++)r[a]=i[a]+s[a];return t.markAsUpdated(),t}addToSelf(e){let t=this._m,i=e.m;return t[0]+=i[0],t[1]+=i[1],t[2]+=i[2],t[3]+=i[3],t[4]+=i[4],t[5]+=i[5],t[6]+=i[6],t[7]+=i[7],t[8]+=i[8],t[9]+=i[9],t[10]+=i[10],t[11]+=i[11],t[12]+=i[12],t[13]+=i[13],t[14]+=i[14],t[15]+=i[15],this.markAsUpdated(),this}addInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]+=i[r];return this.markAsUpdated(),this}addInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]+=e[i];return this.markAsUpdated(),this}subtract(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]-r[a];return t.markAsUpdated(),t}subtractInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]-=i[r];return this.markAsUpdated(),this}subtractFromFloats(...e){return this.subtractFromFloatsToRef(...e,new n)}subtractFromFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]-s[a];return t.markAsUpdated(),t}invertToRef(e){return this._isIdentity===!0?(n.IdentityToRef(e),e):(jC(this,e.asArray())?e.markAsUpdated():e.copyFrom(this),e)}addAtIndex(e,t){return this._m[e]+=t,this.markAsUpdated(),this}multiplyAtIndex(e,t){return this._m[e]*=t,this.markAsUpdated(),this}setTranslationFromFloats(e,t,i){return this._m[12]=e,this._m[13]=t,this._m[14]=i,this.markAsUpdated(),this}addTranslationFromFloats(e,t,i){return this._m[12]+=e,this._m[13]+=t,this._m[14]+=i,this.markAsUpdated(),this}setTranslation(e){return this.setTranslationFromFloats(e._x,e._y,e._z)}getTranslation(){return new b(this._m[12],this._m[13],this._m[14])}getTranslationToRef(e){return e.x=this._m[12],e.y=this._m[13],e.z=this._m[14],e}removeRotationAndScaling(){let e=this.m;return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e[12],e[13],e[14],e[15],this),this._updateIdentityStatus(e[12]===0&&e[13]===0&&e[14]===0&&e[15]===1),this}copyFrom(e){e.copyToArray(this._m);let t=e;return this.updateFlag=t.updateFlag,this._updateIdentityStatus(t._isIdentity,t._isIdentityDirty,t._isIdentity3x2,t._isIdentity3x2Dirty),this}copyToArray(e,t=0){return bV(this,e,t),this}multiply(e){let t=new n;return this.multiplyToRef(e,t),t}multiplyInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]*=i[r];return this.markAsUpdated(),this}multiplyByFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e[i];return this.markAsUpdated(),this}multiplyByFloatsToRef(...e){let t=e.pop(),i=this._m,r=t._m,s=e;for(let a=0;a<16;a++)r[a]=i[a]*s[a];return t.markAsUpdated(),t}multiplyToRef(e,t){return this._isIdentity?(t.copyFrom(e),t):e._isIdentity?(t.copyFrom(this),t):(this.multiplyToArray(e,t._m,0),t.markAsUpdated(),t)}multiplyToArray(e,t,i){return KC(this,e,t,i),this}divide(e){return this.divideToRef(e,new n)}divideToRef(e,t){let i=this._m,r=e.m,s=t._m;for(let a=0;a<16;a++)s[a]=i[a]/r[a];return t.markAsUpdated(),t}divideInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]/=i[r];return this.markAsUpdated(),this}minimizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}minimizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}maximizeInPlace(e){let t=this._m,i=e.m;for(let r=0;r<16;r++)t[r]=Math.min(t[r],i[r]);return this.markAsUpdated(),this}maximizeInPlaceFromFloats(...e){let t=this._m;for(let i=0;i<16;i++)t[i]=Math.min(t[i],e[i]);return this.markAsUpdated(),this}negate(){return this.negateToRef(new n)}negateInPlace(){let e=this._m;for(let t=0;t<16;t++)e[t]=-e[t];return this.markAsUpdated(),this}negateToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=-t[r];return e.markAsUpdated(),e}equals(e){let t=e;if(!t)return!1;if((this._isIdentity||t._isIdentity)&&!this._isIdentityDirty&&!t._isIdentityDirty)return this._isIdentity&&t._isIdentity;let i=this.m,r=t.m;return i[0]===r[0]&&i[1]===r[1]&&i[2]===r[2]&&i[3]===r[3]&&i[4]===r[4]&&i[5]===r[5]&&i[6]===r[6]&&i[7]===r[7]&&i[8]===r[8]&&i[9]===r[9]&&i[10]===r[10]&&i[11]===r[11]&&i[12]===r[12]&&i[13]===r[13]&&i[14]===r[14]&&i[15]===r[15]}equalsWithEpsilon(e,t=0){let i=this._m,r=e.m;for(let s=0;s<16;s++)if(!Ri(i[s],r[s],t))return!1;return!0}equalsToFloats(...e){let t=this._m;for(let i=0;i<16;i++)if(t[i]!=e[i])return!1;return!0}floor(){return this.floorToRef(new n)}floorToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=Math.floor(t[r]);return e.markAsUpdated(),e}fract(){return this.fractToRef(new n)}fractToRef(e){let t=this._m,i=e._m;for(let r=0;r<16;r++)i[r]=t[r]-Math.floor(t[r]);return e.markAsUpdated(),e}clone(){let e=new n;return e.copyFrom(this),e}getClassName(){return"Matrix"}getHashCode(){let e=Es(this._m[0]);for(let t=1;t<16;t++)e=e*397^Es(this._m[t]);return e}decomposeToTransformNode(e){return e.rotationQuaternion=e.rotationQuaternion||new Ke,this.decompose(e.scaling,e.rotationQuaternion,e.position)}decompose(e,t,i,r,s=!0){if(this._isIdentity)return i&&i.setAll(0),e&&e.setAll(1),t&&t.copyFromFloats(0,0,0,1),!0;let a=this._m;if(i&&i.copyFromFloats(a[12],a[13],a[14]),e=e||Xe.Vector3[0],e.x=Math.sqrt(a[0]*a[0]+a[1]*a[1]+a[2]*a[2]),e.y=Math.sqrt(a[4]*a[4]+a[5]*a[5]+a[6]*a[6]),e.z=Math.sqrt(a[8]*a[8]+a[9]*a[9]+a[10]*a[10]),r){let o=(s?r.absoluteScaling.x:r.scaling.x)<0?-1:1,l=(s?r.absoluteScaling.y:r.scaling.y)<0?-1:1,c=(s?r.absoluteScaling.z:r.scaling.z)<0?-1:1;e.x*=o,e.y*=l,e.z*=c}else this.determinant()<=0&&(e.y*=-1);if(e._x===0||e._y===0||e._z===0)return t&&t.copyFromFloats(0,0,0,1),!1;if(t){let o=1/e._x,l=1/e._y,c=1/e._z;n.FromValuesToRef(a[0]*o,a[1]*o,a[2]*o,0,a[4]*l,a[5]*l,a[6]*l,0,a[8]*c,a[9]*c,a[10]*c,0,0,0,0,1,Xe.Matrix[0]),Ke.FromRotationMatrixToRef(Xe.Matrix[0],t)}return!0}getRow(e){if(e<0||e>3)return null;let t=e*4;return new Ni(this._m[t+0],this._m[t+1],this._m[t+2],this._m[t+3])}getRowToRef(e,t){if(e>=0&&e<=3){let i=e*4;t.x=this._m[i+0],t.y=this._m[i+1],t.z=this._m[i+2],t.w=this._m[i+3]}return t}setRow(e,t){return this.setRowFromFloats(e,t.x,t.y,t.z,t.w)}transpose(){let e=new n;return n.TransposeToRef(this,e),e}transposeToRef(e){return n.TransposeToRef(this,e),e}setRowFromFloats(e,t,i,r,s){if(e<0||e>3)return this;let a=e*4;return this._m[a+0]=t,this._m[a+1]=i,this._m[a+2]=r,this._m[a+3]=s,this.markAsUpdated(),this}scale(e){let t=new n;return this.scaleToRef(e,t),t}scaleToRef(e,t){for(let i=0;i<16;i++)t._m[i]=this._m[i]*e;return t.markAsUpdated(),t}scaleAndAddToRef(e,t){for(let i=0;i<16;i++)t._m[i]+=this._m[i]*e;return t.markAsUpdated(),t}scaleInPlace(e){let t=this._m;for(let i=0;i<16;i++)t[i]*=e;return this.markAsUpdated(),this}toNormalMatrix(e){let t=Xe.Matrix[0];this.invertToRef(t),t.transposeToRef(e);let i=e._m;return n.FromValuesToRef(i[0],i[1],i[2],0,i[4],i[5],i[6],0,i[8],i[9],i[10],0,0,0,0,1,e),e}getRotationMatrix(){let e=new n;return this.getRotationMatrixToRef(e),e}getRotationMatrixToRef(e){let t=Xe.Vector3[0];if(!this.decompose(t))return n.IdentityToRef(e),e;let i=this._m,r=1/t._x,s=1/t._y,a=1/t._z;return n.FromValuesToRef(i[0]*r,i[1]*r,i[2]*r,0,i[4]*s,i[5]*s,i[6]*s,0,i[8]*a,i[9]*a,i[10]*a,0,0,0,0,1,e),e}toggleModelMatrixHandInPlace(){let e=this._m;return e[2]*=-1,e[6]*=-1,e[8]*=-1,e[9]*=-1,e[14]*=-1,this.markAsUpdated(),this}toggleProjectionMatrixHandInPlace(){let e=this._m;return e[8]*=-1,e[9]*=-1,e[10]*=-1,e[11]*=-1,this.markAsUpdated(),this}static FromArray(e,t=0){let i=new n;return n.FromArrayToRef(e,t,i),i}static FromArrayToRef(e,t,i){for(let r=0;r<16;r++)i._m[r]=e[r+t];return i.markAsUpdated(),i}static FromFloat32ArrayToRefScaled(e,t,i,r){return r._m[0]=e[0+t]*i,r._m[1]=e[1+t]*i,r._m[2]=e[2+t]*i,r._m[3]=e[3+t]*i,r._m[4]=e[4+t]*i,r._m[5]=e[5+t]*i,r._m[6]=e[6+t]*i,r._m[7]=e[7+t]*i,r._m[8]=e[8+t]*i,r._m[9]=e[9+t]*i,r._m[10]=e[10+t]*i,r._m[11]=e[11+t]*i,r._m[12]=e[12+t]*i,r._m[13]=e[13+t]*i,r._m[14]=e[14+t]*i,r._m[15]=e[15+t]*i,r.markAsUpdated(),r}static get IdentityReadOnly(){return n._IdentityReadOnly}static FromValuesToRef(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g){let v=g._m;v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated()}static FromValues(e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p){let g=new n,v=g._m;return v[0]=e,v[1]=t,v[2]=i,v[3]=r,v[4]=s,v[5]=a,v[6]=o,v[7]=l,v[8]=c,v[9]=f,v[10]=d,v[11]=h,v[12]=u,v[13]=m,v[14]=_,v[15]=p,g.markAsUpdated(),g}static Compose(e,t,i){let r=new n;return n.ComposeToRef(e,t,i,r),r}static ComposeToRef(e,t,i,r){let s=r._m,a=t._x,o=t._y,l=t._z,c=t._w,f=a+a,d=o+o,h=l+l,u=a*f,m=a*d,_=a*h,p=o*d,g=o*h,v=l*h,T=c*f,S=c*d,E=c*h,A=e._x,R=e._y,M=e._z;return s[0]=(1-(p+v))*A,s[1]=(m+E)*A,s[2]=(_-S)*A,s[3]=0,s[4]=(m-E)*R,s[5]=(1-(u+v))*R,s[6]=(g+T)*R,s[7]=0,s[8]=(_+S)*M,s[9]=(g-T)*M,s[10]=(1-(u+p))*M,s[11]=0,s[12]=i._x,s[13]=i._y,s[14]=i._z,s[15]=1,r.markAsUpdated(),r}static Identity(){let e=n.FromValues(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);return e._updateIdentityStatus(!0),e}static IdentityToRef(e){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,e),e._updateIdentityStatus(!0),e}static Zero(){let e=n.FromValues(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);return e._updateIdentityStatus(!1),e}static RotationX(e){let t=new n;return n.RotationXToRef(e,t),t}static Invert(e){let t=new n;return e.invertToRef(t),t}static RotationXToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(1,0,0,0,0,r,i,0,0,-i,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationY(e){let t=new n;return n.RotationYToRef(e,t),t}static RotationYToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,0,-i,0,0,1,0,0,i,0,r,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationZ(e){let t=new n;return n.RotationZToRef(e,t),t}static RotationZToRef(e,t){let i=Math.sin(e),r=Math.cos(e);return n.FromValuesToRef(r,i,0,0,-i,r,0,0,0,0,1,0,0,0,0,1,t),t._updateIdentityStatus(r===1&&i===0),t}static RotationAxis(e,t){let i=new n;return n.RotationAxisToRef(e,t,i),i}static RotationAxisToRef(e,t,i){let r=Math.sin(-t),s=Math.cos(-t),a=1-s;e=e.normalizeToRef(Xe.Vector3[0]);let o=i._m;return o[0]=e._x*e._x*a+s,o[1]=e._x*e._y*a-e._z*r,o[2]=e._x*e._z*a+e._y*r,o[3]=0,o[4]=e._y*e._x*a+e._z*r,o[5]=e._y*e._y*a+s,o[6]=e._y*e._z*a-e._x*r,o[7]=0,o[8]=e._z*e._x*a-e._y*r,o[9]=e._z*e._y*a+e._x*r,o[10]=e._z*e._z*a+s,o[11]=0,o[12]=0,o[13]=0,o[14]=0,o[15]=1,i.markAsUpdated(),i}static RotationAlignToRef(e,t,i,r=!1){let s=b.Dot(t,e),a=i._m;if(s<-1+Ft)a[0]=-1,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=r?1:-1,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=r?-1:1,a[11]=0;else{let o=b.Cross(t,e),l=1/(1+s);a[0]=o._x*o._x*l+s,a[1]=o._y*o._x*l-o._z,a[2]=o._z*o._x*l+o._y,a[3]=0,a[4]=o._x*o._y*l+o._z,a[5]=o._y*o._y*l+s,a[6]=o._z*o._y*l-o._x,a[7]=0,a[8]=o._x*o._z*l-o._y,a[9]=o._y*o._z*l+o._x,a[10]=o._z*o._z*l+s,a[11]=0}return a[12]=0,a[13]=0,a[14]=0,a[15]=1,i.markAsUpdated(),i}static RotationYawPitchRoll(e,t,i){let r=new n;return n.RotationYawPitchRollToRef(e,t,i,r),r}static RotationYawPitchRollToRef(e,t,i,r){return Ke.RotationYawPitchRollToRef(e,t,i,Xe.Quaternion[0]),Xe.Quaternion[0].toRotationMatrix(r),r}static Scaling(e,t,i){let r=new n;return n.ScalingToRef(e,t,i,r),r}static ScalingToRef(e,t,i,r){return n.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1,r),r._updateIdentityStatus(e===1&&t===1&&i===1),r}static Translation(e,t,i){let r=new n;return n.TranslationToRef(e,t,i,r),r}static TranslationToRef(e,t,i,r){return n.FromValuesToRef(1,0,0,0,0,1,0,0,0,0,1,0,e,t,i,1,r),r._updateIdentityStatus(e===0&&t===0&&i===0),r}static Lerp(e,t,i){let r=new n;return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){let s=r._m,a=e.m,o=t.m;for(let l=0;l<16;l++)s[l]=a[l]*(1-i)+o[l]*i;return r.markAsUpdated(),r}static DecomposeLerp(e,t,i){let r=new n;return n.DecomposeLerpToRef(e,t,i,r),r}static DecomposeLerpToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Quaternion[0],o=Xe.Vector3[1];e.decompose(s,a,o);let l=Xe.Vector3[2],c=Xe.Quaternion[1],f=Xe.Vector3[3];t.decompose(l,c,f);let d=Xe.Vector3[4];b.LerpToRef(s,l,i,d);let h=Xe.Quaternion[2];Ke.SlerpToRef(a,c,i,h);let u=Xe.Vector3[5];return b.LerpToRef(o,f,i,u),n.ComposeToRef(d,h,u,r),r}static LookAtLH(e,t,i){let r=new n;return n.LookAtLHToRef(e,t,i,r),r}static LookAtLHToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.Vector3[2];t.subtractToRef(e,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookAtRH(e,t,i){let r=new n;return n.LookAtRHToRef(e,t,i,r),r}static LookAtRHToRef(e,t,i,r){let s=Xe.Vector3[0],a=Xe.Vector3[1],o=Xe.Vector3[2];e.subtractToRef(t,o),o.normalize(),b.CrossToRef(i,o,s);let l=s.lengthSquared();l===0?s.x=1:s.normalizeFromLength(Math.sqrt(l)),b.CrossToRef(o,s,a),a.normalize();let c=-b.Dot(s,e),f=-b.Dot(a,e),d=-b.Dot(o,e);return n.FromValuesToRef(s._x,a._x,o._x,0,s._y,a._y,o._y,0,s._z,a._z,o._z,0,c,f,d,1,r),r}static LookDirectionLH(e,t){let i=new n;return n.LookDirectionLHToRef(e,t,i),i}static LookDirectionLHToRef(e,t,i){let r=Xe.Vector3[0];r.copyFrom(e),r.scaleInPlace(-1);let s=Xe.Vector3[1];return b.CrossToRef(t,r,s),n.FromValuesToRef(s._x,s._y,s._z,0,t._x,t._y,t._z,0,r._x,r._y,r._z,0,0,0,0,1,i),i}static LookDirectionRH(e,t){let i=new n;return n.LookDirectionRHToRef(e,t,i),i}static LookDirectionRHToRef(e,t,i){let r=Xe.Vector3[2];return b.CrossToRef(t,e,r),n.FromValuesToRef(r._x,r._y,r._z,0,t._x,t._y,t._z,0,e._x,e._y,e._z,0,0,0,0,1,i),i}static OrthoLH(e,t,i,r,s){let a=new n;return n.OrthoLHToRef(e,t,i,r,a,s),a}static OrthoLHToRef(e,t,i,r,s,a){let o=i,l=r,c=2/e,f=2/t,d=2/(l-o),h=-(l+o)/(l-o);return n.FromValuesToRef(c,0,0,0,0,f,0,0,0,0,d,0,0,0,h,1,s),a&&s.multiplyToRef(uh,s),s._updateIdentityStatus(c===1&&f===1&&d===1&&h===0),s}static OrthoOffCenterLH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l){let c=s,f=a,d=2/(t-e),h=2/(r-i),u=2/(f-c),m=-(f+c)/(f-c),_=(e+t)/(e-t),p=(r+i)/(i-r);return n.FromValuesToRef(d,0,0,0,0,h,0,0,0,0,u,0,_,p,m,1,o),l&&o.multiplyToRef(uh,o),o.markAsUpdated(),o}static ObliqueOffCenterLHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=-o*Math.cos(l),u=-o*Math.sin(l);return n.TranslationToRef(0,0,-c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterLHToRef(e,t,i,r,s,a,f,d),Xe.Matrix[0].multiplyToRef(f,f),f}static OrthoOffCenterRH(e,t,i,r,s,a,o){let l=new n;return n.OrthoOffCenterRHToRef(e,t,i,r,s,a,l,o),l}static OrthoOffCenterRHToRef(e,t,i,r,s,a,o,l){return n.OrthoOffCenterLHToRef(e,t,i,r,s,a,o,l),o._m[10]*=-1,o}static ObliqueOffCenterRHToRef(e,t,i,r,s,a,o,l,c,f,d){let h=o*Math.cos(l),u=o*Math.sin(l);return n.TranslationToRef(0,0,c,Xe.Matrix[1]),n.FromValuesToRef(1,0,0,0,0,1,0,0,h,u,1,0,0,0,0,1,Xe.Matrix[0]),Xe.Matrix[1].multiplyToRef(Xe.Matrix[0],Xe.Matrix[0]),n.TranslationToRef(0,0,-c,Xe.Matrix[1]),Xe.Matrix[0].multiplyToRef(Xe.Matrix[1],Xe.Matrix[0]),n.OrthoOffCenterRHToRef(e,t,i,r,s,a,f,d),Xe.Matrix[0].multiplyToRef(f,f),f}static PerspectiveLH(e,t,i,r,s,a=0){let o=new n,l=i,c=r,f=2*l/e,d=2*l/t,h=(c+l)/(c-l),u=-2*c*l/(c-l),m=Math.tan(a);return n.FromValuesToRef(f,0,0,0,0,d,0,m,0,0,h,1,0,0,u,0,o),s&&o.multiplyToRef(uh,o),o._updateIdentityStatus(!1),o}static PerspectiveFovLH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovLHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovLHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?-1:d!==0?(d+f)/(d-f):1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,1,0,0,p,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseLHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,1,0,0,1,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovRH(e,t,i,r,s,a=0,o=!1){let l=new n;return n.PerspectiveFovRHToRef(e,t,i,r,l,!0,s,a,o),l}static PerspectiveFovRHToRef(e,t,i,r,s,a=!0,o,l=0,c=!1){let f=i,d=r,h=1/Math.tan(e*.5),u=a?h/t:h,m=a?h:h*t,_=c&&f===0?1:d!==0?-(d+f)/(d-f):-1,p=c&&f===0?2*d:d!==0?-2*d*f/(d-f):-2*f,g=Math.tan(l);return n.FromValuesToRef(u,0,0,0,0,m,0,g,0,0,_,-1,0,0,p,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static PerspectiveFovReverseRHToRef(e,t,i,r,s,a=!0,o,l=0){let c=1/Math.tan(e*.5),f=a?c/t:c,d=a?c:c*t,h=Math.tan(l);return n.FromValuesToRef(f,0,0,0,0,d,0,h,0,0,-i,-1,0,0,-1,0,s),o&&s.multiplyToRef(uh,s),s._updateIdentityStatus(!1),s}static GetFinalMatrix(e,t,i,r,s,a){let o=e.width,l=e.height,c=e.x,f=e.y,d=n.FromValues(o/2,0,0,0,0,-l/2,0,0,0,0,a-s,0,c+o/2,l/2+f,s,1),h=new n;return t.multiplyToRef(i,h),h.multiplyToRef(r,h),h.multiplyToRef(d,h)}static GetAsMatrix2x2(e){let t=e.m,i=[t[0],t[1],t[4],t[5]];return gs.MatrixUse64Bits?i:new Float32Array(i)}static GetAsMatrix3x3(e){let t=e.m,i=[t[0],t[1],t[2],t[4],t[5],t[6],t[8],t[9],t[10]];return gs.MatrixUse64Bits?i:new Float32Array(i)}static Transpose(e){let t=new n;return n.TransposeToRef(e,t),t}static TransposeToRef(e,t){let i=e.m,r=i[0],s=i[4],a=i[8],o=i[12],l=i[1],c=i[5],f=i[9],d=i[13],h=i[2],u=i[6],m=i[10],_=i[14],p=i[3],g=i[7],v=i[11],T=i[15],S=t._m;return S[0]=r,S[1]=s,S[2]=a,S[3]=o,S[4]=l,S[5]=c,S[6]=f,S[7]=d,S[8]=h,S[9]=u,S[10]=m,S[11]=_,S[12]=p,S[13]=g,S[14]=v,S[15]=T,t.markAsUpdated(),t._updateIdentityStatus(e._isIdentity,e._isIdentityDirty),t}static Reflection(e){let t=new n;return n.ReflectionToRef(e,t),t}static ReflectionToRef(e,t){e.normalize();let i=e.normal.x,r=e.normal.y,s=e.normal.z,a=-2*i,o=-2*r,l=-2*s;return n.FromValuesToRef(a*i+1,o*i,l*i,0,a*r,o*r+1,l*r,0,a*s,o*s,l*s+1,0,a*e.d,o*e.d,l*e.d,1,t),t}static FromXYZAxesToRef(e,t,i,r){return n.FromValuesToRef(e._x,e._y,e._z,0,t._x,t._y,t._z,0,i._x,i._y,i._z,0,0,0,0,1,r),r}static FromQuaternionToRef(e,t){let i=e._x*e._x,r=e._y*e._y,s=e._z*e._z,a=e._x*e._y,o=e._z*e._w,l=e._z*e._x,c=e._y*e._w,f=e._y*e._z,d=e._x*e._w;return t._m[0]=1-2*(r+s),t._m[1]=2*(a+o),t._m[2]=2*(l-c),t._m[3]=0,t._m[4]=2*(a-o),t._m[5]=1-2*(s+i),t._m[6]=2*(f+d),t._m[7]=0,t._m[8]=2*(l+c),t._m[9]=2*(f-d),t._m[10]=1-2*(r+i),t._m[11]=0,t._m[12]=0,t._m[13]=0,t._m[14]=0,t._m[15]=1,t.markAsUpdated(),t}};Z._IdentityReadOnly=Z.Identity();Object.defineProperties(Z.prototype,{dimension:{value:[4,4]},rank:{value:2}});Xe=class{};Xe.Vector3=rc(11,b.Zero);Xe.Matrix=rc(2,Z.Identity);Xe.Quaternion=rc(3,Ke.Zero);$=class{};$.Vector2=rc(3,we.Zero);$.Vector3=rc(13,b.Zero);$.Vector4=rc(3,Ni.Zero);$.Quaternion=rc(3,Ke.Zero);$.Matrix=rc(8,Z.Identity);Ut("BABYLON.Vector2",we);Ut("BABYLON.Vector3",b);Ut("BABYLON.Vector4",Ni);Ut("BABYLON.Matrix",Z);uh=Z.FromValues(1,0,0,0,0,1,0,0,0,0,.5,0,0,0,.5,1)});var MV,Hs,IV,Mm=I(()=>{ke();(function(n){n[n.LOCAL=0]="LOCAL",n[n.WORLD=1]="WORLD",n[n.BONE=2]="BONE"})(MV||(MV={}));Hs=class{};Hs.X=new b(1,0,0);Hs.Y=new b(0,1,0);Hs.Z=new b(0,0,1);(function(n){n[n.X=0]="X",n[n.Y=1]="Y",n[n.Z=2]="Z"})(IV||(IV={}))});function Im(n){return Math.pow(n,Rm)}function ym(n){return n<=.04045?.0773993808*n:Math.pow(.947867299*(n+.055),2.4)}function Cm(n){return Math.pow(n,EV)}function Pm(n){return n<=.0031308?12.92*n:1.055*Math.pow(n,.41666)-.055}var Ee,ft,Dn,zt=I(()=>{pl();$i();Kn();jn();Ee=class n{constructor(e=0,t=0,i=0){this.r=e,this.g=t,this.b=i}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+"}"}getClassName(){return"Color3"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,this}fromArray(e,t=0){return n.FromArrayToRef(e,t,this),this}toColor4(e=1){return new ft(this.r,this.g,this.b,e)}asArray(){return[this.r,this.g,this.b]}toLuminance(){return this.r*.3+this.g*.59+this.b*.11}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyByFloats(e,t,i){return new n(this.r*e,this.g*t,this.b*i)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.minimizeInPlaceFromFloats(e.r,e.g,e.b)}maximizeInPlace(e){return this.maximizeInPlaceFromFloats(e.r,e.g,e.b)}minimizeInPlaceFromFloats(e,t,i){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this}maximizeInPlaceFromFloats(e,t,i){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b}equalsFloats(e,t,i){return this.equalsToFloats(e,t,i)}equalsToFloats(e,t,i){return this.r===e&&this.g===t&&this.b===i}equalsWithEpsilon(e,t=Ft){return Ri(this.r,e.r,t)&&Ri(this.g,e.g,t)&&Ri(this.b,e.b,t)}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}scale(e){return new n(this.r*e,this.g*e,this.b*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t}clampToRef(e=0,t=1,i){return i.r=Bt(this.r,e,t),i.g=Bt(this.g,e,t),i.b=Bt(this.b,e,t),i}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b)}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addInPlaceFromFloats(e,t,i){return this.r+=e,this.g+=t,this.b+=i,this}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this}subtractFromFloats(e,t,i){return new n(this.r-e,this.g-t,this.b-i)}subtractFromFloatsToRef(e,t,i,r){return r.r=this.r-e,r.g=this.g-t,r.b=this.b-i,r}clone(){return new n(this.r,this.g,this.b)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copyFromFloats(e,t,i){return this.r=e,this.g=t,this.b=i,this}set(e,t,i){return this.copyFromFloats(e,t,i)}setAll(e){return this.r=this.g=this.b=e,this}toHexString(){let e=Math.round(this.r*255),t=Math.round(this.g*255),i=Math.round(this.b*255);return"#"+To(e)+To(t)+To(i)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,this)}toHSV(){return this.toHSVToRef(new n)}toHSVToRef(e){let t=this.r,i=this.g,r=this.b,s=Math.max(t,i,r),a=Math.min(t,i,r),o=0,l=0,c=s,f=s-a;return s!==0&&(l=f/s),s!=a&&(s==t?(o=(i-r)/f,i=0&&a<=1?(l=s,c=o):a>=1&&a<=2?(l=o,c=s):a>=2&&a<=3?(c=s,f=o):a>=3&&a<=4?(c=o,f=s):a>=4&&a<=5?(l=o,f=s):a>=5&&a<=6&&(l=s,f=o);let d=i-s;return r.r=l+d,r.g=c+d,r.b=f+d,r}static FromHSV(e,t,i){let r=new n(0,0,0);return n.HSVtoRGBToRef(e,t,i,r),r}static FromHexString(e){return new n(0,0,0).fromHexString(e)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2]}static FromInts(e,t,i){return new n(e/255,t/255,i/255)}static Lerp(e,t,i){let r=new n(0,0,0);return n.LerpToRef(e,t,i,r),r}static LerpToRef(e,t,i,r){r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d;return new n(h,u,m)}static Hermite1stDerivative(e,t,i,r,s){let a=n.Black();return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b}static Red(){return new n(1,0,0)}static Green(){return new n(0,1,0)}static Blue(){return new n(0,0,1)}static Black(){return new n(0,0,0)}static get BlackReadOnly(){return n._BlackReadOnly}static White(){return new n(1,1,1)}static Purple(){return new n(.5,0,.5)}static Magenta(){return new n(1,0,1)}static Yellow(){return new n(1,1,0)}static Gray(){return new n(.5,.5,.5)}static Teal(){return new n(0,1,1)}static Random(){return new n(Math.random(),Math.random(),Math.random())}};Ee._V8PerformanceHack=new Ee(.5,.5,.5);Ee._BlackReadOnly=Ee.Black();Object.defineProperties(Ee.prototype,{dimension:{value:[3]},rank:{value:1}});ft=class n{constructor(e=0,t=0,i=0,r=1){this.r=e,this.g=t,this.b=i,this.a=r}asArray(){return[this.r,this.g,this.b,this.a]}toArray(e,t=0){return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e[t+3]=this.a,this}fromArray(e,t=0){return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this.a=e[t+3],this}equals(e){return e&&this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a}add(e){return new n(this.r+e.r,this.g+e.g,this.b+e.b,this.a+e.a)}addToRef(e,t){return t.r=this.r+e.r,t.g=this.g+e.g,t.b=this.b+e.b,t.a=this.a+e.a,t}addInPlace(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this.a+=e.a,this}addInPlaceFromFloats(e,t,i,r){return this.r+=e,this.g+=t,this.b+=i,this.a+=r,this}subtract(e){return new n(this.r-e.r,this.g-e.g,this.b-e.b,this.a-e.a)}subtractToRef(e,t){return t.r=this.r-e.r,t.g=this.g-e.g,t.b=this.b-e.b,t.a=this.a-e.a,t}subtractInPlace(e){return this.r-=e.r,this.g-=e.g,this.b-=e.b,this.a-=e.a,this}subtractFromFloats(e,t,i,r){return new n(this.r-e,this.g-t,this.b-i,this.a-r)}subtractFromFloatsToRef(e,t,i,r,s){return s.r=this.r-e,s.g=this.g-t,s.b=this.b-i,s.a=this.a-r,s}scale(e){return new n(this.r*e,this.g*e,this.b*e,this.a*e)}scaleInPlace(e){return this.r*=e,this.g*=e,this.b*=e,this.a*=e,this}scaleToRef(e,t){return t.r=this.r*e,t.g=this.g*e,t.b=this.b*e,t.a=this.a*e,t}scaleAndAddToRef(e,t){return t.r+=this.r*e,t.g+=this.g*e,t.b+=this.b*e,t.a+=this.a*e,t}clampToRef(e=0,t=1,i){return i.r=Bt(this.r,e,t),i.g=Bt(this.g,e,t),i.b=Bt(this.b,e,t),i.a=Bt(this.a,e,t),i}multiply(e){return new n(this.r*e.r,this.g*e.g,this.b*e.b,this.a*e.a)}multiplyToRef(e,t){return t.r=this.r*e.r,t.g=this.g*e.g,t.b=this.b*e.b,t.a=this.a*e.a,t}multiplyInPlace(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this.a*=e.a,this}multiplyByFloats(e,t,i,r){return new n(this.r*e,this.g*t,this.b*i,this.a*r)}divide(e){throw new ReferenceError("Can not divide a color")}divideToRef(e,t){throw new ReferenceError("Can not divide a color")}divideInPlace(e){throw new ReferenceError("Can not divide a color")}minimizeInPlace(e){return this.r=Math.min(this.r,e.r),this.g=Math.min(this.g,e.g),this.b=Math.min(this.b,e.b),this.a=Math.min(this.a,e.a),this}maximizeInPlace(e){return this.r=Math.max(this.r,e.r),this.g=Math.max(this.g,e.g),this.b=Math.max(this.b,e.b),this.a=Math.max(this.a,e.a),this}minimizeInPlaceFromFloats(e,t,i,r){return this.r=Math.min(e,this.r),this.g=Math.min(t,this.g),this.b=Math.min(i,this.b),this.a=Math.min(r,this.a),this}maximizeInPlaceFromFloats(e,t,i,r){return this.r=Math.max(e,this.r),this.g=Math.max(t,this.g),this.b=Math.max(i,this.b),this.a=Math.max(r,this.a),this}floorToRef(e){throw new ReferenceError("Can not floor a color")}floor(){throw new ReferenceError("Can not floor a color")}fractToRef(e){throw new ReferenceError("Can not fract a color")}fract(){throw new ReferenceError("Can not fract a color")}negate(){throw new ReferenceError("Can not negate a color")}negateInPlace(){throw new ReferenceError("Can not negate a color")}negateToRef(e){throw new ReferenceError("Can not negate a color")}equalsWithEpsilon(e,t=Ft){return Ri(this.r,e.r,t)&&Ri(this.g,e.g,t)&&Ri(this.b,e.b,t)&&Ri(this.a,e.a,t)}equalsToFloats(e,t,i,r){return this.r===e&&this.g===t&&this.b===i&&this.a===r}toString(){return"{R: "+this.r+" G:"+this.g+" B:"+this.b+" A:"+this.a+"}"}getClassName(){return"Color4"}getHashCode(){let e=this.r*255|0;return e=e*397^(this.g*255|0),e=e*397^(this.b*255|0),e=e*397^(this.a*255|0),e}clone(){return new n().copyFrom(this)}copyFrom(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this}copyFromFloats(e,t,i,r){return this.r=e,this.g=t,this.b=i,this.a=r,this}set(e,t,i,r){return this.copyFromFloats(e,t,i,r)}setAll(e){return this.r=this.g=this.b=this.a=e,this}toHexString(e=!1){let t=Math.round(this.r*255),i=Math.round(this.g*255),r=Math.round(this.b*255);if(e)return"#"+To(t)+To(i)+To(r);let s=Math.round(this.a*255);return"#"+To(t)+To(i)+To(r)+To(s)}fromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?this:(this.r=parseInt(e.substring(1,3),16)/255,this.g=parseInt(e.substring(3,5),16)/255,this.b=parseInt(e.substring(5,7),16)/255,e.length===9&&(this.a=parseInt(e.substring(7,9),16)/255),this)}toLinearSpace(e=!1){let t=new n;return this.toLinearSpaceToRef(t,e),t}toLinearSpaceToRef(e,t=!1){return t?(e.r=ym(this.r),e.g=ym(this.g),e.b=ym(this.b)):(e.r=Im(this.r),e.g=Im(this.g),e.b=Im(this.b)),e.a=this.a,this}toGammaSpace(e=!1){let t=new n;return this.toGammaSpaceToRef(t,e),t}toGammaSpaceToRef(e,t=!1){return t?(e.r=Pm(this.r),e.g=Pm(this.g),e.b=Pm(this.b)):(e.r=Cm(this.r),e.g=Cm(this.g),e.b=Cm(this.b)),e.a=this.a,this}static FromHexString(e){return e.substring(0,1)!=="#"||e.length!==9&&e.length!==7?new n(0,0,0,0):new n(0,0,0,1).fromHexString(e)}static Lerp(e,t,i){return n.LerpToRef(e,t,i,new n)}static LerpToRef(e,t,i,r){return r.r=e.r+(t.r-e.r)*i,r.g=e.g+(t.g-e.g)*i,r.b=e.b+(t.b-e.b)*i,r.a=e.a+(t.a-e.a)*i,r}static Hermite(e,t,i,r,s){let a=s*s,o=s*a,l=2*o-3*a+1,c=-2*o+3*a,f=o-2*a+s,d=o-a,h=e.r*l+i.r*c+t.r*f+r.r*d,u=e.g*l+i.g*c+t.g*f+r.g*d,m=e.b*l+i.b*c+t.b*f+r.b*d,_=e.a*l+i.a*c+t.a*f+r.a*d;return new n(h,u,m,_)}static Hermite1stDerivative(e,t,i,r,s){let a=new n;return this.Hermite1stDerivativeToRef(e,t,i,r,s,a),a}static Hermite1stDerivativeToRef(e,t,i,r,s,a){let o=s*s;a.r=(o-s)*6*e.r+(3*o-4*s+1)*t.r+(-o+s)*6*i.r+(3*o-2*s)*r.r,a.g=(o-s)*6*e.g+(3*o-4*s+1)*t.g+(-o+s)*6*i.g+(3*o-2*s)*r.g,a.b=(o-s)*6*e.b+(3*o-4*s+1)*t.b+(-o+s)*6*i.b+(3*o-2*s)*r.b,a.a=(o-s)*6*e.a+(3*o-4*s+1)*t.a+(-o+s)*6*i.a+(3*o-2*s)*r.a}static FromColor3(e,t=1){return new n(e.r,e.g,e.b,t)}static FromArray(e,t=0){return new n(e[t],e[t+1],e[t+2],e[t+3])}static FromArrayToRef(e,t=0,i){i.r=e[t],i.g=e[t+1],i.b=e[t+2],i.a=e[t+3]}static FromInts(e,t,i,r){return new n(e/255,t/255,i/255,r/255)}static CheckColors4(e,t){if(e.length===t*3){let i=[];for(let r=0;rnew ft(0,0,0,0));Ut("BABYLON.Color3",Ee);Ut("BABYLON.Color4",ft)});var Ao,Dm=I(()=>{ke();Ao=class n{constructor(e,t,i,r){this.normal=new b(e,t,i),this.d=r}asArray(){return[this.normal.x,this.normal.y,this.normal.z,this.d]}clone(){return new n(this.normal.x,this.normal.y,this.normal.z,this.d)}getClassName(){return"Plane"}getHashCode(){let e=this.normal.getHashCode();return e=e*397^(this.d|0),e}normalize(){let e=Math.sqrt(this.normal.x*this.normal.x+this.normal.y*this.normal.y+this.normal.z*this.normal.z),t=0;return e!==0&&(t=1/e),this.normal.x*=t,this.normal.y*=t,this.normal.z*=t,this.d*=t,this}transform(e){let t=n._TmpMatrix;e.invertToRef(t);let i=t.m,r=this.normal.x,s=this.normal.y,a=this.normal.z,o=this.d,l=r*i[0]+s*i[1]+a*i[2]+o*i[3],c=r*i[4]+s*i[5]+a*i[6]+o*i[7],f=r*i[8]+s*i[9]+a*i[10]+o*i[11],d=r*i[12]+s*i[13]+a*i[14]+o*i[15];return new n(l,c,f,d)}dotCoordinate(e){return this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z+this.d}copyFromPoints(e,t,i){let r=t.x-e.x,s=t.y-e.y,a=t.z-e.z,o=i.x-e.x,l=i.y-e.y,c=i.z-e.z,f=s*c-a*l,d=a*o-r*c,h=r*l-s*o,u=Math.sqrt(f*f+d*d+h*h),m;return u!==0?m=1/u:m=0,this.normal.x=f*m,this.normal.y=d*m,this.normal.z=h*m,this.d=-(this.normal.x*e.x+this.normal.y*e.y+this.normal.z*e.z),this}isFrontFacingTo(e,t){return b.Dot(this.normal,e)<=t}signedDistanceTo(e){return b.Dot(e,this.normal)+this.d}static FromArray(e){return new n(e[0],e[1],e[2],e[3])}static FromPoints(e,t,i){let r=new n(0,0,0,0);return r.copyFromPoints(e,t,i),r}static FromPositionAndNormal(e,t){let i=new n(0,0,0,0);return this.FromPositionAndNormalToRef(e,t,i)}static FromPositionAndNormalToRef(e,t,i){return i.normal.copyFrom(t),i.normal.normalize(),i.d=-e.dot(i.normal),i}static SignedDistanceToPlaneFromPositionAndNormal(e,t,i){let r=-(t.x*e.x+t.y*e.y+t.z*e.z);return b.Dot(i,t)+r}};Ao._TmpMatrix=Z.Identity()});var Mf,fx=I(()=>{Dm();Mf=class n{static GetPlanes(e){let t=[];for(let i=0;i<6;i++)t.push(new Ao(0,0,0,0));return n.GetPlanesToRef(e,t),t}static GetNearPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[2],t.normal.y=i[7]+i[6],t.normal.z=i[11]+i[10],t.d=i[15]+i[14],t.normalize()}static GetFarPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[2],t.normal.y=i[7]-i[6],t.normal.z=i[11]-i[10],t.d=i[15]-i[14],t.normalize()}static GetLeftPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[0],t.normal.y=i[7]+i[4],t.normal.z=i[11]+i[8],t.d=i[15]+i[12],t.normalize()}static GetRightPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[0],t.normal.y=i[7]-i[4],t.normal.z=i[11]-i[8],t.d=i[15]-i[12],t.normalize()}static GetTopPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]-i[1],t.normal.y=i[7]-i[5],t.normal.z=i[11]-i[9],t.d=i[15]-i[13],t.normalize()}static GetBottomPlaneToRef(e,t){let i=e.m;t.normal.x=i[3]+i[1],t.normal.y=i[7]+i[5],t.normal.z=i[11]+i[9],t.d=i[15]+i[13],t.normalize()}static GetPlanesToRef(e,t){n.GetNearPlaneToRef(e,t[0]),n.GetFarPlaneToRef(e,t[1]),n.GetLeftPlaneToRef(e,t[2]),n.GetRightPlaneToRef(e,t[3]),n.GetTopPlaneToRef(e,t[4]),n.GetBottomPlaneToRef(e,t[5])}static IsPointInFrustum(e,t){for(let i=0;i<6;i++)if(t[i].dotCoordinate(e)<0)return!1;return!0}}});var yV,Lm,qC,Om,mh,ph=I(()=>{jn();ke();Kn();(function(n){n[n.CW=0]="CW",n[n.CCW=1]="CCW"})(yV||(yV={}));Lm=class n{constructor(e){this._radians=e,this._radians<0&&(this._radians+=2*Math.PI)}degrees(){return this._radians*180/Math.PI}radians(){return this._radians}static BetweenTwoPoints(e,t){let i=t.subtract(e),r=Math.atan2(i.y,i.x);return new n(r)}static BetweenTwoVectors(e,t){let i=e.lengthSquared()*t.lengthSquared();if(i===0)return new n(Math.PI/2);i=Math.sqrt(i);let r=e.dot(t)/i;r=Bt(r,-1,1);let s=Math.acos(r);return new n(s)}static FromRadians(e){return new n(e)}static FromDegrees(e){return new n(e*Math.PI/180)}},qC=class{constructor(e,t,i){this.startPoint=e,this.midPoint=t,this.endPoint=i;let r=Math.pow(t.x,2)+Math.pow(t.y,2),s=(Math.pow(e.x,2)+Math.pow(e.y,2)-r)/2,a=(r-Math.pow(i.x,2)-Math.pow(i.y,2))/2,o=(e.x-t.x)*(t.y-i.y)-(t.x-i.x)*(e.y-t.y);this.centerPoint=new we((s*(t.y-i.y)-a*(e.y-t.y))/o,((e.x-t.x)*a-(t.x-i.x)*s)/o),this.radius=this.centerPoint.subtract(this.startPoint).length(),this.startAngle=Lm.BetweenTwoPoints(this.centerPoint,this.startPoint);let l=this.startAngle.degrees(),c=Lm.BetweenTwoPoints(this.centerPoint,this.midPoint).degrees(),f=Lm.BetweenTwoPoints(this.centerPoint,this.endPoint).degrees();c-l>180&&(c-=360),c-l<-180&&(c+=360),f-c>180&&(f-=360),f-c<-180&&(f+=360),this.orientation=c-l<0?0:1,this.angle=Lm.FromDegrees(this.orientation===0?l-f:f-l)}},Om=class n{constructor(e,t){this._points=new Array,this._length=0,this.closed=!1,this._points.push(new we(e,t))}addLineTo(e,t){if(this.closed)return this;let i=new we(e,t),r=this._points[this._points.length-1];return this._points.push(i),this._length+=i.subtract(r).length(),this}addArcTo(e,t,i,r,s=36){if(this.closed)return this;let a=this._points[this._points.length-1],o=new we(e,t),l=new we(i,r),c=new qC(a,o,l),f=c.angle.radians()/s;c.orientation===0&&(f*=-1);let d=c.startAngle.radians()+f;for(let h=0;h(1-l)*(1-l)*c+2*l*(1-l)*f+l*l*d,o=this._points[this._points.length-1];for(let l=0;l<=s;l++){let c=l/s,f=a(c,o.x,e,i),d=a(c,o.y,t,r);this.addLineTo(f,d)}return this}addBezierCurveTo(e,t,i,r,s,a,o=36){if(this.closed)return this;let l=(f,d,h,u,m)=>(1-f)*(1-f)*(1-f)*d+3*f*(1-f)*(1-f)*h+3*f*f*(1-f)*u+f*f*f*m,c=this._points[this._points.length-1];for(let f=0;f<=o;f++){let d=f/o,h=l(d,c.x,e,i,s),u=l(d,c.y,t,r,a);this.addLineTo(h,u)}return this}isPointInside(e){let t=!1,i=this._points.length;for(let r=i-1,s=0;sNumber.EPSILON){if(c<0&&(a=this._points[s],l=-l,o=this._points[r],c=-c),e.yo.y)continue;if(e.y===a.y&&e.x===a.x)return!0;{let f=c*(e.x-a.x)-l*(e.y-a.y);if(f===0)return!0;if(f<0)continue;t=!t}}else{if(e.y!==a.y)continue;if(o.x<=e.x&&e.x<=a.x||a.x<=e.x&&e.x<=o.x)return!0}}return t}close(){return this.closed=!0,this}length(){let e=this._length;if(this.closed){let t=this._points[this._points.length-1],i=this._points[0];e+=i.subtract(t).length()}return e}area(){let e=this._points.length,t=0;for(let i=e-1,r=0;r1)return we.Zero();let t=e*this.length(),i=0;for(let r=0;r=i&&t<=c){let f=l.normalize(),d=t-i;return new we(a.x+f.x*d,a.y+f.y*d)}i=c}return we.Zero()}static StartingAt(e,t){return new n(e,t)}},mh=class n{constructor(e,t=null,i,r=!1){this.path=e,this._curve=new Array,this._distances=new Array,this._tangents=new Array,this._normals=new Array,this._binormals=new Array,this._pointAtData={id:0,point:b.Zero(),previousPointArrayIndex:0,position:0,subPosition:0,interpolateReady:!1,interpolationMatrix:Z.Identity()};for(let s=0;st){let c=e;e=t,t=c}let i=this.getCurve(),r=this.getPointAt(e),s=this.getPreviousPointIndexAt(e),a=this.getPointAt(t),o=this.getPreviousPointIndexAt(t)+1,l=[];return e!==0&&(s++,l.push(r)),l.push(...i.slice(s,o)),(t!==1||e===1)&&l.push(a),new n(l,this.getNormalAt(e),this._raw,this._alignTangentsWithPath)}update(e,t=null,i=!1){for(let r=0;rt+1;)t++,i=this._curve[e].subtract(this._curve[e-t]);return i}_normalVector(e,t){let i,r=e.length();if(r===0&&(r=1),t==null){let s;Ri(Math.abs(e.y)/r,1,Ft)?Ri(Math.abs(e.x)/r,1,Ft)?Ri(Math.abs(e.z)/r,1,Ft)?s=b.Zero():s=new b(0,0,1):s=new b(1,0,0):s=new b(0,-1,0),i=b.Cross(e,s)}else i=b.Cross(e,t),b.CrossToRef(i,e,i);return i.normalize(),i}_updatePointAtData(e,t=!1){if(this._pointAtData.id===e)return this._pointAtData.interpolateReady||this._updateInterpolationMatrix(),this._pointAtData;this._pointAtData.id=e;let i=this.getPoints();if(e<=0)return this._setPointAtData(0,0,i[0],0,t);if(e>=1)return this._setPointAtData(1,1,i[i.length-1],i.length-1,t);let r=i[0],s,a=0,o=e*this.length();for(let l=1;lo){let d=(a-o)/c,h=r.subtract(s),u=s.add(h.scaleInPlace(d));return this._setPointAtData(e,1-d,u,l-1,t)}r=s}return this._pointAtData}_setPointAtData(e,t,i,r,s){return this._pointAtData.point=i,this._pointAtData.position=e,this._pointAtData.subPosition=t,this._pointAtData.previousPointArrayIndex=r,this._pointAtData.interpolateReady=s,s&&this._updateInterpolationMatrix(),this._pointAtData}_updateInterpolationMatrix(){this._pointAtData.interpolationMatrix=Z.Identity();let e=this._pointAtData.previousPointArrayIndex;if(e!==this._tangents.length-1){let t=e+1,i=this._tangents[e].clone(),r=this._normals[e].clone(),s=this._binormals[e].clone(),a=this._tangents[t].clone(),o=this._normals[t].clone(),l=this._binormals[t].clone(),c=Ke.RotationQuaternionFromAxis(r,s,i),f=Ke.RotationQuaternionFromAxis(o,l,a);Ke.Slerp(c,f,this._pointAtData.subPosition).toRotationMatrix(this._pointAtData.interpolationMatrix)}}}});var nc,dx=I(()=>{nc=class n{constructor(e,t){this.width=e,this.height=t}toString(){return`{W: ${this.width}, H: ${this.height}}`}getClassName(){return"Size"}getHashCode(){let e=this.width|0;return e=e*397^(this.height|0),e}copyFrom(e){this.width=e.width,this.height=e.height}copyFromFloats(e,t){return this.width=e,this.height=t,this}set(e,t){return this.copyFromFloats(e,t)}multiplyByFloats(e,t){return new n(this.width*e,this.height*t)}clone(){return new n(this.width,this.height)}equals(e){return e?this.width===e.width&&this.height===e.height:!1}get surface(){return this.width*this.height}static Zero(){return new n(0,0)}add(e){return new n(this.width+e.width,this.height+e.height)}subtract(e){return new n(this.width-e.width,this.height-e.height)}scale(e){return new n(this.width*e,this.height*e)}static Lerp(e,t,i){let r=e.width+(t.width-e.width)*i,s=e.height+(t.height-e.height)*i;return new n(r,s)}}});var CV=I(()=>{ke()});var xo,Nm=I(()=>{xo=class n{constructor(e,t,i,r){this.x=e,this.y=t,this.width=i,this.height=r}toGlobal(e,t){return new n(this.x*e,this.y*t,this.width*e,this.height*t)}toGlobalToRef(e,t,i){return i.x=this.x*e,i.y=this.y*t,i.width=this.width*e,i.height=this.height*t,this}clone(){return new n(this.x,this.y,this.width,this.height)}}});var PV=I(()=>{Mm();zt();Kn();fx();ph();Dm();dx();ke();CV();Nm()});var _l,Yle,sc,ac,Og,gl,Ng=I(()=>{ke();PV();_l=[Math.sqrt(1/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(3/(4*Math.PI)),-Math.sqrt(3/(4*Math.PI)),Math.sqrt(15/(4*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(5/(16*Math.PI)),-Math.sqrt(15/(4*Math.PI)),Math.sqrt(15/(16*Math.PI))],Yle=[()=>1,n=>n.y,n=>n.z,n=>n.x,n=>n.x*n.y,n=>n.y*n.z,n=>3*n.z*n.z-1,n=>n.x*n.z,n=>n.x*n.x-n.y*n.y],sc=(n,e)=>_l[n]*Yle[n](e),ac=[Math.PI,2*Math.PI/3,2*Math.PI/3,2*Math.PI/3,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4,Math.PI/4],Og=class n{constructor(){this.preScaled=!1,this.l00=b.Zero(),this.l1_1=b.Zero(),this.l10=b.Zero(),this.l11=b.Zero(),this.l2_2=b.Zero(),this.l2_1=b.Zero(),this.l20=b.Zero(),this.l21=b.Zero(),this.l22=b.Zero()}addLight(e,t,i){$.Vector3[0].set(t.r,t.g,t.b);let r=$.Vector3[0],s=$.Vector3[1];r.scaleToRef(i,s),s.scaleToRef(sc(0,e),$.Vector3[2]),this.l00.addInPlace($.Vector3[2]),s.scaleToRef(sc(1,e),$.Vector3[2]),this.l1_1.addInPlace($.Vector3[2]),s.scaleToRef(sc(2,e),$.Vector3[2]),this.l10.addInPlace($.Vector3[2]),s.scaleToRef(sc(3,e),$.Vector3[2]),this.l11.addInPlace($.Vector3[2]),s.scaleToRef(sc(4,e),$.Vector3[2]),this.l2_2.addInPlace($.Vector3[2]),s.scaleToRef(sc(5,e),$.Vector3[2]),this.l2_1.addInPlace($.Vector3[2]),s.scaleToRef(sc(6,e),$.Vector3[2]),this.l20.addInPlace($.Vector3[2]),s.scaleToRef(sc(7,e),$.Vector3[2]),this.l21.addInPlace($.Vector3[2]),s.scaleToRef(sc(8,e),$.Vector3[2]),this.l22.addInPlace($.Vector3[2])}scaleInPlace(e){this.l00.scaleInPlace(e),this.l1_1.scaleInPlace(e),this.l10.scaleInPlace(e),this.l11.scaleInPlace(e),this.l2_2.scaleInPlace(e),this.l2_1.scaleInPlace(e),this.l20.scaleInPlace(e),this.l21.scaleInPlace(e),this.l22.scaleInPlace(e)}convertIncidentRadianceToIrradiance(){this.l00.scaleInPlace(ac[0]),this.l1_1.scaleInPlace(ac[1]),this.l10.scaleInPlace(ac[2]),this.l11.scaleInPlace(ac[3]),this.l2_2.scaleInPlace(ac[4]),this.l2_1.scaleInPlace(ac[5]),this.l20.scaleInPlace(ac[6]),this.l21.scaleInPlace(ac[7]),this.l22.scaleInPlace(ac[8])}convertIrradianceToLambertianRadiance(){this.scaleInPlace(1/Math.PI)}preScaleForRendering(){this.preScaled=!0,this.l00.scaleInPlace(_l[0]),this.l1_1.scaleInPlace(_l[1]),this.l10.scaleInPlace(_l[2]),this.l11.scaleInPlace(_l[3]),this.l2_2.scaleInPlace(_l[4]),this.l2_1.scaleInPlace(_l[5]),this.l20.scaleInPlace(_l[6]),this.l21.scaleInPlace(_l[7]),this.l22.scaleInPlace(_l[8])}updateFromArray(e){return b.FromArrayToRef(e[0],0,this.l00),b.FromArrayToRef(e[1],0,this.l1_1),b.FromArrayToRef(e[2],0,this.l10),b.FromArrayToRef(e[3],0,this.l11),b.FromArrayToRef(e[4],0,this.l2_2),b.FromArrayToRef(e[5],0,this.l2_1),b.FromArrayToRef(e[6],0,this.l20),b.FromArrayToRef(e[7],0,this.l21),b.FromArrayToRef(e[8],0,this.l22),this}updateFromFloatsArray(e){return b.FromFloatsToRef(e[0],e[1],e[2],this.l00),b.FromFloatsToRef(e[3],e[4],e[5],this.l1_1),b.FromFloatsToRef(e[6],e[7],e[8],this.l10),b.FromFloatsToRef(e[9],e[10],e[11],this.l11),b.FromFloatsToRef(e[12],e[13],e[14],this.l2_2),b.FromFloatsToRef(e[15],e[16],e[17],this.l2_1),b.FromFloatsToRef(e[18],e[19],e[20],this.l20),b.FromFloatsToRef(e[21],e[22],e[23],this.l21),b.FromFloatsToRef(e[24],e[25],e[26],this.l22),this}static FromArray(e){return new n().updateFromArray(e)}static FromPolynomial(e){let t=new n;return t.l00=e.xx.scale(.376127).add(e.yy.scale(.376127)).add(e.zz.scale(.376126)),t.l1_1=e.y.scale(.977204),t.l10=e.z.scale(.977204),t.l11=e.x.scale(.977204),t.l2_2=e.xy.scale(1.16538),t.l2_1=e.yz.scale(1.16538),t.l20=e.zz.scale(1.34567).subtract(e.xx.scale(.672834)).subtract(e.yy.scale(.672834)),t.l21=e.zx.scale(1.16538),t.l22=e.xx.scale(1.16538).subtract(e.yy.scale(1.16538)),t.l1_1.scaleInPlace(-1),t.l11.scaleInPlace(-1),t.l2_1.scaleInPlace(-1),t.l21.scaleInPlace(-1),t.scaleInPlace(Math.PI),t}},gl=class n{constructor(){this.x=b.Zero(),this.y=b.Zero(),this.z=b.Zero(),this.xx=b.Zero(),this.yy=b.Zero(),this.zz=b.Zero(),this.xy=b.Zero(),this.yz=b.Zero(),this.zx=b.Zero()}get preScaledHarmonics(){return this._harmonics||(this._harmonics=Og.FromPolynomial(this)),this._harmonics.preScaled||this._harmonics.preScaleForRendering(),this._harmonics}addAmbient(e){$.Vector3[0].copyFromFloats(e.r,e.g,e.b);let t=$.Vector3[0];this.xx.addInPlace(t),this.yy.addInPlace(t),this.zz.addInPlace(t)}scaleInPlace(e){this.x.scaleInPlace(e),this.y.scaleInPlace(e),this.z.scaleInPlace(e),this.xx.scaleInPlace(e),this.yy.scaleInPlace(e),this.zz.scaleInPlace(e),this.yz.scaleInPlace(e),this.zx.scaleInPlace(e),this.xy.scaleInPlace(e)}updateFromHarmonics(e){return this._harmonics=e,this.x.copyFrom(e.l11),this.x.scaleInPlace(1.02333).scaleInPlace(-1),this.y.copyFrom(e.l1_1),this.y.scaleInPlace(1.02333).scaleInPlace(-1),this.z.copyFrom(e.l10),this.z.scaleInPlace(1.02333),this.xx.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.247708),$.Vector3[1].copyFrom(e.l22).scaleInPlace(.429043),this.xx.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).addInPlace($.Vector3[1]),this.yy.copyFrom(e.l00),this.yy.scaleInPlace(.886277).subtractInPlace($.Vector3[0]).subtractInPlace($.Vector3[1]),this.zz.copyFrom(e.l00),$.Vector3[0].copyFrom(e.l20).scaleInPlace(.495417),this.zz.scaleInPlace(.886277).addInPlace($.Vector3[0]),this.yz.copyFrom(e.l2_1),this.yz.scaleInPlace(.858086).scaleInPlace(-1),this.zx.copyFrom(e.l21),this.zx.scaleInPlace(.858086).scaleInPlace(-1),this.xy.copyFrom(e.l2_2),this.xy.scaleInPlace(.858086),this.scaleInPlace(1/Math.PI),this}static FromHarmonics(e){return new n().updateFromHarmonics(e)}static FromArray(e){let t=new n;return b.FromArrayToRef(e[0],0,t.x),b.FromArrayToRef(e[1],0,t.y),b.FromArrayToRef(e[2],0,t.z),b.FromArrayToRef(e[3],0,t.xx),b.FromArrayToRef(e[4],0,t.yy),b.FromArrayToRef(e[5],0,t.zz),b.FromArrayToRef(e[6],0,t.yz),b.FromArrayToRef(e[7],0,t.zx),b.FromArrayToRef(e[8],0,t.xy),t}}});function P(n,e,t,i){var r=arguments.length,s=r<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(n,e,t,i);else for(var o=n.length-1;o>=0;o--)(a=n[o])&&(s=(r<3?a(s):r>3?a(e,t,s):a(e,t))||s);return r>3&&s&&Object.defineProperty(e,t,s),s}var Wt=I(()=>{});function DV(n){let e=n.getClassName();return ux[e]||(ux[e]={}),ux[e]}function mx(n){let e=n.getClassName();if(hx[e])return hx[e];hx[e]={};let t=hx[e],i=n,r=e;for(;r;){let s=ux[r];for(let l in s)t[l]=s[l];let a,o=!1;do{if(a=Object.getPrototypeOf(i),!a.getClassName){o=!0;break}if(a.getClassName()!==r)break;i=a}while(a);if(o)break;r=a.getClassName(),i=a}return t}var hx,ux,QC=I(()=>{hx={},ux={}});function Na(n,e){return(t,i)=>{let r=DV(t);r[i]||(r[i]={type:n,sourceName:e})}}function Kle(n,e=null){return(t,i)=>{let r=e||"_"+i;Object.defineProperty(t,i,{get:function(){return this[r]},set:function(s){var a;typeof((a=this[r])==null?void 0:a.equals)=="function"&&this[r].equals(s)||this[r]!==s&&(this[r]=s,t[n].apply(this))},enumerable:!0,configurable:!0})}}function le(n,e=null){return Kle(n,e)}function F(n){return Na(0,n)}function Gt(n){return Na(1,n)}function Ir(n){return Na(2,n)}function wm(n){return Na(3,n)}function Fm(n){return Na(4,n)}function Qr(n){return Na(5,n)}function px(n){return Na(6,n)}function LV(n){return Na(7,n)}function Bm(n){return Na(8,n)}function OV(n){return Na(9,n)}function NV(n){return Na(10,n)}function wV(n){return Na(11,n)}function zs(n,e,t,i){let r=t.value;t.value=(...s)=>{let a=r;if(typeof _native!="undefined"&&_native[e]){let o=_native[e];i?a=(...l)=>i(...l)?o(...l):r(...l):a=o}return n[e]=a,a(...s)}}function _t(n,e=null){return(t,i)=>{let r=i;Object.defineProperty(t,e||"",{get:function(){return this[r].value},set:function(a){var o,l;typeof((l=(o=this[r])==null?void 0:o.value)==null?void 0:l.equals)=="function"&&this[r].value.equals(a)||this[r].value!==a&&(this[r].value=a,t[n].apply(this))},enumerable:!0,configurable:!0})}}var kt=I(()=>{QC();zs.filter=function(n){return(e,t,i)=>zs(e,t,i,n)}});function If(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}var wg=I(()=>{});function jle(){return typeof _native!="undefined"&&_native.XMLHttpRequest?new _native.XMLHttpRequest:new XMLHttpRequest}var wr,_h=I(()=>{wr=class n{constructor(){this._xhr=jle(),this._requestURL=""}static get IsCustomRequestAvailable(){return Object.keys(n.CustomRequestHeaders).length>0||n.CustomRequestModifiers.length>0}static _CleanUrl(e){return e=e.replace("file:http:","http:"),e=e.replace("file:https:","https:"),e}static _ShouldSkipRequestModifications(e){return n.SkipRequestModificationForBabylonCDN&&(e.includes("preview.babylonjs.com")||e.includes("cdn.babylonjs.com"))}static _CollectCustomizations(e,t={}){let i={...t};if(n._ShouldSkipRequestModifications(e))return{url:e,headers:i};for(let s in n.CustomRequestHeaders){let a=n.CustomRequestHeaders[s];a&&(i[s]=a)}let r={setRequestHeader:(s,a)=>{i[s]=a}};for(let s of n.CustomRequestModifiers){if(n._ShouldSkipRequestModifications(e))break;let a=s(r,e);typeof a=="string"&&(e=a)}return{url:e,headers:i}}static async FetchAsync(e,t={}){var r,s,a;let i=(r=t.method)!=null?r:"GET";if(typeof fetch!="undefined"){let{url:o,headers:l}=n._CollectCustomizations(n._CleanUrl(e),(s=t.headers)!=null?s:{});return await fetch(o,{method:i,headers:l,body:(a=t.body)!=null?a:void 0})}return await new Promise((o,l)=>{var f;let c=new n;c.responseType="arraybuffer",c.addEventListener("readystatechange",()=>{if(c.readyState===4)if(c.status>=200&&c.status<300){let d=typeof Headers!="undefined"?new Headers:void 0,h=c.getResponseHeader("Content-Type");h&&d&&d.set("Content-Type",h),o(typeof Response!="undefined"?new Response(c.response,{status:c.status,statusText:c.statusText,headers:d}):{ok:!0,status:c.status,statusText:c.statusText,headers:{get:u=>c.getResponseHeader(u)},arrayBuffer:async()=>await Promise.resolve(c.response)})}else l(new Error(`HTTP ${c.status} loading '${c.requestURL}': ${c.statusText}`))}),c.open(i,e,t.headers),c.send((f=t.body)!=null?f:null)})}get requestURL(){return this._requestURL}get onprogress(){return this._xhr.onprogress}set onprogress(e){this._xhr.onprogress=e}get readyState(){return this._xhr.readyState}get status(){return this._xhr.status}get statusText(){return this._xhr.statusText}get response(){return this._xhr.response}get responseURL(){return this._xhr.responseURL}get responseText(){return this._xhr.responseText}get responseType(){return this._xhr.responseType}set responseType(e){this._xhr.responseType=e}get timeout(){return this._xhr.timeout}set timeout(e){this._xhr.timeout=e}addEventListener(e,t,i){this._xhr.addEventListener(e,t,i)}removeEventListener(e,t,i){this._xhr.removeEventListener(e,t,i)}abort(){this._xhr.abort()}send(e){this._xhr.send(e)}open(e,t,i){let{url:r,headers:s}=n._CollectCustomizations(t,i);this._requestURL=n._CleanUrl(r),this._xhr.open(e,this._requestURL,!0);for(let a in s)this._xhr.setRequestHeader(a,s[a])}setRequestHeader(e,t){this._xhr.setRequestHeader(e,t)}getResponseHeader(e){return this._xhr.getResponseHeader(e)}};wr.CustomRequestHeaders={};wr.CustomRequestModifiers=new Array;wr.SkipRequestModificationForBabylonCDN=!0});var yf,FV=I(()=>{yf=class{};yf.FilesToLoad={}});var _x,BV=I(()=>{_x=class{static ExponentialBackoff(e=3,t=500){return(i,r,s)=>r.status!==0||s>=e||i.indexOf("file:")!==-1?-1:Math.pow(2,s)*t}}});var oc,wa,Xs,Fg=I(()=>{oc=class extends Error{};oc._setPrototypeOf=Object.setPrototypeOf||((n,e)=>(n.__proto__=e,n));wa={MeshInvalidPositionsError:0,UnsupportedTextureError:1e3,GLTFLoaderUnexpectedMagicError:2e3,SceneLoaderError:3e3,LoadFileError:4e3,RequestFileError:4001,ReadFileError:4002},Xs=class n extends oc{constructor(e,t,i){super(e),this.errorCode=t,this.innerError=i,this.name="RuntimeError",oc._setPrototypeOf(this,n.prototype)}}});function Zle(n){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="",i,r,s,a,o,l,c,f=0;for(;f>2,o=(i&3)<<4|r>>4,l=(r&15)<<2|s>>6,c=s&63,isNaN(r)?l=c=64:isNaN(s)&&(c=64),t+=e.charAt(a)+e.charAt(o)+e.charAt(l)+e.charAt(c);return t}function qle(n){let e=$C(n),t=e.length,i=new Uint8Array(new ArrayBuffer(t));for(let r=0;r{UV=n=>{if(typeof TextDecoder!="undefined")return new TextDecoder().decode(n);let e="";for(let t=0;t{let e=ArrayBuffer.isView(n)?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);return typeof e.toBase64=="function"?e.toBase64():Zle(e)},$C=n=>atob(n),VV=n=>typeof Uint8Array.fromBase64=="function"?Uint8Array.fromBase64(n).buffer:qle(n)});function Qle(n,e,t,i){switch(e){case 5120:{let r=n.getInt8(t);return i&&(r=Math.max(r/127,-1)),r}case 5121:{let r=n.getUint8(t);return i&&(r=r/255),r}case 5122:{let r=n.getInt16(t,!0);return i&&(r=Math.max(r/32767,-1)),r}case 5123:{let r=n.getUint16(t,!0);return i&&(r=r/65535),r}case 5124:return n.getInt32(t,!0);case 5125:return n.getUint32(t,!0);case 5126:return n.getFloat32(t,!0);default:throw new Error(`Invalid component type ${e}`)}}function $le(n,e,t,i,r){switch(e){case 5120:{i&&(r=Math.round(r*127)),n.setInt8(t,r);break}case 5121:{i&&(r=Math.round(r*255)),n.setUint8(t,r);break}case 5122:{i&&(r=Math.round(r*32767)),n.setInt16(t,r,!0);break}case 5123:{i&&(r=Math.round(r*65535)),n.setUint16(t,r,!0);break}case 5124:{n.setInt32(t,r,!0);break}case 5125:{n.setUint32(t,r,!0);break}case 5126:{n.setFloat32(t,r,!0);break}default:throw new Error(`Invalid component type ${e}`)}}function vl(n){switch(n){case 5120:case 5121:return 1;case 5122:case 5123:return 2;case 5124:case 5125:case 5126:return 4;default:throw new Error(`Invalid type '${n}'`)}}function JC(n){switch(n){case 5120:return Int8Array;case 5121:return Uint8Array;case 5122:return Int16Array;case 5123:return Uint16Array;case 5124:return Int32Array;case 5125:return Uint32Array;case 5126:return Float32Array;default:throw new Error(`Invalid component type '${n}'`)}}function gh(n,e,t,i,r,s,a,o){let l=new Array(i),c=new Array(i);if(n instanceof Array){let f=e/4,d=t/4;for(let h=0;h{for(let u=0;un.length)throw new Error("Last accessed index is out of bounds.");if(_{for(let S=0;Sf.byteLength)throw new Error("Last accessed byte is out of bounds.");let u=e*o;if(r{for(let g=0;g{for(let h=0;h{Lt()});function Pf(n){return VV(n.split(",")[1])}var HV,Gm,vx,tP,Jle,ji,Ex,WV,km,vh,El,Sx,zV,XV,Cf,YV,KV,ece,Ug,tce,lc=I(()=>{_h();Oa();mi();FV();BV();Fg();Bg();ZA();Gi();Lt();ul();bf();zr();Vm();HV=new RegExp(/^data:([^,]+\/[^,]+)?;base64,/i),Gm=class n extends Xs{constructor(e,t){super(e,wa.LoadFileError),this.name="LoadFileError",oc._setPrototypeOf(this,n.prototype),t instanceof wr?this.request=t:this.file=t}},vx=class n extends Xs{constructor(e,t){super(e,wa.RequestFileError),this.request=t,this.name="RequestFileError",oc._setPrototypeOf(this,n.prototype)}},tP=class n extends Xs{constructor(e,t){super(e,wa.ReadFileError),this.file=t,this.name="ReadFileError",oc._setPrototypeOf(this,n.prototype)}},Jle=n=>(n=n.replace(/#/gm,"%23"),n),ji={DefaultRetryStrategy:_x.ExponentialBackoff(),BaseUrl:"",CorsBehavior:"anonymous",PreprocessUrl:n=>n,ScriptBaseUrl:"",ScriptPreprocessUrl:n=>n,CleanUrl:Jle},Ex=(n,e)=>{if(!(n&&n.indexOf("data:")===0)&&ji.CorsBehavior)if(typeof ji.CorsBehavior=="string"||ji.CorsBehavior instanceof String)e.crossOrigin=ji.CorsBehavior;else{let t=ji.CorsBehavior(n);t&&(e.crossOrigin=t)}},WV={getRequiredSize:null},km=(n,e,t,i,r="",s,a=Oe.LastCreatedEngine)=>{if(typeof HTMLImageElement=="undefined"&&!(a!=null&&a._features.forceBitmapOverHTMLImageElement))return t("LoadImage is only supported in web or BabylonNative environments."),null;let o,l=!1;if(n instanceof ArrayBuffer||ArrayBuffer.isView(n))if(typeof Blob!="undefined"&&typeof URL!="undefined"){let E;n instanceof ArrayBuffer?E=n:E=gx(n),o=URL.createObjectURL(new Blob([E],{type:r})),l=!0}else o=`data:${r};base64,`+Um(n);else n instanceof Blob?(o=URL.createObjectURL(n),l=!0):(o=ji.CleanUrl(n),o=ji.PreprocessUrl(o));let c=E=>{if(t){let A=o||n.toString();t(`Error while trying to load image: ${A.indexOf("http")===0||A.length<=128?A:A.slice(0,128)+"..."}`,E)}};if(a!=null&&a._features.forceBitmapOverHTMLImageElement)return El(o,E=>{a.createImageBitmap(new Blob([E],{type:r}),{premultiplyAlpha:"none",colorSpaceConversion:"none",...s}).then(A=>{e(A),l&&URL.revokeObjectURL(o)}).catch(A=>{t&&t("Error while trying to load image: "+n,A)})},void 0,i||void 0,!0,(E,A)=>{c(A)}),null;let f=new Image;if(WV.getRequiredSize){let E=WV.getRequiredSize(n);E.width&&(f.width=E.width),E.height&&(f.height=E.height)}Ex(o,f);let d=[],h=()=>{for(let E of d)E.target.addEventListener(E.name,E.handler)},u=()=>{for(let E of d)E.target.removeEventListener(E.name,E.handler);d.length=0},m=()=>{u(),e(f),l&&f.src&&URL.revokeObjectURL(f.src)},_=E=>{u(),c(E),l&&f.src&&URL.revokeObjectURL(f.src)},p=E=>{if(E.blockedURI!==f.src||E.disposition==="report")return;u();let A=new Error(`CSP violation of policy ${E.effectiveDirective} ${E.blockedURI}. Current policy is ${E.originalPolicy}`);Oe.UseFallbackTexture=!1,c(A),l&&f.src&&URL.revokeObjectURL(f.src),f.src=""};d.push({target:f,name:"load",handler:m}),d.push({target:f,name:"error",handler:_}),d.push({target:document,name:"securitypolicyviolation",handler:p}),h();let g=o.substring(0,5)==="blob:",v=o.substring(0,5)==="data:",T=()=>{g||v||!wr.IsCustomRequestAvailable?f.src=o:El(o,(E,A,R)=>{let M=!r&&R?R:r,y=new Blob([E],{type:M}),C=URL.createObjectURL(y);l=!0,f.src=C},void 0,i||void 0,!0,(E,A)=>{c(A)})},S=()=>{i&&i.loadImage(o,f)};if(!g&&!v&&i&&i.enableTexturesOffline)i.open(S,T);else{if(o.indexOf("file:")!==-1){let E=decodeURIComponent(o.substring(5).toLowerCase());if(yf.FilesToLoad[E]&&typeof URL!="undefined"){try{let A;try{A=URL.createObjectURL(yf.FilesToLoad[E])}catch(R){A=URL.createObjectURL(yf.FilesToLoad[E])}f.src=A,l=!0}catch(A){f.src=""}return f}}T()}return f},vh=(n,e,t,i,r)=>{let s=new FileReader,a={onCompleteObservable:new te,abort:()=>s.abort()};return s.onloadend=()=>a.onCompleteObservable.notifyObservers(a),r&&(s.onerror=()=>{r(new tP(`Unable to read ${n.name}`,n))}),s.onload=o=>{e(o.target.result)},t&&(s.onprogress=t),i?s.readAsArrayBuffer(n):s.readAsText(n),a},El=(n,e,t,i,r,s,a)=>{if(n.name)return vh(n,e,t,r,s?f=>{s(void 0,f)}:void 0);let o=n;if(o.indexOf("file:")!==-1){let f=decodeURIComponent(o.substring(5).toLowerCase());f.indexOf("./")===0&&(f=f.substring(2));let d=yf.FilesToLoad[f];if(d)return vh(d,e,t,r,s?h=>s(void 0,new Gm(h.message,h.file)):void 0)}let{match:l,type:c}=YV(o);if(l){let f={onCompleteObservable:new te,abort:()=>()=>{}};try{let d=r?Pf(o):KV(o);e(d,void 0,c)}catch(d){s?s(void 0,d):ee.Error(d.message||"Failed to parse the Data URL")}return vo.SetImmediate(()=>{f.onCompleteObservable.notifyObservers(f)}),f}return Sx(o,(f,d)=>{e(f,d==null?void 0:d.responseURL,d==null?void 0:d.getResponseHeader("content-type"))},t,i,r,s?f=>{s(f.request,new Gm(f.message,f.request))}:void 0,a)},Sx=(n,e,t,i,r,s,a)=>{var d;i!==null&&(i!=null||(i=(d=Oe.LastCreatedScene)==null?void 0:d.offlineProvider)),n=ji.CleanUrl(n),n=ji.PreprocessUrl(n);let o=ji.BaseUrl+n,l=!1,c={onCompleteObservable:new te,abort:()=>l=!0},f=()=>{let h=new wr,u=null,m,_=()=>{h&&(t&&h.removeEventListener("progress",t),m&&h.removeEventListener("readystatechange",m),h.removeEventListener("loadend",p))},p=()=>{_(),c.onCompleteObservable.notifyObservers(c),c.onCompleteObservable.clear(),t=void 0,m=null,p=null,s=void 0,a=void 0,e=void 0};c.abort=()=>{l=!0,p&&p(),h&&h.readyState!==(XMLHttpRequest.DONE||4)&&h.abort(),u!==null&&(clearTimeout(u),u=null),h=null};let g=T=>{let S=T.message||"Unknown error";s&&h?s(new vx(S,h)):ee.Error(S)},v=T=>{if(h){if(h.open("GET",o),a)try{a(h)}catch(S){g(S);return}r&&(h.responseType="arraybuffer"),t&&h.addEventListener("progress",t),p&&h.addEventListener("loadend",p),m=()=>{if(!(l||!h)&&h.readyState===(XMLHttpRequest.DONE||4)){if(m&&h.removeEventListener("readystatechange",m),h.status>=200&&h.status<300||h.status===0&&(!Er()||XV())){let A=r?h.response:h.responseText;if(A!==null){try{e&&e(A,h)}catch(R){g(R)}return}}let S=ji.DefaultRetryStrategy;if(S){let A=S(o,h,T);if(A!==-1){_(),h=new wr,u=setTimeout(()=>v(T+1),A);return}}let E=new vx("Error status: "+h.status+" "+h.statusText+" - Unable to load "+o,h);s&&s(E)}},h.addEventListener("readystatechange",m),h.send()}};v(0)};if(i&&i.enableSceneOffline&&!n.startsWith("blob:")){let h=m=>{m&&m.status>400?s&&s(m):f()},u=()=>{i&&i.loadFile(ji.BaseUrl+n,m=>{!l&&e&&e(m),c.onCompleteObservable.notifyObservers(c)},t?m=>{!l&&t&&t(m)}:void 0,h,r)};i.open(u,h)}else f();return c},zV=n=>{let{match:e,type:t}=YV(n);if(e)return t||void 0;let i=n.lastIndexOf(".");switch(n.substring(i+1).toLowerCase()){case"glb":return"model/gltf-binary";case"bin":return"application/octet-stream";case"gltf":return"model/gltf+json";case"jpg":case"jpeg":return"image/jpeg";case"png":return"image/png";case"webp":return"image/webp";case"ktx":return"image/ktx";case"ktx2":return"image/ktx2";case"avif":return"image/avif";default:return}},XV=()=>typeof location!="undefined"&&location.protocol==="file:",Cf=n=>HV.test(n),YV=n=>{let e=HV.exec(n);return e===null||e.length===0?{match:!1,type:""}:{match:!0,type:e[0].replace("data:","").replace(";base64,","")}};KV=n=>$C(n.split(",")[1]),ece=()=>{Re._FileToolsLoadImage=km,Em.loadFile=El,wC.loadFile=El};ece();tce=(n,e,t,i,r,s,a,o,l,c)=>{Ug={DecodeBase64UrlToBinary:n,DecodeBase64UrlToString:e,DefaultRetryStrategy:t.DefaultRetryStrategy,BaseUrl:t.BaseUrl,CorsBehavior:t.CorsBehavior,PreprocessUrl:t.PreprocessUrl,IsBase64DataUrl:i,IsFileURL:r,LoadFile:s,LoadImage:a,ReadFile:o,RequestFile:l,SetCorsBehavior:c},Object.defineProperty(Ug,"DefaultRetryStrategy",{get:function(){return t.DefaultRetryStrategy},set:function(f){t.DefaultRetryStrategy=f}}),Object.defineProperty(Ug,"BaseUrl",{get:function(){return t.BaseUrl},set:function(f){t.BaseUrl=f}}),Object.defineProperty(Ug,"PreprocessUrl",{get:function(){return t.PreprocessUrl},set:function(f){t.PreprocessUrl=f}}),Object.defineProperty(Ug,"CorsBehavior",{get:function(){return t.CorsBehavior},set:function(f){t.CorsBehavior=f}})};tce(Pf,KV,ji,Cf,XV,El,km,vh,Sx,Ex)});var Tx,jV=I(()=>{dx();Tx=class n{get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get coordinatesMode(){return 0}get isCube(){return this._texture?this._texture.isCube:!1}set isCube(e){this._texture&&(this._texture.isCube=e)}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}getClassName(){return"ThinTexture"}static _IsRenderTargetWrapper(e){return(e==null?void 0:e.shareDepth)!==void 0}constructor(e){var t,i,r;this._wrapU=1,this._wrapV=1,this.wrapR=1,this.anisotropicFilteringLevel=4,this.delayLoadState=0,this._texture=null,this._engine=null,this._cachedSize=nc.Zero(),this._cachedBaseSize=nc.Zero(),this._initialSamplingMode=2,this._texture=n._IsRenderTargetWrapper(e)?e.texture:e,this._texture&&(this._engine=this._texture.getEngine(),this.wrapU=(t=this._texture._cachedWrapU)!=null?t:this.wrapU,this.wrapV=(i=this._texture._cachedWrapV)!=null?i:this.wrapV,this.wrapR=(r=this._texture._cachedWrapR)!=null?r:this.wrapR)}isReady(){return this.delayLoadState===4?(this.delayLoad(),!1):this._texture?this._texture.isReady:!1}delayLoad(){}getInternalTexture(){return this._texture}getSize(){if(this._texture){if(this._texture.width)return this._cachedSize.width=this._texture.width,this._cachedSize.height=this._texture.height,this._cachedSize;if(this._texture._size)return this._cachedSize.width=this._texture._size,this._cachedSize.height=this._texture._size,this._cachedSize}return this._cachedSize}getBaseSize(){return!this.isReady()||!this._texture?(this._cachedBaseSize.width=0,this._cachedBaseSize.height=0,this._cachedBaseSize):this._texture._size?(this._cachedBaseSize.width=this._texture._size,this._cachedBaseSize.height=this._texture._size,this._cachedBaseSize):(this._cachedBaseSize.width=this._texture.baseWidth,this._cachedBaseSize.height=this._texture.baseHeight,this._cachedBaseSize)}get samplingMode(){return this._texture?this._texture.samplingMode:this._initialSamplingMode}updateSamplingMode(e,t=!1){this._texture&&this._engine&&this._engine.updateTextureSamplingMode(e,this._texture,this._texture.generateMipMaps&&t)}releaseInternalTexture(){this._texture&&(this._texture.dispose(),this._texture=null)}dispose(){this._texture&&(this.releaseInternalTexture(),this._engine=null)}}});var Ax,ZV=I(()=>{Ax=class n{static Eval(e,t){return e.match(/\([^()]*\)/g)?e=e.replace(/\([^()]*\)/g,i=>(i=i.slice(1,i.length-1),n._HandleParenthesisContent(i,t))):e=n._HandleParenthesisContent(e,t),e==="true"?!0:e==="false"?!1:n.Eval(e,t)}static _HandleParenthesisContent(e,t){t=t||(s=>s==="true");let i,r=e.split("||");for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=n._SimplifyNegation(r[s].trim()),o=a.split("&&");if(o.length>1)for(let l=0;l(t=t.replace(/[\s]/g,()=>""),t.length%2?"!":"")),e=e.trim(),e==="!true"?e="false":e==="!false"&&(e="true"),e}}});var ei,Df=I(()=>{ZV();ei=class n{static EnableFor(e){e._tags=e._tags||{},e.hasTags=()=>n.HasTags(e),e.addTags=t=>n.AddTagsTo(e,t),e.removeTags=t=>n.RemoveTagsFrom(e,t),e.matchesTagsQuery=t=>n.MatchesQuery(e,t)}static DisableFor(e){delete e._tags,delete e.hasTags,delete e.addTags,delete e.removeTags,delete e.matchesTagsQuery}static HasTags(e){if(!e._tags)return!1;let t=e._tags;for(let i in t)if(Object.prototype.hasOwnProperty.call(t,i))return!0;return!1}static GetTags(e,t=!0){if(!e._tags)return null;if(t){let i=[];for(let r in e._tags)Object.prototype.hasOwnProperty.call(e._tags,r)&&e._tags[r]===!0&&i.push(r);return i.join(" ")}else return e._tags}static AddTagsTo(e,t){if(!t||typeof t!="string")return;let i=t.split(" ");for(let r of i)n._AddTagTo(e,r)}static _AddTagTo(e,t){t=t.trim(),!(t===""||t==="true"||t==="false")&&(t.match(/[\s]/)||t.match(/^([!]|([|]|[&]){2})/)||(n.EnableFor(e),e._tags[t]=!0))}static RemoveTagsFrom(e,t){if(!n.HasTags(e))return;let i=t.split(" ");for(let r in i)n._RemoveTagFrom(e,i[r])}static _RemoveTagFrom(e,t){delete e._tags[t]}static MatchesQuery(e,t){return t===void 0?!0:t===""?n.HasTags(e):Ax.Eval(t,i=>n.HasTags(e)&&e._tags[i])}}});var qV,nt,Dr=I(()=>{Sn();Df();zt();ke();QC();qV=function(n,e,t,i={}){let r=n();ei&&ei.HasTags(e)&&ei.AddTagsTo(r,ei.GetTags(e,!0));let s=mx(r),a={};for(let o in s){let l=s[o],c=e[o],f=l.type;if(c!=null&&(o!=="uniqueId"||nt.AllowLoadingUniqueId))switch(f){case 0:case 6:case 9:case 11:typeof c.slice=="function"?r[o]=c.slice():r[o]=c;break;case 1:i.cloneTexturesOnlyOnce&&a[c.uniqueId]?r[o]=a[c.uniqueId]:(r[o]=t||c.isRenderTarget?c:c.clone(),a[c.uniqueId]=r[o]);break;case 2:case 3:case 4:case 5:case 7:case 8:case 10:case 12:r[o]=t?c:c.clone();break}}return r},nt=class n{static AppendSerializedAnimations(e,t){if(e.animations){t.animations=[];for(let i=0;i{throw Qe("ImageProcessingConfiguration")};nt._FresnelParametersParser=n=>{throw Qe("FresnelParameters")};nt._ColorCurvesParser=n=>{throw Qe("ColorCurves")};nt._TextureParser=(n,e,t)=>{throw Qe("Texture")}});var vi,Vg=I(()=>{Wt();kt();mi();ke();Gi();wg();lc();jV();Dr();vi=class n extends Tx{set hasAlpha(e){this._hasAlpha!==e&&(this._hasAlpha=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get hasAlpha(){return this._hasAlpha}set getAlphaFromRGB(e){this._getAlphaFromRGB!==e&&(this._getAlphaFromRGB=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get getAlphaFromRGB(){return this._getAlphaFromRGB}set coordinatesIndex(e){this._coordinatesIndex!==e&&(this._coordinatesIndex=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesIndex(){return this._coordinatesIndex}set coordinatesMode(e){this._coordinatesMode!==e&&(this._coordinatesMode=e,this._scene&&this._scene.markAllMaterialsAsDirty(1,t=>t.hasTexture(this)))}get coordinatesMode(){return this._coordinatesMode}get wrapU(){return this._wrapU}set wrapU(e){this._wrapU=e}get wrapV(){return this._wrapV}set wrapV(e){this._wrapV=e}get isCube(){return this._texture?this._texture.isCube:this._isCube}set isCube(e){this._texture?this._texture.isCube=e:this._isCube=e}get is3D(){return this._texture?this._texture.is3D:!1}set is3D(e){this._texture&&(this._texture.is3D=e)}get is2DArray(){return this._texture?this._texture.is2DArray:!1}set is2DArray(e){this._texture&&(this._texture.is2DArray=e)}get gammaSpace(){if(this._texture)this._texture._gammaSpace===null&&(this._texture._gammaSpace=this._gammaSpace);else return this._gammaSpace;return this._texture._gammaSpace&&!this._texture._useSRGBBuffer}set gammaSpace(e){var t;if(this._texture){if(this._texture._gammaSpace===e)return;this._texture._gammaSpace=e}else{if(this._gammaSpace===e)return;this._gammaSpace=e}(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this))}get isRGBD(){return this._texture!=null&&this._texture._isRGBD}set isRGBD(e){var t;e!==this.isRGBD&&(this._texture&&(this._texture._isRGBD=e),(t=this.getScene())==null||t.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)))}get noMipmap(){return!1}get lodGenerationOffset(){return this._texture?this._texture._lodGenerationOffset:0}set lodGenerationOffset(e){this._texture&&(this._texture._lodGenerationOffset=e)}get lodGenerationScale(){return this._texture?this._texture._lodGenerationScale:0}set lodGenerationScale(e){this._texture&&(this._texture._lodGenerationScale=e)}get linearSpecularLOD(){return this._texture?this._texture._linearSpecularLOD:!1}set linearSpecularLOD(e){this._texture&&(this._texture._linearSpecularLOD=e)}get irradianceTexture(){return this._texture?this._texture._irradianceTexture:null}set irradianceTexture(e){this._texture&&(this._texture._irradianceTexture=e)}get uid(){return this._uid||(this._uid=If()),this._uid}toString(){return this.name}getClassName(){return"BaseTexture"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get isBlocking(){return!0}get loadingError(){return this._loadingError}get errorObject(){return this._errorObject}constructor(e,t=null){super(null),this.metadata=null,this.reservedDataStore=null,this._hasAlpha=!1,this._getAlphaFromRGB=!1,this.level=1,this._coordinatesIndex=0,this.optimizeUVAllocation=!0,this._coordinatesMode=0,this.wrapR=1,this.anisotropicFilteringLevel=n.DEFAULT_ANISOTROPIC_FILTERING_LEVEL,this._isCube=!1,this._gammaSpace=!0,this.invertZ=!1,this.lodLevelInAlpha=!1,this._dominantDirection=null,this.isRenderTarget=!1,this._prefiltered=!1,this._forceSerialize=!1,this.animations=[],this.onDisposeObservable=new te,this._onDisposeObserver=null,this._scene=null,this._uid=null,this._parentContainer=null,this._loadingError=!1,e?n._IsScene(e)?this._scene=e:this._engine=e:this._scene=Oe.LastCreatedScene,this._scene&&(this.uniqueId=this._scene.getUniqueId(),this._scene.addTexture(this),this._engine=this._scene.getEngine()),this._texture=t,this._uid=null}getScene(){return this._scene}_getEngine(){return this._engine}getTextureMatrix(){return Z.IdentityReadOnly}getReflectionTextureMatrix(){return Z.IdentityReadOnly}getRefractionTextureMatrix(){return this.getReflectionTextureMatrix()}isReadyOrNotBlocking(){return!this.isBlocking||this.isReady()||this.loadingError}scale(e){}get canRescale(){return!1}_getFromCache(e,t,i,r,s,a){let o=this._getEngine();if(!o)return null;let l=o._getUseSRGBBuffer(!!s,t),c=o.getLoadedTexturesCache();for(let f=0;f=0&&this._scene.textures.splice(e,1),this._scene.onTextureRemovedObservable.notifyObservers(this),this._scene=null,this._parentContainer){let t=this._parentContainer.textures.indexOf(this);t>-1&&this._parentContainer.textures.splice(t,1),this._parentContainer=null}}this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.metadata=null,super.dispose()}serialize(e=!1){if(!this.name&&!e)return null;let t=nt.Serialize(this);return nt.AppendSerializedAnimations(this,t),t}static WhenAllReady(e,t){let i=e.length;if(i===0){t();return}for(let r=0;r{--i===0&&t()}):--i===0&&t()}}}static _IsScene(e){return e.getClassName()==="Scene"}};vi.DEFAULT_ANISOTROPIC_FILTERING_LEVEL=4;P([F()],vi.prototype,"uniqueId",void 0);P([F()],vi.prototype,"name",void 0);P([F()],vi.prototype,"displayName",void 0);P([F()],vi.prototype,"metadata",void 0);P([F("hasAlpha")],vi.prototype,"_hasAlpha",void 0);P([F("getAlphaFromRGB")],vi.prototype,"_getAlphaFromRGB",void 0);P([F()],vi.prototype,"level",void 0);P([F("coordinatesIndex")],vi.prototype,"_coordinatesIndex",void 0);P([F()],vi.prototype,"optimizeUVAllocation",void 0);P([F("coordinatesMode")],vi.prototype,"_coordinatesMode",void 0);P([F()],vi.prototype,"wrapU",null);P([F()],vi.prototype,"wrapV",null);P([F()],vi.prototype,"wrapR",void 0);P([F()],vi.prototype,"anisotropicFilteringLevel",void 0);P([F()],vi.prototype,"isCube",null);P([F()],vi.prototype,"is3D",null);P([F()],vi.prototype,"is2DArray",null);P([F()],vi.prototype,"gammaSpace",null);P([F()],vi.prototype,"invertZ",void 0);P([F()],vi.prototype,"lodLevelInAlpha",void 0);P([F()],vi.prototype,"lodGenerationOffset",null);P([F()],vi.prototype,"lodGenerationScale",null);P([F()],vi.prototype,"linearSpecularLOD",null);P([Gt()],vi.prototype,"irradianceTexture",null);P([F()],vi.prototype,"isRenderTarget",void 0)});var Lf,cc,iP=I(()=>{ke();jn();Ng();Kn();zt();Lf=class{constructor(e,t,i,r){this.name=e,this.worldAxisForNormal=t,this.worldAxisForFileX=i,this.worldAxisForFileY=r}},cc=class{static _NearestPow2Floor(e){return e<=1?1:1<0?this._NearestPow2Floor(i):0,s=!e.noMipmap&&((T=e._texture)==null?void 0:T.generateMipMaps)===!0,a=r>0&&r0&&r{Promise.all([f,c,d,h,u,m]).then(([E,A,R,M,y,C])=>{let D=l;g&&(E=this._DownsampleFace(E,t,r,4),A=this._DownsampleFace(A,t,r,4),R=this._DownsampleFace(R,t,r,4),M=this._DownsampleFace(M,t,r,4),y=this._DownsampleFace(y,t,r,4),C=this._DownsampleFace(C,t,r,4),D=r);let w={size:D,right:A,left:E,up:R,down:M,front:y,back:C,format:p,type:E instanceof Float32Array?1:0,gammaSpace:_};S(this.ConvertCubeMapToSphericalPolynomial(w))})})}static _AreaElement(e,t){return Math.atan2(e*t,Math.sqrt(e*e+t*t+1))}static _DownsampleFace(e,t,i,r){let s=e instanceof Float32Array?e:Float32Array.from(e),a=i*i*r,o=new Float32Array(a),l=t/i,c=1/(l*l);for(let h=0;h0?this._NearestPow2Floor(t):0;if(i>0&&e.size>i){let m=e.format===5?4:3,_=["right","left","up","down","front","back"],p={};for(let g of _)p[g]=this._DownsampleFace(e[g],e.size,i,m);e={...e,...p,size:i}}let r=new Og,s=0,a=2/e.size,o=a,l=.5*a,c=l-1;for(let m=0;m<6;m++){let _=this._FileFaces[m],p=e[_.name],g=c,v=e.format===5?4:3;for(let T=0;TD){let O=D/G;M*=O,y*=O,C*=O}}else M=Bt(M,0,D),y=Bt(y,0,D),C=Bt(C,0,D);let w=new Ee(M,y,C);r.addLight(A,w,R),s+=R,S+=a}g+=o}}let u=4*Math.PI*6/6/s;return r.scaleInPlace(u),r.convertIncidentRadianceToIrradiance(),r.convertIrradianceToLambertianRadiance(),gl.FromHarmonics(r)}};cc._FileFaces=[new Lf("right",new b(1,0,0),new b(0,0,-1),new b(0,-1,0)),new Lf("left",new b(-1,0,0),new b(0,0,1),new b(0,-1,0)),new Lf("up",new b(0,1,0),new b(1,0,0),new b(0,0,1)),new Lf("down",new b(0,-1,0),new b(1,0,0),new b(0,0,-1)),new Lf("front",new b(0,0,1),new b(1,0,0),new b(0,-1,0)),new Lf("back",new b(0,0,-1),new b(-1,0,0),new b(0,-1,0))];cc.MAX_HDRI_VALUE=4096;cc.PRESERVE_CLAMPED_COLORS=!1});var fc,rP=I(()=>{Lt();$i();fc=class{static Instantiate(e){if(this.RegisteredExternalClasses&&this.RegisteredExternalClasses[e])return this.RegisteredExternalClasses[e];let t=Pn(e);if(t)return t;ee.Warn(e+" not found, you may have missed an import.");let i=e.split("."),r=window||this;for(let s=0,a=i.length;s=0;){let d=n[c];d<0?d=0:d>1&&(d=1),f[c]=d*255}n=f}let s=document.createElement("canvas");s.width=i,s.height=r;let a=s.getContext("2d");if(!a)return null;let o=a.createImageData(i,r);if(o.data.set(n),a.putImageData(o,0,0),t){let c=document.createElement("canvas");c.width=i,c.height=r;let f=c.getContext("2d");return f?(f.translate(0,r),f.scale(1,-1),f.drawImage(s,0,0),c.toDataURL("image/png")):null}return s.toDataURL("image/png")}function $V(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=n._readPixelsSync(e,t);return r?QV(r,n.getSize(),i.invertY):null}async function JV(n,e=0,t=0){let i=n.getInternalTexture();if(!i)return null;let r=await n.readPixels(e,t);return r?QV(r,n.getSize(),i.invertY):null}var eG=I(()=>{});var yt,fn=I(()=>{yt=!1});var _e,Xr=I(()=>{Wt();kt();mi();ke();Vg();$i();Sn();ul();rP();Dm();Bg();eG();fn();Dr();_e=class n extends vi{static _CreateVideoTexture(e,t,i,r=!1,s=!1,a=n.TRILINEAR_SAMPLINGMODE,o={},l,c=5){throw Qe("VideoTexture")}get noMipmap(){return this._noMipmap}get mimeType(){return this._mimeType}set isBlocking(e){this._isBlocking=e}get isBlocking(){return this._isBlocking}get invertY(){return this._invertY}constructor(e,t,i,r,s=n.TRILINEAR_SAMPLINGMODE,a=null,o=null,l=null,c=!1,f,d,h,u,m){var R,M,y,C,D,w,G,O,N,B,V;super(t),this.url=null,this.uOffset=0,this.vOffset=0,this.uScale=1,this.vScale=1,this.uAng=0,this.vAng=0,this.wAng=0,this.uRotationCenter=.5,this.vRotationCenter=.5,this.wRotationCenter=.5,this.homogeneousRotationInUVTransform=!1,this.inspectableCustomProperties=null,this._noMipmap=!1,this._invertY=!1,this._rowGenerationMatrix=null,this._cachedTextureMatrix=null,this._projectionModeMatrix=null,this._t0=null,this._t1=null,this._t2=null,this._cachedUOffset=-1,this._cachedVOffset=-1,this._cachedUScale=0,this._cachedVScale=0,this._cachedUAng=-1,this._cachedVAng=-1,this._cachedWAng=-1,this._cachedReflectionProjectionMatrixId=-1,this._cachedURotationCenter=-1,this._cachedVRotationCenter=-1,this._cachedWRotationCenter=-1,this._cachedHomogeneousRotationInUVTransform=!1,this._cachedIdentity3x2=!0,this._cachedReflectionTextureMatrix=null,this._cachedReflectionUOffset=-1,this._cachedReflectionVOffset=-1,this._cachedReflectionUScale=0,this._cachedReflectionVScale=0,this._cachedReflectionCoordinatesMode=-1,this._buffer=null,this._deleteBuffer=!1,this._format=null,this._delayedOnLoad=null,this._delayedOnError=null,this.onLoadObservable=new te,this._isBlocking=!0,this.name=e||"",this.url=e;let _,p=!1,g=null,v=!0;typeof i=="object"&&i!==null?(_=(R=i.noMipmap)!=null?R:!1,r=(M=i.invertY)!=null?M:!yt,s=(y=i.samplingMode)!=null?y:n.TRILINEAR_SAMPLINGMODE,a=(C=i.onLoad)!=null?C:null,o=(D=i.onError)!=null?D:null,l=(w=i.buffer)!=null?w:null,c=(G=i.deleteBuffer)!=null?G:!1,f=i.format,d=i.mimeType,h=i.loaderOptions,u=i.creationFlags,p=(O=i.useSRGBBuffer)!=null?O:!1,g=(N=i.internalTexture)!=null?N:null,v=(B=i.gammaSpace)!=null?B:v,m=(V=i.forcedExtension)!=null?V:m):_=!!i,this._gammaSpace=v,this._noMipmap=_,this._invertY=r===void 0?!yt:r,this._initialSamplingMode=s,this._buffer=l,this._deleteBuffer=c,this._mimeType=d,this._loaderOptions=h,this._creationFlags=u,this._useSRGBBuffer=p,this._forcedExtension=m,f!==void 0&&(this._format=f);let T=this.getScene(),S=this._getEngine();if(!S)return;S.onBeforeTextureInitObservable.notifyObservers(this);let E=()=>{this._texture&&(this._texture._invertVScale&&(this.vScale*=-1,this.vOffset+=1),this._texture._cachedWrapU!==null&&(this.wrapU=this._texture._cachedWrapU,this._texture._cachedWrapU=null),this._texture._cachedWrapV!==null&&(this.wrapV=this._texture._cachedWrapV,this._texture._cachedWrapV=null),this._texture._cachedWrapR!==null&&(this.wrapR=this._texture._cachedWrapR,this._texture._cachedWrapR=null)),this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),a&&a(),!this.isBlocking&&T&&T.resetCachedMaterial()},A=(Q,K)=>{this._loadingError=!0,this._errorObject={message:Q,exception:K},o&&o(Q,K),n.OnTextureLoadErrorObservable.notifyObservers(this)};if(!this.url&&!g){this._delayedOnLoad=E,this._delayedOnError=A;return}if(this._texture=g!=null?g:this._getFromCache(this.url,_,s,this._invertY,p,this.isCube),this._texture)if(this._texture.isReady)vo.SetImmediate(()=>E());else{let Q=this._texture.onLoadedObservable.add(E);this._texture.onErrorObservable.add(K=>{var J;A(K.message,K.exception),(J=this._texture)==null||J.onLoadedObservable.remove(Q)})}else if(!T||!T.useDelayedTextureLoading){try{this._texture=S.createTexture(this.url,_,this._invertY,T,s,E,A,this._buffer,void 0,this._format,this._forcedExtension,d,h,u,p)}catch(Q){throw A("error loading",Q),Q}c&&(this._buffer=null)}else this.delayLoadState=4,this._delayedOnLoad=E,this._delayedOnError=A}updateURL(e,t=null,i,r){this.url&&(this.releaseInternalTexture(),this.getScene().markAllMaterialsAsDirty(1,o=>o.hasTexture(this))),(!this.name||this.name.startsWith("data:"))&&(this.name=e),this.url=e,this._buffer=t,this._forcedExtension=r,this.delayLoadState=4;let s=this._delayedOnLoad,a=()=>{s?s():this.onLoadObservable.hasObservers()&&this.onLoadObservable.notifyObservers(this),i&&i()};this._delayedOnLoad=a,this.delayLoad()}delayLoad(){if(this.delayLoadState!==4)return;let e=this.getScene();if(!e)return;let t=this.url;!t&&(this.name.indexOf("://")>0||this.name.startsWith("data:"))&&(t=this.name),this.delayLoadState=1,this._texture=this._getFromCache(t,this._noMipmap,this.samplingMode,this._invertY,this._useSRGBBuffer,this.isCube),this._texture?this._delayedOnLoad&&(this._texture.isReady?vo.SetImmediate(this._delayedOnLoad):this._texture.onLoadedObservable.add(this._delayedOnLoad)):(this._texture=e.getEngine().createTexture(t,this._noMipmap,this._invertY,e,this.samplingMode,this._delayedOnLoad,this._delayedOnError,this._buffer,null,this._format,this._forcedExtension,this._mimeType,this._loaderOptions,this._creationFlags,this._useSRGBBuffer),this._deleteBuffer&&(this._buffer=null)),this._delayedOnLoad=null,this._delayedOnError=null}_prepareRowForTextureGeneration(e,t,i,r){e*=this._cachedUScale,t*=this._cachedVScale,e-=this.uRotationCenter*this._cachedUScale,t-=this.vRotationCenter*this._cachedVScale,i-=this.wRotationCenter,b.TransformCoordinatesFromFloatsToRef(e,t,i,this._rowGenerationMatrix,r),r.x+=this.uRotationCenter*this._cachedUScale+this._cachedUOffset,r.y+=this.vRotationCenter*this._cachedVScale+this._cachedVOffset,r.z+=this.wRotationCenter}getTextureMatrix(e=1){if(this.uOffset===this._cachedUOffset&&this.vOffset===this._cachedVOffset&&this.uScale*e===this._cachedUScale&&this.vScale===this._cachedVScale&&this.uAng===this._cachedUAng&&this.vAng===this._cachedVAng&&this.wAng===this._cachedWAng&&this.uRotationCenter===this._cachedURotationCenter&&this.vRotationCenter===this._cachedVRotationCenter&&this.wRotationCenter===this._cachedWRotationCenter&&this.homogeneousRotationInUVTransform===this._cachedHomogeneousRotationInUVTransform)return this._cachedTextureMatrix;this._cachedUOffset=this.uOffset,this._cachedVOffset=this.vOffset,this._cachedUScale=this.uScale*e,this._cachedVScale=this.vScale,this._cachedUAng=this.uAng,this._cachedVAng=this.vAng,this._cachedWAng=this.wAng,this._cachedURotationCenter=this.uRotationCenter,this._cachedVRotationCenter=this.vRotationCenter,this._cachedWRotationCenter=this.wRotationCenter,this._cachedHomogeneousRotationInUVTransform=this.homogeneousRotationInUVTransform,(!this._cachedTextureMatrix||!this._rowGenerationMatrix)&&(this._cachedTextureMatrix=Z.Zero(),this._rowGenerationMatrix=new Z,this._t0=b.Zero(),this._t1=b.Zero(),this._t2=b.Zero()),Z.RotationYawPitchRollToRef(this.vAng,this.uAng,this.wAng,this._rowGenerationMatrix),this.homogeneousRotationInUVTransform?(Z.TranslationToRef(-this._cachedURotationCenter,-this._cachedVRotationCenter,-this._cachedWRotationCenter,$.Matrix[0]),Z.TranslationToRef(this._cachedURotationCenter,this._cachedVRotationCenter,this._cachedWRotationCenter,$.Matrix[1]),Z.ScalingToRef(this._cachedUScale,this._cachedVScale,0,$.Matrix[2]),Z.TranslationToRef(this._cachedUOffset,this._cachedVOffset,0,$.Matrix[3]),$.Matrix[0].multiplyToRef(this._rowGenerationMatrix,this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[1],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[2],this._cachedTextureMatrix),this._cachedTextureMatrix.multiplyToRef($.Matrix[3],this._cachedTextureMatrix),this._cachedTextureMatrix.setRowFromFloats(2,this._cachedTextureMatrix.m[12],this._cachedTextureMatrix.m[13],this._cachedTextureMatrix.m[14],1)):(this._prepareRowForTextureGeneration(0,0,0,this._t0),this._prepareRowForTextureGeneration(1,0,0,this._t1),this._prepareRowForTextureGeneration(0,1,0,this._t2),this._t1.subtractInPlace(this._t0),this._t2.subtractInPlace(this._t0),Z.FromValuesToRef(this._t1.x,this._t1.y,this._t1.z,0,this._t2.x,this._t2.y,this._t2.z,0,this._t0.x,this._t0.y,this._t0.z,0,0,0,0,1,this._cachedTextureMatrix));let t=this.getScene();if(!t)return this._cachedTextureMatrix;let i=this._cachedIdentity3x2;return this._cachedIdentity3x2=this._cachedTextureMatrix.isIdentityAs3x2(),this.optimizeUVAllocation&&i!==this._cachedIdentity3x2&&t.markAllMaterialsAsDirty(1,r=>r.hasTexture(this)),this._cachedTextureMatrix}getReflectionTextureMatrix(){let e=this.getScene();if(!e)return this._cachedReflectionTextureMatrix;if(this.uOffset===this._cachedReflectionUOffset&&this.vOffset===this._cachedReflectionVOffset&&this.uScale===this._cachedReflectionUScale&&this.vScale===this._cachedReflectionVScale&&this.coordinatesMode===this._cachedReflectionCoordinatesMode)if(this.coordinatesMode===n.PROJECTION_MODE){if(this._cachedReflectionProjectionMatrixId===e.getProjectionMatrix().updateFlag)return this._cachedReflectionTextureMatrix}else return this._cachedReflectionTextureMatrix;this._cachedReflectionTextureMatrix||(this._cachedReflectionTextureMatrix=Z.Zero()),this._projectionModeMatrix||(this._projectionModeMatrix=Z.Zero());let t=this._cachedReflectionCoordinatesMode!==this.coordinatesMode;switch(this._cachedReflectionUOffset=this.uOffset,this._cachedReflectionVOffset=this.vOffset,this._cachedReflectionUScale=this.uScale,this._cachedReflectionVScale=this.vScale,this._cachedReflectionCoordinatesMode=this.coordinatesMode,this.coordinatesMode){case n.PLANAR_MODE:{Z.IdentityToRef(this._cachedReflectionTextureMatrix),this._cachedReflectionTextureMatrix[0]=this.uScale,this._cachedReflectionTextureMatrix[5]=this.vScale,this._cachedReflectionTextureMatrix[12]=this.uOffset,this._cachedReflectionTextureMatrix[13]=this.vOffset;break}case n.PROJECTION_MODE:{Z.FromValuesToRef(.5,0,0,0,0,-.5,0,0,0,0,0,0,.5,.5,1,1,this._projectionModeMatrix);let i=e.getProjectionMatrix();this._cachedReflectionProjectionMatrixId=i.updateFlag,i.multiplyToRef(this._projectionModeMatrix,this._cachedReflectionTextureMatrix);break}default:Z.IdentityToRef(this._cachedReflectionTextureMatrix);break}return t&&e.markAllMaterialsAsDirty(1,i=>i.hasTexture(this)),this._cachedReflectionTextureMatrix}clone(){let e={noMipmap:this._noMipmap,invertY:this._invertY,samplingMode:this.samplingMode,onLoad:void 0,onError:void 0,buffer:this._texture?this._texture._buffer:void 0,deleteBuffer:this._deleteBuffer,format:this.textureFormat,mimeType:this.mimeType,loaderOptions:this._loaderOptions,creationFlags:this._creationFlags,useSRGBBuffer:this._useSRGBBuffer};return nt.Clone(()=>new n(this._texture?this._texture.url:null,this.getScene(),e),this)}serialize(){var i,r;let e=this.name;n.SerializeBuffers||this.name.startsWith("data:")&&(this.name=""),this.name.startsWith("data:")&&this.url===this.name&&(this.url="");let t=super.serialize(n._SerializeInternalTextureUniqueId);if(!t)return null;if(n.SerializeBuffers||n.ForceSerializeBuffers)if(typeof this._buffer=="string"&&this._buffer.startsWith("data:"))t.base64String=this._buffer,t.name=t.name.replace("data:","");else if(this.url&&this.url.startsWith("data:")&&this._buffer instanceof Uint8Array){let s=this.mimeType||"image/png";t.base64String=`data:${s};base64,${Um(this._buffer)}`}else(n.ForceSerializeBuffers||this.url&&this.url.startsWith("blob:")||this._forceSerialize)&&(t.base64String=!this._engine||this._engine._features.supportSyncTextureRead?$V(this):JV(this));return t.invertY=this._invertY,t.samplingMode=this.samplingMode,t._creationFlags=this._creationFlags,t._useSRGBBuffer=this._useSRGBBuffer,n._SerializeInternalTextureUniqueId&&(t.internalTextureUniqueId=(i=this._texture)==null?void 0:i.uniqueId),t.internalTextureLabel=(r=this._texture)==null?void 0:r.label,t.noMipmap=this._noMipmap,this.name=e,t}getClassName(){return"Texture"}dispose(){super.dispose(),this.onLoadObservable.clear(),this._delayedOnLoad=null,this._delayedOnError=null,this._buffer=null}static Parse(e,t,i){if(e.customType){let c=fc.Instantiate(e.customType).Parse(e,t,i);return e.samplingMode&&c.updateSamplingMode&&c._samplingMode&&c._samplingMode!==e.samplingMode&&c.updateSamplingMode(e.samplingMode),c}if(e.isCube&&!e.isRenderTarget)return n._CubeTextureParser(e,t,i);let r=e.internalTextureUniqueId!==void 0;if(!e.name&&!e.isRenderTarget&&!r)return null;let s;if(r){let l=t.getEngine().getLoadedTexturesCache();for(let c of l)if(c.uniqueId===e.internalTextureUniqueId){s=c;break}}let a=l=>{if(l&&l._texture&&(l._texture._cachedWrapU=null,l._texture._cachedWrapV=null,l._texture._cachedWrapR=null),e.samplingMode){let c=e.samplingMode;l&&l.samplingMode!==c&&l.updateSamplingMode(c)}if(l&&e.animations)for(let c=0;c{var c,f,d,h,u;let l=!0;if(e.noMipmap&&(l=!1),e.mirrorPlane){let m=n._CreateMirror(e.name,e.renderTargetSize,t,l);return m._waitingRenderList=e.renderList,m.mirrorPlane=Ao.FromArray(e.mirrorPlane),a(m),m}else if(e.isRenderTarget&&!e.base64String){let m=null;if(e.isCube){if(t.reflectionProbes)for(let _=0;_{a(m)}},p=e.base64String,g=p.startsWith("data:")?p.substring(5):p;m=n.CreateFromBase64String("",g,t,_),m.name=e.name}else{let _;e.name&&(e.name.indexOf("://")>0||e.name.startsWith("data:"))?_=e.name:_=i+e.name,e.url&&(e.url.startsWith("data:")||n.UseSerializedUrlIfAny)&&(_=e.url);let p={noMipmap:!l,invertY:e.invertY,samplingMode:e.samplingMode,useSRGBBuffer:(h=e._useSRGBBuffer)!=null?h:!1,creationFlags:(u=e._creationFlags)!=null?u:0,onLoad:()=>{a(m)},internalTexture:s};m=new n(_,t,p)}return m}},e,t)}static CreateFromBase64String(e,t,i,r,s,a=n.TRILINEAR_SAMPLINGMODE,o=null,l=null,c=5,f,d){return new n("data:"+t,i,r,s,a,o,l,e,!1,c,void 0,void 0,f,d)}static LoadFromDataString(e,t,i,r=!1,s,a=!0,o=n.TRILINEAR_SAMPLINGMODE,l=null,c=null,f=5,d,h){return e.substring(0,5)!=="data:"&&(e="data:"+e),new n(e,i,s,a,o,l,c,t,r,f,void 0,void 0,d,h)}};_e.SerializeBuffers=!0;_e.ForceSerializeBuffers=!1;_e.OnTextureLoadErrorObservable=new te;_e._SerializeInternalTextureUniqueId=!1;_e._CubeTextureParser=(n,e,t)=>{throw Qe("CubeTexture")};_e._CreateMirror=(n,e,t,i)=>{throw Qe("MirrorTexture")};_e._CreateRenderTargetTexture=(n,e,t,i,r)=>{throw Qe("RenderTargetTexture")};_e.NEAREST_SAMPLINGMODE=1;_e.NEAREST_NEAREST_MIPLINEAR=8;_e.BILINEAR_SAMPLINGMODE=2;_e.LINEAR_LINEAR_MIPNEAREST=11;_e.TRILINEAR_SAMPLINGMODE=3;_e.LINEAR_LINEAR_MIPLINEAR=3;_e.NEAREST_NEAREST_MIPNEAREST=4;_e.NEAREST_LINEAR_MIPNEAREST=5;_e.NEAREST_LINEAR_MIPLINEAR=6;_e.NEAREST_LINEAR=7;_e.NEAREST_NEAREST=1;_e.LINEAR_NEAREST_MIPNEAREST=9;_e.LINEAR_NEAREST_MIPLINEAR=10;_e.LINEAR_LINEAR=2;_e.LINEAR_NEAREST=12;_e.EXPLICIT_MODE=0;_e.SPHERICAL_MODE=1;_e.PLANAR_MODE=2;_e.CUBIC_MODE=3;_e.PROJECTION_MODE=4;_e.SKYBOX_MODE=5;_e.INVCUBIC_MODE=6;_e.EQUIRECTANGULAR_MODE=7;_e.FIXED_EQUIRECTANGULAR_MODE=8;_e.FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;_e.CLAMP_ADDRESSMODE=0;_e.WRAP_ADDRESSMODE=1;_e.MIRROR_ADDRESSMODE=2;_e.UseSerializedUrlIfAny=!1;P([F()],_e.prototype,"url",void 0);P([F()],_e.prototype,"uOffset",void 0);P([F()],_e.prototype,"vOffset",void 0);P([F()],_e.prototype,"uScale",void 0);P([F()],_e.prototype,"vScale",void 0);P([F()],_e.prototype,"uAng",void 0);P([F()],_e.prototype,"vAng",void 0);P([F()],_e.prototype,"wAng",void 0);P([F()],_e.prototype,"uRotationCenter",void 0);P([F()],_e.prototype,"vRotationCenter",void 0);P([F()],_e.prototype,"wRotationCenter",void 0);P([F()],_e.prototype,"homogeneousRotationInUVTransform",void 0);P([F()],_e.prototype,"isBlocking",null);Ut("BABYLON.Texture",_e);nt._TextureParser=_e.Parse});var Ro,L,Zi=I(()=>{GC();Lt();Vm();Ro=class{get isDisposed(){return this._isDisposed}constructor(e,t,i,r=0,s=!1,a=!1,o=!1,l,c){this._isAlreadyOwned=!1,this._isDisposed=!1,e&&e.getScene?this._engine=e.getScene().getEngine():this._engine=e,this._updatable=i,this._instanced=a,this._divisor=l||1,this._label=c,t instanceof fh?(this._data=null,this._buffer=t):(this._data=t,this._buffer=null),this.byteStride=o?r:r*Float32Array.BYTES_PER_ELEMENT,s||this.create()}createVertexBuffer(e,t,i,r,s,a=!1,o){let l=a?t:t*Float32Array.BYTES_PER_ELEMENT,c=r?a?r:r*Float32Array.BYTES_PER_ELEMENT:this.byteStride;return new L(this._engine,this,e,this._updatable,!0,c,s===void 0?this._instanced:s,l,i,void 0,void 0,!0,this._divisor||o)}isUpdatable(){return this._updatable}getData(){return this._data}getBuffer(){return this._buffer}getStrideSize(){return this.byteStride/Float32Array.BYTES_PER_ELEMENT}create(e=null){!e&&this._buffer||(e=e||this._data,e&&(this._buffer?this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e),this._data=e):this._updatable?(this._buffer=this._engine.createDynamicVertexBuffer(e,this._label),this._data=e):this._buffer=this._engine.createVertexBuffer(e,void 0,this._label)))}_rebuild(){if(this._data)this._buffer=null,this.create(this._data);else{if(!this._buffer)return;if(this._buffer.capacity>0){this._updatable?this._buffer=this._engine.createDynamicVertexBuffer(this._buffer.capacity,this._label):this._buffer=this._engine.createVertexBuffer(this._buffer.capacity,void 0,this._label);return}ee.Warn(`Missing data for buffer "${this._label}" ${this._buffer?"(uniqueId: "+this._buffer.uniqueId+")":""}. Buffer reconstruction failed.`),this._buffer=null}}update(e){this.create(e)}updateDirectly(e,t,i,r=!1){this._buffer&&this._updatable&&(this._engine.updateDynamicVertexBuffer(this._buffer,e,r?t:t*Float32Array.BYTES_PER_ELEMENT,i?i*this.byteStride:void 0),t===0&&i===void 0?this._data=e:this._data=null)}_increaseReferences(){if(this._buffer){if(!this._isAlreadyOwned){this._isAlreadyOwned=!0;return}this._buffer.references++}}dispose(){this._buffer&&this._engine._releaseBuffer(this._buffer)&&(this._isDisposed=!0,this._data=null,this._buffer=null)}},L=class n{get isDisposed(){return this._isDisposed}get instanceDivisor(){return this._instanceDivisor}set instanceDivisor(e){let t=e!=0;this._instanceDivisor=e,t!==this._instanced&&(this._instanced=t,this._computeHashCode())}get _maxVerticesCount(){let e=this.getData();return e?Array.isArray(e)?e.length/(this.byteStride/4)-this.byteOffset/4:(e.byteLength-this.byteOffset)/this.byteStride:0}constructor(e,t,i,r,s,a,o,l,c,f,d=!1,h=!1,u=1,m=!1){var g,v,T,S,E;this._isDisposed=!1;let _;if(this.engine=e,typeof r=="object"&&r!==null?(_=(g=r.updatable)!=null?g:!1,s=r.postponeInternalCreation,a=r.stride,o=r.instanced,l=r.offset,c=r.size,f=r.type,d=(v=r.normalized)!=null?v:!1,h=(T=r.useBytes)!=null?T:!1,u=(S=r.divisor)!=null?S:1,m=(E=r.takeBufferOwnership)!=null?E:!1,this._label=r.label):_=!!r,t instanceof Ro?(this._buffer=t,this._ownsBuffer=m):(this._buffer=new Ro(e,t,_,a,s,o,h,u,this._label),this._ownsBuffer=!0),this.uniqueId=n._Counter++,this._kind=i,f===void 0){let A=this.getData();this.type=A?n.GetDataType(A):n.FLOAT}else this.type=f;let p=vl(this.type);h?(this._size=c||(a?a/p:n.DeduceStride(i)),this.byteStride=a||this._buffer.byteStride||this._size*p,this.byteOffset=l||0):(this._size=c||a||n.DeduceStride(i),this.byteStride=a?a*p:this._buffer.byteStride||this._size*p,this.byteOffset=(l||0)*p),this.normalized=d,this._instanced=o!==void 0?o:!1,this._instanceDivisor=o?u:0,this._alignBuffer(),this._computeHashCode()}_computeHashCode(){this.hashCode=(this.type-5120<<0)+((this.normalized?1:0)<<3)+(this._size<<4)+((this._instanced?1:0)<<6)+(this.byteStride<<12)}_rebuild(){var e;(e=this._buffer)==null||e._rebuild()}getKind(){return this._kind}isUpdatable(){return this._buffer.isUpdatable()}getData(){return this._buffer.getData()}getFloatData(e,t){let i=this.getData();return i?eP(i,this._size,this.type,this.byteOffset,this.byteStride,this.normalized,e,t):null}getBuffer(){return this._buffer.getBuffer()}getWrapperBuffer(){return this._buffer}getStrideSize(){return this.byteStride/vl(this.type)}getOffset(){return this.byteOffset/vl(this.type)}getSize(e=!1){return e?this._size*vl(this.type):this._size}getIsInstanced(){return this._instanced}getInstanceDivisor(){return this._instanceDivisor}create(e){this._buffer.create(e),this._alignBuffer()}update(e){this._buffer.update(e),this._alignBuffer()}updateDirectly(e,t,i=!1){this._buffer.updateDirectly(e,t,void 0,i),this._alignBuffer()}dispose(){this._ownsBuffer&&this._buffer.dispose(),this._isDisposed=!0}forEach(e,t){gh(this._buffer.getData(),this.byteOffset,this.byteStride,this._size,this.type,e,this.normalized,(i,r)=>{for(let s=0;s{for(let d=0;d{Zi();mi();dc=class{constructor(e){this._vertexBuffers={},this._activePostProcesses=[],this.onBeforeRenderObservable=new te,this._scene=e}_prepareBuffers(){if(this._vertexBuffers[L.PositionKind])return;let e=[];e.push(1,1),e.push(-1,1),e.push(-1,-1),e.push(1,-1),this._vertexBuffers[L.PositionKind]=new L(this._scene.getEngine(),e,L.PositionKind,!1,!1,2),this._buildIndexBuffer()}_buildIndexBuffer(){let e=[];e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),this._indexBuffer=this._scene.getEngine().createIndexBuffer(e)}_getActivePostProcesses(e){let t=this._activePostProcesses;t.length=0;for(let i=0;i{Lt();tG=(n,e,t)=>!n||n.getClassName&&n.getClassName()==="Mesh"?null:n.getClassName&&(n.getClassName()==="SubMesh"||n.getClassName()==="PhysicsBody")?n.clone(e):n.clone?n.clone():Array.isArray(n)?n.slice():t&&typeof n=="object"?{...n}:null;Sl=class{static DeepCopy(e,t,i,r,s=!1){let a=ice(e);for(let o of a){if(o[0]==="_"&&(!r||r.indexOf(o)===-1)||o.endsWith("Observable")||i&&i.indexOf(o)!==-1)continue;let l=e[o],c=typeof l;if(c!=="function")try{if(c==="object")if(l instanceof Uint8Array)t[o]=Uint8Array.from(l);else if(l instanceof Array){if(t[o]=[],l.length>0)if(typeof l[0]=="object")for(let f=0;f{mi();Oa();Lt();Gg();tc();Sn();_h();Gi();lc();ul();rP();wg();Eo();pe=class{static get BaseUrl(){return ji.BaseUrl}static set BaseUrl(e){ji.BaseUrl=e}static get CleanUrl(){return ji.CleanUrl}static set CleanUrl(e){ji.CleanUrl=e}static IsAbsoluteUrl(e){return e.indexOf("//")===0?!0:e.indexOf("://")===-1||e.indexOf(".")===-1||e.indexOf("/")===-1||e.indexOf(":")>e.indexOf("/")?!1:e.indexOf("://"){El(e,s=>{i(s)},void 0,void 0,t,(s,a)=>{r(a)})})}static GetAssetUrl(e){if(!e)return"";if(St.AssetBaseUrl&&e.startsWith(St._DefaultAssetsUrl)){let t=St.AssetBaseUrl.endsWith("/")?St.AssetBaseUrl.slice(0,-1):St.AssetBaseUrl;return e.replace(St._DefaultAssetsUrl,t)}return e}static GetBabylonScriptURL(e,t){if(!e)return"";if(e.startsWith(St._DefaultCdnUrl)){if(St.ScriptBaseUrl){let i=St.ScriptBaseUrl.endsWith("/")?St.ScriptBaseUrl.slice(0,-1):St.ScriptBaseUrl;e=e.replace(St._DefaultCdnUrl,i)}else if(St._CdnVersion){let i=`${St._DefaultCdnUrl}/v${St._CdnVersion}`;e.startsWith(i)||(e=e.replace(St._DefaultCdnUrl,i))}}return e=St.ScriptPreprocessUrl(e),t&&!St.IsAbsoluteUrl(e)&&(e=St.GetAbsoluteUrl(e)),e}static LoadBabylonScript(e,t,i,r){e=St.GetBabylonScriptURL(e),St.LoadScript(e,t,i)}static async LoadBabylonScriptAsync(e){return e=St.GetBabylonScriptURL(e),await St.LoadScriptAsync(e)}static _LoadScriptNative(e,t,i){let r=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(r.message,r)}static _LoadScriptWeb(e,t,i,r,s=!1){let a=new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${e}`);i==null||i(a.message,a)}static async LoadScriptAsync(e,t){return await new Promise((i,r)=>{this.LoadScript(e,()=>{i()},(s,a)=>{r(a||new Error(s))},t)})}static ReadFileAsDataURL(e,t,i){let r=new FileReader,s={onCompleteObservable:new te,abort:()=>r.abort()};return r.onloadend=()=>{s.onCompleteObservable.notifyObservers(s)},r.onload=a=>{t(a.target.result)},r.onprogress=i,r.readAsDataURL(e),s}static ReadFile(e,t,i,r,s){return vh(e,t,i,r,s)}static FileAsURL(e){let t=new Blob([e]);return window.URL.createObjectURL(t)}static Format(e,t=2){return e.toFixed(t)}static DeepCopy(e,t,i,r){Sl.DeepCopy(e,t,i,r)}static IsEmpty(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}static RegisterTopRootEvents(e,t){for(let i=0;i{let l=atob(this.toDataURL(a,o).split(",")[1]),c=l.length,f=new Uint8Array(c);for(let d=0;dt(s)):e.toBlob(function(s){t(s)},i,r)}static DownloadBlob(e,t){if("download"in document.createElement("a")){if(!t){let i=new Date;t="screenshot_"+((i.getFullYear()+"-"+(i.getMonth()+1)).slice(2)+"-"+i.getDate()+"_"+i.getHours()+"-"+("0"+i.getMinutes()).slice(-2))+".png"}St.Download(e,t)}else if(e&&typeof URL!="undefined"){let i=URL.createObjectURL(e),r=window.open("");if(!r)return;let s=r.document.createElement("img");s.onload=function(){URL.revokeObjectURL(i)},s.src=i,r.document.body.appendChild(s)}}static EncodeScreenshotCanvasData(e,t,i="image/png",r,s){if(typeof r=="string"||!t)this.ToBlob(e,function(a){a&&St.DownloadBlob(a,r),t&&t("")},i,s);else if(t){if(St._IsOffScreenCanvas(e)){e.convertToBlob({type:i,quality:s}).then(o=>{let l=new FileReader;l.readAsDataURL(o),l.onloadend=()=>{let c=l.result;t(c)}});return}let a=e.toDataURL(i,s);t(a)}}static Download(e,t){if(typeof URL=="undefined")return;let i=window.URL.createObjectURL(e),r=document.createElement("a");document.body.appendChild(r),r.style.display="none",r.href=i,r.download=t,r.addEventListener("click",()=>{r.parentElement&&r.parentElement.removeChild(r)}),r.click(),window.URL.revokeObjectURL(i)}static BackCompatCameraNoPreventDefault(e){return typeof e[0]=="boolean"?e[0]:typeof e[1]=="boolean"?e[1]:!1}static CreateScreenshot(e,t,i,r,s="image/png",a=!1,o){throw Qe("ScreenshotTools")}static async CreateScreenshotAsync(e,t,i,r="image/png",s){throw Qe("ScreenshotTools")}static CreateScreenshotUsingRenderTarget(e,t,i,r,s="image/png",a=1,o=!1,l,c=!1,f=!1,d=!0,h,u){throw Qe("ScreenshotTools")}static async CreateScreenshotUsingRenderTargetAsync(e,t,i,r="image/png",s=1,a=!1,o,l=!1,c=!1,f=!0,d,h){throw Qe("ScreenshotTools")}static RandomId(){return If()}static IsBase64(e){return Cf(e)}static DecodeBase64(e){return Pf(e)}static get errorsCount(){return ee.errorsCount}static Log(e){ee.Log(e)}static Warn(e){ee.Warn(e)}static Error(e){ee.Error(e)}static get LogCache(){return ee.LogCache}static ClearLogCache(){ee.ClearLogCache()}static set LogLevels(e){ee.LogLevels=e}static set PerformanceLogLevel(e){var t;if((e&St.PerformanceUserMarkLogLevel)===St.PerformanceUserMarkLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(1),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartUserMark,St.EndPerformanceCounter=St._EndUserMark);return}if((e&St.PerformanceConsoleLogLevel)===St.PerformanceConsoleLogLevel){_native!=null&&_native.enablePerformanceLogging?(_native.enablePerformanceLogging(2),St.StartPerformanceCounter=St._StartMarkNative,St.EndPerformanceCounter=St._EndMarkNative):(St.StartPerformanceCounter=St._StartPerformanceConsole,St.EndPerformanceCounter=St._EndPerformanceConsole);return}St.StartPerformanceCounter=St._StartPerformanceCounterDisabled,St.EndPerformanceCounter=St._EndPerformanceCounterDisabled,(t=_native==null?void 0:_native.disablePerformanceLogging)==null||t.call(_native)}static _StartPerformanceCounterDisabled(e,t){}static _EndPerformanceCounterDisabled(e,t){}static _StartUserMark(e,t=!0){if(!St._Performance){if(!Er())return;St._Performance=window.performance}!t||!St._Performance.mark||St._Performance.mark(e+"-Begin")}static _EndUserMark(e,t=!0){!t||!St._Performance.mark||(St._Performance.mark(e+"-End"),St._Performance.measure(e,e+"-Begin",e+"-End"))}static _StartPerformanceConsole(e,t=!0){t&&(St._StartUserMark(e,t),console.time&&console.time(e))}static _EndPerformanceConsole(e,t=!0){t&&(St._EndUserMark(e,t),console.timeEnd(e))}static _StartMarkNative(e,t=!0){if(t&&(_native!=null&&_native.startPerformanceCounter))if(St._NativePerformanceCounterHandles.has(e))St.Warn(`Performance counter with name ${e} is already started.`);else{let i=_native.startPerformanceCounter(e);St._NativePerformanceCounterHandles.set(e,i)}}static _EndMarkNative(e,t=!0){if(t&&(_native!=null&&_native.endPerformanceCounter)){let i=St._NativePerformanceCounterHandles.get(e);i?(_native.endPerformanceCounter(i),St._NativePerformanceCounterHandles.delete(e)):St.Warn(`Performance counter with name ${e} was not started.`)}}static get Now(){return br.Now}static GetClassName(e,t=!1){let i=null;return!t&&e.getClassName?i=e.getClassName():(e instanceof Object&&(i=(t?e:Object.getPrototypeOf(e)).constructor.__bjsclassName__),i||(i=typeof e)),i}static First(e,t){for(let i of e)if(t(i))return i;return null}static getFullClassName(e,t=!1){let i=null,r=null;if(!t&&e.getClassName)i=e.getClassName();else{if(e instanceof Object){let s=t?e:Object.getPrototypeOf(e);i=s.constructor.__bjsclassName__,r=s.constructor.__bjsmoduleName__}i||(i=typeof e)}return i?(r!=null?r+".":"")+i:null}static async DelayAsync(e){await new Promise(t=>{setTimeout(()=>{t()},e)})}static IsSafari(){return ec()?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}};St=pe;pe.AssetBaseUrl="";pe.UseCustomRequestHeaders=!1;pe.CustomRequestHeaders=wr.CustomRequestHeaders;pe.GetDOMTextContent=OA;pe._DefaultCdnUrl="https://cdn.babylonjs.com";pe._CdnVersion="9.6.0";pe._DefaultAssetsUrl="https://assets.babylonjs.com/core";pe.LoadScript=typeof _native=="undefined"?St._LoadScriptWeb:St._LoadScriptNative;pe.GetAbsoluteUrl=typeof document=="object"?n=>{let e=document.createElement("a");return e.href=n,e.href}:typeof URL=="function"&&typeof location=="object"?n=>new URL(n,location.origin).href:()=>{throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.")};pe.NoneLogLevel=ee.NoneLogLevel;pe.MessageLogLevel=ee.MessageLogLevel;pe.WarningLogLevel=ee.WarningLogLevel;pe.ErrorLogLevel=ee.ErrorLogLevel;pe.AllLogLevel=ee.AllLogLevel;pe.IsWindowObjectExist=Er;pe.PerformanceNoneLogLevel=0;pe.PerformanceUserMarkLogLevel=1;pe.PerformanceConsoleLogLevel=2;pe._NativePerformanceCounterHandles=new Map;pe.StartPerformanceCounter=St._StartPerformanceCounterDisabled;pe.EndPerformanceCounter=St._EndPerformanceCounterDisabled;Rx=class n{constructor(e,t,i,r=0){this.iterations=e,this.index=r-1,this._done=!1,this._fn=t,this._successCallback=i}executeNext(){this._done||(this.index+1{s&&s()?o.breakLoop():setTimeout(()=>{for(let l=0;l=e)break;if(i(c),s&&s()){o.breakLoop();break}}o.executeNext()},a)},r)}};pe.Mix=Pg;pe.IsExponentOfTwo=dh;Oe.FallbackTexture="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z"});var Sr,Of=I(()=>{Lt();wi();Sr=class n{constructor(e,t,i=!1,r,s=!1,a){this._uniformNames=[],this._valueCache={},this._engine=e,this._noUBO=!e.supportsUniformBuffers||s,this._dynamic=i,this._name=r!=null?r:"no-name",this._data=t||[],this._uniformLocations={},this._uniformSizes={},this._uniformArraySizes={},this._uniformLocationPointer=0,this._needSync=!1,this._trackUBOsInFrame=!1,(a===void 0&&this._engine._features.trackUbosInFrame||a===!0)&&(this._buffers=[],this._bufferIndex=-1,this._bufferUpdatedLastFrame=!1,this._createBufferOnWrite=!1,this._currentFrameId=0,this._trackUBOsInFrame=!0),this._noUBO?(this.updateMatrix3x3=this._updateMatrix3x3ForEffect,this.updateMatrix2x2=this._updateMatrix2x2ForEffect,this.updateFloat=this._updateFloatForEffect,this.updateFloat2=this._updateFloat2ForEffect,this.updateFloat3=this._updateFloat3ForEffect,this.updateFloat4=this._updateFloat4ForEffect,this.updateFloatArray=this._updateFloatArrayForEffect,this.updateArray=this._updateArrayForEffect,this.updateIntArray=this._updateIntArrayForEffect,this.updateUIntArray=this._updateUIntArrayForEffect,this.updateMatrix=this._updateMatrixForEffect,this.updateMatrices=this._updateMatricesForEffect,this.updateVector3=this._updateVector3ForEffect,this.updateVector4=this._updateVector4ForEffect,this.updateColor3=this._updateColor3ForEffect,this.updateColor4=this._updateColor4ForEffect,this.updateDirectColor4=this._updateDirectColor4ForEffect,this.updateInt=this._updateIntForEffect,this.updateInt2=this._updateInt2ForEffect,this.updateInt3=this._updateInt3ForEffect,this.updateInt4=this._updateInt4ForEffect,this.updateUInt=this._updateUIntForEffect,this.updateUInt2=this._updateUInt2ForEffect,this.updateUInt3=this._updateUInt3ForEffect,this.updateUInt4=this._updateUInt4ForEffect):(this._engine._uniformBuffers.push(this),this.updateMatrix3x3=this._updateMatrix3x3ForUniform,this.updateMatrix2x2=this._updateMatrix2x2ForUniform,this.updateFloat=this._updateFloatForUniform,this.updateFloat2=this._updateFloat2ForUniform,this.updateFloat3=this._updateFloat3ForUniform,this.updateFloat4=this._updateFloat4ForUniform,this.updateFloatArray=this._updateFloatArrayForUniform,this.updateArray=this._updateArrayForUniform,this.updateIntArray=this._updateIntArrayForUniform,this.updateUIntArray=this._updateUIntArrayForUniform,this.updateMatrix=this._updateMatrixForUniform,this.updateMatrices=this._updateMatricesForUniform,this.updateVector3=this._updateVector3ForUniform,this.updateVector4=this._updateVector4ForUniform,this.updateColor3=this._updateColor3ForUniform,this.updateColor4=this._updateColor4ForUniform,this.updateDirectColor4=this._updateDirectColor4ForUniform,this.updateInt=this._updateIntForUniform,this.updateInt2=this._updateInt2ForUniform,this.updateInt3=this._updateInt3ForUniform,this.updateInt4=this._updateInt4ForUniform,this.updateUInt=this._updateUIntForUniform,this.updateUInt2=this._updateUInt2ForUniform,this.updateUInt3=this._updateUInt3ForUniform,this.updateUInt4=this._updateUInt4ForUniform)}get useUbo(){return!this._noUBO}get isSync(){return!this._needSync}isDynamic(){return this._dynamic}getData(){return this._bufferData}getBuffer(){return this._buffer}getUniformNames(){return this._uniformNames}_fillAlignment(e){let t;if(e<=2?t=e:t=4,this._uniformLocationPointer%t!==0){let i=this._uniformLocationPointer;this._uniformLocationPointer+=t-this._uniformLocationPointer%t;let r=this._uniformLocationPointer-i;for(let s=0;s0&&typeof t=="number"&&(this._uniformArraySizes[e]={strideSize:t,arraySize:i}),this._uniformLocations[e]!==void 0||(this._uniformNames.push(e),this._noUBO))return;let r;if(i>0){if(t instanceof Array)throw"addUniform should not be use with Array in UBO: "+e;if(this._fillAlignment(4),t==16)t=t*i;else{let a=(4-t)*i;t=t*i+a}r=[];for(let s=0;s1&&this._buffers[this._bufferIndex][1])if(this._buffersEqual(this._bufferData,this._buffers[this._bufferIndex][1])){this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame;return}else this._copyBuffer(this._bufferData,this._buffers[this._bufferIndex][1]);this._bufferUpdatedLastFrame=!0,this._engine.updateUniformBuffer(this._buffer,this._bufferData),this._needSync=!1,this._createBufferOnWrite=this._trackUBOsInFrame}}_createNewBuffer(){this._bufferIndex+10?(this._buffers.length===1?this._needSync=!this._bufferUpdatedLastFrame:this._needSync=this._bufferIndex!==0,this._bufferIndex=0,this._buffer=this._buffers[this._bufferIndex][0]):this._bufferIndex=-1)}updateUniform(e,t,i){this._checkNewFrame();let r=this._uniformLocations[e];if(r===void 0){if(this._buffer){ee.Error("Cannot add an uniform after UBO has been created. uniformName="+e);return}this.addUniform(e,i),r=this._uniformLocations[e]}if(this._buffer||this.create(),this._dynamic)for(let s=0;s1&&this._buffers[t][1]&&this._bufferData.set(this._buffers[t][1]),this._valueCache={},this._currentFrameId=this._engine.frameId,!0;return!1}has(e){return this._uniformLocations[e]!==void 0}dispose(){if(this._noUBO)return;let e=this._engine._uniformBuffers,t=e.indexOf(this);if(t!==-1&&(e[t]=e[e.length-1],e.pop()),this._trackUBOsInFrame&&this._buffers)for(let i=0;i{Xi=class n{constructor(e){this.length=0,this.data=new Array(e),this._id=n._GlobalId++}push(e){this.data[this.length++]=e,this.length>this.data.length&&(this.data.length*=2)}forEach(e){for(let t=0;tthis.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t=this.length?-1:t}contains(e){return this.indexOf(e)!==-1}};Xi._GlobalId=0;bo=class extends Xi{constructor(){super(...arguments),this._duplicateId=0}push(e){super.push(e),e.__smartArrayFlags||(e.__smartArrayFlags={}),e.__smartArrayFlags[this._id]=this._duplicateId}pushNoDuplicate(e){return e.__smartArrayFlags&&e.__smartArrayFlags[this._id]===this._duplicateId?!1:(this.push(e),!0)}reset(){super.reset(),this._duplicateId++}concatWithNoDuplicate(e){if(e.length!==0){this.length+e.length>this.data.length&&(this.data.length=(this.length+e.length)*2);for(let t=0;t{Mo();ke();kg=class n{set opaqueSortCompareFn(e){e?this._opaqueSortCompareFn=e:this._opaqueSortCompareFn=n.PainterSortCompare,this._renderOpaque=this._renderOpaqueSorted}set alphaTestSortCompareFn(e){e?this._alphaTestSortCompareFn=e:this._alphaTestSortCompareFn=n.PainterSortCompare,this._renderAlphaTest=this._renderAlphaTestSorted}set transparentSortCompareFn(e){e?this._transparentSortCompareFn=e:this._transparentSortCompareFn=n.defaultTransparentSortCompare,this._renderTransparent=this._renderTransparentSorted}constructor(e,t,i=null,r=null,s=null){this.index=e,this._opaqueSubMeshes=new Xi(256),this._transparentSubMeshes=new Xi(256),this._alphaTestSubMeshes=new Xi(256),this._depthOnlySubMeshes=new Xi(256),this._particleSystems=new Xi(256),this._spriteManagers=new Xi(256),this._empty=!0,this._edgesRenderers=new bo(16),this.disableDepthPrePass=!1,this._scene=t,this.opaqueSortCompareFn=i,this.alphaTestSortCompareFn=r,this.transparentSortCompareFn=s}render(e,t,i,r,s=!0,a=!0,o=!0,l=!0,c){if(e){e(this._opaqueSubMeshes,this._alphaTestSubMeshes,this._transparentSubMeshes,this._depthOnlySubMeshes);return}let f=this._scene.getEngine();s&&this._depthOnlySubMeshes.length!==0&&(f.setColorWrite(!1),this._renderAlphaTest(this._depthOnlySubMeshes),f.setColorWrite(!0)),a&&this._opaqueSubMeshes.length!==0&&this._renderOpaque(this._opaqueSubMeshes),o&&this._alphaTestSubMeshes.length!==0&&this._renderAlphaTest(this._alphaTestSubMeshes);let d=f.getStencilBuffer();if(f.setStencilBuffer(!1),t&&this._renderSprites(),i&&this._renderParticles(r),this.onBeforeTransparentRendering&&this.onBeforeTransparentRendering(),l&&(c||this._transparentSubMeshes.length!==0||this._scene.useOrderIndependentTransparency)){if(f.setStencilBuffer(d),c)c(this._transparentSubMeshes,this);else if(this._scene.useOrderIndependentTransparency){let h=this._scene.depthPeelingRenderer.render(this._transparentSubMeshes);h.length&&this._renderTransparent(h)}else this._renderTransparent(this._transparentSubMeshes);f.setAlphaMode(0)}if(f.setStencilBuffer(!1),a&&this._edgesRenderers.length){for(let h=0;ht._alphaIndex?1:e._alphaIndext._distanceToCamera?-1:0}static frontToBackSortCompare(e,t){return e._distanceToCamerat._distanceToCamera?1:0}static PainterSortCompare(e,t){let i=e.getMesh(),r=t.getMesh();return i.material&&r.material?i.material.uniqueId-r.material.uniqueId:i.uniqueId-r.uniqueId}prepare(){this._opaqueSubMeshes.reset(),this._transparentSubMeshes.reset(),this._alphaTestSubMeshes.reset(),this._depthOnlySubMeshes.reset(),this._particleSystems.reset(),this.prepareSprites(),this._edgesRenderers.reset(),this._empty=!0}prepareSprites(){this._spriteManagers.reset()}dispose(){this._opaqueSubMeshes.dispose(),this._transparentSubMeshes.dispose(),this._alphaTestSubMeshes.dispose(),this._depthOnlySubMeshes.dispose(),this._particleSystems.dispose(),this._spriteManagers.dispose(),this._edgesRenderers.dispose()}dispatch(e,t,i){t===void 0&&(t=e.getMesh()),i===void 0&&(i=e.getMaterial()),i!=null&&(i.needAlphaBlendingForMesh(t)?this._transparentSubMeshes.push(e):i.needAlphaTestingForMesh(t)?(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._alphaTestSubMeshes.push(e)):(i.needDepthPrePass&&!this.disableDepthPrePass&&this._depthOnlySubMeshes.push(e),this._opaqueSubMeshes.push(e)),t._renderingGroup=this,t._edgesRenderer&&t.isEnabled()&&t.isVisible&&t._edgesRenderer.isEnabled&&this._edgesRenderers.pushNoDuplicate(t._edgesRenderer),this._empty=!1)}dispatchSprites(e){this._spriteManagers.push(e),this._empty=!1}dispatchParticles(e){this._particleSystems.push(e),this._empty=!1}_renderParticles(e){if(this._particleSystems.length===0)return;let t=this._scene.activeCamera;this._scene.onBeforeParticlesRenderingObservable.notifyObservers(this._scene);for(let i=0;i{iG();nP=class{},Fa=class n{get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e;for(let t of this._renderingGroups)t.disableDepthPrePass=e}get maintainStateBetweenFrames(){return this._maintainStateBetweenFrames}set maintainStateBetweenFrames(e){e!==this._maintainStateBetweenFrames&&(this._maintainStateBetweenFrames=e,this._maintainStateBetweenFrames||this.restoreDispachedFlags())}restoreDispachedFlags(){for(let e of this._scene.meshes)if(e.subMeshes)for(let t of e.subMeshes)t._wasDispatched=!1;if(this._scene.spriteManagers)for(let e of this._scene.spriteManagers)e._wasDispatched=!1;for(let e of this._scene.particleSystems)e._wasDispatched=!1}constructor(e){this._useSceneAutoClearSetup=!1,this._disableDepthPrePass=!1,this._renderingGroups=new Array,this._autoClearDepthStencil={},this._customOpaqueSortCompareFn={},this._customAlphaTestSortCompareFn={},this._customTransparentSortCompareFn={},this._renderingGroupInfo=new nP,this._maintainStateBetweenFrames=!1,this._scene=e;for(let t=n.MIN_RENDERINGGROUPS;t{jt=class{static CompareLightsPriority(e,t){return e.shadowEnabled!==t.shadowEnabled?(t.shadowEnabled?1:0)-(e.shadowEnabled?1:0):t.renderPriority-e.renderPriority}};jt.FALLOFF_DEFAULT=0;jt.FALLOFF_PHYSICAL=1;jt.FALLOFF_GLTF=2;jt.FALLOFF_STANDARD=3;jt.LIGHTMAP_DEFAULT=0;jt.LIGHTMAP_SPECULAR=1;jt.LIGHTMAP_SHADOWSONLY=2;jt.INTENSITYMODE_AUTOMATIC=0;jt.INTENSITYMODE_LUMINOUSPOWER=1;jt.INTENSITYMODE_LUMINOUSINTENSITY=2;jt.INTENSITYMODE_ILLUMINANCE=3;jt.INTENSITYMODE_LUMINANCE=4;jt.LIGHTTYPEID_POINTLIGHT=0;jt.LIGHTTYPEID_DIRECTIONALLIGHT=1;jt.LIGHTTYPEID_SPOTLIGHT=2;jt.LIGHTTYPEID_HEMISPHERICLIGHT=3;jt.LIGHTTYPEID_RECT_AREALIGHT=4;jt.LIGHTTYPEID_CLUSTERED_CONTAINER=5});var Ba,sP=I(()=>{Of();mi();bx();pl();ul();Lt();Mo();Wg();Ba=class n{get renderList(){return this._renderList}set renderList(e){this._renderList!==e&&(this._unObserveRenderList&&(this._unObserveRenderList(),this._unObserveRenderList=null),e&&(this._unObserveRenderList=lx(e,this._renderListHasChanged)),this._renderList=e)}get disableImageProcessing(){return this._disableImageProcessing}set disableImageProcessing(e){e!==this._disableImageProcessing&&(this._disableImageProcessing=e,this._scene.markAllMaterialsAsDirty(64))}get disableDepthPrePass(){return this._disableDepthPrePass}set disableDepthPrePass(e){this._disableDepthPrePass=e,this._renderingManager.disableDepthPrePass=e}get name(){return this._name}set name(e){if(this._name!==e){if(this._name=e,this._sceneUBOs)for(let t=0;tthis._checkReadiness(),()=>{if(this._freezeActiveMeshesCancel=null,e)for(let t=0;t{this._freezeActiveMeshesCancel=null,i?(ee.Error("ObjectRenderer: Timeout while waiting for the renderer to be ready."),t&&ee.Error(t)):(ee.Error("ObjectRenderer: An unexpected error occurred while waiting for the renderer to be ready."),t&&(ee.Error(t),t.stack&&ee.Error(t.stack)))})}_unfreezeActiveMeshes(){var e;(e=this._freezeActiveMeshesCancel)==null||e.call(this),this._freezeActiveMeshesCancel=null;for(let t=0;t{let a=this._renderList?this._renderList.length:0;if(s===0&&a>0||a===0)for(let o of this._scene.meshes)o._markSubMeshesAsLightDirty()},this.particleSystemList=null,this.getCustomRenderList=null,this.renderMeshes=!0,this.renderDepthOnlyMeshes=!0,this.renderOpaqueMeshes=!0,this.renderAlphaTestMeshes=!0,this.renderTransparentMeshes=!0,this.renderParticles=!0,this.renderSprites=!1,this.forceLayerMaskCheck=!1,this.enableBoundingBoxRendering=!1,this.enableOutlineRendering=!0,this._disableImageProcessing=!1,this.dontSetTransformationMatrix=!1,this._disableDepthPrePass=!1,this.onBeforeRenderObservable=new te,this.onAfterRenderObservable=new te,this.onBeforeRenderingManagerRenderObservable=new te,this.onAfterRenderingManagerRenderObservable=new te,this.onInitRenderingObservable=new te,this.onFinishRenderingObservable=new te,this.onFastPathRenderObservable=new te,this._currentRefreshId=-1,this._refreshRate=1,this._currentApplyByPostProcessSetting=!1,this._activeMeshes=new Xi(256),this._activeBoundingBoxes=new Xi(32),this._currentFrameId=-1,this._currentSceneUBOIndex=0,this._isFrozen=!1,this._freezeActiveMeshesCancel=null,this._currentSceneCamera=null,this.name=e,this._scene=t,this._engine=this._scene.getEngine(),this._useUBO=this._engine.supportsUniformBuffers,this.renderList=[],this._renderPassIds=[],this.options={numPasses:1,doNotChangeAspectRatio:!0,enableClusteredLights:!1,...i},this._createRenderPassId(),this.renderPassId=this._renderPassIds[0],this._renderingManager=new Fa(t),this._renderingManager._useSceneAutoClearSetup=!0,this.options.enableClusteredLights&&this.onInitRenderingObservable.add(()=>{for(let r of this._scene.lights)r.getTypeID()===jt.LIGHTTYPEID_CLUSTERED_CONTAINER&&r.isSupported&&r._updateBatches(this.activeCamera).render()}),this._scene.addObjectRenderer(this)}_releaseRenderPassId(){for(let e=0;e=this._sceneUBOs.length){let s=this._sceneUBOs.length;this._sceneUBOs.push(this._createSceneUBO(`Scene ubo #${s} for ${this.name}`,t)),this._sceneUBOIsMultiview.push(t)}else this._sceneUBOIsMultiview[this._currentSceneUBOIndex]!==t&&(this._sceneUBOs[this._currentSceneUBOIndex].dispose(),this._sceneUBOs[this._currentSceneUBOIndex]=this._createSceneUBO(`Scene ubo #${this._currentSceneUBOIndex} for ${this.name}`,t),this._sceneUBOIsMultiview[this._currentSceneUBOIndex]=t);let i=this._sceneUBOs[this._currentSceneUBOIndex++];return i.unbindEffect(),i}resetRefreshCounter(){this._currentRefreshId=-1}get refreshRate(){return this._refreshRate}set refreshRate(e){this._refreshRate=e,this.resetRefreshCounter()}shouldRender(){return this._engine.snapshotRendering?!0:this._currentRefreshId===-1?(this._currentRefreshId=1,!0):this.refreshRate===this._currentRefreshId?(this._currentRefreshId=1,!0):(this._currentRefreshId++,!1)}isReadyForRendering(e,t){this.prepareRenderList(),this.initRender(e,t);let i=this._checkReadiness();return this.finishRender(),i}prepareRenderList(){let e=this._scene;if(this._waitingRenderList){if(!this.renderListPredicate){this.renderList=[];for(let t=0;t1&&(e.incrementRenderId(),e.resetCachedMaterial())}let s=this.particleSystemList||e.particleSystems;for(let a of s)a.isReady()||(i=!1);return this._engine.currentRenderPassId=t,i}_prepareRenderingManager(e=0,t=!1){var h,u;let i=this._scene,r=null,s,a,o=this.renderList?this.renderList:i.frameGraph?i.meshes:i.getActiveMeshes().data,l=this.renderList||i.frameGraph?o.length:i.getActiveMeshes().length;if(this.getCustomRenderList&&(r=this.getCustomRenderList(e,o,l)),r)s=r.length,a=this.forceLayerMaskCheck;else{if(this._defaultRenderListPrepared&&!t&&!this._engine.isWebGPU)return o;this._defaultRenderListPrepared=!0,r=o,s=l,a=!this.renderList||this.forceLayerMaskCheck}let c=i.activeCamera,f=(h=this.cameraForLOD)!=null?h:c,d=(u=i.getBoundingBoxRenderer)==null?void 0:u.call(i);if(i._activeMeshesFrozen&&this._isFrozen){if(this._renderingManager.resetSprites(),this.enableBoundingBoxRendering&&d){d.reset();for(let m=0;m{ul();Ss=class{static GetEffect(e){return e.getPipelineContext===void 0?e.effect:e}constructor(e,t=!0){this._wasPreviouslyReady=!1,this._forceRebindOnNextCall=!0,this._wasPreviouslyUsingInstances=null,this.effect=null,this.defines=null,this.drawContext=e.createDrawContext(),t&&(this.materialContext=e.createMaterialContext())}setEffect(e,t,i=!0){var r;this.effect=e,t!==void 0&&(this.defines=t),i&&((r=this.drawContext)==null||r.reset())}dispose(e=!1){var t;if(this.effect){let i=this.effect;e?i.dispose():vo.SetImmediate(()=>{i.getEngine().onEndFrameObservable.addOnce(()=>{i.dispose()})}),this.effect=null}(t=this.drawContext)==null||t.dispose()}}});var nG={};Fe(nG,{postprocessVertexShader:()=>rce});var aP,rG,rce,oP=I(()=>{k();aP="postprocessVertexShader",rG=`attribute vec2 position;uniform vec2 scale;varying vec2 vUV;const vec2 madd=vec2(0.5,0.5); #define CUSTOM_VERTEX_DEFINITIONS void main(void) { #define CUSTOM_VERTEX_MAIN_BEGIN @@ -4156,11 +4156,11 @@ fn main(input : VertexInputs)->FragmentInputs { vertexOutputs.vUV=(vertexInputs.position*madd+madd)*uniforms.scale;vertexOutputs.position=vec4(vertexInputs.position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END } -`;x.ShadersStoreWGSL[lP]||(x.ShadersStoreWGSL[lP]=sG);nce={name:lP,shader:sG}});var fP,bx,$r,Sh=I(()=>{Zi();Nm();mi();lh();Eh();oP();cP();fP={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},bx=class{constructor(e,t=fP){var s,a;this._fullscreenViewport=new xo(0,0,1,1);let i=(s=t.positions)!=null?s:fP.positions,r=(a=t.indices)!=null?a:fP.indices;this.engine=e,this._vertexBuffers={[L.PositionKind]:new L(e,i,L.PositionKind,!1,!1,2)},this._indexBuffer=e.createIndexBuffer(r),this._indexBufferLength=r.length,this._onContextRestoredObserver=e.onContextRestoredObservable.add(()=>{this._indexBuffer=e.createIndexBuffer(r);for(let o in this._vertexBuffers)this._vertexBuffers[o]._rebuild()})}setViewport(e=this._fullscreenViewport){this.engine.setViewport(e)}bindBuffers(e){this.engine.bindBuffers(this._vertexBuffers,this._indexBuffer,e)}applyEffectWrapper(e,t=!1,i=!1){this.engine.setState(!0),this.engine.depthCullingState.depthTest=t,this.engine.stencilState.stencilTest=i,this.engine.enableEffect(e.drawWrapper),this.bindBuffers(e.effect),e.onApplyObservable.notifyObservers({})}saveStates(){this._savedStateDepthTest=this.engine.depthCullingState.depthTest,this._savedStateStencilTest=this.engine.stencilState.stencilTest}restoreStates(){this.engine.depthCullingState.depthTest=this._savedStateDepthTest,this.engine.stencilState.stencilTest=this._savedStateStencilTest}draw(){this.engine.drawElementsType(0,0,this._indexBufferLength)}_isRenderTargetTexture(e){return e.renderTarget!==void 0}render(e,t=null){if(!e.effect.isReady())return;this.saveStates(),this.setViewport();let i=t===null?null:this._isRenderTargetTexture(t)?t.renderTarget:t;i&&this.engine.bindFramebuffer(i),this.applyEffectWrapper(e),this.draw(),i&&this.engine.unBindFramebuffer(i),this.restoreStates()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[L.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},$r=class n{static RegisterShaderCodeProcessing(e,t){if(!t){delete n._CustomShaderCodeProcessing[e!=null?e:""];return}n._CustomShaderCodeProcessing[e!=null?e:""]=t}static _GetShaderCodeProcessing(e){var t;return(t=n._CustomShaderCodeProcessing[e])!=null?t:n._CustomShaderCodeProcessing[""]}get name(){return this.options.name}set name(e){this.options.name=e}isReady(){var e,t;return(t=(e=this._drawWrapper.effect)==null?void 0:e.isReady())!=null?t:!1}get drawWrapper(){return this._drawWrapper}get effect(){return this._drawWrapper.effect}set effect(e){this._drawWrapper.effect=e}constructor(e){var i,r;this.alphaMode=0,this.onEffectCreatedObservable=new te(void 0,!0),this.onApplyObservable=new te,this._shadersLoaded=!1,this._webGPUReady=!1,this._importPromises=[],this.options={...e,name:e.name||"effectWrapper",engine:e.engine,uniforms:e.uniforms||e.uniformNames||[],uniformNames:void 0,samplers:e.samplers||e.samplerNames||[],samplerNames:void 0,attributeNames:e.attributeNames||["position"],uniformBuffers:e.uniformBuffers||[],defines:e.defines||"",useShaderStore:e.useShaderStore||!1,vertexUrl:e.vertexUrl||e.vertexShader||"postprocess",vertexShader:void 0,fragmentShader:e.fragmentShader||"pass",indexParameters:e.indexParameters,blockCompilation:e.blockCompilation||!1,shaderLanguage:e.shaderLanguage||0,onCompiled:e.onCompiled||void 0,extraInitializations:e.extraInitializations||void 0,extraInitializationsAsync:e.extraInitializationsAsync||void 0,useAsPostProcess:(i=e.useAsPostProcess)!=null?i:!1,allowEmptySourceTexture:(r=e.allowEmptySourceTexture)!=null?r:!1},this.options.uniformNames=this.options.uniforms,this.options.samplerNames=this.options.samplers,this.options.vertexShader=this.options.vertexUrl,this.options.useAsPostProcess&&(!this.options.allowEmptySourceTexture&&this.options.samplers.indexOf("textureSampler")===-1&&this.options.samplers.push("textureSampler"),this.options.uniforms.indexOf("scale")===-1&&this.options.uniforms.push("scale")),e.vertexUrl||e.vertexShader?this._shaderPath={vertexSource:this.options.vertexShader}:(this.options.useAsPostProcess||(this.options.uniforms.push("scale"),this.onApplyObservable.add(()=>{this.effect.setFloat2("scale",1,1)})),this._shaderPath={vertex:this.options.vertexShader}),this._shaderPath.fragmentSource=this.options.fragmentShader,this._shaderPath.spectorName=this.options.name,this.options.useShaderStore&&(this._shaderPath.fragment=this._shaderPath.fragmentSource,this._shaderPath.vertex||(this._shaderPath.vertex=this._shaderPath.vertexSource),delete this._shaderPath.fragmentSource,delete this._shaderPath.vertexSource),this.onApplyObservable.add(()=>{this.bind()}),this.options.useShaderStore||(this._onContextRestoredObserver=this.options.engine.onContextRestoredObservable.add(()=>{this.effect._pipelineContext=null,this.effect._prepareEffect()})),this._drawWrapper=new Ss(this.options.engine),this._webGPUReady=this.options.shaderLanguage===1;let t=Array.isArray(this.options.defines)?this.options.defines.join(` +`;x.ShadersStoreWGSL[lP]||(x.ShadersStoreWGSL[lP]=sG);nce={name:lP,shader:sG}});var fP,Mx,$r,Sh=I(()=>{Zi();Nm();mi();lh();Eh();oP();cP();fP={positions:[1,1,-1,1,-1,-1,1,-1],indices:[0,1,2,0,2,3]},Mx=class{constructor(e,t=fP){var s,a;this._fullscreenViewport=new xo(0,0,1,1);let i=(s=t.positions)!=null?s:fP.positions,r=(a=t.indices)!=null?a:fP.indices;this.engine=e,this._vertexBuffers={[L.PositionKind]:new L(e,i,L.PositionKind,!1,!1,2)},this._indexBuffer=e.createIndexBuffer(r),this._indexBufferLength=r.length,this._onContextRestoredObserver=e.onContextRestoredObservable.add(()=>{this._indexBuffer=e.createIndexBuffer(r);for(let o in this._vertexBuffers)this._vertexBuffers[o]._rebuild()})}setViewport(e=this._fullscreenViewport){this.engine.setViewport(e)}bindBuffers(e){this.engine.bindBuffers(this._vertexBuffers,this._indexBuffer,e)}applyEffectWrapper(e,t=!1,i=!1){this.engine.setState(!0),this.engine.depthCullingState.depthTest=t,this.engine.stencilState.stencilTest=i,this.engine.enableEffect(e.drawWrapper),this.bindBuffers(e.effect),e.onApplyObservable.notifyObservers({})}saveStates(){this._savedStateDepthTest=this.engine.depthCullingState.depthTest,this._savedStateStencilTest=this.engine.stencilState.stencilTest}restoreStates(){this.engine.depthCullingState.depthTest=this._savedStateDepthTest,this.engine.stencilState.stencilTest=this._savedStateStencilTest}draw(){this.engine.drawElementsType(0,0,this._indexBufferLength)}_isRenderTargetTexture(e){return e.renderTarget!==void 0}render(e,t=null){if(!e.effect.isReady())return;this.saveStates(),this.setViewport();let i=t===null?null:this._isRenderTargetTexture(t)?t.renderTarget:t;i&&this.engine.bindFramebuffer(i),this.applyEffectWrapper(e),this.draw(),i&&this.engine.unBindFramebuffer(i),this.restoreStates()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),delete this._vertexBuffers[L.PositionKind]),this._indexBuffer&&this.engine._releaseBuffer(this._indexBuffer),this._onContextRestoredObserver&&(this.engine.onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}},$r=class n{static RegisterShaderCodeProcessing(e,t){if(!t){delete n._CustomShaderCodeProcessing[e!=null?e:""];return}n._CustomShaderCodeProcessing[e!=null?e:""]=t}static _GetShaderCodeProcessing(e){var t;return(t=n._CustomShaderCodeProcessing[e])!=null?t:n._CustomShaderCodeProcessing[""]}get name(){return this.options.name}set name(e){this.options.name=e}isReady(){var e,t;return(t=(e=this._drawWrapper.effect)==null?void 0:e.isReady())!=null?t:!1}get drawWrapper(){return this._drawWrapper}get effect(){return this._drawWrapper.effect}set effect(e){this._drawWrapper.effect=e}constructor(e){var i,r;this.alphaMode=0,this.onEffectCreatedObservable=new te(void 0,!0),this.onApplyObservable=new te,this._shadersLoaded=!1,this._webGPUReady=!1,this._importPromises=[],this.options={...e,name:e.name||"effectWrapper",engine:e.engine,uniforms:e.uniforms||e.uniformNames||[],uniformNames:void 0,samplers:e.samplers||e.samplerNames||[],samplerNames:void 0,attributeNames:e.attributeNames||["position"],uniformBuffers:e.uniformBuffers||[],defines:e.defines||"",useShaderStore:e.useShaderStore||!1,vertexUrl:e.vertexUrl||e.vertexShader||"postprocess",vertexShader:void 0,fragmentShader:e.fragmentShader||"pass",indexParameters:e.indexParameters,blockCompilation:e.blockCompilation||!1,shaderLanguage:e.shaderLanguage||0,onCompiled:e.onCompiled||void 0,extraInitializations:e.extraInitializations||void 0,extraInitializationsAsync:e.extraInitializationsAsync||void 0,useAsPostProcess:(i=e.useAsPostProcess)!=null?i:!1,allowEmptySourceTexture:(r=e.allowEmptySourceTexture)!=null?r:!1},this.options.uniformNames=this.options.uniforms,this.options.samplerNames=this.options.samplers,this.options.vertexShader=this.options.vertexUrl,this.options.useAsPostProcess&&(!this.options.allowEmptySourceTexture&&this.options.samplers.indexOf("textureSampler")===-1&&this.options.samplers.push("textureSampler"),this.options.uniforms.indexOf("scale")===-1&&this.options.uniforms.push("scale")),e.vertexUrl||e.vertexShader?this._shaderPath={vertexSource:this.options.vertexShader}:(this.options.useAsPostProcess||(this.options.uniforms.push("scale"),this.onApplyObservable.add(()=>{this.effect.setFloat2("scale",1,1)})),this._shaderPath={vertex:this.options.vertexShader}),this._shaderPath.fragmentSource=this.options.fragmentShader,this._shaderPath.spectorName=this.options.name,this.options.useShaderStore&&(this._shaderPath.fragment=this._shaderPath.fragmentSource,this._shaderPath.vertex||(this._shaderPath.vertex=this._shaderPath.vertexSource),delete this._shaderPath.fragmentSource,delete this._shaderPath.vertexSource),this.onApplyObservable.add(()=>{this.bind()}),this.options.useShaderStore||(this._onContextRestoredObserver=this.options.engine.onContextRestoredObservable.add(()=>{this.effect._pipelineContext=null,this.effect._prepareEffect()})),this._drawWrapper=new Ss(this.options.engine),this._webGPUReady=this.options.shaderLanguage===1;let t=Array.isArray(this.options.defines)?this.options.defines.join(` `):this.options.defines;this._postConstructor(this.options.blockCompilation,t,this.options.extraInitializations)}_gatherImports(e=!1,t){}_postConstructor(e,t=null,i,r){this._importPromises.length=0,r&&this._importPromises.push(...r);let s=this.options.engine.isWebGPU&&!n.ForceGLSL;this._gatherImports(s,this._importPromises),i!==void 0&&i(s,this._importPromises),s&&this._webGPUReady&&(this.options.shaderLanguage=1),e||this.updateEffect(t)}updateEffect(e=null,t=null,i=null,r,s,a,o,l){var h,u;let c=n._GetShaderCodeProcessing(this.name);if(c!=null&&c.defineCustomBindings){let m=(h=t==null?void 0:t.slice())!=null?h:[];m.push(...this.options.uniforms);let _=(u=i==null?void 0:i.slice())!=null?u:[];_.push(...this.options.samplers),e=c.defineCustomBindings(this.name,e,m,_),t=m,i=_}this.options.defines=e||"";let f=this._shadersLoaded||this._importPromises.length===0?void 0:async()=>{await Promise.all(this._importPromises),this._shadersLoaded=!0},d;this.options.extraInitializationsAsync?d=async()=>{f==null||f(),await this.options.extraInitializationsAsync()}:d=f,this.options.useShaderStore?this._drawWrapper.effect=this.options.engine.createEffect({vertex:o!=null?o:this._shaderPath.vertex,fragment:l!=null?l:this._shaderPath.fragment},{attributes:this.options.attributeNames,uniformsNames:t||this.options.uniforms,uniformBuffersNames:this.options.uniformBuffers,samplers:i||this.options.samplers,defines:e!==null?e:"",fallbacks:null,onCompiled:s!=null?s:this.options.onCompiled,onError:a!=null?a:null,indexParameters:r||this.options.indexParameters,processCodeAfterIncludes:c!=null&&c.processCodeAfterIncludes?(m,_)=>c.processCodeAfterIncludes(this.name,m,_):null,processFinalCode:c!=null&&c.processFinalCode?(m,_)=>c.processFinalCode(this.name,m,_):null,shaderLanguage:this.options.shaderLanguage,extraInitializationsAsync:d},this.options.engine):this._drawWrapper.effect=new hr(this._shaderPath,this.options.attributeNames,t||this.options.uniforms,i||this.options.samplerNames,this.options.engine,e,void 0,s||this.options.onCompiled,void 0,void 0,void 0,this.options.shaderLanguage,d),this.onEffectCreatedObservable.notifyObservers(this._drawWrapper.effect)}bind(e=!1){var t,i;this.options.useAsPostProcess&&!e&&(this.options.engine.setAlphaMode(this.alphaMode),this.drawWrapper.effect.setFloat2("scale",1,1)),(i=(t=n._GetShaderCodeProcessing(this.name))==null?void 0:t.bindCustomBindings)==null||i.call(t,this.name,this._drawWrapper.effect)}dispose(e=!1){this._onContextRestoredObserver&&(this.effect.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null),this.onEffectCreatedObservable.clear(),this._drawWrapper.dispose(!0)}};$r.ForceGLSL=!1;$r._CustomShaderCodeProcessing={}});var hP={};Fe(hP,{passPixelShader:()=>sce});var dP,oG,sce,uP=I(()=>{k();dP="passPixelShader",oG=`varying vec2 vUV;uniform sampler2D textureSampler; #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) -{gl_FragColor=texture2D(textureSampler,vUV);}`;x.ShadersStore[dP]||(x.ShadersStore[dP]=oG);sce={name:dP,shader:oG}});var lG={};Fe(lG,{Dispose:()=>pP,DumpData:()=>Mx,DumpDataAsync:()=>zg,DumpFramebuffer:()=>mP,DumpTools:()=>cce,EncodeImageAsync:()=>lce});async function ace(){var o,l;let n=(l=(o=Oe.LastCreatedEngine)==null?void 0:o.createCanvas(100,100))!=null?l:new OffscreenCanvas(100,100);n instanceof OffscreenCanvas&&ee.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");let{ThinEngine:e}=await Promise.resolve().then(()=>(vs(),nV));if(!e.IsSupported)throw new Error("DumpData: No WebGL context available. Cannot dump data.");let t={preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1},i=new e(n,!1,t);Oe.Instances.pop(),Oe.OnEnginesDisposedObservable.add(c=>{i&&c!==i&&!i.isDisposed&&Oe.Instances.length===0&&pP()}),i.getCaps().parallelShaderCompile=void 0;let r=new bx(i),{passPixelShader:s}=await Promise.resolve().then(()=>(uP(),hP)),a=new $r({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function oce(){return Nf||(Nf=ace()),await Nf}async function mP(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);Mx(n,e,l,i,r,s,!0,void 0,a)}async function zg(n,e,t,i="image/png",r,s=!1,a=!1,o){if(t instanceof Float32Array){let f=new Uint8Array(t.length),d=t.length;for(;d--;){let h=t[d];f[d]=Math.round(Bt(h)*255)}t=f}let l=await Hg.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&pe.DownloadBlob(l,r),l.type!==i&&ee.Warn(`DumpData: The requested mimeType '${i}' is not supported. The result has mimeType '${l.type}' instead.`);let c=await l.arrayBuffer();return a?c:`data:${i};base64,${Um(c)}`}function Mx(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),zg(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function pP(){Nf&&(Nf==null||Nf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),Nf=null)}var Nf,Hg,lce,cce,fce,_P=I(()=>{Wt();Sh();wi();jn();Gi();Lt();Bg();kt();Nf=null;Hg=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await oce(),l=o.dumpEngine;l.engine.setSize(t,i,!0);let c=l.engine.createRawTexture(e,t,i,5,!1,!s,1);return l.renderer.setViewport(),l.renderer.applyEffectWrapper(l.wrapper),l.wrapper.effect._bindTexture("textureSampler",c),l.renderer.draw(),c.dispose(),await new Promise((f,d)=>{pe.ToBlob(o.canvas,h=>{h?f(h):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([zs],Hg,"EncodeImageAsync",null);lce=Hg.EncodeImageAsync;cce={DumpData:Mx,DumpDataAsync:zg,DumpFramebuffer:mP,Dispose:pP},fce=()=>{pe.DumpData=Mx,pe.DumpDataAsync=zg,pe.DumpFramebuffer=mP};fce()});var Yr,wf=I(()=>{mi();ke();Xr();Ax();Eo();lh();Lt();sP();hr.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};Yr=class n extends _e{get renderListPredicate(){return this._objectRenderer.renderListPredicate}set renderListPredicate(e){this._objectRenderer.renderListPredicate=e}get renderList(){return this._objectRenderer.renderList}set renderList(e){this._objectRenderer.renderList=e}get particleSystemList(){return this._objectRenderer.particleSystemList}set particleSystemList(e){this._objectRenderer.particleSystemList=e}get getCustomRenderList(){return this._objectRenderer.getCustomRenderList}set getCustomRenderList(e){this._objectRenderer.getCustomRenderList=e}get renderParticles(){return this._objectRenderer.renderParticles}set renderParticles(e){this._objectRenderer.renderParticles=e}get renderSprites(){return this._objectRenderer.renderSprites}set renderSprites(e){this._objectRenderer.renderSprites=e}get enableBoundingBoxRendering(){return this._objectRenderer.enableBoundingBoxRendering}set enableBoundingBoxRendering(e){this._objectRenderer.enableBoundingBoxRendering=e}get enableOutlineRendering(){return this._objectRenderer.enableOutlineRendering}set enableOutlineRendering(e){this._objectRenderer.enableOutlineRendering=e}get forceLayerMaskCheck(){return this._objectRenderer.forceLayerMaskCheck}set forceLayerMaskCheck(e){this._objectRenderer.forceLayerMaskCheck=e}get activeCamera(){return this._objectRenderer.activeCamera}set activeCamera(e){this._objectRenderer.activeCamera=e}get cameraForLOD(){return this._objectRenderer.cameraForLOD}set cameraForLOD(e){this._objectRenderer.cameraForLOD=e}get disableImageProcessing(){return this._objectRenderer.disableImageProcessing}set disableImageProcessing(e){this._objectRenderer.disableImageProcessing=e}get customIsReadyFunction(){return this._objectRenderer.customIsReadyFunction}set customIsReadyFunction(e){this._objectRenderer.customIsReadyFunction=e}get customRenderFunction(){return this._objectRenderer.customRenderFunction}set customRenderFunction(e){this._objectRenderer.customRenderFunction=e}get postProcesses(){return this._postProcesses}get _prePassEnabled(){return!!this._prePassRenderTarget&&this._prePassRenderTarget.enabled}set onAfterUnbind(e){this._onAfterUnbindObserver&&this.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=this.onAfterUnbindObservable.add(e)}get onBeforeRenderObservable(){return this._objectRenderer.onBeforeRenderObservable}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}get onAfterRenderObservable(){return this._objectRenderer.onAfterRenderObservable}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}set onClear(e){this._onClearObserver&&this.onClearObservable.remove(this._onClearObserver),this._onClearObserver=this.onClearObservable.add(e)}get _waitingRenderList(){return this._objectRenderer._waitingRenderList}set _waitingRenderList(e){this._objectRenderer._waitingRenderList=e}get renderPassId(){return this._objectRenderer.renderPassId}get renderPassIds(){return this._objectRenderer.renderPassIds}get currentRefreshId(){return this._objectRenderer.currentRefreshId}setMaterialForRendering(e,t){this._objectRenderer.setMaterialForRendering(e,t)}get isMulti(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.isMulti)!=null?t:!1}get renderTargetOptions(){return this._renderTargetOptions}get renderTarget(){return this._renderTarget}_onRatioRescale(){this._sizeRatio&&this.resize(this._initialSizeParameter)}set boundingBoxSize(e){if(this._boundingBoxSize&&this._boundingBoxSize.equals(e))return;this._boundingBoxSize=e;let t=this.getScene();t&&t.markAllMaterialsAsDirty(1)}get boundingBoxSize(){return this._boundingBoxSize}get depthStencilTexture(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e._depthStencilTexture)!=null?t:null}constructor(e,t,i,r=!1,s=!0,a=0,o=!1,l=_e.TRILINEAR_SAMPLINGMODE,c=!0,f=!1,d=!1,h=5,u=!1,m,_,p=!1,g=!1){var R,M,y,C,D,w,G;let v,T=!0,S,E=!1;if(typeof r=="object"){let O=r;r=!!O.generateMipMaps,s=(R=O.doNotChangeAspectRatio)!=null?R:!0,a=(M=O.type)!=null?M:0,o=!!O.isCube,l=(y=O.samplingMode)!=null?y:_e.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,h=(D=O.format)!=null?D:5,u=!!O.delayAllocation,m=O.samples,_=O.creationFlags,p=!!O.noColorAttachment,g=!!O.useSRGBBuffer,v=O.colorAttachment,T=(w=O.gammaSpace)!=null?w:T,S=O.existingObjectRenderer,E=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,h),this.ignoreCameraViewport=!1,this.onBeforeBindObservable=new te,this.onAfterUnbindObservable=new te,this.onClearObservable=new te,this.onResizeObservable=new te,this._cleared=!1,this.skipInitialClear=!1,this._samples=1,this._canRescale=!0,this._renderTarget=null,this._dontDisposeObjectRenderer=!1,this.boundingBoxPosition=b.Zero(),this._disableEngineStages=!1,this._dumpToolsLoading=!1,i=this.getScene(),!i)return;let A=this.getScene().getEngine();this._gammaSpace=T,this._coordinatesMode=_e.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!S,this._processSizeParameter(t),this._objectRenderer=S!=null?S:new Ba(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:E}),this._onBeforeRenderingManagerRenderObserver=this._objectRenderer.onBeforeRenderingManagerRenderObservable.add(()=>{var N;let O=this._scene;if(!this._disableEngineStages)for(let B of O._beforeRenderTargetClearStage)B.action(this,this._currentFaceIndex,this._currentLayer);if(this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(A):this.skipInitialClear||A.clear((N=this.clearColor)!=null?N:O.clearColor,!0,!0,!0),this._doNotChangeAspectRatio||O.updateTransformMatrix(!0),!this._disableEngineStages)for(let B of O._beforeRenderTargetDrawStage)B.action(this,this._currentFaceIndex,this._currentLayer);A._debugPushGroup&&A._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,Q;if(A._debugPopGroup&&A._debugPopGroup(),!this._disableEngineStages)for(let K of this._scene._afterRenderTargetDrawStage)K.action(this,this._currentFaceIndex,this._currentLayer);let O=(B=(N=this._texture)==null?void 0:N.generateMipMaps)!=null?B:!1;if(this._texture&&(this._texture.generateMipMaps=!1),this._postProcessManager?this._postProcessManager._finalizeFrame(!1,(V=this._renderTarget)!=null?V:void 0,this._currentFaceIndex,this._postProcesses,this.ignoreCameraViewport):this._currentUseCameraPostProcess&&this._scene.postProcessManager._finalizeFrame(!1,(Q=this._renderTarget)!=null?Q:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let K of this._scene._afterRenderTargetPostProcessStage)K.action(this,this._currentFaceIndex,this._currentLayer);this._texture&&(this._texture.generateMipMaps=O),this._doNotChangeAspectRatio||this._scene.updateTransformMatrix(!0),this._currentDumpForDebug&&(this._dumpTools?this._dumpTools.DumpFramebuffer(this.getRenderWidth(),this.getRenderHeight(),A):ee.Error("dumpTools module is still being loaded. To speed up the process import dump tools directly in your project"))}),this._onFastPathRenderObserver=this._objectRenderer.onFastPathRenderObservable.add(()=>{this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(A):this.skipInitialClear||A.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=A.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(G=this._format)!=null?G:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:_,noColorAttachment:p,useSRGBBuffer:g,colorAttachment:v,label:this.name},this.samplingMode===_e.NEAREST_SAMPLINGMODE&&(this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE),u||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=_e.INVCUBIC_MODE,this._textureMatrix=Z.Identity()):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,m!==void 0&&(this.samples=m)))}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;(o=this._renderTarget)==null||o.createDepthStencilTexture(e,t,i,r,s,a)}_processSizeParameter(e){if(e.ratio){this._sizeRatio=e.ratio;let t=this._getEngine();this._size={width:this._bestReflectionRenderTargetDimension(t.getRenderWidth(),this._sizeRatio),height:this._bestReflectionRenderTargetDimension(t.getRenderHeight(),this._sizeRatio)}}else this._size=e}get samples(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.samples)!=null?t:this._samples}set samples(e){this._renderTarget&&(this._samples=this._renderTarget.setSamples(e))}addPostProcess(e){if(!this._postProcessManager){let t=this.getScene();if(!t)return;this._postProcessManager=new dc(t),this._postProcesses=new Array}this._postProcesses.push(e),this._postProcesses[0].autoClear=!1}clearPostProcesses(e=!1){if(this._postProcesses){if(e)for(let t of this._postProcesses)t.dispose();this._postProcesses=[]}}removePostProcess(e){if(!this._postProcesses)return;let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses.splice(t,1),this._postProcesses.length>0&&(this._postProcesses[0].autoClear=!1))}resetRefreshCounter(){this._objectRenderer.resetRefreshCounter()}get refreshRate(){return this._objectRenderer.refreshRate}set refreshRate(e){this._objectRenderer.refreshRate=e}_shouldRender(){return this._objectRenderer.shouldRender()}getRenderSize(){return this.getRenderWidth()}getRenderWidth(){return this._size.width?this._size.width:this._size}getRenderHeight(){return this._size.width?this._size.height:this._size}getRenderLayers(){let e=this._size.layers;if(e)return e;let t=this._size.depth;return t||0}disableRescaling(){this._canRescale=!1}get canRescale(){return this._canRescale}scale(e){let t=Math.max(1,this.getRenderSize()*e);this.resize(t)}getReflectionTextureMatrix(){return this.isCube?this._textureMatrix:super.getReflectionTextureMatrix()}resize(e){var r;let t=this.isCube;(r=this._renderTarget)==null||r.dispose(),this._renderTarget=null;let i=this.getScene();i&&(this._processSizeParameter(e),t?this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,this._renderTargetOptions.samples!==void 0&&(this.samples=this._renderTargetOptions.samples),this.onResizeObservable.hasObservers()&&this.onResizeObservable.notifyObservers(this))}render(e=!1,t=!1){this._render(e,t)}isReadyForRendering(){this._dumpToolsLoading||(this._dumpToolsLoading=!0,Promise.resolve().then(()=>(_P(),lG)).then(t=>this._dumpTools=t)),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight());let e=this._objectRenderer._checkReadiness();return this.onAfterUnbindObservable.notifyObservers(this),this._objectRenderer.finishRender(),e}_render(e=!1,t=!1){let i=this.getScene();if(!i)return;this.useCameraPostProcesses!==void 0&&(e=this.useCameraPostProcesses);let r=i.getEngine();if(r._debugPushGroup&&r._debugPushGroup(`Render to ${this.name}`),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight()),(this.is2DArray||this.is3D)&&!this.isMulti)for(let s=0;s{this.onAfterRenderObservable.notifyObservers(t)})}_prepareFrame(e,t,i,r){this._postProcessManager?this._prePassEnabled||this._postProcessManager._prepareFrame(this._texture,this._postProcesses)||this._bindFrameBuffer(t,i):(!r||!e.postProcessManager._prepareFrame(this._texture))&&this._bindFrameBuffer(t,i)}_renderToTarget(e,t,i,r=0){let s=this.getScene();if(!s)return;let a=s.getEngine();this._currentFaceIndex=e,this._currentLayer=r,this._currentUseCameraPostProcess=t,this._currentDumpForDebug=i,this._prepareFrame(s,e,r,t),this._objectRenderer.render(e+r,!0),this._unbindFrameBuffer(a,e),this._texture&&this.isCube&&e===5&&a.generateMipMapsForCubemap(this._texture,!0)}setRenderingOrder(e,t=null,i=null,r=null){this._objectRenderer.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t){this._objectRenderer.setRenderingAutoClearDepthStencil(e,t)}clone(){let e=this.getSize(),t=new n(this.name,e,this.getScene(),this._renderTargetOptions.generateMipMaps,this._doNotChangeAspectRatio,this._renderTargetOptions.type,this.isCube,this._renderTargetOptions.samplingMode,this._renderTargetOptions.generateDepthBuffer,this._renderTargetOptions.generateStencilBuffer,void 0,this._renderTargetOptions.format,void 0,this._renderTargetOptions.samples);return t.hasAlpha=this.hasAlpha,t.level=this.level,t.coordinatesMode=this.coordinatesMode,this.renderList&&(t.renderList=this.renderList.slice(0)),t}serialize(){if(!this.name)return null;let e=super.serialize();if(e.renderTargetSize=this.getRenderSize(),e.renderList=[],this.renderList)for(let t=0;t=0&&e.customRenderTargets.splice(t,1);for(let r of e.cameras)t=r.customRenderTargets.indexOf(this),t>=0&&r.customRenderTargets.splice(t,1);(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null,this._texture=null,super.dispose()}_rebuild(){this._objectRenderer._rebuild(),this._postProcessManager&&this._postProcessManager._rebuild()}freeRenderingGroups(){this._objectRenderer.freeRenderingGroups()}getViewCount(){return 1}};Yr.REFRESHRATE_RENDER_ONCE=Ba.REFRESHRATE_RENDER_ONCE;Yr.REFRESHRATE_RENDER_ONEVERYFRAME=Ba.REFRESHRATE_RENDER_ONEVERYFRAME;Yr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ba.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;_e._CreateRenderTargetTexture=(n,e,t,i,r)=>new Yr(n,e,t,i)});var Ci,hc=I(()=>{Wt();Mo();mi();ke();lh();kt();Dr();$i();zr();Eo();Sh();Re.prototype.setTextureFromPostProcess=function(n,e,t){var r;let i=null;e&&(e._forcedOutputTexture?i=e._forcedOutputTexture:e._textures.data[e._currentRenderTextureInd]&&(i=e._textures.data[e._currentRenderTextureInd])),this._bindTexture(n,(r=i==null?void 0:i.texture)!=null?r:null,t)};Re.prototype.setTextureFromPostProcessOutput=function(n,e,t){var i,r;this._bindTexture(n,(r=(i=e==null?void 0:e._outputTexture)==null?void 0:i.texture)!=null?r:null,t)};hr.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};hr.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Ci=class n{static get ForceGLSL(){return $r.ForceGLSL}static set ForceGLSL(e){$r.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){$r.RegisterShaderCodeProcessing(e,t)}get name(){return this._effectWrapper.name}set name(e){this._effectWrapper.name=e}get alphaMode(){return this._effectWrapper.alphaMode}set alphaMode(e){this._effectWrapper.alphaMode=e}get samples(){return this._samples}set samples(e){this._samples=Math.min(e,this._engine.getCaps().maxMSAASamples),this._textures.forEach(t=>{t.setSamples(this._samples)})}get shaderLanguage(){return this._shaderLanguage}getEffectName(){return this._fragmentUrl}set onActivate(e){this._onActivateObserver&&this.onActivateObservable.remove(this._onActivateObserver),e&&(this._onActivateObserver=this.onActivateObservable.add(e))}set onSizeChanged(e){this._onSizeChangedObserver&&this.onSizeChangedObservable.remove(this._onSizeChangedObserver),this._onSizeChangedObserver=this.onSizeChangedObservable.add(e)}set onApply(e){this._onApplyObserver&&this.onApplyObservable.remove(this._onApplyObserver),this._onApplyObserver=this.onApplyObservable.add(e)}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}get inputTexture(){return this._textures.data[this._currentRenderTextureInd]}set inputTexture(e){this._forcedOutputTexture=e}restoreDefaultInputTexture(){this._forcedOutputTexture&&(this._forcedOutputTexture=null,this.markTextureDirty())}getCamera(){return this._camera}get texelSize(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.texelSize:(this._forcedOutputTexture&&this._texelSize.copyFromFloats(1/this._forcedOutputTexture.width,1/this._forcedOutputTexture.height),this._texelSize)}constructor(e,t,i,r,s,a,o=1,l,c,f=null,d=0,h="postprocess",u,m=!1,_=5,p,g){var E,A,R,M,y,C,D,w,G,O,N,B;this._parentContainer=null,this.width=-1,this.height=-1,this.nodeMaterialSource=null,this._outputTexture=null,this.autoClear=!0,this.forceAutoClearInAlphaMode=!1,this.animations=[],this.enablePixelPerfectMode=!1,this.forceFullscreenViewport=!0,this.scaleMode=1,this.alwaysForcePOT=!1,this._samples=1,this.adaptScaleToCurrentViewport=!1,this.doNotSerialize=!1,this._webGPUReady=!1,this._reusable=!1,this._renderId=0,this.externalTextureSamplerBinding=!1,this._textures=new Xi(2),this._textureCache=[],this._currentRenderTextureInd=0,this._scaleRatio=new we(1,1),this._texelSize=we.Zero(),this.onActivateObservable=new te,this.onSizeChangedObservable=new te,this.onApplyObservable=new te,this.onBeforeRenderObservable=new te,this.onAfterRenderObservable=new te,this.onDisposeObservable=new te;let v=1,T=null,S;if(i&&!Array.isArray(i)){let V=i;i=(E=V.uniforms)!=null?E:null,r=(A=V.samplers)!=null?A:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(y=V.samplingMode)!=null?y:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` +{gl_FragColor=texture2D(textureSampler,vUV);}`;x.ShadersStore[dP]||(x.ShadersStore[dP]=oG);sce={name:dP,shader:oG}});var lG={};Fe(lG,{Dispose:()=>pP,DumpData:()=>Ix,DumpDataAsync:()=>zg,DumpFramebuffer:()=>mP,DumpTools:()=>cce,EncodeImageAsync:()=>lce});async function ace(){var o,l;let n=(l=(o=Oe.LastCreatedEngine)==null?void 0:o.createCanvas(100,100))!=null?l:new OffscreenCanvas(100,100);n instanceof OffscreenCanvas&&ee.Warn("DumpData: OffscreenCanvas will be used for dumping data. This may result in lossy alpha values.");let{ThinEngine:e}=await Promise.resolve().then(()=>(vs(),nV));if(!e.IsSupported)throw new Error("DumpData: No WebGL context available. Cannot dump data.");let t={preserveDrawingBuffer:!0,depth:!1,stencil:!1,alpha:!0,premultipliedAlpha:!1,antialias:!1,failIfMajorPerformanceCaveat:!1},i=new e(n,!1,t);Oe.Instances.pop(),Oe.OnEnginesDisposedObservable.add(c=>{i&&c!==i&&!i.isDisposed&&Oe.Instances.length===0&&pP()}),i.getCaps().parallelShaderCompile=void 0;let r=new Mx(i),{passPixelShader:s}=await Promise.resolve().then(()=>(uP(),hP)),a=new $r({engine:i,name:s.name,fragmentShader:s.shader,samplerNames:["textureSampler"]});return{canvas:n,dumpEngine:{engine:i,renderer:r,wrapper:a}}}async function oce(){return Nf||(Nf=ace()),await Nf}async function mP(n,e,t,i,r="image/png",s,a){let o=await t.readPixels(0,0,n,e),l=new Uint8Array(o.buffer);Ix(n,e,l,i,r,s,!0,void 0,a)}async function zg(n,e,t,i="image/png",r,s=!1,a=!1,o){if(t instanceof Float32Array){let f=new Uint8Array(t.length),d=t.length;for(;d--;){let h=t[d];f[d]=Math.round(Bt(h)*255)}t=f}let l=await Hg.EncodeImageAsync(t,n,e,i,s,o);r!==void 0&&pe.DownloadBlob(l,r),l.type!==i&&ee.Warn(`DumpData: The requested mimeType '${i}' is not supported. The result has mimeType '${l.type}' instead.`);let c=await l.arrayBuffer();return a?c:`data:${i};base64,${Um(c)}`}function Ix(n,e,t,i,r="image/png",s,a=!1,o=!1,l){s===void 0&&!i&&(s=""),zg(n,e,t,r,s,a,o,l).then(c=>{i&&i(c)})}function pP(){Nf&&(Nf==null||Nf.then(n=>{n.canvas instanceof HTMLCanvasElement&&n.canvas.remove(),n.dumpEngine&&(n.dumpEngine.engine.dispose(),n.dumpEngine.renderer.dispose(),n.dumpEngine.wrapper.dispose())}),Nf=null)}var Nf,Hg,lce,cce,fce,_P=I(()=>{Wt();Sh();wi();jn();Gi();Lt();Bg();kt();Nf=null;Hg=class{static async EncodeImageAsync(e,t,i,r,s,a){let o=await oce(),l=o.dumpEngine;l.engine.setSize(t,i,!0);let c=l.engine.createRawTexture(e,t,i,5,!1,!s,1);return l.renderer.setViewport(),l.renderer.applyEffectWrapper(l.wrapper),l.wrapper.effect._bindTexture("textureSampler",c),l.renderer.draw(),c.dispose(),await new Promise((f,d)=>{pe.ToBlob(o.canvas,h=>{h?f(h):d(new Error("EncodeImageAsync: Failed to convert canvas to blob."))},r,a)})}};P([zs],Hg,"EncodeImageAsync",null);lce=Hg.EncodeImageAsync;cce={DumpData:Ix,DumpDataAsync:zg,DumpFramebuffer:mP,Dispose:pP},fce=()=>{pe.DumpData=Ix,pe.DumpDataAsync=zg,pe.DumpFramebuffer=mP};fce()});var Yr,wf=I(()=>{mi();ke();Xr();xx();Eo();lh();Lt();sP();hr.prototype.setDepthStencilTexture=function(n,e){this._engine.setDepthStencilTexture(this._samplers[n],this._uniforms[n],e,n)};Yr=class n extends _e{get renderListPredicate(){return this._objectRenderer.renderListPredicate}set renderListPredicate(e){this._objectRenderer.renderListPredicate=e}get renderList(){return this._objectRenderer.renderList}set renderList(e){this._objectRenderer.renderList=e}get particleSystemList(){return this._objectRenderer.particleSystemList}set particleSystemList(e){this._objectRenderer.particleSystemList=e}get getCustomRenderList(){return this._objectRenderer.getCustomRenderList}set getCustomRenderList(e){this._objectRenderer.getCustomRenderList=e}get renderParticles(){return this._objectRenderer.renderParticles}set renderParticles(e){this._objectRenderer.renderParticles=e}get renderSprites(){return this._objectRenderer.renderSprites}set renderSprites(e){this._objectRenderer.renderSprites=e}get enableBoundingBoxRendering(){return this._objectRenderer.enableBoundingBoxRendering}set enableBoundingBoxRendering(e){this._objectRenderer.enableBoundingBoxRendering=e}get enableOutlineRendering(){return this._objectRenderer.enableOutlineRendering}set enableOutlineRendering(e){this._objectRenderer.enableOutlineRendering=e}get forceLayerMaskCheck(){return this._objectRenderer.forceLayerMaskCheck}set forceLayerMaskCheck(e){this._objectRenderer.forceLayerMaskCheck=e}get activeCamera(){return this._objectRenderer.activeCamera}set activeCamera(e){this._objectRenderer.activeCamera=e}get cameraForLOD(){return this._objectRenderer.cameraForLOD}set cameraForLOD(e){this._objectRenderer.cameraForLOD=e}get disableImageProcessing(){return this._objectRenderer.disableImageProcessing}set disableImageProcessing(e){this._objectRenderer.disableImageProcessing=e}get customIsReadyFunction(){return this._objectRenderer.customIsReadyFunction}set customIsReadyFunction(e){this._objectRenderer.customIsReadyFunction=e}get customRenderFunction(){return this._objectRenderer.customRenderFunction}set customRenderFunction(e){this._objectRenderer.customRenderFunction=e}get postProcesses(){return this._postProcesses}get _prePassEnabled(){return!!this._prePassRenderTarget&&this._prePassRenderTarget.enabled}set onAfterUnbind(e){this._onAfterUnbindObserver&&this.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=this.onAfterUnbindObservable.add(e)}get onBeforeRenderObservable(){return this._objectRenderer.onBeforeRenderObservable}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}get onAfterRenderObservable(){return this._objectRenderer.onAfterRenderObservable}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}set onClear(e){this._onClearObserver&&this.onClearObservable.remove(this._onClearObserver),this._onClearObserver=this.onClearObservable.add(e)}get _waitingRenderList(){return this._objectRenderer._waitingRenderList}set _waitingRenderList(e){this._objectRenderer._waitingRenderList=e}get renderPassId(){return this._objectRenderer.renderPassId}get renderPassIds(){return this._objectRenderer.renderPassIds}get currentRefreshId(){return this._objectRenderer.currentRefreshId}setMaterialForRendering(e,t){this._objectRenderer.setMaterialForRendering(e,t)}get isMulti(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.isMulti)!=null?t:!1}get renderTargetOptions(){return this._renderTargetOptions}get renderTarget(){return this._renderTarget}_onRatioRescale(){this._sizeRatio&&this.resize(this._initialSizeParameter)}set boundingBoxSize(e){if(this._boundingBoxSize&&this._boundingBoxSize.equals(e))return;this._boundingBoxSize=e;let t=this.getScene();t&&t.markAllMaterialsAsDirty(1)}get boundingBoxSize(){return this._boundingBoxSize}get depthStencilTexture(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e._depthStencilTexture)!=null?t:null}constructor(e,t,i,r=!1,s=!0,a=0,o=!1,l=_e.TRILINEAR_SAMPLINGMODE,c=!0,f=!1,d=!1,h=5,u=!1,m,_,p=!1,g=!1){var R,M,y,C,D,w,G;let v,T=!0,S,E=!1;if(typeof r=="object"){let O=r;r=!!O.generateMipMaps,s=(R=O.doNotChangeAspectRatio)!=null?R:!0,a=(M=O.type)!=null?M:0,o=!!O.isCube,l=(y=O.samplingMode)!=null?y:_e.TRILINEAR_SAMPLINGMODE,c=(C=O.generateDepthBuffer)!=null?C:!0,f=!!O.generateStencilBuffer,d=!!O.isMulti,h=(D=O.format)!=null?D:5,u=!!O.delayAllocation,m=O.samples,_=O.creationFlags,p=!!O.noColorAttachment,g=!!O.useSRGBBuffer,v=O.colorAttachment,T=(w=O.gammaSpace)!=null?w:T,S=O.existingObjectRenderer,E=!!O.enableClusteredLights}if(super(null,i,!r,void 0,l,void 0,void 0,void 0,void 0,h),this.ignoreCameraViewport=!1,this.onBeforeBindObservable=new te,this.onAfterUnbindObservable=new te,this.onClearObservable=new te,this.onResizeObservable=new te,this._cleared=!1,this.skipInitialClear=!1,this._samples=1,this._canRescale=!0,this._renderTarget=null,this._dontDisposeObjectRenderer=!1,this.boundingBoxPosition=b.Zero(),this._disableEngineStages=!1,this._dumpToolsLoading=!1,i=this.getScene(),!i)return;let A=this.getScene().getEngine();this._gammaSpace=T,this._coordinatesMode=_e.PROJECTION_MODE,this.name=e,this.isRenderTarget=!0,this._initialSizeParameter=t,this._dontDisposeObjectRenderer=!!S,this._processSizeParameter(t),this._objectRenderer=S!=null?S:new Ba(e,i,{numPasses:o?6:this.getRenderLayers()||1,doNotChangeAspectRatio:s,enableClusteredLights:E}),this._onBeforeRenderingManagerRenderObserver=this._objectRenderer.onBeforeRenderingManagerRenderObservable.add(()=>{var N;let O=this._scene;if(!this._disableEngineStages)for(let B of O._beforeRenderTargetClearStage)B.action(this,this._currentFaceIndex,this._currentLayer);if(this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(A):this.skipInitialClear||A.clear((N=this.clearColor)!=null?N:O.clearColor,!0,!0,!0),this._doNotChangeAspectRatio||O.updateTransformMatrix(!0),!this._disableEngineStages)for(let B of O._beforeRenderTargetDrawStage)B.action(this,this._currentFaceIndex,this._currentLayer);A._debugPushGroup&&A._debugPushGroup(`Render to ${this.name} (face #${this._currentFaceIndex} layer #${this._currentLayer})`)}),this._onAfterRenderingManagerRenderObserver=this._objectRenderer.onAfterRenderingManagerRenderObservable.add(()=>{var N,B,V,Q;if(A._debugPopGroup&&A._debugPopGroup(),!this._disableEngineStages)for(let K of this._scene._afterRenderTargetDrawStage)K.action(this,this._currentFaceIndex,this._currentLayer);let O=(B=(N=this._texture)==null?void 0:N.generateMipMaps)!=null?B:!1;if(this._texture&&(this._texture.generateMipMaps=!1),this._postProcessManager?this._postProcessManager._finalizeFrame(!1,(V=this._renderTarget)!=null?V:void 0,this._currentFaceIndex,this._postProcesses,this.ignoreCameraViewport):this._currentUseCameraPostProcess&&this._scene.postProcessManager._finalizeFrame(!1,(Q=this._renderTarget)!=null?Q:void 0,this._currentFaceIndex),!this._disableEngineStages)for(let K of this._scene._afterRenderTargetPostProcessStage)K.action(this,this._currentFaceIndex,this._currentLayer);this._texture&&(this._texture.generateMipMaps=O),this._doNotChangeAspectRatio||this._scene.updateTransformMatrix(!0),this._currentDumpForDebug&&(this._dumpTools?this._dumpTools.DumpFramebuffer(this.getRenderWidth(),this.getRenderHeight(),A):ee.Error("dumpTools module is still being loaded. To speed up the process import dump tools directly in your project"))}),this._onFastPathRenderObserver=this._objectRenderer.onFastPathRenderObservable.add(()=>{this.onClearObservable.hasObservers()?this.onClearObservable.notifyObservers(A):this.skipInitialClear||A.clear(this.clearColor||this._scene.clearColor,!0,!0,!0)}),this._resizeObserver=A.onResizeObservable.add(()=>{}),this._generateMipMaps=!!r,this._doNotChangeAspectRatio=s,!d&&(this._renderTargetOptions={generateMipMaps:r,type:a,format:(G=this._format)!=null?G:void 0,samplingMode:this.samplingMode,generateDepthBuffer:c,generateStencilBuffer:f,samples:m,creationFlags:_,noColorAttachment:p,useSRGBBuffer:g,colorAttachment:v,label:this.name},this.samplingMode===_e.NEAREST_SAMPLINGMODE&&(this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE),u||(o?(this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions),this.coordinatesMode=_e.INVCUBIC_MODE,this._textureMatrix=Z.Identity()):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,m!==void 0&&(this.samples=m)))}createDepthStencilTexture(e=0,t=!0,i=!1,r=1,s=14,a){var o;(o=this._renderTarget)==null||o.createDepthStencilTexture(e,t,i,r,s,a)}_processSizeParameter(e){if(e.ratio){this._sizeRatio=e.ratio;let t=this._getEngine();this._size={width:this._bestReflectionRenderTargetDimension(t.getRenderWidth(),this._sizeRatio),height:this._bestReflectionRenderTargetDimension(t.getRenderHeight(),this._sizeRatio)}}else this._size=e}get samples(){var e,t;return(t=(e=this._renderTarget)==null?void 0:e.samples)!=null?t:this._samples}set samples(e){this._renderTarget&&(this._samples=this._renderTarget.setSamples(e))}addPostProcess(e){if(!this._postProcessManager){let t=this.getScene();if(!t)return;this._postProcessManager=new dc(t),this._postProcesses=new Array}this._postProcesses.push(e),this._postProcesses[0].autoClear=!1}clearPostProcesses(e=!1){if(this._postProcesses){if(e)for(let t of this._postProcesses)t.dispose();this._postProcesses=[]}}removePostProcess(e){if(!this._postProcesses)return;let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses.splice(t,1),this._postProcesses.length>0&&(this._postProcesses[0].autoClear=!1))}resetRefreshCounter(){this._objectRenderer.resetRefreshCounter()}get refreshRate(){return this._objectRenderer.refreshRate}set refreshRate(e){this._objectRenderer.refreshRate=e}_shouldRender(){return this._objectRenderer.shouldRender()}getRenderSize(){return this.getRenderWidth()}getRenderWidth(){return this._size.width?this._size.width:this._size}getRenderHeight(){return this._size.width?this._size.height:this._size}getRenderLayers(){let e=this._size.layers;if(e)return e;let t=this._size.depth;return t||0}disableRescaling(){this._canRescale=!1}get canRescale(){return this._canRescale}scale(e){let t=Math.max(1,this.getRenderSize()*e);this.resize(t)}getReflectionTextureMatrix(){return this.isCube?this._textureMatrix:super.getReflectionTextureMatrix()}resize(e){var r;let t=this.isCube;(r=this._renderTarget)==null||r.dispose(),this._renderTarget=null;let i=this.getScene();i&&(this._processSizeParameter(e),t?this._renderTarget=i.getEngine().createRenderTargetCubeTexture(this.getRenderSize(),this._renderTargetOptions):this._renderTarget=i.getEngine().createRenderTargetTexture(this._size,this._renderTargetOptions),this._texture=this._renderTarget.texture,this._renderTargetOptions.samples!==void 0&&(this.samples=this._renderTargetOptions.samples),this.onResizeObservable.hasObservers()&&this.onResizeObservable.notifyObservers(this))}render(e=!1,t=!1){this._render(e,t)}isReadyForRendering(){this._dumpToolsLoading||(this._dumpToolsLoading=!0,Promise.resolve().then(()=>(_P(),lG)).then(t=>this._dumpTools=t)),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight());let e=this._objectRenderer._checkReadiness();return this.onAfterUnbindObservable.notifyObservers(this),this._objectRenderer.finishRender(),e}_render(e=!1,t=!1){let i=this.getScene();if(!i)return;this.useCameraPostProcesses!==void 0&&(e=this.useCameraPostProcesses);let r=i.getEngine();if(r._debugPushGroup&&r._debugPushGroup(`Render to ${this.name}`),this._objectRenderer.prepareRenderList(),this.onBeforeBindObservable.notifyObservers(this),this._objectRenderer.initRender(this.getRenderWidth(),this.getRenderHeight()),(this.is2DArray||this.is3D)&&!this.isMulti)for(let s=0;s{this.onAfterRenderObservable.notifyObservers(t)})}_prepareFrame(e,t,i,r){this._postProcessManager?this._prePassEnabled||this._postProcessManager._prepareFrame(this._texture,this._postProcesses)||this._bindFrameBuffer(t,i):(!r||!e.postProcessManager._prepareFrame(this._texture))&&this._bindFrameBuffer(t,i)}_renderToTarget(e,t,i,r=0){let s=this.getScene();if(!s)return;let a=s.getEngine();this._currentFaceIndex=e,this._currentLayer=r,this._currentUseCameraPostProcess=t,this._currentDumpForDebug=i,this._prepareFrame(s,e,r,t),this._objectRenderer.render(e+r,!0),this._unbindFrameBuffer(a,e),this._texture&&this.isCube&&e===5&&a.generateMipMapsForCubemap(this._texture,!0)}setRenderingOrder(e,t=null,i=null,r=null){this._objectRenderer.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t){this._objectRenderer.setRenderingAutoClearDepthStencil(e,t)}clone(){let e=this.getSize(),t=new n(this.name,e,this.getScene(),this._renderTargetOptions.generateMipMaps,this._doNotChangeAspectRatio,this._renderTargetOptions.type,this.isCube,this._renderTargetOptions.samplingMode,this._renderTargetOptions.generateDepthBuffer,this._renderTargetOptions.generateStencilBuffer,void 0,this._renderTargetOptions.format,void 0,this._renderTargetOptions.samples);return t.hasAlpha=this.hasAlpha,t.level=this.level,t.coordinatesMode=this.coordinatesMode,this.renderList&&(t.renderList=this.renderList.slice(0)),t}serialize(){if(!this.name)return null;let e=super.serialize();if(e.renderTargetSize=this.getRenderSize(),e.renderList=[],this.renderList)for(let t=0;t=0&&e.customRenderTargets.splice(t,1);for(let r of e.cameras)t=r.customRenderTargets.indexOf(this),t>=0&&r.customRenderTargets.splice(t,1);(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null,this._texture=null,super.dispose()}_rebuild(){this._objectRenderer._rebuild(),this._postProcessManager&&this._postProcessManager._rebuild()}freeRenderingGroups(){this._objectRenderer.freeRenderingGroups()}getViewCount(){return 1}};Yr.REFRESHRATE_RENDER_ONCE=Ba.REFRESHRATE_RENDER_ONCE;Yr.REFRESHRATE_RENDER_ONEVERYFRAME=Ba.REFRESHRATE_RENDER_ONEVERYFRAME;Yr.REFRESHRATE_RENDER_ONEVERYTWOFRAMES=Ba.REFRESHRATE_RENDER_ONEVERYTWOFRAMES;_e._CreateRenderTargetTexture=(n,e,t,i,r)=>new Yr(n,e,t,i)});var Ci,hc=I(()=>{Wt();Mo();mi();ke();lh();kt();Dr();$i();zr();Eo();Sh();Re.prototype.setTextureFromPostProcess=function(n,e,t){var r;let i=null;e&&(e._forcedOutputTexture?i=e._forcedOutputTexture:e._textures.data[e._currentRenderTextureInd]&&(i=e._textures.data[e._currentRenderTextureInd])),this._bindTexture(n,(r=i==null?void 0:i.texture)!=null?r:null,t)};Re.prototype.setTextureFromPostProcessOutput=function(n,e,t){var i,r;this._bindTexture(n,(r=(i=e==null?void 0:e._outputTexture)==null?void 0:i.texture)!=null?r:null,t)};hr.prototype.setTextureFromPostProcess=function(n,e){this._engine.setTextureFromPostProcess(this._samplers[n],e,n)};hr.prototype.setTextureFromPostProcessOutput=function(n,e){this._engine.setTextureFromPostProcessOutput(this._samplers[n],e,n)};Ci=class n{static get ForceGLSL(){return $r.ForceGLSL}static set ForceGLSL(e){$r.ForceGLSL=e}static RegisterShaderCodeProcessing(e,t){$r.RegisterShaderCodeProcessing(e,t)}get name(){return this._effectWrapper.name}set name(e){this._effectWrapper.name=e}get alphaMode(){return this._effectWrapper.alphaMode}set alphaMode(e){this._effectWrapper.alphaMode=e}get samples(){return this._samples}set samples(e){this._samples=Math.min(e,this._engine.getCaps().maxMSAASamples),this._textures.forEach(t=>{t.setSamples(this._samples)})}get shaderLanguage(){return this._shaderLanguage}getEffectName(){return this._fragmentUrl}set onActivate(e){this._onActivateObserver&&this.onActivateObservable.remove(this._onActivateObserver),e&&(this._onActivateObserver=this.onActivateObservable.add(e))}set onSizeChanged(e){this._onSizeChangedObserver&&this.onSizeChangedObservable.remove(this._onSizeChangedObserver),this._onSizeChangedObserver=this.onSizeChangedObservable.add(e)}set onApply(e){this._onApplyObserver&&this.onApplyObservable.remove(this._onApplyObserver),this._onApplyObserver=this.onApplyObservable.add(e)}set onBeforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e)}set onAfterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),this._onAfterRenderObserver=this.onAfterRenderObservable.add(e)}get inputTexture(){return this._textures.data[this._currentRenderTextureInd]}set inputTexture(e){this._forcedOutputTexture=e}restoreDefaultInputTexture(){this._forcedOutputTexture&&(this._forcedOutputTexture=null,this.markTextureDirty())}getCamera(){return this._camera}get texelSize(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.texelSize:(this._forcedOutputTexture&&this._texelSize.copyFromFloats(1/this._forcedOutputTexture.width,1/this._forcedOutputTexture.height),this._texelSize)}constructor(e,t,i,r,s,a,o=1,l,c,f=null,d=0,h="postprocess",u,m=!1,_=5,p,g){var E,A,R,M,y,C,D,w,G,O,N,B;this._parentContainer=null,this.width=-1,this.height=-1,this.nodeMaterialSource=null,this._outputTexture=null,this.autoClear=!0,this.forceAutoClearInAlphaMode=!1,this.animations=[],this.enablePixelPerfectMode=!1,this.forceFullscreenViewport=!0,this.scaleMode=1,this.alwaysForcePOT=!1,this._samples=1,this.adaptScaleToCurrentViewport=!1,this.doNotSerialize=!1,this._webGPUReady=!1,this._reusable=!1,this._renderId=0,this.externalTextureSamplerBinding=!1,this._textures=new Xi(2),this._textureCache=[],this._currentRenderTextureInd=0,this._scaleRatio=new we(1,1),this._texelSize=we.Zero(),this.onActivateObservable=new te,this.onSizeChangedObservable=new te,this.onApplyObservable=new te,this.onBeforeRenderObservable=new te,this.onAfterRenderObservable=new te,this.onDisposeObservable=new te;let v=1,T=null,S;if(i&&!Array.isArray(i)){let V=i;i=(E=V.uniforms)!=null?E:null,r=(A=V.samplers)!=null?A:null,v=(R=V.size)!=null?R:1,a=(M=V.camera)!=null?M:null,o=(y=V.samplingMode)!=null?y:1,l=V.engine,c=V.reusable,f=Array.isArray(V.defines)?V.defines.join(` `):(C=V.defines)!=null?C:null,d=(D=V.textureType)!=null?D:0,h=(w=V.vertexUrl)!=null?w:"postprocess",u=V.indexParameters,m=(G=V.blockCompilation)!=null?G:!1,_=(O=V.textureFormat)!=null?O:5,p=(N=V.shaderLanguage)!=null?N:0,T=(B=V.uniformBuffers)!=null?B:null,g=V.extraInitializations,S=V.effectWrapper}else s&&(typeof s=="number"?v=s:v={width:s.width,height:s.height});if(this._useExistingThinPostProcess=!!S,this._effectWrapper=S!=null?S:new $r({name:e,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:t,engine:l||(a==null?void 0:a.getScene().getEngine()),uniforms:i,samplers:r,uniformBuffers:T,defines:f,vertexUrl:h,indexParameters:u,blockCompilation:!0,shaderLanguage:p,extraInitializations:void 0}),this.name=e,this.onEffectCreatedObservable=this._effectWrapper.onEffectCreatedObservable,a!=null?(this._camera=a,this._scene=a.getScene(),a.attachPostProcess(this),this._engine=this._scene.getEngine(),this._scene.addPostProcess(this),this.uniqueId=this._scene.getUniqueId()):l&&(this._engine=l,this._engine.postProcesses.push(this)),this._options=v,this.renderTargetSamplingMode=o||1,this._reusable=c||!1,this._textureType=d,this._textureFormat=_,this._shaderLanguage=p||0,this._samplers=r||[],this._samplers.indexOf("textureSampler")===-1&&this._samplers.push("textureSampler"),this._fragmentUrl=t,this._vertexUrl=h,this._parameters=i||[],this._parameters.indexOf("scale")===-1&&this._parameters.push("scale"),this._uniformBuffers=T||[],this._indexParameters=u,!this._useExistingThinPostProcess){this._webGPUReady=this._shaderLanguage===1;let V=[];this._gatherImports(this._engine.isWebGPU&&!n.ForceGLSL,V),this._effectWrapper._webGPUReady=this._webGPUReady,this._effectWrapper._postConstructor(m,f,g,V)}}_gatherImports(e=!1,t){e&&this._webGPUReady?t.push(Promise.all([Promise.resolve().then(()=>(cP(),aG))])):t.push(Promise.all([Promise.resolve().then(()=>(oP(),nG))]))}getClassName(){return"PostProcess"}getEngine(){return this._engine}getEffect(){return this._effectWrapper.drawWrapper.effect}shareOutputWith(e){return this._disposeTextures(),this._shareOutputWithPostProcess=e,this}useOwnOutput(){this._textures.length==0&&(this._textures=new Xi(2)),this._shareOutputWithPostProcess=null}updateEffect(e=null,t=null,i=null,r,s,a,o,l){this._effectWrapper.updateEffect(e,t,i,r,s,a,o,l),this._postProcessDefines=Array.isArray(this._effectWrapper.options.defines)?this._effectWrapper.options.defines.join(` `):this._effectWrapper.options.defines}isReusable(){return this._reusable}markTextureDirty(){this.width=-1}_createRenderTargetTexture(e,t,i=0){for(let s=0;s=0;t--)if(e-this._textureCache[t].lastUsedRenderId>100){let i=!1;for(let r=0;r0&&this._textures.reset(),this.width=e,this.height=t;let a=null;if(i){for(let c=0;c{g.samples!==this.samples&&this._engine.updateRenderTargetTextureSampleCount(g,this.samples)}),this._flushTextureCache(),this._renderId++}return u||(u=this._getTarget()),this.enablePixelPerfectMode?(this._scaleRatio.copyFromFloats(l/f,c/d),this._engine.bindFramebuffer(u,0,l,c,this.forceFullscreenViewport)):(this._scaleRatio.copyFromFloats(1,1),this._engine.bindFramebuffer(u,0,void 0,void 0,this.forceFullscreenViewport)),(p=(_=this._engine)._debugInsertMarker)==null||p.call(_,`post process ${this.name} input`),this.onActivateObservable.notifyObservers(r),this.autoClear&&(this.alphaMode===0||this.forceAutoClearInAlphaMode)&&this._engine.clear(this.clearColor?this.clearColor:s.clearColor,s._allowPostProcessClearColor,!0,!0),this._reusable&&(this._currentRenderTextureInd=(this._currentRenderTextureInd+1)%2),u}get isSupported(){return this._effectWrapper.drawWrapper.effect.isSupported}get aspectRatio(){return this._shareOutputWithPostProcess?this._shareOutputWithPostProcess.aspectRatio:this._forcedOutputTexture?this._forcedOutputTexture.width/this._forcedOutputTexture.height:this.width/this.height}isReady(){return this._effectWrapper.isReady()}apply(){if(!this._effectWrapper.isReady())return null;this._engine.enableEffect(this._effectWrapper.drawWrapper),this._engine.setState(!1),this._engine.setDepthBuffer(!1),this._engine.setDepthWrite(!1),this.alphaConstants&&this.getEngine().setAlphaConstants(this.alphaConstants.r,this.alphaConstants.g,this.alphaConstants.b,this.alphaConstants.a),this._engine.setAlphaMode(this.alphaMode);let e;return this._shareOutputWithPostProcess?e=this._shareOutputWithPostProcess.inputTexture:this._forcedOutputTexture?e=this._forcedOutputTexture:e=this.inputTexture,this.externalTextureSamplerBinding||this._effectWrapper.drawWrapper.effect._bindTexture("textureSampler",e==null?void 0:e.texture),this._effectWrapper.drawWrapper.effect.setVector2("scale",this._scaleRatio),this.onApplyObservable.notifyObservers(this._effectWrapper.drawWrapper.effect),this._effectWrapper.bind(!0),this._effectWrapper.drawWrapper.effect}_disposeTextures(){if(this._shareOutputWithPostProcess||this._forcedOutputTexture){this._disposeTextureCache();return}this._disposeTextureCache(),this._textures.dispose()}_disposeTextureCache(){for(let e=this._textureCache.length-1;e>=0;e--)this._textureCache[e].texture.dispose();this._textureCache.length=0}setPrePassRenderer(e){return this._prePassEffectConfiguration?(this._prePassEffectConfiguration=e.addEffectConfiguration(this._prePassEffectConfiguration),this._prePassEffectConfiguration.enabled=!0,!0):!1}dispose(e){e=e||this._camera,this._useExistingThinPostProcess||this._effectWrapper.dispose(),this._disposeTextures(),this._scene&&this._scene.removePostProcess(this);let t;if(this._parentContainer&&(t=this._parentContainer.postProcesses.indexOf(this),t>-1&&this._parentContainer.postProcesses.splice(t,1),this._parentContainer=null),t=this._engine.postProcesses.indexOf(this),t!==-1&&this._engine.postProcesses.splice(t,1),this.onDisposeObservable.notifyObservers(),!!e){if(e.detachPostProcess(this),t=e._postProcesses.indexOf(this),t===0&&e._postProcesses.length>0){let i=this._camera._getFirstPostProcess();i&&i.markTextureDirty()}this.onActivateObservable.clear(),this.onAfterRenderObservable.clear(),this.onApplyObservable.clear(),this.onBeforeRenderObservable.clear(),this.onSizeChangedObservable.clear(),this.onEffectCreatedObservable.clear()}}serialize(){let e=nt.Serialize(this),t=this.getCamera()||this._scene&&this._scene.activeCamera;return e.customType="BABYLON."+this.getClassName(),e.cameraId=t?t.id:null,e.reusable=this._reusable,e.textureType=this._textureType,e.fragmentUrl=this._fragmentUrl,e.parameters=this._parameters,e.samplers=this._samplers,e.uniformBuffers=this._uniformBuffers,e.options=this._options,e.defines=this._postProcessDefines,e.textureFormat=this._textureFormat,e.vertexUrl=this._vertexUrl,e.indexParameters=this._indexParameters,e}clone(){let e=this.serialize();e._engine=this._engine,e.cameraId=null;let t=n.Parse(e,this._scene,"");return t?(t.onActivateObservable=this.onActivateObservable.clone(),t.onSizeChangedObservable=this.onSizeChangedObservable.clone(),t.onApplyObservable=this.onApplyObservable.clone(),t.onBeforeRenderObservable=this.onBeforeRenderObservable.clone(),t.onAfterRenderObservable=this.onAfterRenderObservable.clone(),t._prePassEffectConfiguration=this._prePassEffectConfiguration,t):null}static Parse(e,t,i){let r=Pn(e.customType);if(!r||!r._Parse)return null;let s=t?t.getCameraById(e.cameraId):null;return r._Parse(e,s,t,i)}static _Parse(e,t,i,r){return nt.Parse(()=>new n(e.name,e.fragmentUrl,e.parameters,e.samplers,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable,e.defines,e.textureType,e.vertexUrl,e.indexParameters,!1,e.textureFormat),e,i,r)}};P([F()],Ci.prototype,"uniqueId",void 0);P([F()],Ci.prototype,"name",null);P([F()],Ci.prototype,"width",void 0);P([F()],Ci.prototype,"height",void 0);P([F()],Ci.prototype,"renderTargetSamplingMode",void 0);P([Bm()],Ci.prototype,"clearColor",void 0);P([F()],Ci.prototype,"autoClear",void 0);P([F()],Ci.prototype,"forceAutoClearInAlphaMode",void 0);P([F()],Ci.prototype,"alphaMode",null);P([F()],Ci.prototype,"alphaConstants",void 0);P([F()],Ci.prototype,"enablePixelPerfectMode",void 0);P([F()],Ci.prototype,"forceFullscreenViewport",void 0);P([F()],Ci.prototype,"scaleMode",void 0);P([F()],Ci.prototype,"alwaysForcePOT",void 0);P([F("samples")],Ci.prototype,"_samples",void 0);P([F()],Ci.prototype,"adaptScaleToCurrentViewport",void 0);Ut("BABYLON.PostProcess",Ci)});var fG={};Fe(fG,{passPixelShaderWGSL:()=>dce});var gP,cG,dce,dG=I(()=>{k();gP="passPixelShader",cG=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #define CUSTOM_FRAGMENT_DEFINITIONS @@ -4209,8 +4209,8 @@ gl_FragColor=textureCube(textureSampler,vec3(uv,1.001)); #ifdef NEGATIVEZ gl_FragColor=textureCube(textureSampler,vec3(uv,-1.001)); #endif -}`;x.ShadersStore[EP]||(x.ShadersStore[EP]=pG);uce={name:EP,shader:pG}});var uc,Xg,SP=I(()=>{Sh();Gi();uc=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(dG(),fG))]))):t.push(Promise.all([Promise.resolve().then(()=>(uP(),hP))])),super._gatherImports(e,t)}constructor(e,t=null,i){let r={name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,...i};r.engine||(r.engine=Oe.LastCreatedEngine),super(r)}};uc.FragmentUrl="pass";Xg=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(mG(),uG))]))):t.push(Promise.all([Promise.resolve().then(()=>(gG(),_G))])),super._gatherImports(e,t)}constructor(e,t=null,i){super({...i,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,defines:"#define POSITIVEX"}),this._face=0}get face(){return this._face}set face(e){if(!(e<0||e>5))switch(this._face=e,this._face){case 0:this.updateEffect("#define POSITIVEX");break;case 1:this.updateEffect("#define NEGATIVEX");break;case 2:this.updateEffect("#define POSITIVEY");break;case 3:this.updateEffect("#define NEGATIVEY");break;case 4:this.updateEffect("#define POSITIVEZ");break;case 5:this.updateEffect("#define NEGATIVEZ");break}}};Xg.FragmentUrl="passCube"});var Th,TP,AP=I(()=>{Wt();hc();zr();$i();Dr();SP();kt();Th=class n extends Ci{getClassName(){return"PassPostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,uc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new uc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return nt.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Ut("BABYLON.PassPostProcess",Th);TP=class n extends Ci{get face(){return this._effectWrapper.face}set face(e){this._effectWrapper.face=e}getClassName(){return"PassCubePostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,uc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Xg(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return nt.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],TP.prototype,"face",null);Re._RescalePostProcessFactory=n=>new Th("rescale",1,null,2,n,!1,0)});function EG(n,e,t,i,r,s,a,o){let l=e.getEngine();return e.isReady=!1,r=r!=null?r:e.samplingMode,i=i!=null?i:e.type,s=s!=null?s:e.format,a=a!=null?a:e.width,o=o!=null?o:e.height,i===-1&&(i=0),new Promise(c=>{let f=new Ci("postprocess",n,null,null,1,null,r,l,!1,void 0,i,void 0,null,!1,s);f.externalTextureSamplerBinding=!0;let d=l.createRenderTargetTexture({width:a,height:o},{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:r,type:i,format:s});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",e),u.setFloat2("scale",1,1)},t.postProcessManager.directRender([f],d,!0),l.restoreDefaultFramebuffer(),l._releaseTexture(e),f&&f.dispose(),d._swapAndDie(e),e.type=i,e.format=5,e.isReady=!0,c(e)})})})}function Ah(n){Ix||(Ix=new Float32Array(1),vG=new Int32Array(Ix.buffer)),Ix[0]=n;let e=vG[0],t=e>>16&32768,i=e>>12&2047,r=e>>23&255;return r<103?t:r>142?(t|=31744,t|=(r==255?0:1)&&e&8388607,t):r<113?(i|=2048,t|=(i>>114-r)+(i>>113-r&1),t):(t|=r-112<<10|i>>1,t+=i&1,t)}function mc(n){let e=(n&32768)>>15,t=(n&31744)>>10,i=n&1023;return t===0?(e?-1:1)*Math.pow(2,-14)*(i/Math.pow(2,10)):t==31?i?NaN:(e?-1:1)*(1/0):(e?-1:1)*Math.pow(2,t-15)*(1+i/Math.pow(2,10))}var Ix,vG,xP=I(()=>{Xr();wf();AP();hc();jn()});function bP(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function RP(n,e,t){for(;t.length!==e;){let i=bP(n.lines[n.index++]);t.push(...i)}}function mce(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let g=0;g0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=bP(i.lines[i.index++]);r.numberOfLights=s[0],r.lumensPerLamp=s[1],r.candelaMultiplier=s[2],r.numberOfVerticalAngles=s[3],r.numberOfHorizontalAngles=s[4],r.photometricType=s[5],r.unitsType=s[6],r.width=s[7],r.length=s[8],r.height=s[9];let a=bP(i.lines[i.index++]);r.ballastFactor=a[0],r.fileGenerationType=a[1],r.inputWatts=a[2];for(let m=0;m0)for(let m=0;m=u)&&(_%=u*2,_>u&&(_=u*2-_)),d[p+_*l]=mce(r,p,_)}return{width:c/2,height:1,data:d}}var TG=I(()=>{jn()});var AG={};Fe(AG,{_IESTextureLoader:()=>MP});var MP,xG=I(()=>{TG();MP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".ies not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=SG(r);i(s.width,s.height,!!t.useMipMaps,!1,()=>{let a=t.getEngine();t.type=1,t.format=6,t._gammaSpace=!1,a._uploadDataToTextureDirectly(t,s.data)})}}});var RG={};Fe(RG,{_DDSTextureLoader:()=>IP});var IP,bG=I(()=>{Ng();yP();IP=class{constructor(){this.supportCascades=!0}loadCubeData(e,t,i,r){let s=t.getEngine(),a,o=!1,l=1e3;if(Array.isArray(e))for(let c=0;c1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),Io.UploadDDSLevels(s,t,f,a,o,6,-1,c),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t):l=a.mipmapCount-1}else{let c=e;a=Io.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new gl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),Io.UploadDDSLevels(s,t,c,a,o,6),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t,!1):l=a.mipmapCount-1}s._setCubeMapTextureParams(t,o,l),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r({isDDS:!0,width:t.width,info:a,data:e,texture:t})}loadData(e,t,i){let r=Io.GetDDSInfo(e),s=(r.isRGB||r.isLuminance||r.mipmapCount>1)&&t.generateMipMaps&&Math.max(r.width,r.height)>>r.mipmapCount-1===1;i(r.width,r.height,s,r.isFourCC,()=>{Io.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function MG(){let n={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC4:4,cTFBC5:5,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFATC_RGB:11,cTFATC_RGBA_INTERPOLATED_ALPHA:12,cTFRGBA32:13,cTFRGB565:14,cTFBGR565:15,cTFRGBA4444:16,cTFFXT1_RGB:17,cTFPVRTC2_4_RGB:18,cTFPVRTC2_4_RGBA:19,cTFETC2_EAC_R11:20,cTFETC2_EAC_RG11:21},e=null;onmessage=a=>{if(a.data.action==="init"){if(a.data.url)try{importScripts(a.data.url)}catch(o){postMessage({action:"error",error:o})}e||(e=BASIS({wasmBinary:a.data.wasmBinary})),e!==null&&e.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(a.data.action==="transcode"){let o=a.data.config,l=a.data.imageData,c=new BASIS.BasisFile(l),f=i(c),d=a.data.ignoreSupportedFormats?null:t(a.data.config,f),h=!1;d===null&&(h=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let u=!0;c.startTranscoding()||(u=!1);let m=[];for(let _=0;_>2&3],d[T++]=f[v>>4&3],d[T]=f[v>>6&3]}}return d}}async function IG(n,e,t){return await new Promise((i,r)=>{let s=a=>{a.data.action==="init"?(n.removeEventListener("message",s),i(n)):a.data.action==="error"&&r(a.data.error||"error initializing worker")};n.addEventListener("message",s),n.postMessage({action:"init",url:t?pe.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var yG=I(()=>{wi()});var pc,Ff,pce,CP,xh,_ce,gce,vce,Cx,yx,Px,PP,CG=I(()=>{wi();Xr();Ws();yG();(function(n){n[n.cTFETC1=0]="cTFETC1",n[n.cTFETC2=1]="cTFETC2",n[n.cTFBC1=2]="cTFBC1",n[n.cTFBC3=3]="cTFBC3",n[n.cTFBC4=4]="cTFBC4",n[n.cTFBC5=5]="cTFBC5",n[n.cTFBC7=6]="cTFBC7",n[n.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",n[n.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",n[n.cTFASTC_4x4=10]="cTFASTC_4x4",n[n.cTFATC_RGB=11]="cTFATC_RGB",n[n.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",n[n.cTFRGBA32=13]="cTFRGBA32",n[n.cTFRGB565=14]="cTFRGB565",n[n.cTFBGR565=15]="cTFBGR565",n[n.cTFRGBA4444=16]="cTFRGBA4444",n[n.cTFFXT1_RGB=17]="cTFFXT1_RGB",n[n.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",n[n.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",n[n.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",n[n.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(pc||(pc={}));Ff={JSModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},pce=(n,e)=>{let t;switch(n){case pc.cTFETC1:t=36196;break;case pc.cTFBC1:t=33776;break;case pc.cTFBC4:t=33779;break;case pc.cTFASTC_4x4:t=37808;break;case pc.cTFETC2:t=37496;break;case pc.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},CP=null,xh=null,_ce=0,gce=!1,vce=async()=>(CP||(CP=new Promise((n,e)=>{xh?n(xh):pe.LoadFileAsync(pe.GetBabylonScriptURL(Ff.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${MG})()`],{type:"application/javascript"}));xh=new Worker(i),IG(xh,t,Ff.JSModuleURL).then(n,e)}).catch(e)})),await CP),Cx=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{vce().then(()=>{let s=_ce++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(xh.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};xh.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),xh.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:gce},[o.buffer])},s=>{r(s)})})},yx=(n,e)=>{var i,r;let t=(i=e._gl)==null?void 0:i.TEXTURE_2D;n.isCube&&(t=(r=e._gl)==null?void 0:r.TEXTURE_CUBE_MAP),e._bindTextureDirectly(t,n,!0)},Px=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),yx(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,yx(n,t),t._uploadDataToTextureDirectly(n,new Uint16Array(r.transcodedPixels.buffer),i,0,4,!0);else{n.width=r.width,n.height=r.height,n.generateMipMaps=e.fileInfo.images[i].levels.length>1;let s=PP.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,yx(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;oDP});var DP,DG=I(()=>{CG();wi();DP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!a.etc1,s3tc:!!a.s3tc,pvrtc:!!a.pvrtc,etc2:!!a.etc2,astc:!!a.astc,bc7:!!a.bptc}};Cx(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;Px(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,s&&s(l)})}loadData(e,t,i){let r=t.getEngine().getCaps(),s={supportedCompressionFormats:{etc1:!!r.etc1,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,astc:!!r.astc,bc7:!!r.bptc}};Cx(e,s).then(a=>{let o=a.fileInfo.images[0].levels[0],l=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;i(o.width,o.height,l,a.format!==-1,()=>{Px(t,a)})}).catch(a=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),pe.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var Yg,LG=I(()=>{Yg=class{constructor(){this._count=0,this._data={}}copyFrom(e){this.clear(),e.forEach((t,i)=>this.add(t,i))}get(e){let t=this._data[e];if(t!==void 0)return t}getOrAddWithFactory(e,t){let i=this.get(e);return i!==void 0||(i=t(e),i&&this.add(e,i)),i}getOrAdd(e,t){let i=this.get(e);return i!==void 0?i:(this.add(e,t),t)}contains(e){return this._data[e]!==void 0}add(e,t){return this._data[e]!==void 0?!1:(this._data[e]=t,++this._count,!0)}set(e,t){return this._data[e]===void 0?!1:(this._data[e]=t,!0)}getAndRemove(e){let t=this.get(e);return t!==void 0?(delete this._data[e],--this._count,t):null}remove(e){return this.contains(e)?(delete this._data[e],--this._count,!0):!1}clear(){this._data={},this._count=0}get count(){return this._count}forEach(e){for(let t in this._data){let i=this._data[t];e(t,i)}}first(e){for(let t in this._data){let i=this._data[t],r=e(t,i);if(r)return r}return null}}});function Dx(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var LP=I(()=>{});var dn,OG=I(()=>{Wt();kt();zt();Dr();LP();dn=class n{constructor(){this._dirty=!0,this._tempColor=new ft(0,0,0,0),this._globalCurve=new ft(0,0,0,0),this._highlightsCurve=new ft(0,0,0,0),this._midtonesCurve=new ft(0,0,0,0),this._shadowsCurve=new ft(0,0,0,0),this._positiveCurve=new ft(0,0,0,0),this._negativeCurve=new ft(0,0,0,0),this._globalHue=30,this._globalDensity=0,this._globalSaturation=0,this._globalExposure=0,this._highlightsHue=30,this._highlightsDensity=0,this._highlightsSaturation=0,this._highlightsExposure=0,this._midtonesHue=30,this._midtonesDensity=0,this._midtonesSaturation=0,this._midtonesExposure=0,this._shadowsHue=30,this._shadowsDensity=0,this._shadowsSaturation=0,this._shadowsExposure=0}get globalHue(){return this._globalHue}set globalHue(e){this._globalHue=e,this._dirty=!0}get globalDensity(){return this._globalDensity}set globalDensity(e){this._globalDensity=e,this._dirty=!0}get globalSaturation(){return this._globalSaturation}set globalSaturation(e){this._globalSaturation=e,this._dirty=!0}get globalExposure(){return this._globalExposure}set globalExposure(e){this._globalExposure=e,this._dirty=!0}get highlightsHue(){return this._highlightsHue}set highlightsHue(e){this._highlightsHue=e,this._dirty=!0}get highlightsDensity(){return this._highlightsDensity}set highlightsDensity(e){this._highlightsDensity=e,this._dirty=!0}get highlightsSaturation(){return this._highlightsSaturation}set highlightsSaturation(e){this._highlightsSaturation=e,this._dirty=!0}get highlightsExposure(){return this._highlightsExposure}set highlightsExposure(e){this._highlightsExposure=e,this._dirty=!0}get midtonesHue(){return this._midtonesHue}set midtonesHue(e){this._midtonesHue=e,this._dirty=!0}get midtonesDensity(){return this._midtonesDensity}set midtonesDensity(e){this._midtonesDensity=e,this._dirty=!0}get midtonesSaturation(){return this._midtonesSaturation}set midtonesSaturation(e){this._midtonesSaturation=e,this._dirty=!0}get midtonesExposure(){return this._midtonesExposure}set midtonesExposure(e){this._midtonesExposure=e,this._dirty=!0}get shadowsHue(){return this._shadowsHue}set shadowsHue(e){this._shadowsHue=e,this._dirty=!0}get shadowsDensity(){return this._shadowsDensity}set shadowsDensity(e){this._shadowsDensity=e,this._dirty=!0}get shadowsSaturation(){return this._shadowsSaturation}set shadowsSaturation(e){this._shadowsSaturation=e,this._dirty=!0}get shadowsExposure(){return this._shadowsExposure}set shadowsExposure(e){this._shadowsExposure=e,this._dirty=!0}getClassName(){return"ColorCurves"}static Bind(e,t,i="vCameraColorCurvePositive",r="vCameraColorCurveNeutral",s="vCameraColorCurveNegative"){e._dirty&&(e._dirty=!1,e._getColorGradingDataToRef(e._globalHue,e._globalDensity,e._globalSaturation,e._globalExposure,e._globalCurve),e._getColorGradingDataToRef(e._highlightsHue,e._highlightsDensity,e._highlightsSaturation,e._highlightsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._highlightsCurve),e._getColorGradingDataToRef(e._midtonesHue,e._midtonesDensity,e._midtonesSaturation,e._midtonesExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._midtonesCurve),e._getColorGradingDataToRef(e._shadowsHue,e._shadowsDensity,e._shadowsSaturation,e._shadowsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._shadowsCurve),e._highlightsCurve.subtractToRef(e._midtonesCurve,e._positiveCurve),e._midtonesCurve.subtractToRef(e._shadowsCurve,e._negativeCurve)),t&&(t.setFloat4(i,e._positiveCurve.r,e._positiveCurve.g,e._positiveCurve.b,e._positiveCurve.a),t.setFloat4(r,e._midtonesCurve.r,e._midtonesCurve.g,e._midtonesCurve.b,e._midtonesCurve.a),t.setFloat4(s,e._negativeCurve.r,e._negativeCurve.g,e._negativeCurve.b,e._negativeCurve.a))}_getColorGradingDataToRef(e,t,i,r,s){e!=null&&(e=n._Clamp(e,0,360),t=n._Clamp(t,-100,100),i=n._Clamp(i,-100,100),r=n._Clamp(r,-100,100),t=n._ApplyColorGradingSliderNonlinear(t),t*=.5,r=n._ApplyColorGradingSliderNonlinear(r),t<0&&(t*=-1,e=(e+180)%360),n._FromHSBToRef(e,t,50+.25*r,s),s.scaleToRef(2,s),s.a=1+.01*i)}static _ApplyColorGradingSliderNonlinear(e){e/=100;let t=Math.abs(e);return t=Math.pow(t,2),e<0&&(t*=-1),t*=100,t}static _FromHSBToRef(e,t,i,r){let s=n._Clamp(e,0,360),a=n._Clamp(t/100,0,1),o=n._Clamp(i/100,0,1);if(a===0)r.r=o,r.g=o,r.b=o;else{s/=60;let l=Math.floor(s),c=s-l,f=o*(1-a),d=o*(1-a*c),h=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=h,r.b=f;break;case 1:r.r=d,r.g=o,r.b=f;break;case 2:r.r=f,r.g=o,r.b=h;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=h,r.g=f,r.b=o;break;default:r.r=o,r.g=f,r.b=d;break}}r.a=1}static _Clamp(e,t,i){return Math.min(Math.max(e,t),i)}clone(){return nt.Clone(()=>new n,this)}serialize(){return nt.Serialize(this)}static Parse(e){return nt.Parse(()=>new n,e,null,null)}};dn.PrepareUniforms=Dx;P([F()],dn.prototype,"_globalHue",void 0);P([F()],dn.prototype,"_globalDensity",void 0);P([F()],dn.prototype,"_globalSaturation",void 0);P([F()],dn.prototype,"_globalExposure",void 0);P([F()],dn.prototype,"_highlightsHue",void 0);P([F()],dn.prototype,"_highlightsDensity",void 0);P([F()],dn.prototype,"_highlightsSaturation",void 0);P([F()],dn.prototype,"_highlightsExposure",void 0);P([F()],dn.prototype,"_midtonesHue",void 0);P([F()],dn.prototype,"_midtonesDensity",void 0);P([F()],dn.prototype,"_midtonesSaturation",void 0);P([F()],dn.prototype,"_midtonesExposure",void 0);nt._ColorCurvesParser=dn.Parse});function NG(n,e){e.EXPOSURE&&n.push("exposureLinear"),e.CONTRAST&&n.push("contrast"),e.COLORGRADING&&n.push("colorTransformSettings"),(e.VIGNETTE||e.DITHER)&&n.push("vInverseScreenSize"),e.VIGNETTE&&(n.push("vignetteSettings1"),n.push("vignetteSettings2")),e.COLORCURVES&&Dx(n),e.DITHER&&n.push("ditherIntensity")}function wG(n,e){e.COLORGRADING&&n.push("txColorTransform")}var FG=I(()=>{LP()});var Ht,Kg=I(()=>{Wt();kt();mi();zt();OG();Eo();Dr();FG();$i();Ht=class n{constructor(){this.colorCurves=new dn,this._colorCurvesEnabled=!1,this._colorGradingEnabled=!1,this._colorGradingWithGreenDepth=!0,this._colorGradingBGR=!0,this._exposure=1,this._toneMappingEnabled=!1,this._toneMappingType=n.TONEMAPPING_STANDARD,this._contrast=1,this.vignetteStretch=0,this.vignetteCenterX=0,this.vignetteCenterY=0,this.vignetteWeight=1.5,this.vignetteColor=new ft(0,0,0,0),this.vignetteCameraFov=.5,this._vignetteBlendMode=n.VIGNETTEMODE_MULTIPLY,this._vignetteEnabled=!1,this._ditheringEnabled=!1,this._ditheringIntensity=1/255,this._skipFinalColorClamp=!1,this._applyByPostProcess=!1,this._isEnabled=!0,this.outputTextureWidth=0,this.outputTextureHeight=0,this.onUpdateParameters=new te}get colorCurvesEnabled(){return this._colorCurvesEnabled}set colorCurvesEnabled(e){this._colorCurvesEnabled!==e&&(this._colorCurvesEnabled=e,this._updateParameters())}get colorGradingTexture(){return this._colorGradingTexture}set colorGradingTexture(e){this._colorGradingTexture!==e&&(this._colorGradingTexture=e,this._updateParameters())}get colorGradingEnabled(){return this._colorGradingEnabled}set colorGradingEnabled(e){this._colorGradingEnabled!==e&&(this._colorGradingEnabled=e,this._updateParameters())}get colorGradingWithGreenDepth(){return this._colorGradingWithGreenDepth}set colorGradingWithGreenDepth(e){this._colorGradingWithGreenDepth!==e&&(this._colorGradingWithGreenDepth=e,this._updateParameters())}get colorGradingBGR(){return this._colorGradingBGR}set colorGradingBGR(e){this._colorGradingBGR!==e&&(this._colorGradingBGR=e,this._updateParameters())}get exposure(){return this._exposure}set exposure(e){this._exposure!==e&&(this._exposure=e,this._updateParameters())}get toneMappingEnabled(){return this._toneMappingEnabled}set toneMappingEnabled(e){this._toneMappingEnabled!==e&&(this._toneMappingEnabled=e,this._updateParameters())}get toneMappingType(){return this._toneMappingType}set toneMappingType(e){this._toneMappingType!==e&&(this._toneMappingType=e,this._updateParameters())}get contrast(){return this._contrast}set contrast(e){this._contrast!==e&&(this._contrast=e,this._updateParameters())}get vignetteCentreY(){return this.vignetteCenterY}set vignetteCentreY(e){this.vignetteCenterY=e}get vignetteCentreX(){return this.vignetteCenterX}set vignetteCentreX(e){this.vignetteCenterX=e}get vignetteBlendMode(){return this._vignetteBlendMode}set vignetteBlendMode(e){this._vignetteBlendMode!==e&&(this._vignetteBlendMode=e,this._updateParameters())}get vignetteEnabled(){return this._vignetteEnabled}set vignetteEnabled(e){this._vignetteEnabled!==e&&(this._vignetteEnabled=e,this._updateParameters())}get ditheringEnabled(){return this._ditheringEnabled}set ditheringEnabled(e){this._ditheringEnabled!==e&&(this._ditheringEnabled=e,this._updateParameters())}get ditheringIntensity(){return this._ditheringIntensity}set ditheringIntensity(e){this._ditheringIntensity!==e&&(this._ditheringIntensity=e,this._updateParameters())}get skipFinalColorClamp(){return this._skipFinalColorClamp}set skipFinalColorClamp(e){this._skipFinalColorClamp!==e&&(this._skipFinalColorClamp=e,this._updateParameters())}get applyByPostProcess(){return this._applyByPostProcess}set applyByPostProcess(e){this._applyByPostProcess!==e&&(this._applyByPostProcess=e,this._updateParameters())}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this._updateParameters())}_updateParameters(){this.onUpdateParameters.notifyObservers(this)}getClassName(){return"ImageProcessingConfiguration"}prepareDefines(e,t=!1){if(t!==this.applyByPostProcess||!this._isEnabled){e.VIGNETTE=!1,e.TONEMAPPING=0,e.CONTRAST=!1,e.EXPOSURE=!1,e.COLORCURVES=!1,e.COLORGRADING=!1,e.COLORGRADING3D=!1,e.DITHER=!1,e.IMAGEPROCESSING=!1,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess&&this._isEnabled;return}if(e.VIGNETTE=this.vignetteEnabled,e.VIGNETTEBLENDMODEMULTIPLY=this.vignetteBlendMode===n._VIGNETTEMODE_MULTIPLY,e.VIGNETTEBLENDMODEOPAQUE=!e.VIGNETTEBLENDMODEMULTIPLY,!this._toneMappingEnabled)e.TONEMAPPING=0;else switch(this._toneMappingType){case n.TONEMAPPING_KHR_PBR_NEUTRAL:e.TONEMAPPING=3;break;case n.TONEMAPPING_ACES:e.TONEMAPPING=2;break;default:e.TONEMAPPING=1;break}e.CONTRAST=this.contrast!==1,e.EXPOSURE=this.exposure!==1,e.COLORCURVES=this.colorCurvesEnabled&&!!this.colorCurves,e.COLORGRADING=this.colorGradingEnabled&&!!this.colorGradingTexture,e.COLORGRADING?e.COLORGRADING3D=this.colorGradingTexture.is3D:e.COLORGRADING3D=!1,e.SAMPLER3DGREENDEPTH=this.colorGradingWithGreenDepth,e.SAMPLER3DBGRMAP=this.colorGradingBGR,e.DITHER=this._ditheringEnabled,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSING=e.VIGNETTE||!!e.TONEMAPPING||e.CONTRAST||e.EXPOSURE||e.COLORCURVES||e.COLORGRADING||e.DITHER}isReady(){return!this.colorGradingEnabled||!this.colorGradingTexture||this.colorGradingTexture.isReady()}bind(e,t){if(this._colorCurvesEnabled&&this.colorCurves&&dn.Bind(this.colorCurves,e),this._vignetteEnabled||this._ditheringEnabled){let i=1/(this.outputTextureWidth||e.getEngine().getRenderWidth()),r=1/(this.outputTextureHeight||e.getEngine().getRenderHeight());if(e.setFloat2("vInverseScreenSize",i,r),this._ditheringEnabled&&e.setFloat("ditherIntensity",.5*this._ditheringIntensity),this._vignetteEnabled){let s=t!=null?t:r/i,a=Math.tan(this.vignetteCameraFov*.5),o=a*s,l=Math.sqrt(o*a);o=Pg(o,l,this.vignetteStretch),a=Pg(a,l,this.vignetteStretch),e.setFloat4("vignetteSettings1",o,a,-o*this.vignetteCenterX,-a*this.vignetteCenterY);let c=-2*this.vignetteWeight;e.setFloat4("vignetteSettings2",this.vignetteColor.r,this.vignetteColor.g,this.vignetteColor.b,c)}}if(e.setFloat("exposureLinear",this.exposure),e.setFloat("contrast",this.contrast),this.colorGradingTexture){e.setTexture("txColorTransform",this.colorGradingTexture);let i=this.colorGradingTexture.getSize().height;e.setFloat4("colorTransformSettings",(i-1)/i,.5/i,i,this.colorGradingTexture.level)}}clone(){return nt.Clone(()=>new n,this)}serialize(){return nt.Serialize(this)}static Parse(e){let t=nt.Parse(()=>new n,e,null,null);return e.vignetteCentreX!==void 0&&(t.vignetteCenterX=e.vignetteCentreX),e.vignetteCentreY!==void 0&&(t.vignetteCenterY=e.vignetteCentreY),t}static get VIGNETTEMODE_MULTIPLY(){return this._VIGNETTEMODE_MULTIPLY}static get VIGNETTEMODE_OPAQUE(){return this._VIGNETTEMODE_OPAQUE}};Ht.TONEMAPPING_STANDARD=0;Ht.TONEMAPPING_ACES=1;Ht.TONEMAPPING_KHR_PBR_NEUTRAL=2;Ht.PrepareUniforms=NG;Ht.PrepareSamplers=wG;Ht._VIGNETTEMODE_MULTIPLY=0;Ht._VIGNETTEMODE_OPAQUE=1;P([LV()],Ht.prototype,"colorCurves",void 0);P([F()],Ht.prototype,"_colorCurvesEnabled",void 0);P([Gt("colorGradingTexture")],Ht.prototype,"_colorGradingTexture",void 0);P([F()],Ht.prototype,"_colorGradingEnabled",void 0);P([F()],Ht.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],Ht.prototype,"_colorGradingBGR",void 0);P([F()],Ht.prototype,"_exposure",void 0);P([F()],Ht.prototype,"_toneMappingEnabled",void 0);P([F()],Ht.prototype,"_toneMappingType",void 0);P([F()],Ht.prototype,"_contrast",void 0);P([F()],Ht.prototype,"vignetteStretch",void 0);P([F()],Ht.prototype,"vignetteCenterX",void 0);P([F()],Ht.prototype,"vignetteCenterY",void 0);P([F()],Ht.prototype,"vignetteWeight",void 0);P([Bm()],Ht.prototype,"vignetteColor",void 0);P([F()],Ht.prototype,"vignetteCameraFov",void 0);P([F()],Ht.prototype,"_vignetteBlendMode",void 0);P([F()],Ht.prototype,"_vignetteEnabled",void 0);P([F()],Ht.prototype,"_ditheringEnabled",void 0);P([F()],Ht.prototype,"_ditheringIntensity",void 0);P([F()],Ht.prototype,"_skipFinalColorClamp",void 0);P([F()],Ht.prototype,"_applyByPostProcess",void 0);P([F()],Ht.prototype,"_isEnabled",void 0);P([F()],Ht.prototype,"outputTextureWidth",void 0);P([F()],Ht.prototype,"outputTextureHeight",void 0);nt._ImageProcessingConfigurationParser=Ht.Parse;Ut("BABYLON.ImageProcessingConfiguration",Ht)});var Ts,jg=I(()=>{ke();Zi();Ts=class{constructor(){this.hit=!1,this.distance=0,this.pickedPoint=null,this.pickedMesh=null,this.bu=0,this.bv=0,this.faceId=-1,this.subMeshFaceId=-1,this.subMeshId=0,this.pickedSprite=null,this.thinInstanceIndex=-1,this.ray=null,this.originMesh=null,this.aimTransform=null,this.gripTransform=null}getNormal(e=!1,t=!0){if(!this.pickedMesh||t&&!this.pickedMesh.isVerticesDataPresent(L.NormalKind))return null;let i=this.pickedMesh.getIndices();(i==null?void 0:i.length)===0&&(i=null);let r,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2];if(t){let c=this.pickedMesh.getVerticesData(L.NormalKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]);f=f.scale(this.bu),d=d.scale(this.bv),h=h.scale(1-this.bu-this.bv),r=new b(f.x+d.x+h.x,f.y+d.y+h.y,f.z+d.z+h.z)}else{let c=this.pickedMesh.getVerticesData(L.PositionKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]),u=f.subtract(d),m=h.subtract(d);r=b.Cross(u,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let h=c._thinInstanceDataStorage.matrixData,u=this.thinInstanceIndex<<4;if(h&&h.length>u){let m=$.Matrix[0];Z.FromArrayToRef(h,u,m),b.TransformNormalToRef(f,m,f)}}let d=c.getWorldMatrix();c.nonUniformScaling&&($.Matrix[0].copyFrom(d),d=$.Matrix[0],d.setTranslationFromFloats(0,0,0),d.invert(),d.transposeToRef($.Matrix[1]),d=$.Matrix[1]),b.TransformNormalToRef(f,d,f)};if(e&&l(this.pickedMesh,r),this.ray){let c=$.Vector3[0].copyFrom(r);e||l(this.pickedMesh,c),b.Dot(c,this.ray.direction)>0&&r.negateInPlace()}return r.normalize(),r}getTextureCoordinates(e=L.UVKind){if(!this.pickedMesh||!this.pickedMesh.isVerticesDataPresent(e))return null;let t=this.pickedMesh.getIndices();if(!t)return null;let i=this.pickedMesh.getVerticesData(e);if(!i)return null;let r=we.FromArray(i,t[this.faceId*3]*2),s=we.FromArray(i,t[this.faceId*3+1]*2),a=we.FromArray(i,t[this.faceId*3+2]*2);return r=r.scale(this.bu),s=s.scale(this.bv),a=a.scale(1-this.bu-this.bv),new we(r.x+s.x+a.x,r.y+s.y+a.y)}}});var hn,OP=I(()=>{hn=class n{constructor(e,t,i,r,s,a){this.source=e,this.pointerX=t,this.pointerY=i,this.meshUnderPointer=r,this.sourceEvent=s,this.additionalData=a}static CreateNew(e,t,i){let r=e.getScene();return new n(e,r.pointerX,r.pointerY,r.meshUnderPointer||e,t,i)}static CreateNewFromSprite(e,t,i,r){return new n(e,t.pointerX,t.pointerY,t.meshUnderPointer,i,r)}static CreateNewFromScene(e,t){return new n(null,e.pointerX,e.pointerY,e.meshUnderPointer,t)}static CreateNewFromPrimitive(e,t,i,r){return new n(e,t.x,t.y,null,i,r)}}});function Zg(n,e,t){let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]-=n.x,i[13]-=n.y,i[14]-=n.z,t.markAsUpdated(),t}function GG(n,e,t){return Lg(e,Va),Zg(n,Va,Ga),Lg(Ga,t),t}function Lx(n,e,t){if(!ka.eyeAtCamera)return GG(n,e,t);let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]=0,i[13]=0,i[14]=0,t.markAsUpdated(),t}function NP(n,e,t,i){return hh(Lx(n,e,i),t,i),i}function kG(n,e,t,i,r){for(let s=0;s{lh();ke();ZC();Of();Ua=new Z,Va=new Z,Ga=new Z,ka={getScene:()=>{},eyeAtCamera:!0};qg=Sr,wP=hr,WG=qg.prototype._updateMatrixForUniform,HG=hr.prototype.setMatrix});var it,mr,Wm=I(()=>{it=class{};it.NAME_EFFECTLAYER="EffectLayer";it.NAME_LAYER="Layer";it.NAME_LENSFLARESYSTEM="LensFlareSystem";it.NAME_BOUNDINGBOXRENDERER="BoundingBoxRenderer";it.NAME_PARTICLESYSTEM="ParticleSystem";it.NAME_GAMEPAD="Gamepad";it.NAME_SIMPLIFICATIONQUEUE="SimplificationQueue";it.NAME_GEOMETRYBUFFERRENDERER="GeometryBufferRenderer";it.NAME_PREPASSRENDERER="PrePassRenderer";it.NAME_DEPTHRENDERER="DepthRenderer";it.NAME_DEPTHPEELINGRENDERER="DepthPeelingRenderer";it.NAME_POSTPROCESSRENDERPIPELINEMANAGER="PostProcessRenderPipelineManager";it.NAME_SPRITE="Sprite";it.NAME_SUBSURFACE="SubSurface";it.NAME_OUTLINERENDERER="Outline";it.NAME_PROCEDURALTEXTURE="ProceduralTexture";it.NAME_SHADOWGENERATOR="ShadowGenerator";it.NAME_OCTREE="Octree";it.NAME_PHYSICSENGINE="PhysicsEngine";it.NAME_AUDIO="Audio";it.NAME_FLUIDRENDERER="FluidRenderer";it.NAME_IBLCDFGENERATOR="iblCDFGenerator";it.NAME_CLUSTEREDLIGHTING="ClusteredLighting";it.STEP_ISREADYFORMESH_EFFECTLAYER=0;it.STEP_ISREADYFORMESH_DEPTHRENDERER=1;it.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER=0;it.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER=0;it.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER=0;it.STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER=1;it.STEP_BEFORECAMERADRAW_PREPASS=0;it.STEP_BEFORECAMERADRAW_EFFECTLAYER=1;it.STEP_BEFORECAMERADRAW_LAYER=2;it.STEP_BEFORERENDERTARGETDRAW_PREPASS=0;it.STEP_BEFORERENDERTARGETDRAW_LAYER=1;it.STEP_BEFORERENDERINGMESH_PREPASS=0;it.STEP_BEFORERENDERINGMESH_OUTLINE=1;it.STEP_AFTERRENDERINGMESH_PREPASS=0;it.STEP_AFTERRENDERINGMESH_OUTLINE=1;it.STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW=0;it.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER=1;it.STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE=0;it.STEP_BEFORECLEAR_PROCEDURALTEXTURE=0;it.STEP_BEFORECLEAR_PREPASS=1;it.STEP_BEFORERENDERTARGETCLEAR_PREPASS=0;it.STEP_AFTERRENDERTARGETDRAW_PREPASS=0;it.STEP_AFTERRENDERTARGETDRAW_LAYER=1;it.STEP_AFTERCAMERADRAW_PREPASS=0;it.STEP_AFTERCAMERADRAW_EFFECTLAYER=1;it.STEP_AFTERCAMERADRAW_LENSFLARESYSTEM=2;it.STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW=3;it.STEP_AFTERCAMERADRAW_LAYER=4;it.STEP_AFTERCAMERADRAW_FLUIDRENDERER=5;it.STEP_AFTERCAMERAPOSTPROCESS_LAYER=0;it.STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER=0;it.STEP_AFTERRENDER_AUDIO=0;it.STEP_GATHERRENDERTARGETS_DEPTHRENDERER=0;it.STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER=1;it.STEP_GATHERRENDERTARGETS_SHADOWGENERATOR=2;it.STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER=3;it.STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER=0;it.STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER=1;it.STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING=2;it.STEP_POINTERMOVE_SPRITE=0;it.STEP_POINTERDOWN_SPRITE=0;it.STEP_POINTERUP_SPRITE=0;mr=class n extends Array{constructor(e){super(...e)}static Create(){return Object.create(n.prototype)}registerStep(e,t,i){let r=0,s;for(;r{ke();at=class{};at.POINTERDOWN=1;at.POINTERUP=2;at.POINTERMOVE=4;at.POINTERWHEEL=8;at.POINTERPICK=16;at.POINTERTAP=32;at.POINTERDOUBLETAP=64;Ox=class{constructor(e,t){this.type=e,this.event=t}},Nx=class extends Ox{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new we(i,r)}},Wa=class extends Ox{get pickInfo(){return this._pickInfo||this._generatePickInfo(),this._pickInfo}constructor(e,t,i,r=null){super(e,t),this._pickInfo=i,this._inputManager=r}_generatePickInfo(){this._inputManager&&(this._pickInfo=this._inputManager._pickMove(this.event),this._inputManager._setRayOnPointerInfo(this._pickInfo,this.event),this._inputManager=null)}}});var _c,YG=I(()=>{_c=class n{constructor(){this.hoverCursor="",this.actions=[],this.isRecursive=!1,this.disposeWhenUnowned=!0}static get HasTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e))return!0;return!1}static get HasPickTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e)){let t=parseInt(e);if(t>=1&&t<=7)return!0}return!1}static HasSpecificTrigger(e){for(let t in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,t)&&parseInt(t)===e)return!0;return!1}};_c.Triggers={}});var Co,Hm,$g,wx=I(()=>{Co=class{};Co.KEYDOWN=1;Co.KEYUP=2;Hm=class{constructor(e,t){this.type=e,this.event=t}},$g=class extends Hm{get skipOnPointerObservable(){return this.skipOnKeyboardObservable}set skipOnPointerObservable(e){this.skipOnKeyboardObservable=e}constructor(e,t){super(e,t),this.type=e,this.event=t,this.skipOnKeyboardObservable=!1}}});var $e,Tt,KG,jG,ZG,qG,QG,Rh=I(()=>{(function(n){n[n.Generic=0]="Generic",n[n.Keyboard=1]="Keyboard",n[n.Mouse=2]="Mouse",n[n.Touch=3]="Touch",n[n.DualShock=4]="DualShock",n[n.Xbox=5]="Xbox",n[n.Switch=6]="Switch",n[n.DualSense=7]="DualSense"})($e||($e={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.Move=12]="Move"})(Tt||(Tt={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.DeltaHorizontal=10]="DeltaHorizontal",n[n.DeltaVertical=11]="DeltaVertical"})(KG||(KG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(jG||(jG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Create=8]="Create",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(ZG||(ZG={}));(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.LT=6]="LT",n[n.RT=7]="RT",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.LStickXAxis=17]="LStickXAxis",n[n.LStickYAxis=18]="LStickYAxis",n[n.RStickXAxis=19]="RStickXAxis",n[n.RStickYAxis=20]="RStickYAxis"})(qG||(qG={}));(function(n){n[n.B=0]="B",n[n.A=1]="A",n[n.Y=2]="Y",n[n.X=3]="X",n[n.L=4]="L",n[n.R=5]="R",n[n.ZL=6]="ZL",n[n.ZR=7]="ZR",n[n.Minus=8]="Minus",n[n.Plus=9]="Plus",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.Capture=17]="Capture",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(QG||(QG={}))});var $G,Po,Fx=I(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})($G||($G={}));Po=class{};Po.DOM_DELTA_PIXEL=0;Po.DOM_DELTA_LINE=1;Po.DOM_DELTA_PAGE=2});var Do,BP=I(()=>{Fx();Rh();Do=class{static CreateDeviceEvent(e,t,i,r,s,a,o){switch(e){case $e.Keyboard:return this._CreateKeyboardEvent(i,r,s,a);case $e.Mouse:if(i===Tt.MouseWheelX||i===Tt.MouseWheelY||i===Tt.MouseWheelZ)return this._CreateWheelEvent(e,t,i,r,s,a);case $e.Touch:return this._CreatePointerEvent(e,t,i,r,s,a,o);default:throw`Unable to generate event for device ${$e[e]}`}}static _CreatePointerEvent(e,t,i,r,s,a,o){let l=this._CreateMouseEvent(e,t,i,r,s,a);e===$e.Mouse?(l.deviceType=$e.Mouse,l.pointerId=1,l.pointerType="mouse"):(l.deviceType=$e.Touch,l.pointerId=o!=null?o:t,l.pointerType="touch");let c=0;return c+=s.pollInput(e,t,Tt.LeftClick),c+=s.pollInput(e,t,Tt.RightClick)*2,c+=s.pollInput(e,t,Tt.MiddleClick)*4,l.buttons=c,i===Tt.Move?l.type="pointermove":i>=Tt.LeftClick&&i<=Tt.RightClick&&(l.type=r===1?"pointerdown":"pointerup",l.button=i-2),l}static _CreateWheelEvent(e,t,i,r,s,a){let o=this._CreateMouseEvent(e,t,i,r,s,a);switch(o.pointerId=1,o.type="wheel",o.deltaMode=Po.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case Tt.MouseWheelX:o.deltaX=r;break;case Tt.MouseWheelY:o.deltaY=r;break;case Tt.MouseWheelZ:o.deltaZ=r;break}return o}static _CreateMouseEvent(e,t,i,r,s,a){let o=this._CreateEvent(a),l=s.pollInput(e,t,Tt.Horizontal),c=s.pollInput(e,t,Tt.Vertical);return a?(o.movementX=0,o.movementY=0,o.offsetX=o.movementX-a.getBoundingClientRect().x,o.offsetY=o.movementY-a.getBoundingClientRect().y):(o.movementX=s.pollInput(e,t,10),o.movementY=s.pollInput(e,t,11),o.offsetX=0,o.offsetY=0),this._CheckNonCharacterKeys(o,s),o.clientX=l,o.clientY=c,o.x=l,o.y=c,o.deviceType=e,o.deviceSlot=t,o.inputIndex=i,o}static _CreateKeyboardEvent(e,t,i,r){let s=this._CreateEvent(r);return this._CheckNonCharacterKeys(s,i),s.deviceType=$e.Keyboard,s.deviceSlot=0,s.inputIndex=e,s.type=t===1?"keydown":"keyup",s.key=String.fromCharCode(e),s.keyCode=e,s}static _CheckNonCharacterKeys(e,t){let i=t.isDeviceAvailable($e.Keyboard),r=i&&t.pollInput($e.Keyboard,0,18)===1,s=i&&t.pollInput($e.Keyboard,0,17)===1,a=i&&(t.pollInput($e.Keyboard,0,91)===1||t.pollInput($e.Keyboard,0,92)===1||t.pollInput($e.Keyboard,0,93)===1),o=i&&t.pollInput($e.Keyboard,0,16)===1;e.altKey=r,e.ctrlKey=s,e.metaKey=a,e.shiftKey=o}static _CreateEvent(e){let t={};return t.preventDefault=()=>{},t.target=e,t}}});var Bx,JG=I(()=>{BP();Rh();Bx=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=Do.CreateDeviceEvent(r,s,a,o,this);i(r,s,l)}):this._createDummyNativeInput()}pollInput(e,t,i){return this._nativeInput.pollInput(e,t,i)}isDeviceAvailable(e){return e===$e.Mouse||e===$e.Touch}dispose(){this._nativeInput.dispose()}_createDummyNativeInput(){return{pollInput:()=>0,isDeviceAvailable:()=>!1,dispose:()=>{}}}}});var ek,tk,Ux,ik=I(()=>{Oa();wi();BP();Rh();ek=255,tk=Object.keys(Tt).length/2,Ux=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=pe.IsSafari(),this._usingMacOs=ec()&&/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform),this._keyboardDownEvent=s=>{},this._keyboardUpEvent=s=>{},this._keyboardBlurEvent=s=>{},this._pointerMoveEvent=s=>{},this._pointerDownEvent=s=>{},this._pointerUpEvent=s=>{},this._pointerCancelEvent=s=>{},this._pointerCancelTouch=s=>{},this._pointerLeaveEvent=s=>{},this._pointerWheelEvent=s=>{},this._pointerBlurEvent=s=>{},this._pointerMacOsChromeOutEvent=s=>{},this._eventsAttached=!1,this._mouseId=-1,this._isUsingFirefox=ec()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=ec()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=pe.GetPointerPrefix(e),this._engine=e,this._onDeviceConnected=t,this._onDeviceDisconnected=i,this._onInputChanged=r,this._mouseId=this._isUsingFirefox?0:1,this._enableEvents(),this._usingMacOs&&(this._metaKeys=[]),this._engine._onEngineViewChanged||(this._engine._onEngineViewChanged=()=>{this._enableEvents()})}pollInput(e,t,i){let r=this._inputs[e][t];if(!r)throw`Unable to find device ${$e[e]}`;e>=$e.DualShock&&e<=$e.DualSense&&this._updateDevice(e,t,i);let s=r[i];if(s===void 0)throw`Unable to find input ${i} for device ${$e[e]} in slot ${t}`;return i===Tt.Move&&pe.Warn("Unable to provide information for PointerInput.Move. Try using PointerInput.Horizontal or PointerInput.Vertical for move data."),s}isDeviceAvailable(e){return this._inputs[e]!==void 0}dispose(){this._onDeviceConnected=()=>{},this._onDeviceDisconnected=()=>{},this._onInputChanged=()=>{},delete this._engine._onEngineViewChanged,this._elementToAttachTo&&this._disableEvents()}_enableEvents(){let e=this==null?void 0:this._engine.getInputElement();if(e&&(!this._eventsAttached||this._elementToAttachTo!==e)){if(this._disableEvents(),this._inputs){for(let t of this._inputs)if(t)for(let i in t){let r=+i,s=t[r];if(s)for(let a=0;a{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice($e.Keyboard,0,ek));let t=this._inputs[$e.Keyboard][0];if(t){t[e.keyCode]=1;let i=e;i.inputIndex=e.keyCode,this._usingMacOs&&e.metaKey&&e.key!=="Meta"&&(this._metaKeys.includes(e.keyCode)||this._metaKeys.push(e.keyCode)),this._onInputChanged($e.Keyboard,0,i)}},this._keyboardUpEvent=e=>{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice($e.Keyboard,0,ek));let t=this._inputs[$e.Keyboard][0];if(t){t[e.keyCode]=0;let i=e;if(i.inputIndex=e.keyCode,this._usingMacOs&&e.key==="Meta"&&this._metaKeys.length>0){for(let r of this._metaKeys){let s=Do.CreateDeviceEvent($e.Keyboard,0,r,0,this,this._elementToAttachTo);t[r]=0,this._onInputChanged($e.Keyboard,0,s)}this._metaKeys.splice(0,this._metaKeys.length)}this._onInputChanged($e.Keyboard,0,i)}},this._keyboardBlurEvent=()=>{if(this._keyboardActive){let e=this._inputs[$e.Keyboard][0];for(let t=0;t{let r=this._getPointerType(i),s=r===$e.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===$e.Touch&&s===-1){let o=this._activeTouchIds.indexOf(-1);if(o>=0)s=o,this._activeTouchIds[o]=i.pointerId,this._onDeviceConnected(r,s);else{pe.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]||this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=i;o.inputIndex=Tt.Move,a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,r===$e.Touch&&a[Tt.LeftClick]===0&&(a[Tt.LeftClick]=1),i.pointerId===void 0&&(i.pointerId=this._mouseId),this._onInputChanged(r,s,o),!this._usingSafari&&i.button!==-1&&(o.inputIndex=i.button+2,a[i.button+2]=a[i.button+2]?0:1,this._onInputChanged(r,s,o))}},this._pointerDownEvent=i=>{let r=this._getPointerType(i),s=r===$e.Mouse?0:i.pointerId;if(r===$e.Touch){let o=this._activeTouchIds.indexOf(i.pointerId);if(o===-1&&(o=this._activeTouchIds.indexOf(-1)),o>=0)s=o,this._activeTouchIds[o]=i.pointerId;else{pe.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]?r===$e.Touch&&this._onDeviceConnected(r,s):this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=a[Tt.Horizontal],l=a[Tt.Vertical];if(r===$e.Mouse){if(i.pointerId===void 0&&(i.pointerId=this._mouseId),!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(this._mouseId)}catch(f){}}else if(i.pointerId&&!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(i.pointerId)}catch(f){}a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[i.button+2]=1;let c=i;c.inputIndex=i.button+2,this._onInputChanged(r,s,c),(o!==i.clientX||l!==i.clientY)&&(c.inputIndex=Tt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,h,u;let r=this._getPointerType(i),s=r===$e.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===$e.Touch){if(s===-1)return;this._activeTouchIds[s]=-1}let a=(c=this._inputs[r])==null?void 0:c[s],o=i.button,l=a&&a[o+2]!==0;if(!l&&this._isUsingFirefox&&this._usingMacOs&&a&&(o=o===2?0:2,l=a[o+2]!==0),l){let m=a[Tt.Horizontal],_=a[Tt.Vertical];a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||_!==i.clientY)&&(p.inputIndex=Tt.Move,this._onInputChanged(r,s,p)),p.inputIndex=o+2,r===$e.Mouse&&this._mouseId>=0&&((d=(f=this._elementToAttachTo).hasPointerCapture)!=null&&d.call(f,this._mouseId))?this._elementToAttachTo.releasePointerCapture(this._mouseId):i.pointerId&&((u=(h=this._elementToAttachTo).hasPointerCapture)!=null&&u.call(h,i.pointerId))&&this._elementToAttachTo.releasePointerCapture(i.pointerId),this._onInputChanged(r,s,p),r===$e.Touch&&this._onDeviceDisconnected(r,s)}},this._pointerCancelTouch=i=>{var a,o;let r=this._activeTouchIds.indexOf(i);if(r===-1)return;(o=(a=this._elementToAttachTo).hasPointerCapture)!=null&&o.call(a,i)&&this._elementToAttachTo.releasePointerCapture(i),this._inputs[$e.Touch][r][Tt.LeftClick]=0;let s=Do.CreateDeviceEvent($e.Touch,r,Tt.LeftClick,0,this,this._elementToAttachTo,i);this._onInputChanged($e.Touch,r,s),this._activeTouchIds[r]=-1,this._onDeviceDisconnected($e.Touch,r)},this._pointerCancelEvent=i=>{var r,s;if(i.pointerType==="mouse"){let a=this._inputs[$e.Mouse][0];this._mouseId>=0&&((s=(r=this._elementToAttachTo).hasPointerCapture)!=null&&s.call(r,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let o=Tt.LeftClick;o<=Tt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=Do.CreateDeviceEvent($e.Mouse,0,o,0,this,this._elementToAttachTo);this._onInputChanged($e.Mouse,0,l)}}else this._pointerCancelTouch(i.pointerId)},this._pointerLeaveEvent=i=>{i.pointerType==="pen"&&this._pointerCancelTouch(i.pointerId)},this._wheelEventName="onwheel"in document.createElement("div")?"wheel":document.onmousewheel!==void 0?"mousewheel":"DOMMouseScroll";let e=!1,t=function(){};try{let i=Object.defineProperty({},"passive",{get:function(){e=!0}});this._elementToAttachTo.addEventListener("test",t,i),this._elementToAttachTo.removeEventListener("test",t,i)}catch(i){}this._pointerBlurEvent=()=>{var i,r,s,a,o;if(this.isDeviceAvailable($e.Mouse)){let l=this._inputs[$e.Mouse][0];this._mouseId>=0&&((r=(i=this._elementToAttachTo).hasPointerCapture)!=null&&r.call(i,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let c=Tt.LeftClick;c<=Tt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=Do.CreateDeviceEvent($e.Mouse,0,c,0,this,this._elementToAttachTo);this._onInputChanged($e.Mouse,0,f)}}if(this.isDeviceAvailable($e.Touch)){let l=this._inputs[$e.Touch];for(let c=0;c{let r=$e.Mouse,s=0;this._inputs[r]||(this._inputs[r]=[]),this._inputs[r][s]||(this._pointerActive=!0,this._registerDevice(r,s,tk));let a=this._inputs[r][s];if(a){a[Tt.MouseWheelX]=i.deltaX||0,a[Tt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[Tt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[Tt.MouseWheelX]!==0&&(o.inputIndex=Tt.MouseWheelX,this._onInputChanged(r,s,o)),a[Tt.MouseWheelY]!==0&&(o.inputIndex=Tt.MouseWheelY,this._onInputChanged(r,s,o)),a[Tt.MouseWheelZ]!==0&&(o.inputIndex=Tt.MouseWheelZ,this._onInputChanged(r,s,o))}},this._usingMacOs&&this._isUsingChromium&&(this._pointerMacOsChromeOutEvent=i=>{i.buttons>1&&this._pointerCancelEvent(i)},this._elementToAttachTo.addEventListener("lostpointercapture",this._pointerMacOsChromeOutEvent)),this._elementToAttachTo.addEventListener(this._eventPrefix+"move",this._pointerMoveEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"down",this._pointerDownEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"up",this._pointerUpEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"cancel",this._pointerCancelEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"leave",this._pointerLeaveEvent),this._elementToAttachTo.addEventListener("blur",this._pointerBlurEvent),this._elementToAttachTo.addEventListener(this._wheelEventName,this._pointerWheelEvent,e?{passive:!1}:!1),this._pointerInputClearObserver=this._engine.onEndFrameObservable.add(()=>{if(this.isDeviceAvailable($e.Mouse)){let i=this._inputs[$e.Mouse][0];i[Tt.MouseWheelX]=0,i[Tt.MouseWheelY]=0,i[Tt.MouseWheelZ]=0}})}_handleGamepadActions(){this._gamepadConnectedEvent=e=>{this._addGamePad(e.gamepad)},this._gamepadDisconnectedEvent=e=>{if(this._gamepads){let t=this._getGamepadDeviceType(e.gamepad.id),i=e.gamepad.index;this._unregisterDevice(t,i),delete this._gamepads[i]}},window.addEventListener("gamepadconnected",this._gamepadConnectedEvent),window.addEventListener("gamepaddisconnected",this._gamepadDisconnectedEvent)}_updateDevice(e,t,i){let r=navigator.getGamepads()[t];if(r&&e===this._gamepads[t]){let s=this._inputs[e][t];i>=r.buttons.length?s[i]=r.axes[i-r.buttons.length].valueOf():s[i]=r.buttons[i].value}}_getGamepadDeviceType(e){return e.indexOf("054c")!==-1?e.indexOf("0ce6")!==-1?$e.DualSense:$e.DualShock:e.indexOf("Xbox One")!==-1||e.search("Xbox 360")!==-1||e.search("xinput")!==-1?$e.Xbox:e.indexOf("057e")!==-1?$e.Switch:$e.Generic}_getPointerType(e){let t=$e.Mouse;return(e.pointerType==="touch"||e.pointerType==="pen"||e.touches)&&(t=$e.Touch),t}}});var Jg,rk=I(()=>{mi();Jg=class{constructor(e,t,i=0){this.deviceType=t,this.deviceSlot=i,this.onInputChangedObservable=new te,this._deviceInputSystem=e}getInput(e){return this._deviceInputSystem.pollInput(this.deviceType,this.deviceSlot,e)}}});var Vx,nk=I(()=>{Rh();JG();ik();rk();Vx=class{constructor(e){this._registeredManagers=new Array,this._refCount=0,this.registerManager=a=>{for(let o=0;o{let o=this._registeredManagers.indexOf(a);o>-1&&this._registeredManagers.splice(o,1)};let t=Object.keys($e).length/2;this._devices=new Array(t);let i=(a,o)=>{this._devices[a]||(this._devices[a]=new Array),this._devices[a][o]||(this._devices[a][o]=o);for(let l of this._registeredManagers){let c=new Jg(this._deviceInputSystem,a,o);l._addDevice(c)}},r=(a,o)=>{var l;(l=this._devices[a])!=null&&l[o]&&delete this._devices[a][o];for(let c of this._registeredManagers)c._removeDevice(a,o)},s=(a,o,l)=>{if(l)for(let c of this._registeredManagers)c._onInputChanged(a,o,l)};typeof _native!="undefined"?this._deviceInputSystem=new Bx(i,r,s):this._deviceInputSystem=new Ux(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var Gx,sk=I(()=>{Rh();mi();nk();Gx=class{getDeviceSource(e,t){if(t===void 0){if(this._firstDevice[e]===void 0)return null;t=this._firstDevice[e]}return!this._devices[e]||this._devices[e][t]===void 0?null:this._devices[e][t]}getDeviceSources(e){return this._devices[e]?this._devices[e].filter(t=>!!t):[]}constructor(e){let t=Object.keys($e).length/2;this._devices=new Array(t),this._firstDevice=new Array(t),this._engine=e,this._engine._deviceSourceManager||(this._engine._deviceSourceManager=new Vx(e)),this._engine._deviceSourceManager._refCount++,this.onDeviceConnectedObservable=new te(i=>{for(let r of this._devices)if(r)for(let s of r)s&&this.onDeviceConnectedObservable.notifyObserver(i,s)}),this.onDeviceDisconnectedObservable=new te,this._engine._deviceSourceManager.registerManager(this),this._onDisposeObserver=e.onDisposeObservable.add(()=>{this.dispose()})}dispose(){this.onDeviceConnectedObservable.clear(),this.onDeviceDisconnectedObservable.clear(),this._engine._deviceSourceManager&&(this._engine._deviceSourceManager.unregisterManager(this),--this._engine._deviceSourceManager._refCount<1&&(this._engine._deviceSourceManager.dispose(),delete this._engine._deviceSourceManager)),this._engine.onDisposeObservable.remove(this._onDisposeObserver)}_addDevice(e){this._devices[e.deviceType]||(this._devices[e.deviceType]=[]),this._devices[e.deviceType][e.deviceSlot]||(this._devices[e.deviceType][e.deviceSlot]=e,this._updateFirstDevices(e.deviceType)),this.onDeviceConnectedObservable.notifyObservers(e)}_removeDevice(e,t){var r,s;let i=(r=this._devices[e])==null?void 0:r[t];this.onDeviceDisconnectedObservable.notifyObservers(i),(s=this._devices[e])!=null&&s[t]&&delete this._devices[e][t],this._updateFirstDevices(e)}_onInputChanged(e,t,i){var r,s;(s=(r=this._devices[e])==null?void 0:r[t])==null||s.onInputChangedObservable.notifyObservers(i)}_updateFirstDevices(e){switch(e){case $e.Keyboard:case $e.Mouse:this._firstDevice[e]=0;break;case $e.Touch:case $e.DualSense:case $e.DualShock:case $e.Xbox:case $e.Switch:case $e.Generic:{delete this._firstDevice[e];let t=this._devices[e];if(t){for(let i=0;i{bh=class{};bh._IsPickingAvailable=!1});var kx,Zn,ak=I(()=>{yo();YG();jg();ke();OP();wx();Rh();sk();Gi();UP();kx=class{constructor(){this._singleClick=!1,this._doubleClick=!1,this._hasSwiped=!1,this._ignore=!1}get singleClick(){return this._singleClick}get doubleClick(){return this._doubleClick}get hasSwiped(){return this._hasSwiped}get ignore(){return this._ignore}set singleClick(e){this._singleClick=e}set doubleClick(e){this._doubleClick=e}set hasSwiped(e){this._hasSwiped=e}set ignore(e){this._ignore=e}},Zn=class n{constructor(e){this._alreadyAttached=!1,this._meshPickProceed=!1,this._currentPickResult=null,this._previousPickResult=null,this._activePointerIds=new Array,this._activePointerIdsCount=0,this._doubleClickOccured=!1,this._isSwiping=!1,this._swipeButtonPressed=-1,this._skipPointerTap=!1,this._isMultiTouchGesture=!1,this._pointerX=0,this._pointerY=0,this._startingPointerPosition=new we(0,0),this._previousStartingPointerPosition=new we(0,0),this._startingPointerTime=0,this._previousStartingPointerTime=0,this._pointerCaptures={},this._meshUnderPointerId={},this._movePointerInfo=null,this._cameraObserverCount=0,this._delayedClicks=[null,null,null,null,null],this._deviceSourceManager=null,this._scene=e||Oe.LastCreatedScene,this._scene}get meshUnderPointer(){return this._movePointerInfo&&(this._movePointerInfo._generatePickInfo(),this._movePointerInfo=null),this._pointerOverMesh}getMeshUnderPointerByPointerId(e){return this._meshUnderPointerId[e]||null}get unTranslatedPointer(){return new we(this._unTranslatedPointerX,this._unTranslatedPointerY)}get pointerX(){return this._pointerX}set pointerX(e){this._pointerX=e}get pointerY(){return this._pointerY}set pointerY(e){this._pointerY=e}_updatePointerPosition(e){let t=this._scene.getEngine().getInputElementClientRect();t&&(this._pointerX=e.clientX-t.left,this._pointerY=e.clientY-t.top,this._unTranslatedPointerX=this._pointerX,this._unTranslatedPointerY=this._pointerY)}_processPointerMove(e,t){let i=this._scene,r=i.getEngine(),s=r.getInputElement();s&&(s.tabIndex=r.canvasTabIndex,i.doNotHandleCursors||(s.style.cursor=i.defaultCursor)),this._setCursorAndPointerOverMesh(e,t,i);for(let l of i._pointerMoveStage){e=e||this._pickMove(t);let c=!!(e!=null&&e.pickedMesh);e=l.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,c,s)}let a=t.inputIndex>=Tt.MouseWheelX&&t.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Wa(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Wa(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&bh._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,Z.Identity(),i.activeCamera)))}_addCameraPointerObserver(e,t){return this._cameraObserverCount++,this._scene.onPointerObservable.add(e,t)}_removeCameraPointerObserver(e){return this._cameraObserverCount--,this._scene.onPointerObservable.remove(e)}_checkForPicking(){return!!(this._scene.onPointerObservable.observers.length>this._cameraObserverCount||this._scene.onPointerPick)}_checkPrePointerObservable(e,t,i){let r=this._scene,s=new Nx(i,t,this._unTranslatedPointerX,this._unTranslatedPointerY);return e&&(s.originalPickingInfo=e,s.ray=e.ray,t.pointerType==="xr-near"&&e.originMesh&&(s.nearInteractionPickingInfo=e)),r.onPrePointerObservable.notifyObservers(s,i),!!s.skipOnPointerObservable}_pickMove(e){let t=this._scene,i=t.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,t.pointerMovePredicate,t.pointerMoveFastCheck,t.cameraToUseForPointers,t.pointerMoveTrianglePredicate);return this._setCursorAndPointerOverMesh(i,e,t),i}_setCursorAndPointerOverMesh(e,t,i){let s=i.getEngine().getInputElement();if(e!=null&&e.pickedMesh){if(this.setPointerOverMesh(e.pickedMesh,t.pointerId,e,t),!i.doNotHandleCursors&&s&&this._pointerOverMesh){let a=this._pointerOverMesh._getActionManagerForTrigger();a&&a.hasPointerTriggers&&(s.style.cursor=a.hoverCursor||i.hoverCursor)}}else this.setPointerOverMesh(null,t.pointerId,e,t)}simulatePointerMove(e,t){let i=new PointerEvent("pointermove",t);i.inputIndex=Tt.Move,!this._checkPrePointerObservable(e,i,at.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,at.POINTERDOWN)&&this._processPointerDown(e,i)}_processPointerDown(e,t){let i=this._scene;if(e!=null&&e.pickedMesh){this._pickedDownMesh=e.pickedMesh;let a=e.pickedMesh._getActionManagerForTrigger();if(a){if(a.hasPickTriggers)switch(a.processTrigger(5,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break}a.hasSpecificTrigger(8)&&window.setTimeout(()=>{let o=i.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,l=>l.isPickable&&l.isVisible&&l.isReady()&&l.actionManager&&l.actionManager.hasSpecificTrigger(8)&&l===this._pickedDownMesh,!1,i.cameraToUseForPointers);o!=null&&o.pickedMesh&&a&&this._activePointerIdsCount!==0&&Date.now()-this._startingPointerTime>n.LongPressDelay&&!this._isPointerSwiping()&&(this._startingPointerTime=0,a.processTrigger(8,hn.CreateNew(o.pickedMesh,t)))},n.LongPressDelay)}}else for(let a of i._pointerDownStage)e=a.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,!1);let r,s=at.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Wa(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Wa(s,t,null,this),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(r,s)}_isPointerSwiping(){return this._isSwiping}simulatePointerUp(e,t,i){let r=new PointerEvent("pointerup",t);r.inputIndex=Tt.Move;let s=new kx;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,at.POINTERUP)&&this._processPointerUp(e,r,s)}_processPointerUp(e,t,i){let r=this._scene;if(e!=null&&e.pickedMesh){if(this._pickedUpMesh=e.pickedMesh,this._pickedDownMesh===this._pickedUpMesh&&(r.onPointerPick&&r.onPointerPick(t,e),i.singleClick&&!i.ignore&&r.onPointerObservable.observers.length>this._cameraObserverCount)){let a=at.POINTERPICK,o=new Wa(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,hn.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,hn.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,hn.CreateNew(e.pickedMesh,t,e))}}else if(!i.ignore)for(let s of r._pointerUpStage)e=s.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,i.doubleClick);if(this._pickedDownMesh&&this._pickedDownMesh!==this._pickedUpMesh){let s=this._pickedDownMesh._getActionManagerForTrigger(16);s&&s.processTrigger(16,hn.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Wa(at.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,at.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,at.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=at.POINTERTAP:i.doubleClick&&(a=at.POINTERDOUBLETAP),a){let o=new Wa(a,t,e);r.onPointerObservable.hasObservers()&&r.onPointerObservable.hasSpecificMask(a)&&r.onPointerObservable.notifyObservers(o,a)}}}}isPointerCaptured(e=0){return this._pointerCaptures[e]}attachControl(e=!0,t=!0,i=!0,r=null){let s=this._scene,a=s.getEngine();r||(r=a.getInputElement()),this._alreadyAttached&&this.detachControl(),r&&(this._alreadyAttachedTo=r),this._deviceSourceManager=new Gx(a),this._initActionManager=o=>{if(!this._meshPickProceed){let l=s.skipPointerUpPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerUp?null:s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerUpPredicate,s.pointerUpFastCheck,s.cameraToUseForPointers,s.pointerUpTrianglePredicate);this._currentPickResult=l,l&&(o=l.hit&&l.pickedMesh?l.pickedMesh._getActionManagerForTrigger():null),this._meshPickProceed=!0}return o},this._delayedSimpleClick=(o,l,c)=>{if((Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay&&!this._doubleClickOccured||o!==this._previousButtonPressed)&&(this._doubleClickOccured=!1,l.singleClick=!0,l.ignore=!1,this._delayedClicks[o])){let f=this._delayedClicks[o].evt,d=at.POINTERTAP,h=new Wa(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(h,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var _,p;let d=new kx;this._currentPickResult=null;let h=null,u=o.hasSpecificMask(at.POINTERPICK)||l.hasSpecificMask(at.POINTERPICK)||o.hasSpecificMask(at.POINTERTAP)||l.hasSpecificMask(at.POINTERTAP)||o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!u&&_c&&(h=this._initActionManager(h,d),h&&(u=h.hasPickTriggers));let m=!1;if(u=u&&!this._isMultiTouchGesture,u){let g=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(at.POINTERDOUBLETAP)&&!l.hasSpecificMask(at.POINTERDOUBLETAP),v&&!_c.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(v=!h.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||g!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let S={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,g,d,f),n.DoubleClickDelay)};this._delayedClicks[g]=S}let T=o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!T&&_c.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(T=h.hasSpecificTrigger(6))),T&&(g===this._previousButtonPressed&&Date.now()-this._previousStartingPointerTime{if(this._updatePointerPosition(o),!this._isSwiping&&this._swipeButtonPressed!==-1&&(this._isSwiping=Math.abs(this._startingPointerPosition.x-this._pointerX)>n.DragMovementThreshold||Math.abs(this._startingPointerPosition.y-this._pointerY)>n.DragMovementThreshold),a.isPointerLock&&a._verifyPointerLock(),this._checkPrePointerObservable(null,o,o.inputIndex>=Tt.MouseWheelX&&o.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new Ts,o);return}s.pointerMovePredicate||(s.pointerMovePredicate=c=>c.isPickable&&c.isVisible&&c.isReady()&&c.isEnabled()&&(c.enablePointerMoveEvents||s.constantlyUpdateMeshUnderPointer||c._getActionManagerForTrigger()!==null)&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&c.layerMask)!==0));let l=s._registeredActions>0||s.constantlyUpdateMeshUnderPointer?this._pickMove(o):null;this._processPointerMove(l,o)},this._onPointerDown=o=>{var f;let l=this._activePointerIds.indexOf(-1);if(l===-1?this._activePointerIds.push(o.pointerId):this._activePointerIds[l]=o.pointerId,this._activePointerIdsCount++,this._pickedDownMesh=null,this._meshPickProceed=!1,n.ExclusiveDoubleClickMode){for(let d=0;dd.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),this._pickedDownMesh=null;let c;s.skipPointerDownPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerDown?c=new Ts:c=s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerDownPredicate,s.pointerDownFastCheck,s.cameraToUseForPointers,s.pointerDownTrianglePredicate),this._processPointerDown(c,o)},this._onPointerUp=o=>{let l=this._activePointerIds.indexOf(o.pointerId);l!==-1&&(this._activePointerIds[l]=-1,this._activePointerIdsCount--,this._pickedUpMesh=null,this._meshPickProceed=!1,this._updatePointerPosition(o),s.preventDefaultOnPointerUp&&r&&(o.preventDefault(),r.focus()),this._initClickEvent(s.onPrePointerObservable,s.onPointerObservable,o,(c,f)=>{if(s.onPrePointerObservable.hasObservers()&&(this._skipPointerTap=!1,!c.ignore)){if(this._checkPrePointerObservable(null,o,at.POINTERUP)){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1),o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1);return}c.hasSwiped||(c.singleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERTAP)&&this._checkPrePointerObservable(null,o,at.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,at.POINTERDOUBLETAP)&&(this._skipPointerTap=!0))}if(!this._pointerCaptures[o.pointerId]){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1);return}o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1),!(!s.cameraToUseForPointers&&!s.activeCamera)&&(s.pointerUpPredicate||(s.pointerUpPredicate=d=>d.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),!this._meshPickProceed&&(_c&&_c.HasTriggers||this._checkForPicking()||s.onPointerUp)&&this._initActionManager(null,c),f||(f=this._currentPickResult),this._processPointerUp(f,o,c),this._previousPickResult=this._currentPickResult,this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1))}))},this._onKeyDown=o=>{let l=Co.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new $g(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new Hm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,hn.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=Co.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new $g(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new Hm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,hn.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===$e.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===Tt.LeftClick||l.inputIndex===Tt.MiddleClick||l.inputIndex===Tt.RightClick||l.inputIndex===Tt.BrowserBack||l.inputIndex===Tt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===Tt.Move?this._onPointerMove(l):(l.inputIndex===Tt.MouseWheelX||l.inputIndex===Tt.MouseWheelY||l.inputIndex===Tt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===$e.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===Tt.LeftClick&&(t&&o.getInput(l.inputIndex)===1?(this._onPointerDown(l),this._activePointerIdsCount>1&&(this._isMultiTouchGesture=!0)):e&&o.getInput(l.inputIndex)===0&&(this._onPointerUp(l),this._activePointerIdsCount===0&&(this._isMultiTouchGesture=!1))),i&&l.inputIndex===Tt.Move&&this._onPointerMove(l)}):o.deviceType===$e.Keyboard&&o.onInputChangedObservable.add(l=>{l.type==="keydown"?this._onKeyDown(l):l.type==="keyup"&&this._onKeyUp(l)})}),this._alreadyAttached=!0}detachControl(){this._alreadyAttached&&(this._deviceSourceManager.dispose(),this._deviceSourceManager=null,this._alreadyAttachedTo&&!this._scene.doNotHandleCursors&&(this._alreadyAttachedTo.style.cursor=this._scene.defaultCursor),this._alreadyAttached=!1,this._alreadyAttachedTo=null)}setPointerOverMesh(e,t=0,i,r){if(this._meshUnderPointerId[t]===e&&(!e||!e._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting))return;let s=this._meshUnderPointerId[t],a;s&&(a=s._getActionManagerForTrigger(10),a&&a.processTrigger(10,new hn(s,this._pointerX,this._pointerY,e,r,{pointerId:t}))),e?(this._meshUnderPointerId[t]=e,this._pointerOverMesh=e,a=e._getActionManagerForTrigger(9),a&&a.processTrigger(9,new hn(e,this._pointerX,this._pointerY,e,r,{pointerId:t,pickResult:i}))):(delete this._meshUnderPointerId[t],this._pointerOverMesh=null),this._scene.onMeshUnderPointerUpdatedObservable.hasObservers()&&this._scene.onMeshUnderPointerUpdatedObservable.notifyObservers({mesh:e,pointerId:t})}getPointerOverMesh(){return this.meshUnderPointer}_invalidateMesh(e){this._pointerOverMesh===e&&(this._pointerOverMesh=null),this._pickedDownMesh===e&&(this._pickedDownMesh=null),this._pickedUpMesh===e&&(this._pickedUpMesh=null);for(let t in this._meshUnderPointerId)this._meshUnderPointerId[t]===e&&delete this._meshUnderPointerId[t]}};Zn.DragMovementThreshold=10;Zn.LongPressDelay=500;Zn.DoubleClickDelay=300;Zn.ExclusiveDoubleClickMode=!1});var Tl,VP=I(()=>{tc();Tl=class n{get min(){return this._min}get max(){return this._max}get average(){return this._average}get lastSecAverage(){return this._lastSecAverage}get current(){return this._current}get total(){return this._totalAccumulated}get count(){return this._totalValueCount}constructor(){this._startMonitoringTime=0,this._min=0,this._max=0,this._average=0,this._lastSecAverage=0,this._current=0,this._totalValueCount=0,this._totalAccumulated=0,this._lastSecAccumulated=0,this._lastSecTime=0,this._lastSecValueCount=0}fetchNewFrame(){this._totalValueCount++,this._current=0,this._lastSecValueCount++}addCount(e,t){n.Enabled&&(this._current+=e,t&&this._fetchResult())}beginMonitoring(){n.Enabled&&(this._startMonitoringTime=br.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=br.Now;this._current=t-this._startMonitoringTime,e&&this._fetchResult()}endFrame(){this._fetchResult()}_fetchResult(){this._totalAccumulated+=this._current,this._lastSecAccumulated+=this._current,this._min=Math.min(this._min,this._current),this._max=Math.max(this._max,this._current),this._average=this._totalAccumulated/this._totalValueCount;let e=br.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};Tl.Enabled=!0});var gc,Wx=I(()=>{gc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};gc._UniqueIdCounter=1});var Hx,ok=I(()=>{Hx=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var Ece,Sce,lk,ti,Ys=I(()=>{wi();tc();mi();Mo();LG();Df();ke();Kg();Of();jg();OP();Ax();Qg();Rx();Wm();Oa();Gi();Sn();ak();VP();zt();cx();Wx();lc();Wg();pl();ok();Lt();$i();ul();Ece=new Ni,Sce=new Ni;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(lk||(lk={}));ti=class n{static DefaultMaterialFactory(e){throw Qe("StandardMaterial")}static CollisionCoordinatorFactory(){throw Qe("DefaultCollisionCoordinator")}get clearColor(){return this._clearColor}set clearColor(e){e!==this._clearColor&&(this._clearColor=e,this.onClearColorChangedObservable.notifyObservers(this._clearColor))}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}get performancePriority(){return this._performancePriority}set performancePriority(e){if(e!==this._performancePriority){switch(this._performancePriority=e,e){case 0:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!1,this.autoClear=!0;break;case 1:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!0,this.autoClear=!1;break;case 2:this.skipFrustumClipping=!0,this._renderingManager.maintainStateBetweenFrames=!0,this.skipPointerMovePicking=!0,this.autoClear=!1;break}this.onScenePerformancePriorityChangedObservable.notifyObservers(e)}}set forceWireframe(e){this._forceWireframe!==e&&(this._forceWireframe=e,this.markAllMaterialsAsDirty(16))}get forceWireframe(){return this._forceWireframe}set skipFrustumClipping(e){this._skipFrustumClipping!==e&&(this._skipFrustumClipping=e)}get skipFrustumClipping(){return this._skipFrustumClipping}set forcePointsCloud(e){this._forcePointsCloud!==e&&(this._forcePointsCloud=e,this.markAllMaterialsAsDirty(16))}get forcePointsCloud(){return this._forcePointsCloud}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture!==e&&(this._environmentTexture=e,this.onEnvironmentTextureChangedObservable.notifyObservers(e),this.markAllMaterialsAsDirty(1))}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}get animationPropertiesOverride(){return this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set beforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),e&&(this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e))}set afterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),e&&(this._onAfterRenderObserver=this.onAfterRenderObservable.add(e))}set beforeCameraRender(e){this._onBeforeCameraRenderObserver&&this.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver),this._onBeforeCameraRenderObserver=this.onBeforeCameraRenderObservable.add(e)}set afterCameraRender(e){this._onAfterCameraRenderObserver&&this.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver),this._onAfterCameraRenderObserver=this.onAfterCameraRenderObservable.add(e)}get pointerDownPredicate(){return this._pointerPickingConfiguration.pointerDownPredicate}set pointerDownPredicate(e){this._pointerPickingConfiguration.pointerDownPredicate=e}get pointerUpPredicate(){return this._pointerPickingConfiguration.pointerUpPredicate}set pointerUpPredicate(e){this._pointerPickingConfiguration.pointerUpPredicate=e}get pointerMovePredicate(){return this._pointerPickingConfiguration.pointerMovePredicate}set pointerMovePredicate(e){this._pointerPickingConfiguration.pointerMovePredicate=e}get pointerDownFastCheck(){return this._pointerPickingConfiguration.pointerDownFastCheck}set pointerDownFastCheck(e){this._pointerPickingConfiguration.pointerDownFastCheck=e}get pointerUpFastCheck(){return this._pointerPickingConfiguration.pointerUpFastCheck}set pointerUpFastCheck(e){this._pointerPickingConfiguration.pointerUpFastCheck=e}get pointerMoveFastCheck(){return this._pointerPickingConfiguration.pointerMoveFastCheck}set pointerMoveFastCheck(e){this._pointerPickingConfiguration.pointerMoveFastCheck=e}get skipPointerMovePicking(){return this._pointerPickingConfiguration.skipPointerMovePicking}set skipPointerMovePicking(e){this._pointerPickingConfiguration.skipPointerMovePicking=e}get skipPointerDownPicking(){return this._pointerPickingConfiguration.skipPointerDownPicking}set skipPointerDownPicking(e){this._pointerPickingConfiguration.skipPointerDownPicking=e}get skipPointerUpPicking(){return this._pointerPickingConfiguration.skipPointerUpPicking}set skipPointerUpPicking(e){this._pointerPickingConfiguration.skipPointerUpPicking=e}get unTranslatedPointer(){return this._inputManager.unTranslatedPointer}static get DragMovementThreshold(){return Zn.DragMovementThreshold}static set DragMovementThreshold(e){Zn.DragMovementThreshold=e}static get LongPressDelay(){return Zn.LongPressDelay}static set LongPressDelay(e){Zn.LongPressDelay=e}static get DoubleClickDelay(){return Zn.DoubleClickDelay}static set DoubleClickDelay(e){Zn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return Zn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){Zn.ExclusiveDoubleClickMode=e}get _eyePosition(){var e,t,i;return(i=(t=this._forcedViewPosition)!=null?t:(e=this.activeCamera)==null?void 0:e.globalPosition)!=null?i:b.ZeroReadOnly}bindEyePosition(e,t="vEyePosition",i=!1){let r=this._eyePosition,s=this.useRightHandedSystem===(this._mirroredCameraPosition!=null),a=this.floatingOriginOffset,o=Ece.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,Sce);return e&&(i?e.setFloat3(t,l.x,l.y,l.z):e.setVector4(t,l)),o}finalizeSceneUbo(){let e=this.getSceneUniformBuffer(),t=this.bindEyePosition(null),i=this.floatingOriginOffset;return e.updateFloat4("vEyePosition",t.x-i.x,t.y-i.y,t.z-i.z,t.w),e.update(),e}set useRightHandedSystem(e){this._useRightHandedSystem!==e&&(this._useRightHandedSystem=e,this.markAllMaterialsAsDirty(16))}get useRightHandedSystem(){return this._useRightHandedSystem}setStepId(e){this._currentStepId=e}getStepId(){return this._currentStepId}getInternalStep(){return this._currentInternalStep}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAllMaterialsAsDirty(16))}get fogEnabled(){return this._fogEnabled}set fogMode(e){this._fogMode!==e&&(this._fogMode=e,this.markAllMaterialsAsDirty(16))}get fogMode(){return this._fogMode}get prePass(){return!!this.prePassRenderer&&this.prePassRenderer.defaultRT.enabled}set shadowsEnabled(e){this._shadowsEnabled!==e&&(this._shadowsEnabled=e,this.markAllMaterialsAsDirty(2))}get shadowsEnabled(){return this._shadowsEnabled}set lightsEnabled(e){this._lightsEnabled!==e&&(this._lightsEnabled=e,this.markAllMaterialsAsDirty(2))}get lightsEnabled(){return this._lightsEnabled}get activeCameras(){return this._activeCameras}set activeCameras(e){this._unObserveActiveCameras&&(this._unObserveActiveCameras(),this._unObserveActiveCameras=null),e&&(this._unObserveActiveCameras=ox(e,()=>{this.onActiveCamerasChanged.notifyObservers(this)})),this._activeCameras=e}get activeCamera(){return this._activeCamera}set activeCamera(e){e!==this._activeCamera&&(this._activeCamera=e,this.onActiveCameraChanged.notifyObservers(this))}get _hasDefaultMaterial(){return n.DefaultMaterialFactory!==n._OriginalDefaultMaterialFactory}get defaultMaterial(){return this._defaultMaterial||(this._defaultMaterial=n.DefaultMaterialFactory(this)),this._defaultMaterial}set defaultMaterial(e){this._defaultMaterial=e}set texturesEnabled(e){this._texturesEnabled!==e&&(this._texturesEnabled=e,this.markAllMaterialsAsDirty(1))}get texturesEnabled(){return this._texturesEnabled}get frameGraph(){return this._frameGraph}set frameGraph(e){if(this._frameGraph){this._frameGraph=e,e||(this.customRenderFunction=this._currentCustomRenderFunction);return}this._frameGraph=e,e&&(this._currentCustomRenderFunction=this.customRenderFunction,this.customRenderFunction=this._renderWithFrameGraph,this.activeCamera=null)}set skeletonsEnabled(e){this._skeletonsEnabled!==e&&(this._skeletonsEnabled=e,this.markAllMaterialsAsDirty(8))}get skeletonsEnabled(){return this._skeletonsEnabled}get collisionCoordinator(){return this._collisionCoordinator||(this._collisionCoordinator=n.CollisionCoordinatorFactory(),this._collisionCoordinator.init(this)),this._collisionCoordinator}get renderingManager(){return this._renderingManager}get frustumPlanes(){return this._frustumPlanes}_registerTransientComponents(){if(this._transientComponents.length>0){for(let e of this._transientComponents)e.register();this._transientComponents.length=0}}_addComponent(e){this._components.push(e),this._transientComponents.push(e);let t=e;t.addFromContainer&&t.serialize&&this._serializableComponents.push(t)}_getComponent(e){for(let t of this._components)if(t.name===e)return t;return null}get uniqueId(){return this._uniqueId}constructor(e,t){this._inputManager=new Zn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new ft(.2,.2,.3,1),this.onClearColorChangedObservable=new te,this.ambientColor=new Ee(0,0,0),this.environmentIntensity=1,this.iblIntensity=1,this._performancePriority=0,this.onScenePerformancePriorityChangedObservable=new te,this._forceWireframe=!1,this._skipFrustumClipping=!1,this._forcePointsCloud=!1,this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.objectRenderers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.effectLayers=[],this.sounds=null,this.layers=[],this.lensFlareSystems=[],this.proceduralTextures=[],this.animationsEnabled=!0,this._animationPropertiesOverride=null,this.useConstantAnimationDeltaTime=!1,this.constantlyUpdateMeshUnderPointer=!1,this.hoverCursor="pointer",this.defaultCursor="",this.doNotHandleCursors=!1,this.preventDefaultOnPointerDown=!0,this.preventDefaultOnPointerUp=!0,this.metadata=null,this.reservedDataStore=null,this.disableOfflineSupportExceptionRules=[],this.onDisposeObservable=new te,this._onDisposeObserver=null,this.onBeforeRenderObservable=new te,this._onBeforeRenderObserver=null,this.onAfterRenderObservable=new te,this.onAfterRenderCameraObservable=new te,this._onAfterRenderObserver=null,this.onBeforeAnimationsObservable=new te,this.onAfterAnimationsObservable=new te,this.onBeforeDrawPhaseObservable=new te,this.onAfterDrawPhaseObservable=new te,this.onReadyObservable=new te,this.onBeforeCameraRenderObservable=new te,this._onBeforeCameraRenderObserver=null,this.onAfterCameraRenderObservable=new te,this._onAfterCameraRenderObserver=null,this.onBeforeActiveMeshesEvaluationObservable=new te,this.onAfterActiveMeshesEvaluationObservable=new te,this.onBeforeParticlesRenderingObservable=new te,this.onAfterParticlesRenderingObservable=new te,this.onDataLoadedObservable=new te,this.onNewCameraAddedObservable=new te,this.onCameraRemovedObservable=new te,this.onNewLightAddedObservable=new te,this.onLightRemovedObservable=new te,this.onNewGeometryAddedObservable=new te,this.onGeometryRemovedObservable=new te,this.onNewTransformNodeAddedObservable=new te,this.onTransformNodeRemovedObservable=new te,this.onNewMeshAddedObservable=new te,this.onMeshRemovedObservable=new te,this.onNewSkeletonAddedObservable=new te,this.onSkeletonRemovedObservable=new te,this.onNewParticleSystemAddedObservable=new te,this.onParticleSystemRemovedObservable=new te,this.onNewAnimationGroupAddedObservable=new te,this.onAnimationGroupRemovedObservable=new te,this.onNewMaterialAddedObservable=new te,this.onNewMultiMaterialAddedObservable=new te,this.onMaterialRemovedObservable=new te,this.onMultiMaterialRemovedObservable=new te,this.onNewTextureAddedObservable=new te,this.onTextureRemovedObservable=new te,this.onNewFrameGraphAddedObservable=new te,this.onFrameGraphRemovedObservable=new te,this.onNewObjectRendererAddedObservable=new te,this.onObjectRendererRemovedObservable=new te,this.onNewPostProcessAddedObservable=new te,this.onPostProcessRemovedObservable=new te,this.onNewEffectLayerAddedObservable=new te,this.onEffectLayerRemovedObservable=new te,this.onBeforeRenderTargetsRenderObservable=new te,this.onAfterRenderTargetsRenderObservable=new te,this.onBeforeStepObservable=new te,this.onAfterStepObservable=new te,this.onActiveCameraChanged=new te,this.onActiveCamerasChanged=new te,this.onBeforeRenderingGroupObservable=new te,this.onAfterRenderingGroupObservable=new te,this.onMeshImportedObservable=new te,this.onAnimationFileImportedObservable=new te,this.onEnvironmentTextureChangedObservable=new te,this.onMeshUnderPointerUpdatedObservable=new te,this._registeredForLateAnimationBindings=new bo(256),this._pointerPickingConfiguration=new Hx,this.onPrePointerObservable=new te,this.onPointerObservable=new te,this.onPreKeyboardObservable=new te,this.onKeyboardObservable=new te,this._useRightHandedSystem=!1,this._timeAccumulator=0,this._currentStepId=0,this._currentInternalStep=0,this._fogEnabled=!0,this._fogMode=n.FOGMODE_NONE,this.fogColor=new Ee(.2,.2,.3),this.fogDensity=.1,this.fogStart=0,this.fogEnd=1e3,this.needsPreviousWorldMatrices=!1,this._shadowsEnabled=!0,this._lightsEnabled=!0,this._unObserveActiveCameras=null,this._texturesEnabled=!0,this._frameGraph=null,this.frameGraphs=[],this.physicsEnabled=!0,this.particlesEnabled=!0,this.spritesEnabled=!0,this._skeletonsEnabled=!0,this.lensFlaresEnabled=!0,this.collisionsEnabled=!0,this.gravity=new b(0,-9.807,0),this.postProcessesEnabled=!0,this.renderTargetsEnabled=!0,this.dumpNextRenderTargets=!1,this.customRenderTargets=[],this.importedMeshesFiles=[],this.probesEnabled=!0,this._meshesForIntersections=new bo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new Tl,this._activeIndices=new Tl,this._activeParticles=new Tl,this._activeBones=new Tl,this._animationTime=0,this.animationTimeScale=1,this._renderId=0,this._frameId=0,this._executeWhenReadyTimeoutId=null,this._intermediateRendering=!1,this._defaultFrameBufferCleared=!1,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1,this._toBeDisposed=new Array(256),this._activeRequests=new Array,this._pendingData=[],this._isDisposed=!1,this._isReadyChecks=[],this.dispatchAllSubMeshesOfActiveMeshes=!1,this._activeMeshes=new Xi(256),this._processedMaterials=new Xi(256),this._renderTargets=new bo(256),this._materialsRenderTargets=new bo(256),this._activeParticleSystems=new Xi(256),this._activeSkeletons=new bo(32),this._softwareSkinnedMeshes=new bo(32),this._activeAnimatables=new Array,this._transformMatrix=Z.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=mr.Create(),this._beforeClearStage=mr.Create(),this._beforeRenderTargetClearStage=mr.Create(),this._gatherRenderTargetsStage=mr.Create(),this._gatherActiveCameraRenderTargetsStage=mr.Create(),this._isReadyForMeshStage=mr.Create(),this._beforeEvaluateActiveMeshStage=mr.Create(),this._evaluateSubMeshStage=mr.Create(),this._preActiveMeshStage=mr.Create(),this._cameraDrawRenderTargetStage=mr.Create(),this._beforeCameraDrawStage=mr.Create(),this._beforeRenderTargetDrawStage=mr.Create(),this._beforeRenderingGroupDrawStage=mr.Create(),this._beforeRenderingMeshStage=mr.Create(),this._afterRenderingMeshStage=mr.Create(),this._afterRenderingGroupDrawStage=mr.Create(),this._afterCameraDrawStage=mr.Create(),this._afterCameraPostProcessStage=mr.Create(),this._afterRenderTargetDrawStage=mr.Create(),this._afterRenderTargetPostProcessStage=mr.Create(),this._afterRenderStage=mr.Create(),this._pointerMoveStage=mr.Create(),this._pointerDownStage=mr.Create(),this._pointerUpStage=mr.Create(),this._geometriesByUniqueId=null,this._uniqueId=0,this._defaultMeshCandidates={data:[],length:0},this._defaultSubMeshCandidates={data:[],length:0},this.onReadyTimeoutObservable=new te,this.onReadyTimeoutDuration=120*1e3,this._timeoutChecksStartTime=0,this._floatingOriginScene=void 0,this._preventFreeActiveMeshesAndRenderingGroups=!1,this._activeMeshesFrozen=!1,this._activeMeshesFrozenButKeepClipping=!1,this._skipEvaluateActiveMeshesCompletely=!1,this._freezeActiveMeshesCancel=null,this._useCurrentFrameBuffer=!1,this._allowPostProcessClearColor=!0,this.getDeterministicFrameTime=()=>this._engine.getTimeStep(),this._getFloatingOriginScene=()=>this._floatingOriginScene,this._registeredActions=0,this._blockMaterialDirtyMechanism=!1,this._perfCollector=null,this.activeCameras=[],this._uniqueId=this.getUniqueId();let i={useGeometryUniqueIdsMap:!0,useMaterialMeshMap:!0,useClonedMeshMap:!0,virtual:!1,defaultCameraLayerMask:268435455,defaultRenderableLayerMask:268435455,...t};this.defaultCameraLayerMask=i.defaultCameraLayerMask,this.defaultRenderableLayerMask=i.defaultRenderableLayerMask,e=this._engine=e||Oe.LastCreatedEngine,i.virtual?e._virtualScenes.push(this):(Oe._LastCreatedScene=this,e.scenes.push(this)),(e.getCreationOptions().useLargeWorldRendering||t!=null&&t.useFloatingOrigin)&&(XG(),this._floatingOriginScene=this,ka.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new Fa(this),dc&&(this.postProcessManager=new dc(this)),Er()&&this.attachControl(),this._createUbo(),Ht&&(this._imageProcessingConfiguration=new Ht),this.setDefaultCandidateProviders(),i.useGeometryUniqueIdsMap&&(this._geometriesByUniqueId={}),this.useMaterialMeshMap=i.useMaterialMeshMap,this.useClonedMeshMap=i.useClonedMeshMap,(!t||!t.virtual)&&e.onNewSceneAddedObservable.notifyObservers(this)}getClassName(){return"Scene"}_getDefaultMeshCandidates(){return this._defaultMeshCandidates.data=this.meshes,this._defaultMeshCandidates.length=this.meshes.length,this._defaultMeshCandidates}_getDefaultSubMeshCandidates(e){return this._defaultSubMeshCandidates.data=e.subMeshes,this._defaultSubMeshCandidates.length=e.subMeshes.length,this._defaultSubMeshCandidates}setDefaultCandidateProviders(){this.getActiveMeshCandidates=()=>this._getDefaultMeshCandidates(),this.getActiveSubMeshCandidates=e=>this._getDefaultSubMeshCandidates(e),this.getIntersectingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e),this.getCollidingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e)}get meshUnderPointer(){return this._inputManager.meshUnderPointer}get pointerX(){return this._inputManager.pointerX}set pointerX(e){this._inputManager.pointerX=e}get pointerY(){return this._inputManager.pointerY}set pointerY(e){this._inputManager.pointerY=e}getCachedMaterial(){return this._cachedMaterial}getCachedEffect(){return this._cachedEffect}getCachedVisibility(){return this._cachedVisibility}isCachedMaterialInvalid(e,t,i=1){return this._cachedEffect!==t||this._cachedMaterial!==e||this._cachedVisibility!==i}getEngine(){return this._engine}getTotalVertices(){return this._totalVertices.current}get totalVerticesPerfCounter(){return this._totalVertices}getActiveIndices(){return this._activeIndices.current}get totalActiveIndicesPerfCounter(){return this._activeIndices}getActiveParticles(){return this._activeParticles.current}get activeParticlesPerfCounter(){return this._activeParticles}getActiveBones(){return this._activeBones.current}get activeBonesPerfCounter(){return this._activeBones}getActiveMeshes(){return this._activeMeshes}getAnimationRatio(){return this._animationRatio!==void 0?this._animationRatio:1}getRenderId(){return this._renderId}getFrameId(){return this._frameId}incrementRenderId(){this._renderId++}_createUbo(){this.setSceneUniformBuffer(this.createSceneUniformBuffer())}simulatePointerMove(e,t){return this._inputManager.simulatePointerMove(e,t),this}simulatePointerDown(e,t){return this._inputManager.simulatePointerDown(e,t),this}simulatePointerUp(e,t,i){return this._inputManager.simulatePointerUp(e,t,i),this}isPointerCaptured(e=0){return this._inputManager.isPointerCaptured(e)}attachControl(e=!0,t=!0,i=!0){this._inputManager.attachControl(e,t,i)}detachControl(){this._inputManager.detachControl()}isReady(e=!0){var a,o,l;if(this._isDisposed)return!1;let t,i=this.getEngine(),r=i.currentRenderPassId;i.currentRenderPassId=(o=(a=this.activeCamera)==null?void 0:a.renderPassId)!=null?o:r;let s=!0;for(this._pendingData.length>0&&(s=!1),(l=this.prePassRenderer)==null||l.update(),this.useOrderIndependentTransparency&&this.depthPeelingRenderer&&s&&(s=this.depthPeelingRenderer.isReady()),e&&(this._processedMaterials.reset(),this._materialsRenderTargets.reset()),t=0;t0;for(let h of this._isReadyForMeshStage)h.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let h of c.subMeshes){let u=h.getMaterial();u&&u.hasRenderTargetTextures&&u.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(u)===-1&&(this._processedMaterials.push(u),this._materialsRenderTargets.concatWithNoDuplicate(u.getRenderTargetTextures()))}else d.hasRenderTargetTextures&&d.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(d)===-1&&(this._processedMaterials.push(d),this._materialsRenderTargets.concatWithNoDuplicate(d.getRenderTargetTextures()))}if(e){for(t=0;t0)for(let c of this.activeCameras)c.isReady(!0)||(s=!1);else this.activeCamera&&(this.activeCamera.isReady(!0)||(s=!1));for(let c of this.particleSystems)c.isReady()||(s=!1);if(this.proceduralTexturesEnabled)for(let c of this.proceduralTextures)c.isReady()||(s=!1);if(this.layers)for(let c of this.layers)c.isReady()||(s=!1);if(this.effectLayers)for(let c of this.effectLayers)c.isLayerReady()||(s=!1);for(let c of this._isReadyChecks)c.isReady()||(s=!1);return i.areAllEffectsReady()||(s=!1),i.currentRenderPassId=r,s}resetCachedMaterial(){this._cachedMaterial=null,this._cachedEffect=null,this._cachedVisibility=null}registerBeforeRender(e){this.onBeforeRenderObservable.add(e)}unregisterBeforeRender(e){this.onBeforeRenderObservable.removeCallback(e)}registerAfterRender(e){this.onAfterRenderObservable.add(e)}unregisterAfterRender(e){this.onAfterRenderObservable.removeCallback(e)}_executeOnceBeforeRender(e){let t=()=>{e(),setTimeout(()=>{this.unregisterBeforeRender(t)})};this.registerBeforeRender(t)}executeOnceBeforeRender(e,t){t!==void 0?setTimeout(()=>{this._executeOnceBeforeRender(e)},t):this._executeOnceBeforeRender(e)}addPendingData(e){this._pendingData.push(e)}removePendingData(e){let t=this.isLoading,i=this._pendingData.indexOf(e);i!==-1&&this._pendingData.splice(i,1),t&&!this.isLoading&&this.onDataLoadedObservable.notifyObservers(this)}getWaitingItemsCount(){return this._pendingData.length}get isLoading(){return this._pendingData.length>0}addIsReadyCheck(e){this._isReadyChecks.indexOf(e)===-1&&this._isReadyChecks.push(e)}removeIsReadyCheck(e){let t=this._isReadyChecks.indexOf(e);t!==-1&&this._isReadyChecks.splice(t,1)}executeWhenReady(e,t=!1){this.onReadyObservable.addOnce(e),this._executeWhenReadyTimeoutId===null&&this._checkIsReady(t)}async whenReadyAsync(e=!1){return await new Promise(t=>{this.executeWhenReady(()=>{t()},e)})}_clearReadynessChecksData(){this._timeoutChecksStartTime=0,this.onReadyTimeoutObservable.clear(),this.onReadyObservable.clear(),this._executeWhenReadyTimeoutId=null}_checkIsReady(e=!1){if(this._registerTransientComponents(),this._timeoutChecksStartTime===0)this._timeoutChecksStartTime=br.Now;else if(this.onReadyTimeoutDuration>0&&br.Now-this._timeoutChecksStartTime>this.onReadyTimeoutDuration){this.onReadyTimeoutObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this.isReady(e)){this.onReadyObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this._isDisposed){this._clearReadynessChecksData();return}this._executeWhenReadyTimeoutId=setTimeout(()=>{this.incrementRenderId(),this._checkIsReady(e)},100)}get animatables(){return this._activeAnimatables}resetLastAnimationTimeFrame(){this._animationTimeLast=br.Now}getViewMatrix(){return this._viewMatrix}getProjectionMatrix(){return this._projectionMatrix}getInverseProjectionMatrix(){return this._inverseProjectionMatrix}getTransformMatrix(){return this._transformMatrix}setTransformMatrix(e,t,i,r){this._multiviewSceneUboIsActive=!!(i&&r&&this._multiviewSceneUbo),!(this._viewUpdateFlag===e.updateFlag&&this._projectionUpdateFlag===t.updateFlag)&&(this._viewUpdateFlag=e.updateFlag,this._projectionUpdateFlag=t.updateFlag,this._viewMatrix=e,this._projectionMatrix=t,this._inverseProjectionMatrix||(this._inverseProjectionMatrix=new Z),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?Mf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Mf.GetPlanes(this._transformMatrix),this._multiviewSceneUboIsActive&&this._multiviewSceneUbo.useUbo?this._updateMultiviewUbo(i,r):this._sceneUbo.useUbo&&(this._sceneUbo.updateMatrix("viewProjection",this._transformMatrix),this._sceneUbo.updateMatrix("view",this._viewMatrix),this._sceneUbo.updateMatrix("projection",this._projectionMatrix),this._sceneUbo.updateMatrix("inverseProjection",this._inverseProjectionMatrix)))}getSceneUniformBuffer(){return this._multiviewSceneUboIsActive&&this._multiviewSceneUbo?this._multiviewSceneUbo:this._sceneUbo}createSceneUniformBuffer(e,t){let i=typeof t=="boolean"?t:t==null?void 0:t.trackUBOsInFrame,r=new Sr(this._engine,void 0,!1,e!=null?e:"scene",void 0,i);return r.addUniform("viewProjection",16),r.addUniform("view",16),r.addUniform("projection",16),r.addUniform("vEyePosition",4),r.addUniform("inverseProjection",16),r}setSceneUniformBuffer(e){this._sceneUbo=e,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1}get floatingOriginMode(){return this._floatingOriginScene!==void 0}get floatingOriginOffset(){return this.floatingOriginMode?this._eyePosition:b.ZeroReadOnly}getUniqueId(){return gc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),pe.SetImmediate(()=>{this.onNewMeshAddedObservable.notifyObservers(e)}),t)){let i=e.getChildMeshes();for(let r of i)this.addMesh(r)}}removeMesh(e,t=!1){let i=this.meshes.indexOf(e);if(i!==-1&&(this.meshes.splice(i,1),e.parent||e._removeFromSceneRootNodes()),this._inputManager._invalidateMesh(e),this.onMeshRemovedObservable.notifyObservers(e),t){let r=e.getChildMeshes();for(let s of r)this.removeMesh(s)}return i}addTransformNode(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneTransformNodesArray!==-1||(e._indexInSceneTransformNodesArray=this.transformNodes.length,this.transformNodes.push(e),e.parent||e._addToSceneRootNodes(),this.onNewTransformNodeAddedObservable.notifyObservers(e))}removeTransformNode(e){let t=e._indexInSceneTransformNodesArray;if(t!==-1){if(t!==this.transformNodes.length-1){let i=this.transformNodes[this.transformNodes.length-1];this.transformNodes[t]=i,i._indexInSceneTransformNodesArray=t}e._indexInSceneTransformNodesArray=-1,this.transformNodes.pop(),e.parent||e._removeFromSceneRootNodes()}return this.onTransformNodeRemovedObservable.notifyObservers(e),t}removeSkeleton(e){let t=this.skeletons.indexOf(e);return t!==-1&&(this.skeletons.splice(t,1),this.onSkeletonRemovedObservable.notifyObservers(e),this._executeActiveContainerCleanup(this._activeSkeletons)),t}removeMorphTargetManager(e){let t=this.morphTargetManagers.indexOf(e);return t!==-1&&this.morphTargetManagers.splice(t,1),t}removeLight(e){let t=this.lights.indexOf(e);if(t!==-1){for(let i of this.meshes)i._removeLightSource(e,!1);this.lights.splice(t,1),this.sortLightsByPriority(),e.parent||e._removeFromSceneRootNodes(),this.onLightRemovedObservable.notifyObservers(e)}return t}removeCamera(e){let t=this.cameras.indexOf(e);if(t!==-1&&(this.cameras.splice(t,1),e.parent||e._removeFromSceneRootNodes()),this.activeCameras){let i=this.activeCameras.indexOf(e);i!==-1&&this.activeCameras.splice(i,1)}return this.activeCamera===e&&(this.cameras.length>0?this.activeCamera=this.cameras[0]:this.activeCamera=null),this.onCameraRemovedObservable.notifyObservers(e),t}removeParticleSystem(e){let t=this.particleSystems.indexOf(e);return t!==-1&&(this.particleSystems.splice(t,1),this._executeActiveContainerCleanup(this._activeParticleSystems)),this.onParticleSystemRemovedObservable.notifyObservers(e),t}removeAnimation(e){let t=this.animations.indexOf(e);return t!==-1&&this.animations.splice(t,1),t}stopAnimation(e,t,i){}removeAnimationGroup(e){let t=this.animationGroups.indexOf(e);return t!==-1&&this.animationGroups.splice(t,1),this.onAnimationGroupRemovedObservable.notifyObservers(e),t}removeMultiMaterial(e){let t=this.multiMaterials.indexOf(e);return t!==-1&&this.multiMaterials.splice(t,1),this.onMultiMaterialRemovedObservable.notifyObservers(e),t}removeMaterial(e){let t=e._indexInSceneMaterialArray;if(t!==-1&&t{this.onNewLightAddedObservable.notifyObservers(e)})}}sortLightsByPriority(){this.requireLightSorting&&this.lights.sort(jt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),pe.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),pe.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),pe.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),pe.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),pe.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),pe.SetImmediate(()=>{this.onNewMaterialAddedObservable.notifyObservers(e)}))}addMorphTargetManager(e){this._blockEntityCollection||this.morphTargetManagers.push(e)}addGeometry(e){this._blockEntityCollection||(this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=this.geometries.length),this.geometries.push(e))}addActionManager(e){this.actionManagers.push(e)}addTexture(e){this._blockEntityCollection||(this.textures.push(e),this.onNewTextureAddedObservable.notifyObservers(e))}addFrameGraph(e){this.frameGraphs.push(e),pe.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),pe.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),pe.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),pe.SetImmediate(()=>{this.onNewEffectLayerAddedObservable.notifyObservers(e)}))}switchActiveCamera(e,t=!0){this._engine.getInputElement()&&(this.activeCamera&&this.activeCamera.detachControl(),this.activeCamera=e,t&&e.attachControl())}setActiveCameraById(e){let t=this.getCameraById(e);return t?(this.activeCamera=t,t):null}setActiveCameraByName(e){let t=this.getCameraByName(e);return t?(this.activeCamera=t,t):null}getAnimationGroupByName(e){for(let t=0;ti.uniqueId===e)}getMaterialById(e,t=!1){return this._getMaterial(t,i=>i.id===e)}getMaterialByName(e,t=!1){return this._getMaterial(t,i=>i.name===e)}getLastMaterialById(e,t=!1){for(let i=this.materials.length-1;i>=0;i--)if(this.materials[i].id===e)return this.materials[i];if(t){for(let i=this.multiMaterials.length-1;i>=0;i--)if(this.multiMaterials[i].id===e)return this.multiMaterials[i]}return null}getTextureByUniqueId(e){for(let t=0;t{this.onNewGeometryAddedObservable.notifyObservers(e)}),!0)}removeGeometry(e){let t;if(this._geometriesByUniqueId){if(t=this._geometriesByUniqueId[e.uniqueId],t===void 0)return!1}else if(t=this.geometries.indexOf(e),t<0)return!1;if(t!==this.geometries.length-1){let i=this.geometries[this.geometries.length-1];i&&(this.geometries[t]=i,this._geometriesByUniqueId&&(this._geometriesByUniqueId[i.uniqueId]=t))}return this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=void 0),this.geometries.pop(),this.onGeometryRemovedObservable.notifyObservers(e),!0}getGeometries(){return this.geometries}getMeshById(e){for(let t=0;t=0;t--)if(this.meshes[t].id===e)return this.meshes[t];return null}getLastTransformNodeById(e){for(let t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];return null}getLastEntryById(e){let t;for(t=this.meshes.length-1;t>=0;t--)if(this.meshes[t].id===e)return this.meshes[t];for(t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];for(t=this.cameras.length-1;t>=0;t--)if(this.cameras[t].id===e)return this.cameras[t];for(t=this.lights.length-1;t>=0;t--)if(this.lights[t].id===e)return this.lights[t];for(t=this.skeletons.length-1;t>=0;t--){let i=this.skeletons[t];for(let r=i.bones.length-1;r>=0;r--)if(i.bones[r].id===e)return i.bones[r]}return null}getNodeById(e){let t=this.getMeshById(e);if(t)return t;let i=this.getTransformNodeById(e);if(i)return i;let r=this.getLightById(e);if(r)return r;let s=this.getCameraById(e);if(s)return s;let a=this.getBoneById(e);return a||null}getNodeByName(e){let t=this.getMeshByName(e);if(t)return t;let i=this.getTransformNodeByName(e);if(i)return i;let r=this.getLightByName(e);if(r)return r;let s=this.getCameraByName(e);if(s)return s;let a=this.getBoneByName(e);return a||null}getMeshByName(e){for(let t=0;t=0;t--)if(this.skeletons[t].id===e)return this.skeletons[t];return null}getSkeletonByUniqueId(e){for(let t=0;t{let o=!0,l=!0;for(let c of a)o&&(o=c.objectRenderer._isFrozen),l&&(l=c.objectRenderer._freezeActiveMeshesCancel!==null);if(o)return!0;if(!l)throw new Error("Freezing active meshes was cancelled");return!1},()=>{this._freezeActiveMeshesCancel=null,this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,t==null||t()},(o,l)=>{if(this._freezeActiveMeshesCancel=null,this.unfreezeActiveMeshes(),l){let c="Scene: Timeout while waiting for meshes to be frozen.";i?i(c):(ee.Error(c),o&&ee.Error(o))}else{let c="Scene: An unexpected error occurred while trying to freeze active meshes.";i?i(c):(ee.Error(c),o&&(ee.Error(o),o.stack&&ee.Error(o.stack)))}}),this}return this.executeWhenReady(()=>{if(!this.activeCamera){i&&i("No active camera found");return}if(this._frustumPlanes||this.updateTransformMatrix(),this._evaluateActiveMeshes(),this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,r)for(let a=0;ae.dispose())}_evaluateActiveMeshes(){var i;if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1){this._activeMeshes.length>0&&((i=this.activeCamera)==null||i._activeMeshes.reset(),this._activeMeshes.reset(),this._renderingManager.reset(),this._processedMaterials.reset(),this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset());return}if(this._activeMeshesFrozen&&this._activeMeshes.length){if(!this._skipEvaluateActiveMeshesCompletely){let r=this._activeMeshes.length;for(let s=0;s0&&(s.layerMask&this.activeCamera.layerMask)!==0&&(this._skipFrustumClipping||s.alwaysSelectAsActiveMesh||s.isInFrustum(this._frustumPlanes)))){this._activeMeshes.push(s),this.activeCamera._activeMeshes.push(s),o!==s&&o._activate(this._renderId,!1);for(let l of this._preActiveMeshStage)l.action(s);s._activate(this._renderId,!1)&&(s.isAnInstance?s._internalAbstractMeshDataInfo._actAsRegularMesh&&(o=s):o._internalAbstractMeshDataInfo._onlyForInstances=!1,o._internalAbstractMeshDataInfo._isActive=!0,this._activeMesh(s,o)),s._postActivate()}}if(this.onAfterActiveMeshesEvaluationObservable.notifyObservers(this),this.particlesEnabled){this.onBeforeParticlesRenderingObservable.notifyObservers(this);for(let r=0;r0){let r=this.getActiveSubMeshCandidates(t),s=r.length;i=i||s===1;for(let a=0;a0&&this._renderTargets.concatWithNoDuplicate(e.customRenderTargets),t&&t.customRenderTargets&&t.customRenderTargets.length>0&&this._renderTargets.concatWithNoDuplicate(t.customRenderTargets),this.environmentTexture&&this.environmentTexture.isRenderTarget&&this._renderTargets.pushNoDuplicate(this.environmentTexture);for(let h of this._gatherActiveCameraRenderTargetsStage)h.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let h;if(this._renderTargets.length>0){pe.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let u=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?u.renderList.data.slice():[],h.length=u.renderList.length),_.render(p,this.dumpNextRenderTargets),s=!0}}u&&h&&(u.renderList.data=h,u.renderList.length=h.length),pe.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let u=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);u&&!h&&(h=u.renderList.length>0?u.renderList.data.slice():[],h.length=u.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;u&&h&&(u.renderList.data=h,u.renderList.length=h.length)}this._intermediateRendering=!1}s&&!this.prePass&&(this._bindFrameBuffer(this._activeCamera,!1),this.updateTransformMatrix()),this.onAfterRenderTargetsRenderObservable.notifyObservers(this),this.postProcessManager&&!e._multiviewTexture&&!this.prePass&&this.postProcessManager._prepareFrame();for(let h of this._beforeCameraDrawStage)h.action(this.activeCamera);this.onBeforeDrawPhaseObservable.notifyObservers(this);let a=r.snapshotRendering&&r.snapshotRenderingMode===1;a&&this.finalizeSceneUbo(),this._renderingManager.render(null,null,!0,!a),this.onAfterDrawPhaseObservable.notifyObservers(this);for(let h of this._afterCameraDrawStage)h.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let h=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,h)}for(let h of this._afterCameraPostProcessStage)h.action(this.activeCamera);this._renderTargets.reset(),this.onAfterCameraRenderObservable.notifyObservers(this.activeCamera)}_processSubCameras(e,t=!0){if(e.cameraRigMode===0||e._renderingMultiview){e._renderingMultiview&&!this._multiviewSceneUbo&&this._createMultiviewUbo(),this._renderForCamera(e,void 0,t),this.onAfterRenderCameraObservable.notifyObservers(e);return}if(e._useMultiviewToSingleView)this._renderMultiviewToSingleView(e);else{this.onBeforeCameraRenderObservable.notifyObservers(e);for(let i=0;i-1&&(r.trigger===13&&r._executeCurrent(hn.CreateNew(t,void 0,a)),(!t.actionManager.hasSpecificTrigger(13,c=>{let f=c.mesh?c.mesh:c;return a===f})||r.trigger===13)&&t._intersectionsInProgress.splice(l,1))}}}}_advancePhysicsEngineStep(e){}_animate(e){}animate(){if(this._engine.isDeterministicLockStep()){let e=Math.max(n.MinDeltaTime,Math.min(this._engine.getDeltaTime(),n.MaxDeltaTime))+this._timeAccumulator,t=this._engine.getTimeStep(),i=1e3/t/1e3,r=0,s=this._engine.getLockstepMaxSteps(),a=Math.floor(e/t);for(a=Math.min(a,s);e>0&&r0);for(let l=0;l0),this._renderId++}this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let l of this._beforeClearStage)l.action();if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1)this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset();else{let l=this.getActiveMeshCandidates(),c=l.length;if(this._activeMeshesFrozen){if(!this._skipEvaluateActiveMeshesCompletely)for(let f=0;f0)for(let a=0;a0);for(let o=0;o0),this._renderId++}this._engine.currentRenderPassId=(s=a==null?void 0:a.renderPassId)!=null?s:0,this.activeCamera=a,this._activeCamera&&this._activeCamera.cameraRigMode!==22&&!this.prePass&&this._bindFrameBuffer(this._activeCamera,!1),this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let o of this._beforeClearStage)o.action();this._clearFrameBuffer(this.activeCamera);for(let o of this._gatherRenderTargetsStage)o.action(this._renderTargets);if(this.activeCameras&&this.activeCameras.length>0)for(let o=0;o0);else{if(!this.activeCamera)throw new Error("No camera defined");this._processSubCameras(this.activeCamera,!!this.activeCamera.outputRenderTarget)}}this._checkIntersections();for(let a of this._afterRenderStage)a.action();if(this.afterRender&&this.afterRender(),this.onAfterRenderObservable.notifyObservers(this),this._toBeDisposed.length){for(let a=0;as.dispose(!0)),this._disposeList(this.transformNodes,s=>s.dispose(!0));let i=this.cameras;this._disposeList(i),this._disposeList(this.particleSystems),this._disposeList(this.postProcesses),this._disposeList(this.textures),this._disposeList(this.morphTargetManagers),this._disposeList(this.frameGraphs),this._sceneUbo.dispose(),this._multiviewSceneUbo&&this._multiviewSceneUbo.dispose(),this.postProcessManager.dispose(),this._disposeList(this._components);let r=this._engine.scenes.indexOf(this);if(r>-1&&this._engine.scenes.splice(r,1),this._floatingOriginScene=void 0,this._engine.scenes.length===0&&zG(),Oe._LastCreatedScene===this){Oe._LastCreatedScene=null;let s=Oe.Instances.length-1;for(;s>=0;){let a=Oe.Instances[s];if(a.scenes.length>0){Oe._LastCreatedScene=a.scenes[this._engine.scenes.length-1];break}s--}}r=this._engine._virtualScenes.indexOf(this),r>-1&&this._engine._virtualScenes.splice(r,1),this._engine.wipeCaches(!0),this.onDisposeObservable.clear(),this.onBeforeRenderObservable.clear(),this.onAfterRenderObservable.clear(),this.onBeforeRenderTargetsRenderObservable.clear(),this.onAfterRenderTargetsRenderObservable.clear(),this.onAfterStepObservable.clear(),this.onBeforeStepObservable.clear(),this.onBeforeActiveMeshesEvaluationObservable.clear(),this.onAfterActiveMeshesEvaluationObservable.clear(),this.onBeforeParticlesRenderingObservable.clear(),this.onAfterParticlesRenderingObservable.clear(),this.onBeforeDrawPhaseObservable.clear(),this.onAfterDrawPhaseObservable.clear(),this.onBeforeAnimationsObservable.clear(),this.onAfterAnimationsObservable.clear(),this.onDataLoadedObservable.clear(),this.onBeforeRenderingGroupObservable.clear(),this.onAfterRenderingGroupObservable.clear(),this.onMeshImportedObservable.clear(),this.onBeforeCameraRenderObservable.clear(),this.onAfterCameraRenderObservable.clear(),this.onAfterRenderCameraObservable.clear(),this.onReadyObservable.clear(),this.onNewCameraAddedObservable.clear(),this.onCameraRemovedObservable.clear(),this.onNewLightAddedObservable.clear(),this.onLightRemovedObservable.clear(),this.onNewGeometryAddedObservable.clear(),this.onGeometryRemovedObservable.clear(),this.onNewTransformNodeAddedObservable.clear(),this.onTransformNodeRemovedObservable.clear(),this.onNewMeshAddedObservable.clear(),this.onMeshRemovedObservable.clear(),this.onNewSkeletonAddedObservable.clear(),this.onSkeletonRemovedObservable.clear(),this.onNewMaterialAddedObservable.clear(),this.onNewMultiMaterialAddedObservable.clear(),this.onMaterialRemovedObservable.clear(),this.onMultiMaterialRemovedObservable.clear(),this.onNewTextureAddedObservable.clear(),this.onTextureRemovedObservable.clear(),this.onNewFrameGraphAddedObservable.clear(),this.onFrameGraphRemovedObservable.clear(),this.onNewObjectRendererAddedObservable.clear(),this.onObjectRendererRemovedObservable.clear(),this.onPrePointerObservable.clear(),this.onPointerObservable.clear(),this.onPreKeyboardObservable.clear(),this.onKeyboardObservable.clear(),this.onActiveCameraChanged.clear(),this.onScenePerformancePriorityChangedObservable.clear(),this.onClearColorChangedObservable.clear(),this.onEnvironmentTextureChangedObservable.clear(),this.onMeshUnderPointerUpdatedObservable.clear(),this._isDisposed=!0}_disposeList(e,t){let i=e.slice(0);t=t!=null?t:(r=>r.dispose());for(let r of i)t(r);e.length=0}get isDisposed(){return this._isDisposed}clearCachedVertexData(){for(let e=0;e!0);let r=this.meshes.filter(e);for(let s of r){if(s.computeWorldMatrix(!0),!s.subMeshes||s.subMeshes.length===0||s.infiniteDistance)continue;let a=s.getBoundingInfo(),o=a.boundingBox.minimumWorld,l=a.boundingBox.maximumWorld;b.CheckExtends(o,t,i),b.CheckExtends(l,t,i)}return t.x===Number.MAX_VALUE?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}createPickingRay(e,t,i,r,s=!1){throw Qe("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw Qe("Ray")}createPickingRayInCameraSpace(e,t,i){throw Qe("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw Qe("Ray")}pick(e,t,i,r,s,a){let o=Qe("Ray",!0);return o&&ee.Warn(o),new Ts}pickWithBoundingInfo(e,t,i,r,s){let a=Qe("Ray",!0);return a&&ee.Warn(a),new Ts}pickWithRay(e,t,i,r){throw Qe("Ray")}multiPick(e,t,i,r,s){throw Qe("Ray")}multiPickWithRay(e,t,i){throw Qe("Ray")}setPointerOverMesh(e,t,i){this._inputManager.setPointerOverMesh(e,t,i)}getPointerOverMesh(){return this._inputManager.getPointerOverMesh()}_rebuildGeometries(){for(let e of this.geometries)e._rebuild();for(let e of this.meshes)e._rebuild();this.postProcessManager&&this.postProcessManager._rebuild();for(let e of this._components)e.rebuild();for(let e of this.particleSystems)e.rebuild();if(this.spriteManagers)for(let e of this.spriteManagers)e.rebuild()}_rebuildTextures(){for(let e of this.textures)e._rebuild(!0);this.markAllMaterialsAsDirty(1)}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];ei&&ei.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}setRenderingOrder(e,t=null,i=null,r=null){this._renderingManager.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t,i=!0,r=!0){this._renderingManager.setRenderingAutoClearDepthStencil(e,t,i,r)}getAutoClearDepthStencilSetup(e){return this._renderingManager.getAutoClearDepthStencilSetup(e)}_forceBlockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism=e}get blockMaterialDirtyMechanism(){return this._blockMaterialDirtyMechanism}set blockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism!==e&&(this._blockMaterialDirtyMechanism=e,e||this.markAllMaterialsAsDirty(127))}markAllMaterialsAsDirty(e,t){if(!this._blockMaterialDirtyMechanism)for(let i of this.materials)t&&!t(i)||i.markAsDirty(e)}_loadFile(e,t,i,r,s,a,o){let l=El(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _loadFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._loadFile(e,l=>{a(l)},t,i,r,(l,c)=>{o(c)},s)})}_requestFile(e,t,i,r,s,a,o){let l=Ex(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _requestFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._requestFile(e,l=>{a(l)},t,i,r,l=>{o(l)},s)})}_readFile(e,t,i,r,s){let a=vh(e,t,i,r,s);return this._activeRequests.push(a),a.onCompleteObservable.add(o=>{this._activeRequests.splice(this._activeRequests.indexOf(o),1)}),a}async _readFileAsync(e,t,i){return await new Promise((r,s)=>{this._readFile(e,a=>{r(a)},t,i,a=>{s(a)})})}getPerfCollector(){throw Qe("performanceViewerSceneExtension")}setActiveCameraByID(e){return this.setActiveCameraById(e)}getMaterialByID(e){return this.getMaterialById(e)}getLastMaterialByID(e){return this.getLastMaterialById(e)}getTextureByUniqueID(e){return this.getTextureByUniqueId(e)}getCameraByID(e){return this.getCameraById(e)}getCameraByUniqueID(e){return this.getCameraByUniqueId(e)}getBoneByID(e){return this.getBoneById(e)}getLightByID(e){return this.getLightById(e)}getLightByUniqueID(e){return this.getLightByUniqueId(e)}getParticleSystemByID(e){return this.getParticleSystemById(e)}getGeometryByID(e){return this.getGeometryById(e)}getMeshByID(e){return this.getMeshById(e)}getMeshByUniqueID(e){return this.getMeshByUniqueId(e)}getLastMeshByID(e){return this.getLastMeshById(e)}getMeshesByID(e){return this.getMeshesById(e)}getTransformNodeByID(e){return this.getTransformNodeById(e)}getTransformNodeByUniqueID(e){return this.getTransformNodeByUniqueId(e)}getTransformNodesByID(e){return this.getTransformNodesById(e)}getNodeByID(e){return this.getNodeById(e)}getLastEntryByID(e){return this.getLastEntryById(e)}getLastSkeletonByID(e){return this.getLastSkeletonById(e)}};ti.FOGMODE_NONE=0;ti.FOGMODE_EXP=1;ti.FOGMODE_EXP2=2;ti.FOGMODE_LINEAR=3;ti.MinDeltaTime=1;ti.MaxDeltaTime=1e3;ti._OriginalDefaultMaterialFactory=ti.DefaultMaterialFactory;Ut("BABYLON.Scene",ti)});var ck,Tce,Ha=I(()=>{k();ck="helperFunctions",Tce=`const PI: f32=3.141592653589793;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08; +}`;x.ShadersStore[EP]||(x.ShadersStore[EP]=pG);uce={name:EP,shader:pG}});var uc,Xg,SP=I(()=>{Sh();Gi();uc=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(dG(),fG))]))):t.push(Promise.all([Promise.resolve().then(()=>(uP(),hP))])),super._gatherImports(e,t)}constructor(e,t=null,i){let r={name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,...i};r.engine||(r.engine=Oe.LastCreatedEngine),super(r)}};uc.FragmentUrl="pass";Xg=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.all([Promise.resolve().then(()=>(mG(),uG))]))):t.push(Promise.all([Promise.resolve().then(()=>(gG(),_G))])),super._gatherImports(e,t)}constructor(e,t=null,i){super({...i,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,defines:"#define POSITIVEX"}),this._face=0}get face(){return this._face}set face(e){if(!(e<0||e>5))switch(this._face=e,this._face){case 0:this.updateEffect("#define POSITIVEX");break;case 1:this.updateEffect("#define NEGATIVEX");break;case 2:this.updateEffect("#define POSITIVEY");break;case 3:this.updateEffect("#define NEGATIVEY");break;case 4:this.updateEffect("#define POSITIVEZ");break;case 5:this.updateEffect("#define NEGATIVEZ");break}}};Xg.FragmentUrl="passCube"});var Th,TP,AP=I(()=>{Wt();hc();zr();$i();Dr();SP();kt();Th=class n extends Ci{getClassName(){return"PassPostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,uc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new uc(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return nt.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};Ut("BABYLON.PassPostProcess",Th);TP=class n extends Ci{get face(){return this._effectWrapper.face}set face(e){this._effectWrapper.face=e}getClassName(){return"PassCubePostProcess"}constructor(e,t,i=null,r,s,a,o=0,l=!1){let c={size:typeof t=="number"?t:void 0,camera:i,samplingMode:r,engine:s,reusable:a,textureType:o,blockCompilation:l,...t};super(e,uc.FragmentUrl,{effectWrapper:typeof t=="number"||!t.effectWrapper?new Xg(e,s,c):void 0,...c})}static _Parse(e,t,i,r){return nt.Parse(()=>new n(e.name,e.options,t,e.renderTargetSamplingMode,e._engine,e.reusable),e,i,r)}};P([F()],TP.prototype,"face",null);Re._RescalePostProcessFactory=n=>new Th("rescale",1,null,2,n,!1,0)});function EG(n,e,t,i,r,s,a,o){let l=e.getEngine();return e.isReady=!1,r=r!=null?r:e.samplingMode,i=i!=null?i:e.type,s=s!=null?s:e.format,a=a!=null?a:e.width,o=o!=null?o:e.height,i===-1&&(i=0),new Promise(c=>{let f=new Ci("postprocess",n,null,null,1,null,r,l,!1,void 0,i,void 0,null,!1,s);f.externalTextureSamplerBinding=!0;let d=l.createRenderTargetTexture({width:a,height:o},{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:r,type:i,format:s});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",e),u.setFloat2("scale",1,1)},t.postProcessManager.directRender([f],d,!0),l.restoreDefaultFramebuffer(),l._releaseTexture(e),f&&f.dispose(),d._swapAndDie(e),e.type=i,e.format=5,e.isReady=!0,c(e)})})})}function Ah(n){yx||(yx=new Float32Array(1),vG=new Int32Array(yx.buffer)),yx[0]=n;let e=vG[0],t=e>>16&32768,i=e>>12&2047,r=e>>23&255;return r<103?t:r>142?(t|=31744,t|=(r==255?0:1)&&e&8388607,t):r<113?(i|=2048,t|=(i>>114-r)+(i>>113-r&1),t):(t|=r-112<<10|i>>1,t+=i&1,t)}function mc(n){let e=(n&32768)>>15,t=(n&31744)>>10,i=n&1023;return t===0?(e?-1:1)*Math.pow(2,-14)*(i/Math.pow(2,10)):t==31?i?NaN:(e?-1:1)*(1/0):(e?-1:1)*Math.pow(2,t-15)*(1+i/Math.pow(2,10))}var yx,vG,xP=I(()=>{Xr();wf();AP();hc();jn()});function bP(n){return n.split(" ").filter(e=>e!=="").map(e=>parseFloat(e))}function RP(n,e,t){for(;t.length!==e;){let i=bP(n.lines[n.index++]);t.push(...i)}}function mce(n,e,t){let i=0,r=0,s=0,a=0,o=0,l=0;for(let g=0;g0&&!i.lines[i.index].includes("TILT=");)i.index++;i.lines[i.index].includes("INCLUDE"),i.index++;let s=bP(i.lines[i.index++]);r.numberOfLights=s[0],r.lumensPerLamp=s[1],r.candelaMultiplier=s[2],r.numberOfVerticalAngles=s[3],r.numberOfHorizontalAngles=s[4],r.photometricType=s[5],r.unitsType=s[6],r.width=s[7],r.length=s[8],r.height=s[9];let a=bP(i.lines[i.index++]);r.ballastFactor=a[0],r.fileGenerationType=a[1],r.inputWatts=a[2];for(let m=0;m0)for(let m=0;m=u)&&(_%=u*2,_>u&&(_=u*2-_)),d[p+_*l]=mce(r,p,_)}return{width:c/2,height:1,data:d}}var TG=I(()=>{jn()});var AG={};Fe(AG,{_IESTextureLoader:()=>MP});var MP,xG=I(()=>{TG();MP=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".ies not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=SG(r);i(s.width,s.height,!!t.useMipMaps,!1,()=>{let a=t.getEngine();t.type=1,t.format=6,t._gammaSpace=!1,a._uploadDataToTextureDirectly(t,s.data)})}}});var RG={};Fe(RG,{_DDSTextureLoader:()=>IP});var IP,bG=I(()=>{Ng();yP();IP=class{constructor(){this.supportCascades=!0}loadCubeData(e,t,i,r){let s=t.getEngine(),a,o=!1,l=1e3;if(Array.isArray(e))for(let c=0;c1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),Io.UploadDDSLevels(s,t,f,a,o,6,-1,c),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t):l=a.mipmapCount-1}else{let c=e;a=Io.GetDDSInfo(c),t.width=a.width,t.height=a.height,i&&(a.sphericalPolynomial=new gl),o=(a.isRGB||a.isLuminance||a.mipmapCount>1)&&t.generateMipMaps,s._unpackFlipY(a.isCompressed),Io.UploadDDSLevels(s,t,c,a,o,6),!a.isFourCC&&a.mipmapCount===1?s.generateMipMapsForCubemap(t,!1):l=a.mipmapCount-1}s._setCubeMapTextureParams(t,o,l),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r({isDDS:!0,width:t.width,info:a,data:e,texture:t})}loadData(e,t,i){let r=Io.GetDDSInfo(e),s=(r.isRGB||r.isLuminance||r.mipmapCount>1)&&t.generateMipMaps&&Math.max(r.width,r.height)>>r.mipmapCount-1===1;i(r.width,r.height,s,r.isFourCC,()=>{Io.UploadDDSLevels(t.getEngine(),t,e,r,s,1)})}}});function MG(){let n={cTFETC1:0,cTFETC2:1,cTFBC1:2,cTFBC3:3,cTFBC4:4,cTFBC5:5,cTFBC7:6,cTFPVRTC1_4_RGB:8,cTFPVRTC1_4_RGBA:9,cTFASTC_4x4:10,cTFATC_RGB:11,cTFATC_RGBA_INTERPOLATED_ALPHA:12,cTFRGBA32:13,cTFRGB565:14,cTFBGR565:15,cTFRGBA4444:16,cTFFXT1_RGB:17,cTFPVRTC2_4_RGB:18,cTFPVRTC2_4_RGBA:19,cTFETC2_EAC_R11:20,cTFETC2_EAC_RG11:21},e=null;onmessage=a=>{if(a.data.action==="init"){if(a.data.url)try{importScripts(a.data.url)}catch(o){postMessage({action:"error",error:o})}e||(e=BASIS({wasmBinary:a.data.wasmBinary})),e!==null&&e.then(o=>{BASIS=o,o.initializeBasis(),postMessage({action:"init"})})}else if(a.data.action==="transcode"){let o=a.data.config,l=a.data.imageData,c=new BASIS.BasisFile(l),f=i(c),d=a.data.ignoreSupportedFormats?null:t(a.data.config,f),h=!1;d===null&&(h=!0,d=f.hasAlpha?n.cTFBC3:n.cTFBC1);let u=!0;c.startTranscoding()||(u=!1);let m=[];for(let _=0;_>2&3],d[T++]=f[v>>4&3],d[T]=f[v>>6&3]}}return d}}async function IG(n,e,t){return await new Promise((i,r)=>{let s=a=>{a.data.action==="init"?(n.removeEventListener("message",s),i(n)):a.data.action==="error"&&r(a.data.error||"error initializing worker")};n.addEventListener("message",s),n.postMessage({action:"init",url:t?pe.GetBabylonScriptURL(t):void 0,wasmBinary:e},[e])})}var yG=I(()=>{wi()});var pc,Ff,pce,CP,xh,_ce,gce,vce,Px,Cx,Dx,PP,CG=I(()=>{wi();Xr();Ws();yG();(function(n){n[n.cTFETC1=0]="cTFETC1",n[n.cTFETC2=1]="cTFETC2",n[n.cTFBC1=2]="cTFBC1",n[n.cTFBC3=3]="cTFBC3",n[n.cTFBC4=4]="cTFBC4",n[n.cTFBC5=5]="cTFBC5",n[n.cTFBC7=6]="cTFBC7",n[n.cTFPVRTC1_4_RGB=8]="cTFPVRTC1_4_RGB",n[n.cTFPVRTC1_4_RGBA=9]="cTFPVRTC1_4_RGBA",n[n.cTFASTC_4x4=10]="cTFASTC_4x4",n[n.cTFATC_RGB=11]="cTFATC_RGB",n[n.cTFATC_RGBA_INTERPOLATED_ALPHA=12]="cTFATC_RGBA_INTERPOLATED_ALPHA",n[n.cTFRGBA32=13]="cTFRGBA32",n[n.cTFRGB565=14]="cTFRGB565",n[n.cTFBGR565=15]="cTFBGR565",n[n.cTFRGBA4444=16]="cTFRGBA4444",n[n.cTFFXT1_RGB=17]="cTFFXT1_RGB",n[n.cTFPVRTC2_4_RGB=18]="cTFPVRTC2_4_RGB",n[n.cTFPVRTC2_4_RGBA=19]="cTFPVRTC2_4_RGBA",n[n.cTFETC2_EAC_R11=20]="cTFETC2_EAC_R11",n[n.cTFETC2_EAC_RG11=21]="cTFETC2_EAC_RG11"})(pc||(pc={}));Ff={JSModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.js`,WasmModuleURL:`${pe._DefaultCdnUrl}/basisTranscoder/1/basis_transcoder.wasm`},pce=(n,e)=>{let t;switch(n){case pc.cTFETC1:t=36196;break;case pc.cTFBC1:t=33776;break;case pc.cTFBC4:t=33779;break;case pc.cTFASTC_4x4:t=37808;break;case pc.cTFETC2:t=37496;break;case pc.cTFBC7:t=36492;break}if(t===void 0)throw"The chosen Basis transcoder format is not currently supported";return t},CP=null,xh=null,_ce=0,gce=!1,vce=async()=>(CP||(CP=new Promise((n,e)=>{xh?n(xh):pe.LoadFileAsync(pe.GetBabylonScriptURL(Ff.WasmModuleURL)).then(t=>{if(typeof URL!="function")return e("Basis transcoder requires an environment with a URL constructor");let i=URL.createObjectURL(new Blob([`(${MG})()`],{type:"application/javascript"}));xh=new Worker(i),IG(xh,t,Ff.JSModuleURL).then(n,e)}).catch(e)})),await CP),Px=async(n,e)=>{let t=n instanceof ArrayBuffer?new Uint8Array(n):n;return await new Promise((i,r)=>{vce().then(()=>{let s=_ce++,a=l=>{l.data.action==="transcode"&&l.data.id===s&&(xh.removeEventListener("message",a),l.data.success?i(l.data):r("Transcode is not supported on this device"))};xh.addEventListener("message",a);let o=new Uint8Array(t.byteLength);o.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),xh.postMessage({action:"transcode",id:s,imageData:o,config:e,ignoreSupportedFormats:gce},[o.buffer])},s=>{r(s)})})},Cx=(n,e)=>{var i,r;let t=(i=e._gl)==null?void 0:i.TEXTURE_2D;n.isCube&&(t=(r=e._gl)==null?void 0:r.TEXTURE_CUBE_MAP),e._bindTextureDirectly(t,n,!0)},Dx=(n,e)=>{let t=n.getEngine();for(let i=0;i{t._releaseTexture(s),Cx(n,t)})}else n._invertVScale=!n.invertY,n.width=r.width+3&-4,n.height=r.height+3&-4,n.samplingMode=2,Cx(n,t),t._uploadDataToTextureDirectly(n,new Uint16Array(r.transcodedPixels.buffer),i,0,4,!0);else{n.width=r.width,n.height=r.height,n.generateMipMaps=e.fileInfo.images[i].levels.length>1;let s=PP.GetInternalFormatFromBasisFormat(e.format,t);n.format=s,Cx(n,t);let a=e.fileInfo.images[i].levels;for(let o=0;oDP});var DP,DG=I(()=>{CG();wi();DP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=t.getEngine().getCaps(),o={supportedCompressionFormats:{etc1:!!a.etc1,s3tc:!!a.s3tc,pvrtc:!!a.pvrtc,etc2:!!a.etc2,astc:!!a.astc,bc7:!!a.bptc}};Px(e,o).then(l=>{let c=l.fileInfo.images[0].levels.length>1&&t.generateMipMaps;Dx(t,l),t.getEngine()._setCubeMapTextureParams(t,c),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}).catch(l=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),t.isReady=!0,s&&s(l)})}loadData(e,t,i){let r=t.getEngine().getCaps(),s={supportedCompressionFormats:{etc1:!!r.etc1,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,astc:!!r.astc,bc7:!!r.bptc}};Px(e,s).then(a=>{let o=a.fileInfo.images[0].levels[0],l=a.fileInfo.images[0].levels.length>1&&t.generateMipMaps;i(o.width,o.height,l,a.format!==-1,()=>{Dx(t,a)})}).catch(a=>{pe.Warn("Failed to transcode Basis file, transcoding may not be supported on this device"),pe.Warn(`Failed to transcode Basis file: ${a}`),i(0,0,!1,!1,()=>{},!0)})}}});var Yg,LG=I(()=>{Yg=class{constructor(){this._count=0,this._data={}}copyFrom(e){this.clear(),e.forEach((t,i)=>this.add(t,i))}get(e){let t=this._data[e];if(t!==void 0)return t}getOrAddWithFactory(e,t){let i=this.get(e);return i!==void 0||(i=t(e),i&&this.add(e,i)),i}getOrAdd(e,t){let i=this.get(e);return i!==void 0?i:(this.add(e,t),t)}contains(e){return this._data[e]!==void 0}add(e,t){return this._data[e]!==void 0?!1:(this._data[e]=t,++this._count,!0)}set(e,t){return this._data[e]===void 0?!1:(this._data[e]=t,!0)}getAndRemove(e){let t=this.get(e);return t!==void 0?(delete this._data[e],--this._count,t):null}remove(e){return this.contains(e)?(delete this._data[e],--this._count,!0):!1}clear(){this._data={},this._count=0}get count(){return this._count}forEach(e){for(let t in this._data){let i=this._data[t];e(t,i)}}first(e){for(let t in this._data){let i=this._data[t],r=e(t,i);if(r)return r}return null}}});function Lx(n){n.push("vCameraColorCurveNeutral","vCameraColorCurvePositive","vCameraColorCurveNegative")}var LP=I(()=>{});var dn,OG=I(()=>{Wt();kt();zt();Dr();LP();dn=class n{constructor(){this._dirty=!0,this._tempColor=new ft(0,0,0,0),this._globalCurve=new ft(0,0,0,0),this._highlightsCurve=new ft(0,0,0,0),this._midtonesCurve=new ft(0,0,0,0),this._shadowsCurve=new ft(0,0,0,0),this._positiveCurve=new ft(0,0,0,0),this._negativeCurve=new ft(0,0,0,0),this._globalHue=30,this._globalDensity=0,this._globalSaturation=0,this._globalExposure=0,this._highlightsHue=30,this._highlightsDensity=0,this._highlightsSaturation=0,this._highlightsExposure=0,this._midtonesHue=30,this._midtonesDensity=0,this._midtonesSaturation=0,this._midtonesExposure=0,this._shadowsHue=30,this._shadowsDensity=0,this._shadowsSaturation=0,this._shadowsExposure=0}get globalHue(){return this._globalHue}set globalHue(e){this._globalHue=e,this._dirty=!0}get globalDensity(){return this._globalDensity}set globalDensity(e){this._globalDensity=e,this._dirty=!0}get globalSaturation(){return this._globalSaturation}set globalSaturation(e){this._globalSaturation=e,this._dirty=!0}get globalExposure(){return this._globalExposure}set globalExposure(e){this._globalExposure=e,this._dirty=!0}get highlightsHue(){return this._highlightsHue}set highlightsHue(e){this._highlightsHue=e,this._dirty=!0}get highlightsDensity(){return this._highlightsDensity}set highlightsDensity(e){this._highlightsDensity=e,this._dirty=!0}get highlightsSaturation(){return this._highlightsSaturation}set highlightsSaturation(e){this._highlightsSaturation=e,this._dirty=!0}get highlightsExposure(){return this._highlightsExposure}set highlightsExposure(e){this._highlightsExposure=e,this._dirty=!0}get midtonesHue(){return this._midtonesHue}set midtonesHue(e){this._midtonesHue=e,this._dirty=!0}get midtonesDensity(){return this._midtonesDensity}set midtonesDensity(e){this._midtonesDensity=e,this._dirty=!0}get midtonesSaturation(){return this._midtonesSaturation}set midtonesSaturation(e){this._midtonesSaturation=e,this._dirty=!0}get midtonesExposure(){return this._midtonesExposure}set midtonesExposure(e){this._midtonesExposure=e,this._dirty=!0}get shadowsHue(){return this._shadowsHue}set shadowsHue(e){this._shadowsHue=e,this._dirty=!0}get shadowsDensity(){return this._shadowsDensity}set shadowsDensity(e){this._shadowsDensity=e,this._dirty=!0}get shadowsSaturation(){return this._shadowsSaturation}set shadowsSaturation(e){this._shadowsSaturation=e,this._dirty=!0}get shadowsExposure(){return this._shadowsExposure}set shadowsExposure(e){this._shadowsExposure=e,this._dirty=!0}getClassName(){return"ColorCurves"}static Bind(e,t,i="vCameraColorCurvePositive",r="vCameraColorCurveNeutral",s="vCameraColorCurveNegative"){e._dirty&&(e._dirty=!1,e._getColorGradingDataToRef(e._globalHue,e._globalDensity,e._globalSaturation,e._globalExposure,e._globalCurve),e._getColorGradingDataToRef(e._highlightsHue,e._highlightsDensity,e._highlightsSaturation,e._highlightsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._highlightsCurve),e._getColorGradingDataToRef(e._midtonesHue,e._midtonesDensity,e._midtonesSaturation,e._midtonesExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._midtonesCurve),e._getColorGradingDataToRef(e._shadowsHue,e._shadowsDensity,e._shadowsSaturation,e._shadowsExposure,e._tempColor),e._tempColor.multiplyToRef(e._globalCurve,e._shadowsCurve),e._highlightsCurve.subtractToRef(e._midtonesCurve,e._positiveCurve),e._midtonesCurve.subtractToRef(e._shadowsCurve,e._negativeCurve)),t&&(t.setFloat4(i,e._positiveCurve.r,e._positiveCurve.g,e._positiveCurve.b,e._positiveCurve.a),t.setFloat4(r,e._midtonesCurve.r,e._midtonesCurve.g,e._midtonesCurve.b,e._midtonesCurve.a),t.setFloat4(s,e._negativeCurve.r,e._negativeCurve.g,e._negativeCurve.b,e._negativeCurve.a))}_getColorGradingDataToRef(e,t,i,r,s){e!=null&&(e=n._Clamp(e,0,360),t=n._Clamp(t,-100,100),i=n._Clamp(i,-100,100),r=n._Clamp(r,-100,100),t=n._ApplyColorGradingSliderNonlinear(t),t*=.5,r=n._ApplyColorGradingSliderNonlinear(r),t<0&&(t*=-1,e=(e+180)%360),n._FromHSBToRef(e,t,50+.25*r,s),s.scaleToRef(2,s),s.a=1+.01*i)}static _ApplyColorGradingSliderNonlinear(e){e/=100;let t=Math.abs(e);return t=Math.pow(t,2),e<0&&(t*=-1),t*=100,t}static _FromHSBToRef(e,t,i,r){let s=n._Clamp(e,0,360),a=n._Clamp(t/100,0,1),o=n._Clamp(i/100,0,1);if(a===0)r.r=o,r.g=o,r.b=o;else{s/=60;let l=Math.floor(s),c=s-l,f=o*(1-a),d=o*(1-a*c),h=o*(1-a*(1-c));switch(l){case 0:r.r=o,r.g=h,r.b=f;break;case 1:r.r=d,r.g=o,r.b=f;break;case 2:r.r=f,r.g=o,r.b=h;break;case 3:r.r=f,r.g=d,r.b=o;break;case 4:r.r=h,r.g=f,r.b=o;break;default:r.r=o,r.g=f,r.b=d;break}}r.a=1}static _Clamp(e,t,i){return Math.min(Math.max(e,t),i)}clone(){return nt.Clone(()=>new n,this)}serialize(){return nt.Serialize(this)}static Parse(e){return nt.Parse(()=>new n,e,null,null)}};dn.PrepareUniforms=Lx;P([F()],dn.prototype,"_globalHue",void 0);P([F()],dn.prototype,"_globalDensity",void 0);P([F()],dn.prototype,"_globalSaturation",void 0);P([F()],dn.prototype,"_globalExposure",void 0);P([F()],dn.prototype,"_highlightsHue",void 0);P([F()],dn.prototype,"_highlightsDensity",void 0);P([F()],dn.prototype,"_highlightsSaturation",void 0);P([F()],dn.prototype,"_highlightsExposure",void 0);P([F()],dn.prototype,"_midtonesHue",void 0);P([F()],dn.prototype,"_midtonesDensity",void 0);P([F()],dn.prototype,"_midtonesSaturation",void 0);P([F()],dn.prototype,"_midtonesExposure",void 0);nt._ColorCurvesParser=dn.Parse});function NG(n,e){e.EXPOSURE&&n.push("exposureLinear"),e.CONTRAST&&n.push("contrast"),e.COLORGRADING&&n.push("colorTransformSettings"),(e.VIGNETTE||e.DITHER)&&n.push("vInverseScreenSize"),e.VIGNETTE&&(n.push("vignetteSettings1"),n.push("vignetteSettings2")),e.COLORCURVES&&Lx(n),e.DITHER&&n.push("ditherIntensity")}function wG(n,e){e.COLORGRADING&&n.push("txColorTransform")}var FG=I(()=>{LP()});var Ht,Kg=I(()=>{Wt();kt();mi();zt();OG();Eo();Dr();FG();$i();Ht=class n{constructor(){this.colorCurves=new dn,this._colorCurvesEnabled=!1,this._colorGradingEnabled=!1,this._colorGradingWithGreenDepth=!0,this._colorGradingBGR=!0,this._exposure=1,this._toneMappingEnabled=!1,this._toneMappingType=n.TONEMAPPING_STANDARD,this._contrast=1,this.vignetteStretch=0,this.vignetteCenterX=0,this.vignetteCenterY=0,this.vignetteWeight=1.5,this.vignetteColor=new ft(0,0,0,0),this.vignetteCameraFov=.5,this._vignetteBlendMode=n.VIGNETTEMODE_MULTIPLY,this._vignetteEnabled=!1,this._ditheringEnabled=!1,this._ditheringIntensity=1/255,this._skipFinalColorClamp=!1,this._applyByPostProcess=!1,this._isEnabled=!0,this.outputTextureWidth=0,this.outputTextureHeight=0,this.onUpdateParameters=new te}get colorCurvesEnabled(){return this._colorCurvesEnabled}set colorCurvesEnabled(e){this._colorCurvesEnabled!==e&&(this._colorCurvesEnabled=e,this._updateParameters())}get colorGradingTexture(){return this._colorGradingTexture}set colorGradingTexture(e){this._colorGradingTexture!==e&&(this._colorGradingTexture=e,this._updateParameters())}get colorGradingEnabled(){return this._colorGradingEnabled}set colorGradingEnabled(e){this._colorGradingEnabled!==e&&(this._colorGradingEnabled=e,this._updateParameters())}get colorGradingWithGreenDepth(){return this._colorGradingWithGreenDepth}set colorGradingWithGreenDepth(e){this._colorGradingWithGreenDepth!==e&&(this._colorGradingWithGreenDepth=e,this._updateParameters())}get colorGradingBGR(){return this._colorGradingBGR}set colorGradingBGR(e){this._colorGradingBGR!==e&&(this._colorGradingBGR=e,this._updateParameters())}get exposure(){return this._exposure}set exposure(e){this._exposure!==e&&(this._exposure=e,this._updateParameters())}get toneMappingEnabled(){return this._toneMappingEnabled}set toneMappingEnabled(e){this._toneMappingEnabled!==e&&(this._toneMappingEnabled=e,this._updateParameters())}get toneMappingType(){return this._toneMappingType}set toneMappingType(e){this._toneMappingType!==e&&(this._toneMappingType=e,this._updateParameters())}get contrast(){return this._contrast}set contrast(e){this._contrast!==e&&(this._contrast=e,this._updateParameters())}get vignetteCentreY(){return this.vignetteCenterY}set vignetteCentreY(e){this.vignetteCenterY=e}get vignetteCentreX(){return this.vignetteCenterX}set vignetteCentreX(e){this.vignetteCenterX=e}get vignetteBlendMode(){return this._vignetteBlendMode}set vignetteBlendMode(e){this._vignetteBlendMode!==e&&(this._vignetteBlendMode=e,this._updateParameters())}get vignetteEnabled(){return this._vignetteEnabled}set vignetteEnabled(e){this._vignetteEnabled!==e&&(this._vignetteEnabled=e,this._updateParameters())}get ditheringEnabled(){return this._ditheringEnabled}set ditheringEnabled(e){this._ditheringEnabled!==e&&(this._ditheringEnabled=e,this._updateParameters())}get ditheringIntensity(){return this._ditheringIntensity}set ditheringIntensity(e){this._ditheringIntensity!==e&&(this._ditheringIntensity=e,this._updateParameters())}get skipFinalColorClamp(){return this._skipFinalColorClamp}set skipFinalColorClamp(e){this._skipFinalColorClamp!==e&&(this._skipFinalColorClamp=e,this._updateParameters())}get applyByPostProcess(){return this._applyByPostProcess}set applyByPostProcess(e){this._applyByPostProcess!==e&&(this._applyByPostProcess=e,this._updateParameters())}get isEnabled(){return this._isEnabled}set isEnabled(e){this._isEnabled!==e&&(this._isEnabled=e,this._updateParameters())}_updateParameters(){this.onUpdateParameters.notifyObservers(this)}getClassName(){return"ImageProcessingConfiguration"}prepareDefines(e,t=!1){if(t!==this.applyByPostProcess||!this._isEnabled){e.VIGNETTE=!1,e.TONEMAPPING=0,e.CONTRAST=!1,e.EXPOSURE=!1,e.COLORCURVES=!1,e.COLORGRADING=!1,e.COLORGRADING3D=!1,e.DITHER=!1,e.IMAGEPROCESSING=!1,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess&&this._isEnabled;return}if(e.VIGNETTE=this.vignetteEnabled,e.VIGNETTEBLENDMODEMULTIPLY=this.vignetteBlendMode===n._VIGNETTEMODE_MULTIPLY,e.VIGNETTEBLENDMODEOPAQUE=!e.VIGNETTEBLENDMODEMULTIPLY,!this._toneMappingEnabled)e.TONEMAPPING=0;else switch(this._toneMappingType){case n.TONEMAPPING_KHR_PBR_NEUTRAL:e.TONEMAPPING=3;break;case n.TONEMAPPING_ACES:e.TONEMAPPING=2;break;default:e.TONEMAPPING=1;break}e.CONTRAST=this.contrast!==1,e.EXPOSURE=this.exposure!==1,e.COLORCURVES=this.colorCurvesEnabled&&!!this.colorCurves,e.COLORGRADING=this.colorGradingEnabled&&!!this.colorGradingTexture,e.COLORGRADING?e.COLORGRADING3D=this.colorGradingTexture.is3D:e.COLORGRADING3D=!1,e.SAMPLER3DGREENDEPTH=this.colorGradingWithGreenDepth,e.SAMPLER3DBGRMAP=this.colorGradingBGR,e.DITHER=this._ditheringEnabled,e.IMAGEPROCESSINGPOSTPROCESS=this.applyByPostProcess,e.SKIPFINALCOLORCLAMP=this.skipFinalColorClamp,e.IMAGEPROCESSING=e.VIGNETTE||!!e.TONEMAPPING||e.CONTRAST||e.EXPOSURE||e.COLORCURVES||e.COLORGRADING||e.DITHER}isReady(){return!this.colorGradingEnabled||!this.colorGradingTexture||this.colorGradingTexture.isReady()}bind(e,t){if(this._colorCurvesEnabled&&this.colorCurves&&dn.Bind(this.colorCurves,e),this._vignetteEnabled||this._ditheringEnabled){let i=1/(this.outputTextureWidth||e.getEngine().getRenderWidth()),r=1/(this.outputTextureHeight||e.getEngine().getRenderHeight());if(e.setFloat2("vInverseScreenSize",i,r),this._ditheringEnabled&&e.setFloat("ditherIntensity",.5*this._ditheringIntensity),this._vignetteEnabled){let s=t!=null?t:r/i,a=Math.tan(this.vignetteCameraFov*.5),o=a*s,l=Math.sqrt(o*a);o=Pg(o,l,this.vignetteStretch),a=Pg(a,l,this.vignetteStretch),e.setFloat4("vignetteSettings1",o,a,-o*this.vignetteCenterX,-a*this.vignetteCenterY);let c=-2*this.vignetteWeight;e.setFloat4("vignetteSettings2",this.vignetteColor.r,this.vignetteColor.g,this.vignetteColor.b,c)}}if(e.setFloat("exposureLinear",this.exposure),e.setFloat("contrast",this.contrast),this.colorGradingTexture){e.setTexture("txColorTransform",this.colorGradingTexture);let i=this.colorGradingTexture.getSize().height;e.setFloat4("colorTransformSettings",(i-1)/i,.5/i,i,this.colorGradingTexture.level)}}clone(){return nt.Clone(()=>new n,this)}serialize(){return nt.Serialize(this)}static Parse(e){let t=nt.Parse(()=>new n,e,null,null);return e.vignetteCentreX!==void 0&&(t.vignetteCenterX=e.vignetteCentreX),e.vignetteCentreY!==void 0&&(t.vignetteCenterY=e.vignetteCentreY),t}static get VIGNETTEMODE_MULTIPLY(){return this._VIGNETTEMODE_MULTIPLY}static get VIGNETTEMODE_OPAQUE(){return this._VIGNETTEMODE_OPAQUE}};Ht.TONEMAPPING_STANDARD=0;Ht.TONEMAPPING_ACES=1;Ht.TONEMAPPING_KHR_PBR_NEUTRAL=2;Ht.PrepareUniforms=NG;Ht.PrepareSamplers=wG;Ht._VIGNETTEMODE_MULTIPLY=0;Ht._VIGNETTEMODE_OPAQUE=1;P([LV()],Ht.prototype,"colorCurves",void 0);P([F()],Ht.prototype,"_colorCurvesEnabled",void 0);P([Gt("colorGradingTexture")],Ht.prototype,"_colorGradingTexture",void 0);P([F()],Ht.prototype,"_colorGradingEnabled",void 0);P([F()],Ht.prototype,"_colorGradingWithGreenDepth",void 0);P([F()],Ht.prototype,"_colorGradingBGR",void 0);P([F()],Ht.prototype,"_exposure",void 0);P([F()],Ht.prototype,"_toneMappingEnabled",void 0);P([F()],Ht.prototype,"_toneMappingType",void 0);P([F()],Ht.prototype,"_contrast",void 0);P([F()],Ht.prototype,"vignetteStretch",void 0);P([F()],Ht.prototype,"vignetteCenterX",void 0);P([F()],Ht.prototype,"vignetteCenterY",void 0);P([F()],Ht.prototype,"vignetteWeight",void 0);P([Bm()],Ht.prototype,"vignetteColor",void 0);P([F()],Ht.prototype,"vignetteCameraFov",void 0);P([F()],Ht.prototype,"_vignetteBlendMode",void 0);P([F()],Ht.prototype,"_vignetteEnabled",void 0);P([F()],Ht.prototype,"_ditheringEnabled",void 0);P([F()],Ht.prototype,"_ditheringIntensity",void 0);P([F()],Ht.prototype,"_skipFinalColorClamp",void 0);P([F()],Ht.prototype,"_applyByPostProcess",void 0);P([F()],Ht.prototype,"_isEnabled",void 0);P([F()],Ht.prototype,"outputTextureWidth",void 0);P([F()],Ht.prototype,"outputTextureHeight",void 0);nt._ImageProcessingConfigurationParser=Ht.Parse;Ut("BABYLON.ImageProcessingConfiguration",Ht)});var Ts,jg=I(()=>{ke();Zi();Ts=class{constructor(){this.hit=!1,this.distance=0,this.pickedPoint=null,this.pickedMesh=null,this.bu=0,this.bv=0,this.faceId=-1,this.subMeshFaceId=-1,this.subMeshId=0,this.pickedSprite=null,this.thinInstanceIndex=-1,this.ray=null,this.originMesh=null,this.aimTransform=null,this.gripTransform=null}getNormal(e=!1,t=!0){if(!this.pickedMesh||t&&!this.pickedMesh.isVerticesDataPresent(L.NormalKind))return null;let i=this.pickedMesh.getIndices();(i==null?void 0:i.length)===0&&(i=null);let r,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2];if(t){let c=this.pickedMesh.getVerticesData(L.NormalKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]);f=f.scale(this.bu),d=d.scale(this.bv),h=h.scale(1-this.bu-this.bv),r=new b(f.x+d.x+h.x,f.y+d.y+h.y,f.z+d.z+h.z)}else{let c=this.pickedMesh.getVerticesData(L.PositionKind),f=i?b.FromArrayToRef(c,i[this.faceId*3]*3,s):s.copyFromFloats(c[this.faceId*3*3],c[this.faceId*3*3+1],c[this.faceId*3*3+2]),d=i?b.FromArrayToRef(c,i[this.faceId*3+1]*3,a):a.copyFromFloats(c[(this.faceId*3+1)*3],c[(this.faceId*3+1)*3+1],c[(this.faceId*3+1)*3+2]),h=i?b.FromArrayToRef(c,i[this.faceId*3+2]*3,o):o.copyFromFloats(c[(this.faceId*3+2)*3],c[(this.faceId*3+2)*3+1],c[(this.faceId*3+2)*3+2]),u=f.subtract(d),m=h.subtract(d);r=b.Cross(u,m)}let l=(c,f)=>{if(this.thinInstanceIndex!==-1){let h=c._thinInstanceDataStorage.matrixData,u=this.thinInstanceIndex<<4;if(h&&h.length>u){let m=$.Matrix[0];Z.FromArrayToRef(h,u,m),b.TransformNormalToRef(f,m,f)}}let d=c.getWorldMatrix();c.nonUniformScaling&&($.Matrix[0].copyFrom(d),d=$.Matrix[0],d.setTranslationFromFloats(0,0,0),d.invert(),d.transposeToRef($.Matrix[1]),d=$.Matrix[1]),b.TransformNormalToRef(f,d,f)};if(e&&l(this.pickedMesh,r),this.ray){let c=$.Vector3[0].copyFrom(r);e||l(this.pickedMesh,c),b.Dot(c,this.ray.direction)>0&&r.negateInPlace()}return r.normalize(),r}getTextureCoordinates(e=L.UVKind){if(!this.pickedMesh||!this.pickedMesh.isVerticesDataPresent(e))return null;let t=this.pickedMesh.getIndices();if(!t)return null;let i=this.pickedMesh.getVerticesData(e);if(!i)return null;let r=we.FromArray(i,t[this.faceId*3]*2),s=we.FromArray(i,t[this.faceId*3+1]*2),a=we.FromArray(i,t[this.faceId*3+2]*2);return r=r.scale(this.bu),s=s.scale(this.bv),a=a.scale(1-this.bu-this.bv),new we(r.x+s.x+a.x,r.y+s.y+a.y)}}});var hn,OP=I(()=>{hn=class n{constructor(e,t,i,r,s,a){this.source=e,this.pointerX=t,this.pointerY=i,this.meshUnderPointer=r,this.sourceEvent=s,this.additionalData=a}static CreateNew(e,t,i){let r=e.getScene();return new n(e,r.pointerX,r.pointerY,r.meshUnderPointer||e,t,i)}static CreateNewFromSprite(e,t,i,r){return new n(e,t.pointerX,t.pointerY,t.meshUnderPointer,i,r)}static CreateNewFromScene(e,t){return new n(null,e.pointerX,e.pointerY,e.meshUnderPointer,t)}static CreateNewFromPrimitive(e,t,i,r){return new n(e,t.x,t.y,null,i,r)}}});function Zg(n,e,t){let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]-=n.x,i[13]-=n.y,i[14]-=n.z,t.markAsUpdated(),t}function GG(n,e,t){return Lg(e,Va),Zg(n,Va,Ga),Lg(Ga,t),t}function Ox(n,e,t){if(!ka.eyeAtCamera)return GG(n,e,t);let i=t.asArray(),r=e.asArray();for(let s=0;s<16;s++)i[s]=r[s];return i[12]=0,i[13]=0,i[14]=0,t.markAsUpdated(),t}function NP(n,e,t,i){return hh(Ox(n,e,i),t,i),i}function kG(n,e,t,i,r){for(let s=0;s{lh();ke();ZC();Of();Ua=new Z,Va=new Z,Ga=new Z,ka={getScene:()=>{},eyeAtCamera:!0};qg=Sr,wP=hr,WG=qg.prototype._updateMatrixForUniform,HG=hr.prototype.setMatrix});var it,mr,Wm=I(()=>{it=class{};it.NAME_EFFECTLAYER="EffectLayer";it.NAME_LAYER="Layer";it.NAME_LENSFLARESYSTEM="LensFlareSystem";it.NAME_BOUNDINGBOXRENDERER="BoundingBoxRenderer";it.NAME_PARTICLESYSTEM="ParticleSystem";it.NAME_GAMEPAD="Gamepad";it.NAME_SIMPLIFICATIONQUEUE="SimplificationQueue";it.NAME_GEOMETRYBUFFERRENDERER="GeometryBufferRenderer";it.NAME_PREPASSRENDERER="PrePassRenderer";it.NAME_DEPTHRENDERER="DepthRenderer";it.NAME_DEPTHPEELINGRENDERER="DepthPeelingRenderer";it.NAME_POSTPROCESSRENDERPIPELINEMANAGER="PostProcessRenderPipelineManager";it.NAME_SPRITE="Sprite";it.NAME_SUBSURFACE="SubSurface";it.NAME_OUTLINERENDERER="Outline";it.NAME_PROCEDURALTEXTURE="ProceduralTexture";it.NAME_SHADOWGENERATOR="ShadowGenerator";it.NAME_OCTREE="Octree";it.NAME_PHYSICSENGINE="PhysicsEngine";it.NAME_AUDIO="Audio";it.NAME_FLUIDRENDERER="FluidRenderer";it.NAME_IBLCDFGENERATOR="iblCDFGenerator";it.NAME_CLUSTEREDLIGHTING="ClusteredLighting";it.STEP_ISREADYFORMESH_EFFECTLAYER=0;it.STEP_ISREADYFORMESH_DEPTHRENDERER=1;it.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER=0;it.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER=0;it.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER=0;it.STEP_CAMERADRAWRENDERTARGET_EFFECTLAYER=1;it.STEP_BEFORECAMERADRAW_PREPASS=0;it.STEP_BEFORECAMERADRAW_EFFECTLAYER=1;it.STEP_BEFORECAMERADRAW_LAYER=2;it.STEP_BEFORERENDERTARGETDRAW_PREPASS=0;it.STEP_BEFORERENDERTARGETDRAW_LAYER=1;it.STEP_BEFORERENDERINGMESH_PREPASS=0;it.STEP_BEFORERENDERINGMESH_OUTLINE=1;it.STEP_AFTERRENDERINGMESH_PREPASS=0;it.STEP_AFTERRENDERINGMESH_OUTLINE=1;it.STEP_AFTERRENDERINGGROUPDRAW_EFFECTLAYER_DRAW=0;it.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER=1;it.STEP_BEFORECAMERAUPDATE_SIMPLIFICATIONQUEUE=0;it.STEP_BEFORECLEAR_PROCEDURALTEXTURE=0;it.STEP_BEFORECLEAR_PREPASS=1;it.STEP_BEFORERENDERTARGETCLEAR_PREPASS=0;it.STEP_AFTERRENDERTARGETDRAW_PREPASS=0;it.STEP_AFTERRENDERTARGETDRAW_LAYER=1;it.STEP_AFTERCAMERADRAW_PREPASS=0;it.STEP_AFTERCAMERADRAW_EFFECTLAYER=1;it.STEP_AFTERCAMERADRAW_LENSFLARESYSTEM=2;it.STEP_AFTERCAMERADRAW_EFFECTLAYER_DRAW=3;it.STEP_AFTERCAMERADRAW_LAYER=4;it.STEP_AFTERCAMERADRAW_FLUIDRENDERER=5;it.STEP_AFTERCAMERAPOSTPROCESS_LAYER=0;it.STEP_AFTERRENDERTARGETPOSTPROCESS_LAYER=0;it.STEP_AFTERRENDER_AUDIO=0;it.STEP_GATHERRENDERTARGETS_DEPTHRENDERER=0;it.STEP_GATHERRENDERTARGETS_GEOMETRYBUFFERRENDERER=1;it.STEP_GATHERRENDERTARGETS_SHADOWGENERATOR=2;it.STEP_GATHERRENDERTARGETS_POSTPROCESSRENDERPIPELINEMANAGER=3;it.STEP_GATHERACTIVECAMERARENDERTARGETS_DEPTHRENDERER=0;it.STEP_GATHERACTIVECAMERARENDERTARGETS_FLUIDRENDERER=1;it.STEP_GATHERACTIVECAMERARENDERTARGETS_CLUSTEREDLIGHTING=2;it.STEP_POINTERMOVE_SPRITE=0;it.STEP_POINTERDOWN_SPRITE=0;it.STEP_POINTERUP_SPRITE=0;mr=class n extends Array{constructor(e){super(...e)}static Create(){return Object.create(n.prototype)}registerStep(e,t,i){let r=0,s;for(;r{ke();at=class{};at.POINTERDOWN=1;at.POINTERUP=2;at.POINTERMOVE=4;at.POINTERWHEEL=8;at.POINTERPICK=16;at.POINTERTAP=32;at.POINTERDOUBLETAP=64;Nx=class{constructor(e,t){this.type=e,this.event=t}},wx=class extends Nx{constructor(e,t,i,r){super(e,t),this.ray=null,this.originalPickingInfo=null,this.skipOnPointerObservable=!1,this.localPosition=new we(i,r)}},Wa=class extends Nx{get pickInfo(){return this._pickInfo||this._generatePickInfo(),this._pickInfo}constructor(e,t,i,r=null){super(e,t),this._pickInfo=i,this._inputManager=r}_generatePickInfo(){this._inputManager&&(this._pickInfo=this._inputManager._pickMove(this.event),this._inputManager._setRayOnPointerInfo(this._pickInfo,this.event),this._inputManager=null)}}});var _c,YG=I(()=>{_c=class n{constructor(){this.hoverCursor="",this.actions=[],this.isRecursive=!1,this.disposeWhenUnowned=!0}static get HasTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e))return!0;return!1}static get HasPickTriggers(){for(let e in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,e)){let t=parseInt(e);if(t>=1&&t<=7)return!0}return!1}static HasSpecificTrigger(e){for(let t in n.Triggers)if(Object.prototype.hasOwnProperty.call(n.Triggers,t)&&parseInt(t)===e)return!0;return!1}};_c.Triggers={}});var Co,Hm,$g,Fx=I(()=>{Co=class{};Co.KEYDOWN=1;Co.KEYUP=2;Hm=class{constructor(e,t){this.type=e,this.event=t}},$g=class extends Hm{get skipOnPointerObservable(){return this.skipOnKeyboardObservable}set skipOnPointerObservable(e){this.skipOnKeyboardObservable=e}constructor(e,t){super(e,t),this.type=e,this.event=t,this.skipOnKeyboardObservable=!1}}});var $e,Tt,KG,jG,ZG,qG,QG,Rh=I(()=>{(function(n){n[n.Generic=0]="Generic",n[n.Keyboard=1]="Keyboard",n[n.Mouse=2]="Mouse",n[n.Touch=3]="Touch",n[n.DualShock=4]="DualShock",n[n.Xbox=5]="Xbox",n[n.Switch=6]="Switch",n[n.DualSense=7]="DualSense"})($e||($e={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.Move=12]="Move"})(Tt||(Tt={}));(function(n){n[n.Horizontal=0]="Horizontal",n[n.Vertical=1]="Vertical",n[n.LeftClick=2]="LeftClick",n[n.MiddleClick=3]="MiddleClick",n[n.RightClick=4]="RightClick",n[n.BrowserBack=5]="BrowserBack",n[n.BrowserForward=6]="BrowserForward",n[n.MouseWheelX=7]="MouseWheelX",n[n.MouseWheelY=8]="MouseWheelY",n[n.MouseWheelZ=9]="MouseWheelZ",n[n.DeltaHorizontal=10]="DeltaHorizontal",n[n.DeltaVertical=11]="DeltaVertical"})(KG||(KG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Share=8]="Share",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(jG||(jG={}));(function(n){n[n.Cross=0]="Cross",n[n.Circle=1]="Circle",n[n.Square=2]="Square",n[n.Triangle=3]="Triangle",n[n.L1=4]="L1",n[n.R1=5]="R1",n[n.L2=6]="L2",n[n.R2=7]="R2",n[n.Create=8]="Create",n[n.Options=9]="Options",n[n.L3=10]="L3",n[n.R3=11]="R3",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.TouchPad=17]="TouchPad",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(ZG||(ZG={}));(function(n){n[n.A=0]="A",n[n.B=1]="B",n[n.X=2]="X",n[n.Y=3]="Y",n[n.LB=4]="LB",n[n.RB=5]="RB",n[n.LT=6]="LT",n[n.RT=7]="RT",n[n.Back=8]="Back",n[n.Start=9]="Start",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.LStickXAxis=17]="LStickXAxis",n[n.LStickYAxis=18]="LStickYAxis",n[n.RStickXAxis=19]="RStickXAxis",n[n.RStickYAxis=20]="RStickYAxis"})(qG||(qG={}));(function(n){n[n.B=0]="B",n[n.A=1]="A",n[n.Y=2]="Y",n[n.X=3]="X",n[n.L=4]="L",n[n.R=5]="R",n[n.ZL=6]="ZL",n[n.ZR=7]="ZR",n[n.Minus=8]="Minus",n[n.Plus=9]="Plus",n[n.LS=10]="LS",n[n.RS=11]="RS",n[n.DPadUp=12]="DPadUp",n[n.DPadDown=13]="DPadDown",n[n.DPadLeft=14]="DPadLeft",n[n.DPadRight=15]="DPadRight",n[n.Home=16]="Home",n[n.Capture=17]="Capture",n[n.LStickXAxis=18]="LStickXAxis",n[n.LStickYAxis=19]="LStickYAxis",n[n.RStickXAxis=20]="RStickXAxis",n[n.RStickYAxis=21]="RStickYAxis"})(QG||(QG={}))});var $G,Po,Bx=I(()=>{(function(n){n[n.PointerMove=0]="PointerMove",n[n.PointerDown=1]="PointerDown",n[n.PointerUp=2]="PointerUp"})($G||($G={}));Po=class{};Po.DOM_DELTA_PIXEL=0;Po.DOM_DELTA_LINE=1;Po.DOM_DELTA_PAGE=2});var Do,BP=I(()=>{Bx();Rh();Do=class{static CreateDeviceEvent(e,t,i,r,s,a,o){switch(e){case $e.Keyboard:return this._CreateKeyboardEvent(i,r,s,a);case $e.Mouse:if(i===Tt.MouseWheelX||i===Tt.MouseWheelY||i===Tt.MouseWheelZ)return this._CreateWheelEvent(e,t,i,r,s,a);case $e.Touch:return this._CreatePointerEvent(e,t,i,r,s,a,o);default:throw`Unable to generate event for device ${$e[e]}`}}static _CreatePointerEvent(e,t,i,r,s,a,o){let l=this._CreateMouseEvent(e,t,i,r,s,a);e===$e.Mouse?(l.deviceType=$e.Mouse,l.pointerId=1,l.pointerType="mouse"):(l.deviceType=$e.Touch,l.pointerId=o!=null?o:t,l.pointerType="touch");let c=0;return c+=s.pollInput(e,t,Tt.LeftClick),c+=s.pollInput(e,t,Tt.RightClick)*2,c+=s.pollInput(e,t,Tt.MiddleClick)*4,l.buttons=c,i===Tt.Move?l.type="pointermove":i>=Tt.LeftClick&&i<=Tt.RightClick&&(l.type=r===1?"pointerdown":"pointerup",l.button=i-2),l}static _CreateWheelEvent(e,t,i,r,s,a){let o=this._CreateMouseEvent(e,t,i,r,s,a);switch(o.pointerId=1,o.type="wheel",o.deltaMode=Po.DOM_DELTA_PIXEL,o.deltaX=0,o.deltaY=0,o.deltaZ=0,i){case Tt.MouseWheelX:o.deltaX=r;break;case Tt.MouseWheelY:o.deltaY=r;break;case Tt.MouseWheelZ:o.deltaZ=r;break}return o}static _CreateMouseEvent(e,t,i,r,s,a){let o=this._CreateEvent(a),l=s.pollInput(e,t,Tt.Horizontal),c=s.pollInput(e,t,Tt.Vertical);return a?(o.movementX=0,o.movementY=0,o.offsetX=o.movementX-a.getBoundingClientRect().x,o.offsetY=o.movementY-a.getBoundingClientRect().y):(o.movementX=s.pollInput(e,t,10),o.movementY=s.pollInput(e,t,11),o.offsetX=0,o.offsetY=0),this._CheckNonCharacterKeys(o,s),o.clientX=l,o.clientY=c,o.x=l,o.y=c,o.deviceType=e,o.deviceSlot=t,o.inputIndex=i,o}static _CreateKeyboardEvent(e,t,i,r){let s=this._CreateEvent(r);return this._CheckNonCharacterKeys(s,i),s.deviceType=$e.Keyboard,s.deviceSlot=0,s.inputIndex=e,s.type=t===1?"keydown":"keyup",s.key=String.fromCharCode(e),s.keyCode=e,s}static _CheckNonCharacterKeys(e,t){let i=t.isDeviceAvailable($e.Keyboard),r=i&&t.pollInput($e.Keyboard,0,18)===1,s=i&&t.pollInput($e.Keyboard,0,17)===1,a=i&&(t.pollInput($e.Keyboard,0,91)===1||t.pollInput($e.Keyboard,0,92)===1||t.pollInput($e.Keyboard,0,93)===1),o=i&&t.pollInput($e.Keyboard,0,16)===1;e.altKey=r,e.ctrlKey=s,e.metaKey=a,e.shiftKey=o}static _CreateEvent(e){let t={};return t.preventDefault=()=>{},t.target=e,t}}});var Ux,JG=I(()=>{BP();Rh();Ux=class{constructor(e,t,i){this._nativeInput=_native.DeviceInputSystem?new _native.DeviceInputSystem(e,t,(r,s,a,o)=>{let l=Do.CreateDeviceEvent(r,s,a,o,this);i(r,s,l)}):this._createDummyNativeInput()}pollInput(e,t,i){return this._nativeInput.pollInput(e,t,i)}isDeviceAvailable(e){return e===$e.Mouse||e===$e.Touch}dispose(){this._nativeInput.dispose()}_createDummyNativeInput(){return{pollInput:()=>0,isDeviceAvailable:()=>!1,dispose:()=>{}}}}});var ek,tk,Vx,ik=I(()=>{Oa();wi();BP();Rh();ek=255,tk=Object.keys(Tt).length/2,Vx=class{constructor(e,t,i,r){this._inputs=[],this._keyboardActive=!1,this._pointerActive=!1,this._usingSafari=pe.IsSafari(),this._usingMacOs=ec()&&/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform),this._keyboardDownEvent=s=>{},this._keyboardUpEvent=s=>{},this._keyboardBlurEvent=s=>{},this._pointerMoveEvent=s=>{},this._pointerDownEvent=s=>{},this._pointerUpEvent=s=>{},this._pointerCancelEvent=s=>{},this._pointerCancelTouch=s=>{},this._pointerLeaveEvent=s=>{},this._pointerWheelEvent=s=>{},this._pointerBlurEvent=s=>{},this._pointerMacOsChromeOutEvent=s=>{},this._eventsAttached=!1,this._mouseId=-1,this._isUsingFirefox=ec()&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")!==-1,this._isUsingChromium=ec()&&navigator.userAgent&&navigator.userAgent.indexOf("Chrome")!==-1,this._maxTouchPoints=0,this._pointerInputClearObserver=null,this._gamepadConnectedEvent=s=>{},this._gamepadDisconnectedEvent=s=>{},this._eventPrefix=pe.GetPointerPrefix(e),this._engine=e,this._onDeviceConnected=t,this._onDeviceDisconnected=i,this._onInputChanged=r,this._mouseId=this._isUsingFirefox?0:1,this._enableEvents(),this._usingMacOs&&(this._metaKeys=[]),this._engine._onEngineViewChanged||(this._engine._onEngineViewChanged=()=>{this._enableEvents()})}pollInput(e,t,i){let r=this._inputs[e][t];if(!r)throw`Unable to find device ${$e[e]}`;e>=$e.DualShock&&e<=$e.DualSense&&this._updateDevice(e,t,i);let s=r[i];if(s===void 0)throw`Unable to find input ${i} for device ${$e[e]} in slot ${t}`;return i===Tt.Move&&pe.Warn("Unable to provide information for PointerInput.Move. Try using PointerInput.Horizontal or PointerInput.Vertical for move data."),s}isDeviceAvailable(e){return this._inputs[e]!==void 0}dispose(){this._onDeviceConnected=()=>{},this._onDeviceDisconnected=()=>{},this._onInputChanged=()=>{},delete this._engine._onEngineViewChanged,this._elementToAttachTo&&this._disableEvents()}_enableEvents(){let e=this==null?void 0:this._engine.getInputElement();if(e&&(!this._eventsAttached||this._elementToAttachTo!==e)){if(this._disableEvents(),this._inputs){for(let t of this._inputs)if(t)for(let i in t){let r=+i,s=t[r];if(s)for(let a=0;a{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice($e.Keyboard,0,ek));let t=this._inputs[$e.Keyboard][0];if(t){t[e.keyCode]=1;let i=e;i.inputIndex=e.keyCode,this._usingMacOs&&e.metaKey&&e.key!=="Meta"&&(this._metaKeys.includes(e.keyCode)||this._metaKeys.push(e.keyCode)),this._onInputChanged($e.Keyboard,0,i)}},this._keyboardUpEvent=e=>{this._keyboardActive||(this._keyboardActive=!0,this._registerDevice($e.Keyboard,0,ek));let t=this._inputs[$e.Keyboard][0];if(t){t[e.keyCode]=0;let i=e;if(i.inputIndex=e.keyCode,this._usingMacOs&&e.key==="Meta"&&this._metaKeys.length>0){for(let r of this._metaKeys){let s=Do.CreateDeviceEvent($e.Keyboard,0,r,0,this,this._elementToAttachTo);t[r]=0,this._onInputChanged($e.Keyboard,0,s)}this._metaKeys.splice(0,this._metaKeys.length)}this._onInputChanged($e.Keyboard,0,i)}},this._keyboardBlurEvent=()=>{if(this._keyboardActive){let e=this._inputs[$e.Keyboard][0];for(let t=0;t{let r=this._getPointerType(i),s=r===$e.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===$e.Touch&&s===-1){let o=this._activeTouchIds.indexOf(-1);if(o>=0)s=o,this._activeTouchIds[o]=i.pointerId,this._onDeviceConnected(r,s);else{pe.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]||this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=i;o.inputIndex=Tt.Move,a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,r===$e.Touch&&a[Tt.LeftClick]===0&&(a[Tt.LeftClick]=1),i.pointerId===void 0&&(i.pointerId=this._mouseId),this._onInputChanged(r,s,o),!this._usingSafari&&i.button!==-1&&(o.inputIndex=i.button+2,a[i.button+2]=a[i.button+2]?0:1,this._onInputChanged(r,s,o))}},this._pointerDownEvent=i=>{let r=this._getPointerType(i),s=r===$e.Mouse?0:i.pointerId;if(r===$e.Touch){let o=this._activeTouchIds.indexOf(i.pointerId);if(o===-1&&(o=this._activeTouchIds.indexOf(-1)),o>=0)s=o,this._activeTouchIds[o]=i.pointerId;else{pe.Warn(`Max number of touches exceeded. Ignoring touches in excess of ${this._maxTouchPoints}`);return}}this._inputs[r]||(this._inputs[r]={}),this._inputs[r][s]?r===$e.Touch&&this._onDeviceConnected(r,s):this._addPointerDevice(r,s,i.clientX,i.clientY);let a=this._inputs[r][s];if(a){let o=a[Tt.Horizontal],l=a[Tt.Vertical];if(r===$e.Mouse){if(i.pointerId===void 0&&(i.pointerId=this._mouseId),!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(this._mouseId)}catch(f){}}else if(i.pointerId&&!document.pointerLockElement)try{this._elementToAttachTo.setPointerCapture(i.pointerId)}catch(f){}a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[i.button+2]=1;let c=i;c.inputIndex=i.button+2,this._onInputChanged(r,s,c),(o!==i.clientX||l!==i.clientY)&&(c.inputIndex=Tt.Move,this._onInputChanged(r,s,c))}},this._pointerUpEvent=i=>{var c,f,d,h,u;let r=this._getPointerType(i),s=r===$e.Mouse?0:this._activeTouchIds.indexOf(i.pointerId);if(r===$e.Touch){if(s===-1)return;this._activeTouchIds[s]=-1}let a=(c=this._inputs[r])==null?void 0:c[s],o=i.button,l=a&&a[o+2]!==0;if(!l&&this._isUsingFirefox&&this._usingMacOs&&a&&(o=o===2?0:2,l=a[o+2]!==0),l){let m=a[Tt.Horizontal],_=a[Tt.Vertical];a[Tt.Horizontal]=i.clientX,a[Tt.Vertical]=i.clientY,a[o+2]=0;let p=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),(m!==i.clientX||_!==i.clientY)&&(p.inputIndex=Tt.Move,this._onInputChanged(r,s,p)),p.inputIndex=o+2,r===$e.Mouse&&this._mouseId>=0&&((d=(f=this._elementToAttachTo).hasPointerCapture)!=null&&d.call(f,this._mouseId))?this._elementToAttachTo.releasePointerCapture(this._mouseId):i.pointerId&&((u=(h=this._elementToAttachTo).hasPointerCapture)!=null&&u.call(h,i.pointerId))&&this._elementToAttachTo.releasePointerCapture(i.pointerId),this._onInputChanged(r,s,p),r===$e.Touch&&this._onDeviceDisconnected(r,s)}},this._pointerCancelTouch=i=>{var a,o;let r=this._activeTouchIds.indexOf(i);if(r===-1)return;(o=(a=this._elementToAttachTo).hasPointerCapture)!=null&&o.call(a,i)&&this._elementToAttachTo.releasePointerCapture(i),this._inputs[$e.Touch][r][Tt.LeftClick]=0;let s=Do.CreateDeviceEvent($e.Touch,r,Tt.LeftClick,0,this,this._elementToAttachTo,i);this._onInputChanged($e.Touch,r,s),this._activeTouchIds[r]=-1,this._onDeviceDisconnected($e.Touch,r)},this._pointerCancelEvent=i=>{var r,s;if(i.pointerType==="mouse"){let a=this._inputs[$e.Mouse][0];this._mouseId>=0&&((s=(r=this._elementToAttachTo).hasPointerCapture)!=null&&s.call(r,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let o=Tt.LeftClick;o<=Tt.BrowserForward;o++)if(a[o]===1){a[o]=0;let l=Do.CreateDeviceEvent($e.Mouse,0,o,0,this,this._elementToAttachTo);this._onInputChanged($e.Mouse,0,l)}}else this._pointerCancelTouch(i.pointerId)},this._pointerLeaveEvent=i=>{i.pointerType==="pen"&&this._pointerCancelTouch(i.pointerId)},this._wheelEventName="onwheel"in document.createElement("div")?"wheel":document.onmousewheel!==void 0?"mousewheel":"DOMMouseScroll";let e=!1,t=function(){};try{let i=Object.defineProperty({},"passive",{get:function(){e=!0}});this._elementToAttachTo.addEventListener("test",t,i),this._elementToAttachTo.removeEventListener("test",t,i)}catch(i){}this._pointerBlurEvent=()=>{var i,r,s,a,o;if(this.isDeviceAvailable($e.Mouse)){let l=this._inputs[$e.Mouse][0];this._mouseId>=0&&((r=(i=this._elementToAttachTo).hasPointerCapture)!=null&&r.call(i,this._mouseId))&&this._elementToAttachTo.releasePointerCapture(this._mouseId);for(let c=Tt.LeftClick;c<=Tt.BrowserForward;c++)if(l[c]===1){l[c]=0;let f=Do.CreateDeviceEvent($e.Mouse,0,c,0,this,this._elementToAttachTo);this._onInputChanged($e.Mouse,0,f)}}if(this.isDeviceAvailable($e.Touch)){let l=this._inputs[$e.Touch];for(let c=0;c{let r=$e.Mouse,s=0;this._inputs[r]||(this._inputs[r]=[]),this._inputs[r][s]||(this._pointerActive=!0,this._registerDevice(r,s,tk));let a=this._inputs[r][s];if(a){a[Tt.MouseWheelX]=i.deltaX||0,a[Tt.MouseWheelY]=i.deltaY||i.wheelDelta||0,a[Tt.MouseWheelZ]=i.deltaZ||0;let o=i;i.pointerId===void 0&&(i.pointerId=this._mouseId),a[Tt.MouseWheelX]!==0&&(o.inputIndex=Tt.MouseWheelX,this._onInputChanged(r,s,o)),a[Tt.MouseWheelY]!==0&&(o.inputIndex=Tt.MouseWheelY,this._onInputChanged(r,s,o)),a[Tt.MouseWheelZ]!==0&&(o.inputIndex=Tt.MouseWheelZ,this._onInputChanged(r,s,o))}},this._usingMacOs&&this._isUsingChromium&&(this._pointerMacOsChromeOutEvent=i=>{i.buttons>1&&this._pointerCancelEvent(i)},this._elementToAttachTo.addEventListener("lostpointercapture",this._pointerMacOsChromeOutEvent)),this._elementToAttachTo.addEventListener(this._eventPrefix+"move",this._pointerMoveEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"down",this._pointerDownEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"up",this._pointerUpEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"cancel",this._pointerCancelEvent),this._elementToAttachTo.addEventListener(this._eventPrefix+"leave",this._pointerLeaveEvent),this._elementToAttachTo.addEventListener("blur",this._pointerBlurEvent),this._elementToAttachTo.addEventListener(this._wheelEventName,this._pointerWheelEvent,e?{passive:!1}:!1),this._pointerInputClearObserver=this._engine.onEndFrameObservable.add(()=>{if(this.isDeviceAvailable($e.Mouse)){let i=this._inputs[$e.Mouse][0];i[Tt.MouseWheelX]=0,i[Tt.MouseWheelY]=0,i[Tt.MouseWheelZ]=0}})}_handleGamepadActions(){this._gamepadConnectedEvent=e=>{this._addGamePad(e.gamepad)},this._gamepadDisconnectedEvent=e=>{if(this._gamepads){let t=this._getGamepadDeviceType(e.gamepad.id),i=e.gamepad.index;this._unregisterDevice(t,i),delete this._gamepads[i]}},window.addEventListener("gamepadconnected",this._gamepadConnectedEvent),window.addEventListener("gamepaddisconnected",this._gamepadDisconnectedEvent)}_updateDevice(e,t,i){let r=navigator.getGamepads()[t];if(r&&e===this._gamepads[t]){let s=this._inputs[e][t];i>=r.buttons.length?s[i]=r.axes[i-r.buttons.length].valueOf():s[i]=r.buttons[i].value}}_getGamepadDeviceType(e){return e.indexOf("054c")!==-1?e.indexOf("0ce6")!==-1?$e.DualSense:$e.DualShock:e.indexOf("Xbox One")!==-1||e.search("Xbox 360")!==-1||e.search("xinput")!==-1?$e.Xbox:e.indexOf("057e")!==-1?$e.Switch:$e.Generic}_getPointerType(e){let t=$e.Mouse;return(e.pointerType==="touch"||e.pointerType==="pen"||e.touches)&&(t=$e.Touch),t}}});var Jg,rk=I(()=>{mi();Jg=class{constructor(e,t,i=0){this.deviceType=t,this.deviceSlot=i,this.onInputChangedObservable=new te,this._deviceInputSystem=e}getInput(e){return this._deviceInputSystem.pollInput(this.deviceType,this.deviceSlot,e)}}});var Gx,nk=I(()=>{Rh();JG();ik();rk();Gx=class{constructor(e){this._registeredManagers=new Array,this._refCount=0,this.registerManager=a=>{for(let o=0;o{let o=this._registeredManagers.indexOf(a);o>-1&&this._registeredManagers.splice(o,1)};let t=Object.keys($e).length/2;this._devices=new Array(t);let i=(a,o)=>{this._devices[a]||(this._devices[a]=new Array),this._devices[a][o]||(this._devices[a][o]=o);for(let l of this._registeredManagers){let c=new Jg(this._deviceInputSystem,a,o);l._addDevice(c)}},r=(a,o)=>{var l;(l=this._devices[a])!=null&&l[o]&&delete this._devices[a][o];for(let c of this._registeredManagers)c._removeDevice(a,o)},s=(a,o,l)=>{if(l)for(let c of this._registeredManagers)c._onInputChanged(a,o,l)};typeof _native!="undefined"?this._deviceInputSystem=new Ux(i,r,s):this._deviceInputSystem=new Vx(e,i,r,s)}dispose(){this._deviceInputSystem.dispose()}}});var kx,sk=I(()=>{Rh();mi();nk();kx=class{getDeviceSource(e,t){if(t===void 0){if(this._firstDevice[e]===void 0)return null;t=this._firstDevice[e]}return!this._devices[e]||this._devices[e][t]===void 0?null:this._devices[e][t]}getDeviceSources(e){return this._devices[e]?this._devices[e].filter(t=>!!t):[]}constructor(e){let t=Object.keys($e).length/2;this._devices=new Array(t),this._firstDevice=new Array(t),this._engine=e,this._engine._deviceSourceManager||(this._engine._deviceSourceManager=new Gx(e)),this._engine._deviceSourceManager._refCount++,this.onDeviceConnectedObservable=new te(i=>{for(let r of this._devices)if(r)for(let s of r)s&&this.onDeviceConnectedObservable.notifyObserver(i,s)}),this.onDeviceDisconnectedObservable=new te,this._engine._deviceSourceManager.registerManager(this),this._onDisposeObserver=e.onDisposeObservable.add(()=>{this.dispose()})}dispose(){this.onDeviceConnectedObservable.clear(),this.onDeviceDisconnectedObservable.clear(),this._engine._deviceSourceManager&&(this._engine._deviceSourceManager.unregisterManager(this),--this._engine._deviceSourceManager._refCount<1&&(this._engine._deviceSourceManager.dispose(),delete this._engine._deviceSourceManager)),this._engine.onDisposeObservable.remove(this._onDisposeObserver)}_addDevice(e){this._devices[e.deviceType]||(this._devices[e.deviceType]=[]),this._devices[e.deviceType][e.deviceSlot]||(this._devices[e.deviceType][e.deviceSlot]=e,this._updateFirstDevices(e.deviceType)),this.onDeviceConnectedObservable.notifyObservers(e)}_removeDevice(e,t){var r,s;let i=(r=this._devices[e])==null?void 0:r[t];this.onDeviceDisconnectedObservable.notifyObservers(i),(s=this._devices[e])!=null&&s[t]&&delete this._devices[e][t],this._updateFirstDevices(e)}_onInputChanged(e,t,i){var r,s;(s=(r=this._devices[e])==null?void 0:r[t])==null||s.onInputChangedObservable.notifyObservers(i)}_updateFirstDevices(e){switch(e){case $e.Keyboard:case $e.Mouse:this._firstDevice[e]=0;break;case $e.Touch:case $e.DualSense:case $e.DualShock:case $e.Xbox:case $e.Switch:case $e.Generic:{delete this._firstDevice[e];let t=this._devices[e];if(t){for(let i=0;i{bh=class{};bh._IsPickingAvailable=!1});var Wx,Zn,ak=I(()=>{yo();YG();jg();ke();OP();Fx();Rh();sk();Gi();UP();Wx=class{constructor(){this._singleClick=!1,this._doubleClick=!1,this._hasSwiped=!1,this._ignore=!1}get singleClick(){return this._singleClick}get doubleClick(){return this._doubleClick}get hasSwiped(){return this._hasSwiped}get ignore(){return this._ignore}set singleClick(e){this._singleClick=e}set doubleClick(e){this._doubleClick=e}set hasSwiped(e){this._hasSwiped=e}set ignore(e){this._ignore=e}},Zn=class n{constructor(e){this._alreadyAttached=!1,this._meshPickProceed=!1,this._currentPickResult=null,this._previousPickResult=null,this._activePointerIds=new Array,this._activePointerIdsCount=0,this._doubleClickOccured=!1,this._isSwiping=!1,this._swipeButtonPressed=-1,this._skipPointerTap=!1,this._isMultiTouchGesture=!1,this._pointerX=0,this._pointerY=0,this._startingPointerPosition=new we(0,0),this._previousStartingPointerPosition=new we(0,0),this._startingPointerTime=0,this._previousStartingPointerTime=0,this._pointerCaptures={},this._meshUnderPointerId={},this._movePointerInfo=null,this._cameraObserverCount=0,this._delayedClicks=[null,null,null,null,null],this._deviceSourceManager=null,this._scene=e||Oe.LastCreatedScene,this._scene}get meshUnderPointer(){return this._movePointerInfo&&(this._movePointerInfo._generatePickInfo(),this._movePointerInfo=null),this._pointerOverMesh}getMeshUnderPointerByPointerId(e){return this._meshUnderPointerId[e]||null}get unTranslatedPointer(){return new we(this._unTranslatedPointerX,this._unTranslatedPointerY)}get pointerX(){return this._pointerX}set pointerX(e){this._pointerX=e}get pointerY(){return this._pointerY}set pointerY(e){this._pointerY=e}_updatePointerPosition(e){let t=this._scene.getEngine().getInputElementClientRect();t&&(this._pointerX=e.clientX-t.left,this._pointerY=e.clientY-t.top,this._unTranslatedPointerX=this._pointerX,this._unTranslatedPointerY=this._pointerY)}_processPointerMove(e,t){let i=this._scene,r=i.getEngine(),s=r.getInputElement();s&&(s.tabIndex=r.canvasTabIndex,i.doNotHandleCursors||(s.style.cursor=i.defaultCursor)),this._setCursorAndPointerOverMesh(e,t,i);for(let l of i._pointerMoveStage){e=e||this._pickMove(t);let c=!!(e!=null&&e.pickedMesh);e=l.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,c,s)}let a=t.inputIndex>=Tt.MouseWheelX&&t.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE;i.onPointerMove&&(e=e||this._pickMove(t),i.onPointerMove(t,e,a));let o;e?(o=new Wa(a,t,e),this._setRayOnPointerInfo(e,t)):(o=new Wa(a,t,null,this),this._movePointerInfo=o),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(o,a)}_setRayOnPointerInfo(e,t){let i=this._scene;e&&bh._IsPickingAvailable&&(e.ray||(e.ray=i.createPickingRay(t.offsetX,t.offsetY,Z.Identity(),i.activeCamera)))}_addCameraPointerObserver(e,t){return this._cameraObserverCount++,this._scene.onPointerObservable.add(e,t)}_removeCameraPointerObserver(e){return this._cameraObserverCount--,this._scene.onPointerObservable.remove(e)}_checkForPicking(){return!!(this._scene.onPointerObservable.observers.length>this._cameraObserverCount||this._scene.onPointerPick)}_checkPrePointerObservable(e,t,i){let r=this._scene,s=new wx(i,t,this._unTranslatedPointerX,this._unTranslatedPointerY);return e&&(s.originalPickingInfo=e,s.ray=e.ray,t.pointerType==="xr-near"&&e.originMesh&&(s.nearInteractionPickingInfo=e)),r.onPrePointerObservable.notifyObservers(s,i),!!s.skipOnPointerObservable}_pickMove(e){let t=this._scene,i=t.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,t.pointerMovePredicate,t.pointerMoveFastCheck,t.cameraToUseForPointers,t.pointerMoveTrianglePredicate);return this._setCursorAndPointerOverMesh(i,e,t),i}_setCursorAndPointerOverMesh(e,t,i){let s=i.getEngine().getInputElement();if(e!=null&&e.pickedMesh){if(this.setPointerOverMesh(e.pickedMesh,t.pointerId,e,t),!i.doNotHandleCursors&&s&&this._pointerOverMesh){let a=this._pointerOverMesh._getActionManagerForTrigger();a&&a.hasPointerTriggers&&(s.style.cursor=a.hoverCursor||i.hoverCursor)}}else this.setPointerOverMesh(null,t.pointerId,e,t)}simulatePointerMove(e,t){let i=new PointerEvent("pointermove",t);i.inputIndex=Tt.Move,!this._checkPrePointerObservable(e,i,at.POINTERMOVE)&&this._processPointerMove(e,i)}simulatePointerDown(e,t){let i=new PointerEvent("pointerdown",t);i.inputIndex=i.button+2,!this._checkPrePointerObservable(e,i,at.POINTERDOWN)&&this._processPointerDown(e,i)}_processPointerDown(e,t){let i=this._scene;if(e!=null&&e.pickedMesh){this._pickedDownMesh=e.pickedMesh;let a=e.pickedMesh._getActionManagerForTrigger();if(a){if(a.hasPickTriggers)switch(a.processTrigger(5,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e)),t.button){case 0:a.processTrigger(2,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 1:a.processTrigger(4,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break;case 2:a.processTrigger(3,new hn(e.pickedMesh,i.pointerX,i.pointerY,e.pickedMesh,t,e));break}a.hasSpecificTrigger(8)&&window.setTimeout(()=>{let o=i.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,l=>l.isPickable&&l.isVisible&&l.isReady()&&l.actionManager&&l.actionManager.hasSpecificTrigger(8)&&l===this._pickedDownMesh,!1,i.cameraToUseForPointers);o!=null&&o.pickedMesh&&a&&this._activePointerIdsCount!==0&&Date.now()-this._startingPointerTime>n.LongPressDelay&&!this._isPointerSwiping()&&(this._startingPointerTime=0,a.processTrigger(8,hn.CreateNew(o.pickedMesh,t)))},n.LongPressDelay)}}else for(let a of i._pointerDownStage)e=a.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,!1);let r,s=at.POINTERDOWN;e?(i.onPointerDown&&i.onPointerDown(t,e,s),r=new Wa(s,t,e),this._setRayOnPointerInfo(e,t)):r=new Wa(s,t,null,this),i.onPointerObservable.hasObservers()&&i.onPointerObservable.notifyObservers(r,s)}_isPointerSwiping(){return this._isSwiping}simulatePointerUp(e,t,i){let r=new PointerEvent("pointerup",t);r.inputIndex=Tt.Move;let s=new Wx;i?s.doubleClick=!0:s.singleClick=!0,!this._checkPrePointerObservable(e,r,at.POINTERUP)&&this._processPointerUp(e,r,s)}_processPointerUp(e,t,i){let r=this._scene;if(e!=null&&e.pickedMesh){if(this._pickedUpMesh=e.pickedMesh,this._pickedDownMesh===this._pickedUpMesh&&(r.onPointerPick&&r.onPointerPick(t,e),i.singleClick&&!i.ignore&&r.onPointerObservable.observers.length>this._cameraObserverCount)){let a=at.POINTERPICK,o=new Wa(a,t,e);this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(o,a)}let s=e.pickedMesh._getActionManagerForTrigger();if(s&&!i.ignore){s.processTrigger(7,hn.CreateNew(e.pickedMesh,t,e)),!i.hasSwiped&&i.singleClick&&s.processTrigger(1,hn.CreateNew(e.pickedMesh,t,e));let a=e.pickedMesh._getActionManagerForTrigger(6);i.doubleClick&&a&&a.processTrigger(6,hn.CreateNew(e.pickedMesh,t,e))}}else if(!i.ignore)for(let s of r._pointerUpStage)e=s.action(this._unTranslatedPointerX,this._unTranslatedPointerY,e,t,i.doubleClick);if(this._pickedDownMesh&&this._pickedDownMesh!==this._pickedUpMesh){let s=this._pickedDownMesh._getActionManagerForTrigger(16);s&&s.processTrigger(16,hn.CreateNew(this._pickedDownMesh,t))}if(!i.ignore){let s=new Wa(at.POINTERUP,t,e);if(this._setRayOnPointerInfo(e,t),r.onPointerObservable.notifyObservers(s,at.POINTERUP),r.onPointerUp&&r.onPointerUp(t,e,at.POINTERUP),!i.hasSwiped&&!this._skipPointerTap&&!this._isMultiTouchGesture){let a=0;if(i.singleClick?a=at.POINTERTAP:i.doubleClick&&(a=at.POINTERDOUBLETAP),a){let o=new Wa(a,t,e);r.onPointerObservable.hasObservers()&&r.onPointerObservable.hasSpecificMask(a)&&r.onPointerObservable.notifyObservers(o,a)}}}}isPointerCaptured(e=0){return this._pointerCaptures[e]}attachControl(e=!0,t=!0,i=!0,r=null){let s=this._scene,a=s.getEngine();r||(r=a.getInputElement()),this._alreadyAttached&&this.detachControl(),r&&(this._alreadyAttachedTo=r),this._deviceSourceManager=new kx(a),this._initActionManager=o=>{if(!this._meshPickProceed){let l=s.skipPointerUpPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerUp?null:s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerUpPredicate,s.pointerUpFastCheck,s.cameraToUseForPointers,s.pointerUpTrianglePredicate);this._currentPickResult=l,l&&(o=l.hit&&l.pickedMesh?l.pickedMesh._getActionManagerForTrigger():null),this._meshPickProceed=!0}return o},this._delayedSimpleClick=(o,l,c)=>{if((Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay&&!this._doubleClickOccured||o!==this._previousButtonPressed)&&(this._doubleClickOccured=!1,l.singleClick=!0,l.ignore=!1,this._delayedClicks[o])){let f=this._delayedClicks[o].evt,d=at.POINTERTAP,h=new Wa(d,f,this._currentPickResult);s.onPointerObservable.hasObservers()&&s.onPointerObservable.hasSpecificMask(d)&&s.onPointerObservable.notifyObservers(h,d),this._delayedClicks[o]=null}},this._initClickEvent=(o,l,c,f)=>{var _,p;let d=new Wx;this._currentPickResult=null;let h=null,u=o.hasSpecificMask(at.POINTERPICK)||l.hasSpecificMask(at.POINTERPICK)||o.hasSpecificMask(at.POINTERTAP)||l.hasSpecificMask(at.POINTERTAP)||o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!u&&_c&&(h=this._initActionManager(h,d),h&&(u=h.hasPickTriggers));let m=!1;if(u=u&&!this._isMultiTouchGesture,u){let g=c.button;if(d.hasSwiped=this._isPointerSwiping(),!d.hasSwiped){let v=!n.ExclusiveDoubleClickMode;if(v||(v=!o.hasSpecificMask(at.POINTERDOUBLETAP)&&!l.hasSpecificMask(at.POINTERDOUBLETAP),v&&!_c.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(v=!h.hasSpecificTrigger(6)))),v)(Date.now()-this._previousStartingPointerTime>n.DoubleClickDelay||g!==this._previousButtonPressed)&&(d.singleClick=!0,f(d,this._currentPickResult),m=!0);else{let S={evt:c,clickInfo:d,timeoutId:window.setTimeout(this._delayedSimpleClick.bind(this,g,d,f),n.DoubleClickDelay)};this._delayedClicks[g]=S}let T=o.hasSpecificMask(at.POINTERDOUBLETAP)||l.hasSpecificMask(at.POINTERDOUBLETAP);!T&&_c.HasSpecificTrigger(6)&&(h=this._initActionManager(h,d),h&&(T=h.hasSpecificTrigger(6))),T&&(g===this._previousButtonPressed&&Date.now()-this._previousStartingPointerTime{if(this._updatePointerPosition(o),!this._isSwiping&&this._swipeButtonPressed!==-1&&(this._isSwiping=Math.abs(this._startingPointerPosition.x-this._pointerX)>n.DragMovementThreshold||Math.abs(this._startingPointerPosition.y-this._pointerY)>n.DragMovementThreshold),a.isPointerLock&&a._verifyPointerLock(),this._checkPrePointerObservable(null,o,o.inputIndex>=Tt.MouseWheelX&&o.inputIndex<=Tt.MouseWheelZ?at.POINTERWHEEL:at.POINTERMOVE)||!s.cameraToUseForPointers&&!s.activeCamera)return;if(s.skipPointerMovePicking){this._processPointerMove(new Ts,o);return}s.pointerMovePredicate||(s.pointerMovePredicate=c=>c.isPickable&&c.isVisible&&c.isReady()&&c.isEnabled()&&(c.enablePointerMoveEvents||s.constantlyUpdateMeshUnderPointer||c._getActionManagerForTrigger()!==null)&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&c.layerMask)!==0));let l=s._registeredActions>0||s.constantlyUpdateMeshUnderPointer?this._pickMove(o):null;this._processPointerMove(l,o)},this._onPointerDown=o=>{var f;let l=this._activePointerIds.indexOf(-1);if(l===-1?this._activePointerIds.push(o.pointerId):this._activePointerIds[l]=o.pointerId,this._activePointerIdsCount++,this._pickedDownMesh=null,this._meshPickProceed=!1,n.ExclusiveDoubleClickMode){for(let d=0;dd.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),this._pickedDownMesh=null;let c;s.skipPointerDownPicking||s._registeredActions===0&&!this._checkForPicking()&&!s.onPointerDown?c=new Ts:c=s.pick(this._unTranslatedPointerX,this._unTranslatedPointerY,s.pointerDownPredicate,s.pointerDownFastCheck,s.cameraToUseForPointers,s.pointerDownTrianglePredicate),this._processPointerDown(c,o)},this._onPointerUp=o=>{let l=this._activePointerIds.indexOf(o.pointerId);l!==-1&&(this._activePointerIds[l]=-1,this._activePointerIdsCount--,this._pickedUpMesh=null,this._meshPickProceed=!1,this._updatePointerPosition(o),s.preventDefaultOnPointerUp&&r&&(o.preventDefault(),r.focus()),this._initClickEvent(s.onPrePointerObservable,s.onPointerObservable,o,(c,f)=>{if(s.onPrePointerObservable.hasObservers()&&(this._skipPointerTap=!1,!c.ignore)){if(this._checkPrePointerObservable(null,o,at.POINTERUP)){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1),o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1);return}c.hasSwiped||(c.singleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERTAP)&&this._checkPrePointerObservable(null,o,at.POINTERTAP)&&(this._skipPointerTap=!0),c.doubleClick&&s.onPrePointerObservable.hasSpecificMask(at.POINTERDOUBLETAP)&&this._checkPrePointerObservable(null,o,at.POINTERDOUBLETAP)&&(this._skipPointerTap=!0))}if(!this._pointerCaptures[o.pointerId]){this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1);return}o.buttons===0&&(this._pointerCaptures[o.pointerId]=!1),!(!s.cameraToUseForPointers&&!s.activeCamera)&&(s.pointerUpPredicate||(s.pointerUpPredicate=d=>d.isPickable&&d.isVisible&&d.isReady()&&d.isEnabled()&&(!s.cameraToUseForPointers||(s.cameraToUseForPointers.layerMask&d.layerMask)!==0)),!this._meshPickProceed&&(_c&&_c.HasTriggers||this._checkForPicking()||s.onPointerUp)&&this._initActionManager(null,c),f||(f=this._currentPickResult),this._processPointerUp(f,o,c),this._previousPickResult=this._currentPickResult,this._swipeButtonPressed===o.button&&(this._isSwiping=!1,this._swipeButtonPressed=-1))}))},this._onKeyDown=o=>{let l=Co.KEYDOWN;if(s.onPreKeyboardObservable.hasObservers()){let c=new $g(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new Hm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(14,hn.CreateNewFromScene(s,o))},this._onKeyUp=o=>{let l=Co.KEYUP;if(s.onPreKeyboardObservable.hasObservers()){let c=new $g(l,o);if(s.onPreKeyboardObservable.notifyObservers(c,l),c.skipOnKeyboardObservable)return}if(s.onKeyboardObservable.hasObservers()){let c=new Hm(l,o);s.onKeyboardObservable.notifyObservers(c,l)}s.actionManager&&s.actionManager.processTrigger(15,hn.CreateNewFromScene(s,o))},this._deviceSourceManager.onDeviceConnectedObservable.add(o=>{o.deviceType===$e.Mouse?o.onInputChangedObservable.add(l=>{this._originMouseEvent=l,l.inputIndex===Tt.LeftClick||l.inputIndex===Tt.MiddleClick||l.inputIndex===Tt.RightClick||l.inputIndex===Tt.BrowserBack||l.inputIndex===Tt.BrowserForward?t&&o.getInput(l.inputIndex)===1?this._onPointerDown(l):e&&o.getInput(l.inputIndex)===0&&this._onPointerUp(l):i&&(l.inputIndex===Tt.Move?this._onPointerMove(l):(l.inputIndex===Tt.MouseWheelX||l.inputIndex===Tt.MouseWheelY||l.inputIndex===Tt.MouseWheelZ)&&this._onPointerMove(l))}):o.deviceType===$e.Touch?o.onInputChangedObservable.add(l=>{l.inputIndex===Tt.LeftClick&&(t&&o.getInput(l.inputIndex)===1?(this._onPointerDown(l),this._activePointerIdsCount>1&&(this._isMultiTouchGesture=!0)):e&&o.getInput(l.inputIndex)===0&&(this._onPointerUp(l),this._activePointerIdsCount===0&&(this._isMultiTouchGesture=!1))),i&&l.inputIndex===Tt.Move&&this._onPointerMove(l)}):o.deviceType===$e.Keyboard&&o.onInputChangedObservable.add(l=>{l.type==="keydown"?this._onKeyDown(l):l.type==="keyup"&&this._onKeyUp(l)})}),this._alreadyAttached=!0}detachControl(){this._alreadyAttached&&(this._deviceSourceManager.dispose(),this._deviceSourceManager=null,this._alreadyAttachedTo&&!this._scene.doNotHandleCursors&&(this._alreadyAttachedTo.style.cursor=this._scene.defaultCursor),this._alreadyAttached=!1,this._alreadyAttachedTo=null)}setPointerOverMesh(e,t=0,i,r){if(this._meshUnderPointerId[t]===e&&(!e||!e._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting))return;let s=this._meshUnderPointerId[t],a;s&&(a=s._getActionManagerForTrigger(10),a&&a.processTrigger(10,new hn(s,this._pointerX,this._pointerY,e,r,{pointerId:t}))),e?(this._meshUnderPointerId[t]=e,this._pointerOverMesh=e,a=e._getActionManagerForTrigger(9),a&&a.processTrigger(9,new hn(e,this._pointerX,this._pointerY,e,r,{pointerId:t,pickResult:i}))):(delete this._meshUnderPointerId[t],this._pointerOverMesh=null),this._scene.onMeshUnderPointerUpdatedObservable.hasObservers()&&this._scene.onMeshUnderPointerUpdatedObservable.notifyObservers({mesh:e,pointerId:t})}getPointerOverMesh(){return this.meshUnderPointer}_invalidateMesh(e){this._pointerOverMesh===e&&(this._pointerOverMesh=null),this._pickedDownMesh===e&&(this._pickedDownMesh=null),this._pickedUpMesh===e&&(this._pickedUpMesh=null);for(let t in this._meshUnderPointerId)this._meshUnderPointerId[t]===e&&delete this._meshUnderPointerId[t]}};Zn.DragMovementThreshold=10;Zn.LongPressDelay=500;Zn.DoubleClickDelay=300;Zn.ExclusiveDoubleClickMode=!1});var Tl,VP=I(()=>{tc();Tl=class n{get min(){return this._min}get max(){return this._max}get average(){return this._average}get lastSecAverage(){return this._lastSecAverage}get current(){return this._current}get total(){return this._totalAccumulated}get count(){return this._totalValueCount}constructor(){this._startMonitoringTime=0,this._min=0,this._max=0,this._average=0,this._lastSecAverage=0,this._current=0,this._totalValueCount=0,this._totalAccumulated=0,this._lastSecAccumulated=0,this._lastSecTime=0,this._lastSecValueCount=0}fetchNewFrame(){this._totalValueCount++,this._current=0,this._lastSecValueCount++}addCount(e,t){n.Enabled&&(this._current+=e,t&&this._fetchResult())}beginMonitoring(){n.Enabled&&(this._startMonitoringTime=br.Now)}endMonitoring(e=!0){if(!n.Enabled)return;e&&this.fetchNewFrame();let t=br.Now;this._current=t-this._startMonitoringTime,e&&this._fetchResult()}endFrame(){this._fetchResult()}_fetchResult(){this._totalAccumulated+=this._current,this._lastSecAccumulated+=this._current,this._min=Math.min(this._min,this._current),this._max=Math.max(this._max,this._current),this._average=this._totalAccumulated/this._totalValueCount;let e=br.Now;e-this._lastSecTime>1e3&&(this._lastSecAverage=this._lastSecAccumulated/this._lastSecValueCount,this._lastSecTime=e,this._lastSecAccumulated=0,this._lastSecValueCount=0)}};Tl.Enabled=!0});var gc,Hx=I(()=>{gc=class{static get UniqueId(){let e=this._UniqueIdCounter;return this._UniqueIdCounter++,e}};gc._UniqueIdCounter=1});var zx,ok=I(()=>{zx=class{constructor(){this.pointerDownFastCheck=!1,this.pointerUpFastCheck=!1,this.pointerMoveFastCheck=!1,this.skipPointerMovePicking=!1,this.skipPointerDownPicking=!1,this.skipPointerUpPicking=!1}}});var Ece,Sce,lk,ti,Ys=I(()=>{wi();tc();mi();Mo();LG();Df();ke();Kg();Of();jg();OP();xx();Qg();bx();Wm();Oa();Gi();Sn();ak();VP();zt();fx();Hx();lc();Wg();pl();ok();Lt();$i();ul();Ece=new Ni,Sce=new Ni;(function(n){n[n.BackwardCompatible=0]="BackwardCompatible",n[n.Intermediate=1]="Intermediate",n[n.Aggressive=2]="Aggressive"})(lk||(lk={}));ti=class n{static DefaultMaterialFactory(e){throw Qe("StandardMaterial")}static CollisionCoordinatorFactory(){throw Qe("DefaultCollisionCoordinator")}get clearColor(){return this._clearColor}set clearColor(e){e!==this._clearColor&&(this._clearColor=e,this.onClearColorChangedObservable.notifyObservers(this._clearColor))}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}get performancePriority(){return this._performancePriority}set performancePriority(e){if(e!==this._performancePriority){switch(this._performancePriority=e,e){case 0:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!1,this.autoClear=!0;break;case 1:this.skipFrustumClipping=!1,this._renderingManager.maintainStateBetweenFrames=!1,this.skipPointerMovePicking=!0,this.autoClear=!1;break;case 2:this.skipFrustumClipping=!0,this._renderingManager.maintainStateBetweenFrames=!0,this.skipPointerMovePicking=!0,this.autoClear=!1;break}this.onScenePerformancePriorityChangedObservable.notifyObservers(e)}}set forceWireframe(e){this._forceWireframe!==e&&(this._forceWireframe=e,this.markAllMaterialsAsDirty(16))}get forceWireframe(){return this._forceWireframe}set skipFrustumClipping(e){this._skipFrustumClipping!==e&&(this._skipFrustumClipping=e)}get skipFrustumClipping(){return this._skipFrustumClipping}set forcePointsCloud(e){this._forcePointsCloud!==e&&(this._forcePointsCloud=e,this.markAllMaterialsAsDirty(16))}get forcePointsCloud(){return this._forcePointsCloud}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture!==e&&(this._environmentTexture=e,this.onEnvironmentTextureChangedObservable.notifyObservers(e),this.markAllMaterialsAsDirty(1))}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}get animationPropertiesOverride(){return this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set beforeRender(e){this._onBeforeRenderObserver&&this.onBeforeRenderObservable.remove(this._onBeforeRenderObserver),e&&(this._onBeforeRenderObserver=this.onBeforeRenderObservable.add(e))}set afterRender(e){this._onAfterRenderObserver&&this.onAfterRenderObservable.remove(this._onAfterRenderObserver),e&&(this._onAfterRenderObserver=this.onAfterRenderObservable.add(e))}set beforeCameraRender(e){this._onBeforeCameraRenderObserver&&this.onBeforeCameraRenderObservable.remove(this._onBeforeCameraRenderObserver),this._onBeforeCameraRenderObserver=this.onBeforeCameraRenderObservable.add(e)}set afterCameraRender(e){this._onAfterCameraRenderObserver&&this.onAfterCameraRenderObservable.remove(this._onAfterCameraRenderObserver),this._onAfterCameraRenderObserver=this.onAfterCameraRenderObservable.add(e)}get pointerDownPredicate(){return this._pointerPickingConfiguration.pointerDownPredicate}set pointerDownPredicate(e){this._pointerPickingConfiguration.pointerDownPredicate=e}get pointerUpPredicate(){return this._pointerPickingConfiguration.pointerUpPredicate}set pointerUpPredicate(e){this._pointerPickingConfiguration.pointerUpPredicate=e}get pointerMovePredicate(){return this._pointerPickingConfiguration.pointerMovePredicate}set pointerMovePredicate(e){this._pointerPickingConfiguration.pointerMovePredicate=e}get pointerDownFastCheck(){return this._pointerPickingConfiguration.pointerDownFastCheck}set pointerDownFastCheck(e){this._pointerPickingConfiguration.pointerDownFastCheck=e}get pointerUpFastCheck(){return this._pointerPickingConfiguration.pointerUpFastCheck}set pointerUpFastCheck(e){this._pointerPickingConfiguration.pointerUpFastCheck=e}get pointerMoveFastCheck(){return this._pointerPickingConfiguration.pointerMoveFastCheck}set pointerMoveFastCheck(e){this._pointerPickingConfiguration.pointerMoveFastCheck=e}get skipPointerMovePicking(){return this._pointerPickingConfiguration.skipPointerMovePicking}set skipPointerMovePicking(e){this._pointerPickingConfiguration.skipPointerMovePicking=e}get skipPointerDownPicking(){return this._pointerPickingConfiguration.skipPointerDownPicking}set skipPointerDownPicking(e){this._pointerPickingConfiguration.skipPointerDownPicking=e}get skipPointerUpPicking(){return this._pointerPickingConfiguration.skipPointerUpPicking}set skipPointerUpPicking(e){this._pointerPickingConfiguration.skipPointerUpPicking=e}get unTranslatedPointer(){return this._inputManager.unTranslatedPointer}static get DragMovementThreshold(){return Zn.DragMovementThreshold}static set DragMovementThreshold(e){Zn.DragMovementThreshold=e}static get LongPressDelay(){return Zn.LongPressDelay}static set LongPressDelay(e){Zn.LongPressDelay=e}static get DoubleClickDelay(){return Zn.DoubleClickDelay}static set DoubleClickDelay(e){Zn.DoubleClickDelay=e}static get ExclusiveDoubleClickMode(){return Zn.ExclusiveDoubleClickMode}static set ExclusiveDoubleClickMode(e){Zn.ExclusiveDoubleClickMode=e}get _eyePosition(){var e,t,i;return(i=(t=this._forcedViewPosition)!=null?t:(e=this.activeCamera)==null?void 0:e.globalPosition)!=null?i:b.ZeroReadOnly}bindEyePosition(e,t="vEyePosition",i=!1){let r=this._eyePosition,s=this.useRightHandedSystem===(this._mirroredCameraPosition!=null),a=this.floatingOriginOffset,o=Ece.set(r.x,r.y,r.z,s?-1:1),l=o.subtractFromFloatsToRef(a.x,a.y,a.z,0,Sce);return e&&(i?e.setFloat3(t,l.x,l.y,l.z):e.setVector4(t,l)),o}finalizeSceneUbo(){let e=this.getSceneUniformBuffer(),t=this.bindEyePosition(null),i=this.floatingOriginOffset;return e.updateFloat4("vEyePosition",t.x-i.x,t.y-i.y,t.z-i.z,t.w),e.update(),e}set useRightHandedSystem(e){this._useRightHandedSystem!==e&&(this._useRightHandedSystem=e,this.markAllMaterialsAsDirty(16))}get useRightHandedSystem(){return this._useRightHandedSystem}setStepId(e){this._currentStepId=e}getStepId(){return this._currentStepId}getInternalStep(){return this._currentInternalStep}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAllMaterialsAsDirty(16))}get fogEnabled(){return this._fogEnabled}set fogMode(e){this._fogMode!==e&&(this._fogMode=e,this.markAllMaterialsAsDirty(16))}get fogMode(){return this._fogMode}get prePass(){return!!this.prePassRenderer&&this.prePassRenderer.defaultRT.enabled}set shadowsEnabled(e){this._shadowsEnabled!==e&&(this._shadowsEnabled=e,this.markAllMaterialsAsDirty(2))}get shadowsEnabled(){return this._shadowsEnabled}set lightsEnabled(e){this._lightsEnabled!==e&&(this._lightsEnabled=e,this.markAllMaterialsAsDirty(2))}get lightsEnabled(){return this._lightsEnabled}get activeCameras(){return this._activeCameras}set activeCameras(e){this._unObserveActiveCameras&&(this._unObserveActiveCameras(),this._unObserveActiveCameras=null),e&&(this._unObserveActiveCameras=lx(e,()=>{this.onActiveCamerasChanged.notifyObservers(this)})),this._activeCameras=e}get activeCamera(){return this._activeCamera}set activeCamera(e){e!==this._activeCamera&&(this._activeCamera=e,this.onActiveCameraChanged.notifyObservers(this))}get _hasDefaultMaterial(){return n.DefaultMaterialFactory!==n._OriginalDefaultMaterialFactory}get defaultMaterial(){return this._defaultMaterial||(this._defaultMaterial=n.DefaultMaterialFactory(this)),this._defaultMaterial}set defaultMaterial(e){this._defaultMaterial=e}set texturesEnabled(e){this._texturesEnabled!==e&&(this._texturesEnabled=e,this.markAllMaterialsAsDirty(1))}get texturesEnabled(){return this._texturesEnabled}get frameGraph(){return this._frameGraph}set frameGraph(e){if(this._frameGraph){this._frameGraph=e,e||(this.customRenderFunction=this._currentCustomRenderFunction);return}this._frameGraph=e,e&&(this._currentCustomRenderFunction=this.customRenderFunction,this.customRenderFunction=this._renderWithFrameGraph,this.activeCamera=null)}set skeletonsEnabled(e){this._skeletonsEnabled!==e&&(this._skeletonsEnabled=e,this.markAllMaterialsAsDirty(8))}get skeletonsEnabled(){return this._skeletonsEnabled}get collisionCoordinator(){return this._collisionCoordinator||(this._collisionCoordinator=n.CollisionCoordinatorFactory(),this._collisionCoordinator.init(this)),this._collisionCoordinator}get renderingManager(){return this._renderingManager}get frustumPlanes(){return this._frustumPlanes}_registerTransientComponents(){if(this._transientComponents.length>0){for(let e of this._transientComponents)e.register();this._transientComponents.length=0}}_addComponent(e){this._components.push(e),this._transientComponents.push(e);let t=e;t.addFromContainer&&t.serialize&&this._serializableComponents.push(t)}_getComponent(e){for(let t of this._components)if(t.name===e)return t;return null}get uniqueId(){return this._uniqueId}constructor(e,t){this._inputManager=new Zn(this),this.cameraToUseForPointers=null,this._isScene=!0,this._blockEntityCollection=!1,this.autoClear=!0,this.autoClearDepthAndStencil=!0,this._clearColor=new ft(.2,.2,.3,1),this.onClearColorChangedObservable=new te,this.ambientColor=new Ee(0,0,0),this.environmentIntensity=1,this.iblIntensity=1,this._performancePriority=0,this.onScenePerformancePriorityChangedObservable=new te,this._forceWireframe=!1,this._skipFrustumClipping=!1,this._forcePointsCloud=!1,this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.objectRenderers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.effectLayers=[],this.sounds=null,this.layers=[],this.lensFlareSystems=[],this.proceduralTextures=[],this.animationsEnabled=!0,this._animationPropertiesOverride=null,this.useConstantAnimationDeltaTime=!1,this.constantlyUpdateMeshUnderPointer=!1,this.hoverCursor="pointer",this.defaultCursor="",this.doNotHandleCursors=!1,this.preventDefaultOnPointerDown=!0,this.preventDefaultOnPointerUp=!0,this.metadata=null,this.reservedDataStore=null,this.disableOfflineSupportExceptionRules=[],this.onDisposeObservable=new te,this._onDisposeObserver=null,this.onBeforeRenderObservable=new te,this._onBeforeRenderObserver=null,this.onAfterRenderObservable=new te,this.onAfterRenderCameraObservable=new te,this._onAfterRenderObserver=null,this.onBeforeAnimationsObservable=new te,this.onAfterAnimationsObservable=new te,this.onBeforeDrawPhaseObservable=new te,this.onAfterDrawPhaseObservable=new te,this.onReadyObservable=new te,this.onBeforeCameraRenderObservable=new te,this._onBeforeCameraRenderObserver=null,this.onAfterCameraRenderObservable=new te,this._onAfterCameraRenderObserver=null,this.onBeforeActiveMeshesEvaluationObservable=new te,this.onAfterActiveMeshesEvaluationObservable=new te,this.onBeforeParticlesRenderingObservable=new te,this.onAfterParticlesRenderingObservable=new te,this.onDataLoadedObservable=new te,this.onNewCameraAddedObservable=new te,this.onCameraRemovedObservable=new te,this.onNewLightAddedObservable=new te,this.onLightRemovedObservable=new te,this.onNewGeometryAddedObservable=new te,this.onGeometryRemovedObservable=new te,this.onNewTransformNodeAddedObservable=new te,this.onTransformNodeRemovedObservable=new te,this.onNewMeshAddedObservable=new te,this.onMeshRemovedObservable=new te,this.onNewSkeletonAddedObservable=new te,this.onSkeletonRemovedObservable=new te,this.onNewParticleSystemAddedObservable=new te,this.onParticleSystemRemovedObservable=new te,this.onNewAnimationGroupAddedObservable=new te,this.onAnimationGroupRemovedObservable=new te,this.onNewMaterialAddedObservable=new te,this.onNewMultiMaterialAddedObservable=new te,this.onMaterialRemovedObservable=new te,this.onMultiMaterialRemovedObservable=new te,this.onNewTextureAddedObservable=new te,this.onTextureRemovedObservable=new te,this.onNewFrameGraphAddedObservable=new te,this.onFrameGraphRemovedObservable=new te,this.onNewObjectRendererAddedObservable=new te,this.onObjectRendererRemovedObservable=new te,this.onNewPostProcessAddedObservable=new te,this.onPostProcessRemovedObservable=new te,this.onNewEffectLayerAddedObservable=new te,this.onEffectLayerRemovedObservable=new te,this.onBeforeRenderTargetsRenderObservable=new te,this.onAfterRenderTargetsRenderObservable=new te,this.onBeforeStepObservable=new te,this.onAfterStepObservable=new te,this.onActiveCameraChanged=new te,this.onActiveCamerasChanged=new te,this.onBeforeRenderingGroupObservable=new te,this.onAfterRenderingGroupObservable=new te,this.onMeshImportedObservable=new te,this.onAnimationFileImportedObservable=new te,this.onEnvironmentTextureChangedObservable=new te,this.onMeshUnderPointerUpdatedObservable=new te,this._registeredForLateAnimationBindings=new bo(256),this._pointerPickingConfiguration=new zx,this.onPrePointerObservable=new te,this.onPointerObservable=new te,this.onPreKeyboardObservable=new te,this.onKeyboardObservable=new te,this._useRightHandedSystem=!1,this._timeAccumulator=0,this._currentStepId=0,this._currentInternalStep=0,this._fogEnabled=!0,this._fogMode=n.FOGMODE_NONE,this.fogColor=new Ee(.2,.2,.3),this.fogDensity=.1,this.fogStart=0,this.fogEnd=1e3,this.needsPreviousWorldMatrices=!1,this._shadowsEnabled=!0,this._lightsEnabled=!0,this._unObserveActiveCameras=null,this._texturesEnabled=!0,this._frameGraph=null,this.frameGraphs=[],this.physicsEnabled=!0,this.particlesEnabled=!0,this.spritesEnabled=!0,this._skeletonsEnabled=!0,this.lensFlaresEnabled=!0,this.collisionsEnabled=!0,this.gravity=new b(0,-9.807,0),this.postProcessesEnabled=!0,this.renderTargetsEnabled=!0,this.dumpNextRenderTargets=!1,this.customRenderTargets=[],this.importedMeshesFiles=[],this.probesEnabled=!0,this._meshesForIntersections=new bo(256),this.proceduralTexturesEnabled=!0,this._totalVertices=new Tl,this._activeIndices=new Tl,this._activeParticles=new Tl,this._activeBones=new Tl,this._animationTime=0,this.animationTimeScale=1,this._renderId=0,this._frameId=0,this._executeWhenReadyTimeoutId=null,this._intermediateRendering=!1,this._defaultFrameBufferCleared=!1,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1,this._toBeDisposed=new Array(256),this._activeRequests=new Array,this._pendingData=[],this._isDisposed=!1,this._isReadyChecks=[],this.dispatchAllSubMeshesOfActiveMeshes=!1,this._activeMeshes=new Xi(256),this._processedMaterials=new Xi(256),this._renderTargets=new bo(256),this._materialsRenderTargets=new bo(256),this._activeParticleSystems=new Xi(256),this._activeSkeletons=new bo(32),this._softwareSkinnedMeshes=new bo(32),this._activeAnimatables=new Array,this._transformMatrix=Z.Zero(),this.requireLightSorting=!1,this._components=[],this._serializableComponents=[],this._transientComponents=[],this._beforeCameraUpdateStage=mr.Create(),this._beforeClearStage=mr.Create(),this._beforeRenderTargetClearStage=mr.Create(),this._gatherRenderTargetsStage=mr.Create(),this._gatherActiveCameraRenderTargetsStage=mr.Create(),this._isReadyForMeshStage=mr.Create(),this._beforeEvaluateActiveMeshStage=mr.Create(),this._evaluateSubMeshStage=mr.Create(),this._preActiveMeshStage=mr.Create(),this._cameraDrawRenderTargetStage=mr.Create(),this._beforeCameraDrawStage=mr.Create(),this._beforeRenderTargetDrawStage=mr.Create(),this._beforeRenderingGroupDrawStage=mr.Create(),this._beforeRenderingMeshStage=mr.Create(),this._afterRenderingMeshStage=mr.Create(),this._afterRenderingGroupDrawStage=mr.Create(),this._afterCameraDrawStage=mr.Create(),this._afterCameraPostProcessStage=mr.Create(),this._afterRenderTargetDrawStage=mr.Create(),this._afterRenderTargetPostProcessStage=mr.Create(),this._afterRenderStage=mr.Create(),this._pointerMoveStage=mr.Create(),this._pointerDownStage=mr.Create(),this._pointerUpStage=mr.Create(),this._geometriesByUniqueId=null,this._uniqueId=0,this._defaultMeshCandidates={data:[],length:0},this._defaultSubMeshCandidates={data:[],length:0},this.onReadyTimeoutObservable=new te,this.onReadyTimeoutDuration=120*1e3,this._timeoutChecksStartTime=0,this._floatingOriginScene=void 0,this._preventFreeActiveMeshesAndRenderingGroups=!1,this._activeMeshesFrozen=!1,this._activeMeshesFrozenButKeepClipping=!1,this._skipEvaluateActiveMeshesCompletely=!1,this._freezeActiveMeshesCancel=null,this._useCurrentFrameBuffer=!1,this._allowPostProcessClearColor=!0,this.getDeterministicFrameTime=()=>this._engine.getTimeStep(),this._getFloatingOriginScene=()=>this._floatingOriginScene,this._registeredActions=0,this._blockMaterialDirtyMechanism=!1,this._perfCollector=null,this.activeCameras=[],this._uniqueId=this.getUniqueId();let i={useGeometryUniqueIdsMap:!0,useMaterialMeshMap:!0,useClonedMeshMap:!0,virtual:!1,defaultCameraLayerMask:268435455,defaultRenderableLayerMask:268435455,...t};this.defaultCameraLayerMask=i.defaultCameraLayerMask,this.defaultRenderableLayerMask=i.defaultRenderableLayerMask,e=this._engine=e||Oe.LastCreatedEngine,i.virtual?e._virtualScenes.push(this):(Oe._LastCreatedScene=this,e.scenes.push(this)),(e.getCreationOptions().useLargeWorldRendering||t!=null&&t.useFloatingOrigin)&&(XG(),this._floatingOriginScene=this,ka.getScene=this._getFloatingOriginScene),this._uid=null,this._renderingManager=new Fa(this),dc&&(this.postProcessManager=new dc(this)),Er()&&this.attachControl(),this._createUbo(),Ht&&(this._imageProcessingConfiguration=new Ht),this.setDefaultCandidateProviders(),i.useGeometryUniqueIdsMap&&(this._geometriesByUniqueId={}),this.useMaterialMeshMap=i.useMaterialMeshMap,this.useClonedMeshMap=i.useClonedMeshMap,(!t||!t.virtual)&&e.onNewSceneAddedObservable.notifyObservers(this)}getClassName(){return"Scene"}_getDefaultMeshCandidates(){return this._defaultMeshCandidates.data=this.meshes,this._defaultMeshCandidates.length=this.meshes.length,this._defaultMeshCandidates}_getDefaultSubMeshCandidates(e){return this._defaultSubMeshCandidates.data=e.subMeshes,this._defaultSubMeshCandidates.length=e.subMeshes.length,this._defaultSubMeshCandidates}setDefaultCandidateProviders(){this.getActiveMeshCandidates=()=>this._getDefaultMeshCandidates(),this.getActiveSubMeshCandidates=e=>this._getDefaultSubMeshCandidates(e),this.getIntersectingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e),this.getCollidingSubMeshCandidates=(e,t)=>this._getDefaultSubMeshCandidates(e)}get meshUnderPointer(){return this._inputManager.meshUnderPointer}get pointerX(){return this._inputManager.pointerX}set pointerX(e){this._inputManager.pointerX=e}get pointerY(){return this._inputManager.pointerY}set pointerY(e){this._inputManager.pointerY=e}getCachedMaterial(){return this._cachedMaterial}getCachedEffect(){return this._cachedEffect}getCachedVisibility(){return this._cachedVisibility}isCachedMaterialInvalid(e,t,i=1){return this._cachedEffect!==t||this._cachedMaterial!==e||this._cachedVisibility!==i}getEngine(){return this._engine}getTotalVertices(){return this._totalVertices.current}get totalVerticesPerfCounter(){return this._totalVertices}getActiveIndices(){return this._activeIndices.current}get totalActiveIndicesPerfCounter(){return this._activeIndices}getActiveParticles(){return this._activeParticles.current}get activeParticlesPerfCounter(){return this._activeParticles}getActiveBones(){return this._activeBones.current}get activeBonesPerfCounter(){return this._activeBones}getActiveMeshes(){return this._activeMeshes}getAnimationRatio(){return this._animationRatio!==void 0?this._animationRatio:1}getRenderId(){return this._renderId}getFrameId(){return this._frameId}incrementRenderId(){this._renderId++}_createUbo(){this.setSceneUniformBuffer(this.createSceneUniformBuffer())}simulatePointerMove(e,t){return this._inputManager.simulatePointerMove(e,t),this}simulatePointerDown(e,t){return this._inputManager.simulatePointerDown(e,t),this}simulatePointerUp(e,t,i){return this._inputManager.simulatePointerUp(e,t,i),this}isPointerCaptured(e=0){return this._inputManager.isPointerCaptured(e)}attachControl(e=!0,t=!0,i=!0){this._inputManager.attachControl(e,t,i)}detachControl(){this._inputManager.detachControl()}isReady(e=!0){var a,o,l;if(this._isDisposed)return!1;let t,i=this.getEngine(),r=i.currentRenderPassId;i.currentRenderPassId=(o=(a=this.activeCamera)==null?void 0:a.renderPassId)!=null?o:r;let s=!0;for(this._pendingData.length>0&&(s=!1),(l=this.prePassRenderer)==null||l.update(),this.useOrderIndependentTransparency&&this.depthPeelingRenderer&&s&&(s=this.depthPeelingRenderer.isReady()),e&&(this._processedMaterials.reset(),this._materialsRenderTargets.reset()),t=0;t0;for(let h of this._isReadyForMeshStage)h.action(c,f)||(s=!1);if(!e)continue;let d=c.material||this.defaultMaterial;if(d)if(d._storeEffectOnSubMeshes)for(let h of c.subMeshes){let u=h.getMaterial();u&&u.hasRenderTargetTextures&&u.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(u)===-1&&(this._processedMaterials.push(u),this._materialsRenderTargets.concatWithNoDuplicate(u.getRenderTargetTextures()))}else d.hasRenderTargetTextures&&d.getRenderTargetTextures!=null&&this._processedMaterials.indexOf(d)===-1&&(this._processedMaterials.push(d),this._materialsRenderTargets.concatWithNoDuplicate(d.getRenderTargetTextures()))}if(e){for(t=0;t0)for(let c of this.activeCameras)c.isReady(!0)||(s=!1);else this.activeCamera&&(this.activeCamera.isReady(!0)||(s=!1));for(let c of this.particleSystems)c.isReady()||(s=!1);if(this.proceduralTexturesEnabled)for(let c of this.proceduralTextures)c.isReady()||(s=!1);if(this.layers)for(let c of this.layers)c.isReady()||(s=!1);if(this.effectLayers)for(let c of this.effectLayers)c.isLayerReady()||(s=!1);for(let c of this._isReadyChecks)c.isReady()||(s=!1);return i.areAllEffectsReady()||(s=!1),i.currentRenderPassId=r,s}resetCachedMaterial(){this._cachedMaterial=null,this._cachedEffect=null,this._cachedVisibility=null}registerBeforeRender(e){this.onBeforeRenderObservable.add(e)}unregisterBeforeRender(e){this.onBeforeRenderObservable.removeCallback(e)}registerAfterRender(e){this.onAfterRenderObservable.add(e)}unregisterAfterRender(e){this.onAfterRenderObservable.removeCallback(e)}_executeOnceBeforeRender(e){let t=()=>{e(),setTimeout(()=>{this.unregisterBeforeRender(t)})};this.registerBeforeRender(t)}executeOnceBeforeRender(e,t){t!==void 0?setTimeout(()=>{this._executeOnceBeforeRender(e)},t):this._executeOnceBeforeRender(e)}addPendingData(e){this._pendingData.push(e)}removePendingData(e){let t=this.isLoading,i=this._pendingData.indexOf(e);i!==-1&&this._pendingData.splice(i,1),t&&!this.isLoading&&this.onDataLoadedObservable.notifyObservers(this)}getWaitingItemsCount(){return this._pendingData.length}get isLoading(){return this._pendingData.length>0}addIsReadyCheck(e){this._isReadyChecks.indexOf(e)===-1&&this._isReadyChecks.push(e)}removeIsReadyCheck(e){let t=this._isReadyChecks.indexOf(e);t!==-1&&this._isReadyChecks.splice(t,1)}executeWhenReady(e,t=!1){this.onReadyObservable.addOnce(e),this._executeWhenReadyTimeoutId===null&&this._checkIsReady(t)}async whenReadyAsync(e=!1){return await new Promise(t=>{this.executeWhenReady(()=>{t()},e)})}_clearReadynessChecksData(){this._timeoutChecksStartTime=0,this.onReadyTimeoutObservable.clear(),this.onReadyObservable.clear(),this._executeWhenReadyTimeoutId=null}_checkIsReady(e=!1){if(this._registerTransientComponents(),this._timeoutChecksStartTime===0)this._timeoutChecksStartTime=br.Now;else if(this.onReadyTimeoutDuration>0&&br.Now-this._timeoutChecksStartTime>this.onReadyTimeoutDuration){this.onReadyTimeoutObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this.isReady(e)){this.onReadyObservable.notifyObservers(this),this._clearReadynessChecksData();return}if(this._isDisposed){this._clearReadynessChecksData();return}this._executeWhenReadyTimeoutId=setTimeout(()=>{this.incrementRenderId(),this._checkIsReady(e)},100)}get animatables(){return this._activeAnimatables}resetLastAnimationTimeFrame(){this._animationTimeLast=br.Now}getViewMatrix(){return this._viewMatrix}getProjectionMatrix(){return this._projectionMatrix}getInverseProjectionMatrix(){return this._inverseProjectionMatrix}getTransformMatrix(){return this._transformMatrix}setTransformMatrix(e,t,i,r){this._multiviewSceneUboIsActive=!!(i&&r&&this._multiviewSceneUbo),!(this._viewUpdateFlag===e.updateFlag&&this._projectionUpdateFlag===t.updateFlag)&&(this._viewUpdateFlag=e.updateFlag,this._projectionUpdateFlag=t.updateFlag,this._viewMatrix=e,this._projectionMatrix=t,this._inverseProjectionMatrix||(this._inverseProjectionMatrix=new Z),this._projectionMatrix.invertToRef(this._inverseProjectionMatrix),this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._frustumPlanes?Mf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Mf.GetPlanes(this._transformMatrix),this._multiviewSceneUboIsActive&&this._multiviewSceneUbo.useUbo?this._updateMultiviewUbo(i,r):this._sceneUbo.useUbo&&(this._sceneUbo.updateMatrix("viewProjection",this._transformMatrix),this._sceneUbo.updateMatrix("view",this._viewMatrix),this._sceneUbo.updateMatrix("projection",this._projectionMatrix),this._sceneUbo.updateMatrix("inverseProjection",this._inverseProjectionMatrix)))}getSceneUniformBuffer(){return this._multiviewSceneUboIsActive&&this._multiviewSceneUbo?this._multiviewSceneUbo:this._sceneUbo}createSceneUniformBuffer(e,t){let i=typeof t=="boolean"?t:t==null?void 0:t.trackUBOsInFrame,r=new Sr(this._engine,void 0,!1,e!=null?e:"scene",void 0,i);return r.addUniform("viewProjection",16),r.addUniform("view",16),r.addUniform("projection",16),r.addUniform("vEyePosition",4),r.addUniform("inverseProjection",16),r}setSceneUniformBuffer(e){this._sceneUbo=e,this._viewUpdateFlag=-1,this._projectionUpdateFlag=-1}get floatingOriginMode(){return this._floatingOriginScene!==void 0}get floatingOriginOffset(){return this.floatingOriginMode?this._eyePosition:b.ZeroReadOnly}getUniqueId(){return gc.UniqueId}addMesh(e,t=!1){if(!this._blockEntityCollection&&(this.meshes.push(e),e._resyncLightSources(),e.parent||e._addToSceneRootNodes(),pe.SetImmediate(()=>{this.onNewMeshAddedObservable.notifyObservers(e)}),t)){let i=e.getChildMeshes();for(let r of i)this.addMesh(r)}}removeMesh(e,t=!1){let i=this.meshes.indexOf(e);if(i!==-1&&(this.meshes.splice(i,1),e.parent||e._removeFromSceneRootNodes()),this._inputManager._invalidateMesh(e),this.onMeshRemovedObservable.notifyObservers(e),t){let r=e.getChildMeshes();for(let s of r)this.removeMesh(s)}return i}addTransformNode(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneTransformNodesArray!==-1||(e._indexInSceneTransformNodesArray=this.transformNodes.length,this.transformNodes.push(e),e.parent||e._addToSceneRootNodes(),this.onNewTransformNodeAddedObservable.notifyObservers(e))}removeTransformNode(e){let t=e._indexInSceneTransformNodesArray;if(t!==-1){if(t!==this.transformNodes.length-1){let i=this.transformNodes[this.transformNodes.length-1];this.transformNodes[t]=i,i._indexInSceneTransformNodesArray=t}e._indexInSceneTransformNodesArray=-1,this.transformNodes.pop(),e.parent||e._removeFromSceneRootNodes()}return this.onTransformNodeRemovedObservable.notifyObservers(e),t}removeSkeleton(e){let t=this.skeletons.indexOf(e);return t!==-1&&(this.skeletons.splice(t,1),this.onSkeletonRemovedObservable.notifyObservers(e),this._executeActiveContainerCleanup(this._activeSkeletons)),t}removeMorphTargetManager(e){let t=this.morphTargetManagers.indexOf(e);return t!==-1&&this.morphTargetManagers.splice(t,1),t}removeLight(e){let t=this.lights.indexOf(e);if(t!==-1){for(let i of this.meshes)i._removeLightSource(e,!1);this.lights.splice(t,1),this.sortLightsByPriority(),e.parent||e._removeFromSceneRootNodes(),this.onLightRemovedObservable.notifyObservers(e)}return t}removeCamera(e){let t=this.cameras.indexOf(e);if(t!==-1&&(this.cameras.splice(t,1),e.parent||e._removeFromSceneRootNodes()),this.activeCameras){let i=this.activeCameras.indexOf(e);i!==-1&&this.activeCameras.splice(i,1)}return this.activeCamera===e&&(this.cameras.length>0?this.activeCamera=this.cameras[0]:this.activeCamera=null),this.onCameraRemovedObservable.notifyObservers(e),t}removeParticleSystem(e){let t=this.particleSystems.indexOf(e);return t!==-1&&(this.particleSystems.splice(t,1),this._executeActiveContainerCleanup(this._activeParticleSystems)),this.onParticleSystemRemovedObservable.notifyObservers(e),t}removeAnimation(e){let t=this.animations.indexOf(e);return t!==-1&&this.animations.splice(t,1),t}stopAnimation(e,t,i){}removeAnimationGroup(e){let t=this.animationGroups.indexOf(e);return t!==-1&&this.animationGroups.splice(t,1),this.onAnimationGroupRemovedObservable.notifyObservers(e),t}removeMultiMaterial(e){let t=this.multiMaterials.indexOf(e);return t!==-1&&this.multiMaterials.splice(t,1),this.onMultiMaterialRemovedObservable.notifyObservers(e),t}removeMaterial(e){let t=e._indexInSceneMaterialArray;if(t!==-1&&t{this.onNewLightAddedObservable.notifyObservers(e)})}}sortLightsByPriority(){this.requireLightSorting&&this.lights.sort(jt.CompareLightsPriority)}addCamera(e){this._blockEntityCollection||(this.cameras.push(e),pe.SetImmediate(()=>{this.onNewCameraAddedObservable.notifyObservers(e)}),e.parent||e._addToSceneRootNodes())}addSkeleton(e){this._blockEntityCollection||(this.skeletons.push(e),pe.SetImmediate(()=>{this.onNewSkeletonAddedObservable.notifyObservers(e)}))}addParticleSystem(e){this._blockEntityCollection||(this.particleSystems.push(e),pe.SetImmediate(()=>{this.onNewParticleSystemAddedObservable.notifyObservers(e)}))}addAnimation(e){this._blockEntityCollection||this.animations.push(e)}addAnimationGroup(e){this._blockEntityCollection||(this.animationGroups.push(e),pe.SetImmediate(()=>{this.onNewAnimationGroupAddedObservable.notifyObservers(e)}))}addMultiMaterial(e){this._blockEntityCollection||(this.multiMaterials.push(e),pe.SetImmediate(()=>{this.onNewMultiMaterialAddedObservable.notifyObservers(e)}))}addMaterial(e){this._blockEntityCollection||e.getScene()===this&&e._indexInSceneMaterialArray!==-1||(e._indexInSceneMaterialArray=this.materials.length,this.materials.push(e),pe.SetImmediate(()=>{this.onNewMaterialAddedObservable.notifyObservers(e)}))}addMorphTargetManager(e){this._blockEntityCollection||this.morphTargetManagers.push(e)}addGeometry(e){this._blockEntityCollection||(this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=this.geometries.length),this.geometries.push(e))}addActionManager(e){this.actionManagers.push(e)}addTexture(e){this._blockEntityCollection||(this.textures.push(e),this.onNewTextureAddedObservable.notifyObservers(e))}addFrameGraph(e){this.frameGraphs.push(e),pe.SetImmediate(()=>{this.onNewFrameGraphAddedObservable.notifyObservers(e)})}addObjectRenderer(e){this.objectRenderers.push(e),pe.SetImmediate(()=>{this.onNewObjectRendererAddedObservable.notifyObservers(e)})}addPostProcess(e){this._blockEntityCollection||(this.postProcesses.push(e),pe.SetImmediate(()=>{this.onNewPostProcessAddedObservable.notifyObservers(e)}))}addEffectLayer(e){this._blockEntityCollection||(this.effectLayers.push(e),pe.SetImmediate(()=>{this.onNewEffectLayerAddedObservable.notifyObservers(e)}))}switchActiveCamera(e,t=!0){this._engine.getInputElement()&&(this.activeCamera&&this.activeCamera.detachControl(),this.activeCamera=e,t&&e.attachControl())}setActiveCameraById(e){let t=this.getCameraById(e);return t?(this.activeCamera=t,t):null}setActiveCameraByName(e){let t=this.getCameraByName(e);return t?(this.activeCamera=t,t):null}getAnimationGroupByName(e){for(let t=0;ti.uniqueId===e)}getMaterialById(e,t=!1){return this._getMaterial(t,i=>i.id===e)}getMaterialByName(e,t=!1){return this._getMaterial(t,i=>i.name===e)}getLastMaterialById(e,t=!1){for(let i=this.materials.length-1;i>=0;i--)if(this.materials[i].id===e)return this.materials[i];if(t){for(let i=this.multiMaterials.length-1;i>=0;i--)if(this.multiMaterials[i].id===e)return this.multiMaterials[i]}return null}getTextureByUniqueId(e){for(let t=0;t{this.onNewGeometryAddedObservable.notifyObservers(e)}),!0)}removeGeometry(e){let t;if(this._geometriesByUniqueId){if(t=this._geometriesByUniqueId[e.uniqueId],t===void 0)return!1}else if(t=this.geometries.indexOf(e),t<0)return!1;if(t!==this.geometries.length-1){let i=this.geometries[this.geometries.length-1];i&&(this.geometries[t]=i,this._geometriesByUniqueId&&(this._geometriesByUniqueId[i.uniqueId]=t))}return this._geometriesByUniqueId&&(this._geometriesByUniqueId[e.uniqueId]=void 0),this.geometries.pop(),this.onGeometryRemovedObservable.notifyObservers(e),!0}getGeometries(){return this.geometries}getMeshById(e){for(let t=0;t=0;t--)if(this.meshes[t].id===e)return this.meshes[t];return null}getLastTransformNodeById(e){for(let t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];return null}getLastEntryById(e){let t;for(t=this.meshes.length-1;t>=0;t--)if(this.meshes[t].id===e)return this.meshes[t];for(t=this.transformNodes.length-1;t>=0;t--)if(this.transformNodes[t].id===e)return this.transformNodes[t];for(t=this.cameras.length-1;t>=0;t--)if(this.cameras[t].id===e)return this.cameras[t];for(t=this.lights.length-1;t>=0;t--)if(this.lights[t].id===e)return this.lights[t];for(t=this.skeletons.length-1;t>=0;t--){let i=this.skeletons[t];for(let r=i.bones.length-1;r>=0;r--)if(i.bones[r].id===e)return i.bones[r]}return null}getNodeById(e){let t=this.getMeshById(e);if(t)return t;let i=this.getTransformNodeById(e);if(i)return i;let r=this.getLightById(e);if(r)return r;let s=this.getCameraById(e);if(s)return s;let a=this.getBoneById(e);return a||null}getNodeByName(e){let t=this.getMeshByName(e);if(t)return t;let i=this.getTransformNodeByName(e);if(i)return i;let r=this.getLightByName(e);if(r)return r;let s=this.getCameraByName(e);if(s)return s;let a=this.getBoneByName(e);return a||null}getMeshByName(e){for(let t=0;t=0;t--)if(this.skeletons[t].id===e)return this.skeletons[t];return null}getSkeletonByUniqueId(e){for(let t=0;t{let o=!0,l=!0;for(let c of a)o&&(o=c.objectRenderer._isFrozen),l&&(l=c.objectRenderer._freezeActiveMeshesCancel!==null);if(o)return!0;if(!l)throw new Error("Freezing active meshes was cancelled");return!1},()=>{this._freezeActiveMeshesCancel=null,this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,t==null||t()},(o,l)=>{if(this._freezeActiveMeshesCancel=null,this.unfreezeActiveMeshes(),l){let c="Scene: Timeout while waiting for meshes to be frozen.";i?i(c):(ee.Error(c),o&&ee.Error(o))}else{let c="Scene: An unexpected error occurred while trying to freeze active meshes.";i?i(c):(ee.Error(c),o&&(ee.Error(o),o.stack&&ee.Error(o.stack)))}}),this}return this.executeWhenReady(()=>{if(!this.activeCamera){i&&i("No active camera found");return}if(this._frustumPlanes||this.updateTransformMatrix(),this._evaluateActiveMeshes(),this._activeMeshesFrozen=!0,this._activeMeshesFrozenButKeepClipping=s,this._skipEvaluateActiveMeshesCompletely=e,r)for(let a=0;ae.dispose())}_evaluateActiveMeshes(){var i;if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1){this._activeMeshes.length>0&&((i=this.activeCamera)==null||i._activeMeshes.reset(),this._activeMeshes.reset(),this._renderingManager.reset(),this._processedMaterials.reset(),this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset());return}if(this._activeMeshesFrozen&&this._activeMeshes.length){if(!this._skipEvaluateActiveMeshesCompletely){let r=this._activeMeshes.length;for(let s=0;s0&&(s.layerMask&this.activeCamera.layerMask)!==0&&(this._skipFrustumClipping||s.alwaysSelectAsActiveMesh||s.isInFrustum(this._frustumPlanes)))){this._activeMeshes.push(s),this.activeCamera._activeMeshes.push(s),o!==s&&o._activate(this._renderId,!1);for(let l of this._preActiveMeshStage)l.action(s);s._activate(this._renderId,!1)&&(s.isAnInstance?s._internalAbstractMeshDataInfo._actAsRegularMesh&&(o=s):o._internalAbstractMeshDataInfo._onlyForInstances=!1,o._internalAbstractMeshDataInfo._isActive=!0,this._activeMesh(s,o)),s._postActivate()}}if(this.onAfterActiveMeshesEvaluationObservable.notifyObservers(this),this.particlesEnabled){this.onBeforeParticlesRenderingObservable.notifyObservers(this);for(let r=0;r0){let r=this.getActiveSubMeshCandidates(t),s=r.length;i=i||s===1;for(let a=0;a0&&this._renderTargets.concatWithNoDuplicate(e.customRenderTargets),t&&t.customRenderTargets&&t.customRenderTargets.length>0&&this._renderTargets.concatWithNoDuplicate(t.customRenderTargets),this.environmentTexture&&this.environmentTexture.isRenderTarget&&this._renderTargets.pushNoDuplicate(this.environmentTexture);for(let h of this._gatherActiveCameraRenderTargetsStage)h.action(this._renderTargets);let s=!1;if(this.renderTargetsEnabled){this._intermediateRendering=!0;let h;if(this._renderTargets.length>0){pe.StartPerformanceCounter("Render targets",this._renderTargets.length>0);let u=(f=this.getBoundingBoxRenderer)==null?void 0:f.call(this);for(let m=0;m0?u.renderList.data.slice():[],h.length=u.renderList.length),_.render(p,this.dumpNextRenderTargets),s=!0}}u&&h&&(u.renderList.data=h,u.renderList.length=h.length),pe.EndPerformanceCounter("Render targets",this._renderTargets.length>0),this._renderId++}if(this._cameraDrawRenderTargetStage.length>0){let u=(d=this.getBoundingBoxRenderer)==null?void 0:d.call(this);u&&!h&&(h=u.renderList.length>0?u.renderList.data.slice():[],h.length=u.renderList.length);for(let m of this._cameraDrawRenderTargetStage)s=m.action(this.activeCamera)||s;u&&h&&(u.renderList.data=h,u.renderList.length=h.length)}this._intermediateRendering=!1}s&&!this.prePass&&(this._bindFrameBuffer(this._activeCamera,!1),this.updateTransformMatrix()),this.onAfterRenderTargetsRenderObservable.notifyObservers(this),this.postProcessManager&&!e._multiviewTexture&&!this.prePass&&this.postProcessManager._prepareFrame();for(let h of this._beforeCameraDrawStage)h.action(this.activeCamera);this.onBeforeDrawPhaseObservable.notifyObservers(this);let a=r.snapshotRendering&&r.snapshotRenderingMode===1;a&&this.finalizeSceneUbo(),this._renderingManager.render(null,null,!0,!a),this.onAfterDrawPhaseObservable.notifyObservers(this);for(let h of this._afterCameraDrawStage)h.action(this.activeCamera);if(this.postProcessManager&&!e._multiviewTexture){let h=e.outputRenderTarget?e.outputRenderTarget.renderTarget:void 0;this.postProcessManager._finalizeFrame(e.isIntermediate,h)}for(let h of this._afterCameraPostProcessStage)h.action(this.activeCamera);this._renderTargets.reset(),this.onAfterCameraRenderObservable.notifyObservers(this.activeCamera)}_processSubCameras(e,t=!0){if(e.cameraRigMode===0||e._renderingMultiview){e._renderingMultiview&&!this._multiviewSceneUbo&&this._createMultiviewUbo(),this._renderForCamera(e,void 0,t),this.onAfterRenderCameraObservable.notifyObservers(e);return}if(e._useMultiviewToSingleView)this._renderMultiviewToSingleView(e);else{this.onBeforeCameraRenderObservable.notifyObservers(e);for(let i=0;i-1&&(r.trigger===13&&r._executeCurrent(hn.CreateNew(t,void 0,a)),(!t.actionManager.hasSpecificTrigger(13,c=>{let f=c.mesh?c.mesh:c;return a===f})||r.trigger===13)&&t._intersectionsInProgress.splice(l,1))}}}}_advancePhysicsEngineStep(e){}_animate(e){}animate(){if(this._engine.isDeterministicLockStep()){let e=Math.max(n.MinDeltaTime,Math.min(this._engine.getDeltaTime(),n.MaxDeltaTime))+this._timeAccumulator,t=this._engine.getTimeStep(),i=1e3/t/1e3,r=0,s=this._engine.getLockstepMaxSteps(),a=Math.floor(e/t);for(a=Math.min(a,s);e>0&&r0);for(let l=0;l0),this._renderId++}this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let l of this._beforeClearStage)l.action();if(this._engine.snapshotRendering&&this._engine.snapshotRenderingMode===1)this._activeParticleSystems.reset(),this._activeSkeletons.reset(),this._softwareSkinnedMeshes.reset();else{let l=this.getActiveMeshCandidates(),c=l.length;if(this._activeMeshesFrozen){if(!this._skipEvaluateActiveMeshesCompletely)for(let f=0;f0)for(let a=0;a0);for(let o=0;o0),this._renderId++}this._engine.currentRenderPassId=(s=a==null?void 0:a.renderPassId)!=null?s:0,this.activeCamera=a,this._activeCamera&&this._activeCamera.cameraRigMode!==22&&!this.prePass&&this._bindFrameBuffer(this._activeCamera,!1),this.onAfterRenderTargetsRenderObservable.notifyObservers(this);for(let o of this._beforeClearStage)o.action();this._clearFrameBuffer(this.activeCamera);for(let o of this._gatherRenderTargetsStage)o.action(this._renderTargets);if(this.activeCameras&&this.activeCameras.length>0)for(let o=0;o0);else{if(!this.activeCamera)throw new Error("No camera defined");this._processSubCameras(this.activeCamera,!!this.activeCamera.outputRenderTarget)}}this._checkIntersections();for(let a of this._afterRenderStage)a.action();if(this.afterRender&&this.afterRender(),this.onAfterRenderObservable.notifyObservers(this),this._toBeDisposed.length){for(let a=0;as.dispose(!0)),this._disposeList(this.transformNodes,s=>s.dispose(!0));let i=this.cameras;this._disposeList(i),this._disposeList(this.particleSystems),this._disposeList(this.postProcesses),this._disposeList(this.textures),this._disposeList(this.morphTargetManagers),this._disposeList(this.frameGraphs),this._sceneUbo.dispose(),this._multiviewSceneUbo&&this._multiviewSceneUbo.dispose(),this.postProcessManager.dispose(),this._disposeList(this._components);let r=this._engine.scenes.indexOf(this);if(r>-1&&this._engine.scenes.splice(r,1),this._floatingOriginScene=void 0,this._engine.scenes.length===0&&zG(),Oe._LastCreatedScene===this){Oe._LastCreatedScene=null;let s=Oe.Instances.length-1;for(;s>=0;){let a=Oe.Instances[s];if(a.scenes.length>0){Oe._LastCreatedScene=a.scenes[this._engine.scenes.length-1];break}s--}}r=this._engine._virtualScenes.indexOf(this),r>-1&&this._engine._virtualScenes.splice(r,1),this._engine.wipeCaches(!0),this.onDisposeObservable.clear(),this.onBeforeRenderObservable.clear(),this.onAfterRenderObservable.clear(),this.onBeforeRenderTargetsRenderObservable.clear(),this.onAfterRenderTargetsRenderObservable.clear(),this.onAfterStepObservable.clear(),this.onBeforeStepObservable.clear(),this.onBeforeActiveMeshesEvaluationObservable.clear(),this.onAfterActiveMeshesEvaluationObservable.clear(),this.onBeforeParticlesRenderingObservable.clear(),this.onAfterParticlesRenderingObservable.clear(),this.onBeforeDrawPhaseObservable.clear(),this.onAfterDrawPhaseObservable.clear(),this.onBeforeAnimationsObservable.clear(),this.onAfterAnimationsObservable.clear(),this.onDataLoadedObservable.clear(),this.onBeforeRenderingGroupObservable.clear(),this.onAfterRenderingGroupObservable.clear(),this.onMeshImportedObservable.clear(),this.onBeforeCameraRenderObservable.clear(),this.onAfterCameraRenderObservable.clear(),this.onAfterRenderCameraObservable.clear(),this.onReadyObservable.clear(),this.onNewCameraAddedObservable.clear(),this.onCameraRemovedObservable.clear(),this.onNewLightAddedObservable.clear(),this.onLightRemovedObservable.clear(),this.onNewGeometryAddedObservable.clear(),this.onGeometryRemovedObservable.clear(),this.onNewTransformNodeAddedObservable.clear(),this.onTransformNodeRemovedObservable.clear(),this.onNewMeshAddedObservable.clear(),this.onMeshRemovedObservable.clear(),this.onNewSkeletonAddedObservable.clear(),this.onSkeletonRemovedObservable.clear(),this.onNewMaterialAddedObservable.clear(),this.onNewMultiMaterialAddedObservable.clear(),this.onMaterialRemovedObservable.clear(),this.onMultiMaterialRemovedObservable.clear(),this.onNewTextureAddedObservable.clear(),this.onTextureRemovedObservable.clear(),this.onNewFrameGraphAddedObservable.clear(),this.onFrameGraphRemovedObservable.clear(),this.onNewObjectRendererAddedObservable.clear(),this.onObjectRendererRemovedObservable.clear(),this.onPrePointerObservable.clear(),this.onPointerObservable.clear(),this.onPreKeyboardObservable.clear(),this.onKeyboardObservable.clear(),this.onActiveCameraChanged.clear(),this.onScenePerformancePriorityChangedObservable.clear(),this.onClearColorChangedObservable.clear(),this.onEnvironmentTextureChangedObservable.clear(),this.onMeshUnderPointerUpdatedObservable.clear(),this._isDisposed=!0}_disposeList(e,t){let i=e.slice(0);t=t!=null?t:(r=>r.dispose());for(let r of i)t(r);e.length=0}get isDisposed(){return this._isDisposed}clearCachedVertexData(){for(let e=0;e!0);let r=this.meshes.filter(e);for(let s of r){if(s.computeWorldMatrix(!0),!s.subMeshes||s.subMeshes.length===0||s.infiniteDistance)continue;let a=s.getBoundingInfo(),o=a.boundingBox.minimumWorld,l=a.boundingBox.maximumWorld;b.CheckExtends(o,t,i),b.CheckExtends(l,t,i)}return t.x===Number.MAX_VALUE?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}createPickingRay(e,t,i,r,s=!1){throw Qe("Ray")}createPickingRayToRef(e,t,i,r,s,a=!1,o=!1){throw Qe("Ray")}createPickingRayInCameraSpace(e,t,i){throw Qe("Ray")}createPickingRayInCameraSpaceToRef(e,t,i,r){throw Qe("Ray")}pick(e,t,i,r,s,a){let o=Qe("Ray",!0);return o&&ee.Warn(o),new Ts}pickWithBoundingInfo(e,t,i,r,s){let a=Qe("Ray",!0);return a&&ee.Warn(a),new Ts}pickWithRay(e,t,i,r){throw Qe("Ray")}multiPick(e,t,i,r,s){throw Qe("Ray")}multiPickWithRay(e,t,i){throw Qe("Ray")}setPointerOverMesh(e,t,i){this._inputManager.setPointerOverMesh(e,t,i)}getPointerOverMesh(){return this._inputManager.getPointerOverMesh()}_rebuildGeometries(){for(let e of this.geometries)e._rebuild();for(let e of this.meshes)e._rebuild();this.postProcessManager&&this.postProcessManager._rebuild();for(let e of this._components)e.rebuild();for(let e of this.particleSystems)e.rebuild();if(this.spriteManagers)for(let e of this.spriteManagers)e.rebuild()}_rebuildTextures(){for(let e of this.textures)e._rebuild(!0);this.markAllMaterialsAsDirty(1)}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];ei&&ei.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}setRenderingOrder(e,t=null,i=null,r=null){this._renderingManager.setRenderingOrder(e,t,i,r)}setRenderingAutoClearDepthStencil(e,t,i=!0,r=!0){this._renderingManager.setRenderingAutoClearDepthStencil(e,t,i,r)}getAutoClearDepthStencilSetup(e){return this._renderingManager.getAutoClearDepthStencilSetup(e)}_forceBlockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism=e}get blockMaterialDirtyMechanism(){return this._blockMaterialDirtyMechanism}set blockMaterialDirtyMechanism(e){this._blockMaterialDirtyMechanism!==e&&(this._blockMaterialDirtyMechanism=e,e||this.markAllMaterialsAsDirty(127))}markAllMaterialsAsDirty(e,t){if(!this._blockMaterialDirtyMechanism)for(let i of this.materials)t&&!t(i)||i.markAsDirty(e)}_loadFile(e,t,i,r,s,a,o){let l=El(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _loadFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._loadFile(e,l=>{a(l)},t,i,r,(l,c)=>{o(c)},s)})}_requestFile(e,t,i,r,s,a,o){let l=Sx(e,t,i,r?this.offlineProvider:void 0,s,a,o);return this._activeRequests.push(l),l.onCompleteObservable.add(c=>{this._activeRequests.splice(this._activeRequests.indexOf(c),1)}),l}async _requestFileAsync(e,t,i,r,s){return await new Promise((a,o)=>{this._requestFile(e,l=>{a(l)},t,i,r,l=>{o(l)},s)})}_readFile(e,t,i,r,s){let a=vh(e,t,i,r,s);return this._activeRequests.push(a),a.onCompleteObservable.add(o=>{this._activeRequests.splice(this._activeRequests.indexOf(o),1)}),a}async _readFileAsync(e,t,i){return await new Promise((r,s)=>{this._readFile(e,a=>{r(a)},t,i,a=>{s(a)})})}getPerfCollector(){throw Qe("performanceViewerSceneExtension")}setActiveCameraByID(e){return this.setActiveCameraById(e)}getMaterialByID(e){return this.getMaterialById(e)}getLastMaterialByID(e){return this.getLastMaterialById(e)}getTextureByUniqueID(e){return this.getTextureByUniqueId(e)}getCameraByID(e){return this.getCameraById(e)}getCameraByUniqueID(e){return this.getCameraByUniqueId(e)}getBoneByID(e){return this.getBoneById(e)}getLightByID(e){return this.getLightById(e)}getLightByUniqueID(e){return this.getLightByUniqueId(e)}getParticleSystemByID(e){return this.getParticleSystemById(e)}getGeometryByID(e){return this.getGeometryById(e)}getMeshByID(e){return this.getMeshById(e)}getMeshByUniqueID(e){return this.getMeshByUniqueId(e)}getLastMeshByID(e){return this.getLastMeshById(e)}getMeshesByID(e){return this.getMeshesById(e)}getTransformNodeByID(e){return this.getTransformNodeById(e)}getTransformNodeByUniqueID(e){return this.getTransformNodeByUniqueId(e)}getTransformNodesByID(e){return this.getTransformNodesById(e)}getNodeByID(e){return this.getNodeById(e)}getLastEntryByID(e){return this.getLastEntryById(e)}getLastSkeletonByID(e){return this.getLastSkeletonById(e)}};ti.FOGMODE_NONE=0;ti.FOGMODE_EXP=1;ti.FOGMODE_EXP2=2;ti.FOGMODE_LINEAR=3;ti.MinDeltaTime=1;ti.MaxDeltaTime=1e3;ti._OriginalDefaultMaterialFactory=ti.DefaultMaterialFactory;Ut("BABYLON.Scene",ti)});var ck,Tce,Ha=I(()=>{k();ck="helperFunctions",Tce=`const PI: f32=3.141592653589793;const TWO_PI: f32=6.283185307179586;const HALF_PI: f32=1.5707963267948966;const RECIPROCAL_PI: f32=0.3183098861837907;const RECIPROCAL_PI2: f32=0.15915494309189535;const RECIPROCAL_PI4: f32=0.07957747154594767;const HALF_MIN: f32=5.96046448e-08; const LinearEncodePowerApprox: f32=2.2;const GammaEncodePowerApprox: f32=1.0/LinearEncodePowerApprox;const LuminanceEncodeApprox: vec3f=vec3f(0.2126,0.7152,0.0722);const Epsilon:f32=0.0000001;fn square(x: f32)->f32 {return x*x;} fn saturate(x: f32)->f32 {return clamp(x,0.0,1.0);} fn saturateVec3(x: vec3f)->vec3f {return clamp(x,vec3f(),vec3f(1.0));} @@ -4430,15 +4430,15 @@ void main(void) #include #define CUSTOM_FRAGMENT_DEFINITIONS @fragment -fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=toRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb);}`;x.ShadersStoreWGSL[KP]||(x.ShadersStoreWGSL[KP]=_k);Mce={name:KP,shader:_k}});var zm,jP=I(()=>{hc();xP();zm=class{static ExpandRGBDTexture(e){let t=e._texture;if(!t||!e.isRGBD)return;let i=t.getEngine(),r=i.getCaps(),s=t.isReady,a=!1;r.textureHalfFloatRender&&r.textureHalfFloatLinearFiltering?(a=!0,t.type=2):r.textureFloatRender&&r.textureFloatLinearFiltering&&(a=!0,t.type=1),a&&(t.isReady=!1,t._isRGBD=!1,t.invertY=!1);let o=async()=>{let l=i.isWebGPU,c=l?1:0;t.isReady=!1,l?await Promise.resolve().then(()=>(WP(),kP)):await Promise.resolve().then(()=>(XP(),zP));let f=new Ci("rgbdDecode","rgbdDecode",null,null,1,null,3,i,!1,void 0,t.type,void 0,null,!1,void 0,c);f.externalTextureSamplerBinding=!0;let d=i.createRenderTargetTexture(t.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:t.samplingMode,type:t.type,format:5});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",t),u.setFloat2("scale",1,1)},e.getScene().postProcessManager.directRender([f],d,!0),i.restoreDefaultFramebuffer(),i._releaseTexture(t),f&&f.dispose(),d._swapAndDie(t),t.isReady=!0})})};a&&(s?o():e.onLoadObservable.addOnce(o))}static async EncodeTextureToRGBD(e,t,i=0){return t.getEngine().isWebGPU?await Promise.resolve().then(()=>(vk(),gk)):await Promise.resolve().then(()=>(pk(),mk)),await EG("rgbdEncode",e,t,i,1,5)}}});var ZP=I(()=>{iP();Vg();vi.prototype._sphericalPolynomialTargetSize=0;vi.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(vi.prototype,"sphericalPolynomial",{get:function(){if(this._texture){if(this._texture._sphericalPolynomial||this._texture._sphericalPolynomialComputed)return this._texture._sphericalPolynomial;if(this._texture.isReady)return this._texture._sphericalPolynomialPromise||(this._texture._sphericalPolynomialPromise=cc.ConvertCubeMapTextureToSphericalPolynomial(this),this._texture._sphericalPolynomialPromise===null?this._texture._sphericalPolynomialComputed=!0:this._texture._sphericalPolynomialPromise.then(n=>{this._texture._sphericalPolynomial=n,this._texture._sphericalPolynomialComputed=!0})),null}return null},set:function(n){this._texture&&(this._texture._sphericalPolynomial=n)},enumerable:!0,configurable:!0})});function Ak(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;aEk)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${Ek}".`);return n.version===2||(n={...n,version:2,imageType:zx}),n}function Ice(n,e){e=ev(e);let t=e.specular,i=Math.log2(e.width);if(i=Math.round(i)+1,t.mipmaps.length!==6*i)throw new Error(`Unsupported specular mipmaps number "${t.mipmaps.length}"`);let r=new Array(i);for(let s=0;s{if(t){let u=e.createTexture(null,!0,!0,null,1,null,m=>{h(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=_=>{_._bindTexture("textureSampler",u),_.setFloat2("scale",1,e._features.needsInvertingBitmap&&n instanceof ImageBitmap?-1:1)},e.scenes.length&&(e.scenes[0].postProcessManager.directRender([i],c,!0,s,a),e.restoreDefaultFramebuffer(),u.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let u=l[a];u&&e._uploadImageToTexture(u._texture,n,s,0)}d()}})}async function Cce(n,e,t=zx){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await Rk(n,e,!0,t),n.isReady=!0}async function Pce(n,e,t,i=zx,r=null){let s=n.getEngine(),a=new Vi(s,5),o=new vi(s,a);n._irradianceTexture=o,o._dominantDirection=r,a.isCube=!0,a.format=5,a.type=0,a.generateMipMaps=!0,a._cachedAnisotropicFilteringLevel=null,a.generateMipMaps=!0,a.width=t,a.height=t,s.updateTextureSamplingMode(3,a),await Rk(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function Rk(n,e,t,i=zx){if(!pe.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=xV(n.width)+1,s=n.getEngine(),a=!1,o=!1,l=null,c=null,f=null,d=s.getCaps();d.textureLOD?s._features.supportRenderAndCopyToLodForFloatTextures?d.textureHalfFloatRender&&d.textureHalfFloatLinearFiltering?(a=!0,n.type=2):d.textureFloatRender&&d.textureFloatLinearFiltering&&(a=!0,n.type=1):a=!1:(a=!1,o=t);let h=0;if(a)s.isWebGPU?(h=1,await Promise.resolve().then(()=>(WP(),kP))):await Promise.resolve().then(()=>(XP(),zP)),l=new Ci("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,h),n._isRGBD=!1,n.invertY=!1,c=s.createRenderTargetCubeTexture(n.width,{generateDepthBuffer:!1,generateMipMaps:!0,generateStencilBuffer:!1,samplingMode:3,type:n.type,format:5});else if(n._isRGBD=!0,n.invertY=!0,o){f={};let _=n._lodGenerationScale,p=n._lodGenerationOffset;for(let g=0;g<3;g++){let T=1-g/2,S=p,E=(r-1)*_+p,A=S+(E-S)*T,R=Math.round(Math.min(Math.max(A,0),E)),M=new Vi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let y=new vi(null);switch(y._isCube=!0,y._texture=M,f[R]=y,g){case 0:n._lodTextureLow=y;break;case 1:n._lodTextureMid=y;break;case 2:n._lodTextureHigh=y;break}}}let u=[];for(let m=0;mawait Tk(E,s,a,l,T,_,m,o,f,c,n));else{let E=new Image;E.src=T,S=new Promise((A,R)=>{E.onload=()=>{Tk(E,s,a,l,T,_,m,o,f,c,n).then(()=>A()).catch(M=>{R(M)})},E.onerror=M=>{R(M)}})}u.push(S)}if(await Promise.all(u),e.length{wi();ke();jn();Ng();Ws();Vg();Ys();hc();Lt();jP();_P();ZP();Vm();zx="image/png",Ek=2,Sk=[134,22,135,150,246,214,150,54]});var Ik={};Fe(Ik,{_ENVTextureLoader:()=>qP});var qP,yk=I(()=>{Mk();qP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=Ak(e);if(a){t.width=a.width,t.height=a.width;try{bk(t,a),xk(t,e,a).then(()=>{t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()},o=>{s==null||s("Can not upload environment levels",o)})}catch(o){s==null||s("Can not upload environment file",o)}}else s&&s("Can not parse the environment file",null)}loadData(){throw".env not supported in 2d."}}});var vc,Ck=I(()=>{ke();vc=class{static ConvertPanoramaToCubemap(e,t,i,r,s=!1,a=!0){if(!e)throw"ConvertPanoramaToCubemap: input cannot be null";let o;if(e.length!=t*i*3){if(e.length!=t*i*4)throw"ConvertPanoramaToCubemap: input size is wrong";o=4}else o=3;let l=this.CreateCubemapTexture(r,this.FACE_FRONT,e,t,i,s,a,o),c=this.CreateCubemapTexture(r,this.FACE_BACK,e,t,i,s,a,o),f=this.CreateCubemapTexture(r,this.FACE_LEFT,e,t,i,s,a,o),d=this.CreateCubemapTexture(r,this.FACE_RIGHT,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),u=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:h,down:u,size:r,type:1,format:4,gammaSpace:!1}}static CreateCubemapTexture(e,t,i,r,s,a,o,l){let c=new ArrayBuffer(e*e*4*3),f=new Float32Array(c),d=a?Math.max(1,Math.round(r/4/e)):1,h=1/d,u=h*h,m=t[1].subtract(t[0]).scale(h/e),_=t[3].subtract(t[2]).scale(h/e),p=1/e,g=0;for(let v=0;vMath.PI;)o-=2*Math.PI;let c=o/Math.PI,f=l/Math.PI;c=c*.5+.5;let d=Math.round(c*i);d<0?d=0:d>=i&&(d=i-1);let h=Math.round(f*r);h<0?h=0:h>=r&&(h=r-1);let u=a?r-h-1:h,m=t[u*i*s+d*s+0],_=t[u*i*s+d*s+1],p=t[u*i*s+d*s+2];return{r:m,g:_,b:p}}};vc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];vc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];vc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];vc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];vc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];vc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Dce(n,e){return e>1023?n*Math.pow(2,1023)*Math.pow(2,e-1023):e<-1074?n*Math.pow(2,-1074)*Math.pow(2,e+1074):n*Math.pow(2,e)}function Pk(n,e,t,i,r,s){r>0?(r=Dce(1,r-136),n[s+0]=e*r,n[s+1]=t*r,n[s+2]=i*r):(n[s+0]=0,n[s+1]=0,n[s+2]=0)}function QP(n,e){let t="",i;for(let r=e;r32767)throw"HDR Bad header format, unsupported size";return r+=e.length+1,{height:l,width:o,dataPosition:r}}function Lk(n,e){return Lce(n,e)}function Lce(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,h,u=new ArrayBuffer(i*4),m=new Uint8Array(u),_=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(_);for(;t>0;){if(r=n[c++],s=n[c++],a=n[c++],o=n[c++],r!=2||s!=2||a&128||e.width<8||e.width>32767)return Oce(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,h=0;h<4;h++)for(d=(h+1)*i;f128){if(l=r-128,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (run)";for(;l-- >0;)m[f++]=s}else{if(l=r,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (non-run)";if(m[f++]=s,--l>0)for(let g=0;g0;){for(l=0;l{Ck()});var Nk={};Fe(Nk,{_HDRTextureLoader:()=>$P});var $P,wk=I(()=>{Ok();$P=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".hdr not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Dk(r),a=Lk(r,s),o=s.width*s.height,l=new Float32Array(o*4);for(let c=0;c{let c=t.getEngine();t.type=1,t.format=5,t._gammaSpace=!1,c._uploadDataToTextureDirectly(t,l)})}}});var Lo,Fk=I(()=>{Lt();Lo=class n{constructor(e,t){if(this.data=e,this.isInvalid=!1,!n.IsValid(e)){this.isInvalid=!0,ee.Error("texture missing KTX identifier");return}let i=Uint32Array.BYTES_PER_ELEMENT,r=new DataView(this.data.buffer,this.data.byteOffset+12,13*i),a=r.getUint32(0,!0)===67305985;if(this.glType=r.getUint32(1*i,a),this.glTypeSize=r.getUint32(2*i,a),this.glFormat=r.getUint32(3*i,a),this.glInternalFormat=r.getUint32(4*i,a),this.glBaseInternalFormat=r.getUint32(5*i,a),this.pixelWidth=r.getUint32(6*i,a),this.pixelHeight=r.getUint32(7*i,a),this.pixelDepth=r.getUint32(8*i,a),this.numberOfArrayElements=r.getUint32(9*i,a),this.numberOfFaces=r.getUint32(10*i,a),this.numberOfMipmapLevels=r.getUint32(11*i,a),this.bytesOfKeyValueData=r.getUint32(12*i,a),this.glType!==0){ee.Error("only compressed formats currently supported"),this.isInvalid=!0;return}else this.numberOfMipmapLevels=Math.max(1,this.numberOfMipmapLevels);if(this.pixelHeight===0||this.pixelDepth!==0){ee.Error("only 2D textures currently supported"),this.isInvalid=!0;return}if(this.numberOfArrayElements!==0){ee.Error("texture arrays not currently supported"),this.isInvalid=!0;return}if(this.numberOfFaces!==t){ee.Error("number of faces expected"+t+", but found "+this.numberOfFaces),this.isInvalid=!0;return}this.loadType=n.COMPRESSED_2D}uploadLevels(e,t){switch(this.loadType){case n.COMPRESSED_2D:this._upload2DCompressedLevels(e,t);break;case n.TEX_2D:case n.COMPRESSED_3D:case n.TEX_3D:}}_upload2DCompressedLevels(e,t){let i=n.HEADER_LEN+this.bytesOfKeyValueData,r=this.pixelWidth,s=this.pixelHeight,a=t?this.numberOfMipmapLevels:1;for(let o=0;o=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===49&&t[6]===49&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Lo.HEADER_LEN=64;Lo.COMPRESSED_2D=0;Lo.COMPRESSED_3D=1;Lo.TEX_2D=2;Lo.TEX_3D=3});var JP,tv,Bk=I(()=>{JP=class{constructor(e){this._pendingActions=new Array,this._workerInfos=e.map(t=>({workerPromise:Promise.resolve(t),idle:!0}))}dispose(){for(let e of this._workerInfos)e.workerPromise.then(t=>{t.terminate()});this._workerInfos.length=0,this._pendingActions.length=0}push(e){this._executeOnIdleWorker(e)||this._pendingActions.push(e)}_executeOnIdleWorker(e){for(let t of this._workerInfos)if(t.idle)return this._execute(t,e),!0;return!1}_execute(e,t){e.idle=!1,e.workerPromise.then(i=>{t(i,()=>{let r=this._pendingActions.shift();r?this._execute(e,r):e.idle=!0})})}},tv=class n extends JP{constructor(e,t,i=n.DefaultOptions){super([]),this._maxWorkers=e,this._createWorkerAsync=t,this._options=i}push(e){if(!this._executeOnIdleWorker(e))if(this._workerInfos.length{t(i,()=>{r(),e.idle&&(e.timeoutId=setTimeout(()=>{e.workerPromise.then(a=>{a.terminate()});let s=this._workerInfos.indexOf(e);s!==-1&&this._workerInfos.splice(s,1)},this._options.idleTimeElapsedBeforeRelease))})})}};tv.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var Uk,Xm,Vk,Gk=I(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(Uk||(Uk={}));(function(n){n[n.ASTC_4X4_RGBA=0]="ASTC_4X4_RGBA",n[n.ASTC_4x4_RGBA=0]="ASTC_4x4_RGBA",n[n.BC7_RGBA=1]="BC7_RGBA",n[n.BC3_RGBA=2]="BC3_RGBA",n[n.BC1_RGB=3]="BC1_RGB",n[n.PVRTC1_4_RGBA=4]="PVRTC1_4_RGBA",n[n.PVRTC1_4_RGB=5]="PVRTC1_4_RGB",n[n.ETC2_RGBA=6]="ETC2_RGBA",n[n.ETC1_RGB=7]="ETC1_RGB",n[n.RGBA32=8]="RGBA32",n[n.R8=9]="R8",n[n.RG8=10]="RG8"})(Xm||(Xm={}));(function(n){n[n.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",n[n.COMPRESSED_RGBA_ASTC_4X4_KHR=37808]="COMPRESSED_RGBA_ASTC_4X4_KHR",n[n.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",n[n.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",n[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",n[n.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",n[n.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",n[n.RGBA8Format=32856]="RGBA8Format",n[n.R8Format=33321]="R8Format",n[n.RG8Format=33323]="RG8Format"})(Vk||(Vk={}))});function iv(n,e){let t=(e==null?void 0:e.jsDecoderModule)||KTX2DECODER;n&&(n.wasmBaseUrl&&(t.Transcoder.WasmBaseUrl=n.wasmBaseUrl),n.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmModuleURL=n.wasmUASTCToASTC),n.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmModuleURL=n.wasmUASTCToBC7),n.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmModuleURL=n.wasmUASTCToRGBA_UNORM),n.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmModuleURL=n.wasmUASTCToRGBA_SRGB),n.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmModuleURL=n.wasmUASTCToR8_UNORM),n.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmModuleURL=n.wasmUASTCToRG8_UNORM),n.jsMSCTranscoder&&(t.MSCTranscoder.JSModuleURL=n.jsMSCTranscoder),n.wasmMSCTranscoder&&(t.MSCTranscoder.WasmModuleURL=n.wasmMSCTranscoder),n.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmModuleURL=n.wasmZSTDDecoder)),e&&(e.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmBinary=e.wasmUASTCToASTC),e.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmBinary=e.wasmUASTCToBC7),e.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmBinary=e.wasmUASTCToRGBA_UNORM),e.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmBinary=e.wasmUASTCToRGBA_SRGB),e.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmBinary=e.wasmUASTCToR8_UNORM),e.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmBinary=e.wasmUASTCToRG8_UNORM),e.jsMSCTranscoder&&(t.MSCTranscoder.JSModule=e.jsMSCTranscoder),e.wasmMSCTranscoder&&(t.MSCTranscoder.WasmBinary=e.wasmMSCTranscoder),e.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmBinary=e.wasmZSTDDecoder))}function kk(n){typeof n=="undefined"&&typeof KTX2DECODER!="undefined"&&(n=KTX2DECODER);let e;onmessage=t=>{if(t.data)switch(t.data.action){case"init":{let i=t.data.urls;i&&(i.jsDecoderModule&&typeof n=="undefined"&&(importScripts(i.jsDecoderModule),n=KTX2DECODER),iv(i)),t.data.wasmBinaries&&iv(void 0,{...t.data.wasmBinaries,jsDecoderModule:n}),e=new n.KTX2Decoder,postMessage({action:"init"});break}case"setDefaultDecoderOptions":{n.KTX2Decoder.DefaultDecoderOptions=t.data.options;break}case"decode":e.decode(t.data.data,t.data.caps,t.data.options).then(i=>{let r=[];for(let s=0;s{postMessage({action:"decoded",success:!1,msg:i})});break}}}async function Wk(n,e,t){return await new Promise((i,r)=>{let s=o=>{n.removeEventListener("error",s),n.removeEventListener("message",a),r(o)},a=o=>{o.data.action==="init"&&(n.removeEventListener("error",s),n.removeEventListener("message",a),i(n))};n.addEventListener("error",s),n.addEventListener("message",a),n.postMessage({action:"init",urls:t,wasmBinaries:e})})}var Hk=I(()=>{});var eD,Ec,zk=I(()=>{Bk();wi();Gk();Hk();eD=class{constructor(){this._isDirty=!0,this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=!0,this._ktx2DecoderOptions={}}get isDirty(){return this._isDirty}get useRGBAIfASTCBC7NotAvailableWhenUASTC(){return this._useRGBAIfASTCBC7NotAvailableWhenUASTC}set useRGBAIfASTCBC7NotAvailableWhenUASTC(e){this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==e&&(this._useRGBAIfASTCBC7NotAvailableWhenUASTC=e,this._isDirty=!0)}get useRGBAIfOnlyBC1BC3AvailableWhenUASTC(){return this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC}set useRGBAIfOnlyBC1BC3AvailableWhenUASTC(e){this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC!==e&&(this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=e,this._isDirty=!0)}get forceRGBA(){return this._forceRGBA}set forceRGBA(e){this._forceRGBA!==e&&(this._forceRGBA=e,this._isDirty=!0)}get forceR8(){return this._forceR8}set forceR8(e){this._forceR8!==e&&(this._forceR8=e,this._isDirty=!0)}get forceRG8(){return this._forceRG8}set forceRG8(e){this._forceRG8!==e&&(this._forceRG8=e,this._isDirty=!0)}get bypassTranscoders(){return this._bypassTranscoders}set bypassTranscoders(e){this._bypassTranscoders!==e&&(this._bypassTranscoders=e,this._isDirty=!0)}_getKTX2DecoderOptions(){if(!this._isDirty)return this._ktx2DecoderOptions;this._isDirty=!1;let e={};return this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==void 0&&(e.useRGBAIfASTCBC7NotAvailableWhenUASTC=this._useRGBAIfASTCBC7NotAvailableWhenUASTC),this._forceRGBA!==void 0&&(e.forceRGBA=this._forceRGBA),this._forceR8!==void 0&&(e.forceR8=this._forceR8),this._forceRG8!==void 0&&(e.forceRG8=this._forceRG8),this._bypassTranscoders!==void 0&&(e.bypassTranscoders=this._bypassTranscoders),this.useRGBAIfOnlyBC1BC3AvailableWhenUASTC&&(e.transcodeFormatDecisionTree={UASTC:{transcodeFormat:[Xm.BC1_RGB,Xm.BC3_RGBA],yes:{transcodeFormat:Xm.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},Ec=class n{static GetDefaultNumWorkers(){return typeof navigator!="object"||!navigator.hardwareConcurrency?1:Math.min(Math.floor(navigator.hardwareConcurrency*.5),4)}static _Initialize(e){if(n._WorkerPoolPromise||n._DecoderModulePromise)return;let t={wasmBaseUrl:pe.ScriptBaseUrl,jsDecoderModule:pe.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:pe.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${iv}(${kk})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new tv(e,async()=>await Wk(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=pe.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,iv(t,n._KTX2DecoderModule),new n._KTX2DecoderModule.KTX2Decoder)):(n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,n._DecoderModulePromise=Promise.resolve(new n._KTX2DecoderModule.KTX2Decoder))}constructor(e,t=n.DefaultNumWorkers){var r,s;this._engine=e;let i=typeof t=="object"&&t.workerPool||n.WorkerPool;if(i)n._WorkerPoolPromise=Promise.resolve(i);else{typeof t=="object"?n._KTX2DecoderModule=(r=t==null?void 0:t.binariesAndModulesContainer)==null?void 0:r.jsDecoderModule:typeof KTX2DECODER!="undefined"&&(n._KTX2DecoderModule=KTX2DECODER);let a=typeof t=="number"?t:(s=t.numWorkers)!=null?s:n.DefaultNumWorkers;n._Initialize(a)}}async _uploadAsync(e,t,i){let r=this._engine.getCaps(),s={astc:!!r.astc,bptc:!!r.bptc,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,etc1:!!r.etc1};if(n._WorkerPoolPromise){let a=await n._WorkerPoolPromise;return await new Promise((o,l)=>{a.push((c,f)=>{let d=m=>{c.removeEventListener("error",d),c.removeEventListener("message",h),l(m),f()},h=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",h),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(_){l({message:_})}f()}};c.addEventListener("error",d),c.addEventListener("message",h),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let u=new Uint8Array(e.byteLength);u.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:u,caps:s,options:i},[u.buffer])})})}else if(n._DecoderModulePromise){let a=await n._DecoderModulePromise;return n.DefaultDecoderOptions.isDirty&&(n._KTX2DecoderModule.KTX2Decoder.DefaultDecoderOptions=n.DefaultDecoderOptions._getKTX2DecoderOptions()),await new Promise((o,l)=>{a.decode(e,r).then(c=>{this._createTexture(c,t),o()}).catch(c=>{l({message:c})})})}throw new Error("KTX2 decoder module is not available")}_createTexture(e,t,i){this._engine._bindTextureDirectly(3553,t),i&&(i.transcodedFormat=e.transcodedFormat,i.isInGammaSpace=e.isInGammaSpace,i.hasAlpha=e.hasAlpha,i.transcoderName=e.transcoderName);let s=!0;switch(e.transcodedFormat){case 32856:t.type=0,t.format=5;break;case 33321:t.type=0,t.format=6;break;case 33323:t.type=0,t.format=7;break;default:t.format=e.transcodedFormat,s=!1;break}if(t._gammaSpace=e.isInGammaSpace,t.generateMipMaps=e.mipmaps.length>1,t.width=e.mipmaps[0].width,t.height=e.mipmaps[0].height,e.errors)throw new Error("KTX2 container - could not transcode the data. "+e.errors);for(let a=0;a=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===50&&t[6]===48&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Ec.URLConfig={jsDecoderModule:"https://cdn.babylonjs.com/babylon.ktx2Decoder.js",wasmUASTCToASTC:null,wasmUASTCToBC7:null,wasmUASTCToRGBA_UNORM:null,wasmUASTCToRGBA_SRGB:null,wasmUASTCToR8_UNORM:null,wasmUASTCToRG8_UNORM:null,jsMSCTranscoder:null,wasmMSCTranscoder:null,wasmZSTDDecoder:null};Ec.DefaultNumWorkers=Ec.GetDefaultNumWorkers();Ec.DefaultDecoderOptions=new eD});var iD={};Fe(iD,{_KTXTextureLoader:()=>tD});function Nce(n){switch(n){case 35916:return 33776;case 35918:return 33778;case 35919:return 33779;case 37493:return 37492;case 37497:return 37496;case 37495:return 37494;case 37840:return 37808;case 37841:return 37809;case 37842:return 37810;case 37843:return 37811;case 37844:return 37812;case 37845:return 37813;case 37846:return 37814;case 37847:return 37815;case 37848:return 37816;case 37849:return 37817;case 37850:return 37818;case 37851:return 37819;case 37852:return 37820;case 37853:return 37821;case 36493:return 36492}return null}var tD,rD=I(()=>{Fk();zk();Lt();tD=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r){if(Array.isArray(e))return;t._invertVScale=!t.invertY;let s=t.getEngine(),a=new Lo(e,6),o=a.numberOfMipmapLevels>1&&t.generateMipMaps;s._unpackFlipY(!0),a.uploadLevels(t,t.generateMipMaps),t.width=a.pixelWidth,t.height=a.pixelHeight,s._setCubeMapTextureParams(t,o,a.numberOfMipmapLevels-1),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}loadData(e,t,i,r){if(Lo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Lo(e,1),a=Nce(s.glInternalFormat);a?(t.format=a,t._useSRGBBuffer=t.getEngine()._getUseSRGBBuffer(!0,t.generateMipMaps),t._gammaSpace=!0):t.format=s.glInternalFormat,i(s.pixelWidth,s.pixelHeight,t.generateMipMaps,!0,()=>{s.uploadLevels(t,t.generateMipMaps)},s.isInvalid)}else Ec.IsValid(e)?new Ec(t.getEngine())._uploadAsync(e,t,r).then(()=>{i(t.width,t.height,t.generateMipMaps,!0,()=>{},!1)},a=>{ee.Warn(`Failed to load KTX2 texture data: ${a.message}`),i(0,0,!1,!1,()=>{},!0)}):(ee.Error("texture missing KTX identifier"),i(0,0,!1,!1,()=>{},!0))}}});function Xx(n){let e=0;return{id_length:n[e++],colormap_type:n[e++],image_type:n[e++],colormap_index:n[e++]|n[e++]<<8,colormap_length:n[e++]|n[e++]<<8,colormap_size:n[e++],origin:[n[e++]|n[e++]<<8,n[e++]|n[e++]<<8],width:n[e++]|n[e++]<<8,height:n[e++]|n[e++]<<8,pixel_size:n[e++],flags:n[e]}}function nD(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=Xx(e);if(i.id_length+t>e.length){ee.Error("Unable to load TGA file - Not enough data");return}t+=i.id_length;let r=!1,s=!1,a=!1;switch(i.image_type){case Uce:r=!0;case wce:s=!0;break;case Vce:r=!0;case Fce:break;case Gce:r=!0;case Bce:a=!0;break}let o,l=i.pixel_size>>3,c=i.width*i.height*l,f;if(s&&(f=e.subarray(t,t+=i.colormap_length*(i.colormap_size>>3))),r){o=new Uint8Array(c);let S,E,A,R=0,M=new Uint8Array(l);for(;t>Wce){default:case Xce:d=0,u=1,p=i.width,h=0,m=1,_=i.height;break;case Hce:d=0,u=1,p=i.width,h=i.height-1,m=-1,_=-1;break;case Yce:d=i.width-1,u=-1,p=-1,h=0,m=1,_=i.height;break;case zce:d=i.width-1,u=-1,p=-1,h=i.height-1,m=-1,_=-1;break}let g="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=Jce[g](i,f,o,h,m,_,d,u,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function Kce(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,h=n.height,u,m=0,_,p,g=new Uint8Array(d*h*4);for(p=i;p!==s;p+=r)for(_=a;_!==l;_+=o,m++)u=c[m],g[(_+d*p)*4+3]=255,g[(_+d*p)*4+2]=f[u*3+0],g[(_+d*p)*4+1]=f[u*3+1],g[(_+d*p)*4+0]=f[u*3+2];return g}function jce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u+=2){h=c[u+0]+(c[u+1]<<8);let g=((h&31744)>>10)*255/31|0,v=((h&992)>>5)*255/31|0,T=(h&31)*255/31|0;p[(m+f*_)*4+0]=g,p[(m+f*_)*4+1]=v,p[(m+f*_)*4+2]=T,p[(m+f*_)*4+3]=h&32768?0:255}return p}function Zce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=3)_[(u+f*m)*4+3]=255,_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2];return _}function qce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=4)_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2],_[(u+f*m)*4+3]=c[h+3];return _}function Qce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u++)h=c[u],p[(m+f*_)*4+0]=h,p[(m+f*_)*4+1]=h,p[(m+f*_)*4+2]=h,p[(m+f*_)*4+3]=255;return p}function $ce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=2)_[(u+f*m)*4+0]=c[h+0],_[(u+f*m)*4+1]=c[h+0],_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+3]=c[h+1];return _}var wce,Fce,Bce,Uce,Vce,Gce,kce,Wce,Hce,zce,Xce,Yce,Jce,Xk=I(()=>{Lt();wce=1,Fce=2,Bce=3,Uce=9,Vce=10,Gce=11,kce=48,Wce=4,Hce=0,zce=1,Xce=2,Yce=3;Jce={GetTGAHeader:Xx,UploadContent:nD,_getImageData8bits:Kce,_getImageData16bits:jce,_getImageData24bits:Zce,_getImageData32bits:qce,_getImageDataGrey8bits:Qce,_getImageDataGrey16bits:$ce}});var Yk={};Fe(Yk,{_TGATextureLoader:()=>sD});var sD,Kk=I(()=>{Xk();sD=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".env not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Xx(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{nD(t,r)})}}});var rv=I(()=>{});function tfe(){let n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){let c=l-127;c<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,r[l]=-c-1,r[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,r[l]=13,r[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,f=0;for(;(c&8388608)===0;)c<<=1,f-=8388608;c&=-8388609,f+=947912704,s[l]=c|f}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}function jx(n,e){let t=new Uint8Array(n),i=0;for(;t[e.value+i]!=0;)i+=1;let r=new TextDecoder().decode(t.slice(e.value,e.value+i));return e.value=e.value+i+1,r}function Oo(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function pa(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function nv(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function Ym(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function oD(n,e){let t=n[e.value];return e.value+=1,t}function qk(n,e){let t;return"getBigInt64"in DataView.prototype?t=Number(n.getBigInt64(e.value,!0)):t=n.getUint32(e.value+4,!0)+Number(n.getUint32(e.value,!0)<<32),e.value+=8,t}function Ln(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function Qk(n,e){return ife(Ym(n,e))}function ife(n){let e=(n&31744)>>10,t=n&1023;return(n>>15?-1:1)*(e?e===31?t?NaN:1/0:Math.pow(2,e-15)*(1+t/1024):6103515625e-14*(t/1024))}function rfe(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=Bt(n,-65504,65504),Yx.floatView[0]=n;let e=Yx.uint32View[0],t=e>>23&511;return Yx.baseTable[t]+((e&8388607)>>Yx.shiftTable[t])}function $k(n,e){return rfe(Ln(n,e))}function nfe(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n).slice(e.value,e.value+t));return e.value=e.value+t,i}function sfe(n,e){let t=Oo(n,e),i=pa(n,e);return[t,i]}function afe(n,e){let t=pa(n,e),i=pa(n,e);return[t,i]}function ofe(n,e){let t=Ln(n,e),i=Ln(n,e);return[t,i]}function lfe(n,e){let t=Ln(n,e),i=Ln(n,e),r=Ln(n,e);return[t,i,r]}function cfe(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var Al,aD,Yx,sv=I(()=>{jn();rv();(function(n){n[n.NO_COMPRESSION=0]="NO_COMPRESSION",n[n.RLE_COMPRESSION=1]="RLE_COMPRESSION",n[n.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",n[n.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",n[n.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",n[n.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"})(Al||(Al={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(aD||(aD={}));Yx=tfe()});function fD(n,e){if(n.getUint32(0,!0)!=mfe)throw new Error("Incorrect OpenEXR format");let t=n.getUint8(4),i=n.getUint8(5),r={singleTile:!!(i&2),longName:!!(i&4),deepFormat:!!(i&8),multiPart:!!(i&16)};e.value=8;let s={},a=!0;for(;a;){let o=jx(n.buffer,e);if(!o)a=!1;else{let l=jx(n.buffer,e),c=pa(n,e),f=Jk(n,e,l,c);f===void 0?ee.Warn(`Unknown header attribute type ${l}'.`):s[o]=f}}if((i&-5)!=0)throw new Error("Unsupported file format");return{version:t,spec:r,...s}}var mfe,eW=I(()=>{Lt();sv();mfe=20000630});function lW(n,e){let t=0;for(let r=0;r<65536;++r)(r==0||n[r>>3]&1<<(r&7))&&(e[t++]=r);let i=t-1;for(;t<65536;)e[t++]=0;return i}function vfe(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function nW(n,e,t,i,r){for(;t>t&(1<>i;if(c=new Uint8Array([c])[0],o.value+c>l)return null;let f=a[o.value-1];for(;c-- >0;)a[o.value++]=f}else if(o.value0;--t){let i=e+av[t]>>1;av[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|av[i]++<<6)}}function Sfe(n,e,t,i,r,s){let a=e,o=0,l=0;for(;i<=r;i++){if(a.value-e.value>t)return;let c=nW(6,o,l,n,a),f=c.l;if(o=c.c,l=c.lc,s[i]=f,f==63){if(a.value-e.value>t)throw new Error("Error in HufUnpackEncTable");c=nW(8,o,l,n,a);let d=c.l+6;if(o=c.c,l=c.lc,i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}else if(f>=59){let d=f-59+2;if(i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}}Efe(s)}function cW(n){return n&63}function fW(n){return n>>6}function Tfe(n,e,t,i){for(;e<=t;e++){let r=fW(n[e]),s=cW(n[e]);if(r>>s)throw new Error("Invalid table entry");if(s>14){let a=i[r>>s-14];if(a.len)throw new Error("Invalid table entry");if(a.lit++,a.p){let o=a.p;a.p=new Array(a.lit);for(let l=0;l0;o--){let l=i[(r<<14-s)+a];if(l.len||l.p)throw new Error("Invalid table entry");l.len=s,l.lit=e,a++}}}return!0}function Afe(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,h=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let _=c>>f-14&16383,p=e[_];if(p.len){f-=p.len;let g=dD(p.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else{if(!p.p)throw new Error("hufDecode issues");let g;for(g=0;g=v&&fW(n[p.p[g]])==(c>>f-v&(1<>=u,f-=u;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let _=dD(m.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else throw new Error("HufDecode issues")}return!0}function dW(n,e,t,i,r,s){let a={value:0},o=t.value,l=pa(e,t),c=pa(e,t);t.value+=4;let f=pa(e,t);if(t.value+=4,l<0||l>=65537||c<0||c>=65537)throw new Error("Wrong HUF_ENCSIZE");let d=new Array(65537),h=new Array(16384);vfe(h);let u=i-(t.value-o);if(Sfe(n,t,u,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Tfe(d,l,c,h),Afe(d,h,n,t,f,c,s,r,a)}function uD(n){return n&65535}function sW(n){let e=uD(n);return e>32767?e-65536:e}function Km(n,e){let t=sW(n),r=sW(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function jm(n,e){let t=uD(n),i=uD(e),r=t-(i>>1)&rW;return{a:i+r-gfe&rW,b:r}}function hW(n,e,t,i,r,s,a){let o=a<16384,l=t>r?r:t,c=1,f,d;for(;c<=l;)c<<=1;for(c>>=1,f=c,c>>=1;c>=1;){d=0;let h=d+s*(r-f),u=s*c,m=s*f,_=i*c,p=i*f,g,v,T,S;for(;d<=h;d+=m){let E=d,A=d+i*(t-f);for(;E<=A;E+=p){let R=E+_,M=E+u,y=M+_;if(o){let C=Km(n[E+e],n[M+e]);g=C.a,T=C.b,C=Km(n[R+e],n[y+e]),v=C.a,S=C.b,C=Km(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Km(T,S),n[M+e]=C.a,n[y+e]=C.b}else{let C=jm(n[E+e],n[M+e]);g=C.a,T=C.b,C=jm(n[R+e],n[y+e]),v=C.a,S=C.b,C=jm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=jm(T,S),n[M+e]=C.a,n[y+e]=C.b}}if(t&c){let R=E+u,M;o?M=Km(n[E+e],n[R+e]):M=jm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}if(r&c){let E=d,A=d+i*(t-f);for(;E<=A;E+=p){let R=E+_,M;o?M=Km(n[E+e],n[R+e]):M=jm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}f=c,c>>=1}return d}function uW(n,e,t){for(let i=0;i{sv();rv();oW=16,gfe=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function mD(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function vW(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(pW(e)),i=new Uint8Array(t.length);return lD(t),cD(t,i),new DataView(i.buffer)}function pD(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return lD(t),cD(t,i),new DataView(i.buffer)}function EW(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=n.lines*n.channels*n.width,r=n.type==1?new Uint16Array(i):new Uint32Array(i),s=0,a=0,o=new Array(4);for(let l=0;l=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(o<=l)for(let m=0;m{mW();_W();sv();rv()});var Xa,xl,_D=I(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(Xa||(Xa={}));xl=class{};xl.DefaultOutputType=Xa.HalfFloat;xl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function gD(n,e,t,i){let r={size:0,viewer:e,array:new Uint8Array(e.buffer),offset:t,width:n.dataWindow.xMax-n.dataWindow.xMin+1,height:n.dataWindow.yMax-n.dataWindow.yMin+1,channels:n.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(n.compression){case Al.NO_COMPRESSION:r.lines=1,r.uncompress=mD;break;case Al.RLE_COMPRESSION:r.lines=1,r.uncompress=vW;break;case Al.ZIPS_COMPRESSION:r.lines=1,r.uncompress=pD,await pe.LoadScriptAsync(xl.FFLATEUrl);break;case Al.ZIP_COMPRESSION:r.lines=16,r.uncompress=pD,await pe.LoadScriptAsync(xl.FFLATEUrl);break;case Al.PIZ_COMPRESSION:r.lines=32,r.uncompress=SW;break;case Al.PXR24_COMPRESSION:r.lines=16,r.uncompress=EW,await pe.LoadScriptAsync(xl.FFLATEUrl);break;default:throw new Error(Al[n.compression]+" is unsupported")}r.scanlineBlockSize=r.lines;let s={};for(let c of n.channels)switch(c.name){case"R":case"G":case"B":case"A":s[c.name]=!0,r.type=c.pixelType;break;case"Y":s[c.name]=!0,r.type=c.pixelType;break;default:break}let a=!1;if(s.R&&s.G&&s.B&&s.A)r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G&&s.B)a=!0,r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G)r.outputChannels=2,r.decodeChannels={R:0,G:1};else if(s.R)r.outputChannels=1,r.decodeChannels={R:0};else if(s.Y)r.outputChannels=1,r.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(r.type===1)switch(i){case Xa.Float:r.getter=Qk,r.inputSize=2;break;case Xa.HalfFloat:r.getter=Ym,r.inputSize=2;break}else if(r.type===2)switch(i){case Xa.Float:r.getter=Ln,r.inputSize=4;break;case Xa.HalfFloat:r.getter=$k,r.inputSize=4}else throw new Error("Unsupported pixelType "+r.type+" for "+n.compression);r.blockCount=r.height/r.scanlineBlockSize;for(let c=0;cc:r.scanOrder=c=>r.height-1-c,r.outputChannels==4?(r.format=5,r.linearSpace=!0):(r.format=6,r.linearSpace=!1),r}function vD(n,e,t,i){let r={value:0};for(let s=0;sn.height?n.height-a:n.scanlineBlockSize;let l=n.size=n.height)continue;let h=c*n.bytesPerLine,u=(n.height-1-d)*n.outLineWidth;for(let m=0;m{sv();TW();rv();wi();_D()});var xW={};Fe(xW,{ReadExrDataAsync:()=>xfe,_ExrTextureLoader:()=>ED});async function xfe(n){let e=new DataView(n),t={value:0},i=fD(e,t);try{let r=await gD(i,e,t,Xa.Float);return vD(r,i,e,t),r.byteArray?{width:i.dataWindow.xMax-i.dataWindow.xMin+1,height:i.dataWindow.yMax-i.dataWindow.yMin+1,data:new Float32Array(r.byteArray)}:(ee.Error("Failed to decode EXR data: No byte array available."),{width:0,height:0,data:null})}catch(r){ee.Error("Failed to load EXR data: ",r)}return{width:0,height:0,data:null}}var ED,RW=I(()=>{eW();AW();_D();Lt();ED=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){throw".exr not supported in Cube."}loadData(e,t,i){let r=new DataView(e.buffer),s={value:0},a=fD(r,s);gD(a,r,s,xl.DefaultOutputType).then(o=>{vD(o,a,r,s);let l=a.dataWindow.xMax-a.dataWindow.xMin+1,c=a.dataWindow.yMax-a.dataWindow.yMin+1;i(l,c,t.generateMipMaps,!1,()=>{let f=t.getEngine();t.format=a.format,t.type=o.textureType,t.invertY=!1,t._gammaSpace=!a.linearSpace,o.byteArray&&f._uploadDataToTextureDirectly(t,o.byteArray,0,0,void 0,!0)})}).catch(o=>{ee.Error("Failed to load EXR texture: ",o)})}}});function Sc(n,e){Rfe(n)&&ee.Warn(`Extension with the name '${n}' already exists`),qx.set(n,e)}function Rfe(n){return qx.delete(n)}function Qx(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),qx.has(n)||(n.endsWith(".ies")&&Sc(".ies",async()=>await Promise.resolve().then(()=>(xG(),AG)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&Sc(".dds",async()=>await Promise.resolve().then(()=>(bG(),RG)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&Sc(".basis",async()=>await Promise.resolve().then(()=>(DG(),PG)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&Sc(".env",async()=>await Promise.resolve().then(()=>(yk(),Ik)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&Sc(".hdr",async()=>await Promise.resolve().then(()=>(wk(),Nk)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(Sc(".ktx",async()=>await Promise.resolve().then(()=>(rD(),iD)).then(i=>new i._KTXTextureLoader)),Sc(".ktx2",async()=>await Promise.resolve().then(()=>(rD(),iD)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&Sc(".tga",async()=>await Promise.resolve().then(()=>(Kk(),Yk)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&Sc(".exr",async()=>await Promise.resolve().then(()=>(RW(),xW)).then(i=>new i._ExrTextureLoader)));let t=qx.get(n);return t?Promise.resolve(t(e)):null}var qx,SD=I(()=>{Lt();qx=new Map});function bW(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var MW=I(()=>{});var IW=I(()=>{Ws();Lt();lc();wg();zr();SD();MW();Re.prototype._partialLoadFile=function(n,e,t,i,r=null){let s=o=>{t[e]=o,t._internalCount++,t._internalCount===6&&i(t)},a=(o,l)=>{r&&o&&r(o.status+" "+o.statusText,l)};this._loadFile(n,s,void 0,void 0,!0,a)};Re.prototype._cascadeLoadFiles=function(n,e,t,i=null){let r=[];r._internalCount=0;for(let s=0;s<6;s++)this._partialLoadFile(t[s],s,r,e,i)};Re.prototype._cascadeLoadImgs=function(n,e,t,i,r=null,s){let a=[];a._internalCount=0;for(let o=0;o<6;o++)this._partialLoadImg(i[o],o,a,n,e,t,r,s)};Re.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=If();km(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,h)=>{i&&i.removePendingData(l),a&&a(d,h)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Re.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h=null,u=null,m=!1,_=null){let p=d||new Vi(this,7);p.isCube=!0,p.url=n,p.generateMipMaps=!i,p._lodGenerationScale=c,p._lodGenerationOffset=f,p._useSRGBBuffer=!!m&&this._caps.supportSRGBBuffers&&(this.version>1||this.isWebGPU||!!i),p!==d&&(p.label=n.substring(0,60)),this._doNotHandleContextLost||(p._extension=o,p._files=t,p._buffer=_);let g=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:bW(n),T=Qx(v),S=(A,R)=>{p.dispose(),s?s(A,R):A&&ee.Warn(A)},E=(A,R)=>{n===g?A&&S(A.status+" "+A.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${g}`),this.createCubeTextureBase(g,e,t,!!i,r,S,a,o,l,c,f,p,h,u,m,_))};if(T)T.then(A=>{let R=M=>{h&&h(p,M),A.loadCubeData(M,p,l,r,(y,C)=>{S(y,C)})};_?R(_):t&&t.length===6?A.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(y=>new Uint8Array(y))),t,S):S("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,E)});else{if(!t||t.length===0)throw new Error("Cannot load cubemap because files were not defined, or the correct loader was not found.");this._cascadeLoadImgs(e,p,(A,R)=>{u&&u(A,R)},t,S)}return this._internalTexturesCache.push(p),p}});var zW={};Fe(zW,{DDSTools:()=>Io});function $x(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function Mfe(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var bfe,yW,CW,PW,DW,LW,OW,NW,wW,TD,FW,BW,UW,VW,Ife,AD,yfe,Cfe,GW,kW,xD,WW,RD,HW,Pfe,Dfe,Lfe,Ofe,Nfe,wfe,Ffe,Io,yP=I(()=>{jn();Lt();iP();xP();IW();bfe=542327876,yW=131072,CW=512,PW=4,DW=64,LW=131072;OW=$x("DXT1"),NW=$x("DXT3"),wW=$x("DXT5"),TD=$x("DX10"),FW=113,BW=116,UW=2,VW=10,Ife=88,AD=31,yfe=0,Cfe=1,GW=2,kW=3,xD=4,WW=7,RD=20,HW=21,Pfe=22,Dfe=23,Lfe=24,Ofe=25,Nfe=26,wfe=28,Ffe=32,Io=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,AD),i=new Int32Array(e.buffer,e.byteOffset,AD+4),r=1;t[GW]&yW&&(r=Math.max(1,t[WW]));let s=t[HW],a=s===TD?i[Ffe]:0,o=0;switch(s){case FW:o=2;break;case BW:o=1;break;case TD:if(a===VW){o=2;break}if(a===UW){o=1;break}}return{width:t[xD],height:t[kW],mipmapCount:r,isFourCC:(t[RD]&PW)===PW,isRGB:(t[RD]&DW)===DW,isLuminance:(t[RD]&LW)===LW,isCube:(t[wfe]&CW)===CW,isCompressed:s===OW||s===NW||s===wW,dxgiFormat:a,textureType:o}}static _GetHalfFloatAsFloatRGBAArrayBuffer(e,t,i,r,s,a){let o=new Float32Array(r),l=new Uint16Array(s,i),c=0;for(let f=0;f>8)}static _GetRGBArrayBuffer(e,t,i,r,s,a,o,l){let c=new Uint8Array(r),f=new Uint8Array(s,i),d=0;for(let h=0;h0?r.sphericalPolynomial=cc.ConvertCubeMapToSphericalPolynomial({size:h[xD],right:f[0],left:f[1],up:f[2],down:f[3],front:f[4],back:f[5],format:5,type:1,gammaSpace:!1}):r.sphericalPolynomial=void 0}};Io.StoreLODInAlphaChannel=!1});var XW=I(()=>{vs();Ws();Lt();Ng();Vg();bt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var g;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(g=d._sphericalPolynomial)!=null?g:new gl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let h=3,u=this._gl,m=f.width;if(!m)return;let{DDSTools:_}=await Promise.resolve().then(()=>(yP(),zW)),p=[];for(let v=0;v{vs();ix();bt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new ml(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.STATIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.STATIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new ml(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.DYNAMIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.DYNAMIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.updateUniformBuffer=function(n,e,t,i){this.bindUniformBuffer(n),t===void 0&&(t=0),i===void 0?e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,e):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,new Float32Array(e)):e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,e.subarray(t,t+i)):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,new Float32Array(e).subarray(t,t+i)),this.bindUniformBuffer(null)};bt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};bt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};bt.prototype.bindUniformBlock=function(n,e,t){let i=n.program,r=this._gl.getUniformBlockIndex(i,e);r!==4294967295&&this._gl.uniformBlockBinding(i,r,t)}});var KW=I(()=>{Oa();zr();Re.prototype.displayLoadingUI=function(){if(!Er())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Re.prototype.hideLoadingUI=function(){if(!Er())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Re.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Re.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var jW=I(()=>{zr();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Re.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Re.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Re.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Re.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var bD=I(()=>{zr();Re.prototype.setAlphaEquation=function(n,e=0){if(this._alphaEquation[e]!==n){switch(n){case 0:this._alphaState.setAlphaEquationParameters(32774,32774,e);break;case 1:this._alphaState.setAlphaEquationParameters(32778,32778,e);break;case 2:this._alphaState.setAlphaEquationParameters(32779,32779,e);break;case 3:this._alphaState.setAlphaEquationParameters(32776,32776,e);break;case 4:this._alphaState.setAlphaEquationParameters(32775,32775,e);break;case 5:this._alphaState.setAlphaEquationParameters(32775,32774,e);break}this._alphaEquation[e]=n}}});var ZW=I(()=>{zr();bD();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Re.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Re.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Re.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Re.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Re.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Re.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Re.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Re.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Re.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Re.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var qW=I(()=>{zr();bD();Re.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Re.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Re.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Re.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Re.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Re.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Re.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Re.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Re.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Re.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Re.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Re.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Re.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Re.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Re.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Re.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Re.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Re.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Re.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Re.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Re.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Re.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Re.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Re.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Re.prototype.cacheStencilState=function(){this._cachedStencilBuffer=this.getStencilBuffer(),this._cachedStencilFunction=this.getStencilFunction(),this._cachedStencilMask=this.getStencilMask(),this._cachedStencilOperationPass=this.getStencilOperationPass(),this._cachedStencilOperationFail=this.getStencilOperationFail(),this._cachedStencilOperationDepthFail=this.getStencilOperationDepthFail(),this._cachedStencilReference=this.getStencilFunctionReference()};Re.prototype.restoreStencilState=function(){this.setStencilFunction(this._cachedStencilFunction),this.setStencilMask(this._cachedStencilMask),this.setStencilBuffer(this._cachedStencilBuffer),this.setStencilOperationPass(this._cachedStencilOperationPass),this.setStencilOperationFail(this._cachedStencilOperationFail),this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail),this.setStencilFunctionReference(this._cachedStencilReference)}});var QW=I(()=>{zr();Re.prototype.getRenderPassNames=function(){return this._renderPassNames};Re.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Re.prototype.createRenderPassId=function(n){let e=++Re._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Re.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{zr();Re.prototype._loadFileAsync=async function(n,e,t){return await new Promise((i,r)=>{this._loadFile(n,s=>{i(s)},void 0,e,t,(s,a)=>{r(a)})})}});var JW=I(()=>{SD();zr();Re.GetCompatibleTextureLoader=Qx});function Bfe(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function eH(n,e,t){n._onCanvasFocus=()=>{n.onCanvasFocusObservable.notifyObservers(n)},n._onCanvasBlur=()=>{n.onCanvasBlurObservable.notifyObservers(n)},n._onCanvasContextMenu=r=>{n.disableContextMenu&&r.preventDefault()},e.addEventListener("focus",n._onCanvasFocus),e.addEventListener("blur",n._onCanvasBlur),e.addEventListener("contextmenu",n._onCanvasContextMenu),n._onBlur=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.disable(),n._windowIsBackground=!0},n._onFocus=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.enable(),n._windowIsBackground=!1},n._onCanvasPointerOut=r=>{document.elementFromPoint(r.clientX,r.clientY)!==e&&n.onCanvasPointerOutObservable.notifyObservers(r)};let i=n.getHostWindow();i&&typeof i.addEventListener=="function"&&(i.addEventListener("blur",n._onBlur),i.addEventListener("focus",n._onFocus)),e.addEventListener("pointerout",n._onCanvasPointerOut),t.doNotHandleTouchAction||Bfe(e),!Re.audioEngine&&t.audioEngine&&Re.AudioEngineFactory&&(Re.audioEngine=Re.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),Rf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&MD(e)},document.addEventListener("fullscreenchange",n._onFullscreenChange,!1),document.addEventListener("webkitfullscreenchange",n._onFullscreenChange,!1),n._onPointerLockChange=()=>{n.isPointerLock=document.pointerLockElement===e},document.addEventListener("pointerlockchange",n._onPointerLockChange,!1),document.addEventListener("webkitpointerlockchange",n._onPointerLockChange,!1)),n.enableOfflineSupport=Re.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function tH(n,e){Oe.Instances.length===1&&Re.audioEngine&&(Re.audioEngine.dispose(),Re.audioEngine=null);let t=n.getHostWindow();t&&typeof t.removeEventListener=="function"&&(t.removeEventListener("blur",n._onBlur),t.removeEventListener("focus",n._onFocus)),e&&(e.removeEventListener("focus",n._onCanvasFocus),e.removeEventListener("blur",n._onCanvasBlur),e.removeEventListener("pointerout",n._onCanvasPointerOut),e.removeEventListener("contextmenu",n._onCanvasContextMenu)),Rf()&&(document.removeEventListener("fullscreenchange",n._onFullscreenChange),document.removeEventListener("mozfullscreenchange",n._onFullscreenChange),document.removeEventListener("webkitfullscreenchange",n._onFullscreenChange),document.removeEventListener("msfullscreenchange",n._onFullscreenChange),document.removeEventListener("pointerlockchange",n._onPointerLockChange),document.removeEventListener("mspointerlockchange",n._onPointerLockChange),document.removeEventListener("mozpointerlockchange",n._onPointerLockChange),document.removeEventListener("webkitpointerlockchange",n._onPointerLockChange))}function iH(n){let e=document.createElement("span");e.textContent="Hg",e.style.font=n;let t=document.createElement("div");t.style.display="inline-block",t.style.width="1px",t.style.height="0px",t.style.verticalAlign="bottom";let i=document.createElement("div");i.style.whiteSpace="nowrap",i.appendChild(e),i.appendChild(t),document.body.appendChild(i);let r,s;try{s=t.getBoundingClientRect().top-e.getBoundingClientRect().top,t.style.verticalAlign="baseline",r=t.getBoundingClientRect().top-e.getBoundingClientRect().top}finally{document.body.removeChild(i)}return{ascent:r,height:s,descent:s-r}}async function rH(n,e,t){return await new Promise((i,r)=>{let s=new Image;s.onload=()=>{s.decode().then(()=>{n.createImageBitmap(s,t).then(a=>{i(a)})})},s.onerror=()=>{r(`Error loading image ${s.src}`)},s.src=e})}function nH(n,e,t,i){let s=n.createCanvas(t,i).getContext("2d");if(!s)throw new Error("Unable to get 2d context for resizeImageBitmap");return s.drawImage(e,0,0),s.getImageData(0,0,t,i).data}function sH(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function aH(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function MD(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function oH(){document.exitPointerLock&&document.exitPointerLock()}var lH=I(()=>{Oa();zr();Gi()});var Ge,ID=I(()=>{Ws();Gi();vs();sV();ix();Lt();WC();aV();fV();dV();hV();uV();_V();gV();vV();XW();YW();KW();jW();ZW();qW();QW();YC();$W();JW();zr();lH();VP();ul();Ge=class n extends bt{static get NpmPackage(){return Re.NpmPackage}static get Version(){return Re.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Re.DefaultLoadingScreenFactory(e)}get _supportsHardwareTextureRescaling(){return!!n._RescalePostProcessFactory}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}constructor(e,t,i,r=!1){super(e,t,i,r),this.customAnimationFrameRequester=null,this._performanceMonitor=new nx,this._drawCalls=new Tl,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),eH(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return nH(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await rH(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&sH(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&aH()}setDitheringState(e){e?this._gl.enable(this._gl.DITHER):this._gl.disable(this._gl.DITHER)}setRasterizerState(e){e?this._gl.disable(this._gl.RASTERIZER_DISCARD):this._gl.enable(this._gl.RASTERIZER_DISCARD)}setDirectViewport(e,t,i,r){let s=this._cachedViewport;return this._cachedViewport=null,this._viewport(e,t,i,r),s}scissorClear(e,t,i,r,s){this.enableScissor(e,t,i,r),this.clear(s,!0,!0,!0),this.disableScissor()}enableScissor(e,t,i,r){let s=this._gl;s.enable(s.SCISSOR_TEST),s.scissor(e,t,i,r)}disableScissor(){let e=this._gl;e.disable(e.SCISSOR_TEST)}getVertexShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[0]):null}getFragmentShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[1]):null}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e,this._framebufferDimensionsObject&&this.onResizeObservable.notifyObservers(this)}_rebuildBuffers(){for(let e of this.scenes)e.resetCachedMaterial(),e._rebuildGeometries();for(let e of this._virtualScenes)e.resetCachedMaterial(),e._rebuildGeometries();super._rebuildBuffers()}getFontOffset(e){return iH(e)}_cancelFrame(){if(this.customAnimationFrameRequester){if(this._frameHandler!==0){this._frameHandler=0;let{cancelAnimationFrame:e}=this.customAnimationFrameRequester;e&&e(this.customAnimationFrameRequester.requestID)}}else super._cancelFrame()}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this.customAnimationFrameRequester?(this.customAnimationFrameRequester.requestID=this._queueNewFrame(this.customAnimationFrameRequester.renderFunction||this._boundRenderFunction,this.customAnimationFrameRequester),this._frameHandler=this.customAnimationFrameRequester.requestID):this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}enterPointerlock(){this._renderingCanvas&&MD(this._renderingCanvas)}exitPointerlock(){oH()}beginFrame(){this._measureFps(),super.beginFrame()}_deletePipelineContext(e){let t=e;t&&t.program&&t.transformFeedback&&(this.deleteTransformFeedback(t.transformFeedback),t.transformFeedback=null),super._deletePipelineContext(e)}createShaderProgram(e,t,i,r,s,a=null){s=s||this._gl,this.onBeforeShaderCompilationObservable.notifyObservers(this);let o=super.createShaderProgram(e,t,i,r,s,a);return this.onAfterShaderCompilationObservable.notifyObservers(this),o}_createShaderProgram(e,t,i,r,s=null){let a=r.createProgram();if(e.program=a,!a)throw new Error("Unable to create program");if(r.attachShader(a,t),r.attachShader(a,i),this.webGLVersion>1&&s){let o=this.createTransformFeedback();this.bindTransformFeedback(o),this.setTranformFeedbackVaryings(a,s),e.transformFeedback=o}return r.linkProgram(a),this.webGLVersion>1&&s&&this.bindTransformFeedback(null),e.context=r,e.vertexShader=t,e.fragmentShader=i,e.isParallelCompiled||this._finalizePipelineContext(e),a}_releaseTexture(e){super._releaseTexture(e)}_releaseRenderTargetWrapper(e){super._releaseRenderTargetWrapper(e);for(let t of this.scenes){for(let i of t.postProcesses)i._outputTexture===e&&(i._outputTexture=null);for(let i of t.cameras)for(let r of i._postProcesses)r&&r._outputTexture===e&&(r._outputTexture=null)}}_rescaleTexture(e,t,i,r,s){this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE);let a=this.createRenderTargetTexture({width:t.width,height:t.height},{generateMipMaps:!1,type:0,samplingMode:2,generateDepthBuffer:!1,generateStencilBuffer:!1});if(!this._rescalePostProcess&&n._RescalePostProcessFactory&&(this._rescalePostProcess=n._RescalePostProcessFactory(this)),this._rescalePostProcess){this._rescalePostProcess.externalTextureSamplerBinding=!0;let o=()=>{this._rescalePostProcess.onApply=function(f){f._bindTexture("textureSampler",e)};let c=i;c||(c=this.scenes[this.scenes.length-1]),c.postProcessManager.directRender([this._rescalePostProcess],a,!0),this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),this._gl.copyTexImage2D(this._gl.TEXTURE_2D,0,r,0,0,t.width,t.height,0),this.unBindFramebuffer(a),a.dispose(),s&&s()},l=this._rescalePostProcess.getEffect();l?l.executeWhenCompiled(o):this._rescalePostProcess.onEffectCreatedObservable.addOnce(c=>{c.executeWhenCompiled(o)})}}wrapWebGLTexture(e,t=!1,i=3,r=0,s=0){let a=new xm(e,this._gl),o=new Vi(this,0,!0);return o._hardwareTexture=a,o.baseWidth=r,o.baseHeight=s,o.width=r,o.height=s,o.isReady=!0,o.useMipMaps=t,this.updateTextureSamplingMode(i,o),o}_uploadImageToTexture(e,t,i=0,r=0){let s=this._gl,a=this._getWebGLTextureType(e.type),o=this._getInternalFormat(e.format),l=this._getRGBABufferInternalSizedFormat(e.type,o),c=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(c,e,!0),this._unpackFlipY(e.invertY);let f=s.TEXTURE_2D;e.isCube&&(f=s.TEXTURE_CUBE_MAP_POSITIVE_X+i),s.texImage2D(f,r,l,o,a,t),this._bindTextureDirectly(c,null,!0)}updateTextureComparisonFunction(e,t){if(this.webGLVersion===1){ee.Error("WebGL 1 does not support texture comparison.");return}let i=this._gl;e.isCube?(this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,e,!0),t===0?(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)):(this._bindTextureDirectly(this._gl.TEXTURE_2D,e,!0),t===0?(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_2D,null)),e._comparisonFunction=t}createInstancesBuffer(e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create instance buffer");let i=new ml(t);return i.capacity=e,this.bindArrayBuffer(i),this._gl.bufferData(this._gl.ARRAY_BUFFER,e,this._gl.DYNAMIC_DRAW),i.references=1,i}deleteInstancesBuffer(e){this._gl.deleteBuffer(e)}async _clientWaitAsync(e,t=0,i=10){let r=this._gl;return await new Promise((s,a)=>{hl(()=>{let o=r.clientWaitSync(e,t,0);if(o==r.WAIT_FAILED)throw new Error("clientWaitSync failed");return o!=r.TIMEOUT_EXPIRED},s,a,i)})}_readPixelsAsync(e,t,i,r,s,a,o){if(this._webGLVersion<2)throw new Error("_readPixelsAsync only work on WebGL2+");let l=this._gl,c=l.createBuffer();l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.bufferData(l.PIXEL_PACK_BUFFER,o.byteLength,l.STREAM_READ),l.readPixels(e,t,i,r,s,a,0),l.bindBuffer(l.PIXEL_PACK_BUFFER,null);let f=l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE,0);return f?(l.flush(),this._clientWaitAsync(f,0,10).then(()=>(l.deleteSync(f),l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,o),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),l.deleteBuffer(c),o))):null}dispose(){this.hideLoadingUI(),this._rescalePostProcess&&this._rescalePostProcess.dispose(),tH(this,this._renderingCanvas),super.dispose()}};Ge.ALPHA_DISABLE=0;Ge.ALPHA_ADD=1;Ge.ALPHA_COMBINE=2;Ge.ALPHA_SUBTRACT=3;Ge.ALPHA_MULTIPLY=4;Ge.ALPHA_MAXIMIZED=5;Ge.ALPHA_ONEONE=6;Ge.ALPHA_PREMULTIPLIED=7;Ge.ALPHA_PREMULTIPLIED_PORTERDUFF=8;Ge.ALPHA_INTERPOLATE=9;Ge.ALPHA_SCREENMODE=10;Ge.DELAYLOADSTATE_NONE=0;Ge.DELAYLOADSTATE_LOADED=1;Ge.DELAYLOADSTATE_LOADING=2;Ge.DELAYLOADSTATE_NOTLOADED=4;Ge.NEVER=512;Ge.ALWAYS=519;Ge.LESS=513;Ge.EQUAL=514;Ge.LEQUAL=515;Ge.GREATER=516;Ge.GEQUAL=518;Ge.NOTEQUAL=517;Ge.KEEP=7680;Ge.REPLACE=7681;Ge.INCR=7682;Ge.DECR=7683;Ge.INVERT=5386;Ge.INCR_WRAP=34055;Ge.DECR_WRAP=34056;Ge.TEXTURE_CLAMP_ADDRESSMODE=0;Ge.TEXTURE_WRAP_ADDRESSMODE=1;Ge.TEXTURE_MIRROR_ADDRESSMODE=2;Ge.TEXTUREFORMAT_ALPHA=0;Ge.TEXTUREFORMAT_LUMINANCE=1;Ge.TEXTUREFORMAT_LUMINANCE_ALPHA=2;Ge.TEXTUREFORMAT_RGB=4;Ge.TEXTUREFORMAT_RGBA=5;Ge.TEXTUREFORMAT_RED=6;Ge.TEXTUREFORMAT_R=6;Ge.TEXTUREFORMAT_R16_UNORM=33322;Ge.TEXTUREFORMAT_RG16_UNORM=33324;Ge.TEXTUREFORMAT_RGB16_UNORM=32852;Ge.TEXTUREFORMAT_RGBA16_UNORM=32859;Ge.TEXTUREFORMAT_R16_SNORM=36760;Ge.TEXTUREFORMAT_RG16_SNORM=36761;Ge.TEXTUREFORMAT_RGB16_SNORM=36762;Ge.TEXTUREFORMAT_RGBA16_SNORM=36763;Ge.TEXTUREFORMAT_RG=7;Ge.TEXTUREFORMAT_RED_INTEGER=8;Ge.TEXTUREFORMAT_R_INTEGER=8;Ge.TEXTUREFORMAT_RG_INTEGER=9;Ge.TEXTUREFORMAT_RGB_INTEGER=10;Ge.TEXTUREFORMAT_RGBA_INTEGER=11;Ge.TEXTURETYPE_UNSIGNED_BYTE=0;Ge.TEXTURETYPE_UNSIGNED_INT=0;Ge.TEXTURETYPE_FLOAT=1;Ge.TEXTURETYPE_HALF_FLOAT=2;Ge.TEXTURETYPE_BYTE=3;Ge.TEXTURETYPE_SHORT=4;Ge.TEXTURETYPE_UNSIGNED_SHORT=5;Ge.TEXTURETYPE_INT=6;Ge.TEXTURETYPE_UNSIGNED_INTEGER=7;Ge.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;Ge.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;Ge.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;Ge.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;Ge.TEXTURETYPE_UNSIGNED_INT_24_8=12;Ge.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;Ge.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;Ge.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;Ge.TEXTURE_NEAREST_SAMPLINGMODE=1;Ge.TEXTURE_BILINEAR_SAMPLINGMODE=2;Ge.TEXTURE_TRILINEAR_SAMPLINGMODE=3;Ge.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;Ge.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;Ge.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;Ge.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;Ge.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;Ge.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;Ge.TEXTURE_NEAREST_LINEAR=7;Ge.TEXTURE_NEAREST_NEAREST=1;Ge.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;Ge.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;Ge.TEXTURE_LINEAR_LINEAR=2;Ge.TEXTURE_LINEAR_NEAREST=12;Ge.TEXTURE_EXPLICIT_MODE=0;Ge.TEXTURE_SPHERICAL_MODE=1;Ge.TEXTURE_PLANAR_MODE=2;Ge.TEXTURE_CUBIC_MODE=3;Ge.TEXTURE_PROJECTION_MODE=4;Ge.TEXTURE_SKYBOX_MODE=5;Ge.TEXTURE_INVCUBIC_MODE=6;Ge.TEXTURE_EQUIRECTANGULAR_MODE=7;Ge.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;Ge.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;Ge.SCALEMODE_FLOOR=1;Ge.SCALEMODE_NEAREST=2;Ge.SCALEMODE_CEILING=3});var yD,Ei,_a=I(()=>{Wt();ke();kt();mi();Gi();Sn();Dr();yD=class{constructor(){this._doNotSerialize=!1,this._isDisposed=!1,this._sceneRootNodesIndex=-1,this._isEnabled=!0,this._isParentEnabled=!0,this._isReady=!0,this._onEnabledStateChangedObservable=new te,this._onClonedObservable=new te,this._inheritVisibility=!1,this._isVisible=!0}},Ei=class n{static AddNodeConstructor(e,t){this._NodeConstructors[e]=t}static Construct(e,t,i,r){let s=this._NodeConstructors[e];return s?s(t,i,r):null}set accessibilityTag(e){this._accessibilityTag=e,this.onAccessibilityTagChangedObservable.notifyObservers(e)}get accessibilityTag(){return this._accessibilityTag}get doNotSerialize(){return this._nodeDataStorage._doNotSerialize?!0:this._parentNode?this._parentNode.doNotSerialize:!1}set doNotSerialize(e){this._nodeDataStorage._doNotSerialize=e}isDisposed(){return this._nodeDataStorage._isDisposed}set parent(e){if(this._parentNode===e)return;let t=this._parentNode;if(this._parentNode&&this._parentNode._children!==void 0&&this._parentNode._children!==null){let i=this._parentNode._children.indexOf(this);i!==-1&&this._parentNode._children.splice(i,1),!e&&!this._nodeDataStorage._isDisposed&&this._addToSceneRootNodes()}this._parentNode=e,this._isDirty=!0,this._parentNode&&((this._parentNode._children===void 0||this._parentNode._children===null)&&(this._parentNode._children=new Array),this._parentNode._children.push(this),t||this._removeFromSceneRootNodes()),this._syncParentEnabledState()}get parent(){return this._parentNode}get inheritVisibility(){return this._nodeDataStorage._inheritVisibility}set inheritVisibility(e){this._nodeDataStorage._inheritVisibility=e}get isVisible(){return this.inheritVisibility&&this._parentNode&&!this._parentNode.isVisible?!1:this._nodeDataStorage._isVisible}set isVisible(e){this._nodeDataStorage._isVisible=e}_serializeAsParent(e){e.parentId=this.uniqueId}_addToSceneRootNodes(){this._nodeDataStorage._sceneRootNodesIndex===-1&&(this._nodeDataStorage._sceneRootNodesIndex=this._scene.rootNodes.length,this._scene.rootNodes.push(this))}_removeFromSceneRootNodes(){if(this._nodeDataStorage._sceneRootNodesIndex!==-1){let e=this._scene.rootNodes,t=e.length-1;e[this._nodeDataStorage._sceneRootNodesIndex]=e[t],e[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex=this._nodeDataStorage._sceneRootNodesIndex,this._scene.rootNodes.pop(),this._nodeDataStorage._sceneRootNodesIndex=-1}}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}getClassName(){return"Node"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onEnabledStateChangedObservable(){return this._nodeDataStorage._onEnabledStateChangedObservable}get onClonedObservable(){return this._nodeDataStorage._onClonedObservable}constructor(e,t=null,i=!0){this._isDirty=!1,this._nodeDataStorage=new yD,this.state="",this.metadata=null,this.reservedDataStore=null,this._accessibilityTag=null,this.onAccessibilityTagChangedObservable=new te,this._parentContainer=null,this.animations=[],this._ranges={},this.onReady=null,this._currentRenderId=-1,this._parentUpdateId=-1,this._childUpdateId=-1,this._waitingParentId=null,this._waitingParentInstanceIndex=null,this._waitingParsedUniqueId=null,this._cache={},this._parentNode=null,this._children=null,this._worldMatrix=Z.Identity(),this._worldMatrixDeterminant=0,this._worldMatrixDeterminantIsDirty=!0,this._animationPropertiesOverride=null,this._isNode=!0,this.onDisposeObservable=new te,this._onDisposeObserver=null,this._behaviors=new Array,this.name=e,this.id=e,this._scene=t||Oe.LastCreatedScene,this.uniqueId=this._scene.getUniqueId(),this._initCache(),i&&this._addToSceneRootNodes()}getScene(){return this._scene}getEngine(){return this._scene.getEngine()}addBehavior(e,t=!1){return this._behaviors.indexOf(e)!==-1?this:(e.init(),this._scene.isLoading&&!t?this._scene.onDataLoadedObservable.addOnce(()=>{this._behaviors.includes(e)&&e.attach(this)}):e.attach(this),this._behaviors.push(e),this)}removeBehavior(e){let t=this._behaviors.indexOf(e);return t===-1?this:(this._behaviors[t].detach(),this._behaviors.splice(t,1),this)}get behaviors(){return this._behaviors}getBehaviorByName(e){for(let t of this._behaviors)if(t.name===e)return t;return null}getWorldMatrix(){return this._currentRenderId!==this._scene.getRenderId()&&this.computeWorldMatrix(),this._worldMatrix}_getWorldMatrixDeterminant(){return this._worldMatrixDeterminantIsDirty&&(this._worldMatrixDeterminantIsDirty=!1,this._worldMatrixDeterminant=this._worldMatrix.determinant()),this._worldMatrixDeterminant}get worldMatrixFromCache(){return this._worldMatrix}_initCache(){this._cache={}}updateCache(e){!e&&this.isSynchronized()||this._updateCache()}_getActionManagerForTrigger(e,t=!0){return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_updateCache(e){}_isSynchronized(){return!0}_markSyncedWithParent(){this._parentNode&&(this._parentUpdateId=this._parentNode._childUpdateId)}isSynchronizedWithParent(){return this._parentNode?this._parentNode._isDirty||this._parentUpdateId!==this._parentNode._childUpdateId?!1:this._parentNode.isSynchronized():!0}isSynchronized(){return this._parentNode&&!this.isSynchronizedWithParent()?!1:this._isSynchronized()}isReady(e=!1){return this._nodeDataStorage._isReady}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,this._isDirty=!0,this}isEnabled(e=!0){return e===!1?this._nodeDataStorage._isEnabled:this._nodeDataStorage._isEnabled?this._nodeDataStorage._isParentEnabled:!1}_syncParentEnabledState(){if(this._nodeDataStorage._isParentEnabled=this._parentNode?this._parentNode.isEnabled():!0,this._children)for(let e of this._children)e._syncParentEnabledState()}setEnabled(e){this._nodeDataStorage._isEnabled!==e&&(this._nodeDataStorage._isEnabled=e,this._syncParentEnabledState(),this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(e))}isDescendantOf(e){return this.parent?this.parent===e?!0:this.parent.isDescendantOf(e):!1}_getDescendants(e,t=!1,i){if(this._children)for(let r=0;r(!t||t(r))&&r.cullingStrategy!==void 0),i}getChildren(e,t=!0){return this.getDescendants(t,e)}_setReady(e){if(e!==this._nodeDataStorage._isReady){if(!e){this._nodeDataStorage._isReady=!1;return}this.onReady&&this.onReady(this),this._nodeDataStorage._isReady=!0}}getAnimationByName(e){for(let t=0;tnew n(e,this.getScene()),this);if(t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;a{throw Qe("AnimationRange")};Ei._NodeConstructors={};P([F()],Ei.prototype,"name",void 0);P([F()],Ei.prototype,"id",void 0);P([F()],Ei.prototype,"uniqueId",void 0);P([F()],Ei.prototype,"state",void 0);P([F()],Ei.prototype,"metadata",void 0)});function CD(n,e,t){try{let i=n.next();i.done?e(i):i.value?i.value.then(()=>{i.value=void 0,e(i)},t):e(i)}catch(i){t(i)}}function cH(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{CD(t,i,r)},0)):CD(t,i,r)}}function fH(n,e,t,i,r){let s=()=>{let a,o=l=>{l.done?t(l.value):a===void 0?a=!0:s()};do a=void 0,!r||!r.aborted?e(n,o,i):i(new Error("Aborted")),a===void 0&&(a=!1);while(a)};s()}function lv(n,e){let t;return fH(n,CD,i=>t=i,i=>{throw i},e),t}async function dH(n,e,t){return await new Promise((i,r)=>{fH(n,e,i,r,t)})}function hH(n,e){return(...t)=>lv(n(...t),e)}var PD=I(()=>{});var gt,Rl=I(()=>{Wt();kt();Mo();wi();mi();ke();_a();Lt();$i();Sn();Nm();cx();Dr();gt=class n extends Ei{get position(){return this._position}set position(e){this._position=e}set upVector(e){this._upVector=e}get upVector(){return this._upVector}get screenArea(){var i,r,s,a;let e,t;if(this.mode===n.PERSPECTIVE_CAMERA)this.fovMode===n.FOVMODE_VERTICAL_FIXED?(t=this.minZ*2*Math.tan(this.fov/2),e=this.getEngine().getAspectRatio(this)*t):(e=this.minZ*2*Math.tan(this.fov/2),t=e/this.getEngine().getAspectRatio(this));else{let o=this.getEngine().getRenderWidth()/2,l=this.getEngine().getRenderHeight()/2;e=((i=this.orthoRight)!=null?i:o)-((r=this.orthoLeft)!=null?r:-o),t=((s=this.orthoTop)!=null?s:l)-((a=this.orthoBottom)!=null?a:-l)}return e*t}set orthoLeft(e){this._orthoLeft=e;for(let t of this._rigCameras)t.orthoLeft=e}get orthoLeft(){return this._orthoLeft}set orthoRight(e){this._orthoRight=e;for(let t of this._rigCameras)t.orthoRight=e}get orthoRight(){return this._orthoRight}set orthoBottom(e){this._orthoBottom=e;for(let t of this._rigCameras)t.orthoBottom=e}get orthoBottom(){return this._orthoBottom}set orthoTop(e){this._orthoTop=e;for(let t of this._rigCameras)t.orthoTop=e}get orthoTop(){return this._orthoTop}setFocalLength(e,t=36){this.fov=2*Math.atan(t/(2*e))}set mode(e){this._mode=e;for(let t of this._rigCameras)t.mode=e}get mode(){return this._mode}get hasMoved(){return this._hasMoved}constructor(e,t,i,r=!0){super(e,i,!1),this._position=b.Zero(),this._upVector=b.Up(),this.oblique=null,this._orthoLeft=null,this._orthoRight=null,this._orthoBottom=null,this._orthoTop=null,this.fov=.8,this.projectionPlaneTilt=0,this.minZ=1,this.maxZ=1e4,this.inertia=.9,this._mode=n.PERSPECTIVE_CAMERA,this.isIntermediate=!1,this.viewport=new xo(0,0,1,1),this.layerMask=268435455,this.fovMode=n.FOVMODE_VERTICAL_FIXED,this.cameraRigMode=n.RIG_MODE_NONE,this.ignoreCameraMaxZ=!1,this.customRenderTargets=[],this.outputRenderTarget=null,this.onViewMatrixChangedObservable=new te,this.onProjectionMatrixChangedObservable=new te,this.onAfterCheckInputsObservable=new te,this.onRestoreStateObservable=new te,this.isRigCamera=!1,this._hasMoved=!1,this._rigCameras=new Array,this._skipRendering=!1,this._projectionMatrix=new Z,this._postProcesses=new Array,this._activeMeshes=new Xi(256),this._globalPosition=b.Zero(),this._computedViewMatrix=Z.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=Z.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=Ke.Identity(),this._isCamera=!0,this._isLeftCamera=!1,this._isRightCamera=!1,this.layerMask=this.getScene().defaultCameraLayerMask,this.getScene().addCamera(this),r&&!this.getScene().activeCamera&&(this.getScene().activeCamera=this),this.position=t,this.renderPassId=this.getScene().getEngine().createRenderPassId(`Camera ${e}`)}storeState(){return this._stateStored=!0,this._storedFov=this.fov,this}hasStateStored(){return!!this._stateStored}_restoreStateValues(){return this._stateStored?(this.fov=this._storedFov,!0):!1}restoreState(){return this._restoreStateValues()?(this.onRestoreStateObservable.notifyObservers(this),!0):!1}getClassName(){return"Camera"}toString(e){let t="Name: "+this.name;if(t+=", type: "+this.getClassName(),this.animations)for(let i=0;i-1?(ee.Error("You're trying to reuse a post process not defined as reusable."),0):(t==null||t<0?this._postProcesses.push(e):this._postProcesses[t]===null?this._postProcesses[t]=e:this._postProcesses.splice(t,0,e),this._cascadePostProcessesToRigCams(),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._postProcesses.indexOf(e))}detachPostProcess(e){let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses[t]=null),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._cascadePostProcessesToRigCams()}getWorldMatrix(){return this._isSynchronizedViewMatrix()?this._worldMatrix:(this.getViewMatrix(),this._worldMatrix)}_getViewMatrix(){return Z.Identity()}getViewMatrix(e){return!e&&this._isSynchronizedViewMatrix()?this._computedViewMatrix:(this._hasMoved=!0,this.updateCache(),this._computedViewMatrix=this._getViewMatrix(),this._currentRenderId=this.getScene().getRenderId(),this._childUpdateId++,this._refreshFrustumPlanes=!0,this._cameraRigParams&&this._cameraRigParams.vrPreViewMatrix&&this._computedViewMatrix.multiplyToRef(this._cameraRigParams.vrPreViewMatrix,this._computedViewMatrix),this.parent&&this.parent.onViewMatrixChangedObservable&&this.parent.onViewMatrixChangedObservable.notifyObservers(this.parent),this.onViewMatrixChangedObservable.notifyObservers(this),this._computedViewMatrix.invertToRef(this._worldMatrix),this._worldMatrix.getTranslationToRef(this._globalPosition),this._computedViewMatrix)}freezeProjectionMatrix(e){this._doNotComputeProjectionMatrix=!0,e!==void 0&&(this._projectionMatrix=e)}unfreezeProjectionMatrix(){this._doNotComputeProjectionMatrix=!1}getProjectionMatrix(e){var a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A,R,M;if(this._doNotComputeProjectionMatrix||!e&&this._isSynchronizedProjectionMatrix())return this._projectionMatrix;let t=this.ignoreCameraMaxZ?0:this.maxZ;this._cache.mode=this.mode,this._cache.minZ=this.minZ,this._cache.maxZ=t,this._refreshFrustumPlanes=!0;let i=this.getEngine(),r=this.getScene(),s=i.useReverseDepthBuffer;if(this.mode===n.PERSPECTIVE_CAMERA){this._cache.fov=this.fov,this._cache.fovMode=this.fovMode,this._cache.aspectRatio=i.getAspectRatio(this),this._cache.projectionPlaneTilt=this.projectionPlaneTilt,this.minZ<=0&&(this.minZ=.1);let y;r.useRightHandedSystem?y=Z.PerspectiveFovRHToRef:y=Z.PerspectiveFovLHToRef,y(this.fov,i.getAspectRatio(this),s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,this.fovMode===n.FOVMODE_VERTICAL_FIXED,i.isNDCHalfZRange,this.projectionPlaneTilt,s)}else{let y=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?Z.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-y,(o=this.orthoRight)!=null?o:y,(l=this.orthoBottom)!=null?l:-C,(c=this.orthoTop)!=null?c:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-y,(d=this.orthoRight)!=null?d:y,(h=this.orthoBottom)!=null?h:-C,(u=this.orthoTop)!=null?u:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?Z.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-y,(_=this.orthoRight)!=null?_:y,(p=this.orthoBottom)!=null?p:-C,(g=this.orthoTop)!=null?g:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-y,(T=this.orthoRight)!=null?T:y,(S=this.orthoBottom)!=null?S:-C,(E=this.orthoTop)!=null?E:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange),this._cache.orthoLeft=this.orthoLeft,this._cache.orthoRight=this.orthoRight,this._cache.orthoBottom=this.orthoBottom,this._cache.orthoTop=this.orthoTop,this._cache.obliqueAngle=(A=this.oblique)==null?void 0:A.angle,this._cache.obliqueLength=(R=this.oblique)==null?void 0:R.length,this._cache.obliqueOffset=(M=this.oblique)==null?void 0:M.offset,this._cache.renderWidth=i.getRenderWidth(),this._cache.renderHeight=i.getRenderHeight()}return this.onProjectionMatrixChangedObservable.notifyObservers(this),this._projectionMatrix}getTransformationMatrix(){return this._computedViewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._transformMatrix}_computeObliqueDistance(e){let t=this,i=this;return(t.radius||(i.target?b.Distance(this.position,i.target):this.position.length()))+e}_updateFrustumPlanes(){this._refreshFrustumPlanes&&(this.getTransformationMatrix(),this._frustumPlanes?Mf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Mf.GetPlanes(this._transformMatrix),this._refreshFrustumPlanes=!1)}isInFrustum(e,t=!1){if(this._updateFrustumPlanes(),t&&this.rigCameras.length>0){let i=!1;for(let r of this.rigCameras)r._updateFrustumPlanes(),i=i||e.isInFrustum(r._frustumPlanes);return i}else return e.isInFrustum(this._frustumPlanes)}isCompletelyInFrustum(e){return this._updateFrustumPlanes(),e.isCompletelyInFrustum(this._frustumPlanes)}getForwardRay(e=100,t,i){throw Qe("Ray")}getForwardRayToRef(e,t=100,i,r){throw Qe("Ray")}dispose(e,t=!1){for(this.onViewMatrixChangedObservable.clear(),this.onProjectionMatrixChangedObservable.clear(),this.onAfterCheckInputsObservable.clear(),this.onRestoreStateObservable.clear(),this.inputs&&this.inputs.clear(),this.getScene().stopAnimation(this),this.getScene().removeCamera(this);this._rigCameras.length>0;){let r=this._rigCameras.pop();r&&r.dispose()}if(this._parentContainer){let r=this._parentContainer.cameras.indexOf(this);r>-1&&this._parentContainer.cameras.splice(r,1),this._parentContainer=null}if(this._rigPostProcess)this._rigPostProcess.dispose(this),this._rigPostProcess=null,this._postProcesses.length=0;else if(this.cameraRigMode!==n.RIG_MODE_NONE)this._rigPostProcess=null,this._postProcesses.length=0;else{let r=this._postProcesses.length;for(;--r>=0;){let s=this._postProcesses[r];s&&s.dispose(this)}}let i=this.customRenderTargets.length;for(;--i>=0;)this.customRenderTargets[i].dispose();this.customRenderTargets.length=0,this._activeMeshes.dispose(),this.getScene().getEngine().releaseRenderPassId(this.renderPassId),super.dispose(e,t)}get isLeftCamera(){return this._isLeftCamera}get isRightCamera(){return this._isRightCamera}get leftCamera(){return this._rigCameras.length<1?null:this._rigCameras[0]}get rightCamera(){return this._rigCameras.length<2?null:this._rigCameras[1]}getLeftTarget(){return this._rigCameras.length<1?null:this._rigCameras[0].getTarget()}getRightTarget(){return this._rigCameras.length<2?null:this._rigCameras[1].getTarget()}setCameraRigMode(e,t){if(this.cameraRigMode!==e){for(;this._rigCameras.length>0;){let i=this._rigCameras.pop();i&&i.dispose()}if(this.cameraRigMode=e,this._cameraRigParams={},this._cameraRigParams.interaxialDistance=t.interaxialDistance||.0637,this._cameraRigParams.stereoHalfAngle=pe.ToRadians(this._cameraRigParams.interaxialDistance/.0637),this.cameraRigMode!==n.RIG_MODE_NONE){let i=this.createRigCamera(this.name+"_L",0);i&&(i._isLeftCamera=!0);let r=this.createRigCamera(this.name+"_R",1);r&&(r._isRightCamera=!0),i&&r&&(this._rigCameras.push(i),this._rigCameras.push(r))}this._setRigMode(t),this._cascadePostProcessesToRigCams(),this.update()}}_setRigMode(e){}_getVRProjectionMatrix(){return Z.PerspectiveFovLHToRef(this._cameraRigParams.vrMetrics.aspectRatioFov,this._cameraRigParams.vrMetrics.aspectRatio,this.minZ,this.ignoreCameraMaxZ?0:this.maxZ,this._cameraRigParams.vrWorkMatrix,!0,this.getEngine().isNDCHalfZRange),this._cameraRigParams.vrWorkMatrix.multiplyToRef(this._cameraRigParams.vrHMatrix,this._projectionMatrix),this._projectionMatrix}setCameraRigParameter(e,t){this._cameraRigParams||(this._cameraRigParams={}),this._cameraRigParams[e]=t,e==="interaxialDistance"&&(this._cameraRigParams.stereoHalfAngle=pe.ToRadians(t/.0637))}createRigCamera(e,t){return null}_updateRigCameras(){for(let e=0;en._CreateDefaultParsedCamera(t,i))}computeWorldMatrix(){return this.getWorldMatrix()}static Parse(e,t){let i=e.type,r=n.GetConstructorFromName(i,e.name,t,e.interaxial_distance,e.isStereoscopicSideBySide),s=nt.Parse(r,e,t);if(e.parentId!==void 0&&(s._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(s._waitingParentInstanceIndex=e.parentInstanceIndex),s.inputs&&(s.inputs.parse(e),s._setupInputs()),e.upVector&&(s.upVector=b.FromArray(e.upVector)),s.setPosition&&(s.position.copyFromFloats(0,0,0),s.setPosition(b.FromArray(e.position))),e.target&&s.setTarget&&s.setTarget(b.FromArray(e.target)),e.cameraRigMode){let a=e.interaxial_distance?{interaxialDistance:e.interaxial_distance}:{};s.setCameraRigMode(e.cameraRigMode,a)}if(e.animations){for(let a=0;a{throw Qe("UniversalCamera")};gt.PERSPECTIVE_CAMERA=0;gt.ORTHOGRAPHIC_CAMERA=1;gt.FOVMODE_VERTICAL_FIXED=0;gt.FOVMODE_HORIZONTAL_FIXED=1;gt.RIG_MODE_NONE=0;gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;gt.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;gt.RIG_MODE_STEREOSCOPIC_INTERLACED=14;gt.RIG_MODE_VR=20;gt.RIG_MODE_CUSTOM=22;gt.ForceAttachControlToAlwaysPreventDefault=!1;P([Qr("position")],gt.prototype,"_position",void 0);P([Qr("upVector")],gt.prototype,"_upVector",void 0);P([F()],gt.prototype,"orthoLeft",null);P([F()],gt.prototype,"orthoRight",null);P([F()],gt.prototype,"orthoBottom",null);P([F()],gt.prototype,"orthoTop",null);P([F()],gt.prototype,"fov",void 0);P([F()],gt.prototype,"projectionPlaneTilt",void 0);P([F()],gt.prototype,"minZ",void 0);P([F()],gt.prototype,"maxZ",void 0);P([F()],gt.prototype,"inertia",void 0);P([F()],gt.prototype,"mode",null);P([F()],gt.prototype,"layerMask",void 0);P([F()],gt.prototype,"fovMode",void 0);P([F()],gt.prototype,"cameraRigMode",void 0);P([F()],gt.prototype,"interaxialDistance",void 0);P([F()],gt.prototype,"isStereoscopicSideBySide",void 0);P([F()],gt.prototype,"ignoreCameraMaxZ",void 0)});var Ih,DD=I(()=>{Ih=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var Uf,LD=I(()=>{pl();ke();Kn();Uf=class n{constructor(e,t,i){this.vectors=Tn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=Tn(3,b.Zero),this.vectorsWorld=Tn(8,b.Zero),this.minimumWorld=b.Zero(),this.maximumWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this._drawWrapperFront=null,this._drawWrapperBack=null,this.reConstruct(e,t,i)}reConstruct(e,t,i){let r=e.x,s=e.y,a=e.z,o=t.x,l=t.y,c=t.z,f=this.vectors;this.minimum.copyFromFloats(r,s,a),this.maximum.copyFromFloats(o,l,c),f[0].copyFromFloats(r,s,a),f[1].copyFromFloats(o,l,c),f[2].copyFromFloats(o,s,a),f[3].copyFromFloats(r,l,a),f[4].copyFromFloats(r,s,c),f[5].copyFromFloats(o,l,a),f[6].copyFromFloats(r,l,c),f[7].copyFromFloats(o,s,c),t.addToRef(e,this.center).scaleInPlace(.5),t.subtractToRef(e,this.extendSize).scaleInPlace(.5),this._worldMatrix=i||Z.IdentityReadOnly,this._update(this._worldMatrix)}scale(e){let t=n._TmpVector3,i=this.maximum.subtractToRef(this.minimum,t[0]),r=i.length();i.normalizeFromLength(r);let s=r*e,a=i.scaleInPlace(s*.5),o=this.center.subtractToRef(a,t[1]),l=this.center.addToRef(a,t[2]);return this.reConstruct(o,l,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){let t=this.minimumWorld,i=this.maximumWorld,r=this.directions,s=this.vectorsWorld,a=this.vectors;if(e.isIdentity()){t.copyFrom(this.minimum),i.copyFrom(this.maximum);for(let o=0;o<8;++o)s[o].copyFrom(a[o]);this.extendSizeWorld.copyFrom(this.extendSize),this.centerWorld.copyFrom(this.center)}else{t.setAll(Number.MAX_VALUE),i.setAll(-Number.MAX_VALUE);for(let o=0;o<8;++o){let l=s[o];b.TransformCoordinatesToRef(a[o],e,l),t.minimizeInPlace(l),i.maximizeInPlace(l)}i.subtractToRef(t,this.extendSizeWorld).scaleInPlace(.5),i.addToRef(t,this.centerWorld).scaleInPlace(.5)}b.FromArrayToRef(e.m,0,r[0]),b.FromArrayToRef(e.m,4,r[1]),b.FromArrayToRef(e.m,8,r[2]),this._worldMatrix=e}isInFrustum(e){return n.IsInFrustum(this.vectorsWorld,e)}isCompletelyInFrustum(e){return n.IsCompletelyInFrustum(this.vectorsWorld,e)}intersectsPoint(e){let t=this.minimumWorld,i=this.maximumWorld,r=t.x,s=t.y,a=t.z,o=i.x,l=i.y,c=i.z,f=e.x,d=e.y,h=e.z,u=-Ft;return!(o-ff-r||l-dd-s||c-hh-a)}intersectsSphere(e){return n.IntersectsSphere(this.minimumWorld,this.maximumWorld,e.centerWorld,e.radiusWorld)}intersectsMinMax(e,t){let i=this.minimumWorld,r=this.maximumWorld,s=i.x,a=i.y,o=i.z,l=r.x,c=r.y,f=r.z,d=e.x,h=e.y,u=e.z,m=t.x,_=t.y,p=t.z;return!(lm||c_||fp)}dispose(){var e,t;(e=this._drawWrapperFront)==null||e.dispose(),(t=this._drawWrapperBack)==null||t.dispose()}static Intersects(e,t){return e.intersectsMinMax(t.minimumWorld,t.maximumWorld)}static IntersectsSphere(e,t,i,r){let s=n._TmpVector3[0];return b.ClampToRef(i,e,t,s),b.DistanceSquared(i,s)<=r*r}static IsCompletelyInFrustum(e,t){for(let i=0;i<6;++i){let r=t[i];for(let s=0;s<8;++s)if(r.dotCoordinate(e[s])<0)return!1}return!0}static IsInFrustum(e,t){for(let i=0;i<6;++i){let r=!0,s=t[i];for(let a=0;a<8;++a)if(s.dotCoordinate(e[a])>=0){r=!1;break}if(r)return!1}return!0}};Uf._TmpVector3=Tn(3,b.Zero)});var Zm,uH=I(()=>{pl();ke();Zm=class n{constructor(e,t,i){this.center=b.Zero(),this.centerWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this.reConstruct(e,t,i)}reConstruct(e,t,i){this.minimum.copyFrom(e),this.maximum.copyFrom(t);let r=b.Distance(e,t);t.addToRef(e,this.center).scaleInPlace(.5),this.radius=r*.5,this._update(i||Z.IdentityReadOnly)}scale(e){let t=this.radius*e,i=n._TmpVector3,r=i[0].setAll(t),s=this.center.subtractToRef(r,i[1]),a=this.center.addToRef(r,i[2]);return this.reConstruct(s,a,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){if(e.isIdentity())this.centerWorld.copyFrom(this.center),this.radiusWorld=this.radius;else{b.TransformCoordinatesToRef(this.center,e,this.centerWorld);let t=n._TmpVector3[0];b.TransformNormalFromFloatsToRef(1,1,1,e,t),this.radiusWorld=Math.max(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z))*this.radius}}isInFrustum(e){let t=this.centerWorld,i=this.radiusWorld;for(let r=0;r<6;r++)if(e[r].dotCoordinate(t)<=-i)return!1;return!0}isCenterInFrustum(e){let t=this.centerWorld;for(let i=0;i<6;i++)if(e[i].dotCoordinate(t)<0)return!1;return!0}intersectsPoint(e){let t=b.DistanceSquared(this.centerWorld,e);return!(this.radiusWorld*this.radiusWorld{pl();ke();LD();uH();OD={min:0,max:0},ND={min:0,max:0},mH=(n,e,t)=>{let i=b.Dot(e.centerWorld,n),r=Math.abs(b.Dot(e.directions[0],n))*e.extendSize.x,s=Math.abs(b.Dot(e.directions[1],n))*e.extendSize.y,a=Math.abs(b.Dot(e.directions[2],n))*e.extendSize.z,o=r+s+a;t.min=i-o,t.max=i+o},As=(n,e,t)=>(mH(n,e,OD),mH(n,t,ND),!(OD.min>ND.max||ND.min>OD.max)),An=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new Uf(e,t,i),this.boundingSphere=new Zm(e,t,i)}reConstruct(e,t,i){this.boundingBox.reConstruct(e,t,i),this.boundingSphere.reConstruct(e,t,i)}get minimum(){return this.boundingBox.minimum}get maximum(){return this.boundingBox.maximum}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e}update(e){this._isLocked||(this.boundingBox._update(e),this.boundingSphere._update(e))}centerOn(e,t){let i=n._TmpVector3[0].copyFrom(e).subtractInPlace(t),r=n._TmpVector3[1].copyFrom(e).addInPlace(t);return this.boundingBox.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this.boundingSphere.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this}encapsulate(e){let t=b.Minimize(this.minimum,e),i=b.Maximize(this.maximum,e);return this.reConstruct(t,i,this.boundingBox.getWorldMatrix()),this}encapsulateBoundingInfo(e){let t=$.Matrix[0];this.boundingBox.getWorldMatrix().invertToRef(t);let i=$.Vector3[0];return b.TransformCoordinatesToRef(e.boundingBox.minimumWorld,t,i),this.encapsulate(i),b.TransformCoordinatesToRef(e.boundingBox.maximumWorld,t,i),this.encapsulate(i),this}scale(e){return this.boundingBox.scale(e),this.boundingSphere.scale(e),this}isInFrustum(e,t=0){return(t===2||t===3)&&this.boundingSphere.isCenterInFrustum(e)?!0:this.boundingSphere.isInFrustum(e)?t===1||t===3?!0:this.boundingBox.isInFrustum(e):!1}get diagonalLength(){let e=this.boundingBox;return e.maximumWorld.subtractToRef(e.minimumWorld,n._TmpVector3[0]).length()}isCompletelyInFrustum(e){return this.boundingBox.isCompletelyInFrustum(e)}_checkCollision(e){return e._canDoCollision(this.boundingSphere.centerWorld,this.boundingSphere.radiusWorld,this.boundingBox.minimumWorld,this.boundingBox.maximumWorld)}intersectsPoint(e){return!(!this.boundingSphere.centerWorld||!this.boundingSphere.intersectsPoint(e)||!this.boundingBox.intersectsPoint(e))}intersects(e,t){if(!Zm.Intersects(this.boundingSphere,e.boundingSphere)||!Uf.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!As(i.directions[0],i,r)||!As(i.directions[1],i,r)||!As(i.directions[2],i,r)||!As(r.directions[0],i,r)||!As(r.directions[1],i,r)||!As(r.directions[2],i,r)||!As(b.Cross(i.directions[0],r.directions[0]),i,r)||!As(b.Cross(i.directions[0],r.directions[1]),i,r)||!As(b.Cross(i.directions[0],r.directions[2]),i,r)||!As(b.Cross(i.directions[1],r.directions[0]),i,r)||!As(b.Cross(i.directions[1],r.directions[1]),i,r)||!As(b.Cross(i.directions[1],r.directions[2]),i,r)||!As(b.Cross(i.directions[2],r.directions[0]),i,r)||!As(b.Cross(i.directions[2],r.directions[1]),i,r)||!As(b.Cross(i.directions[2],r.directions[2]),i,r))}};An._TmpVector3=Tn(2,b.Zero)});function pH(n,e,t,i,r=null){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return Qm.extractMinAndMaxIndexed(n,e,t,i,s,a),r&&(s.x-=s.x*r.x+r.y,s.y-=s.y*r.x+r.y,s.z-=s.z*r.x+r.y,a.x+=a.x*r.x+r.y,a.y+=a.y*r.x+r.y,a.z+=a.z*r.x+r.y),{minimum:s,maximum:a}}function Jx(n,e,t,i=null,r){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return r||(r=3),Qm.extractMinAndMax(n,e,t,r,s,a),i&&(s.x-=s.x*i.x+i.y,s.y-=s.y*i.x+i.y,s.z-=s.z*i.x+i.y,a.x+=a.x*i.x+i.y,a.y+=a.y*i.x+i.y,a.z+=a.z*i.x+i.y),{minimum:s,maximum:a}}var Qm,eR=I(()=>{Wt();ke();kt();Qm=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],Qm,"extractMinAndMaxIndexed",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Qm,"extractMinAndMax",null)});var Ks,cv=I(()=>{Zi();DD();qm();eR();Eh();Ks=class n{get materialDefines(){var t;let e=this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.defines:(t=this._getDrawWrapper())==null?void 0:t.defines;return typeof e=="string"?null:e}set materialDefines(e){var i;let t=(i=this._mainDrawWrapperOverride)!=null?i:this._getDrawWrapper(void 0,!0);t.defines=e}_getDrawWrapper(e,t=!1){e=e!=null?e:this._engine.currentRenderPassId;let i=this._drawWrappers[e];return!i&&t&&(this._drawWrappers[e]=i=new Ss(this._mesh.getScene().getEngine())),i}_removeDrawWrapper(e,t=!0,i=!1){var r;t&&((r=this._drawWrappers[e])==null||r.dispose(i)),this._drawWrappers[e]=void 0}get effect(){var e,t;return this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.effect:(t=(e=this._getDrawWrapper())==null?void 0:e.effect)!=null?t:null}get _drawWrapper(){var e;return(e=this._mainDrawWrapperOverride)!=null?e:this._getDrawWrapper(void 0,!0)}get _drawWrapperOverride(){return this._mainDrawWrapperOverride}_setMainDrawWrapperOverride(e){this._mainDrawWrapperOverride=e}setEffect(e,t=null,i,r=!0){let s=this._drawWrapper;s.setEffect(e,t,r),i!==void 0&&(s.materialContext=i),e||(s.defines=null,s.materialContext=void 0)}resetDrawCache(e,t=!1){if(this._drawWrappers)if(e!==void 0){this._removeDrawWrapper(e,!0,t);return}else for(let i of this._drawWrappers)i==null||i.dispose(t);this._drawWrappers=[]}static AddToMesh(e,t,i,r,s,a,o,l=!0){return new n(e,t,i,r,s,a,o,l)}constructor(e,t,i,r,s,a,o,l=!0,c=!0){this.materialIndex=e,this.verticesStart=t,this.verticesCount=i,this.indexStart=r,this.indexCount=s,this._mainDrawWrapperOverride=null,this._linesIndexCount=0,this._linesIndexBuffer=null,this._lastColliderWorldVertices=null,this._lastColliderTransformMatrix=null,this._wasDispatched=!1,this._renderId=0,this._alphaIndex=0,this._distanceToCamera=0,this._currentMaterial=null,this._mesh=a,this._renderingMesh=o||a,c&&a.subMeshes.push(this),this._engine=this._mesh.getScene().getEngine(),this.resetDrawCache(),this._trianglePlanes=[],this._id=a.subMeshes.length-1,l&&(this.refreshBoundingInfo(),a.computeWorldMatrix(!0))}get IsGlobal(){return this.verticesStart===0&&this.verticesCount===this._mesh.getTotalVertices()&&this.indexStart===0&&this.indexCount===this._mesh.getTotalIndices()}getBoundingInfo(){return this.IsGlobal||this._mesh.hasThinInstances?this._mesh.getBoundingInfo():this._boundingInfo}setBoundingInfo(e){return this._boundingInfo=e,this}getMesh(){return this._mesh}getRenderingMesh(){return this._renderingMesh}getReplacementMesh(){return this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null}getEffectiveMesh(){let e=this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null;return e||this._renderingMesh}getMaterial(e=!0){var i;let t=(i=this._renderingMesh.getMaterialForRenderPass(this._engine.currentRenderPassId))!=null?i:this._renderingMesh.material;if(t){if(this._isMultiMaterial(t)){let r=t.getSubMaterial(this.materialIndex);return this._currentMaterial!==r&&(this._currentMaterial=r,this.resetDrawCache()),r}}else return e&&this._mesh.getScene()._hasDefaultMaterial?this._mesh.getScene().defaultMaterial:null;return t}_isMultiMaterial(e){return e.getSubMaterial!==void 0}refreshBoundingInfo(e=null){if(this._lastColliderWorldVertices=null,this.IsGlobal||!this._renderingMesh||!this._renderingMesh.geometry)return this;if(e||(e=this._renderingMesh.getVerticesData(L.PositionKind)),!e)return this._boundingInfo=this._mesh.getBoundingInfo(),this;let t=this._renderingMesh.getIndices(),i;if(this.indexStart===0&&this.indexCount===t.length){let r=this._renderingMesh.getBoundingInfo();i={minimum:r.minimum.clone(),maximum:r.maximum.clone()}}else i=pH(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new An(i.minimum,i.maximum),this}_checkCollision(e){return this.getBoundingInfo()._checkCollision(e)}updateBoundingInfo(e){let t=this.getBoundingInfo();return t||(this.refreshBoundingInfo(),t=this.getBoundingInfo()),t&&t.update(e),this}isInFrustum(e){let t=this.getBoundingInfo();return t?t.isInFrustum(e,this._mesh.cullingStrategy):!1}isCompletelyInFrustum(e){let t=this.getBoundingInfo();return t?t.isCompletelyInFrustum(e):!1}render(e){return this._renderingMesh.render(this,e,this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:void 0),this}_getLinesIndexBuffer(e,t){if(!this._linesIndexBuffer){let i=Math.floor(this.indexCount/3)*6,s=this.verticesStart+this.verticesCount>65535?new Uint32Array(i):new Uint16Array(i),a=0;if(e.length===0)for(let o=this.indexStart;ol&&(l=h)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var fv,Me,Tr=I(()=>{Wt();ke();Zi();Sn();zt();Lt();kt();PD();Fg();cv();fv=class{},Me=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=hH(this._applyToCoroutine.bind(this)),this.uniqueId=n._UniqueIdGenerator,n._UniqueIdGenerator++}set(e,t){switch(e.length||ee.Warn(`Setting vertex data kind '${t}' with an empty array`),t){case L.PositionKind:this.positions=e;break;case L.NormalKind:this.normals=e;break;case L.TangentKind:this.tangents=e;break;case L.UVKind:this.uvs=e;break;case L.UV2Kind:this.uvs2=e;break;case L.UV3Kind:this.uvs3=e;break;case L.UV4Kind:this.uvs4=e;break;case L.UV5Kind:this.uvs5=e;break;case L.UV6Kind:this.uvs6=e;break;case L.ColorKind:this.colors=e;break;case L.MatricesIndicesKind:this.matricesIndices=e;break;case L.MatricesWeightsKind:this.matricesWeights=e;break;case L.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case L.MatricesWeightsExtraKind:this.matricesWeightsExtra=e;break}}applyToMesh(e,t){return this._applyTo(e,t,!1),this}applyToGeometry(e,t){return this._applyTo(e,t,!1),this}updateMesh(e){return this._update(e),this}updateGeometry(e){return this._update(e),this}*_applyToCoroutine(e,t=!1,i){if(this.positions&&(e.setVerticesData(L.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(L.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(L.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(L.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(L.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(L.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(L.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(L.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(L.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(L.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(L.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(L.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(L.MatricesWeightsExtraKind,this.matricesWeightsExtra,t),i&&(yield)),this.indices?(e.setIndices(this.indices,null,t),i&&(yield)):e.setIndices([],null),e.subMeshes&&this.materialInfos&&this.materialInfos.length>1){let r=e;r.subMeshes=[];for(let s of this.materialInfos)new Ks(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(L.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(L.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(L.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(L.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(L.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(L.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(L.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(L.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(L.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(L.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(L.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(L.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(L.MatricesWeightsExtraKind,this.matricesWeightsExtra,t,i),this.indices&&e.setIndices(this.indices,null),this}static _TransformVector3Coordinates(e,t,i=0,r=e.length){let s=$.Vector3[0],a=$.Vector3[1];for(let o=i;o({vertexData:o})):[{vertexData:e}];return lv(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var u,m,_,p;this._validate();let l=t.map(g=>g.vertexData),c=this;if(o)for(let g of l)g&&(g._validate(),!this.normals&&g.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&g.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&g.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&g.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&g.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&g.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&g.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&g.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&g.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&g.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&g.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&g.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&g.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let g of l)if(g){if(o)this.normals&&!g.normals&&(g.normals=new Float32Array(g.positions.length)),this.tangents&&!g.tangents&&(g.tangents=new Float32Array(g.positions.length/3*4)),this.uvs&&!g.uvs&&(g.uvs=new Float32Array(g.positions.length/3*2)),this.uvs2&&!g.uvs2&&(g.uvs2=new Float32Array(g.positions.length/3*2)),this.uvs3&&!g.uvs3&&(g.uvs3=new Float32Array(g.positions.length/3*2)),this.uvs4&&!g.uvs4&&(g.uvs4=new Float32Array(g.positions.length/3*2)),this.uvs5&&!g.uvs5&&(g.uvs5=new Float32Array(g.positions.length/3*2)),this.uvs6&&!g.uvs6&&(g.uvs6=new Float32Array(g.positions.length/3*2)),this.colors&&!g.colors&&(g.colors=new Float32Array(g.positions.length/3*4),g.colors.fill(1)),this.matricesIndices&&!g.matricesIndices&&(g.matricesIndices=new Float32Array(g.positions.length/3*4)),this.matricesWeights&&!g.matricesWeights&&(g.matricesWeights=new Float32Array(g.positions.length/3*4)),this.matricesIndicesExtra&&!g.matricesIndicesExtra&&(g.matricesIndicesExtra=new Float32Array(g.positions.length/3*4)),this.matricesWeightsExtra&&!g.matricesWeightsExtra&&(g.matricesWeightsExtra=new Float32Array(g.positions.length/3*4));else if(g._validate(),!this.normals!=!g.normals||!this.tangents!=!g.tangents||!this.uvs!=!g.uvs||!this.uvs2!=!g.uvs2||!this.uvs3!=!g.uvs3||!this.uvs4!=!g.uvs4||!this.uvs5!=!g.uvs5||!this.uvs6!=!g.uvs6||!this.colors!=!g.colors||!this.matricesIndices!=!g.matricesIndices||!this.matricesWeights!=!g.matricesWeights||!this.matricesIndicesExtra!=!g.matricesIndicesExtra||!this.matricesWeightsExtra!=!g.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let g,v=0,T=0,S=[],E=null,A=[];for(let M of this.splitBasedOnMaterialID())A.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let y of M.vertexData.splitBasedOnMaterialID())A.push({vertexData:y,transform:M.transform});A.sort((M,y)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,D=y.vertexData.materialInfos?y.vertexData.materialInfos[0].materialIndex:0;return C>D?1:C===D?0:-1});for(let M of A){let y=M.vertexData;if(y.materialInfos?g=y.materialInfos[0].materialIndex:g=0,E&&E.materialIndex===g)E.indexCount+=y.indices.length,E.verticesCount+=y.positions.length/3;else{let C=new fv;C.materialIndex=g,C.indexStart=v,C.indexCount=y.indices.length,C.verticesStart=T,C.verticesCount=y.positions.length/3,S.push(C),E=C}v+=y.indices.length,T+=y.positions.length/3}let R=A.splice(0,1)[0];c=R.vertexData,e=R.transform,l=A.map(M=>M.vertexData),t=A,this.materialInfos=S}let f=l.reduce((g,v)=>{var T,S;return g+((S=(T=v.indices)==null?void 0:T.length)!=null?S:0)},(m=(u=c.indices)==null?void 0:u.length)!=null?m:0),h=s||l.some(g=>g.indices===c.indices)?(_=c.indices)==null?void 0:_.slice():c.indices;if(f>0){let g=(p=h==null?void 0:h.length)!=null?p:0;if(h||(h=new Array(f)),h.length!==f){if(Array.isArray(h))h.length=f;else{let T=i||h instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);T.set(h),h=T}e&&e.determinant()<0&&n._FlipFaces(h,0,g)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:T,transform:S}of t)if(T.indices){for(let E=0;E[g.vertexData.positions,g.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(L.NormalKind,c.normals,e,t.map(g=>[g.vertexData.normals,g.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(L.TangentKind,c.tangents,e,t.map(g=>[g.vertexData.tangents,g.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(L.UVKind,c.uvs,e,t.map(g=>[g.vertexData.uvs,g.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(L.UV2Kind,c.uvs2,e,t.map(g=>[g.vertexData.uvs2,g.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(L.UV3Kind,c.uvs3,e,t.map(g=>[g.vertexData.uvs3,g.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(L.UV4Kind,c.uvs4,e,t.map(g=>[g.vertexData.uvs4,g.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(L.UV5Kind,c.uvs5,e,t.map(g=>[g.vertexData.uvs5,g.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(L.UV6Kind,c.uvs6,e,t.map(g=>[g.vertexData.uvs6,g.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(L.ColorKind,c.colors,e,t.map(g=>[g.vertexData.colors,g.transform])),(c.hasVertexAlpha!==void 0||t.some(g=>g.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(g=>g.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(L.MatricesIndicesKind,c.matricesIndices,e,t.map(g=>[g.vertexData.matricesIndices,g.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(L.MatricesWeightsKind,c.matricesWeights,e,t.map(g=>[g.vertexData.matricesWeights,g.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(L.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(g=>[g.vertexData.matricesIndicesExtra,g.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(L.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(g=>[g.vertexData.matricesWeightsExtra,g.transform]))),this}static _MergeElement(e,t,i,r){let s=r.filter(l=>l[0]!==null&&l[0]!==void 0);if(!t&&s.length==0)return t;if(!t)return this._MergeElement(e,s[0][0],s[0][1],s.slice(1));let a=s.reduce((l,c)=>l+c[0].length,t.length),o=e===L.PositionKind?n._TransformVector3Coordinates:e===L.NormalKind?n._TransformVector3Normals:e===L.TangentKind?n._TransformVector4Normals:()=>{};if(t instanceof Float32Array){let l=new Float32Array(a);l.set(t),i&&o(l,i,0,t.length);let c=t.length;for(let[f,d]of s)l.set(f,c),d&&o(l,d,c,f.length),c+=f.length;return l}else{let l=new Array(a);for(let f=0;f{let a=L.DeduceStride(r);if(s.length%a!==0)throw new Error("The "+r+"s array count must be a multiple of "+a);return s.length/a},t=e(L.PositionKind,this.positions),i=(r,s)=>{let a=e(r,s);if(a!==t)throw new Error("The "+r+"s element count ("+a+") does not match the positions count ("+t+")")};this.normals&&i(L.NormalKind,this.normals),this.tangents&&i(L.TangentKind,this.tangents),this.uvs&&i(L.UVKind,this.uvs),this.uvs2&&i(L.UV2Kind,this.uvs2),this.uvs3&&i(L.UV3Kind,this.uvs3),this.uvs4&&i(L.UV4Kind,this.uvs4),this.uvs5&&i(L.UV5Kind,this.uvs5),this.uvs6&&i(L.UV6Kind,this.uvs6),this.colors&&i(L.ColorKind,this.colors),this.matricesIndices&&i(L.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(L.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(L.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(L.MatricesWeightsExtraKind,this.matricesWeightsExtra)}clone(){let e=this.serialize();return n.Parse(e)}serialize(){let e={};if(this.positions&&(e.positions=Array.from(this.positions)),this.normals&&(e.normals=Array.from(this.normals)),this.tangents&&(e.tangents=Array.from(this.tangents)),this.uvs&&(e.uvs=Array.from(this.uvs)),this.uvs2&&(e.uvs2=Array.from(this.uvs2)),this.uvs3&&(e.uvs3=Array.from(this.uvs3)),this.uvs4&&(e.uvs4=Array.from(this.uvs4)),this.uvs5&&(e.uvs5=Array.from(this.uvs5)),this.uvs6&&(e.uvs6=Array.from(this.uvs6)),this.colors&&(e.colors=Array.from(this.colors),e.hasVertexAlpha=this.hasVertexAlpha),this.matricesIndices&&(e.matricesIndices=Array.from(this.matricesIndices),e.matricesIndicesExpanded=!0),this.matricesWeights&&(e.matricesWeights=Array.from(this.matricesWeights)),this.matricesIndicesExtra&&(e.matricesIndicesExtra=Array.from(this.matricesIndicesExtra),e.matricesIndicesExtraExpanded=!0),this.matricesWeightsExtra&&(e.matricesWeightsExtra=Array.from(this.matricesWeightsExtra)),e.indices=this.indices?Array.from(this.indices):[],this.materialInfos){e.materialInfos=[];for(let t of this.materialInfos){let i={indexStart:t.indexStart,indexCount:t.indexCount,materialIndex:t.materialIndex,verticesStart:t.verticesStart,verticesCount:t.verticesCount};e.materialInfos.push(i)}}return e}static ExtractFromMesh(e,t,i){return n._ExtractFrom(e,t,i)}static ExtractFromGeometry(e,t,i){return n._ExtractFrom(e,t,i)}static _ExtractFrom(e,t,i){let r=new n;if(e.isVerticesDataPresent(L.PositionKind)&&(r.positions=e.getVerticesData(L.PositionKind,t,i)),e.isVerticesDataPresent(L.NormalKind)&&(r.normals=e.getVerticesData(L.NormalKind,t,i)),e.isVerticesDataPresent(L.TangentKind)&&(r.tangents=e.getVerticesData(L.TangentKind,t,i)),e.isVerticesDataPresent(L.UVKind)&&(r.uvs=e.getVerticesData(L.UVKind,t,i)),e.isVerticesDataPresent(L.UV2Kind)&&(r.uvs2=e.getVerticesData(L.UV2Kind,t,i)),e.isVerticesDataPresent(L.UV3Kind)&&(r.uvs3=e.getVerticesData(L.UV3Kind,t,i)),e.isVerticesDataPresent(L.UV4Kind)&&(r.uvs4=e.getVerticesData(L.UV4Kind,t,i)),e.isVerticesDataPresent(L.UV5Kind)&&(r.uvs5=e.getVerticesData(L.UV5Kind,t,i)),e.isVerticesDataPresent(L.UV6Kind)&&(r.uvs6=e.getVerticesData(L.UV6Kind,t,i)),e.isVerticesDataPresent(L.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(L.ColorKind),o=s.getVerticesData(L.ColorKind,t,i);if(a.getSize()===3){let l=new Float32Array(o.length*4/3);for(let c=0,f=0;c!Array.isArray(n[0]))],Me,"_TransformVector3Coordinates",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector3Normals",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector4Normals",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_FlipFaces",null)});var Jr,tR=I(()=>{Jr=class n{static get ForceFullSceneLoadingForIncremental(){return n._ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){n._ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return n._ShowLoadingScreen}static set ShowLoadingScreen(e){n._ShowLoadingScreen=e}static get loggingLevel(){return n._LoggingLevel}static set loggingLevel(e){n._LoggingLevel=e}static get CleanBoneMatrixWeights(){return n._CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){n._CleanBoneMatrixWeights=e}};Jr._ForceFullSceneLoadingForIncremental=!1;Jr._ShowLoadingScreen=!0;Jr._CleanBoneMatrixWeights=!1;Jr._LoggingLevel=0});var xn,iR=I(()=>{ke();zt();Tr();Zi();cv();tR();qm();wi();Df();eR();Gi();fn();Vm();xn=class n{get boundingBias(){return this._boundingBias}set boundingBias(e){this._boundingBias?this._boundingBias.copyFrom(e):this._boundingBias=e.clone(),this._updateBoundingInfo(!0,null)}static CreateGeometryForMesh(e){let t=new n(n.RandomId(),e.getScene());return t.applyToMesh(e),t}get meshes(){return this._meshes}constructor(e,t,i,r=!1,s=null,a=null){this.delayLoadState=0,this._totalVertices=0,this._isDisposed=!1,this._extend={minimum:new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),maximum:new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)},this._indexBufferIsUpdatable=!1,this._positionsCache=[],this._parentContainer=null,this.useBoundingInfoFromGeometry=!1,this._scene=t||Oe.LastCreatedScene,this._scene&&(this.id=e,this.uniqueId=this._scene.getUniqueId(),this._engine=this._scene.getEngine(),this._meshes=[],this._vertexBuffers={},this._indices=[],this._updatable=r,a!==null&&(this._totalVertices=a),i?this.setAllVerticesData(i,r):a===null&&(this._totalVertices=0),this._engine.getCaps().vertexArrayObject&&(this._vertexArrayObjects={}),s&&(this.applyToMesh(s),s.computeWorldMatrix(!0)))}get extend(){return this._extend}getScene(){return this._scene}getEngine(){return this._engine}isReady(){return this.delayLoadState===1||this.delayLoadState===0}get doNotSerialize(){for(let e=0;e{t._rebuild()})}setAllVerticesData(e,t){e.applyToGeometry(this,t),this._notifyUpdate()}setVerticesData(e,t,i=!1,r){i&&Array.isArray(t)&&(t=new Float32Array(t));let s=new L(this._engine,t,e,{updatable:i,postponeInternalCreation:this._meshes.length===0,stride:r,label:"Geometry_"+this.id+"_"+e});this.setVerticesBuffer(s)}removeVerticesData(e){this._vertexBuffers[e]&&(this._vertexBuffers[e].dispose(),delete this._vertexBuffers[e]),this._vertexArrayObjects&&this._disposeVertexArrayObjects()}setVerticesBuffer(e,t=null,i=!0){let r=e.getKind();this._vertexBuffers[r]&&i&&this._vertexBuffers[r].dispose(),e._buffer&&e._ownsBuffer&&e._buffer._increaseReferences(),this._vertexBuffers[r]=e;let s=this._meshes,a=s.length;if(r===L.PositionKind){this._totalVertices=t!=null?t:e._maxVerticesCount,this._updateExtend(this.useBoundingInfoFromGeometry&&this._boundingInfo?null:e.getFloatData(this._totalVertices)),this._resetPointsArrayCache();let o=this._extend&&this._extend.minimum||new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),l=this._extend&&this._extend.maximum||new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE);for(let c=0;c65535:e.is32Bits=r;for(let s of this._meshes)s._createGlobalSubMesh(!0),s.synchronizeInstances();this._notifyUpdate()}setIndices(e,t=null,i=!1,r=!1){this._indexBuffer&&this._engine._releaseBuffer(this._indexBuffer),this._indices=e,this._indexBufferIsUpdatable=i,this._meshes.length!==0&&this._indices&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,i,"Geometry_"+this.id+"_IndexBuffer")),t!=null&&(this._totalVertices=t);for(let s of this._meshes)s._createGlobalSubMesh(!r),s.synchronizeInstances();this._notifyUpdate()}getTotalIndices(){return this.isReady()?this._totalIndices!==void 0?this._totalIndices:this._indices.length:0}getIndices(e,t){if(!this.isReady())return null;let i=this._indices;return!t&&(!e||this._meshes.length===1)?i:i.slice()}getIndexBuffer(){return this.isReady()?this._indexBuffer:null}_releaseVertexArrayObject(e=null){!e||!this._vertexArrayObjects||this._vertexArrayObjects[e.key]&&(this._engine.releaseVertexArrayObject(this._vertexArrayObjects[e.key]),delete this._vertexArrayObjects[e.key])}releaseForMesh(e,t){let i=this._meshes,r=i.indexOf(e);r!==-1&&(i.splice(r,1),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject(),e._geometry=null,i.length===0&&t&&this.dispose())}applyToMesh(e){if(e._geometry===this)return;let t=e._geometry;t&&t.releaseForMesh(e),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject();let i=this._meshes;e._geometry=this,e._internalAbstractMeshDataInfo._positions=null,this._scene.pushGeometry(this),i.push(e),this.isReady()?this._applyToMesh(e):this._boundingInfo&&e.setBoundingInfo(this._boundingInfo)}_updateExtend(e=null){if(this.useBoundingInfoFromGeometry&&this._boundingInfo)this._extend={minimum:this._boundingInfo.minimum.clone(),maximum:this._boundingInfo.maximum.clone()};else{if(!e&&(e=this.getVerticesData(L.PositionKind),!e))return;this._extend=Jx(e,0,this._totalVertices,this.boundingBias,3)}}_applyToMesh(e){for(let t in this._vertexBuffers){let i=this._vertexBuffers[t];i._buffer.getBuffer()||i.create(),t===L.PositionKind&&(this._extend||this._updateExtend(),e.buildBoundingInfo(this._extend.minimum,this._extend.maximum),e._createGlobalSubMesh(e.isUnIndexed),e._updateBoundingInfo())}!this._indexBuffer&&this._indices&&this._indices.length>0&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,this._updatable,"Geometry_"+this.id+"_IndexBuffer")),e._syncGeometryWithMorphTargetManager(),e.synchronizeInstances()}_notifyUpdate(e){this.onGeometryUpdated&&this.onGeometryUpdated(this,e),this._vertexArrayObjects&&this._disposeVertexArrayObjects();for(let t of this._meshes)t._markSubMeshesAsAttributesDirty()}load(e,t){if(this.delayLoadState!==2){if(this.isReady()){t&&t();return}this.delayLoadState=2,this._queueLoad(e,t)}}_queueLoad(e,t){this.delayLoadingFile&&(e.addPendingData(this),e._loadFile(this.delayLoadingFile,i=>{if(!this._delayLoadingFunction)return;this._delayLoadingFunction(JSON.parse(i),this),this.delayLoadState=1,this._delayInfo=[],e.removePendingData(this);let r=this._meshes,s=r.length;for(let a=0;a0){for(let r=0;r0){for(let r=0;r0){for(let r=0;r-1&&this._parentContainer.geometries.splice(r,1),this._parentContainer=null}this._isDisposed=!0}copy(e){let t=new n(e,this._scene),i=this.getIndices(void 0,!0);i&&t.setIndices(i);let r=!1,s;for(s in this._vertexBuffers){let a=this.getVertexBuffer(s),o=a.getData();if(!o)continue;let l=a.isUpdatable(),c=a.getSize(),{type:f,byteOffset:d,byteStride:h,normalized:u}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let g;o instanceof Array?g=o.length*4:g=o.byteLength,m=g/h}let _=GV(o,c,f,d,h,m,!0),p=new L(this._engine,_,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:u,takeBufferOwnership:!0,instanced:a.getIsInstanced()});t.setVerticesBuffer(p,m)}t._updatable=r,t.delayLoadState=this.delayLoadState,t.delayLoadingFile=this.delayLoadingFile,t._delayLoadingFunction=this._delayLoadingFunction;for(s in this._delayInfo)t._delayInfo=t._delayInfo||[],t._delayInfo.push(s);return t._boundingInfo=new An(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,ei&&ei.HasTags(this)&&(e.tags=ei.GetTags(this)),e}_toNumberArray(e){return Array.isArray(e)?e:Array.prototype.slice.call(e)}clearCachedData(){this._totalIndices=this._indices.length,this._indices=[],this._resetPointsArrayCache();for(let e in this._vertexBuffers)Object.prototype.hasOwnProperty.call(this._vertexBuffers,e)&&(this._vertexBuffers[e]._buffer._data=null)}serializeVerticeData(){let e=this.serialize();return this.isVerticesDataPresent(L.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(L.PositionKind)),this.isVertexBufferUpdatable(L.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(L.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(L.NormalKind)),this.isVertexBufferUpdatable(L.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(L.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(L.TangentKind)),this.isVertexBufferUpdatable(L.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(L.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(L.UVKind)),this.isVertexBufferUpdatable(L.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(L.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(L.UV2Kind)),this.isVertexBufferUpdatable(L.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(L.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(L.UV3Kind)),this.isVertexBufferUpdatable(L.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(L.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(L.UV4Kind)),this.isVertexBufferUpdatable(L.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(L.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(L.UV5Kind)),this.isVertexBufferUpdatable(L.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(L.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(L.UV6Kind)),this.isVertexBufferUpdatable(L.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(L.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(L.ColorKind)),this.isVertexBufferUpdatable(L.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(L.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(L.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(L.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(L.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(L.MatricesWeightsKind)),this.isVertexBufferUpdatable(L.MatricesWeightsKind)&&(e.matricesWeightsUpdatable=!0)),e.indices=this._toNumberArray(this.getIndices()),e}static ExtractFromMesh(e,t){let i=e._geometry;return i?i.copy(t):null}static RandomId(){return pe.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(L.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(L.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(L.TangentKind,o,!1)}if(a.uvsAttrDesc&&a.uvsAttrDesc.count>0){let o=new Float32Array(e,a.uvsAttrDesc.offset,a.uvsAttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs2AttrDesc.offset,a.uvs2AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs3AttrDesc.offset,a.uvs3AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs4AttrDesc.offset,a.uvs4AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs5AttrDesc.offset,a.uvs5AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs6AttrDesc.offset,a.uvs6AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.colorsAttrDesc.offset,a.colorsAttrDesc.count);t.setVerticesData(L.ColorKind,o,!1,a.colorsAttrDesc.stride)}if(a.matricesIndicesAttrDesc&&a.matricesIndicesAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesAttrDesc.offset,a.matricesIndicesAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(L.MatricesIndicesKind,l,!1)}if(a.matricesIndicesExtraAttrDesc&&a.matricesIndicesExtraAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesExtraAttrDesc.offset,a.matricesIndicesExtraAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(L.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(L.MatricesWeightsKind,o,!1)}if(a.indicesAttrDesc&&a.indicesAttrDesc.count>0){let o=new Int32Array(e,a.indicesAttrDesc.offset,a.indicesAttrDesc.count);t.setIndices(o,null)}if(a.subMeshesAttrDesc&&a.subMeshesAttrDesc.count>0){let o=new Int32Array(e,a.subMeshesAttrDesc.offset,a.subMeshesAttrDesc.count*5);t.subMeshes=[];for(let l=0;l>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(L.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(L.MatricesIndicesKind,e.matricesIndices,e.matricesIndices._updatable||e.matricesIndicesUpdatable);if(e.matricesIndicesExtra)if(e.matricesIndicesExtraExpanded||e.matricesIndicesExtra._isExpanded)delete e.matricesIndices._isExpanded,delete e.matricesIndicesExtraExpanded,t.setVerticesData(L.MatricesIndicesExtraKind,e.matricesIndicesExtra,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable);else{let a=[];for(let o=0;o>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(L.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(L.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesWeightsExtraKind,e.matricesWeightsExtra,e.matricesWeights._updatable),t.setIndices(e.indices,null)}if(e.subMeshes){t.subMeshes=[];for(let a=0;a-1){let d=t.getScene().getLastSkeletonById(e.skeletonId);if(!d)return;r=d.bones.length}else return;let s=t.getVerticesData(L.MatricesIndicesKind),a=t.getVerticesData(L.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(u=c-1),h>.001){let m=1/h;for(let _=0;_<4;_++)o[d+_]*=m;if(l)for(let _=0;_<4;_++)l[d+_]*=m}else u>=4?(l[d+u-4]=1-h,a[d+u-4]=r):(o[d+u]=1-h,s[d+u]=r)}t.setVerticesData(L.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,ei&&ei.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new An(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(L.UVKind),e.hasUVs2&&r._delayInfo.push(L.UV2Kind),e.hasUVs3&&r._delayInfo.push(L.UV3Kind),e.hasUVs4&&r._delayInfo.push(L.UV4Kind),e.hasUVs5&&r._delayInfo.push(L.UV5Kind),e.hasUVs6&&r._delayInfo.push(L.UV6Kind),e.hasColors&&r._delayInfo.push(L.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(L.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(L.MatricesWeightsKind),r._delayLoadingFunction=Me.ImportVertexData):Me.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var Zt,Vf=I(()=>{Wt();kt();Dr();mi();ke();_a();$i();Zt=class n extends Ei{get billboardMode(){return this._billboardMode}set billboardMode(e){this._billboardMode!==e&&(this._billboardMode=e,this._cache.useBillboardPosition=(this._billboardMode&n.BILLBOARDMODE_USE_POSITION)!==0)}get infiniteDistance(){return this._infiniteDistance}set infiniteDistance(e){this._infiniteDistance!==e&&(this._infiniteDistance=e)}constructor(e,t=null,i=!0){super(e,t,!1),this._forward=new b(0,0,1),this._up=new b(0,1,0),this._right=new b(1,0,0),this._position=b.Zero(),this._rotation=b.Zero(),this._rotationQuaternion=null,this._scaling=b.One(),this._transformToBoneReferal=null,this._isAbsoluteSynced=!1,this._billboardMode=n.BILLBOARDMODE_NONE,this.scalingDeterminant=1,this._infiniteDistance=!1,this.ignoreNonUniformScaling=!1,this.reIntegrateRotationIntoRotationQuaternion=!1,this._poseMatrix=null,this._localMatrix=Z.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=Ke.Identity(),this._pivotMatrix=Z.Identity(),this._postMultiplyPivotMatrix=!1,this._isWorldMatrixFrozen=!1,this._indexInSceneTransformNodesArray=-1,this.onAfterWorldMatrixUpdateObservable=new te,this._nonUniformScaling=!1,i&&this.getScene().addTransformNode(this)}getClassName(){return"TransformNode"}get position(){return this._position}set position(e){this._position=e,this._markAsDirtyInternal()}isUsingPivotMatrix(){return this._usePivotMatrix}isUsingPostMultiplyPivotMatrix(){return this._postMultiplyPivotMatrix}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._rotationQuaternion=null,this._markAsDirtyInternal()}get scaling(){return this._scaling}set scaling(e){this._scaling=e,this._markAsDirtyInternal()}get rotationQuaternion(){return this._rotationQuaternion}set rotationQuaternion(e){this._rotationQuaternion=e,e&&this._rotation.setAll(0),this._markAsDirtyInternal()}_markAsDirtyInternal(){this._isDirty||(this._isDirty=!0,this.customMarkAsDirty&&this.customMarkAsDirty())}get forward(){return b.TransformNormalFromFloatsToRef(0,0,this.getScene().useRightHandedSystem?-1:1,this.getWorldMatrix(),this._forward),this._forward.normalize()}get up(){return b.TransformNormalFromFloatsToRef(0,1,0,this.getWorldMatrix(),this._up),this._up.normalize()}get right(){return b.TransformNormalFromFloatsToRef(this.getScene().useRightHandedSystem?-1:1,0,0,this.getWorldMatrix(),this._right),this._right.normalize()}updatePoseMatrix(e){return this._poseMatrix?(this._poseMatrix.copyFrom(e),this):(this._poseMatrix=e.clone(),this)}getPoseMatrix(){return this._poseMatrix||(this._poseMatrix=Z.Identity()),this._poseMatrix}_isSynchronized(){let e=this._cache;return!(this._billboardMode!==e.billboardMode||this._billboardMode!==n.BILLBOARDMODE_NONE||e.pivotMatrixUpdated||this._infiniteDistance||this._position._isDirty||this._scaling._isDirty||this._rotationQuaternion&&this._rotationQuaternion._isDirty||this._rotation._isDirty)}_initCache(){super._initCache();let e=this._cache;e.localMatrixUpdated=!1,e.billboardMode=-1,e.infiniteDistance=!1,e.useBillboardPosition=!1}get absolutePosition(){return this.getAbsolutePosition()}get absoluteScaling(){return this._syncAbsoluteScalingAndRotation(),this._absoluteScaling}get absoluteRotationQuaternion(){return this._syncAbsoluteScalingAndRotation(),this._absoluteRotationQuaternion}setPreTransformMatrix(e){return this.setPivotMatrix(e,!1)}setPivotMatrix(e,t=!0){return this._pivotMatrix.copyFrom(e),this._usePivotMatrix=!this._pivotMatrix.isIdentity(),this._cache.pivotMatrixUpdated=!0,this._postMultiplyPivotMatrix=t,this._postMultiplyPivotMatrix&&(this._pivotMatrixInverse?this._pivotMatrix.invertToRef(this._pivotMatrixInverse):this._pivotMatrixInverse=Z.Invert(this._pivotMatrix)),this}getPivotMatrix(){return this._pivotMatrix}instantiateHierarchy(e=null,t,i){let r=this.clone("Clone of "+(this.name||this.id),e||this.parent,!0);r&&i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.instantiateHierarchy(r,t,i);return r}freezeWorldMatrix(e=null,t=!1){return e?t?(this._rotation.setAll(0),this._rotationQuaternion=this._rotationQuaternion||Ke.Identity(),e.decompose(this._scaling,this._rotationQuaternion,this._position),this.computeWorldMatrix(!0)):(this._worldMatrix=e,this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._afterComputeWorldMatrix()):(this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0)),this._isDirty=!1,this._isWorldMatrixFrozen=!0,this}unfreezeWorldMatrix(){return this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0),this}get isWorldMatrixFrozen(){return this._isWorldMatrixFrozen}getAbsolutePosition(){return this.computeWorldMatrix(),this._absolutePosition}setAbsolutePosition(e){if(!e)return this;let t,i,r;if(e.x===void 0){if(arguments.length<3)return this;t=arguments[0],i=arguments[1],r=arguments[2]}else t=e.x,i=e.y,r=e.z;if(this.parent){let s=$.Matrix[0];this.parent.getWorldMatrix().invertToRef(s),b.TransformCoordinatesFromFloatsToRef(t,i,r,s,this.position)}else this.position.x=t,this.position.y=i,this.position.z=r;return this._absolutePosition.copyFrom(e),this}setPositionWithLocalVector(e){return this.computeWorldMatrix(),this.position=b.TransformNormal(e,this._localMatrix),this}getPositionExpressedInLocalSpace(){this.computeWorldMatrix();let e=$.Matrix[0];return this._localMatrix.invertToRef(e),b.TransformNormal(this.position,e)}locallyTranslate(e){return this.computeWorldMatrix(!0),this.position=b.TransformCoordinates(e,this._localMatrix),this}lookAt(e,t=0,i=0,r=0,s=0){let a=n._LookAtVectorCache,o=s===0?this.position:this.getAbsolutePosition();if(e.subtractToRef(o,a),this.setDirection(a,t,i,r),s===1&&this.parent)if(this.rotationQuaternion){let l=$.Matrix[0];this.rotationQuaternion.toRotationMatrix(l);let c=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(c),c.invert(),l.multiplyToRef(c,l),this.rotationQuaternion.fromRotationMatrix(l)}else{let l=$.Quaternion[0];Ke.FromEulerVectorToRef(this.rotation,l);let c=$.Matrix[0];l.toRotationMatrix(c);let f=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(f),f.invert(),c.multiplyToRef(f,c),l.fromRotationMatrix(c),l.toEulerAnglesToRef(this.rotation)}return this}getDirection(e){let t=b.Zero();return this.getDirectionToRef(e,t),t}getDirectionToRef(e,t){return b.TransformNormalToRef(e,this.getWorldMatrix(),t),this}setDirection(e,t=0,i=0,r=0){let s=-Math.atan2(e.z,e.x)+Math.PI/2,a=Math.sqrt(e.x*e.x+e.z*e.z),o=-Math.atan2(e.y,a);return this.rotationQuaternion?Ke.RotationYawPitchRollToRef(s+t,o+i,r,this.rotationQuaternion):(this.rotation.x=o+i,this.rotation.y=s+t,this.rotation.z=r),this}setPivotPoint(e,t=0){this.getScene().getRenderId()==0&&this.computeWorldMatrix(!0);let i=this.getWorldMatrix();if(t==1){let r=$.Matrix[0];i.invertToRef(r),e=b.TransformCoordinates(e,r)}return this.setPivotMatrix(Z.Translation(-e.x,-e.y,-e.z),!0)}getPivotPoint(){let e=b.Zero();return this.getPivotPointToRef(e),e}getPivotPointToRef(e){return e.x=-this._pivotMatrix.m[12],e.y=-this._pivotMatrix.m[13],e.z=-this._pivotMatrix.m[14],this}getAbsolutePivotPoint(){let e=b.Zero();return this.getAbsolutePivotPointToRef(e),e}getAbsolutePivotPointToRef(e){return this.getPivotPointToRef(e),b.TransformCoordinatesToRef(e,this.getWorldMatrix(),e),this}markAsDirty(e){if(this._isDirty)return this;if(this._children)for(let t of this._children)t.markAsDirty(e);return super.markAsDirty(e)}setParent(e,t=!1,i=!1){if(!e&&!this.parent)return this;let r=$.Quaternion[0],s=$.Vector3[0],a=$.Vector3[1],o=$.Matrix[1];Z.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,Ke.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),Z.ComposeToRef(this.scaling,c,this.position,l),this.parent&&l.multiplyToRef(this.parent.computeWorldMatrix(!0),l),e&&(e.computeWorldMatrix(!0).invertToRef(o),l.multiplyToRef(o,l)),l.decompose(a,r,s,t?this:void 0),this.rotationQuaternion?this.rotationQuaternion.copyFrom(r):r.toEulerAnglesToRef(this.rotation),this.scaling.copyFrom(a),this.position.copyFrom(s),this.parent=e,i&&this.setPivotMatrix(Z.Identity()),this}addChild(e,t=!1){return e.setParent(this,t),this}removeChild(e,t=!1){return e.parent!==this?this:(e.setParent(null,t),this)}get nonUniformScaling(){return this._nonUniformScaling}_updateNonUniformScalingState(e){return this._nonUniformScaling===e?!1:(this._nonUniformScaling=e,!0)}attachToBone(e,t){return this._currentParentWhenAttachingToBone=this.parent,this._transformToBoneReferal=t,this.parent=e,e.getSkeleton().prepare(!0),e.getFinalMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this}detachFromBone(e=!1){return this.parent?(this.parent.getWorldMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this._transformToBoneReferal=null,e?this.parent=this._currentParentWhenAttachingToBone:this.parent=null,this):(e&&(this.parent=this._currentParentWhenAttachingToBone),this)}rotate(e,t,i){e.normalize(),this.rotationQuaternion||(this.rotationQuaternion=this.rotation.toQuaternion(),this.rotation.setAll(0));let r;if(!i||i===0)r=Ke.RotationAxisToRef(e,t,n._RotationAxisCache),this.rotationQuaternion.multiplyToRef(r,this.rotationQuaternion);else{if(this.parent){let s=this.parent.getWorldMatrix(),a=$.Matrix[0];s.invertToRef(a),e=b.TransformNormal(e,a),s.determinant()<0&&(t*=-1)}r=Ke.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=Ke.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z),this.rotation.setAll(0));let r=$.Vector3[0],s=$.Vector3[1],a=$.Vector3[2],o=$.Quaternion[0],l=$.Matrix[0],c=$.Matrix[1],f=$.Matrix[2],d=$.Matrix[3];return e.subtractToRef(this.position,r),Z.TranslationToRef(r.x,r.y,r.z,l),Z.TranslationToRef(-r.x,-r.y,-r.z,c),Z.RotationAxisToRef(t,i,f),c.multiplyToRef(f,d),d.multiplyToRef(l,d),d.decompose(s,o,a),this.position.addInPlace(a),o.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion),this}translate(e,t,i){let r=e.scale(t);if(!i||i===0){let s=this.getPositionExpressedInLocalSpace().add(r);this.setPositionWithLocalVector(s)}else this.setAbsolutePosition(this.getAbsolutePosition().add(r));return this}addRotation(e,t,i){let r;this.rotationQuaternion?r=this.rotationQuaternion:(r=$.Quaternion[1],Ke.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return Ke.RotationYawPitchRollToRef(t,e,i,s),r.multiplyInPlace(s),this.rotationQuaternion||r.toEulerAnglesToRef(this.rotation),this}_getEffectiveParent(){return this.parent}isWorldMatrixCameraDependent(){return this._infiniteDistance&&!this.parent||this._billboardMode!==n.BILLBOARDMODE_NONE}computeWorldMatrix(e=!1,t=null){if(this._isWorldMatrixFrozen&&!this._isDirty)return this._worldMatrix;let i=this.getScene().getRenderId();if(!this._isDirty&&!e&&(this._currentRenderId===i||this.isSynchronized()))return this._currentRenderId=i,this._worldMatrix;t=t||this.getScene().activeCamera,this._updateCache();let r=this._cache;r.pivotMatrixUpdated=!1,r.billboardMode=this.billboardMode,r.infiniteDistance=this.infiniteDistance,r.parent=this._parentNode,this._currentRenderId=i,this._childUpdateId+=1,this._isDirty=!1,this._position._isDirty=!1,this._rotation._isDirty=!1,this._scaling._isDirty=!1;let s=this._getEffectiveParent(),a=n._TmpScaling,o=this._position;if(this._infiniteDistance&&!this.parent&&t){let f=t.getWorldMatrix().m;o=n._TmpTranslation,o.copyFromFloats(this._position.x+f[12],this._position.y+f[13],this._position.z+f[14])}a.copyFromFloats(this._scaling.x*this.scalingDeterminant,this._scaling.y*this.scalingDeterminant,this._scaling.z*this.scalingDeterminant);let l;if(this._rotationQuaternion?(this._rotationQuaternion._isDirty=!1,l=this._rotationQuaternion,this.reIntegrateRotationIntoRotationQuaternion&&this.rotation.lengthSquared()&&(this._rotationQuaternion.multiplyInPlace(Ke.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,Ke.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];Z.ScalingToRef(a.x,a.y,a.z,c);let f=$.Matrix[0];l.toRotationMatrix(f),this._pivotMatrix.multiplyToRef(c,$.Matrix[4]),$.Matrix[4].multiplyToRef(f,this._localMatrix),this._postMultiplyPivotMatrix&&this._localMatrix.multiplyToRef(this._pivotMatrixInverse,this._localMatrix),this._localMatrix.addTranslationFromFloats(o.x,o.y,o.z)}else Z.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let h=this.parent;h.getSkeleton().prepare(),h.getFinalMatrix().multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),$.Matrix[7])}else $.Matrix[7].copyFrom(s.getWorldMatrix());let c=$.Vector3[5],f=$.Vector3[6],d=$.Quaternion[0];$.Matrix[7].decompose(f,d,c),Z.ScalingToRef(f.x,f.y,f.z,$.Matrix[7]),$.Matrix[7].setTranslation(c),n.BillboardUseParentOrientation&&(this._position.applyRotationQuaternionToRef(d,c),this._localMatrix.setTranslation(c)),this._localMatrix.multiplyToRef($.Matrix[7],this._worldMatrix)}else if(this._transformToBoneReferal){let c=this.parent;c.getSkeleton().prepare(),this._localMatrix.multiplyToRef(c.getFinalMatrix(),$.Matrix[6]),$.Matrix[6].multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),this._worldMatrix)}else this._localMatrix.multiplyToRef(s.getWorldMatrix(),this._worldMatrix);this._markSyncedWithParent()}else this._worldMatrix.copyFrom(this._localMatrix);if(t&&this.billboardMode)if(r.useBillboardPosition){let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c);let f=t.globalPosition;this._worldMatrix.invertToRef($.Matrix[1]);let d=$.Vector3[1];b.TransformCoordinatesToRef(f,$.Matrix[1],d),d.normalize();let h=-Math.atan2(d.z,d.x)+Math.PI/2,u=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,u);if(Ke.RotationYawPitchRollToRef(h,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let _=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(_),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(_.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(_.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(_.z=0),Z.RotationYawPitchRollToRef(_.y,_.x,_.z,$.Matrix[0])}else Z.FromQuaternionToRef($.Quaternion[0],$.Matrix[0]);this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}else{let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c),$.Matrix[1].copyFrom(t.getViewMatrix());let f=this.getScene().useRightHandedSystem;if(f&&$.Matrix[1].multiplyToRef(n._TmpRHRestore,$.Matrix[1]),$.Matrix[1].setTranslationFromFloats(0,0,0),$.Matrix[1].invertToRef($.Matrix[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){$.Matrix[0].decompose(void 0,$.Quaternion[0],void 0);let d=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(d),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(d.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(d.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(d.z=0),f&&(d.y+=Math.PI),Z.RotationYawPitchRollToRef(d.y,d.x,d.z,$.Matrix[0])}this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}return this.ignoreNonUniformScaling?this._updateNonUniformScalingState(!1):this._scaling.isNonUniformWithinEpsilon(1e-6)?this._updateNonUniformScalingState(!0):s&&s._nonUniformScaling?this._updateNonUniformScalingState(s._nonUniformScaling):this._updateNonUniformScalingState(!1),this._afterComputeWorldMatrix(),this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._isAbsoluteSynced=!1,this.onAfterWorldMatrixUpdateObservable.notifyObservers(this),this._poseMatrix||(this._poseMatrix=Z.Invert(this._worldMatrix)),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix}resetLocalMatrix(e=!0){if(this.computeWorldMatrix(),e){let t=this.getChildren();for(let i=0;inew n(e,this.getScene()),this);if(r.name=e,r.id=e,t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;anew n(e.name,t),e,t,i);if(e.localMatrix?r.setPreTransformMatrix(Z.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(Z.FromArray(e.pivotMatrix)),r.setEnabled(e.isEnabled),r._waitingParsedUniqueId=e.uniqueId,e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.freezeWorldMatrix&&(r._waitingFreezeWorldMatrix=e.freezeWorldMatrix),e.animations){for(let s=0;s(!t||t(r))&&r instanceof n),i}dispose(e,t=!1){if(this.getScene().stopAnimation(this),this.getScene().removeTransformNode(this),this._parentContainer){let i=this._parentContainer.transformNodes.indexOf(this);i>-1&&this._parentContainer.transformNodes.splice(i,1),this._parentContainer=null}if(this.onAfterWorldMatrixUpdateObservable.clear(),e){let i=this.getChildTransformNodes(!0);for(let r of i)r.parent=null,r.computeWorldMatrix(!0)}super.dispose(e,t)}normalizeToUnitCube(e=!0,t=!1,i){let r=null,s=null;t&&(this.rotationQuaternion?(s=this.rotationQuaternion.clone(),this.rotationQuaternion.copyFromFloats(0,0,0,1)):this.rotation&&(r=this.rotation.clone(),this.rotation.copyFromFloats(0,0,0)));let a=this.getHierarchyBoundingVectors(e,i),o=a.max.subtract(a.min),l=Math.max(o.x,o.y,o.z);if(l===0)return this;let c=1/l;return this.scaling.scaleInPlace(c),t&&(this.rotationQuaternion&&s?this.rotationQuaternion.copyFrom(s):this.rotation&&r&&this.rotation.copyFrom(r)),this}_syncAbsoluteScalingAndRotation(){this._isAbsoluteSynced||(this._worldMatrix.decompose(this._absoluteScaling,this._absoluteRotationQuaternion),this._isAbsoluteSynced=!0)}};Zt.BILLBOARDMODE_NONE=0;Zt.BILLBOARDMODE_X=1;Zt.BILLBOARDMODE_Y=2;Zt.BILLBOARDMODE_Z=4;Zt.BILLBOARDMODE_ALL=7;Zt.BILLBOARDMODE_USE_POSITION=128;Zt.BillboardUseParentOrientation=!1;Zt._TmpRotation=Ke.Zero();Zt._TmpScaling=b.Zero();Zt._TmpTranslation=b.Zero();Zt._TmpRHRestore=Z.Scaling(1,1,-1);Zt._LookAtVectorCache=new b(0,0,0);Zt._RotationAxisCache=new Ke;P([Qr("position")],Zt.prototype,"_position",void 0);P([Qr("rotation")],Zt.prototype,"_rotation",void 0);P([NV("rotationQuaternion")],Zt.prototype,"_rotationQuaternion",void 0);P([Qr("scaling")],Zt.prototype,"_scaling",void 0);P([F("billboardMode")],Zt.prototype,"_billboardMode",void 0);P([F()],Zt.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],Zt.prototype,"_infiniteDistance",void 0);P([F()],Zt.prototype,"ignoreNonUniformScaling",void 0);P([F()],Zt.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var rR,_H=I(()=>{ke();rR=class{constructor(){this._checkCollisions=!1,this._collisionMask=-1,this._collisionGroup=-1,this._surroundingMeshes=null,this._collider=null,this._oldPositionForCollisions=new b(0,0,0),this._diffPositionForCollisions=new b(0,0,0),this._collisionResponse=!0}}});function gH(n){return Math.floor(n/8)}function vH(n){return 1<{nR=class{constructor(e){this.size=e,this._byteArray=new Uint8Array(Math.ceil(this.size/8))}get(e){if(e>=this.size)throw new RangeError("Bit index out of range");let t=gH(e),i=vH(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=gH(e),r=vH(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var SH={};Fe(SH,{OptimizeIndices:()=>Ufe});function Ufe(n){let e=[],t=n.length/3;for(let l=0;l{let c=[l];for(;c.length>0;){let f=c.pop();if(!r.get(f)){r.set(f,!0),s.push(e[f]);for(let d of e[f]){let h=i.get(d);if(!h)return;for(let u of h)r.get(u)||c.push(u)}}}};for(let l=0;l{EH()});function Vfe(n,e,t){let i;switch(e){case L.PositionKind:i=r=>r.getPositions();break;case L.NormalKind:i=r=>r.getNormals();break;case L.TangentKind:i=r=>r.getTangents();break;case L.UVKind:i=r=>r.getUVs();break;case L.UV2Kind:i=r=>r.getUV2s();break;case L.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(i[h+u]*16),m,c),l.addToSelf(c));if(s&&a)for(u=0;u<4;u++)m=a[h+u],m>0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(s[h+u]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var wD,FD,yr,$m=I(()=>{Wt();mi();ke();Zi();Tr();Vf();jg();qm();Of();_H();Sn();eR();zt();Kn();Mm();$i();kt();zr();wD=class{constructor(){this.facetNb=0,this.partitioningSubdivisions=10,this.partitioningBBoxRatio=1.01,this.facetDataEnabled=!1,this.facetParameters={},this.bbSize=b.Zero(),this.subDiv={max:1,X:1,Y:1,Z:1},this.facetDepthSort=!1,this.facetDepthSortEnabled=!1}},FD=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new wD,this._visibility=1,this._skeleton=null,this._layerMask=268435455,this._computeBonesUsingShaders=!0,this._isActive=!1,this._onlyForInstances=!1,this._isActiveIntermediate=!1,this._onlyForInstancesIntermediate=!1,this._actAsRegularMesh=!1,this._currentLOD=new Map,this._collisionRetryCount=3,this._morphTargetManager=null,this._renderingGroupId=0,this._bakedVertexAnimationManager=null,this._material=null,this._positions=null,this._pointerOverDisableMeshTesting=!1,this._meshCollisionData=new rR,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},yr=class n extends Zt{static get BILLBOARDMODE_NONE(){return Zt.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return Zt.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return Zt.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return Zt.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return Zt.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return Zt.BILLBOARDMODE_USE_POSITION}get facetNb(){return this._internalAbstractMeshDataInfo._facetData.facetNb}get partitioningSubdivisions(){return this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions}set partitioningSubdivisions(e){this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions=e}get partitioningBBoxRatio(){return this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio}set partitioningBBoxRatio(e){this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio=e}get mustDepthSortFacets(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSort}set mustDepthSortFacets(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSort=e}get facetDepthSortFrom(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom}set facetDepthSortFrom(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom=e}get collisionRetryCount(){return this._internalAbstractMeshDataInfo._collisionRetryCount}set collisionRetryCount(e){this._internalAbstractMeshDataInfo._collisionRetryCount=e}get isFacetDataEnabled(){return this._internalAbstractMeshDataInfo._facetData.facetDataEnabled}get morphTargetManager(){return this._internalAbstractMeshDataInfo._morphTargetManager}set morphTargetManager(e){this._internalAbstractMeshDataInfo._morphTargetManager!==e&&(this._internalAbstractMeshDataInfo._morphTargetManager=e,this._syncGeometryWithMorphTargetManager())}get bakedVertexAnimationManager(){return this._internalAbstractMeshDataInfo._bakedVertexAnimationManager}set bakedVertexAnimationManager(e){this._internalAbstractMeshDataInfo._bakedVertexAnimationManager!==e&&(this._internalAbstractMeshDataInfo._bakedVertexAnimationManager=e,this._markSubMeshesAsAttributesDirty())}_syncGeometryWithMorphTargetManager(){}_updateNonUniformScalingState(e){return super._updateNonUniformScalingState(e)?(this._markSubMeshesAsMiscDirty(),!0):!1}get rawBoundingInfo(){return this._internalAbstractMeshDataInfo._rawBoundingInfo}set rawBoundingInfo(e){this._internalAbstractMeshDataInfo._rawBoundingInfo=e}set onCollide(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver&&this.onCollideObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver=this.onCollideObservable.add(e)}set onCollisionPositionChange(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver&&this.onCollisionPositionChangeObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver=this.onCollisionPositionChangeObservable.add(e)}get visibility(){return this._internalAbstractMeshDataInfo._visibility}set visibility(e){if(this._internalAbstractMeshDataInfo._visibility===e)return;let t=this._internalAbstractMeshDataInfo._visibility;this._internalAbstractMeshDataInfo._visibility=e,(t===1&&e!==1||t!==1&&e===1)&&this._markSubMeshesAsDirty(i=>{i.markAsMiscDirty(),i.markAsPrePassDirty()})}get pointerOverDisableMeshTesting(){return this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting}set pointerOverDisableMeshTesting(e){this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting=e}get renderingGroupId(){return this._internalAbstractMeshDataInfo._renderingGroupId}set renderingGroupId(e){this._internalAbstractMeshDataInfo._renderingGroupId=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){this._setMaterial(e)}_setMaterial(e){this._internalAbstractMeshDataInfo._material!==e&&(this._internalAbstractMeshDataInfo._material&&this._internalAbstractMeshDataInfo._material.meshMap&&(this._internalAbstractMeshDataInfo._material.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._material=e,e&&e.meshMap&&(e.meshMap[this.uniqueId]=this),this.onMaterialChangedObservable.hasObservers()&&this.onMaterialChangedObservable.notifyObservers(this),this.subMeshes&&(this.resetDrawCache(void 0,e==null),this._unBindEffect()))}getMaterialForRenderPass(e){var t;return(t=this._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:t[e]}setMaterialForRenderPass(e,t){var r;this.resetDrawCache(e),this._internalAbstractMeshDataInfo._materialForRenderPass||(this._internalAbstractMeshDataInfo._materialForRenderPass=[]);let i=this._internalAbstractMeshDataInfo._materialForRenderPass[e];(r=i==null?void 0:i.meshMap)!=null&&r[this.uniqueId]&&(i.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._materialForRenderPass[e]=t,t&&t.meshMap&&(t.meshMap[this.uniqueId]=this)}get receiveShadows(){return this._internalAbstractMeshDataInfo._receiveShadows}set receiveShadows(e){this._internalAbstractMeshDataInfo._receiveShadows!==e&&(this._internalAbstractMeshDataInfo._receiveShadows=e,this._markSubMeshesAsLightDirty())}get hasVertexAlpha(){return this._internalAbstractMeshDataInfo._hasVertexAlpha}set hasVertexAlpha(e){this._internalAbstractMeshDataInfo._hasVertexAlpha!==e&&(this._internalAbstractMeshDataInfo._hasVertexAlpha=e,this._markSubMeshesAsAttributesDirty(),this._markSubMeshesAsMiscDirty())}get useVertexColors(){return this._internalAbstractMeshDataInfo._useVertexColors}set useVertexColors(e){this._internalAbstractMeshDataInfo._useVertexColors!==e&&(this._internalAbstractMeshDataInfo._useVertexColors=e,this._markSubMeshesAsAttributesDirty())}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get numBoneInfluencers(){return this._internalAbstractMeshDataInfo._numBoneInfluencers}set numBoneInfluencers(e){this._internalAbstractMeshDataInfo._numBoneInfluencers!==e&&(this._internalAbstractMeshDataInfo._numBoneInfluencers=e,this._markSubMeshesAsAttributesDirty())}get applyFog(){return this._internalAbstractMeshDataInfo._applyFog}set applyFog(e){this._internalAbstractMeshDataInfo._applyFog!==e&&(this._internalAbstractMeshDataInfo._applyFog=e,this._markSubMeshesAsMiscDirty())}get enableDistantPicking(){return this._internalAbstractMeshDataInfo._enableDistantPicking}set enableDistantPicking(e){this._internalAbstractMeshDataInfo._enableDistantPicking=e}get layerMask(){return this._internalAbstractMeshDataInfo._layerMask}set layerMask(e){e!==this._internalAbstractMeshDataInfo._layerMask&&(this._internalAbstractMeshDataInfo._layerMask=e,this._resyncLightSources())}get collisionMask(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask}set collisionMask(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask=isNaN(e)?-1:e}get collisionResponse(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse}set collisionResponse(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse=e}get collisionGroup(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup}set collisionGroup(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup=isNaN(e)?-1:e}get surroundingMeshes(){return this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes}set surroundingMeshes(e){this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes=e}get lightSources(){return this._lightSources}set skeleton(e){let t=this._internalAbstractMeshDataInfo._skeleton;t&&t.needInitialSkinMatrix&&t._unregisterMeshWithPoseMatrix(this),e&&e.needInitialSkinMatrix&&e._registerMeshWithPoseMatrix(this),this._internalAbstractMeshDataInfo._skeleton=e,this._internalAbstractMeshDataInfo._skeleton||(this._bonesTransformMatrices=null),this._markSubMeshesAsAttributesDirty()}get skeleton(){return this._internalAbstractMeshDataInfo._skeleton}constructor(e,t=null){switch(super(e,t,!1),this._internalAbstractMeshDataInfo=new FD,this._waitingMaterialId=null,this._waitingMorphTargetManagerId=null,this._waitingSkeletonId=null,this._waitingSkeletonUniqueId=null,this.cullingStrategy=n.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY,this.onCollideObservable=new te,this.onCollisionPositionChangeObservable=new te,this.onMaterialChangedObservable=new te,this.definedFacingForward=!0,this._occlusionQuery=null,this._renderingGroup=null,this.alphaIndex=Number.MAX_VALUE,this.isPickable=n.DefaultIsPickable,this.isNearPickable=!1,this.isNearGrabbable=!1,this.showSubMeshesBoundingBox=!1,this.isBlocker=!1,this.enablePointerMoveEvents=!1,this.outlineColor=Ee.Red(),this.outlineWidth=.02,this.overlayColor=Ee.Red(),this.overlayAlpha=.5,this.useOctreeForRenderingSelection=!0,this.useOctreeForPicking=!0,this.useOctreeForCollisions=!0,this.alwaysSelectAsActiveMesh=!1,this.doNotSyncBoundingInfo=!1,this.actionManager=null,this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.edgesWidth=1,this.edgesColor=new ft(1,0,0,1),this._edgesRenderer=null,this._masterMesh=null,this._boundingInfo=null,this._boundingInfoIsDirty=!0,this._renderId=0,this._intersectionsInProgress=new Array,this._unIndexed=!1,this._lightSources=new Array,this._waitingData={lods:null,actions:null,freezeWorldMatrix:null},this._bonesTransformMatrices=null,this._transformMatrixTexture=null,this.onRebuildObservable=new te,this._onCollisionPositionChange=(i,r,s=null)=>{r.subtractToRef(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions.length()>Re.CollisionsEpsilon&&this.position.addInPlace(this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),s&&this.onCollideObservable.notifyObservers(s),this.onCollisionPositionChangeObservable.notifyObservers(this.position)},t=this.getScene(),this.layerMask=t.defaultRenderableLayerMask,t.addMesh(this),this._resyncLightSources(),this._uniformBuffer=new Sr(this.getScene().getEngine(),void 0,void 0,e,!this.getScene().getEngine().isWebGPU),this._buildUniformLayout(),t.performancePriority){case 2:this.doNotSyncBoundingInfo=!0;case 1:this.alwaysSelectAsActiveMesh=!0,this.isPickable=!1;break}}_buildUniformLayout(){this._uniformBuffer.addUniform("world",16),this._uniformBuffer.addUniform("visibility",1),this._uniformBuffer.create()}transferToEffect(e){let t=this._uniformBuffer;t.updateMatrix("world",e),t.updateFloat("visibility",this._internalAbstractMeshDataInfo._visibility),t.update()}getMeshUniformBuffer(){return this._uniformBuffer}getClassName(){return"AbstractMesh"}toString(e){let t="Name: "+this.name+", isInstance: "+(this.getClassName()==="InstancedMesh"?"YES":"NO");t+=", # of submeshes: "+(this.subMeshes?this.subMeshes.length:0);let i=this._internalAbstractMeshDataInfo._skeleton;return i&&(t+=", skeleton: "+i.name),e&&(t+=", billboard mode: "+["NONE","X","Y",null,"Z",null,null,"ALL"][this.billboardMode],t+=", freeze wrld mat: "+(this._isWorldMatrixFrozen||this._waitingData.freezeWorldMatrix?"YES":"NO")),t}_getEffectiveParent(){return this._masterMesh&&this.billboardMode!==Zt.BILLBOARDMODE_NONE?this._masterMesh:super._getEffectiveParent()}_getActionManagerForTrigger(e,t=!0){if(this.actionManager&&(t||this.actionManager.isRecursive))if(e){if(this.actionManager.hasSpecificTrigger(e))return this.actionManager}else return this.actionManager;return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_releaseRenderPassId(e){}_rebuild(e=!1){if(this.onRebuildObservable.notifyObservers(this),this._occlusionQuery!==null&&(this._occlusionQuery=null),!!this.subMeshes){for(let t of this.subMeshes)t._rebuild();this.resetDrawCache()}}_resyncLightSources(){this._lightSources.length=0;for(let e of this.getScene().lights)e.isEnabled()&&e.canAffectMesh(this)&&this._lightSources.push(e);this._markSubMeshesAsLightDirty()}_resyncLightSource(e){let t=e.isEnabled()&&e.canAffectMesh(this),i=this._lightSources.indexOf(e),r=!1;if(i===-1){if(!t)return;this._lightSources.push(e)}else{if(t)return;r=!0,this._lightSources.splice(i,1)}this._markSubMeshesAsLightDirty(r)}_unBindEffect(){for(let e of this.subMeshes)e.setEffect(null)}_removeLightSource(e,t){let i=this._lightSources.indexOf(e);i!==-1&&(this._lightSources.splice(i,1),this._markSubMeshesAsLightDirty(t))}_markSubMeshesAsDirty(e){if(this.subMeshes)for(let t of this.subMeshes)for(let i=0;it.markAsLightDirty(e))}_markSubMeshesAsAttributesDirty(){this._markSubMeshesAsDirty(e=>e.markAsAttributesDirty())}_markSubMeshesAsMiscDirty(){this._markSubMeshesAsDirty(e=>e.markAsMiscDirty())}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,super.markAsDirty(e),this._isDirty=!0,this}resetDrawCache(e,t=!1){if(this.subMeshes)for(let i of this.subMeshes)i.resetDrawCache(e,t)}get isBlocked(){return!1}getLOD(e){return this}getTotalVertices(){return 0}getTotalIndices(){return 0}getIndices(){return null}getVerticesData(e){return null}setVerticesData(e,t,i,r){return this}updateVerticesData(e,t,i,r){return this}setIndices(e,t){return this}isVerticesDataPresent(e){return!1}getBoundingInfo(){return this._masterMesh?this._masterMesh.getBoundingInfo():(this._boundingInfoIsDirty&&(this._boundingInfoIsDirty=!1,this._updateBoundingInfo()),this._boundingInfo)}getRawBoundingInfo(){var e;return(e=this.rawBoundingInfo)!=null?e:this.getBoundingInfo()}setBoundingInfo(e){return this._boundingInfo=e,this}get hasBoundingInfo(){return this._boundingInfo!==null}buildBoundingInfo(e,t,i){return this._boundingInfo=new An(e,t,i),this._boundingInfo}normalizeToUnitCube(e=!0,t=!1,i){return super.normalizeToUnitCube(e,t,i)}get useBones(){return this.skeleton&&this.getScene().skeletonsEnabled&&this.isVerticesDataPresent(L.MatricesIndicesKind)&&this.isVerticesDataPresent(L.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===Zt.BILLBOARDMODE_NONE?this._masterMesh.getWorldMatrix():super.getWorldMatrix()}_getWorldMatrixDeterminant(){return this._masterMesh?this._masterMesh._getWorldMatrixDeterminant():super._getWorldMatrixDeterminant()}get isAnInstance(){return!1}get hasInstances(){return!1}get hasThinInstances(){return!1}movePOV(e,t,i){return this.position.addInPlace(this.calcMovePOV(e,t,i)),this}calcMovePOV(e,t,i){let r=new Z;(this.rotationQuaternion?this.rotationQuaternion:Ke.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z)).toRotationMatrix(r);let a=b.Zero(),o=this.definedFacingForward?-1:1;return b.TransformCoordinatesFromFloatsToRef(e*o,t,i*o,r,a),a}rotatePOV(e,t,i){return this.rotation.addInPlace(this.calcRotatePOV(e,t,i)),this}calcRotatePOV(e,t,i){let r=this.definedFacingForward?1:-1;return new b(e*r,t,i*r)}_refreshBoundingInfo(e,t){if(e){let i=Jx(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new An(i.minimum,i.maximum)}if(this.subMeshes)for(let i=0;i{if(r){let o=r._vertexData||(r._vertexData={});return o[a]||this.copyVerticesData(a,o),o[a]}return this.getVerticesData(a)};if(t||(t=s(i)),!t)return null;if(r?(r._outputData?r._outputData.set(t):r._outputData=new Float32Array(t),t=r._outputData):(e.applyMorph&&this.morphTargetManager||e.applySkeleton&&this.skeleton)&&(t=t.slice()),e.applyMorph&&this.morphTargetManager&&Vfe(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(L.MatricesIndicesKind),o=s(L.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(L.MatricesIndicesExtraKind):null,f=l?s(L.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===L.PositionKind){let a=this._internalAbstractMeshDataInfo._positions||[],o=a.length;if(a.length=t.length/3,o1||!r.IsGlobal)&&r.updateBoundingInfo(e)}return this}_afterComputeWorldMatrix(){this.doNotSyncBoundingInfo||(this._boundingInfoIsDirty=!0)}isInFrustum(e){return this.getBoundingInfo().isInFrustum(e,this.cullingStrategy)}isCompletelyInFrustum(e){return this.getBoundingInfo().isCompletelyInFrustum(e)}intersectsMesh(e,t=!1,i){let r=this.getBoundingInfo(),s=e.getBoundingInfo();if(r.intersects(s,t))return!0;if(i){for(let a of this.getChildMeshes())if(a.intersectsMesh(e,t,!0))return!0}return!1}intersectsPoint(e){return this.getBoundingInfo().intersectsPoint(e)}get checkCollisions(){return this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions}set checkCollisions(e){this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions=e}get collider(){return this._internalAbstractMeshDataInfo._meshCollisionData._collider}moveWithCollisions(e,t=!0){this.getAbsolutePosition().addToRef(this.ellipsoidOffset,this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions);let r=this.getScene().collisionCoordinator;return this._internalAbstractMeshDataInfo._meshCollisionData._collider||(this._internalAbstractMeshDataInfo._meshCollisionData._collider=r.createCollider()),this._internalAbstractMeshDataInfo._meshCollisionData._collider._radius=this.ellipsoid,r.getNewPosition(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,e,this._internalAbstractMeshDataInfo._meshCollisionData._collider,this.collisionRetryCount,this,this._onCollisionPositionChange,this.uniqueId,t),this}_collideForSubMesh(e,t,i){var r;if(this._generatePointsArray(),!this._positions)return this;if(!e._lastColliderWorldVertices||!e._lastColliderTransformMatrix.equals(t)){e._lastColliderTransformMatrix=t.clone(),e._lastColliderWorldVertices=[],e._trianglePlanes=[];let s=e.verticesStart,a=e.verticesStart+e.verticesCount;for(let o=s;o1&&!a._checkCollision(e)||this._collideForSubMesh(a,t,e)}return this}_shouldConvertRHS(){return!1}_checkCollision(e){if(!this.getBoundingInfo()._checkCollision(e))return this;let t=$.Matrix[0],i=$.Matrix[1];return Z.ScalingToRef(1/e._radius.x,1/e._radius.y,1/e._radius.z,t),this.worldMatrixFromCache.multiplyToRef(t,i),this._processCollisionsForSubMeshes(e,i),this}_generatePointsArray(){return!1}intersects(e,t,i,r=!1,s,a=!1){let o=new Ts,l=this.getClassName(),c=l==="InstancedLinesMesh"||l==="LinesMesh"||l==="GreasedLineMesh"?this.intersectionThreshold:0,f=this.getBoundingInfo();if(!this.subMeshes||!a&&(!e.intersectsSphere(f.boundingSphere,c)||!e.intersectsBox(f.boundingBox,c)))return o;if(r)return o.hit=!a,o.pickedMesh=a?null:this,o.distance=a?0:b.Distance(e.origin,f.boundingSphere.center),o.subMeshId=0,o;if(!this._generatePointsArray())return o;let d=null,h=this._scene.getIntersectingSubMeshCandidates(this,e),u=h.length,m=!1;for(let _=0;_1&&!a&&!p.canIntersects(e))continue;let g=p.intersects(e,this._positions,this.getIndices(),t,i);if(g&&(t||!d||g.distanceo!==this&&o.actionManager===this.actionManager)&&this.actionManager.dispose(),this.actionManager=null),this._internalAbstractMeshDataInfo._skeleton=null,this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null),i=0;i-1&&this._parentContainer.meshes.splice(o,1),this._parentContainer=null}if(t&&this.material&&(this.material.getClassName()==="MultiMaterial"?this.material.dispose(!1,!0,!0):this.material.dispose(!1,!0)),!e)for(i=0;i65535){l=!0;break}l?e.depthSortedIndices=new Uint32Array(i):e.depthSortedIndices=new Uint16Array(i)}if(e.facetDepthSortFunction=function(l,c){return c.sqDistance-l.sqDistance},!e.facetDepthSortFrom){let l=this.getScene().activeCamera;e.facetDepthSortFrom=l?l.position:b.Zero()}e.depthSortedFacets=[];for(let l=0;lFt?s.maximum.x-s.minimum.x:Ft,e.bbSize.y=s.maximum.y-s.minimum.y>Ft?s.maximum.y-s.minimum.y:Ft,e.bbSize.z=s.maximum.z-s.minimum.z>Ft?s.maximum.z-s.minimum.z:Ft;let a=e.bbSize.x>e.bbSize.y?e.bbSize.x:e.bbSize.y;if(a=a>e.bbSize.z?a:e.bbSize.z,e.subDiv.max=e.partitioningSubdivisions,e.subDiv.X=Math.floor(e.subDiv.max*e.bbSize.x/a),e.subDiv.Y=Math.floor(e.subDiv.max*e.bbSize.y/a),e.subDiv.Z=Math.floor(e.subDiv.max*e.bbSize.z/a),e.subDiv.X=e.subDiv.X<1?1:e.subDiv.X,e.subDiv.Y=e.subDiv.Y<1?1:e.subDiv.Y,e.subDiv.Z=e.subDiv.Z<1?1:e.subDiv.Z,e.facetParameters.facetNormals=this.getFacetLocalNormals(),e.facetParameters.facetPositions=this.getFacetLocalPositions(),e.facetParameters.facetPartitioning=this.getFacetLocalPartitioning(),e.facetParameters.bInfo=s,e.facetParameters.bbSize=e.bbSize,e.facetParameters.subDiv=e.subDiv,e.facetParameters.ratio=this.partitioningBBoxRatio,e.facetParameters.depthSort=e.facetDepthSort,e.facetDepthSort&&e.facetDepthSortEnabled&&(this.computeWorldMatrix(!0),this._worldMatrix.invertToRef(e.invertedMatrix),b.TransformCoordinatesToRef(e.facetDepthSortFrom,e.invertedMatrix,e.facetDepthSortOrigin),e.facetParameters.distanceTo=e.facetDepthSortOrigin),e.facetParameters.depthSortedFacets=e.depthSortedFacets,r&&Me.ComputeNormals(t,i,r,e.facetParameters),e.facetDepthSort&&e.facetDepthSortEnabled){e.depthSortedFacets.sort(e.facetDepthSortFunction);let l=e.depthSortedIndices.length/3|0;for(let c=0;cs.subDiv.max||o<0||o>s.subDiv.max||l<0||l>s.subDiv.max?null:s.facetPartitioning[a+s.subDiv.max*o+s.subDiv.max*s.subDiv.max*l]}getClosestFacetAtCoordinates(e,t,i,r,s=!1,a=!0){let o=this.getWorldMatrix(),l=$.Matrix[5];o.invertToRef(l);let c=$.Vector3[8];b.TransformCoordinatesFromFloatsToRef(e,t,i,l,c);let f=this.getClosestFacetAtLocalCoordinates(c.x,c.y,c.z,r,s,a);return r&&b.TransformCoordinatesFromFloatsToRef(r.x,r.y,r.z,o,r),f}getClosestFacetAtLocalCoordinates(e,t,i,r,s=!1,a=!0){let o=null,l,c,f,d,h,u,m,_,p=this.getFacetLocalPositions(),g=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let T=Number.MAX_VALUE,S,E,A,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=A.x*R.x+A.y*R.y+A.z*R.z,h=-(A.x*e+A.y*t+A.z*i-d)/(A.x*A.x+A.y*A.y+A.z*A.z),u=e+A.x*h,m=t+A.y*h,_=i+A.z*h,l=u-e,c=m-t,f=_-i,S=l*l+c*c+f*f,S(TH(),SH));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Hs.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?Ke.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw Qe("EdgesRenderer")}enableEdgesRendering(e,t,i){throw Qe("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};yr.OCCLUSION_TYPE_NONE=0;yr.OCCLUSION_TYPE_OPTIMISTIC=1;yr.OCCLUSION_TYPE_STRICT=2;yr.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;yr.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;yr.CULLINGSTRATEGY_STANDARD=0;yr.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;yr.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;yr.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;yr.DefaultIsPickable=!0;P([zs.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],yr,"_ApplySkeleton",null);Ut("BABYLON.AbstractMesh",yr)});var qn,AH=I(()=>{Wt();Dr();kt();qn=class{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=519,this.opStencilFail=7680,this.opDepthFail=7680,this.opStencilDepthPass=7681,this.backFunc=519,this.backOpStencilFail=7680,this.backOpDepthFail=7680,this.backOpStencilDepthPass=7681}get func(){return this._func}set func(e){this._func=e}get backFunc(){return this._backFunc}set backFunc(e){this._backFunc=e}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef=e}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask=e}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail=e}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail=e}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass=e}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail=e}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail=e}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass=e}get mask(){return this._mask}set mask(e){this._mask=e}get enabled(){return this._enabled}set enabled(e){this._enabled=e}getClassName(){return"MaterialStencilState"}copyTo(e){nt.Clone(()=>e,this)}serialize(){return nt.Serialize(this)}parse(e,t,i){nt.Parse(()=>this,e,t,i)}};P([F()],qn.prototype,"func",null);P([F()],qn.prototype,"backFunc",null);P([F()],qn.prototype,"funcRef",null);P([F()],qn.prototype,"funcMask",null);P([F()],qn.prototype,"opStencilFail",null);P([F()],qn.prototype,"opDepthFail",null);P([F()],qn.prototype,"opStencilDepthPass",null);P([F()],qn.prototype,"backOpStencilFail",null);P([F()],qn.prototype,"backOpDepthFail",null);P([F()],qn.prototype,"backOpStencilDepthPass",null);P([F()],qn.prototype,"mask",null);P([F()],qn.prototype,"enabled",null)});function Qn(n){n.indexOf("vClipPlane")===-1&&n.push("vClipPlane"),n.indexOf("vClipPlane2")===-1&&n.push("vClipPlane2"),n.indexOf("vClipPlane3")===-1&&n.push("vClipPlane3"),n.indexOf("vClipPlane4")===-1&&n.push("vClipPlane4"),n.indexOf("vClipPlane5")===-1&&n.push("vClipPlane5"),n.indexOf("vClipPlane6")===-1&&n.push("vClipPlane6")}function bl(n,e,t){var c,f,d,h,u,m;let i=!!((c=n.clipPlane)!=null?c:e.clipPlane),r=!!((f=n.clipPlane2)!=null?f:e.clipPlane2),s=!!((d=n.clipPlane3)!=null?d:e.clipPlane3),a=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),o=!!((u=n.clipPlane5)!=null?u:e.clipPlane5),l=!!((m=n.clipPlane6)!=null?m:e.clipPlane6);i&&t.push("#define CLIPPLANE"),r&&t.push("#define CLIPPLANE2"),s&&t.push("#define CLIPPLANE3"),a&&t.push("#define CLIPPLANE4"),o&&t.push("#define CLIPPLANE5"),l&&t.push("#define CLIPPLANE6")}function xH(n,e,t){var f,d,h,u,m,_;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((h=n.clipPlane3)!=null?h:e.clipPlane3),o=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((_=n.clipPlane6)!=null?_:e.clipPlane6);return t.CLIPPLANE!==r&&(t.CLIPPLANE=r,i=!0),t.CLIPPLANE2!==s&&(t.CLIPPLANE2=s,i=!0),t.CLIPPLANE3!==a&&(t.CLIPPLANE3=a,i=!0),t.CLIPPLANE4!==o&&(t.CLIPPLANE4=o,i=!0),t.CLIPPLANE5!==l&&(t.CLIPPLANE5=l,i=!0),t.CLIPPLANE6!==c&&(t.CLIPPLANE6=c,i=!0),i}function $n(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;Jm(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,Jm(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,Jm(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,Jm(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,Jm(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,Jm(n,"vClipPlane6",i)}function Jm(n,e,t){var i;if(t){let r=((i=ka.getScene())==null?void 0:i.floatingOriginOffset)||b.ZeroReadOnly;n.setFloat4(e,t.normal.x,t.normal.y,t.normal.z,t.d+b.Dot(t.normal,r))}}var Ml=I(()=>{Qg();ke()});var ce,Ya=I(()=>{zr();ce=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Re.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}};ce._DiffuseTextureEnabled=!0;ce._BaseWeightTextureEnabled=!0;ce._BaseDiffuseRoughnessTextureEnabled=!0;ce._DetailTextureEnabled=!0;ce._DecalMapEnabled=!0;ce._AmbientTextureEnabled=!0;ce._OpacityTextureEnabled=!0;ce._ReflectionTextureEnabled=!0;ce._EmissiveTextureEnabled=!0;ce._SpecularTextureEnabled=!0;ce._BumpTextureEnabled=!0;ce._LightmapTextureEnabled=!0;ce._RefractionTextureEnabled=!0;ce._ColorGradingTextureEnabled=!0;ce._FresnelEnabled=!0;ce._ClearCoatTextureEnabled=!0;ce._ClearCoatBumpTextureEnabled=!0;ce._ClearCoatTintTextureEnabled=!0;ce._SheenTextureEnabled=!0;ce._AnisotropicTextureEnabled=!0;ce._ThicknessTextureEnabled=!0;ce._RefractionIntensityTextureEnabled=!0;ce._TranslucencyIntensityTextureEnabled=!0;ce._TranslucencyColorTextureEnabled=!0;ce._IridescenceTextureEnabled=!0});function Gf(n,e,t){if(!n||n.LOGARITHMICDEPTH||n.indexOf&&n.indexOf("LOGARITHMICDEPTH")>=0){let i=t.activeCamera;i.mode===1&&ee.Error("Logarithmic depth is not compatible with orthographic cameras!",20),e.setFloat("logarithmicDepthConstant",2/(Math.log(i.maxZ+1)/Math.LN2))}}var RH=I(()=>{Lt()});function kf(n,e,t,i=!1){t&&n.fogEnabled&&(!e||e.applyFog)&&n.fogMode!==0&&(t.setFloat4("vFogInfos",n.fogMode,n.fogStart,n.fogEnd,n.fogDensity),i?(n.fogColor.toLinearSpaceToRef(bH,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",bH)):t.setColor3("vFogColor",n.fogColor))}function Il(n,e,t,i,r,s,a,o,l,c){let f=n.numMaxInfluencers||n.numInfluencers;return f<=0?0:(e.push("#define MORPHTARGETS"),n.hasPositions&&e.push("#define MORPHTARGETTEXTURE_HASPOSITIONS"),n.hasNormals&&e.push("#define MORPHTARGETTEXTURE_HASNORMALS"),n.hasTangents&&e.push("#define MORPHTARGETTEXTURE_HASTANGENTS"),n.hasUVs&&e.push("#define MORPHTARGETTEXTURE_HASUVS"),n.hasUV2s&&e.push("#define MORPHTARGETTEXTURE_HASUV2S"),n.hasColors&&e.push("#define MORPHTARGETTEXTURE_HASCOLORS"),n.supportsPositions&&r&&e.push("#define MORPHTARGETS_POSITION"),n.supportsNormals&&s&&e.push("#define MORPHTARGETS_NORMAL"),n.supportsTangents&&a&&e.push("#define MORPHTARGETS_TANGENT"),n.supportsUVs&&o&&e.push("#define MORPHTARGETS_UV"),n.supportsUV2s&&l&&e.push("#define MORPHTARGETS_UV2"),n.supportsColors&&c&&e.push("#define MORPHTARGETS_COLOR"),e.push("#define NUM_MORPH_INFLUENCERS "+f),n.isUsingTextureForTargets&&e.push("#define MORPHTARGETS_TEXTURE"),yh.NUM_MORPH_INFLUENCERS=f,yh.NORMAL=s,yh.TANGENT=a,yh.UV=o,yh.UV2=l,yh.COLOR=c,Ch(t,i,yh,r),f)}function Ch(n,e,t,i=!0){let r=t.NUM_MORPH_INFLUENCERS;if(r>0&&Oe.LastCreatedEngine){let s=Oe.LastCreatedEngine.getCaps().maxVertexAttribs,a=e.morphTargetManager;if(a!=null&&a.isUsingTextureForTargets)return;let o=a&&a.supportsPositions&&i,l=a&&a.supportsNormals&&t.NORMAL,c=a&&a.supportsTangents&&t.TANGENT,f=a&&a.supportsUVs&&t.UV1,d=a&&a.supportsUV2s&&t.UV2,h=a&&a.supportsColors&&t.VERTEXCOLOR;for(let u=0;us&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function No(n,e=!1){n.push("world0"),n.push("world1"),n.push("world2"),n.push("world3"),e&&(n.push("previousWorld0"),n.push("previousWorld1"),n.push("previousWorld2"),n.push("previousWorld3"))}function Jn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function Wf(n,e){e.bindToEffect(n,"Scene")}function ep(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&ce.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let h=r;t.updateVector3("vReflectionPosition",h.boundingBoxPosition),t.updateVector3("vReflectionSize",h.boundingBoxSize)}if(s){let h=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",h,Math.log2(h))}if(c&&!e.USEIRRADIANCEMAP){let h=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&h)if(e.SPHERICAL_HARMONICS){let u=h.preScaledHarmonics;t.updateVector3("vSphericalL00",u.l00),t.updateVector3("vSphericalL1_1",u.l1_1),t.updateVector3("vSphericalL10",u.l10),t.updateVector3("vSphericalL11",u.l11),t.updateVector3("vSphericalL2_2",u.l2_2),t.updateVector3("vSphericalL2_1",u.l2_1),t.updateVector3("vSphericalL20",u.l20),t.updateVector3("vSphericalL21",u.l21),t.updateVector3("vSphericalL22",u.l22)}else t.updateFloat3("vSphericalX",h.x.x,h.x.y,h.x.z),t.updateFloat3("vSphericalY",h.y.x,h.y.y,h.y.z),t.updateFloat3("vSphericalZ",h.z.x,h.z.y,h.z.z),t.updateFloat3("vSphericalXX_ZZ",h.xx.x-h.zz.x,h.xx.y-h.zz.y,h.xx.z-h.zz.z),t.updateFloat3("vSphericalYY_ZZ",h.yy.x-h.zz.x,h.yy.y-h.zz.y,h.yy.z-h.zz.z),t.updateFloat3("vSphericalZZ",h.zz.x,h.zz.y,h.zz.z),t.updateFloat3("vSphericalXY",h.xy.x,h.xy.y,h.xy.z),t.updateFloat3("vSphericalYZ",h.yz.x,h.yz.y,h.yz.z),t.updateFloat3("vSphericalZX",h.zx.x,h.zx.y,h.zx.z)}else l&&e.USEIRRADIANCEMAP&&e.USE_IRRADIANCE_DOMINANT_DIRECTION&&r.irradianceTexture&&t.updateVector3("vReflectionDominantDirection",r.irradianceTexture._dominantDirection);a&&t.updateFloat3("vReflectionMicrosurfaceInfos",r.getSize().width,r.lodGenerationScale,r.lodGenerationOffset)}f&&t.updateColor3("vReflectionColor",i)}function sR(n,e,t,i=null,r=!1){if(i&&ce.ReflectionTextureEnabled){e.LODBASEDMICROSFURACE?t.setTexture("reflectionSampler",i):(t.setTexture("reflectionSampler",i._lodTextureMid||i),t.setTexture("reflectionSamplerLow",i._lodTextureLow||i),t.setTexture("reflectionSamplerHigh",i._lodTextureHigh||i)),e.USEIRRADIANCEMAP&&t.setTexture("irradianceSampler",i.irradianceTexture);let s=n.iblCdfGenerator;r&&s&&t.setTexture("icdfSampler",s.getIcdfTexture())}}function ni(n,e,t){e._needUVs=!0,e[t]=!0,n.optimizeUVAllocation&&n.getTextureMatrix().isIdentityAs3x2()?(e[t+"DIRECTUV"]=n.coordinatesIndex+1,e["MAINUV"+(n.coordinatesIndex+1)]=!0):e[t+"DIRECTUV"]=0}function si(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function tp(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function kfe(n,e){return e.set(n),e}function js(n,e,t){if(!(!e||!n)&&(n.computeBonesUsingShaders&&e._bonesComputationForcedToCPU&&(n.computeBonesUsingShaders=!1),n.useBones&&n.computeBonesUsingShaders&&n.skeleton)){let i=n.skeleton;if(i.isUsingTextureForMatrices&&e.getUniformIndex("boneTextureInfo")>-1){let r=i.getTransformMatrixTexture(n);e.setTexture("boneSampler",r),e.setFloat2("boneTextureInfo",i._textureWidth,i._textureHeight)}else{let r=i.getTransformMatrices(n);r&&(e.setMatrices("mBones",r),t&&n.getScene().prePassRenderer&&n.getScene().prePassRenderer.getIndex(2)&&(t.previousBones[n.uniqueId]||(t.previousBones[n.uniqueId]=r.slice()),e.setMatrices("mPreviousBones",t.previousBones[n.uniqueId]),kfe(r,t.previousBones[n.uniqueId])))}}}function Wfe(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function ip(n,e,t,i,r=4){let s=Math.min(e.lightSources.length,r);for(let a=0;a0&&(i.addCPUSkinningFallback(0,e),n.push("matricesIndices"),n.push("matricesWeights"),t.NUM_BONE_INFLUENCERS>4&&(n.push("matricesIndicesExtra"),n.push("matricesWeightsExtra")))}function np(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&No(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function sp(n,e,t=4,i=0){let r=0;for(let s=0;s0&&(r=i+s,e.addFallback(r,"LIGHT"+s)),n.SHADOWS||(n["SHADOW"+s]&&e.addFallback(i,"SHADOW"+s),n["SHADOWPCF"+s]&&e.addFallback(i,"SHADOWPCF"+s),n["SHADOWPCSS"+s]&&e.addFallback(i,"SHADOWPCSS"+s),n["SHADOWPOISSON"+s]&&e.addFallback(i,"SHADOWPOISSON"+s),n["SHADOWESM"+s]&&e.addFallback(i,"SHADOWESM"+s),n["SHADOWCLOSEESM"+s]&&e.addFallback(i,"SHADOWCLOSEESM"+s));return r}function Hfe(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function ap(n,e,t,i,r,s,a,o=!1,l=!1,c,f){var d;if(a._areMiscDirty){a.LOGARITHMICDEPTH=t,a.POINTSIZE=i,a.FOG=r&&Hfe(n,e),a.NONUNIFORMSCALING=n.nonUniformScaling,a.ALPHATEST=s,a.DECAL_AFTER_DETAIL=o,a.USE_VERTEX_PULLING=l,a.RIGHT_HANDED=e.useRightHandedSystem;let h=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),u=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!h&&!u,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=h&&!u?h.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function op(n,e,t,i=!1){if(!n.lightsEnabled||i)return!0;let r=e.lightSources,s=Math.min(r.length,t);for(let a=0;a0?(t.NUM_SAMPLES=""+r,a._features.needTypeSuffixInShaderConstants&&(t.NUM_SAMPLES=t.NUM_SAMPLES+"u"),t.REALTIME_FILTERING=!0,n.iblCdfGenerator&&(t.IBL_CDF_FILTERING=!0)):t.REALTIME_FILTERING=!1,t.INVERTCUBICMAP=e.coordinatesMode===_e.INVCUBIC_MODE,t.REFLECTIONMAP_3D=e.isCube,t.REFLECTIONMAP_OPPOSITEZ=t.REFLECTIONMAP_3D&&n.useRightHandedSystem?!e.invertZ:e.invertZ,t.REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,e.coordinatesMode){case _e.EXPLICIT_MODE:t.REFLECTIONMAP_EXPLICIT=!0;break;case _e.PLANAR_MODE:t.REFLECTIONMAP_PLANAR=!0;break;case _e.PROJECTION_MODE:t.REFLECTIONMAP_PROJECTION=!0;break;case _e.SKYBOX_MODE:t.REFLECTIONMAP_SKYBOX=!0;break;case _e.SPHERICAL_MODE:t.REFLECTIONMAP_SPHERICAL=!0;break;case _e.EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR=!0;break;case _e.FIXED_EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!0;break;case _e.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!0;break;case _e.CUBIC_MODE:case _e.INVCUBIC_MODE:default:t.REFLECTIONMAP_CUBIC=!0,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!!e.boundingBoxSize;break}e.coordinatesMode!==_e.SKYBOX_MODE&&(e.irradianceTexture?(t.USEIRRADIANCEMAP=!0,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USESPHERICALINVERTEX=!1,e.irradianceTexture._dominantDirection?t.USE_IRRADIANCE_DOMINANT_DIRECTION=!0:t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1):e.isCube&&(t.USESPHERICALFROMREFLECTIONMAP=!0,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=s))}else t.REFLECTION=!1,t.REFLECTIONMAP_3D=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_CUBIC=!1,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,t.INVERTCUBICMAP=!1,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=!1,t.REFLECTIONMAP_OPPOSITEZ=!1,t.LODINREFLECTIONALPHA=!1,t.GAMMAREFLECTION=!1,t.RGBDREFLECTION=!1,t.LINEARSPECULARREFLECTION=!1;return!0}function zfe(n,e,t,i,r,s,a){var o;switch(a.needNormals=!0,r["LIGHT"+i]===void 0&&(a.needRebuild=!0),r["LIGHT"+i]=!0,r["SPOTLIGHT"+i]=!1,r["HEMILIGHT"+i]=!1,r["POINTLIGHT"+i]=!1,r["DIRLIGHT"+i]=!1,r["AREALIGHT"+i]=!1,r["CLUSTLIGHT"+i]=!1,t.prepareLightSpecificDefines(r,i),r["LIGHT_FALLOFF_PHYSICAL"+i]=!1,r["LIGHT_FALLOFF_GLTF"+i]=!1,r["LIGHT_FALLOFF_STANDARD"+i]=!1,t.falloffType){case jt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case jt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case jt.FALLOFF_STANDARD:r["LIGHT_FALLOFF_STANDARD"+i]=!0;break}if(s&&!t.specular.equalsFloats(0,0,0)&&(a.specularEnabled=!0),r["SHADOW"+i]=!1,r["SHADOWCSM"+i]=!1,r["SHADOWCSMDEBUG"+i]=!1,r["SHADOWCSMNUM_CASCADES"+i]=!1,r["SHADOWCSMUSESHADOWMAXZ"+i]=!1,r["SHADOWCSMNOBLEND"+i]=!1,r["SHADOWCSM_RIGHTHANDED"+i]=!1,r["SHADOWPCF"+i]=!1,r["SHADOWPCSS"+i]=!1,r["SHADOWPOISSON"+i]=!1,r["SHADOWESM"+i]=!1,r["SHADOWCLOSEESM"+i]=!1,r["SHADOWCUBE"+i]=!1,r["SHADOWLOWQUALITY"+i]=!1,r["SHADOWMEDIUMQUALITY"+i]=!1,e&&e.receiveShadows&&n.shadowsEnabled&&t.shadowEnabled){let l=(o=t.getShadowGenerator(n.activeCamera))!=null?o:t.getShadowGenerator();if(l){let c=l.getShadowMap();c&&c.renderList&&c.renderList.length>0&&(a.shadowEnabled=!0,l.prepareDefines(r,i))}}t.lightmapMode!=jt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==jt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function cp(n,e,t,i,r,s=null,a=!1){let o=jfe(n,i);s!==!1&&(o=xH(t,n,i)),i.DEPTHPREPASS!==!e.getColorWrite()&&(i.DEPTHPREPASS=!i.DEPTHPREPASS,o=!0),i.INSTANCES!==r&&(i.INSTANCES=r,o=!0),i.THIN_INSTANCES!==a&&(i.THIN_INSTANCES=a,o=!0),o&&i.markAsUnprocessed()}function Xfe(n,e){if(n.useBones&&n.computeBonesUsingShaders&&n.skeleton){e.NUM_BONE_INFLUENCERS=n.numBoneInfluencers;let t=e.BONETEXTURE!==void 0;if(n.skeleton.isUsingTextureForMatrices&&t)e.BONETEXTURE=!0;else{e.BonesPerMesh=n.skeleton.bones.length+1,e.BONETEXTURE=t?!1:void 0;let i=n.getScene().prePassRenderer;if(i&&i.enabled){let r=i.excludedSkinnedMesh.indexOf(n)===-1;e.BONES_VELOCITY_ENABLED=r}}}else e.NUM_BONE_INFLUENCERS=0,e.BonesPerMesh=0,e.BONETEXTURE!==void 0&&(e.BONETEXTURE=!1)}function Yfe(n,e){let t=n.morphTargetManager;t?(e.MORPHTARGETS_UV=t.supportsUVs&&e.UV1,e.MORPHTARGETS_UV2=t.supportsUV2s&&e.UV2,e.MORPHTARGETS_TANGENT=t.supportsTangents&&e.TANGENT,e.MORPHTARGETS_NORMAL=t.supportsNormals&&e.NORMAL,e.MORPHTARGETS_POSITION=t.supportsPositions,e.MORPHTARGETS_COLOR=t.supportsColors,e.MORPHTARGETTEXTURE_HASUVS=t.hasUVs,e.MORPHTARGETTEXTURE_HASUV2S=t.hasUV2s,e.MORPHTARGETTEXTURE_HASTANGENTS=t.hasTangents,e.MORPHTARGETTEXTURE_HASNORMALS=t.hasNormals,e.MORPHTARGETTEXTURE_HASPOSITIONS=t.hasPositions,e.MORPHTARGETTEXTURE_HASCOLORS=t.hasColors,e.NUM_MORPH_INFLUENCERS=t.numMaxInfluencers||t.numInfluencers,e.MORPHTARGETS=e.NUM_MORPH_INFLUENCERS>0,e.MORPHTARGETS_TEXTURE=t.isUsingTextureForTargets):(e.MORPHTARGETS_UV=!1,e.MORPHTARGETS_UV2=!1,e.MORPHTARGETS_TANGENT=!1,e.MORPHTARGETS_NORMAL=!1,e.MORPHTARGETS_POSITION=!1,e.MORPHTARGETS_COLOR=!1,e.MORPHTARGETTEXTURE_HASUVS=!1,e.MORPHTARGETTEXTURE_HASUV2S=!1,e.MORPHTARGETTEXTURE_HASTANGENTS=!1,e.MORPHTARGETTEXTURE_HASNORMALS=!1,e.MORPHTARGETTEXTURE_HASPOSITIONS=!1,e.MORPHTARGETTEXTURE_HAS_COLORS=!1,e.MORPHTARGETS=!1,e.NUM_MORPH_INFLUENCERS=0)}function Kfe(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function fp(n,e,t,i,r=!1,s=!0,a=!0){if(!e._areAttributesDirty&&e._needNormals===e._normals&&e._needUVs===e._uvs)return!1;e._normals=e._needNormals,e._uvs=e._needUVs,e.NORMAL=e._needNormals&&n.isVerticesDataPresent("normal"),e._needNormals&&n.isVerticesDataPresent("tangent")&&(e.TANGENT=!0);for(let o=1;o<=6;++o)e["UV"+o]=e._needUVs?n.isVerticesDataPresent(`uv${o===1?"":o}`):!1;if(t){let o=n.useVertexColors&&n.isVerticesDataPresent("color");e.VERTEXCOLOR=o,e.VERTEXALPHA=n.hasVertexAlpha&&o&&s}return n.isVerticesDataPresent("instanceColor")&&(n.hasInstances||n.hasThinInstances)&&(e.INSTANCESCOLOR=!0),i&&Xfe(n,e),r&&Yfe(n,e),a&&Kfe(n,e),!0}function dp(n,e){if(n.activeCamera){let t=e.MULTIVIEW;e.MULTIVIEW=n.activeCamera.outputRenderTarget!==null&&n.activeCamera.outputRenderTarget.getViewCount()>1,e.MULTIVIEW!=t&&e.markAsUnprocessed()}}function hp(n,e,t){let i=e.ORDER_INDEPENDENT_TRANSPARENCY,r=e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS;e.ORDER_INDEPENDENT_TRANSPARENCY=n.useOrderIndependentTransparency&&t,e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!n.getEngine().getCaps().textureFloatLinearFiltering,(i!==e.ORDER_INDEPENDENT_TRANSPARENCY||r!==e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS)&&e.markAsUnprocessed()}function up(n,e,t){let i=e.PREPASS;if(!e._arePrePassDirty)return;let r=[{type:1,define:"PREPASS_POSITION",index:"PREPASS_POSITION_INDEX"},{type:9,define:"PREPASS_LOCAL_POSITION",index:"PREPASS_LOCAL_POSITION_INDEX"},{type:2,define:"PREPASS_VELOCITY",index:"PREPASS_VELOCITY_INDEX"},{type:11,define:"PREPASS_VELOCITY_LINEAR",index:"PREPASS_VELOCITY_LINEAR_INDEX"},{type:3,define:"PREPASS_REFLECTIVITY",index:"PREPASS_REFLECTIVITY_INDEX"},{type:0,define:"PREPASS_IRRADIANCE_LEGACY",index:"PREPASS_IRRADIANCE_LEGACY_INDEX"},{type:7,define:"PREPASS_ALBEDO_SQRT",index:"PREPASS_ALBEDO_SQRT_INDEX"},{type:5,define:"PREPASS_DEPTH",index:"PREPASS_DEPTH_INDEX"},{type:10,define:"PREPASS_SCREENSPACE_DEPTH",index:"PREPASS_SCREENSPACE_DEPTH_INDEX"},{type:6,define:"PREPASS_NORMAL",index:"PREPASS_NORMAL_INDEX"},{type:8,define:"PREPASS_WORLD_NORMAL",index:"PREPASS_WORLD_NORMAL_INDEX"},{type:14,define:"PREPASS_IRRADIANCE",index:"PREPASS_IRRADIANCE_INDEX"}];if(n.prePassRenderer&&n.prePassRenderer.enabled&&t){e.PREPASS=!0,e.SCENE_MRT_COUNT=n.prePassRenderer.mrtCount,e.PREPASS_NORMAL_WORLDSPACE=n.prePassRenderer.generateNormalsInWorldSpace,e.PREPASS_COLOR=!0,e.PREPASS_COLOR_INDEX=0;for(let s=0;s{Lt();Gi();Wg();Ml();Ya();Xr();RH();bH={r:0,g:0,b:0},yh={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Se,ts=I(()=>{Wt();kt();wi();mi();Gi();cv();Of();Lt();Dm();Eh();AH();es();Dr();VC();Se=class n{get useVertexPulling(){return this._useVertexPulling}set useVertexPulling(e){this._useVertexPulling!==e&&(this._useVertexPulling=e,this.markAsDirty(n.MiscDirtyFlag))}get _supportGlowLayer(){return!1}set _glowModeEnabled(e){}get shaderLanguage(){return this._shaderLanguage}get canRenderToMRT(){return!1}set alpha(e){if(this._alpha===e)return;let t=this._alpha;this._alpha=e,(t===1||e===1)&&this.markAsDirty(n.MiscDirtyFlag+n.PrePassDirtyFlag)}get alpha(){return this._alpha}set backFaceCulling(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,this.markAsDirty(n.TextureDirtyFlag))}get backFaceCulling(){return this._backFaceCulling}set cullBackFaces(e){this._cullBackFaces!==e&&(this._cullBackFaces=e,this.markAsDirty(n.TextureDirtyFlag))}get cullBackFaces(){return this._cullBackFaces}get blockDirtyMechanism(){return this._blockDirtyMechanism}set blockDirtyMechanism(e){this._blockDirtyMechanism!==e&&(this._blockDirtyMechanism=e,e||this.markDirty())}atomicMaterialsUpdate(e){this.blockDirtyMechanism=!0;try{e(this)}finally{this.blockDirtyMechanism=!1}}get hasRenderTargetTextures(){return this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._eventInfo.hasRenderTargetTextures}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new te),this._onBindObservable}set onBind(e){this._onBindObserver&&this.onBindObservable.remove(this._onBindObserver),this._onBindObserver=this.onBindObservable.add(e)}get onUnBindObservable(){return this._onUnBindObservable||(this._onUnBindObservable=new te),this._onUnBindObservable}get onEffectCreatedObservable(){return this._onEffectCreatedObservable||(this._onEffectCreatedObservable=new te),this._onEffectCreatedObservable}set alphaMode(e){this._alphaMode[0]!==e&&(this._alphaMode[0]=e,this.markAsDirty(n.TextureDirtyFlag))}get alphaMode(){return this._alphaMode[0]}get alphaModes(){return this._alphaMode}setAlphaMode(e,t=0){this._alphaMode[t]!==e&&(this._alphaMode[t]=e,this.markAsDirty(n.TextureDirtyFlag))}set needDepthPrePass(e){this._needDepthPrePass!==e&&(this._needDepthPrePass=e,this._needDepthPrePass&&(this.checkReadyOnEveryCall=!0))}get needDepthPrePass(){return this._needDepthPrePass}get isPrePassCapable(){return!1}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAsDirty(n.MiscDirtyFlag))}get fogEnabled(){return this._fogEnabled}get wireframe(){switch(this._fillMode){case n.WireFrameFillMode:case n.LineListDrawMode:case n.LineLoopDrawMode:case n.LineStripDrawMode:return!0}return this._scene.forceWireframe}set wireframe(e){this.fillMode=e?n.WireFrameFillMode:n.TriangleFillMode}get pointsCloud(){switch(this._fillMode){case n.PointFillMode:case n.PointListDrawMode:return!0}return this._scene.forcePointsCloud}set pointsCloud(e){this.fillMode=e?n.PointFillMode:n.TriangleFillMode}get fillMode(){return this._fillMode}set fillMode(e){this._fillMode!==e&&(this._fillMode=e,this.markAsDirty(n.MiscDirtyFlag))}get useLogarithmicDepth(){return this._useLogarithmicDepth}set useLogarithmicDepth(e){let t=this.getScene().getEngine().getCaps().fragmentDepthSupported;e&&!t&&ee.Warn("Logarithmic depth has been requested for a material on a device that doesn't support it."),this._useLogarithmicDepth=e&&t,this._markAllSubMeshesAsMiscDirty()}get isVertexOutputInvariant(){return this._isVertexOutputInvariant}set isVertexOutputInvariant(e){this._isVertexOutputInvariant!==e&&(this._isVertexOutputInvariant=e,this._markAllSubMeshesAsMiscDirty())}_getDrawWrapper(){return this._drawWrapper}_setDrawWrapper(e){this._drawWrapper=e}constructor(e,t,i,r=!1){this.shadowDepthWrapper=null,this.allowShaderHotSwapping=!0,this._shaderLanguage=0,this._forceGLSL=!1,this._useVertexPulling=!1,this.metadata=null,this.reservedDataStore=null,this.checkReadyOnEveryCall=!1,this.checkReadyOnlyOnce=!1,this.state="",this._alpha=1,this._backFaceCulling=!0,this._cullBackFaces=!0,this._blockDirtyMechanism=!1,this.sideOrientation=null,this.onCompiled=null,this.onError=null,this.getRenderTargetTextures=null,this.doNotSerialize=!1,this._storeEffectOnSubMeshes=!1,this.animations=null,this.onDisposeObservable=new te,this._onDisposeObserver=null,this._onUnBindObservable=null,this._onBindObserver=null,this._alphaMode=[2],this._needDepthPrePass=!1,this.disableDepthWrite=!1,this.disableColorWrite=!1,this.forceDepthWrite=!1,this.depthFunction=0,this.separateCullingPass=!1,this._fogEnabled=!0,this.pointSize=1,this.zOffset=0,this.zOffsetUnits=0,this.stencil=new qn,this._isVertexOutputInvariant=n.ForceVertexOutputInvariant,this._useUBO=!1,this._fillMode=n.TriangleFillMode,this._cachedDepthWriteState=!1,this._cachedColorWriteState=!1,this._cachedDepthFunctionState=0,this._indexInSceneMaterialArray=-1,this.meshMap=null,this._parentContainer=null,this._uniformBufferLayoutBuilt=!1,this._eventInfo={},this._callbackPluginEventGeneric=()=>{},this._callbackPluginEventIsReadyForSubMesh=()=>{},this._callbackPluginEventPrepareDefines=()=>{},this._callbackPluginEventPrepareDefinesBeforeAttributes=()=>{},this._callbackPluginEventHardBindForSubMesh=()=>{},this._callbackPluginEventBindForSubMesh=()=>{},this._callbackPluginEventHasRenderTargetTextures=()=>{},this._callbackPluginEventFillRenderTargetTextures=()=>{},this._transparencyMode=null,this.name=e;let s=t||Oe.LastCreatedScene;s&&(this._scene=s,this._dirtyCallbacks={},this._forceGLSL=r,this._dirtyCallbacks[1]=this._markAllSubMeshesAsTexturesDirty.bind(this),this._dirtyCallbacks[2]=this._markAllSubMeshesAsLightsDirty.bind(this),this._dirtyCallbacks[4]=this._markAllSubMeshesAsFresnelDirty.bind(this),this._dirtyCallbacks[8]=this._markAllSubMeshesAsAttributesDirty.bind(this),this._dirtyCallbacks[16]=this._markAllSubMeshesAsMiscDirty.bind(this),this._dirtyCallbacks[32]=this._markAllSubMeshesAsPrePassDirty.bind(this),this._dirtyCallbacks[127]=this._markAllSubMeshesAsAllDirty.bind(this),this.id=e||pe.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new Ss(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new Sr(this._scene.getEngine(),void 0,void 0,e),this._useUBO=this.getScene().getEngine().supportsUniformBuffers,this._createUniformBuffer(),i||this._scene.addMaterial(this),this._scene.useMaterialMeshMap&&(this.meshMap={}),n.OnEventObservable.notifyObservers(this,1))}_createUniformBuffer(){var t;let e=this.getScene().getEngine();(t=this._uniformBuffer)==null||t.dispose(),e.isWebGPU&&!this._forceGLSL?(this._uniformBuffer=new Sr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new Sr(this._scene.getEngine(),void 0,void 0,this.name),this._uniformBufferLayoutBuilt=!1}toString(e){return"Name: "+this.name}getClassName(){return"Material"}get _isMaterial(){return!0}get isFrozen(){return this.checkReadyOnlyOnce}freeze(){this.markDirty(),this.checkReadyOnlyOnce=!0}unfreeze(){this.markDirty(),this.checkReadyOnlyOnce=!1}isReady(e,t){return!0}isReadyForSubMesh(e,t,i){let r=t.materialDefines;return r?(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=r,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),this._eventInfo.isReadyForSubMesh):!1}getEffect(){return this._drawWrapper.effect}getScene(){return this._scene}_getEffectiveOrientation(e){return this.sideOrientation!==null?this.sideOrientation:e.sideOrientation}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}get _hasTransparencyMode(){return this._transparencyMode!=null}get _transparencyModeIsBlend(){return this._transparencyMode===n.MATERIAL_ALPHABLEND||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _transparencyModeIsTest(){return this._transparencyMode===n.MATERIAL_ALPHATEST||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _disableAlphaBlending(){return this._transparencyMode===n.MATERIAL_OPAQUE||this._transparencyMode===n.MATERIAL_ALPHATEST}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1}needAlphaBlendingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsBlend:e.visibility<1?!0:this._disableAlphaBlending?!1:e.hasVertexAlpha||this.needAlphaBlending()}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:!1}needAlphaTestingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsTest:!this.needAlphaBlendingForMesh(e)&&this.needAlphaTesting()}getAlphaTestTexture(){return null}markDirty(e=!1){let t=this.getScene().meshes;for(let i of t)if(i.subMeshes){for(let r of i.subMeshes)if(r.getMaterial()===this)for(let s of r._drawWrappers)s&&this._materialContext===s.materialContext&&(s._wasPreviouslyReady=!1,s._wasPreviouslyUsingInstances=null,s._forceRebindOnNextCall=e)}e&&this.markAsDirty(n.AllDirtyFlag)}_preBind(e,t=null){let i=this._scene.getEngine(),s=(t==null?this.sideOrientation:t)===n.ClockWiseSideOrientation,a=e||this._getDrawWrapper();return JA(a)&&a.materialContext&&(a.materialContext.useVertexPulling=this.useVertexPulling),i.enableEffect(a),i.setState(this.backFaceCulling,this.zOffset,!1,s,this._scene._mirroredCameraPosition?!this.cullBackFaces:this.cullBackFaces,this.stencil,this.zOffsetUnits),s}bind(e,t){}buildUniformLayout(){let e=this._uniformBuffer;this._eventInfo.ubo=e,this._callbackPluginEventGeneric(8,this._eventInfo),e.create(),this._uniformBufferLayoutBuilt=!0}bindForSubMesh(e,t,i){let r=i._drawWrapper;this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),r._forceRebindOnNextCall=!1}bindOnlyWorldMatrix(e){}bindView(e){this._useUBO?this._needToBindSceneUbo=!0:e.setMatrix("view",this.getScene().getViewMatrix())}bindViewProjection(e){this._useUBO?this._needToBindSceneUbo=!0:(e.setMatrix("viewProjection",this.getScene().getTransformMatrix()),e.setMatrix("projection",this.getScene().getProjectionMatrix()),e.setMatrix("inverseProjection",this.getScene().getInverseProjectionMatrix()))}bindEyePosition(e,t){this._useUBO?this._needToBindSceneUbo=!0:this._scene.bindEyePosition(e,t)}_afterBind(e,t=null,i){if(this._scene._cachedMaterial=this,this._needToBindSceneUbo&&t&&(this._needToBindSceneUbo=!1,Wf(t,this.getScene().getSceneUniformBuffer()),this._scene.finalizeSceneUbo()),e?this._scene._cachedVisibility=e.visibility:this._scene._cachedVisibility=1,this._onBindObservable&&e&&this._onBindObservable.notifyObservers(e),this.disableDepthWrite){let r=this._scene.getEngine();this._cachedDepthWriteState=r.getDepthWrite(),r.setDepthWrite(!1)}if(this.disableColorWrite){let r=this._scene.getEngine();this._cachedColorWriteState=r.getColorWrite(),r.setColorWrite(!1)}if(this.depthFunction!==0){let r=this._scene.getEngine();this._cachedDepthFunctionState=r.getDepthFunction()||0,r.setDepthFunction(this.depthFunction)}}unbind(){this._scene.getSceneUniformBuffer().unbindEffect(),this._onUnBindObservable&&this._onUnBindObservable.notifyObservers(this),this.depthFunction!==0&&this._scene.getEngine().setDepthFunction(this._cachedDepthFunctionState),this.disableDepthWrite&&this._scene.getEngine().setDepthWrite(this._cachedDepthWriteState),this.disableColorWrite&&this._scene.getEngine().setColorWrite(this._cachedColorWriteState)}getAnimatables(){return this._eventInfo.animatables=[],this._callbackPluginEventGeneric(256,this._eventInfo),this._eventInfo.animatables}getActiveTextures(){return this._eventInfo.activeTextures=[],this._callbackPluginEventGeneric(512,this._eventInfo),this._eventInfo.activeTextures}hasTexture(e){return this._eventInfo.hasTexture=!1,this._eventInfo.texture=e,this._callbackPluginEventGeneric(1024,this._eventInfo),this._eventInfo.hasTexture}clone(e){return null}_clonePlugins(e,t){let i={};if(this._serializePlugins(i),n._ParsePlugins(i,e,this._scene,t),this.pluginManager)for(let r of this.pluginManager._plugins){let s=e.pluginManager.getPlugin(r.name);s&&r.copyTo(s)}}getBindedMeshes(){if(this.meshMap){let e=[];for(let t in this.meshMap){let i=this.meshMap[t];i&&e.push(i)}return e}else return this._scene.meshes.filter(t=>t.material===this)}forceCompilation(e,t,i,r){let s={clipPlane:!1,useInstances:!1,...i},a=this.getScene(),o=this.allowShaderHotSwapping;this.allowShaderHotSwapping=!1;let l=()=>{if(!this._scene||!this._scene.getEngine())return;let c=a.clipPlane;if(s.clipPlane&&(a.clipPlane=new Ao(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let h=new Ks(0,0,0,0,0,e,void 0,!1,!1);h.materialDefines&&(h.materialDefines._renderId=-1),this.isReadyForSubMesh(e,h,s.useInstances)||(h.effect&&h.effect.getCompilationError()&&h.effect.allFallbacksProcessed()?d=h.effect.getCompilationError():(f=!1,setTimeout(l,16)))}f&&(this.allowShaderHotSwapping=o,d&&r&&r(d),t&&t(this))}else this.isReady()?(this.allowShaderHotSwapping=o,t&&t(this)):setTimeout(l,16);s.clipPlane&&(a.clipPlane=c)};l()}async forceCompilationAsync(e,t){return await new Promise((i,r)=>{this.forceCompilation(e,()=>{i()},t,s=>{r(s)})})}markAsDirty(e){this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism||(n._DirtyCallbackArray.length=0,e&n.ImageProcessingDirtyFlag&&n._DirtyCallbackArray.push(n._ImageProcessingDirtyCallBack),e&n.TextureDirtyFlag&&n._DirtyCallbackArray.push(n._TextureDirtyCallBack),e&n.LightDirtyFlag&&n._DirtyCallbackArray.push(n._LightsDirtyCallBack),e&n.FresnelDirtyFlag&&n._DirtyCallbackArray.push(n._FresnelDirtyCallBack),e&n.AttributesDirtyFlag&&n._DirtyCallbackArray.push(n._AttributeDirtyCallBack),e&n.MiscDirtyFlag&&n._DirtyCallbackArray.push(n._MiscDirtyCallBack),e&n.PrePassDirtyFlag&&n._DirtyCallbackArray.push(n._PrePassDirtyCallBack),n._DirtyCallbackArray.length&&this._markAllSubMeshesAsDirty(n._RunDirtyCallBacks),this.getScene().resetCachedMaterial())}resetDrawCache(){let e=this.getScene().meshes;for(let t of e)if(t.subMeshes)for(let i of t.subMeshes)i.getMaterial()===this&&i.resetDrawCache()}_markAllSubMeshesAsDirty(e){let t=this.getScene();if(t.blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let i=t.meshes;for(let r of i)if(r.subMeshes){for(let s of r.subMeshes)if((s.getMaterial()||(t._hasDefaultMaterial?t.defaultMaterial:null))===this)for(let o of s._drawWrappers)!o||!o.defines||!o.defines.markAllAsDirty||this._materialContext===o.materialContext&&e(o.defines)}}_markScenePrePassDirty(){if(this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let e=this.getScene().enablePrePassRenderer();e&&e.markAsDirty()}_markAllSubMeshesAsAllDirty(){this._markAllSubMeshesAsDirty(n._AllDirtyCallBack)}_markAllSubMeshesAsImageProcessingDirty(){this._markAllSubMeshesAsDirty(n._ImageProcessingDirtyCallBack)}_markAllSubMeshesAsTexturesDirty(){this._markAllSubMeshesAsDirty(n._TextureDirtyCallBack)}_markAllSubMeshesAsFresnelDirty(){this._markAllSubMeshesAsDirty(n._FresnelDirtyCallBack)}_markAllSubMeshesAsFresnelAndMiscDirty(){this._markAllSubMeshesAsDirty(n._FresnelAndMiscDirtyCallBack)}_markAllSubMeshesAsLightsDirty(){this._markAllSubMeshesAsDirty(n._LightsDirtyCallBack)}_markAllSubMeshesAsAttributesDirty(){this._markAllSubMeshesAsDirty(n._AttributeDirtyCallBack)}_markAllSubMeshesAsMiscDirty(){this._markAllSubMeshesAsDirty(n._MiscDirtyCallBack)}_markAllSubMeshesAsPrePassDirty(){this._markAllSubMeshesAsDirty(n._PrePassDirtyCallBack)}_markAllSubMeshesAsTexturesAndMiscDirty(){this._markAllSubMeshesAsDirty(n._TextureAndMiscDirtyCallBack)}_checkScenePerformancePriority(){if(this._scene.performancePriority!==0){this.checkReadyOnlyOnce=!0;let e=this._scene.onScenePerformancePriorityChangedObservable.addOnce(()=>{this.checkReadyOnlyOnce=!1});this.onDisposeObservable.add(()=>{this._scene.onScenePerformancePriorityChangedObservable.remove(e)})}}setPrePassRenderer(e){return!1}dispose(e,t,i){let r=this.getScene();if(r.stopAnimation(this),r.freeProcessedMaterials(),r.removeMaterial(this),this._eventInfo.forceDisposeTextures=t,this._callbackPluginEventGeneric(2,this._eventInfo),this._parentContainer){let s=this._parentContainer.materials.indexOf(this);s>-1&&this._parentContainer.materials.splice(s,1),this._parentContainer=null}if(i!==!0)if(this.meshMap)for(let s in this.meshMap){let a=this.meshMap[s];this._disposeMeshResources(a)}else{let s=r.meshes;for(let a of s)this._disposeMeshResources(a)}this._uniformBuffer.dispose(),this._drawWrapper.effect&&(this._storeEffectOnSubMeshes||this._drawWrapper.effect.dispose(),this._drawWrapper.effect=null),this.metadata=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this._onBindObservable&&this._onBindObservable.clear(),this._onUnBindObservable&&this._onUnBindObservable.clear(),this._onEffectCreatedObservable&&this._onEffectCreatedObservable.clear(),this._eventInfo&&(this._eventInfo={})}_disposeMeshResources(e){var r;if(!e)return;let t=e.geometry,i=e._internalAbstractMeshDataInfo._materialForRenderPass;if(this._storeEffectOnSubMeshes){if(e.subMeshes&&i)for(let s of e.subMeshes){let a=s._drawWrappers;for(let o=0;on.markAllAsDirty();Se._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Se._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Se._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Se._MiscDirtyCallBack=n=>n.markAsMiscDirty();Se._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Se._LightsDirtyCallBack=n=>n.markAsLightDirty();Se._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Se._FresnelAndMiscDirtyCallBack=n=>{Se._FresnelDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._TextureAndMiscDirtyCallBack=n=>{Se._TextureDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._DirtyCallbackArray=[];Se._RunDirtyCallBacks=n=>{for(let e of Se._DirtyCallbackArray)e(n)};P([F()],Se.prototype,"id",void 0);P([F()],Se.prototype,"uniqueId",void 0);P([F()],Se.prototype,"name",void 0);P([F()],Se.prototype,"metadata",void 0);P([F()],Se.prototype,"checkReadyOnEveryCall",void 0);P([F()],Se.prototype,"checkReadyOnlyOnce",void 0);P([F()],Se.prototype,"state",void 0);P([F("alpha")],Se.prototype,"_alpha",void 0);P([F("backFaceCulling")],Se.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Se.prototype,"_cullBackFaces",void 0);P([F()],Se.prototype,"sideOrientation",void 0);P([F()],Se.prototype,"_alphaMode",void 0);P([F()],Se.prototype,"_needDepthPrePass",void 0);P([F()],Se.prototype,"disableDepthWrite",void 0);P([F()],Se.prototype,"disableColorWrite",void 0);P([F()],Se.prototype,"forceDepthWrite",void 0);P([F()],Se.prototype,"depthFunction",void 0);P([F()],Se.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Se.prototype,"_fogEnabled",void 0);P([F()],Se.prototype,"pointSize",void 0);P([F()],Se.prototype,"zOffset",void 0);P([F()],Se.prototype,"zOffsetUnits",void 0);P([F()],Se.prototype,"pointsCloud",null);P([F()],Se.prototype,"fillMode",null);P([F()],Se.prototype,"useLogarithmicDepth",null);P([F()],Se.prototype,"_isVertexOutputInvariant",void 0);P([F()],Se.prototype,"transparencyMode",null)});var _p,MH=I(()=>{ts();Df();$i();_p=class n extends Se{get subMaterials(){return this._subMaterials}set subMaterials(e){this._subMaterials=e,this._hookArray(e)}getChildren(){return this.subMaterials}constructor(e,t){super(e,t,!0),this._waitingSubMaterialsUniqueIds=[],this.getScene().addMultiMaterial(this),this.subMaterials=[],this._storeEffectOnSubMeshes=!0}_hookArray(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._markAllSubMeshesAsTexturesDirty(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._markAllSubMeshesAsTexturesDirty(),a}}getSubMaterial(e){return e<0||e>=this.subMaterials.length?this.getScene().defaultMaterial:this.subMaterials[e]}getActiveTextures(){return super.getActiveTextures().concat(...this.subMaterials.map(e=>e?e.getActiveTextures():[]))}hasTexture(e){var t;if(super.hasTexture(e))return!0;for(let i=0;i=0&&r.multiMaterials.splice(s,1),super.dispose(e,t)}static ParseMultiMaterial(e,t){let i=new n(e.name,t);if(i.id=e.id,i._loadedUniqueId=e.uniqueId,ei&&ei.AddTagsTo(i,e.tags),e.materialsUniqueIds)i._waitingSubMaterialsUniqueIds=e.materialsUniqueIds;else for(let r of e.materials)i.subMaterials.push(t.getLastMaterialById(r));return i}};Ut("BABYLON.MultiMaterial",_p)});var aR,IH=I(()=>{aR=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var gp,oR,BD,lR,UD,VD,yl,q,Fi=I(()=>{mi();wi();Gg();Df();PD();Rl();ke();zt();_a();Zi();Tr();iR();$m();cv();ts();MH();tR();Dr();Lt();$i();Sn();Wm();IH();gp=class{},oR=class{constructor(){this.batchCache=new lR(this),this.batchCacheReplacementModeInFrozenMode=new lR(this),this.instancesBufferSize=512*4}},BD=class{constructor(){this.renderPasses={}}},lR=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},UD=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},VD=class{constructor(){this._areNormalsFrozen=!1,this._source=null,this.meshMap=null,this._preActivateId=-1,this._LODLevels=new Array,this._useLODScreenCoverage=!1,this._effectiveMaterial=null,this._forcedInstanceCount=0,this._overrideRenderingFillMode=null}},yl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},q=class n extends yr{static _GetDefaultSideOrientation(e){return e||n.FRONTSIDE}get useLODScreenCoverage(){return this._internalMeshDataInfo._useLODScreenCoverage}set useLODScreenCoverage(e){this._internalMeshDataInfo._useLODScreenCoverage=e,this._sortLODLevels()}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(e&&this._internalMeshDataInfo._sourcePositions&&(this.setVerticesData(L.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(L.NormalKind,this._internalMeshDataInfo._sourceNormals,!0),this._internalMeshDataInfo._sourcePositions=null,this._internalMeshDataInfo._sourceNormals=null),this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get onBeforeRenderObservable(){return this._internalMeshDataInfo._onBeforeRenderObservable||(this._internalMeshDataInfo._onBeforeRenderObservable=new te),this._internalMeshDataInfo._onBeforeRenderObservable}get onBeforeBindObservable(){return this._internalMeshDataInfo._onBeforeBindObservable||(this._internalMeshDataInfo._onBeforeBindObservable=new te),this._internalMeshDataInfo._onBeforeBindObservable}get onAfterRenderObservable(){return this._internalMeshDataInfo._onAfterRenderObservable||(this._internalMeshDataInfo._onAfterRenderObservable=new te),this._internalMeshDataInfo._onAfterRenderObservable}get onBetweenPassObservable(){return this._internalMeshDataInfo._onBetweenPassObservable||(this._internalMeshDataInfo._onBetweenPassObservable=new te),this._internalMeshDataInfo._onBetweenPassObservable}get onBeforeDrawObservable(){return this._internalMeshDataInfo._onBeforeDrawObservable||(this._internalMeshDataInfo._onBeforeDrawObservable=new te),this._internalMeshDataInfo._onBeforeDrawObservable}set onBeforeDraw(e){this._onBeforeDrawObserver&&this.onBeforeDrawObservable.remove(this._onBeforeDrawObserver),this._onBeforeDrawObserver=this.onBeforeDrawObservable.add(e)}get hasInstances(){return this.instances.length>0}get hasThinInstances(){return(this.forcedInstanceCount||this._thinInstanceDataStorage.instancesCount||0)>0}get forcedInstanceCount(){return this._internalMeshDataInfo._forcedInstanceCount}set forcedInstanceCount(e){this._internalMeshDataInfo._forcedInstanceCount=e}get sideOrientation(){return this._internalMeshDataInfo._sideOrientation}set sideOrientation(e){this._internalMeshDataInfo._sideOrientation=e,this._internalAbstractMeshDataInfo._sideOrientationHint=this._scene.useRightHandedSystem&&e===1||!this._scene.useRightHandedSystem&&e===0}get _effectiveSideOrientation(){return this._internalMeshDataInfo._effectiveSideOrientation}get overrideMaterialSideOrientation(){return this.sideOrientation}set overrideMaterialSideOrientation(e){this.sideOrientation=e,this.material&&(this.material.sideOrientation=null)}get overrideRenderingFillMode(){return this._internalMeshDataInfo._overrideRenderingFillMode}set overrideRenderingFillMode(e){this._internalMeshDataInfo._overrideRenderingFillMode=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){e&&(this.material&&this.material.sideOrientation===null||this._internalAbstractMeshDataInfo._sideOrientationHint)&&(e.sideOrientation=null),this._setMaterial(e)}get source(){return this._internalMeshDataInfo._source}get cloneMeshMap(){return this._internalMeshDataInfo.meshMap}get isUnIndexed(){return this._unIndexed}set isUnIndexed(e){this._unIndexed!==e&&(this._unIndexed=e,this._markSubMeshesAsAttributesDirty())}get worldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesData:void 0}get previousWorldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesPreviousData:void 0}get manualUpdateOfWorldMatrixInstancedBuffer(){return this._instanceDataStorage.manualUpdate}set manualUpdateOfWorldMatrixInstancedBuffer(e){this._instanceDataStorage.manualUpdate=e}get manualUpdateOfPreviousWorldMatrixInstancedBuffer(){return this._instanceDataStorage.previousManualUpdate}set manualUpdateOfPreviousWorldMatrixInstancedBuffer(e){this._instanceDataStorage.previousManualUpdate=e}get forceWorldMatrixInstancedBufferUpdate(){return this._instanceDataStorage.forceMatrixUpdates}set forceWorldMatrixInstancedBufferUpdate(e){this._instanceDataStorage.forceMatrixUpdates=e}_copySource(e,t,i=!0,r=!1){var a,o;let s=this.getScene();if(e._geometry&&e._geometry.applyToMesh(this),Sl.DeepCopy(e,this,["name","material","skeleton","instances","parent","uniqueId","source","metadata","morphTargetManager","hasInstances","worldMatrixInstancedBuffer","previousWorldMatrixInstancedBuffer","hasLODLevels","geometry","isBlocked","areNormalsFrozen","facetNb","isFacetDataEnabled","lightSources","useBones","isAnInstance","collider","edgesRenderer","forward","up","right","absolutePosition","absoluteScaling","absoluteRotationQuaternion","isWorldMatrixFrozen","nonUniformScaling","behaviors","worldMatrixFromCache","hasThinInstances","cloneMeshMap","hasBoundingInfo","physicsBody","physicsImpostor"],["_poseMatrix"]),this._internalMeshDataInfo._source=e,s.useClonedMeshMap&&(e._internalMeshDataInfo.meshMap||(e._internalMeshDataInfo.meshMap={}),e._internalMeshDataInfo.meshMap[this.uniqueId]=this),this._originalBuilderSideOrientation=e._originalBuilderSideOrientation,this._creationDataStorage=e._creationDataStorage,e._ranges){let l=e._ranges;for(let c in l)Object.prototype.hasOwnProperty.call(l,c)&&l[c]&&this.createAnimationRange(c,l[c].from,l[c].to)}if(e.metadata&&e.metadata.clone?this.metadata=e.metadata.clone():this.metadata=e.metadata,this._internalMetadata=e._internalMetadata,ei&&ei.HasTags(e)&&ei.AddTagsTo(this,ei.GetTags(e,!0)),this.setEnabled(e.isEnabled(!1)),this.parent=e.parent,this.setPivotMatrix(e.getPivotMatrix(),this._postMultiplyPivotMatrix),this.id=this.name+"."+e.id,this.material=e.material,!t){let l=e.getDescendants(!0);for(let c=0;c{m&&p&&(this._uniformBuffer?this.transferToEffect(_):p.bindOnlyWorldMatrix(_))};let o,l=!1;if(i&&i._addToSceneRootNodes===void 0){let m=i;o=(c=m.parent)!=null?c:null,r=(f=m.source)!=null?f:null,s=(d=m.doNotCloneChildren)!=null?d:!1,a=(h=m.clonePhysicsImpostor)!=null?h:!0,l=(u=m.cloneThinInstances)!=null?u:!1}else o=i;r&&this._copySource(r,s,a,l),o!==null&&(this.parent=o),this._instanceDataStorage.hardwareInstancedRendering=this.getEngine().getCaps().instancedArrays,this._internalMeshDataInfo._onMeshReadyObserverAdded=m=>{m.unregisterOnNextCall=!0,this.isReady(!0)?this.onMeshReadyObservable.notifyObservers(this):this._internalMeshDataInfo._checkReadinessObserver||(this._internalMeshDataInfo._checkReadinessObserver=this._scene.onBeforeRenderObservable.add(()=>{this.isReady(!0)&&(this._scene.onBeforeRenderObservable.remove(this._internalMeshDataInfo._checkReadinessObserver),this._internalMeshDataInfo._checkReadinessObserver=null,this.onMeshReadyObservable.notifyObservers(this))}))},this.onMeshReadyObservable=new te(this._internalMeshDataInfo._onMeshReadyObserverAdded),r&&r.onClonedObservable.notifyObservers(this)}instantiateHierarchy(e=null,t,i){let r=this.getTotalVertices()===0||t&&t.doNotInstantiate&&(t.doNotInstantiate===!0||t.doNotInstantiate(this))?this.clone("Clone of "+(this.name||this.id),e||this.parent,!0):this.createInstance("instance of "+(this.name||this.id));r.parent=e||this.parent,r.position=this.position.clone(),r.scaling=this.scaling.clone(),this.rotationQuaternion?r.rotationQuaternion=this.rotationQuaternion.clone():r.rotation=this.rotation.clone(),i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.getClassName()==="InstancedMesh"&&r.getClassName()==="Mesh"&&s.sourceMesh===this?s.instantiateHierarchy(r,{doNotInstantiate:t&&t.doNotInstantiate||!1,newSourcedMesh:r},i):s.instantiateHierarchy(r,t,i);return r}getClassName(){return"Mesh"}get _isMesh(){return!0}toString(e){let t=super.toString(e);if(t+=", n vertices: "+this.getTotalVertices(),t+=", parent: "+(this._waitingParentId?this._waitingParentId:this.parent?this.parent.name:"NONE"),this.animations)for(let i=0;i0}getLODLevels(){return this._internalMeshDataInfo._LODLevels}_sortLODLevels(){let e=this._internalMeshDataInfo._useLODScreenCoverage?-1:1;this._internalMeshDataInfo._LODLevels.sort((t,i)=>t.distanceOrScreenCoveragei.distanceOrScreenCoverage?-e:0)}addLODLevel(e,t){if(t&&t._masterMesh)return ee.Warn("You cannot use a mesh as LOD level twice"),this;let i=new aR(e,t);return this._internalMeshDataInfo._LODLevels.push(i),t&&(t._masterMesh=this),this._sortLODLevels(),this}getLODLevelAtDistance(e){let t=this._internalMeshDataInfo;for(let i=0;io*a)return this.onLODLevelSelection&&this.onLODLevelSelection(a,this,this),this;for(let l=0;l0||this.hasThinInstances);this.computeWorldMatrix();let a=this.material||r.defaultMaterial;if(a){if(a._storeEffectOnSubMeshes)for(let _ of this.subMeshes){let p=_.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,_,s))return!1}else if(!p.isReady(this,s))return!1}}else if(!a.isReady(this,s))return!1}let o=i.currentRenderPassId;for(let _ of this.lightSources){let p=_.getShadowGenerators();if(!p)continue;let g=p.values();for(let v=g.next();v.done!==!0;v=g.next()){let T=v.value;if(T&&(!((l=T.getShadowMap())!=null&&l.renderList)||(c=T.getShadowMap())!=null&&c.renderList&&((d=(f=T.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let E=(h=T.getShadowMap().renderPassIds)!=null?h:[i.currentRenderPassId];for(let A=0;A0){let i=this.getIndices();if(!i)return null;let r=i.length,s=!1;if(e)s=!0;else for(let a of this.subMeshes){if(a.indexStart+a.indexCount>r){s=!0;break}if(a.verticesStart+a.verticesCount>t){s=!0;break}}if(!s)return this.subMeshes[0]}return this.releaseSubMeshes(),new Ks(0,0,t,0,this.getTotalIndices()||(this.isUnIndexed?t:0),this)}subdivide(e){if(e<1)return;let t=this.getTotalIndices(),i=t/e|0,r=0;for(;i%3!==0;)i++;this.releaseSubMeshes();for(let s=0;s=t);s++)Ks.CreateFromIndices(0,r,r+i>=t?t-r:i,this,void 0,!1),r+=i;this.refreshBoundingInfo(),this.synchronizeInstances()}setVerticesData(e,t,i=!1,r){if(this._geometry)this._geometry.setVerticesData(e,t,i,r);else{let s=new Me;s.set(t,e);let a=this.getScene();new xn(xn.RandomId(),a,s,i,this)}return this}removeVerticesData(e){this._geometry&&this._geometry.removeVerticesData(e)}markVerticesDataAsUpdatable(e,t=!0){let i=this.getVertexBuffer(e);!i||i.isUpdatable()===t||this.setVerticesData(e,this.getVerticesData(e),t)}setVerticesBuffer(e,t=!0,i=null){return this._geometry||(this._geometry=xn.CreateGeometryForMesh(this)),this._geometry.setVerticesBuffer(e,i,t),this}updateVerticesData(e,t,i,r){return this._geometry?(r?(this.makeGeometryUnique(),this.updateVerticesData(e,t,i,!1)):this._geometry.updateVerticesData(e,t,i),this):this}updateMeshPositions(e,t=!0){let i=this.getVerticesData(L.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(L.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(L.NormalKind);if(!s)return this;Me.ComputeNormals(i,r,s),this.updateVerticesData(L.NormalKind,s,!1,!1)}return this}makeGeometryUnique(){if(!this._geometry)return this;if(this._geometry.meshes.length===1)return this;let e=this._geometry,t=this._geometry.copy(xn.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new xn(xn.RandomId(),this.getScene(),void 0,void 0,this)),s.setIndexBuffer(e,t,i,r)}setIndices(e,t=null,i=!1,r=!1){if(this._geometry)this._geometry.setIndices(e,t,i,r);else{let s=new Me;s.indices=e;let a=this.getScene();new xn(xn.RandomId(),a,s,i,this,t)}return this}updateIndices(e,t,i=!1){return this._geometry?(this._geometry.updateIndices(e,t,i),this):this}toLeftHanded(){return this._geometry?(this._geometry.toLeftHanded(),this):this}_bind(e,t,i,r=!0){if(!this._geometry)return this;let s=this.getScene().getEngine(),a;if(this._unIndexed)this._getRenderingFillMode(i)===Se.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Se.PointFillMode:a=null;break;case Se.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Se.TriangleFillMode:a=this._geometry.getIndexBuffer();break}return this._bindDirect(t,a,r)}_bindDirect(e,t,i=!0){if(!this._geometry)return this;if(this.morphTargetManager&&this.morphTargetManager.isUsingTextureForTargets&&this.morphTargetManager._bind(e),!i||!this._userInstancedBuffersStorage||this.hasThinInstances)this._geometry._bind(e,t);else{if(!this._instanceDataStorage.useMonoDataStorageRenderPass&&this._userInstancedBuffersStorage.renderPasses&&this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId]){let r=this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];for(let s in r)this._userInstancedBuffersStorage.vertexBuffers[s]=r[s]}this._geometry._bind(e,t,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;this._internalMeshDataInfo._onBeforeDrawObservable&&this._internalMeshDataInfo._onBeforeDrawObservable.notifyObservers(this);let s=this.getScene().getEngine(),a=s._currentMaterialContext,o=a&&a.useVertexPulling;return this._unIndexed&&t!==Se.WireFrameFillMode||t==Se.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Se.WireFrameFillMode?s.drawElementsType(t,0,e._linesIndexCount,this.forcedInstanceCount||i):o?s.drawArraysType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i):s.drawElementsType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i),this}registerBeforeRender(e){return this.onBeforeRenderObservable.add(e),this}unregisterBeforeRender(e){return this.onBeforeRenderObservable.removeCallback(e),this}registerAfterRender(e){return this.onAfterRenderObservable.add(e),this}unregisterAfterRender(e){return this.onAfterRenderObservable.removeCallback(e),this}_getInstancesRenderList(e,t=!1){let i=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._getInstanceDataStorage();if(this._instanceDataStorage.isFrozen){if(t)return i.batchCacheReplacementModeInFrozenMode.hardwareInstancedRendering[e]=!1,i.batchCacheReplacementModeInFrozenMode.renderSelf[e]=!0,i.batchCacheReplacementModeInFrozenMode;if(i.previousBatch)return i.previousBatch}let r=this.getScene(),s=r._isInIntermediateRendering(),a=s?this._internalAbstractMeshDataInfo._onlyForInstancesIntermediate:this._internalAbstractMeshDataInfo._onlyForInstances,o=i.batchCache;if(o.mustReturn=!1,o.renderSelf[e]=t||!a&&this.isEnabled()&&this.isVisible,o.visibleInstances[e]=null,i.visibleInstances&&!t){let l=i.visibleInstances,c=r.getRenderId(),f=s?l.intermediateDefaultRenderId:l.defaultRenderId;o.visibleInstances[e]=l[c],!o.visibleInstances[e]&&f&&(o.visibleInstances[e]=l[f])}return o.hardwareInstancedRendering[e]=!t&&this._instanceDataStorage.hardwareInstancedRendering&&o.visibleInstances[e]!==null&&o.visibleInstances[e]!==void 0,i.previousBatch=o,o}_updateInstancedBuffers(e,t,i,r,s,a){var v;let o=t.visibleInstances[e._id],l=o?o.length:0,c=t.parent,f=this._instanceDataStorage,d=c.instancesBuffer,h=c.instancesPreviousBuffer,u=0,m=0,_=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,g=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||g)){let T=this.getWorldMatrix();if(_){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u),f.masterMeshPreviousWorldMatrix.copyFrom(T)):(f.masterMeshPreviousWorldMatrix=T.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u))),T.copyToArray(c.instancesData,u);let S=T.asArray();c.instancesData[u+12]=S[12]-p.x,c.instancesData[u+13]=S[13]-p.y,c.instancesData[u+14]=S[14]-p.z,u+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let S=this._scene.activeCamera.globalPosition;for(let E=0;EE._distanceToCamera>A._distanceToCamera?-1:E._distanceToCamera1&&r.activeCamera===r.activeCameras[0]||a<=1,l=this._occlusionDataStorage&&this._occlusionDataStorage.occlusionForRenderPassId!==-1&&this._occlusionDataStorage.occlusionForRenderPassId!==s.currentRenderPassId;if(o&&this._checkOcclusionQuery(l)&&!this._occlusionDataStorage.forceRenderingWhenOccluded)return this;let c=this._getInstancesRenderList(e._id,!!i);if(c.mustReturn)return this;if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let f=0,d=null;this.ignoreCameraMaxZ&&r.activeCamera&&!r._isInIntermediateRendering()&&(f=r.activeCamera.maxZ,d=r.activeCamera,r.activeCamera.maxZ=0,r.updateTransformMatrix(!0)),this._internalMeshDataInfo._onBeforeRenderObservable&&this._internalMeshDataInfo._onBeforeRenderObservable.notifyObservers(this);let h=e.getRenderingMesh(),u=c.hardwareInstancedRendering[e._id]||h.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,_=e.getMaterial();if(!_)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==_){if(_._storeEffectOnSubMeshes){if(!_.isReadyForSubMesh(this,e,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!_.isReady(this,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=_}else if(_._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!_._storeEffectOnSubMeshes&&!_._getDrawWrapper()._wasPreviouslyReady)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(t){let w=this._internalMeshDataInfo._effectiveMaterial;if(w.alphaModes.length===1)s.setAlphaMode(w.alphaMode);else for(let G=0;Gg&&r++,E!==0&&T++,v+=E,g=E}if(c[T]++,T>a&&(a=T),v===0)s++;else{let S=1/v,E=0;for(let A=0;Af&&o++}}let d=this.skeleton.bones.length,h=this.getVerticesData(L.MatricesIndicesKind),u=this.getVerticesData(L.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let _="Number of Weights = "+i/4+` +fn main(input: FragmentInputs)->FragmentOutputs {fragmentOutputs.color=toRGBD(textureSample(textureSampler,textureSamplerSampler,input.vUV).rgb);}`;x.ShadersStoreWGSL[KP]||(x.ShadersStoreWGSL[KP]=_k);Mce={name:KP,shader:_k}});var zm,jP=I(()=>{hc();xP();zm=class{static ExpandRGBDTexture(e){let t=e._texture;if(!t||!e.isRGBD)return;let i=t.getEngine(),r=i.getCaps(),s=t.isReady,a=!1;r.textureHalfFloatRender&&r.textureHalfFloatLinearFiltering?(a=!0,t.type=2):r.textureFloatRender&&r.textureFloatLinearFiltering&&(a=!0,t.type=1),a&&(t.isReady=!1,t._isRGBD=!1,t.invertY=!1);let o=async()=>{let l=i.isWebGPU,c=l?1:0;t.isReady=!1,l?await Promise.resolve().then(()=>(WP(),kP)):await Promise.resolve().then(()=>(XP(),zP));let f=new Ci("rgbdDecode","rgbdDecode",null,null,1,null,3,i,!1,void 0,t.type,void 0,null,!1,void 0,c);f.externalTextureSamplerBinding=!0;let d=i.createRenderTargetTexture(t.width,{generateDepthBuffer:!1,generateMipMaps:!1,generateStencilBuffer:!1,samplingMode:t.samplingMode,type:t.type,format:5});f.onEffectCreatedObservable.addOnce(h=>{h.executeWhenCompiled(()=>{f.onApply=u=>{u._bindTexture("textureSampler",t),u.setFloat2("scale",1,1)},e.getScene().postProcessManager.directRender([f],d,!0),i.restoreDefaultFramebuffer(),i._releaseTexture(t),f&&f.dispose(),d._swapAndDie(t),t.isReady=!0})})};a&&(s?o():e.onLoadObservable.addOnce(o))}static async EncodeTextureToRGBD(e,t,i=0){return t.getEngine().isWebGPU?await Promise.resolve().then(()=>(vk(),gk)):await Promise.resolve().then(()=>(pk(),mk)),await EG("rgbdEncode",e,t,i,1,5)}}});var ZP=I(()=>{iP();Vg();vi.prototype._sphericalPolynomialTargetSize=0;vi.prototype.forceSphericalPolynomialsRecompute=function(){this._texture&&(this._texture._sphericalPolynomial=null,this._texture._sphericalPolynomialPromise=null,this._texture._sphericalPolynomialComputed=!1)};Object.defineProperty(vi.prototype,"sphericalPolynomial",{get:function(){if(this._texture){if(this._texture._sphericalPolynomial||this._texture._sphericalPolynomialComputed)return this._texture._sphericalPolynomial;if(this._texture.isReady)return this._texture._sphericalPolynomialPromise||(this._texture._sphericalPolynomialPromise=cc.ConvertCubeMapTextureToSphericalPolynomial(this),this._texture._sphericalPolynomialPromise===null?this._texture._sphericalPolynomialComputed=!0:this._texture._sphericalPolynomialPromise.then(n=>{this._texture._sphericalPolynomial=n,this._texture._sphericalPolynomialComputed=!0})),null}return null},set:function(n){this._texture&&(this._texture._sphericalPolynomial=n)},enumerable:!0,configurable:!0})});function Ak(n){let e=new DataView(n.buffer,n.byteOffset,n.byteLength),t=0;for(let a=0;aEk)throw new Error(`Unsupported babylon environment map version "${n.version}". Latest supported version is "${Ek}".`);return n.version===2||(n={...n,version:2,imageType:Xx}),n}function Ice(n,e){e=ev(e);let t=e.specular,i=Math.log2(e.width);if(i=Math.round(i)+1,t.mipmaps.length!==6*i)throw new Error(`Unsupported specular mipmaps number "${t.mipmaps.length}"`);let r=new Array(i);for(let s=0;s{if(t){let u=e.createTexture(null,!0,!0,null,1,null,m=>{h(m)},n);i==null||i.onEffectCreatedObservable.addOnce(m=>{m.executeWhenCompiled(()=>{i.externalTextureSamplerBinding=!0,i.onApply=_=>{_._bindTexture("textureSampler",u),_.setFloat2("scale",1,e._features.needsInvertingBitmap&&n instanceof ImageBitmap?-1:1)},e.scenes.length&&(e.scenes[0].postProcessManager.directRender([i],c,!0,s,a),e.restoreDefaultFramebuffer(),u.dispose(),URL.revokeObjectURL(r),d())})})}else{if(e._uploadImageToTexture(f,n,s,a),o){let u=l[a];u&&e._uploadImageToTexture(u._texture,n,s,0)}d()}})}async function Cce(n,e,t=Xx){let i=n.getEngine();n.format=5,n.type=0,n.generateMipMaps=!0,n._cachedAnisotropicFilteringLevel=null,i.updateTextureSamplingMode(3,n),await Rk(n,e,!0,t),n.isReady=!0}async function Pce(n,e,t,i=Xx,r=null){let s=n.getEngine(),a=new Vi(s,5),o=new vi(s,a);n._irradianceTexture=o,o._dominantDirection=r,a.isCube=!0,a.format=5,a.type=0,a.generateMipMaps=!0,a._cachedAnisotropicFilteringLevel=null,a.generateMipMaps=!0,a.width=t,a.height=t,s.updateTextureSamplingMode(3,a),await Rk(a,[e],!1,i),s.generateMipMapsForCubemap(a),a.isReady=!0}async function Rk(n,e,t,i=Xx){if(!pe.IsExponentOfTwo(n.width))throw new Error("Texture size must be a power of two");let r=xV(n.width)+1,s=n.getEngine(),a=!1,o=!1,l=null,c=null,f=null,d=s.getCaps();d.textureLOD?s._features.supportRenderAndCopyToLodForFloatTextures?d.textureHalfFloatRender&&d.textureHalfFloatLinearFiltering?(a=!0,n.type=2):d.textureFloatRender&&d.textureFloatLinearFiltering&&(a=!0,n.type=1):a=!1:(a=!1,o=t);let h=0;if(a)s.isWebGPU?(h=1,await Promise.resolve().then(()=>(WP(),kP))):await Promise.resolve().then(()=>(XP(),zP)),l=new Ci("rgbdDecode","rgbdDecode",null,null,1,null,3,s,!1,void 0,n.type,void 0,null,!1,void 0,h),n._isRGBD=!1,n.invertY=!1,c=s.createRenderTargetCubeTexture(n.width,{generateDepthBuffer:!1,generateMipMaps:!0,generateStencilBuffer:!1,samplingMode:3,type:n.type,format:5});else if(n._isRGBD=!0,n.invertY=!0,o){f={};let _=n._lodGenerationScale,p=n._lodGenerationOffset;for(let g=0;g<3;g++){let T=1-g/2,S=p,E=(r-1)*_+p,A=S+(E-S)*T,R=Math.round(Math.min(Math.max(A,0),E)),M=new Vi(s,2);M.isCube=!0,M.invertY=!0,M.generateMipMaps=!1,s.updateTextureSamplingMode(2,M);let y=new vi(null);switch(y._isCube=!0,y._texture=M,f[R]=y,g){case 0:n._lodTextureLow=y;break;case 1:n._lodTextureMid=y;break;case 2:n._lodTextureHigh=y;break}}}let u=[];for(let m=0;mawait Tk(E,s,a,l,T,_,m,o,f,c,n));else{let E=new Image;E.src=T,S=new Promise((A,R)=>{E.onload=()=>{Tk(E,s,a,l,T,_,m,o,f,c,n).then(()=>A()).catch(M=>{R(M)})},E.onerror=M=>{R(M)}})}u.push(S)}if(await Promise.all(u),e.length{wi();ke();jn();Ng();Ws();Vg();Ys();hc();Lt();jP();_P();ZP();Vm();Xx="image/png",Ek=2,Sk=[134,22,135,150,246,214,150,54]});var Ik={};Fe(Ik,{_ENVTextureLoader:()=>qP});var qP,yk=I(()=>{Mk();qP=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){if(Array.isArray(e))return;let a=Ak(e);if(a){t.width=a.width,t.height=a.width;try{bk(t,a),xk(t,e,a).then(()=>{t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()},o=>{s==null||s("Can not upload environment levels",o)})}catch(o){s==null||s("Can not upload environment file",o)}}else s&&s("Can not parse the environment file",null)}loadData(){throw".env not supported in 2d."}}});var vc,Ck=I(()=>{ke();vc=class{static ConvertPanoramaToCubemap(e,t,i,r,s=!1,a=!0){if(!e)throw"ConvertPanoramaToCubemap: input cannot be null";let o;if(e.length!=t*i*3){if(e.length!=t*i*4)throw"ConvertPanoramaToCubemap: input size is wrong";o=4}else o=3;let l=this.CreateCubemapTexture(r,this.FACE_FRONT,e,t,i,s,a,o),c=this.CreateCubemapTexture(r,this.FACE_BACK,e,t,i,s,a,o),f=this.CreateCubemapTexture(r,this.FACE_LEFT,e,t,i,s,a,o),d=this.CreateCubemapTexture(r,this.FACE_RIGHT,e,t,i,s,a,o),h=this.CreateCubemapTexture(r,this.FACE_UP,e,t,i,s,a,o),u=this.CreateCubemapTexture(r,this.FACE_DOWN,e,t,i,s,a,o);return{front:l,back:c,left:f,right:d,up:h,down:u,size:r,type:1,format:4,gammaSpace:!1}}static CreateCubemapTexture(e,t,i,r,s,a,o,l){let c=new ArrayBuffer(e*e*4*3),f=new Float32Array(c),d=a?Math.max(1,Math.round(r/4/e)):1,h=1/d,u=h*h,m=t[1].subtract(t[0]).scale(h/e),_=t[3].subtract(t[2]).scale(h/e),p=1/e,g=0;for(let v=0;vMath.PI;)o-=2*Math.PI;let c=o/Math.PI,f=l/Math.PI;c=c*.5+.5;let d=Math.round(c*i);d<0?d=0:d>=i&&(d=i-1);let h=Math.round(f*r);h<0?h=0:h>=r&&(h=r-1);let u=a?r-h-1:h,m=t[u*i*s+d*s+0],_=t[u*i*s+d*s+1],p=t[u*i*s+d*s+2];return{r:m,g:_,b:p}}};vc.FACE_LEFT=[new b(-1,-1,-1),new b(1,-1,-1),new b(-1,1,-1),new b(1,1,-1)];vc.FACE_RIGHT=[new b(1,-1,1),new b(-1,-1,1),new b(1,1,1),new b(-1,1,1)];vc.FACE_FRONT=[new b(1,-1,-1),new b(1,-1,1),new b(1,1,-1),new b(1,1,1)];vc.FACE_BACK=[new b(-1,-1,1),new b(-1,-1,-1),new b(-1,1,1),new b(-1,1,-1)];vc.FACE_DOWN=[new b(1,1,-1),new b(1,1,1),new b(-1,1,-1),new b(-1,1,1)];vc.FACE_UP=[new b(-1,-1,-1),new b(-1,-1,1),new b(1,-1,-1),new b(1,-1,1)]});function Dce(n,e){return e>1023?n*Math.pow(2,1023)*Math.pow(2,e-1023):e<-1074?n*Math.pow(2,-1074)*Math.pow(2,e+1074):n*Math.pow(2,e)}function Pk(n,e,t,i,r,s){r>0?(r=Dce(1,r-136),n[s+0]=e*r,n[s+1]=t*r,n[s+2]=i*r):(n[s+0]=0,n[s+1]=0,n[s+2]=0)}function QP(n,e){let t="",i;for(let r=e;r32767)throw"HDR Bad header format, unsupported size";return r+=e.length+1,{height:l,width:o,dataPosition:r}}function Lk(n,e){return Lce(n,e)}function Lce(n,e){let t=e.height,i=e.width,r,s,a,o,l,c=e.dataPosition,f,d,h,u=new ArrayBuffer(i*4),m=new Uint8Array(u),_=new ArrayBuffer(e.width*e.height*4*3),p=new Float32Array(_);for(;t>0;){if(r=n[c++],s=n[c++],a=n[c++],o=n[c++],r!=2||s!=2||a&128||e.width<8||e.width>32767)return Oce(n,e);if((a<<8|o)!=i)throw"HDR Bad header format, wrong scan line width";for(f=0,h=0;h<4;h++)for(d=(h+1)*i;f128){if(l=r-128,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (run)";for(;l-- >0;)m[f++]=s}else{if(l=r,l==0||l>d-f)throw"HDR Bad Format, bad scanline data (non-run)";if(m[f++]=s,--l>0)for(let g=0;g0;){for(l=0;l{Ck()});var Nk={};Fe(Nk,{_HDRTextureLoader:()=>$P});var $P,wk=I(()=>{Ok();$P=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".hdr not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Dk(r),a=Lk(r,s),o=s.width*s.height,l=new Float32Array(o*4);for(let c=0;c{let c=t.getEngine();t.type=1,t.format=5,t._gammaSpace=!1,c._uploadDataToTextureDirectly(t,l)})}}});var Lo,Fk=I(()=>{Lt();Lo=class n{constructor(e,t){if(this.data=e,this.isInvalid=!1,!n.IsValid(e)){this.isInvalid=!0,ee.Error("texture missing KTX identifier");return}let i=Uint32Array.BYTES_PER_ELEMENT,r=new DataView(this.data.buffer,this.data.byteOffset+12,13*i),a=r.getUint32(0,!0)===67305985;if(this.glType=r.getUint32(1*i,a),this.glTypeSize=r.getUint32(2*i,a),this.glFormat=r.getUint32(3*i,a),this.glInternalFormat=r.getUint32(4*i,a),this.glBaseInternalFormat=r.getUint32(5*i,a),this.pixelWidth=r.getUint32(6*i,a),this.pixelHeight=r.getUint32(7*i,a),this.pixelDepth=r.getUint32(8*i,a),this.numberOfArrayElements=r.getUint32(9*i,a),this.numberOfFaces=r.getUint32(10*i,a),this.numberOfMipmapLevels=r.getUint32(11*i,a),this.bytesOfKeyValueData=r.getUint32(12*i,a),this.glType!==0){ee.Error("only compressed formats currently supported"),this.isInvalid=!0;return}else this.numberOfMipmapLevels=Math.max(1,this.numberOfMipmapLevels);if(this.pixelHeight===0||this.pixelDepth!==0){ee.Error("only 2D textures currently supported"),this.isInvalid=!0;return}if(this.numberOfArrayElements!==0){ee.Error("texture arrays not currently supported"),this.isInvalid=!0;return}if(this.numberOfFaces!==t){ee.Error("number of faces expected"+t+", but found "+this.numberOfFaces),this.isInvalid=!0;return}this.loadType=n.COMPRESSED_2D}uploadLevels(e,t){switch(this.loadType){case n.COMPRESSED_2D:this._upload2DCompressedLevels(e,t);break;case n.TEX_2D:case n.COMPRESSED_3D:case n.TEX_3D:}}_upload2DCompressedLevels(e,t){let i=n.HEADER_LEN+this.bytesOfKeyValueData,r=this.pixelWidth,s=this.pixelHeight,a=t?this.numberOfMipmapLevels:1;for(let o=0;o=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===49&&t[6]===49&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Lo.HEADER_LEN=64;Lo.COMPRESSED_2D=0;Lo.COMPRESSED_3D=1;Lo.TEX_2D=2;Lo.TEX_3D=3});var JP,tv,Bk=I(()=>{JP=class{constructor(e){this._pendingActions=new Array,this._workerInfos=e.map(t=>({workerPromise:Promise.resolve(t),idle:!0}))}dispose(){for(let e of this._workerInfos)e.workerPromise.then(t=>{t.terminate()});this._workerInfos.length=0,this._pendingActions.length=0}push(e){this._executeOnIdleWorker(e)||this._pendingActions.push(e)}_executeOnIdleWorker(e){for(let t of this._workerInfos)if(t.idle)return this._execute(t,e),!0;return!1}_execute(e,t){e.idle=!1,e.workerPromise.then(i=>{t(i,()=>{let r=this._pendingActions.shift();r?this._execute(e,r):e.idle=!0})})}},tv=class n extends JP{constructor(e,t,i=n.DefaultOptions){super([]),this._maxWorkers=e,this._createWorkerAsync=t,this._options=i}push(e){if(!this._executeOnIdleWorker(e))if(this._workerInfos.length{t(i,()=>{r(),e.idle&&(e.timeoutId=setTimeout(()=>{e.workerPromise.then(a=>{a.terminate()});let s=this._workerInfos.indexOf(e);s!==-1&&this._workerInfos.splice(s,1)},this._options.idleTimeElapsedBeforeRelease))})})}};tv.DefaultOptions={idleTimeElapsedBeforeRelease:1e3}});var Uk,Xm,Vk,Gk=I(()=>{(function(n){n[n.ETC1S=0]="ETC1S",n[n.UASTC4x4=1]="UASTC4x4"})(Uk||(Uk={}));(function(n){n[n.ASTC_4X4_RGBA=0]="ASTC_4X4_RGBA",n[n.ASTC_4x4_RGBA=0]="ASTC_4x4_RGBA",n[n.BC7_RGBA=1]="BC7_RGBA",n[n.BC3_RGBA=2]="BC3_RGBA",n[n.BC1_RGB=3]="BC1_RGB",n[n.PVRTC1_4_RGBA=4]="PVRTC1_4_RGBA",n[n.PVRTC1_4_RGB=5]="PVRTC1_4_RGB",n[n.ETC2_RGBA=6]="ETC2_RGBA",n[n.ETC1_RGB=7]="ETC1_RGB",n[n.RGBA32=8]="RGBA32",n[n.R8=9]="R8",n[n.RG8=10]="RG8"})(Xm||(Xm={}));(function(n){n[n.COMPRESSED_RGBA_BPTC_UNORM_EXT=36492]="COMPRESSED_RGBA_BPTC_UNORM_EXT",n[n.COMPRESSED_RGBA_ASTC_4X4_KHR=37808]="COMPRESSED_RGBA_ASTC_4X4_KHR",n[n.COMPRESSED_RGB_S3TC_DXT1_EXT=33776]="COMPRESSED_RGB_S3TC_DXT1_EXT",n[n.COMPRESSED_RGBA_S3TC_DXT5_EXT=33779]="COMPRESSED_RGBA_S3TC_DXT5_EXT",n[n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG=35842]="COMPRESSED_RGBA_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG=35840]="COMPRESSED_RGB_PVRTC_4BPPV1_IMG",n[n.COMPRESSED_RGBA8_ETC2_EAC=37496]="COMPRESSED_RGBA8_ETC2_EAC",n[n.COMPRESSED_RGB8_ETC2=37492]="COMPRESSED_RGB8_ETC2",n[n.COMPRESSED_RGB_ETC1_WEBGL=36196]="COMPRESSED_RGB_ETC1_WEBGL",n[n.RGBA8Format=32856]="RGBA8Format",n[n.R8Format=33321]="R8Format",n[n.RG8Format=33323]="RG8Format"})(Vk||(Vk={}))});function iv(n,e){let t=(e==null?void 0:e.jsDecoderModule)||KTX2DECODER;n&&(n.wasmBaseUrl&&(t.Transcoder.WasmBaseUrl=n.wasmBaseUrl),n.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmModuleURL=n.wasmUASTCToASTC),n.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmModuleURL=n.wasmUASTCToBC7),n.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmModuleURL=n.wasmUASTCToRGBA_UNORM),n.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmModuleURL=n.wasmUASTCToRGBA_SRGB),n.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmModuleURL=n.wasmUASTCToR8_UNORM),n.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmModuleURL=n.wasmUASTCToRG8_UNORM),n.jsMSCTranscoder&&(t.MSCTranscoder.JSModuleURL=n.jsMSCTranscoder),n.wasmMSCTranscoder&&(t.MSCTranscoder.WasmModuleURL=n.wasmMSCTranscoder),n.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmModuleURL=n.wasmZSTDDecoder)),e&&(e.wasmUASTCToASTC&&(t.LiteTranscoder_UASTC_ASTC.WasmBinary=e.wasmUASTCToASTC),e.wasmUASTCToBC7&&(t.LiteTranscoder_UASTC_BC7.WasmBinary=e.wasmUASTCToBC7),e.wasmUASTCToRGBA_UNORM&&(t.LiteTranscoder_UASTC_RGBA_UNORM.WasmBinary=e.wasmUASTCToRGBA_UNORM),e.wasmUASTCToRGBA_SRGB&&(t.LiteTranscoder_UASTC_RGBA_SRGB.WasmBinary=e.wasmUASTCToRGBA_SRGB),e.wasmUASTCToR8_UNORM&&(t.LiteTranscoder_UASTC_R8_UNORM.WasmBinary=e.wasmUASTCToR8_UNORM),e.wasmUASTCToRG8_UNORM&&(t.LiteTranscoder_UASTC_RG8_UNORM.WasmBinary=e.wasmUASTCToRG8_UNORM),e.jsMSCTranscoder&&(t.MSCTranscoder.JSModule=e.jsMSCTranscoder),e.wasmMSCTranscoder&&(t.MSCTranscoder.WasmBinary=e.wasmMSCTranscoder),e.wasmZSTDDecoder&&(t.ZSTDDecoder.WasmBinary=e.wasmZSTDDecoder))}function kk(n){typeof n=="undefined"&&typeof KTX2DECODER!="undefined"&&(n=KTX2DECODER);let e;onmessage=t=>{if(t.data)switch(t.data.action){case"init":{let i=t.data.urls;i&&(i.jsDecoderModule&&typeof n=="undefined"&&(importScripts(i.jsDecoderModule),n=KTX2DECODER),iv(i)),t.data.wasmBinaries&&iv(void 0,{...t.data.wasmBinaries,jsDecoderModule:n}),e=new n.KTX2Decoder,postMessage({action:"init"});break}case"setDefaultDecoderOptions":{n.KTX2Decoder.DefaultDecoderOptions=t.data.options;break}case"decode":e.decode(t.data.data,t.data.caps,t.data.options).then(i=>{let r=[];for(let s=0;s{postMessage({action:"decoded",success:!1,msg:i})});break}}}async function Wk(n,e,t){return await new Promise((i,r)=>{let s=o=>{n.removeEventListener("error",s),n.removeEventListener("message",a),r(o)},a=o=>{o.data.action==="init"&&(n.removeEventListener("error",s),n.removeEventListener("message",a),i(n))};n.addEventListener("error",s),n.addEventListener("message",a),n.postMessage({action:"init",urls:t,wasmBinaries:e})})}var Hk=I(()=>{});var eD,Ec,zk=I(()=>{Bk();wi();Gk();Hk();eD=class{constructor(){this._isDirty=!0,this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=!0,this._ktx2DecoderOptions={}}get isDirty(){return this._isDirty}get useRGBAIfASTCBC7NotAvailableWhenUASTC(){return this._useRGBAIfASTCBC7NotAvailableWhenUASTC}set useRGBAIfASTCBC7NotAvailableWhenUASTC(e){this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==e&&(this._useRGBAIfASTCBC7NotAvailableWhenUASTC=e,this._isDirty=!0)}get useRGBAIfOnlyBC1BC3AvailableWhenUASTC(){return this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC}set useRGBAIfOnlyBC1BC3AvailableWhenUASTC(e){this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC!==e&&(this._useRGBAIfOnlyBC1BC3AvailableWhenUASTC=e,this._isDirty=!0)}get forceRGBA(){return this._forceRGBA}set forceRGBA(e){this._forceRGBA!==e&&(this._forceRGBA=e,this._isDirty=!0)}get forceR8(){return this._forceR8}set forceR8(e){this._forceR8!==e&&(this._forceR8=e,this._isDirty=!0)}get forceRG8(){return this._forceRG8}set forceRG8(e){this._forceRG8!==e&&(this._forceRG8=e,this._isDirty=!0)}get bypassTranscoders(){return this._bypassTranscoders}set bypassTranscoders(e){this._bypassTranscoders!==e&&(this._bypassTranscoders=e,this._isDirty=!0)}_getKTX2DecoderOptions(){if(!this._isDirty)return this._ktx2DecoderOptions;this._isDirty=!1;let e={};return this._useRGBAIfASTCBC7NotAvailableWhenUASTC!==void 0&&(e.useRGBAIfASTCBC7NotAvailableWhenUASTC=this._useRGBAIfASTCBC7NotAvailableWhenUASTC),this._forceRGBA!==void 0&&(e.forceRGBA=this._forceRGBA),this._forceR8!==void 0&&(e.forceR8=this._forceR8),this._forceRG8!==void 0&&(e.forceRG8=this._forceRG8),this._bypassTranscoders!==void 0&&(e.bypassTranscoders=this._bypassTranscoders),this.useRGBAIfOnlyBC1BC3AvailableWhenUASTC&&(e.transcodeFormatDecisionTree={UASTC:{transcodeFormat:[Xm.BC1_RGB,Xm.BC3_RGBA],yes:{transcodeFormat:Xm.RGBA32,engineFormat:32856,roundToMultiple4:!1}}}),this._ktx2DecoderOptions=e,e}},Ec=class n{static GetDefaultNumWorkers(){return typeof navigator!="object"||!navigator.hardwareConcurrency?1:Math.min(Math.floor(navigator.hardwareConcurrency*.5),4)}static _Initialize(e){if(n._WorkerPoolPromise||n._DecoderModulePromise)return;let t={wasmBaseUrl:pe.ScriptBaseUrl,jsDecoderModule:pe.GetBabylonScriptURL(this.URLConfig.jsDecoderModule,!0),wasmUASTCToASTC:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToASTC,!0),wasmUASTCToBC7:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToBC7,!0),wasmUASTCToRGBA_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_UNORM,!0),wasmUASTCToRGBA_SRGB:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRGBA_SRGB,!0),wasmUASTCToR8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToR8_UNORM,!0),wasmUASTCToRG8_UNORM:pe.GetBabylonScriptURL(this.URLConfig.wasmUASTCToRG8_UNORM,!0),jsMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.jsMSCTranscoder,!0),wasmMSCTranscoder:pe.GetBabylonScriptURL(this.URLConfig.wasmMSCTranscoder,!0),wasmZSTDDecoder:pe.GetBabylonScriptURL(this.URLConfig.wasmZSTDDecoder,!0)};e&&typeof Worker=="function"&&typeof URL!="undefined"?n._WorkerPoolPromise=new Promise(i=>{let r=`${iv}(${kk})()`,s=URL.createObjectURL(new Blob([r],{type:"application/javascript"}));i(new tv(e,async()=>await Wk(new Worker(s),void 0,t)))}):typeof n._KTX2DecoderModule=="undefined"?n._DecoderModulePromise=pe.LoadBabylonScriptAsync(t.jsDecoderModule).then(()=>(n._KTX2DecoderModule=KTX2DECODER,n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,iv(t,n._KTX2DecoderModule),new n._KTX2DecoderModule.KTX2Decoder)):(n._KTX2DecoderModule.MSCTranscoder.UseFromWorkerThread=!1,n._KTX2DecoderModule.WASMMemoryManager.LoadBinariesFromCurrentThread=!0,n._DecoderModulePromise=Promise.resolve(new n._KTX2DecoderModule.KTX2Decoder))}constructor(e,t=n.DefaultNumWorkers){var r,s;this._engine=e;let i=typeof t=="object"&&t.workerPool||n.WorkerPool;if(i)n._WorkerPoolPromise=Promise.resolve(i);else{typeof t=="object"?n._KTX2DecoderModule=(r=t==null?void 0:t.binariesAndModulesContainer)==null?void 0:r.jsDecoderModule:typeof KTX2DECODER!="undefined"&&(n._KTX2DecoderModule=KTX2DECODER);let a=typeof t=="number"?t:(s=t.numWorkers)!=null?s:n.DefaultNumWorkers;n._Initialize(a)}}async _uploadAsync(e,t,i){let r=this._engine.getCaps(),s={astc:!!r.astc,bptc:!!r.bptc,s3tc:!!r.s3tc,pvrtc:!!r.pvrtc,etc2:!!r.etc2,etc1:!!r.etc1};if(n._WorkerPoolPromise){let a=await n._WorkerPoolPromise;return await new Promise((o,l)=>{a.push((c,f)=>{let d=m=>{c.removeEventListener("error",d),c.removeEventListener("message",h),l(m),f()},h=m=>{if(m.data.action==="decoded"){if(c.removeEventListener("error",d),c.removeEventListener("message",h),!m.data.success)l({message:m.data.msg});else try{this._createTexture(m.data.decodedData,t,i),o()}catch(_){l({message:_})}f()}};c.addEventListener("error",d),c.addEventListener("message",h),c.postMessage({action:"setDefaultDecoderOptions",options:n.DefaultDecoderOptions._getKTX2DecoderOptions()});let u=new Uint8Array(e.byteLength);u.set(new Uint8Array(e.buffer,e.byteOffset,e.byteLength)),c.postMessage({action:"decode",data:u,caps:s,options:i},[u.buffer])})})}else if(n._DecoderModulePromise){let a=await n._DecoderModulePromise;return n.DefaultDecoderOptions.isDirty&&(n._KTX2DecoderModule.KTX2Decoder.DefaultDecoderOptions=n.DefaultDecoderOptions._getKTX2DecoderOptions()),await new Promise((o,l)=>{a.decode(e,r).then(c=>{this._createTexture(c,t),o()}).catch(c=>{l({message:c})})})}throw new Error("KTX2 decoder module is not available")}_createTexture(e,t,i){this._engine._bindTextureDirectly(3553,t),i&&(i.transcodedFormat=e.transcodedFormat,i.isInGammaSpace=e.isInGammaSpace,i.hasAlpha=e.hasAlpha,i.transcoderName=e.transcoderName);let s=!0;switch(e.transcodedFormat){case 32856:t.type=0,t.format=5;break;case 33321:t.type=0,t.format=6;break;case 33323:t.type=0,t.format=7;break;default:t.format=e.transcodedFormat,s=!1;break}if(t._gammaSpace=e.isInGammaSpace,t.generateMipMaps=e.mipmaps.length>1,t.width=e.mipmaps[0].width,t.height=e.mipmaps[0].height,e.errors)throw new Error("KTX2 container - could not transcode the data. "+e.errors);for(let a=0;a=12){let t=new Uint8Array(e.buffer,e.byteOffset,12);if(t[0]===171&&t[1]===75&&t[2]===84&&t[3]===88&&t[4]===32&&t[5]===50&&t[6]===48&&t[7]===187&&t[8]===13&&t[9]===10&&t[10]===26&&t[11]===10)return!0}return!1}};Ec.URLConfig={jsDecoderModule:"https://cdn.babylonjs.com/babylon.ktx2Decoder.js",wasmUASTCToASTC:null,wasmUASTCToBC7:null,wasmUASTCToRGBA_UNORM:null,wasmUASTCToRGBA_SRGB:null,wasmUASTCToR8_UNORM:null,wasmUASTCToRG8_UNORM:null,jsMSCTranscoder:null,wasmMSCTranscoder:null,wasmZSTDDecoder:null};Ec.DefaultNumWorkers=Ec.GetDefaultNumWorkers();Ec.DefaultDecoderOptions=new eD});var iD={};Fe(iD,{_KTXTextureLoader:()=>tD});function Nce(n){switch(n){case 35916:return 33776;case 35918:return 33778;case 35919:return 33779;case 37493:return 37492;case 37497:return 37496;case 37495:return 37494;case 37840:return 37808;case 37841:return 37809;case 37842:return 37810;case 37843:return 37811;case 37844:return 37812;case 37845:return 37813;case 37846:return 37814;case 37847:return 37815;case 37848:return 37816;case 37849:return 37817;case 37850:return 37818;case 37851:return 37819;case 37852:return 37820;case 37853:return 37821;case 36493:return 36492}return null}var tD,rD=I(()=>{Fk();zk();Lt();tD=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r){if(Array.isArray(e))return;t._invertVScale=!t.invertY;let s=t.getEngine(),a=new Lo(e,6),o=a.numberOfMipmapLevels>1&&t.generateMipMaps;s._unpackFlipY(!0),a.uploadLevels(t,t.generateMipMaps),t.width=a.pixelWidth,t.height=a.pixelHeight,s._setCubeMapTextureParams(t,o,a.numberOfMipmapLevels-1),t.isReady=!0,t.onLoadedObservable.notifyObservers(t),t.onLoadedObservable.clear(),r&&r()}loadData(e,t,i,r){if(Lo.IsValid(e)){t._invertVScale=!t.invertY;let s=new Lo(e,1),a=Nce(s.glInternalFormat);a?(t.format=a,t._useSRGBBuffer=t.getEngine()._getUseSRGBBuffer(!0,t.generateMipMaps),t._gammaSpace=!0):t.format=s.glInternalFormat,i(s.pixelWidth,s.pixelHeight,t.generateMipMaps,!0,()=>{s.uploadLevels(t,t.generateMipMaps)},s.isInvalid)}else Ec.IsValid(e)?new Ec(t.getEngine())._uploadAsync(e,t,r).then(()=>{i(t.width,t.height,t.generateMipMaps,!0,()=>{},!1)},a=>{ee.Warn(`Failed to load KTX2 texture data: ${a.message}`),i(0,0,!1,!1,()=>{},!0)}):(ee.Error("texture missing KTX identifier"),i(0,0,!1,!1,()=>{},!0))}}});function Yx(n){let e=0;return{id_length:n[e++],colormap_type:n[e++],image_type:n[e++],colormap_index:n[e++]|n[e++]<<8,colormap_length:n[e++]|n[e++]<<8,colormap_size:n[e++],origin:[n[e++]|n[e++]<<8,n[e++]|n[e++]<<8],width:n[e++]|n[e++]<<8,height:n[e++]|n[e++]<<8,pixel_size:n[e++],flags:n[e]}}function nD(n,e){if(e.length<19){ee.Error("Unable to load TGA file - Not enough data to contain header");return}let t=18,i=Yx(e);if(i.id_length+t>e.length){ee.Error("Unable to load TGA file - Not enough data");return}t+=i.id_length;let r=!1,s=!1,a=!1;switch(i.image_type){case Uce:r=!0;case wce:s=!0;break;case Vce:r=!0;case Fce:break;case Gce:r=!0;case Bce:a=!0;break}let o,l=i.pixel_size>>3,c=i.width*i.height*l,f;if(s&&(f=e.subarray(t,t+=i.colormap_length*(i.colormap_size>>3))),r){o=new Uint8Array(c);let S,E,A,R=0,M=new Uint8Array(l);for(;t>Wce){default:case Xce:d=0,u=1,p=i.width,h=0,m=1,_=i.height;break;case Hce:d=0,u=1,p=i.width,h=i.height-1,m=-1,_=-1;break;case Yce:d=i.width-1,u=-1,p=-1,h=0,m=1,_=i.height;break;case zce:d=i.width-1,u=-1,p=-1,h=i.height-1,m=-1,_=-1;break}let g="_getImageData"+(a?"Grey":"")+i.pixel_size+"bits",v=Jce[g](i,f,o,h,m,_,d,u,p);n.getEngine()._uploadDataToTextureDirectly(n,v)}function Kce(n,e,t,i,r,s,a,o,l){let c=t,f=e,d=n.width,h=n.height,u,m=0,_,p,g=new Uint8Array(d*h*4);for(p=i;p!==s;p+=r)for(_=a;_!==l;_+=o,m++)u=c[m],g[(_+d*p)*4+3]=255,g[(_+d*p)*4+2]=f[u*3+0],g[(_+d*p)*4+1]=f[u*3+1],g[(_+d*p)*4+0]=f[u*3+2];return g}function jce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u+=2){h=c[u+0]+(c[u+1]<<8);let g=((h&31744)>>10)*255/31|0,v=((h&992)>>5)*255/31|0,T=(h&31)*255/31|0;p[(m+f*_)*4+0]=g,p[(m+f*_)*4+1]=v,p[(m+f*_)*4+2]=T,p[(m+f*_)*4+3]=h&32768?0:255}return p}function Zce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=3)_[(u+f*m)*4+3]=255,_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2];return _}function qce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=4)_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+1]=c[h+1],_[(u+f*m)*4+0]=c[h+2],_[(u+f*m)*4+3]=c[h+3];return _}function Qce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h,u=0,m,_,p=new Uint8Array(f*d*4);for(_=i;_!==s;_+=r)for(m=a;m!==l;m+=o,u++)h=c[u],p[(m+f*_)*4+0]=h,p[(m+f*_)*4+1]=h,p[(m+f*_)*4+2]=h,p[(m+f*_)*4+3]=255;return p}function $ce(n,e,t,i,r,s,a,o,l){let c=t,f=n.width,d=n.height,h=0,u,m,_=new Uint8Array(f*d*4);for(m=i;m!==s;m+=r)for(u=a;u!==l;u+=o,h+=2)_[(u+f*m)*4+0]=c[h+0],_[(u+f*m)*4+1]=c[h+0],_[(u+f*m)*4+2]=c[h+0],_[(u+f*m)*4+3]=c[h+1];return _}var wce,Fce,Bce,Uce,Vce,Gce,kce,Wce,Hce,zce,Xce,Yce,Jce,Xk=I(()=>{Lt();wce=1,Fce=2,Bce=3,Uce=9,Vce=10,Gce=11,kce=48,Wce=4,Hce=0,zce=1,Xce=2,Yce=3;Jce={GetTGAHeader:Yx,UploadContent:nD,_getImageData8bits:Kce,_getImageData16bits:jce,_getImageData24bits:Zce,_getImageData32bits:qce,_getImageDataGrey8bits:Qce,_getImageDataGrey16bits:$ce}});var Yk={};Fe(Yk,{_TGATextureLoader:()=>sD});var sD,Kk=I(()=>{Xk();sD=class{constructor(){this.supportCascades=!1}loadCubeData(){throw".env not supported in Cube."}loadData(e,t,i){let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Yx(r);i(s.width,s.height,t.generateMipMaps,!1,()=>{nD(t,r)})}}});var rv=I(()=>{});function tfe(){let n=new ArrayBuffer(4),e=new Float32Array(n),t=new Uint32Array(n),i=new Uint32Array(512),r=new Uint32Array(512);for(let l=0;l<256;++l){let c=l-127;c<-27?(i[l]=0,i[l|256]=32768,r[l]=24,r[l|256]=24):c<-14?(i[l]=1024>>-c-14,i[l|256]=1024>>-c-14|32768,r[l]=-c-1,r[l|256]=-c-1):c<=15?(i[l]=c+15<<10,i[l|256]=c+15<<10|32768,r[l]=13,r[l|256]=13):c<128?(i[l]=31744,i[l|256]=64512,r[l]=24,r[l|256]=24):(i[l]=31744,i[l|256]=64512,r[l]=13,r[l|256]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let l=1;l<1024;++l){let c=l<<13,f=0;for(;(c&8388608)===0;)c<<=1,f-=8388608;c&=-8388609,f+=947912704,s[l]=c|f}for(let l=1024;l<2048;++l)s[l]=939524096+(l-1024<<13);for(let l=1;l<31;++l)a[l]=l<<23;a[31]=1199570944,a[32]=2147483648;for(let l=33;l<63;++l)a[l]=2147483648+(l-32<<23);a[63]=3347054592;for(let l=1;l<64;++l)l!==32&&(o[l]=1024);return{floatView:e,uint32View:t,baseTable:i,shiftTable:r,mantissaTable:s,exponentTable:a,offsetTable:o}}function Zx(n,e){let t=new Uint8Array(n),i=0;for(;t[e.value+i]!=0;)i+=1;let r=new TextDecoder().decode(t.slice(e.value,e.value+i));return e.value=e.value+i+1,r}function Oo(n,e){let t=n.getInt32(e.value,!0);return e.value+=4,t}function pa(n,e){let t=n.getUint32(e.value,!0);return e.value+=4,t}function nv(n,e){let t=n.getUint8(e.value);return e.value+=1,t}function Ym(n,e){let t=n.getUint16(e.value,!0);return e.value+=2,t}function oD(n,e){let t=n[e.value];return e.value+=1,t}function qk(n,e){let t;return"getBigInt64"in DataView.prototype?t=Number(n.getBigInt64(e.value,!0)):t=n.getUint32(e.value+4,!0)+Number(n.getUint32(e.value,!0)<<32),e.value+=8,t}function Ln(n,e){let t=n.getFloat32(e.value,!0);return e.value+=4,t}function Qk(n,e){return ife(Ym(n,e))}function ife(n){let e=(n&31744)>>10,t=n&1023;return(n>>15?-1:1)*(e?e===31?t?NaN:1/0:Math.pow(2,e-15)*(1+t/1024):6103515625e-14*(t/1024))}function rfe(n){if(Math.abs(n)>65504)throw new Error("Value out of range.Consider using float instead of half-float.");n=Bt(n,-65504,65504),Kx.floatView[0]=n;let e=Kx.uint32View[0],t=e>>23&511;return Kx.baseTable[t]+((e&8388607)>>Kx.shiftTable[t])}function $k(n,e){return rfe(Ln(n,e))}function nfe(n,e,t){let i=new TextDecoder().decode(new Uint8Array(n).slice(e.value,e.value+t));return e.value=e.value+t,i}function sfe(n,e){let t=Oo(n,e),i=pa(n,e);return[t,i]}function afe(n,e){let t=pa(n,e),i=pa(n,e);return[t,i]}function ofe(n,e){let t=Ln(n,e),i=Ln(n,e);return[t,i]}function lfe(n,e){let t=Ln(n,e),i=Ln(n,e),r=Ln(n,e);return[t,i,r]}function cfe(n,e,t){let i=e.value,r=[];for(;e.values||(e[r++]=n[t++],r>s));)e[r++]=n[i++]}var Al,aD,Kx,sv=I(()=>{jn();rv();(function(n){n[n.NO_COMPRESSION=0]="NO_COMPRESSION",n[n.RLE_COMPRESSION=1]="RLE_COMPRESSION",n[n.ZIPS_COMPRESSION=2]="ZIPS_COMPRESSION",n[n.ZIP_COMPRESSION=3]="ZIP_COMPRESSION",n[n.PIZ_COMPRESSION=4]="PIZ_COMPRESSION",n[n.PXR24_COMPRESSION=5]="PXR24_COMPRESSION"})(Al||(Al={}));(function(n){n[n.INCREASING_Y=0]="INCREASING_Y",n[n.DECREASING_Y=1]="DECREASING_Y"})(aD||(aD={}));Kx=tfe()});function fD(n,e){if(n.getUint32(0,!0)!=mfe)throw new Error("Incorrect OpenEXR format");let t=n.getUint8(4),i=n.getUint8(5),r={singleTile:!!(i&2),longName:!!(i&4),deepFormat:!!(i&8),multiPart:!!(i&16)};e.value=8;let s={},a=!0;for(;a;){let o=Zx(n.buffer,e);if(!o)a=!1;else{let l=Zx(n.buffer,e),c=pa(n,e),f=Jk(n,e,l,c);f===void 0?ee.Warn(`Unknown header attribute type ${l}'.`):s[o]=f}}if((i&-5)!=0)throw new Error("Unsupported file format");return{version:t,spec:r,...s}}var mfe,eW=I(()=>{Lt();sv();mfe=20000630});function lW(n,e){let t=0;for(let r=0;r<65536;++r)(r==0||n[r>>3]&1<<(r&7))&&(e[t++]=r);let i=t-1;for(;t<65536;)e[t++]=0;return i}function vfe(n){for(let e=0;e<16384;e++)n[e]={},n[e].len=0,n[e].lit=0,n[e].p=null}function nW(n,e,t,i,r){for(;t>t&(1<>i;if(c=new Uint8Array([c])[0],o.value+c>l)return null;let f=a[o.value-1];for(;c-- >0;)a[o.value++]=f}else if(o.value0;--t){let i=e+av[t]>>1;av[t]=e,e=i}for(let t=0;t<65537;++t){let i=n[t];i>0&&(n[t]=i|av[i]++<<6)}}function Sfe(n,e,t,i,r,s){let a=e,o=0,l=0;for(;i<=r;i++){if(a.value-e.value>t)return;let c=nW(6,o,l,n,a),f=c.l;if(o=c.c,l=c.lc,s[i]=f,f==63){if(a.value-e.value>t)throw new Error("Error in HufUnpackEncTable");c=nW(8,o,l,n,a);let d=c.l+6;if(o=c.c,l=c.lc,i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}else if(f>=59){let d=f-59+2;if(i+d>r+1)throw new Error("Error in HufUnpackEncTable");for(;d--;)s[i++]=0;i--}}Efe(s)}function cW(n){return n&63}function fW(n){return n>>6}function Tfe(n,e,t,i){for(;e<=t;e++){let r=fW(n[e]),s=cW(n[e]);if(r>>s)throw new Error("Invalid table entry");if(s>14){let a=i[r>>s-14];if(a.len)throw new Error("Invalid table entry");if(a.lit++,a.p){let o=a.p;a.p=new Array(a.lit);for(let l=0;l0;o--){let l=i[(r<<14-s)+a];if(l.len||l.p)throw new Error("Invalid table entry");l.len=s,l.lit=e,a++}}}return!0}function Afe(n,e,t,i,r,s,a,o,l){let c=0,f=0,d=a,h=Math.trunc(i.value+(r+7)/8);for(;i.value=14;){let _=c>>f-14&16383,p=e[_];if(p.len){f-=p.len;let g=dD(p.lit,s,c,f,t,i,o,l,d);g&&(c=g.c,f=g.lc)}else{if(!p.p)throw new Error("hufDecode issues");let g;for(g=0;g=v&&fW(n[p.p[g]])==(c>>f-v&(1<>=u,f-=u;f>0;){let m=e[c<<14-f&16383];if(m.len){f-=m.len;let _=dD(m.lit,s,c,f,t,i,o,l,d);_&&(c=_.c,f=_.lc)}else throw new Error("HufDecode issues")}return!0}function dW(n,e,t,i,r,s){let a={value:0},o=t.value,l=pa(e,t),c=pa(e,t);t.value+=4;let f=pa(e,t);if(t.value+=4,l<0||l>=65537||c<0||c>=65537)throw new Error("Wrong HUF_ENCSIZE");let d=new Array(65537),h=new Array(16384);vfe(h);let u=i-(t.value-o);if(Sfe(n,t,u,l,c,d),f>8*(i-(t.value-o)))throw new Error("Wrong hufUncompress");Tfe(d,l,c,h),Afe(d,h,n,t,f,c,s,r,a)}function uD(n){return n&65535}function sW(n){let e=uD(n);return e>32767?e-65536:e}function Km(n,e){let t=sW(n),r=sW(e),s=t+(r&1)+(r>>1),a=s,o=s-r;return{a,b:o}}function jm(n,e){let t=uD(n),i=uD(e),r=t-(i>>1)&rW;return{a:i+r-gfe&rW,b:r}}function hW(n,e,t,i,r,s,a){let o=a<16384,l=t>r?r:t,c=1,f,d;for(;c<=l;)c<<=1;for(c>>=1,f=c,c>>=1;c>=1;){d=0;let h=d+s*(r-f),u=s*c,m=s*f,_=i*c,p=i*f,g,v,T,S;for(;d<=h;d+=m){let E=d,A=d+i*(t-f);for(;E<=A;E+=p){let R=E+_,M=E+u,y=M+_;if(o){let C=Km(n[E+e],n[M+e]);g=C.a,T=C.b,C=Km(n[R+e],n[y+e]),v=C.a,S=C.b,C=Km(g,v),n[E+e]=C.a,n[R+e]=C.b,C=Km(T,S),n[M+e]=C.a,n[y+e]=C.b}else{let C=jm(n[E+e],n[M+e]);g=C.a,T=C.b,C=jm(n[R+e],n[y+e]),v=C.a,S=C.b,C=jm(g,v),n[E+e]=C.a,n[R+e]=C.b,C=jm(T,S),n[M+e]=C.a,n[y+e]=C.b}}if(t&c){let R=E+u,M;o?M=Km(n[E+e],n[R+e]):M=jm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}if(r&c){let E=d,A=d+i*(t-f);for(;E<=A;E+=p){let R=E+_,M;o?M=Km(n[E+e],n[R+e]):M=jm(n[E+e],n[R+e]),g=M.a,n[R+e]=M.b,n[E+e]=g}}f=c,c>>=1}return d}function uW(n,e,t){for(let i=0;i{sv();rv();oW=16,gfe=1<0;){let s=r.getInt8(i++);if(s<0){let a=-s;e-=a+1;for(let o=0;o{});function mD(n){return new DataView(n.array.buffer,n.offset.value,n.size)}function vW(n){let e=n.viewer.buffer.slice(n.offset.value,n.offset.value+n.size),t=new Uint8Array(pW(e)),i=new Uint8Array(t.length);return lD(t),cD(t,i),new DataView(i.buffer)}function pD(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=new Uint8Array(t.length);return lD(t),cD(t,i),new DataView(i.buffer)}function EW(n){let e=n.array.slice(n.offset.value,n.offset.value+n.size),t=fflate.unzlibSync(e),i=n.lines*n.channels*n.width,r=n.type==1?new Uint16Array(i):new Uint32Array(i),s=0,a=0,o=new Array(4);for(let l=0;l=8192)throw new Error("Wrong PIZ_COMPRESSION BITMAP_SIZE");if(o<=l)for(let m=0;m{mW();_W();sv();rv()});var Xa,xl,_D=I(()=>{(function(n){n[n.Float=0]="Float",n[n.HalfFloat=1]="HalfFloat"})(Xa||(Xa={}));xl=class{};xl.DefaultOutputType=Xa.HalfFloat;xl.FFLATEUrl="https://unpkg.com/fflate@0.8.2"});async function gD(n,e,t,i){let r={size:0,viewer:e,array:new Uint8Array(e.buffer),offset:t,width:n.dataWindow.xMax-n.dataWindow.xMin+1,height:n.dataWindow.yMax-n.dataWindow.yMin+1,channels:n.channels.length,channelLineOffsets:{},scanOrder:()=>0,bytesPerLine:0,outLineWidth:0,lines:0,scanlineBlockSize:0,inputSize:null,type:0,uncompress:null,getter:()=>0,format:5,outputChannels:0,decodeChannels:{},blockCount:null,byteArray:null,linearSpace:!1,textureType:0};switch(n.compression){case Al.NO_COMPRESSION:r.lines=1,r.uncompress=mD;break;case Al.RLE_COMPRESSION:r.lines=1,r.uncompress=vW;break;case Al.ZIPS_COMPRESSION:r.lines=1,r.uncompress=pD,await pe.LoadScriptAsync(xl.FFLATEUrl);break;case Al.ZIP_COMPRESSION:r.lines=16,r.uncompress=pD,await pe.LoadScriptAsync(xl.FFLATEUrl);break;case Al.PIZ_COMPRESSION:r.lines=32,r.uncompress=SW;break;case Al.PXR24_COMPRESSION:r.lines=16,r.uncompress=EW,await pe.LoadScriptAsync(xl.FFLATEUrl);break;default:throw new Error(Al[n.compression]+" is unsupported")}r.scanlineBlockSize=r.lines;let s={};for(let c of n.channels)switch(c.name){case"R":case"G":case"B":case"A":s[c.name]=!0,r.type=c.pixelType;break;case"Y":s[c.name]=!0,r.type=c.pixelType;break;default:break}let a=!1;if(s.R&&s.G&&s.B&&s.A)r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G&&s.B)a=!0,r.outputChannels=4,r.decodeChannels={R:0,G:1,B:2,A:3};else if(s.R&&s.G)r.outputChannels=2,r.decodeChannels={R:0,G:1};else if(s.R)r.outputChannels=1,r.decodeChannels={R:0};else if(s.Y)r.outputChannels=1,r.decodeChannels={Y:0};else throw new Error("EXRLoader.parse: file contains unsupported data channels.");if(r.type===1)switch(i){case Xa.Float:r.getter=Qk,r.inputSize=2;break;case Xa.HalfFloat:r.getter=Ym,r.inputSize=2;break}else if(r.type===2)switch(i){case Xa.Float:r.getter=Ln,r.inputSize=4;break;case Xa.HalfFloat:r.getter=$k,r.inputSize=4}else throw new Error("Unsupported pixelType "+r.type+" for "+n.compression);r.blockCount=r.height/r.scanlineBlockSize;for(let c=0;cc:r.scanOrder=c=>r.height-1-c,r.outputChannels==4?(r.format=5,r.linearSpace=!0):(r.format=6,r.linearSpace=!1),r}function vD(n,e,t,i){let r={value:0};for(let s=0;sn.height?n.height-a:n.scanlineBlockSize;let l=n.size=n.height)continue;let h=c*n.bytesPerLine,u=(n.height-1-d)*n.outLineWidth;for(let m=0;m{sv();TW();rv();wi();_D()});var xW={};Fe(xW,{ReadExrDataAsync:()=>xfe,_ExrTextureLoader:()=>ED});async function xfe(n){let e=new DataView(n),t={value:0},i=fD(e,t);try{let r=await gD(i,e,t,Xa.Float);return vD(r,i,e,t),r.byteArray?{width:i.dataWindow.xMax-i.dataWindow.xMin+1,height:i.dataWindow.yMax-i.dataWindow.yMin+1,data:new Float32Array(r.byteArray)}:(ee.Error("Failed to decode EXR data: No byte array available."),{width:0,height:0,data:null})}catch(r){ee.Error("Failed to load EXR data: ",r)}return{width:0,height:0,data:null}}var ED,RW=I(()=>{eW();AW();_D();Lt();ED=class{constructor(){this.supportCascades=!1}loadCubeData(e,t,i,r,s){throw".exr not supported in Cube."}loadData(e,t,i){let r=new DataView(e.buffer),s={value:0},a=fD(r,s);gD(a,r,s,xl.DefaultOutputType).then(o=>{vD(o,a,r,s);let l=a.dataWindow.xMax-a.dataWindow.xMin+1,c=a.dataWindow.yMax-a.dataWindow.yMin+1;i(l,c,t.generateMipMaps,!1,()=>{let f=t.getEngine();t.format=a.format,t.type=o.textureType,t.invertY=!1,t._gammaSpace=!a.linearSpace,o.byteArray&&f._uploadDataToTextureDirectly(t,o.byteArray,0,0,void 0,!0)})}).catch(o=>{ee.Error("Failed to load EXR texture: ",o)})}}});function Sc(n,e){Rfe(n)&&ee.Warn(`Extension with the name '${n}' already exists`),Qx.set(n,e)}function Rfe(n){return Qx.delete(n)}function $x(n,e){(e==="image/ktx"||e==="image/ktx2")&&(n=".ktx"),Qx.has(n)||(n.endsWith(".ies")&&Sc(".ies",async()=>await Promise.resolve().then(()=>(xG(),AG)).then(i=>new i._IESTextureLoader)),n.endsWith(".dds")&&Sc(".dds",async()=>await Promise.resolve().then(()=>(bG(),RG)).then(i=>new i._DDSTextureLoader)),n.endsWith(".basis")&&Sc(".basis",async()=>await Promise.resolve().then(()=>(DG(),PG)).then(i=>new i._BasisTextureLoader)),n.endsWith(".env")&&Sc(".env",async()=>await Promise.resolve().then(()=>(yk(),Ik)).then(i=>new i._ENVTextureLoader)),n.endsWith(".hdr")&&Sc(".hdr",async()=>await Promise.resolve().then(()=>(wk(),Nk)).then(i=>new i._HDRTextureLoader)),(n.endsWith(".ktx")||n.endsWith(".ktx2"))&&(Sc(".ktx",async()=>await Promise.resolve().then(()=>(rD(),iD)).then(i=>new i._KTXTextureLoader)),Sc(".ktx2",async()=>await Promise.resolve().then(()=>(rD(),iD)).then(i=>new i._KTXTextureLoader))),n.endsWith(".tga")&&Sc(".tga",async()=>await Promise.resolve().then(()=>(Kk(),Yk)).then(i=>new i._TGATextureLoader)),n.endsWith(".exr")&&Sc(".exr",async()=>await Promise.resolve().then(()=>(RW(),xW)).then(i=>new i._ExrTextureLoader)));let t=Qx.get(n);return t?Promise.resolve(t(e)):null}var Qx,SD=I(()=>{Lt();Qx=new Map});function bW(n){let e=n.split("?")[0],t=e.lastIndexOf(".");return t>-1?e.substring(t).toLowerCase():""}var MW=I(()=>{});var IW=I(()=>{Ws();Lt();lc();wg();zr();SD();MW();Re.prototype._partialLoadFile=function(n,e,t,i,r=null){let s=o=>{t[e]=o,t._internalCount++,t._internalCount===6&&i(t)},a=(o,l)=>{r&&o&&r(o.status+" "+o.statusText,l)};this._loadFile(n,s,void 0,void 0,!0,a)};Re.prototype._cascadeLoadFiles=function(n,e,t,i=null){let r=[];r._internalCount=0;for(let s=0;s<6;s++)this._partialLoadFile(t[s],s,r,e,i)};Re.prototype._cascadeLoadImgs=function(n,e,t,i,r=null,s){let a=[];a._internalCount=0;for(let o=0;o<6;o++)this._partialLoadImg(i[o],o,a,n,e,t,r,s)};Re.prototype._partialLoadImg=function(n,e,t,i,r,s,a=null,o){let l=If();km(n,d=>{t[e]=d,t._internalCount++,i&&i.removePendingData(l),t._internalCount===6&&s&&s(r,t)},(d,h)=>{i&&i.removePendingData(l),a&&a(d,h)},i?i.offlineProvider:null,o),i&&i.addPendingData(l)};Re.prototype.createCubeTextureBase=function(n,e,t,i,r=null,s=null,a,o=null,l=!1,c=0,f=0,d=null,h=null,u=null,m=!1,_=null){let p=d||new Vi(this,7);p.isCube=!0,p.url=n,p.generateMipMaps=!i,p._lodGenerationScale=c,p._lodGenerationOffset=f,p._useSRGBBuffer=!!m&&this._caps.supportSRGBBuffers&&(this.version>1||this.isWebGPU||!!i),p!==d&&(p.label=n.substring(0,60)),this._doNotHandleContextLost||(p._extension=o,p._files=t,p._buffer=_);let g=n;this._transformTextureUrl&&!d&&(n=this._transformTextureUrl(n));let v=o!=null?o:bW(n),T=$x(v),S=(A,R)=>{p.dispose(),s?s(A,R):A&&ee.Warn(A)},E=(A,R)=>{n===g?A&&S(A.status+" "+A.statusText,R):(ee.Warn(`Failed to load ${n}, falling back to the ${g}`),this.createCubeTextureBase(g,e,t,!!i,r,S,a,o,l,c,f,p,h,u,m,_))};if(T)T.then(A=>{let R=M=>{h&&h(p,M),A.loadCubeData(M,p,l,r,(y,C)=>{S(y,C)})};_?R(_):t&&t.length===6?A.supportCascades?this._cascadeLoadFiles(e,M=>R(M.map(y=>new Uint8Array(y))),t,S):S("Textures type does not support cascades."):this._loadFile(n,M=>R(new Uint8Array(M)),void 0,e?e.offlineProvider||null:void 0,!0,E)});else{if(!t||t.length===0)throw new Error("Cannot load cubemap because files were not defined, or the correct loader was not found.");this._cascadeLoadImgs(e,p,(A,R)=>{u&&u(A,R)},t,S)}return this._internalTexturesCache.push(p),p}});var zW={};Fe(zW,{DDSTools:()=>Io});function Jx(n){return n.charCodeAt(0)+(n.charCodeAt(1)<<8)+(n.charCodeAt(2)<<16)+(n.charCodeAt(3)<<24)}function Mfe(n){return String.fromCharCode(n&255,n>>8&255,n>>16&255,n>>24&255)}var bfe,yW,CW,PW,DW,LW,OW,NW,wW,TD,FW,BW,UW,VW,Ife,AD,yfe,Cfe,GW,kW,xD,WW,RD,HW,Pfe,Dfe,Lfe,Ofe,Nfe,wfe,Ffe,Io,yP=I(()=>{jn();Lt();iP();xP();IW();bfe=542327876,yW=131072,CW=512,PW=4,DW=64,LW=131072;OW=Jx("DXT1"),NW=Jx("DXT3"),wW=Jx("DXT5"),TD=Jx("DX10"),FW=113,BW=116,UW=2,VW=10,Ife=88,AD=31,yfe=0,Cfe=1,GW=2,kW=3,xD=4,WW=7,RD=20,HW=21,Pfe=22,Dfe=23,Lfe=24,Ofe=25,Nfe=26,wfe=28,Ffe=32,Io=class n{static GetDDSInfo(e){let t=new Int32Array(e.buffer,e.byteOffset,AD),i=new Int32Array(e.buffer,e.byteOffset,AD+4),r=1;t[GW]&yW&&(r=Math.max(1,t[WW]));let s=t[HW],a=s===TD?i[Ffe]:0,o=0;switch(s){case FW:o=2;break;case BW:o=1;break;case TD:if(a===VW){o=2;break}if(a===UW){o=1;break}}return{width:t[xD],height:t[kW],mipmapCount:r,isFourCC:(t[RD]&PW)===PW,isRGB:(t[RD]&DW)===DW,isLuminance:(t[RD]&LW)===LW,isCube:(t[wfe]&CW)===CW,isCompressed:s===OW||s===NW||s===wW,dxgiFormat:a,textureType:o}}static _GetHalfFloatAsFloatRGBAArrayBuffer(e,t,i,r,s,a){let o=new Float32Array(r),l=new Uint16Array(s,i),c=0;for(let f=0;f>8)}static _GetRGBArrayBuffer(e,t,i,r,s,a,o,l){let c=new Uint8Array(r),f=new Uint8Array(s,i),d=0;for(let h=0;h0?r.sphericalPolynomial=cc.ConvertCubeMapToSphericalPolynomial({size:h[xD],right:f[0],left:f[1],up:f[2],down:f[3],front:f[4],back:f[5],format:5,type:1,gammaSpace:!1}):r.sphericalPolynomial=void 0}};Io.StoreLODInAlphaChannel=!1});var XW=I(()=>{vs();Ws();Lt();Ng();Vg();bt.prototype.createPrefilteredCubeTexture=function(n,e,t,i,r=null,s=null,a,o=null,l=!0){let c=async f=>{var g;if(!f){r&&r(null);return}let d=f.texture;if(l?f.info.sphericalPolynomial&&(d._sphericalPolynomial=f.info.sphericalPolynomial):d._sphericalPolynomial=(g=d._sphericalPolynomial)!=null?g:new gl,d._source=9,this.getCaps().textureLOD){r&&r(d);return}let h=3,u=this._gl,m=f.width;if(!m)return;let{DDSTools:_}=await Promise.resolve().then(()=>(yP(),zW)),p=[];for(let v=0;v{vs();rx();bt.prototype.createUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create uniform buffer");let i=new ml(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.STATIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.STATIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.createDynamicUniformBuffer=function(n,e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create dynamic uniform buffer");let i=new ml(t);return this.bindUniformBuffer(i),n instanceof Float32Array?this._gl.bufferData(this._gl.UNIFORM_BUFFER,n,this._gl.DYNAMIC_DRAW):this._gl.bufferData(this._gl.UNIFORM_BUFFER,new Float32Array(n),this._gl.DYNAMIC_DRAW),this.bindUniformBuffer(null),i.references=1,i};bt.prototype.updateUniformBuffer=function(n,e,t,i){this.bindUniformBuffer(n),t===void 0&&(t=0),i===void 0?e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,e):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,t,new Float32Array(e)):e instanceof Float32Array?this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,e.subarray(t,t+i)):this._gl.bufferSubData(this._gl.UNIFORM_BUFFER,0,new Float32Array(e).subarray(t,t+i)),this.bindUniformBuffer(null)};bt.prototype.bindUniformBuffer=function(n){this._gl.bindBuffer(this._gl.UNIFORM_BUFFER,n?n.underlyingResource:null)};bt.prototype.bindUniformBufferBase=function(n,e,t){this._gl.bindBufferBase(this._gl.UNIFORM_BUFFER,e,n?n.underlyingResource:null)};bt.prototype.bindUniformBlock=function(n,e,t){let i=n.program,r=this._gl.getUniformBlockIndex(i,e);r!==4294967295&&this._gl.uniformBlockBinding(i,r,t)}});var KW=I(()=>{Oa();zr();Re.prototype.displayLoadingUI=function(){if(!Er())return;let n=this.loadingScreen;n&&n.displayLoadingUI()};Re.prototype.hideLoadingUI=function(){if(!Er())return;let n=this._loadingScreen;n&&n.hideLoadingUI()};Object.defineProperty(Re.prototype,"loadingScreen",{get:function(){return!this._loadingScreen&&this._renderingCanvas&&(this._loadingScreen=Re.DefaultLoadingScreenFactory(this._renderingCanvas)),this._loadingScreen},set:function(n){this._loadingScreen=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIText",{set:function(n){this.loadingScreen.loadingUIText=n},enumerable:!0,configurable:!0});Object.defineProperty(Re.prototype,"loadingUIBackgroundColor",{set:function(n){this.loadingScreen.loadingUIBackgroundColor=n},enumerable:!0,configurable:!0})});var jW=I(()=>{zr();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getRenderingCanvasClientRect=function(){return this._renderingCanvas?this._renderingCanvas.getBoundingClientRect():null};Re.prototype.getInputElementClientRect=function(){return this._renderingCanvas?this.getInputElement().getBoundingClientRect():null};Re.prototype.getAspectRatio=function(n,e=!1){let t=n.viewport;return this.getRenderWidth(e)*t.width/(this.getRenderHeight(e)*t.height)};Re.prototype.getScreenAspectRatio=function(){return this.getRenderWidth(!0)/this.getRenderHeight(!0)};Re.prototype._verifyPointerLock=function(){var n;(n=this._onPointerLockChange)==null||n.call(this)}});var bD=I(()=>{zr();Re.prototype.setAlphaEquation=function(n,e=0){if(this._alphaEquation[e]!==n){switch(n){case 0:this._alphaState.setAlphaEquationParameters(32774,32774,e);break;case 1:this._alphaState.setAlphaEquationParameters(32778,32778,e);break;case 2:this._alphaState.setAlphaEquationParameters(32779,32779,e);break;case 3:this._alphaState.setAlphaEquationParameters(32776,32776,e);break;case 4:this._alphaState.setAlphaEquationParameters(32775,32775,e);break;case 5:this._alphaState.setAlphaEquationParameters(32775,32774,e);break}this._alphaEquation[e]=n}}});var ZW=I(()=>{zr();bD();Re.prototype.getInputElement=function(){return this._renderingCanvas};Re.prototype.getDepthFunction=function(){return this._depthCullingState.depthFunc};Re.prototype.setDepthFunction=function(n){this._depthCullingState.depthFunc=n};Re.prototype.setDepthFunctionToGreater=function(){this.setDepthFunction(516)};Re.prototype.setDepthFunctionToGreaterOrEqual=function(){this.setDepthFunction(518)};Re.prototype.setDepthFunctionToLess=function(){this.setDepthFunction(513)};Re.prototype.setDepthFunctionToLessOrEqual=function(){this.setDepthFunction(515)};Re.prototype.getDepthWrite=function(){return this._depthCullingState.depthMask};Re.prototype.setDepthWrite=function(n){this._depthCullingState.depthMask=n};Re.prototype.setAlphaConstants=function(n,e,t,i){this._alphaState.setAlphaBlendConstants(n,e,t,i)};Re.prototype.getAlphaMode=function(n=0){return this._alphaMode[n]};Re.prototype.getAlphaEquation=function(n=0){return this._alphaEquation[n]}});var qW=I(()=>{zr();bD();Re.prototype.getStencilBuffer=function(){return this._stencilState.stencilTest};Re.prototype.setStencilBuffer=function(n){this._stencilState.stencilTest=n};Re.prototype.getStencilMask=function(){return this._stencilState.stencilMask};Re.prototype.setStencilMask=function(n){this._stencilState.stencilMask=n};Re.prototype.getStencilFunction=function(){return this._stencilState.stencilFunc};Re.prototype.getStencilBackFunction=function(){return this._stencilState.stencilBackFunc};Re.prototype.getStencilFunctionReference=function(){return this._stencilState.stencilFuncRef};Re.prototype.getStencilFunctionMask=function(){return this._stencilState.stencilFuncMask};Re.prototype.setStencilFunction=function(n){this._stencilState.stencilFunc=n};Re.prototype.setStencilBackFunction=function(n){this._stencilState.stencilBackFunc=n};Re.prototype.setStencilFunctionReference=function(n){this._stencilState.stencilFuncRef=n};Re.prototype.setStencilFunctionMask=function(n){this._stencilState.stencilFuncMask=n};Re.prototype.getStencilOperationFail=function(){return this._stencilState.stencilOpStencilFail};Re.prototype.getStencilBackOperationFail=function(){return this._stencilState.stencilBackOpStencilFail};Re.prototype.getStencilOperationDepthFail=function(){return this._stencilState.stencilOpDepthFail};Re.prototype.getStencilBackOperationDepthFail=function(){return this._stencilState.stencilBackOpDepthFail};Re.prototype.getStencilOperationPass=function(){return this._stencilState.stencilOpStencilDepthPass};Re.prototype.getStencilBackOperationPass=function(){return this._stencilState.stencilBackOpStencilDepthPass};Re.prototype.setStencilOperationFail=function(n){this._stencilState.stencilOpStencilFail=n};Re.prototype.setStencilBackOperationFail=function(n){this._stencilState.stencilBackOpStencilFail=n};Re.prototype.setStencilOperationDepthFail=function(n){this._stencilState.stencilOpDepthFail=n};Re.prototype.setStencilBackOperationDepthFail=function(n){this._stencilState.stencilBackOpDepthFail=n};Re.prototype.setStencilOperationPass=function(n){this._stencilState.stencilOpStencilDepthPass=n};Re.prototype.setStencilBackOperationPass=function(n){this._stencilState.stencilBackOpStencilDepthPass=n};Re.prototype.cacheStencilState=function(){this._cachedStencilBuffer=this.getStencilBuffer(),this._cachedStencilFunction=this.getStencilFunction(),this._cachedStencilMask=this.getStencilMask(),this._cachedStencilOperationPass=this.getStencilOperationPass(),this._cachedStencilOperationFail=this.getStencilOperationFail(),this._cachedStencilOperationDepthFail=this.getStencilOperationDepthFail(),this._cachedStencilReference=this.getStencilFunctionReference()};Re.prototype.restoreStencilState=function(){this.setStencilFunction(this._cachedStencilFunction),this.setStencilMask(this._cachedStencilMask),this.setStencilBuffer(this._cachedStencilBuffer),this.setStencilOperationPass(this._cachedStencilOperationPass),this.setStencilOperationFail(this._cachedStencilOperationFail),this.setStencilOperationDepthFail(this._cachedStencilOperationDepthFail),this.setStencilFunctionReference(this._cachedStencilReference)}});var QW=I(()=>{zr();Re.prototype.getRenderPassNames=function(){return this._renderPassNames};Re.prototype.getCurrentRenderPassName=function(){return this._renderPassNames[this.currentRenderPassId]};Re.prototype.createRenderPassId=function(n){let e=++Re._RenderPassIdCounter;return this._renderPassNames[e]=n!=null?n:"NONAME",e};Re.prototype.releaseRenderPassId=function(n){this._renderPassNames[n]=void 0;for(let e=0;e{zr();Re.prototype._loadFileAsync=async function(n,e,t){return await new Promise((i,r)=>{this._loadFile(n,s=>{i(s)},void 0,e,t,(s,a)=>{r(a)})})}});var JW=I(()=>{SD();zr();Re.GetCompatibleTextureLoader=$x});function Bfe(n){!n||!n.setAttribute||(n.setAttribute("touch-action","none"),n.style.touchAction="none",n.style.webkitTapHighlightColor="transparent")}function eH(n,e,t){n._onCanvasFocus=()=>{n.onCanvasFocusObservable.notifyObservers(n)},n._onCanvasBlur=()=>{n.onCanvasBlurObservable.notifyObservers(n)},n._onCanvasContextMenu=r=>{n.disableContextMenu&&r.preventDefault()},e.addEventListener("focus",n._onCanvasFocus),e.addEventListener("blur",n._onCanvasBlur),e.addEventListener("contextmenu",n._onCanvasContextMenu),n._onBlur=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.disable(),n._windowIsBackground=!0},n._onFocus=()=>{n.disablePerformanceMonitorInBackground&&n.performanceMonitor.enable(),n._windowIsBackground=!1},n._onCanvasPointerOut=r=>{document.elementFromPoint(r.clientX,r.clientY)!==e&&n.onCanvasPointerOutObservable.notifyObservers(r)};let i=n.getHostWindow();i&&typeof i.addEventListener=="function"&&(i.addEventListener("blur",n._onBlur),i.addEventListener("focus",n._onFocus)),e.addEventListener("pointerout",n._onCanvasPointerOut),t.doNotHandleTouchAction||Bfe(e),!Re.audioEngine&&t.audioEngine&&Re.AudioEngineFactory&&(Re.audioEngine=Re.AudioEngineFactory(n.getRenderingCanvas(),n.getAudioContext(),n.getAudioDestination())),Rf()&&(n._onFullscreenChange=()=>{n.isFullscreen=!!document.fullscreenElement,n.isFullscreen&&n._pointerLockRequested&&e&&MD(e)},document.addEventListener("fullscreenchange",n._onFullscreenChange,!1),document.addEventListener("webkitfullscreenchange",n._onFullscreenChange,!1),n._onPointerLockChange=()=>{n.isPointerLock=document.pointerLockElement===e},document.addEventListener("pointerlockchange",n._onPointerLockChange,!1),document.addEventListener("webkitpointerlockchange",n._onPointerLockChange,!1)),n.enableOfflineSupport=Re.OfflineProviderFactory!==void 0,n._deterministicLockstep=!!t.deterministicLockstep,n._lockstepMaxSteps=t.lockstepMaxSteps||0,n._timeStep=t.timeStep||1/60}function tH(n,e){Oe.Instances.length===1&&Re.audioEngine&&(Re.audioEngine.dispose(),Re.audioEngine=null);let t=n.getHostWindow();t&&typeof t.removeEventListener=="function"&&(t.removeEventListener("blur",n._onBlur),t.removeEventListener("focus",n._onFocus)),e&&(e.removeEventListener("focus",n._onCanvasFocus),e.removeEventListener("blur",n._onCanvasBlur),e.removeEventListener("pointerout",n._onCanvasPointerOut),e.removeEventListener("contextmenu",n._onCanvasContextMenu)),Rf()&&(document.removeEventListener("fullscreenchange",n._onFullscreenChange),document.removeEventListener("mozfullscreenchange",n._onFullscreenChange),document.removeEventListener("webkitfullscreenchange",n._onFullscreenChange),document.removeEventListener("msfullscreenchange",n._onFullscreenChange),document.removeEventListener("pointerlockchange",n._onPointerLockChange),document.removeEventListener("mspointerlockchange",n._onPointerLockChange),document.removeEventListener("mozpointerlockchange",n._onPointerLockChange),document.removeEventListener("webkitpointerlockchange",n._onPointerLockChange))}function iH(n){let e=document.createElement("span");e.textContent="Hg",e.style.font=n;let t=document.createElement("div");t.style.display="inline-block",t.style.width="1px",t.style.height="0px",t.style.verticalAlign="bottom";let i=document.createElement("div");i.style.whiteSpace="nowrap",i.appendChild(e),i.appendChild(t),document.body.appendChild(i);let r,s;try{s=t.getBoundingClientRect().top-e.getBoundingClientRect().top,t.style.verticalAlign="baseline",r=t.getBoundingClientRect().top-e.getBoundingClientRect().top}finally{document.body.removeChild(i)}return{ascent:r,height:s,descent:s-r}}async function rH(n,e,t){return await new Promise((i,r)=>{let s=new Image;s.onload=()=>{s.decode().then(()=>{n.createImageBitmap(s,t).then(a=>{i(a)})})},s.onerror=()=>{r(`Error loading image ${s.src}`)},s.src=e})}function nH(n,e,t,i){let s=n.createCanvas(t,i).getContext("2d");if(!s)throw new Error("Unable to get 2d context for resizeImageBitmap");return s.drawImage(e,0,0),s.getImageData(0,0,t,i).data}function sH(n){let e=n.requestFullscreen||n.webkitRequestFullscreen;e&&e.call(n)}function aH(){let n=document;document.exitFullscreen?document.exitFullscreen():n.webkitCancelFullScreen&&n.webkitCancelFullScreen()}function MD(n){if(n.requestPointerLock){let e=n.requestPointerLock();e instanceof Promise?e.then(()=>{n.focus()}).catch(()=>{}):n.focus()}}function oH(){document.exitPointerLock&&document.exitPointerLock()}var lH=I(()=>{Oa();zr();Gi()});var Ge,ID=I(()=>{Ws();Gi();vs();sV();rx();Lt();WC();aV();fV();dV();hV();uV();_V();gV();vV();XW();YW();KW();jW();ZW();qW();QW();YC();$W();JW();zr();lH();VP();ul();Ge=class n extends bt{static get NpmPackage(){return Re.NpmPackage}static get Version(){return Re.Version}static get Instances(){return Oe.Instances}static get LastCreatedEngine(){return Oe.LastCreatedEngine}static get LastCreatedScene(){return Oe.LastCreatedScene}static DefaultLoadingScreenFactory(e){return Re.DefaultLoadingScreenFactory(e)}get _supportsHardwareTextureRescaling(){return!!n._RescalePostProcessFactory}_measureFps(){this._performanceMonitor.sampleFrame(),this._fps=this._performanceMonitor.averageFPS,this._deltaTime=this._performanceMonitor.instantaneousFrameTime||0}get performanceMonitor(){return this._performanceMonitor}constructor(e,t,i,r=!1){super(e,t,i,r),this.customAnimationFrameRequester=null,this._performanceMonitor=new sx,this._drawCalls=new Tl,e&&(this._features.supportRenderPasses=!0)}_initGLContext(){super._initGLContext(),this._rescalePostProcess=null}_sharedInit(e){super._sharedInit(e),eH(this,e,this._creationOptions)}resizeImageBitmap(e,t,i){return nH(this,e,t,i)}async _createImageBitmapFromSource(e,t){return await rH(this,e,t)}switchFullscreen(e){this.isFullscreen?this.exitFullscreen():this.enterFullscreen(e)}enterFullscreen(e){this.isFullscreen||(this._pointerLockRequested=e,this._renderingCanvas&&sH(this._renderingCanvas))}exitFullscreen(){this.isFullscreen&&aH()}setDitheringState(e){e?this._gl.enable(this._gl.DITHER):this._gl.disable(this._gl.DITHER)}setRasterizerState(e){e?this._gl.disable(this._gl.RASTERIZER_DISCARD):this._gl.enable(this._gl.RASTERIZER_DISCARD)}setDirectViewport(e,t,i,r){let s=this._cachedViewport;return this._cachedViewport=null,this._viewport(e,t,i,r),s}scissorClear(e,t,i,r,s){this.enableScissor(e,t,i,r),this.clear(s,!0,!0,!0),this.disableScissor()}enableScissor(e,t,i,r){let s=this._gl;s.enable(s.SCISSOR_TEST),s.scissor(e,t,i,r)}disableScissor(){let e=this._gl;e.disable(e.SCISSOR_TEST)}getVertexShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[0]):null}getFragmentShaderSource(e){let t=this._gl.getAttachedShaders(e);return t?this._gl.getShaderSource(t[1]):null}set framebufferDimensionsObject(e){this._framebufferDimensionsObject=e,this._framebufferDimensionsObject&&this.onResizeObservable.notifyObservers(this)}_rebuildBuffers(){for(let e of this.scenes)e.resetCachedMaterial(),e._rebuildGeometries();for(let e of this._virtualScenes)e.resetCachedMaterial(),e._rebuildGeometries();super._rebuildBuffers()}getFontOffset(e){return iH(e)}_cancelFrame(){if(this.customAnimationFrameRequester){if(this._frameHandler!==0){this._frameHandler=0;let{cancelAnimationFrame:e}=this.customAnimationFrameRequester;e&&e(this.customAnimationFrameRequester.requestID)}}else super._cancelFrame()}_renderLoop(e){this._processFrame(e),this._activeRenderLoops.length>0&&this._frameHandler===0&&(this.customAnimationFrameRequester?(this.customAnimationFrameRequester.requestID=this._queueNewFrame(this.customAnimationFrameRequester.renderFunction||this._boundRenderFunction,this.customAnimationFrameRequester),this._frameHandler=this.customAnimationFrameRequester.requestID):this._frameHandler=this._queueNewFrame(this._boundRenderFunction,this.getHostWindow()))}enterPointerlock(){this._renderingCanvas&&MD(this._renderingCanvas)}exitPointerlock(){oH()}beginFrame(){this._measureFps(),super.beginFrame()}_deletePipelineContext(e){let t=e;t&&t.program&&t.transformFeedback&&(this.deleteTransformFeedback(t.transformFeedback),t.transformFeedback=null),super._deletePipelineContext(e)}createShaderProgram(e,t,i,r,s,a=null){s=s||this._gl,this.onBeforeShaderCompilationObservable.notifyObservers(this);let o=super.createShaderProgram(e,t,i,r,s,a);return this.onAfterShaderCompilationObservable.notifyObservers(this),o}_createShaderProgram(e,t,i,r,s=null){let a=r.createProgram();if(e.program=a,!a)throw new Error("Unable to create program");if(r.attachShader(a,t),r.attachShader(a,i),this.webGLVersion>1&&s){let o=this.createTransformFeedback();this.bindTransformFeedback(o),this.setTranformFeedbackVaryings(a,s),e.transformFeedback=o}return r.linkProgram(a),this.webGLVersion>1&&s&&this.bindTransformFeedback(null),e.context=r,e.vertexShader=t,e.fragmentShader=i,e.isParallelCompiled||this._finalizePipelineContext(e),a}_releaseTexture(e){super._releaseTexture(e)}_releaseRenderTargetWrapper(e){super._releaseRenderTargetWrapper(e);for(let t of this.scenes){for(let i of t.postProcesses)i._outputTexture===e&&(i._outputTexture=null);for(let i of t.cameras)for(let r of i._postProcesses)r&&r._outputTexture===e&&(r._outputTexture=null)}}_rescaleTexture(e,t,i,r,s){this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE);let a=this.createRenderTargetTexture({width:t.width,height:t.height},{generateMipMaps:!1,type:0,samplingMode:2,generateDepthBuffer:!1,generateStencilBuffer:!1});if(!this._rescalePostProcess&&n._RescalePostProcessFactory&&(this._rescalePostProcess=n._RescalePostProcessFactory(this)),this._rescalePostProcess){this._rescalePostProcess.externalTextureSamplerBinding=!0;let o=()=>{this._rescalePostProcess.onApply=function(f){f._bindTexture("textureSampler",e)};let c=i;c||(c=this.scenes[this.scenes.length-1]),c.postProcessManager.directRender([this._rescalePostProcess],a,!0),this._bindTextureDirectly(this._gl.TEXTURE_2D,t,!0),this._gl.copyTexImage2D(this._gl.TEXTURE_2D,0,r,0,0,t.width,t.height,0),this.unBindFramebuffer(a),a.dispose(),s&&s()},l=this._rescalePostProcess.getEffect();l?l.executeWhenCompiled(o):this._rescalePostProcess.onEffectCreatedObservable.addOnce(c=>{c.executeWhenCompiled(o)})}}wrapWebGLTexture(e,t=!1,i=3,r=0,s=0){let a=new xm(e,this._gl),o=new Vi(this,0,!0);return o._hardwareTexture=a,o.baseWidth=r,o.baseHeight=s,o.width=r,o.height=s,o.isReady=!0,o.useMipMaps=t,this.updateTextureSamplingMode(i,o),o}_uploadImageToTexture(e,t,i=0,r=0){let s=this._gl,a=this._getWebGLTextureType(e.type),o=this._getInternalFormat(e.format),l=this._getRGBABufferInternalSizedFormat(e.type,o),c=e.isCube?s.TEXTURE_CUBE_MAP:s.TEXTURE_2D;this._bindTextureDirectly(c,e,!0),this._unpackFlipY(e.invertY);let f=s.TEXTURE_2D;e.isCube&&(f=s.TEXTURE_CUBE_MAP_POSITIVE_X+i),s.texImage2D(f,r,l,o,a,t),this._bindTextureDirectly(c,null,!0)}updateTextureComparisonFunction(e,t){if(this.webGLVersion===1){ee.Error("WebGL 1 does not support texture comparison.");return}let i=this._gl;e.isCube?(this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,e,!0),t===0?(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_CUBE_MAP,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_CUBE_MAP,null)):(this._bindTextureDirectly(this._gl.TEXTURE_2D,e,!0),t===0?(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,515),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.NONE)):(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_FUNC,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_COMPARE_MODE,i.COMPARE_REF_TO_TEXTURE)),this._bindTextureDirectly(this._gl.TEXTURE_2D,null)),e._comparisonFunction=t}createInstancesBuffer(e){let t=this._gl.createBuffer();if(!t)throw new Error("Unable to create instance buffer");let i=new ml(t);return i.capacity=e,this.bindArrayBuffer(i),this._gl.bufferData(this._gl.ARRAY_BUFFER,e,this._gl.DYNAMIC_DRAW),i.references=1,i}deleteInstancesBuffer(e){this._gl.deleteBuffer(e)}async _clientWaitAsync(e,t=0,i=10){let r=this._gl;return await new Promise((s,a)=>{hl(()=>{let o=r.clientWaitSync(e,t,0);if(o==r.WAIT_FAILED)throw new Error("clientWaitSync failed");return o!=r.TIMEOUT_EXPIRED},s,a,i)})}_readPixelsAsync(e,t,i,r,s,a,o){if(this._webGLVersion<2)throw new Error("_readPixelsAsync only work on WebGL2+");let l=this._gl,c=l.createBuffer();l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.bufferData(l.PIXEL_PACK_BUFFER,o.byteLength,l.STREAM_READ),l.readPixels(e,t,i,r,s,a,0),l.bindBuffer(l.PIXEL_PACK_BUFFER,null);let f=l.fenceSync(l.SYNC_GPU_COMMANDS_COMPLETE,0);return f?(l.flush(),this._clientWaitAsync(f,0,10).then(()=>(l.deleteSync(f),l.bindBuffer(l.PIXEL_PACK_BUFFER,c),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,o),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),l.deleteBuffer(c),o))):null}dispose(){this.hideLoadingUI(),this._rescalePostProcess&&this._rescalePostProcess.dispose(),tH(this,this._renderingCanvas),super.dispose()}};Ge.ALPHA_DISABLE=0;Ge.ALPHA_ADD=1;Ge.ALPHA_COMBINE=2;Ge.ALPHA_SUBTRACT=3;Ge.ALPHA_MULTIPLY=4;Ge.ALPHA_MAXIMIZED=5;Ge.ALPHA_ONEONE=6;Ge.ALPHA_PREMULTIPLIED=7;Ge.ALPHA_PREMULTIPLIED_PORTERDUFF=8;Ge.ALPHA_INTERPOLATE=9;Ge.ALPHA_SCREENMODE=10;Ge.DELAYLOADSTATE_NONE=0;Ge.DELAYLOADSTATE_LOADED=1;Ge.DELAYLOADSTATE_LOADING=2;Ge.DELAYLOADSTATE_NOTLOADED=4;Ge.NEVER=512;Ge.ALWAYS=519;Ge.LESS=513;Ge.EQUAL=514;Ge.LEQUAL=515;Ge.GREATER=516;Ge.GEQUAL=518;Ge.NOTEQUAL=517;Ge.KEEP=7680;Ge.REPLACE=7681;Ge.INCR=7682;Ge.DECR=7683;Ge.INVERT=5386;Ge.INCR_WRAP=34055;Ge.DECR_WRAP=34056;Ge.TEXTURE_CLAMP_ADDRESSMODE=0;Ge.TEXTURE_WRAP_ADDRESSMODE=1;Ge.TEXTURE_MIRROR_ADDRESSMODE=2;Ge.TEXTUREFORMAT_ALPHA=0;Ge.TEXTUREFORMAT_LUMINANCE=1;Ge.TEXTUREFORMAT_LUMINANCE_ALPHA=2;Ge.TEXTUREFORMAT_RGB=4;Ge.TEXTUREFORMAT_RGBA=5;Ge.TEXTUREFORMAT_RED=6;Ge.TEXTUREFORMAT_R=6;Ge.TEXTUREFORMAT_R16_UNORM=33322;Ge.TEXTUREFORMAT_RG16_UNORM=33324;Ge.TEXTUREFORMAT_RGB16_UNORM=32852;Ge.TEXTUREFORMAT_RGBA16_UNORM=32859;Ge.TEXTUREFORMAT_R16_SNORM=36760;Ge.TEXTUREFORMAT_RG16_SNORM=36761;Ge.TEXTUREFORMAT_RGB16_SNORM=36762;Ge.TEXTUREFORMAT_RGBA16_SNORM=36763;Ge.TEXTUREFORMAT_RG=7;Ge.TEXTUREFORMAT_RED_INTEGER=8;Ge.TEXTUREFORMAT_R_INTEGER=8;Ge.TEXTUREFORMAT_RG_INTEGER=9;Ge.TEXTUREFORMAT_RGB_INTEGER=10;Ge.TEXTUREFORMAT_RGBA_INTEGER=11;Ge.TEXTURETYPE_UNSIGNED_BYTE=0;Ge.TEXTURETYPE_UNSIGNED_INT=0;Ge.TEXTURETYPE_FLOAT=1;Ge.TEXTURETYPE_HALF_FLOAT=2;Ge.TEXTURETYPE_BYTE=3;Ge.TEXTURETYPE_SHORT=4;Ge.TEXTURETYPE_UNSIGNED_SHORT=5;Ge.TEXTURETYPE_INT=6;Ge.TEXTURETYPE_UNSIGNED_INTEGER=7;Ge.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;Ge.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;Ge.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;Ge.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;Ge.TEXTURETYPE_UNSIGNED_INT_24_8=12;Ge.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;Ge.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;Ge.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;Ge.TEXTURE_NEAREST_SAMPLINGMODE=1;Ge.TEXTURE_BILINEAR_SAMPLINGMODE=2;Ge.TEXTURE_TRILINEAR_SAMPLINGMODE=3;Ge.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;Ge.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;Ge.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;Ge.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;Ge.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;Ge.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;Ge.TEXTURE_NEAREST_LINEAR=7;Ge.TEXTURE_NEAREST_NEAREST=1;Ge.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;Ge.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;Ge.TEXTURE_LINEAR_LINEAR=2;Ge.TEXTURE_LINEAR_NEAREST=12;Ge.TEXTURE_EXPLICIT_MODE=0;Ge.TEXTURE_SPHERICAL_MODE=1;Ge.TEXTURE_PLANAR_MODE=2;Ge.TEXTURE_CUBIC_MODE=3;Ge.TEXTURE_PROJECTION_MODE=4;Ge.TEXTURE_SKYBOX_MODE=5;Ge.TEXTURE_INVCUBIC_MODE=6;Ge.TEXTURE_EQUIRECTANGULAR_MODE=7;Ge.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;Ge.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;Ge.SCALEMODE_FLOOR=1;Ge.SCALEMODE_NEAREST=2;Ge.SCALEMODE_CEILING=3});var yD,Ei,_a=I(()=>{Wt();ke();kt();mi();Gi();Sn();Dr();yD=class{constructor(){this._doNotSerialize=!1,this._isDisposed=!1,this._sceneRootNodesIndex=-1,this._isEnabled=!0,this._isParentEnabled=!0,this._isReady=!0,this._onEnabledStateChangedObservable=new te,this._onClonedObservable=new te,this._inheritVisibility=!1,this._isVisible=!0}},Ei=class n{static AddNodeConstructor(e,t){this._NodeConstructors[e]=t}static Construct(e,t,i,r){let s=this._NodeConstructors[e];return s?s(t,i,r):null}set accessibilityTag(e){this._accessibilityTag=e,this.onAccessibilityTagChangedObservable.notifyObservers(e)}get accessibilityTag(){return this._accessibilityTag}get doNotSerialize(){return this._nodeDataStorage._doNotSerialize?!0:this._parentNode?this._parentNode.doNotSerialize:!1}set doNotSerialize(e){this._nodeDataStorage._doNotSerialize=e}isDisposed(){return this._nodeDataStorage._isDisposed}set parent(e){if(this._parentNode===e)return;let t=this._parentNode;if(this._parentNode&&this._parentNode._children!==void 0&&this._parentNode._children!==null){let i=this._parentNode._children.indexOf(this);i!==-1&&this._parentNode._children.splice(i,1),!e&&!this._nodeDataStorage._isDisposed&&this._addToSceneRootNodes()}this._parentNode=e,this._isDirty=!0,this._parentNode&&((this._parentNode._children===void 0||this._parentNode._children===null)&&(this._parentNode._children=new Array),this._parentNode._children.push(this),t||this._removeFromSceneRootNodes()),this._syncParentEnabledState()}get parent(){return this._parentNode}get inheritVisibility(){return this._nodeDataStorage._inheritVisibility}set inheritVisibility(e){this._nodeDataStorage._inheritVisibility=e}get isVisible(){return this.inheritVisibility&&this._parentNode&&!this._parentNode.isVisible?!1:this._nodeDataStorage._isVisible}set isVisible(e){this._nodeDataStorage._isVisible=e}_serializeAsParent(e){e.parentId=this.uniqueId}_addToSceneRootNodes(){this._nodeDataStorage._sceneRootNodesIndex===-1&&(this._nodeDataStorage._sceneRootNodesIndex=this._scene.rootNodes.length,this._scene.rootNodes.push(this))}_removeFromSceneRootNodes(){if(this._nodeDataStorage._sceneRootNodesIndex!==-1){let e=this._scene.rootNodes,t=e.length-1;e[this._nodeDataStorage._sceneRootNodesIndex]=e[t],e[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex=this._nodeDataStorage._sceneRootNodesIndex,this._scene.rootNodes.pop(),this._nodeDataStorage._sceneRootNodesIndex=-1}}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}getClassName(){return"Node"}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onEnabledStateChangedObservable(){return this._nodeDataStorage._onEnabledStateChangedObservable}get onClonedObservable(){return this._nodeDataStorage._onClonedObservable}constructor(e,t=null,i=!0){this._isDirty=!1,this._nodeDataStorage=new yD,this.state="",this.metadata=null,this.reservedDataStore=null,this._accessibilityTag=null,this.onAccessibilityTagChangedObservable=new te,this._parentContainer=null,this.animations=[],this._ranges={},this.onReady=null,this._currentRenderId=-1,this._parentUpdateId=-1,this._childUpdateId=-1,this._waitingParentId=null,this._waitingParentInstanceIndex=null,this._waitingParsedUniqueId=null,this._cache={},this._parentNode=null,this._children=null,this._worldMatrix=Z.Identity(),this._worldMatrixDeterminant=0,this._worldMatrixDeterminantIsDirty=!0,this._animationPropertiesOverride=null,this._isNode=!0,this.onDisposeObservable=new te,this._onDisposeObserver=null,this._behaviors=new Array,this.name=e,this.id=e,this._scene=t||Oe.LastCreatedScene,this.uniqueId=this._scene.getUniqueId(),this._initCache(),i&&this._addToSceneRootNodes()}getScene(){return this._scene}getEngine(){return this._scene.getEngine()}addBehavior(e,t=!1){return this._behaviors.indexOf(e)!==-1?this:(e.init(),this._scene.isLoading&&!t?this._scene.onDataLoadedObservable.addOnce(()=>{this._behaviors.includes(e)&&e.attach(this)}):e.attach(this),this._behaviors.push(e),this)}removeBehavior(e){let t=this._behaviors.indexOf(e);return t===-1?this:(this._behaviors[t].detach(),this._behaviors.splice(t,1),this)}get behaviors(){return this._behaviors}getBehaviorByName(e){for(let t of this._behaviors)if(t.name===e)return t;return null}getWorldMatrix(){return this._currentRenderId!==this._scene.getRenderId()&&this.computeWorldMatrix(),this._worldMatrix}_getWorldMatrixDeterminant(){return this._worldMatrixDeterminantIsDirty&&(this._worldMatrixDeterminantIsDirty=!1,this._worldMatrixDeterminant=this._worldMatrix.determinant()),this._worldMatrixDeterminant}get worldMatrixFromCache(){return this._worldMatrix}_initCache(){this._cache={}}updateCache(e){!e&&this.isSynchronized()||this._updateCache()}_getActionManagerForTrigger(e,t=!0){return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_updateCache(e){}_isSynchronized(){return!0}_markSyncedWithParent(){this._parentNode&&(this._parentUpdateId=this._parentNode._childUpdateId)}isSynchronizedWithParent(){return this._parentNode?this._parentNode._isDirty||this._parentUpdateId!==this._parentNode._childUpdateId?!1:this._parentNode.isSynchronized():!0}isSynchronized(){return this._parentNode&&!this.isSynchronizedWithParent()?!1:this._isSynchronized()}isReady(e=!1){return this._nodeDataStorage._isReady}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,this._isDirty=!0,this}isEnabled(e=!0){return e===!1?this._nodeDataStorage._isEnabled:this._nodeDataStorage._isEnabled?this._nodeDataStorage._isParentEnabled:!1}_syncParentEnabledState(){if(this._nodeDataStorage._isParentEnabled=this._parentNode?this._parentNode.isEnabled():!0,this._children)for(let e of this._children)e._syncParentEnabledState()}setEnabled(e){this._nodeDataStorage._isEnabled!==e&&(this._nodeDataStorage._isEnabled=e,this._syncParentEnabledState(),this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(e))}isDescendantOf(e){return this.parent?this.parent===e?!0:this.parent.isDescendantOf(e):!1}_getDescendants(e,t=!1,i){if(this._children)for(let r=0;r(!t||t(r))&&r.cullingStrategy!==void 0),i}getChildren(e,t=!0){return this.getDescendants(t,e)}_setReady(e){if(e!==this._nodeDataStorage._isReady){if(!e){this._nodeDataStorage._isReady=!1;return}this.onReady&&this.onReady(this),this._nodeDataStorage._isReady=!0}}getAnimationByName(e){for(let t=0;tnew n(e,this.getScene()),this);if(t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;a{throw Qe("AnimationRange")};Ei._NodeConstructors={};P([F()],Ei.prototype,"name",void 0);P([F()],Ei.prototype,"id",void 0);P([F()],Ei.prototype,"uniqueId",void 0);P([F()],Ei.prototype,"state",void 0);P([F()],Ei.prototype,"metadata",void 0)});function CD(n,e,t){try{let i=n.next();i.done?e(i):i.value?i.value.then(()=>{i.value=void 0,e(i)},t):e(i)}catch(i){t(i)}}function cH(n=25){let e;return(t,i,r)=>{let s=performance.now();e===void 0||s-e>n?(e=s,setTimeout(()=>{CD(t,i,r)},0)):CD(t,i,r)}}function fH(n,e,t,i,r){let s=()=>{let a,o=l=>{l.done?t(l.value):a===void 0?a=!0:s()};do a=void 0,!r||!r.aborted?e(n,o,i):i(new Error("Aborted")),a===void 0&&(a=!1);while(a)};s()}function lv(n,e){let t;return fH(n,CD,i=>t=i,i=>{throw i},e),t}async function dH(n,e,t){return await new Promise((i,r)=>{fH(n,e,i,r,t)})}function hH(n,e){return(...t)=>lv(n(...t),e)}var PD=I(()=>{});var gt,Rl=I(()=>{Wt();kt();Mo();wi();mi();ke();_a();Lt();$i();Sn();Nm();fx();Dr();gt=class n extends Ei{get position(){return this._position}set position(e){this._position=e}set upVector(e){this._upVector=e}get upVector(){return this._upVector}get screenArea(){var i,r,s,a;let e,t;if(this.mode===n.PERSPECTIVE_CAMERA)this.fovMode===n.FOVMODE_VERTICAL_FIXED?(t=this.minZ*2*Math.tan(this.fov/2),e=this.getEngine().getAspectRatio(this)*t):(e=this.minZ*2*Math.tan(this.fov/2),t=e/this.getEngine().getAspectRatio(this));else{let o=this.getEngine().getRenderWidth()/2,l=this.getEngine().getRenderHeight()/2;e=((i=this.orthoRight)!=null?i:o)-((r=this.orthoLeft)!=null?r:-o),t=((s=this.orthoTop)!=null?s:l)-((a=this.orthoBottom)!=null?a:-l)}return e*t}set orthoLeft(e){this._orthoLeft=e;for(let t of this._rigCameras)t.orthoLeft=e}get orthoLeft(){return this._orthoLeft}set orthoRight(e){this._orthoRight=e;for(let t of this._rigCameras)t.orthoRight=e}get orthoRight(){return this._orthoRight}set orthoBottom(e){this._orthoBottom=e;for(let t of this._rigCameras)t.orthoBottom=e}get orthoBottom(){return this._orthoBottom}set orthoTop(e){this._orthoTop=e;for(let t of this._rigCameras)t.orthoTop=e}get orthoTop(){return this._orthoTop}setFocalLength(e,t=36){this.fov=2*Math.atan(t/(2*e))}set mode(e){this._mode=e;for(let t of this._rigCameras)t.mode=e}get mode(){return this._mode}get hasMoved(){return this._hasMoved}constructor(e,t,i,r=!0){super(e,i,!1),this._position=b.Zero(),this._upVector=b.Up(),this.oblique=null,this._orthoLeft=null,this._orthoRight=null,this._orthoBottom=null,this._orthoTop=null,this.fov=.8,this.projectionPlaneTilt=0,this.minZ=1,this.maxZ=1e4,this.inertia=.9,this._mode=n.PERSPECTIVE_CAMERA,this.isIntermediate=!1,this.viewport=new xo(0,0,1,1),this.layerMask=268435455,this.fovMode=n.FOVMODE_VERTICAL_FIXED,this.cameraRigMode=n.RIG_MODE_NONE,this.ignoreCameraMaxZ=!1,this.customRenderTargets=[],this.outputRenderTarget=null,this.onViewMatrixChangedObservable=new te,this.onProjectionMatrixChangedObservable=new te,this.onAfterCheckInputsObservable=new te,this.onRestoreStateObservable=new te,this.isRigCamera=!1,this._hasMoved=!1,this._rigCameras=new Array,this._skipRendering=!1,this._projectionMatrix=new Z,this._postProcesses=new Array,this._activeMeshes=new Xi(256),this._globalPosition=b.Zero(),this._computedViewMatrix=Z.Identity(),this._doNotComputeProjectionMatrix=!1,this._transformMatrix=Z.Zero(),this._refreshFrustumPlanes=!0,this._absoluteRotation=Ke.Identity(),this._isCamera=!0,this._isLeftCamera=!1,this._isRightCamera=!1,this.layerMask=this.getScene().defaultCameraLayerMask,this.getScene().addCamera(this),r&&!this.getScene().activeCamera&&(this.getScene().activeCamera=this),this.position=t,this.renderPassId=this.getScene().getEngine().createRenderPassId(`Camera ${e}`)}storeState(){return this._stateStored=!0,this._storedFov=this.fov,this}hasStateStored(){return!!this._stateStored}_restoreStateValues(){return this._stateStored?(this.fov=this._storedFov,!0):!1}restoreState(){return this._restoreStateValues()?(this.onRestoreStateObservable.notifyObservers(this),!0):!1}getClassName(){return"Camera"}toString(e){let t="Name: "+this.name;if(t+=", type: "+this.getClassName(),this.animations)for(let i=0;i-1?(ee.Error("You're trying to reuse a post process not defined as reusable."),0):(t==null||t<0?this._postProcesses.push(e):this._postProcesses[t]===null?this._postProcesses[t]=e:this._postProcesses.splice(t,0,e),this._cascadePostProcessesToRigCams(),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._postProcesses.indexOf(e))}detachPostProcess(e){let t=this._postProcesses.indexOf(e);t!==-1&&(this._postProcesses[t]=null),this._scene.prePassRenderer&&this._scene.prePassRenderer.markAsDirty(),this._cascadePostProcessesToRigCams()}getWorldMatrix(){return this._isSynchronizedViewMatrix()?this._worldMatrix:(this.getViewMatrix(),this._worldMatrix)}_getViewMatrix(){return Z.Identity()}getViewMatrix(e){return!e&&this._isSynchronizedViewMatrix()?this._computedViewMatrix:(this._hasMoved=!0,this.updateCache(),this._computedViewMatrix=this._getViewMatrix(),this._currentRenderId=this.getScene().getRenderId(),this._childUpdateId++,this._refreshFrustumPlanes=!0,this._cameraRigParams&&this._cameraRigParams.vrPreViewMatrix&&this._computedViewMatrix.multiplyToRef(this._cameraRigParams.vrPreViewMatrix,this._computedViewMatrix),this.parent&&this.parent.onViewMatrixChangedObservable&&this.parent.onViewMatrixChangedObservable.notifyObservers(this.parent),this.onViewMatrixChangedObservable.notifyObservers(this),this._computedViewMatrix.invertToRef(this._worldMatrix),this._worldMatrix.getTranslationToRef(this._globalPosition),this._computedViewMatrix)}freezeProjectionMatrix(e){this._doNotComputeProjectionMatrix=!0,e!==void 0&&(this._projectionMatrix=e)}unfreezeProjectionMatrix(){this._doNotComputeProjectionMatrix=!1}getProjectionMatrix(e){var a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A,R,M;if(this._doNotComputeProjectionMatrix||!e&&this._isSynchronizedProjectionMatrix())return this._projectionMatrix;let t=this.ignoreCameraMaxZ?0:this.maxZ;this._cache.mode=this.mode,this._cache.minZ=this.minZ,this._cache.maxZ=t,this._refreshFrustumPlanes=!0;let i=this.getEngine(),r=this.getScene(),s=i.useReverseDepthBuffer;if(this.mode===n.PERSPECTIVE_CAMERA){this._cache.fov=this.fov,this._cache.fovMode=this.fovMode,this._cache.aspectRatio=i.getAspectRatio(this),this._cache.projectionPlaneTilt=this.projectionPlaneTilt,this.minZ<=0&&(this.minZ=.1);let y;r.useRightHandedSystem?y=Z.PerspectiveFovRHToRef:y=Z.PerspectiveFovLHToRef,y(this.fov,i.getAspectRatio(this),s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,this.fovMode===n.FOVMODE_VERTICAL_FIXED,i.isNDCHalfZRange,this.projectionPlaneTilt,s)}else{let y=i.getRenderWidth()/2,C=i.getRenderHeight()/2;r.useRightHandedSystem?this.oblique?Z.ObliqueOffCenterRHToRef((a=this.orthoLeft)!=null?a:-y,(o=this.orthoRight)!=null?o:y,(l=this.orthoBottom)!=null?l:-C,(c=this.orthoTop)!=null?c:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterRHToRef((f=this.orthoLeft)!=null?f:-y,(d=this.orthoRight)!=null?d:y,(h=this.orthoBottom)!=null?h:-C,(u=this.orthoTop)!=null?u:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange):this.oblique?Z.ObliqueOffCenterLHToRef((m=this.orthoLeft)!=null?m:-y,(_=this.orthoRight)!=null?_:y,(p=this.orthoBottom)!=null?p:-C,(g=this.orthoTop)!=null?g:C,s?t:this.minZ,s?this.minZ:t,this.oblique.length,this.oblique.angle,this._computeObliqueDistance(this.oblique.offset),this._projectionMatrix,i.isNDCHalfZRange):Z.OrthoOffCenterLHToRef((v=this.orthoLeft)!=null?v:-y,(T=this.orthoRight)!=null?T:y,(S=this.orthoBottom)!=null?S:-C,(E=this.orthoTop)!=null?E:C,s?t:this.minZ,s?this.minZ:t,this._projectionMatrix,i.isNDCHalfZRange),this._cache.orthoLeft=this.orthoLeft,this._cache.orthoRight=this.orthoRight,this._cache.orthoBottom=this.orthoBottom,this._cache.orthoTop=this.orthoTop,this._cache.obliqueAngle=(A=this.oblique)==null?void 0:A.angle,this._cache.obliqueLength=(R=this.oblique)==null?void 0:R.length,this._cache.obliqueOffset=(M=this.oblique)==null?void 0:M.offset,this._cache.renderWidth=i.getRenderWidth(),this._cache.renderHeight=i.getRenderHeight()}return this.onProjectionMatrixChangedObservable.notifyObservers(this),this._projectionMatrix}getTransformationMatrix(){return this._computedViewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix),this._transformMatrix}_computeObliqueDistance(e){let t=this,i=this;return(t.radius||(i.target?b.Distance(this.position,i.target):this.position.length()))+e}_updateFrustumPlanes(){this._refreshFrustumPlanes&&(this.getTransformationMatrix(),this._frustumPlanes?Mf.GetPlanesToRef(this._transformMatrix,this._frustumPlanes):this._frustumPlanes=Mf.GetPlanes(this._transformMatrix),this._refreshFrustumPlanes=!1)}isInFrustum(e,t=!1){if(this._updateFrustumPlanes(),t&&this.rigCameras.length>0){let i=!1;for(let r of this.rigCameras)r._updateFrustumPlanes(),i=i||e.isInFrustum(r._frustumPlanes);return i}else return e.isInFrustum(this._frustumPlanes)}isCompletelyInFrustum(e){return this._updateFrustumPlanes(),e.isCompletelyInFrustum(this._frustumPlanes)}getForwardRay(e=100,t,i){throw Qe("Ray")}getForwardRayToRef(e,t=100,i,r){throw Qe("Ray")}dispose(e,t=!1){for(this.onViewMatrixChangedObservable.clear(),this.onProjectionMatrixChangedObservable.clear(),this.onAfterCheckInputsObservable.clear(),this.onRestoreStateObservable.clear(),this.inputs&&this.inputs.clear(),this.getScene().stopAnimation(this),this.getScene().removeCamera(this);this._rigCameras.length>0;){let r=this._rigCameras.pop();r&&r.dispose()}if(this._parentContainer){let r=this._parentContainer.cameras.indexOf(this);r>-1&&this._parentContainer.cameras.splice(r,1),this._parentContainer=null}if(this._rigPostProcess)this._rigPostProcess.dispose(this),this._rigPostProcess=null,this._postProcesses.length=0;else if(this.cameraRigMode!==n.RIG_MODE_NONE)this._rigPostProcess=null,this._postProcesses.length=0;else{let r=this._postProcesses.length;for(;--r>=0;){let s=this._postProcesses[r];s&&s.dispose(this)}}let i=this.customRenderTargets.length;for(;--i>=0;)this.customRenderTargets[i].dispose();this.customRenderTargets.length=0,this._activeMeshes.dispose(),this.getScene().getEngine().releaseRenderPassId(this.renderPassId),super.dispose(e,t)}get isLeftCamera(){return this._isLeftCamera}get isRightCamera(){return this._isRightCamera}get leftCamera(){return this._rigCameras.length<1?null:this._rigCameras[0]}get rightCamera(){return this._rigCameras.length<2?null:this._rigCameras[1]}getLeftTarget(){return this._rigCameras.length<1?null:this._rigCameras[0].getTarget()}getRightTarget(){return this._rigCameras.length<2?null:this._rigCameras[1].getTarget()}setCameraRigMode(e,t){if(this.cameraRigMode!==e){for(;this._rigCameras.length>0;){let i=this._rigCameras.pop();i&&i.dispose()}if(this.cameraRigMode=e,this._cameraRigParams={},this._cameraRigParams.interaxialDistance=t.interaxialDistance||.0637,this._cameraRigParams.stereoHalfAngle=pe.ToRadians(this._cameraRigParams.interaxialDistance/.0637),this.cameraRigMode!==n.RIG_MODE_NONE){let i=this.createRigCamera(this.name+"_L",0);i&&(i._isLeftCamera=!0);let r=this.createRigCamera(this.name+"_R",1);r&&(r._isRightCamera=!0),i&&r&&(this._rigCameras.push(i),this._rigCameras.push(r))}this._setRigMode(t),this._cascadePostProcessesToRigCams(),this.update()}}_setRigMode(e){}_getVRProjectionMatrix(){return Z.PerspectiveFovLHToRef(this._cameraRigParams.vrMetrics.aspectRatioFov,this._cameraRigParams.vrMetrics.aspectRatio,this.minZ,this.ignoreCameraMaxZ?0:this.maxZ,this._cameraRigParams.vrWorkMatrix,!0,this.getEngine().isNDCHalfZRange),this._cameraRigParams.vrWorkMatrix.multiplyToRef(this._cameraRigParams.vrHMatrix,this._projectionMatrix),this._projectionMatrix}setCameraRigParameter(e,t){this._cameraRigParams||(this._cameraRigParams={}),this._cameraRigParams[e]=t,e==="interaxialDistance"&&(this._cameraRigParams.stereoHalfAngle=pe.ToRadians(t/.0637))}createRigCamera(e,t){return null}_updateRigCameras(){for(let e=0;en._CreateDefaultParsedCamera(t,i))}computeWorldMatrix(){return this.getWorldMatrix()}static Parse(e,t){let i=e.type,r=n.GetConstructorFromName(i,e.name,t,e.interaxial_distance,e.isStereoscopicSideBySide),s=nt.Parse(r,e,t);if(e.parentId!==void 0&&(s._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(s._waitingParentInstanceIndex=e.parentInstanceIndex),s.inputs&&(s.inputs.parse(e),s._setupInputs()),e.upVector&&(s.upVector=b.FromArray(e.upVector)),s.setPosition&&(s.position.copyFromFloats(0,0,0),s.setPosition(b.FromArray(e.position))),e.target&&s.setTarget&&s.setTarget(b.FromArray(e.target)),e.cameraRigMode){let a=e.interaxial_distance?{interaxialDistance:e.interaxial_distance}:{};s.setCameraRigMode(e.cameraRigMode,a)}if(e.animations){for(let a=0;a{throw Qe("UniversalCamera")};gt.PERSPECTIVE_CAMERA=0;gt.ORTHOGRAPHIC_CAMERA=1;gt.FOVMODE_VERTICAL_FIXED=0;gt.FOVMODE_HORIZONTAL_FIXED=1;gt.RIG_MODE_NONE=0;gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;gt.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;gt.RIG_MODE_STEREOSCOPIC_INTERLACED=14;gt.RIG_MODE_VR=20;gt.RIG_MODE_CUSTOM=22;gt.ForceAttachControlToAlwaysPreventDefault=!1;P([Qr("position")],gt.prototype,"_position",void 0);P([Qr("upVector")],gt.prototype,"_upVector",void 0);P([F()],gt.prototype,"orthoLeft",null);P([F()],gt.prototype,"orthoRight",null);P([F()],gt.prototype,"orthoBottom",null);P([F()],gt.prototype,"orthoTop",null);P([F()],gt.prototype,"fov",void 0);P([F()],gt.prototype,"projectionPlaneTilt",void 0);P([F()],gt.prototype,"minZ",void 0);P([F()],gt.prototype,"maxZ",void 0);P([F()],gt.prototype,"inertia",void 0);P([F()],gt.prototype,"mode",null);P([F()],gt.prototype,"layerMask",void 0);P([F()],gt.prototype,"fovMode",void 0);P([F()],gt.prototype,"cameraRigMode",void 0);P([F()],gt.prototype,"interaxialDistance",void 0);P([F()],gt.prototype,"isStereoscopicSideBySide",void 0);P([F()],gt.prototype,"ignoreCameraMaxZ",void 0)});var Ih,DD=I(()=>{Ih=class{constructor(e,t,i){this.bu=e,this.bv=t,this.distance=i,this.faceId=0,this.subMeshId=0,this._internalSubMeshId=0}}});var Uf,LD=I(()=>{pl();ke();Kn();Uf=class n{constructor(e,t,i){this.vectors=Tn(8,b.Zero),this.center=b.Zero(),this.centerWorld=b.Zero(),this.extendSize=b.Zero(),this.extendSizeWorld=b.Zero(),this.directions=Tn(3,b.Zero),this.vectorsWorld=Tn(8,b.Zero),this.minimumWorld=b.Zero(),this.maximumWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this._drawWrapperFront=null,this._drawWrapperBack=null,this.reConstruct(e,t,i)}reConstruct(e,t,i){let r=e.x,s=e.y,a=e.z,o=t.x,l=t.y,c=t.z,f=this.vectors;this.minimum.copyFromFloats(r,s,a),this.maximum.copyFromFloats(o,l,c),f[0].copyFromFloats(r,s,a),f[1].copyFromFloats(o,l,c),f[2].copyFromFloats(o,s,a),f[3].copyFromFloats(r,l,a),f[4].copyFromFloats(r,s,c),f[5].copyFromFloats(o,l,a),f[6].copyFromFloats(r,l,c),f[7].copyFromFloats(o,s,c),t.addToRef(e,this.center).scaleInPlace(.5),t.subtractToRef(e,this.extendSize).scaleInPlace(.5),this._worldMatrix=i||Z.IdentityReadOnly,this._update(this._worldMatrix)}scale(e){let t=n._TmpVector3,i=this.maximum.subtractToRef(this.minimum,t[0]),r=i.length();i.normalizeFromLength(r);let s=r*e,a=i.scaleInPlace(s*.5),o=this.center.subtractToRef(a,t[1]),l=this.center.addToRef(a,t[2]);return this.reConstruct(o,l,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){let t=this.minimumWorld,i=this.maximumWorld,r=this.directions,s=this.vectorsWorld,a=this.vectors;if(e.isIdentity()){t.copyFrom(this.minimum),i.copyFrom(this.maximum);for(let o=0;o<8;++o)s[o].copyFrom(a[o]);this.extendSizeWorld.copyFrom(this.extendSize),this.centerWorld.copyFrom(this.center)}else{t.setAll(Number.MAX_VALUE),i.setAll(-Number.MAX_VALUE);for(let o=0;o<8;++o){let l=s[o];b.TransformCoordinatesToRef(a[o],e,l),t.minimizeInPlace(l),i.maximizeInPlace(l)}i.subtractToRef(t,this.extendSizeWorld).scaleInPlace(.5),i.addToRef(t,this.centerWorld).scaleInPlace(.5)}b.FromArrayToRef(e.m,0,r[0]),b.FromArrayToRef(e.m,4,r[1]),b.FromArrayToRef(e.m,8,r[2]),this._worldMatrix=e}isInFrustum(e){return n.IsInFrustum(this.vectorsWorld,e)}isCompletelyInFrustum(e){return n.IsCompletelyInFrustum(this.vectorsWorld,e)}intersectsPoint(e){let t=this.minimumWorld,i=this.maximumWorld,r=t.x,s=t.y,a=t.z,o=i.x,l=i.y,c=i.z,f=e.x,d=e.y,h=e.z,u=-Ft;return!(o-ff-r||l-dd-s||c-hh-a)}intersectsSphere(e){return n.IntersectsSphere(this.minimumWorld,this.maximumWorld,e.centerWorld,e.radiusWorld)}intersectsMinMax(e,t){let i=this.minimumWorld,r=this.maximumWorld,s=i.x,a=i.y,o=i.z,l=r.x,c=r.y,f=r.z,d=e.x,h=e.y,u=e.z,m=t.x,_=t.y,p=t.z;return!(lm||c_||fp)}dispose(){var e,t;(e=this._drawWrapperFront)==null||e.dispose(),(t=this._drawWrapperBack)==null||t.dispose()}static Intersects(e,t){return e.intersectsMinMax(t.minimumWorld,t.maximumWorld)}static IntersectsSphere(e,t,i,r){let s=n._TmpVector3[0];return b.ClampToRef(i,e,t,s),b.DistanceSquared(i,s)<=r*r}static IsCompletelyInFrustum(e,t){for(let i=0;i<6;++i){let r=t[i];for(let s=0;s<8;++s)if(r.dotCoordinate(e[s])<0)return!1}return!0}static IsInFrustum(e,t){for(let i=0;i<6;++i){let r=!0,s=t[i];for(let a=0;a<8;++a)if(s.dotCoordinate(e[a])>=0){r=!1;break}if(r)return!1}return!0}};Uf._TmpVector3=Tn(3,b.Zero)});var Zm,uH=I(()=>{pl();ke();Zm=class n{constructor(e,t,i){this.center=b.Zero(),this.centerWorld=b.Zero(),this.minimum=b.Zero(),this.maximum=b.Zero(),this.reConstruct(e,t,i)}reConstruct(e,t,i){this.minimum.copyFrom(e),this.maximum.copyFrom(t);let r=b.Distance(e,t);t.addToRef(e,this.center).scaleInPlace(.5),this.radius=r*.5,this._update(i||Z.IdentityReadOnly)}scale(e){let t=this.radius*e,i=n._TmpVector3,r=i[0].setAll(t),s=this.center.subtractToRef(r,i[1]),a=this.center.addToRef(r,i[2]);return this.reConstruct(s,a,this._worldMatrix),this}getWorldMatrix(){return this._worldMatrix}_update(e){if(e.isIdentity())this.centerWorld.copyFrom(this.center),this.radiusWorld=this.radius;else{b.TransformCoordinatesToRef(this.center,e,this.centerWorld);let t=n._TmpVector3[0];b.TransformNormalFromFloatsToRef(1,1,1,e,t),this.radiusWorld=Math.max(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z))*this.radius}}isInFrustum(e){let t=this.centerWorld,i=this.radiusWorld;for(let r=0;r<6;r++)if(e[r].dotCoordinate(t)<=-i)return!1;return!0}isCenterInFrustum(e){let t=this.centerWorld;for(let i=0;i<6;i++)if(e[i].dotCoordinate(t)<0)return!1;return!0}intersectsPoint(e){let t=b.DistanceSquared(this.centerWorld,e);return!(this.radiusWorld*this.radiusWorld{pl();ke();LD();uH();OD={min:0,max:0},ND={min:0,max:0},mH=(n,e,t)=>{let i=b.Dot(e.centerWorld,n),r=Math.abs(b.Dot(e.directions[0],n))*e.extendSize.x,s=Math.abs(b.Dot(e.directions[1],n))*e.extendSize.y,a=Math.abs(b.Dot(e.directions[2],n))*e.extendSize.z,o=r+s+a;t.min=i-o,t.max=i+o},As=(n,e,t)=>(mH(n,e,OD),mH(n,t,ND),!(OD.min>ND.max||ND.min>OD.max)),An=class n{constructor(e,t,i){this._isLocked=!1,this.boundingBox=new Uf(e,t,i),this.boundingSphere=new Zm(e,t,i)}reConstruct(e,t,i){this.boundingBox.reConstruct(e,t,i),this.boundingSphere.reConstruct(e,t,i)}get minimum(){return this.boundingBox.minimum}get maximum(){return this.boundingBox.maximum}get isLocked(){return this._isLocked}set isLocked(e){this._isLocked=e}update(e){this._isLocked||(this.boundingBox._update(e),this.boundingSphere._update(e))}centerOn(e,t){let i=n._TmpVector3[0].copyFrom(e).subtractInPlace(t),r=n._TmpVector3[1].copyFrom(e).addInPlace(t);return this.boundingBox.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this.boundingSphere.reConstruct(i,r,this.boundingBox.getWorldMatrix()),this}encapsulate(e){let t=b.Minimize(this.minimum,e),i=b.Maximize(this.maximum,e);return this.reConstruct(t,i,this.boundingBox.getWorldMatrix()),this}encapsulateBoundingInfo(e){let t=$.Matrix[0];this.boundingBox.getWorldMatrix().invertToRef(t);let i=$.Vector3[0];return b.TransformCoordinatesToRef(e.boundingBox.minimumWorld,t,i),this.encapsulate(i),b.TransformCoordinatesToRef(e.boundingBox.maximumWorld,t,i),this.encapsulate(i),this}scale(e){return this.boundingBox.scale(e),this.boundingSphere.scale(e),this}isInFrustum(e,t=0){return(t===2||t===3)&&this.boundingSphere.isCenterInFrustum(e)?!0:this.boundingSphere.isInFrustum(e)?t===1||t===3?!0:this.boundingBox.isInFrustum(e):!1}get diagonalLength(){let e=this.boundingBox;return e.maximumWorld.subtractToRef(e.minimumWorld,n._TmpVector3[0]).length()}isCompletelyInFrustum(e){return this.boundingBox.isCompletelyInFrustum(e)}_checkCollision(e){return e._canDoCollision(this.boundingSphere.centerWorld,this.boundingSphere.radiusWorld,this.boundingBox.minimumWorld,this.boundingBox.maximumWorld)}intersectsPoint(e){return!(!this.boundingSphere.centerWorld||!this.boundingSphere.intersectsPoint(e)||!this.boundingBox.intersectsPoint(e))}intersects(e,t){if(!Zm.Intersects(this.boundingSphere,e.boundingSphere)||!Uf.Intersects(this.boundingBox,e.boundingBox))return!1;if(!t)return!0;let i=this.boundingBox,r=e.boundingBox;return!(!As(i.directions[0],i,r)||!As(i.directions[1],i,r)||!As(i.directions[2],i,r)||!As(r.directions[0],i,r)||!As(r.directions[1],i,r)||!As(r.directions[2],i,r)||!As(b.Cross(i.directions[0],r.directions[0]),i,r)||!As(b.Cross(i.directions[0],r.directions[1]),i,r)||!As(b.Cross(i.directions[0],r.directions[2]),i,r)||!As(b.Cross(i.directions[1],r.directions[0]),i,r)||!As(b.Cross(i.directions[1],r.directions[1]),i,r)||!As(b.Cross(i.directions[1],r.directions[2]),i,r)||!As(b.Cross(i.directions[2],r.directions[0]),i,r)||!As(b.Cross(i.directions[2],r.directions[1]),i,r)||!As(b.Cross(i.directions[2],r.directions[2]),i,r))}};An._TmpVector3=Tn(2,b.Zero)});function pH(n,e,t,i,r=null){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return Qm.extractMinAndMaxIndexed(n,e,t,i,s,a),r&&(s.x-=s.x*r.x+r.y,s.y-=s.y*r.x+r.y,s.z-=s.z*r.x+r.y,a.x+=a.x*r.x+r.y,a.y+=a.y*r.x+r.y,a.z+=a.z*r.x+r.y),{minimum:s,maximum:a}}function eR(n,e,t,i=null,r){let s=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),a=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);return r||(r=3),Qm.extractMinAndMax(n,e,t,r,s,a),i&&(s.x-=s.x*i.x+i.y,s.y-=s.y*i.x+i.y,s.z-=s.z*i.x+i.y,a.x+=a.x*i.x+i.y,a.y+=a.y*i.x+i.y,a.z+=a.z*i.x+i.y),{minimum:s,maximum:a}}var Qm,tR=I(()=>{Wt();ke();kt();Qm=class{static extractMinAndMaxIndexed(e,t,i,r,s,a){for(let o=i;o!Array.isArray(n[0])&&!Array.isArray(n[1]))],Qm,"extractMinAndMaxIndexed",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Qm,"extractMinAndMax",null)});var Ks,cv=I(()=>{Zi();DD();qm();tR();Eh();Ks=class n{get materialDefines(){var t;let e=this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.defines:(t=this._getDrawWrapper())==null?void 0:t.defines;return typeof e=="string"?null:e}set materialDefines(e){var i;let t=(i=this._mainDrawWrapperOverride)!=null?i:this._getDrawWrapper(void 0,!0);t.defines=e}_getDrawWrapper(e,t=!1){e=e!=null?e:this._engine.currentRenderPassId;let i=this._drawWrappers[e];return!i&&t&&(this._drawWrappers[e]=i=new Ss(this._mesh.getScene().getEngine())),i}_removeDrawWrapper(e,t=!0,i=!1){var r;t&&((r=this._drawWrappers[e])==null||r.dispose(i)),this._drawWrappers[e]=void 0}get effect(){var e,t;return this._mainDrawWrapperOverride?this._mainDrawWrapperOverride.effect:(t=(e=this._getDrawWrapper())==null?void 0:e.effect)!=null?t:null}get _drawWrapper(){var e;return(e=this._mainDrawWrapperOverride)!=null?e:this._getDrawWrapper(void 0,!0)}get _drawWrapperOverride(){return this._mainDrawWrapperOverride}_setMainDrawWrapperOverride(e){this._mainDrawWrapperOverride=e}setEffect(e,t=null,i,r=!0){let s=this._drawWrapper;s.setEffect(e,t,r),i!==void 0&&(s.materialContext=i),e||(s.defines=null,s.materialContext=void 0)}resetDrawCache(e,t=!1){if(this._drawWrappers)if(e!==void 0){this._removeDrawWrapper(e,!0,t);return}else for(let i of this._drawWrappers)i==null||i.dispose(t);this._drawWrappers=[]}static AddToMesh(e,t,i,r,s,a,o,l=!0){return new n(e,t,i,r,s,a,o,l)}constructor(e,t,i,r,s,a,o,l=!0,c=!0){this.materialIndex=e,this.verticesStart=t,this.verticesCount=i,this.indexStart=r,this.indexCount=s,this._mainDrawWrapperOverride=null,this._linesIndexCount=0,this._linesIndexBuffer=null,this._lastColliderWorldVertices=null,this._lastColliderTransformMatrix=null,this._wasDispatched=!1,this._renderId=0,this._alphaIndex=0,this._distanceToCamera=0,this._currentMaterial=null,this._mesh=a,this._renderingMesh=o||a,c&&a.subMeshes.push(this),this._engine=this._mesh.getScene().getEngine(),this.resetDrawCache(),this._trianglePlanes=[],this._id=a.subMeshes.length-1,l&&(this.refreshBoundingInfo(),a.computeWorldMatrix(!0))}get IsGlobal(){return this.verticesStart===0&&this.verticesCount===this._mesh.getTotalVertices()&&this.indexStart===0&&this.indexCount===this._mesh.getTotalIndices()}getBoundingInfo(){return this.IsGlobal||this._mesh.hasThinInstances?this._mesh.getBoundingInfo():this._boundingInfo}setBoundingInfo(e){return this._boundingInfo=e,this}getMesh(){return this._mesh}getRenderingMesh(){return this._renderingMesh}getReplacementMesh(){return this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null}getEffectiveMesh(){let e=this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:null;return e||this._renderingMesh}getMaterial(e=!0){var i;let t=(i=this._renderingMesh.getMaterialForRenderPass(this._engine.currentRenderPassId))!=null?i:this._renderingMesh.material;if(t){if(this._isMultiMaterial(t)){let r=t.getSubMaterial(this.materialIndex);return this._currentMaterial!==r&&(this._currentMaterial=r,this.resetDrawCache()),r}}else return e&&this._mesh.getScene()._hasDefaultMaterial?this._mesh.getScene().defaultMaterial:null;return t}_isMultiMaterial(e){return e.getSubMaterial!==void 0}refreshBoundingInfo(e=null){if(this._lastColliderWorldVertices=null,this.IsGlobal||!this._renderingMesh||!this._renderingMesh.geometry)return this;if(e||(e=this._renderingMesh.getVerticesData(L.PositionKind)),!e)return this._boundingInfo=this._mesh.getBoundingInfo(),this;let t=this._renderingMesh.getIndices(),i;if(this.indexStart===0&&this.indexCount===t.length){let r=this._renderingMesh.getBoundingInfo();i={minimum:r.minimum.clone(),maximum:r.maximum.clone()}}else i=pH(e,t,this.indexStart,this.indexCount,this._renderingMesh.geometry.boundingBias);return this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new An(i.minimum,i.maximum),this}_checkCollision(e){return this.getBoundingInfo()._checkCollision(e)}updateBoundingInfo(e){let t=this.getBoundingInfo();return t||(this.refreshBoundingInfo(),t=this.getBoundingInfo()),t&&t.update(e),this}isInFrustum(e){let t=this.getBoundingInfo();return t?t.isInFrustum(e,this._mesh.cullingStrategy):!1}isCompletelyInFrustum(e){let t=this.getBoundingInfo();return t?t.isCompletelyInFrustum(e):!1}render(e){return this._renderingMesh.render(this,e,this._mesh._internalAbstractMeshDataInfo._actAsRegularMesh?this._mesh:void 0),this}_getLinesIndexBuffer(e,t){if(!this._linesIndexBuffer){let i=Math.floor(this.indexCount/3)*6,s=this.verticesStart+this.verticesCount>65535?new Uint32Array(i):new Uint16Array(i),a=0;if(e.length===0)for(let o=this.indexStart;ol&&(l=h)}return new n(e,o,l-o+1,t,i,r,s,a)}}});var fv,Me,Tr=I(()=>{Wt();ke();Zi();Sn();zt();Lt();kt();PD();Fg();cv();fv=class{},Me=class n{constructor(){this.uniqueId=0,this.metadata={},this._applyTo=hH(this._applyToCoroutine.bind(this)),this.uniqueId=n._UniqueIdGenerator,n._UniqueIdGenerator++}set(e,t){switch(e.length||ee.Warn(`Setting vertex data kind '${t}' with an empty array`),t){case L.PositionKind:this.positions=e;break;case L.NormalKind:this.normals=e;break;case L.TangentKind:this.tangents=e;break;case L.UVKind:this.uvs=e;break;case L.UV2Kind:this.uvs2=e;break;case L.UV3Kind:this.uvs3=e;break;case L.UV4Kind:this.uvs4=e;break;case L.UV5Kind:this.uvs5=e;break;case L.UV6Kind:this.uvs6=e;break;case L.ColorKind:this.colors=e;break;case L.MatricesIndicesKind:this.matricesIndices=e;break;case L.MatricesWeightsKind:this.matricesWeights=e;break;case L.MatricesIndicesExtraKind:this.matricesIndicesExtra=e;break;case L.MatricesWeightsExtraKind:this.matricesWeightsExtra=e;break}}applyToMesh(e,t){return this._applyTo(e,t,!1),this}applyToGeometry(e,t){return this._applyTo(e,t,!1),this}updateMesh(e){return this._update(e),this}updateGeometry(e){return this._update(e),this}*_applyToCoroutine(e,t=!1,i){if(this.positions&&(e.setVerticesData(L.PositionKind,this.positions,t),i&&(yield)),this.normals&&(e.setVerticesData(L.NormalKind,this.normals,t),i&&(yield)),this.tangents&&(e.setVerticesData(L.TangentKind,this.tangents,t),i&&(yield)),this.uvs&&(e.setVerticesData(L.UVKind,this.uvs,t),i&&(yield)),this.uvs2&&(e.setVerticesData(L.UV2Kind,this.uvs2,t),i&&(yield)),this.uvs3&&(e.setVerticesData(L.UV3Kind,this.uvs3,t),i&&(yield)),this.uvs4&&(e.setVerticesData(L.UV4Kind,this.uvs4,t),i&&(yield)),this.uvs5&&(e.setVerticesData(L.UV5Kind,this.uvs5,t),i&&(yield)),this.uvs6&&(e.setVerticesData(L.UV6Kind,this.uvs6,t),i&&(yield)),this.colors){let r=this.positions&&this.colors.length===this.positions.length?3:4;e.setVerticesData(L.ColorKind,this.colors,t,r),this.hasVertexAlpha&&e.hasVertexAlpha!==void 0&&(e.hasVertexAlpha=!0),i&&(yield)}if(this.matricesIndices&&(e.setVerticesData(L.MatricesIndicesKind,this.matricesIndices,t),i&&(yield)),this.matricesWeights&&(e.setVerticesData(L.MatricesWeightsKind,this.matricesWeights,t),i&&(yield)),this.matricesIndicesExtra&&(e.setVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t),i&&(yield)),this.matricesWeightsExtra&&(e.setVerticesData(L.MatricesWeightsExtraKind,this.matricesWeightsExtra,t),i&&(yield)),this.indices?(e.setIndices(this.indices,null,t),i&&(yield)):e.setIndices([],null),e.subMeshes&&this.materialInfos&&this.materialInfos.length>1){let r=e;r.subMeshes=[];for(let s of this.materialInfos)new Ks(s.materialIndex,s.verticesStart,s.verticesCount,s.indexStart,s.indexCount,r)}return this}_update(e,t,i){return this.positions&&e.updateVerticesData(L.PositionKind,this.positions,t,i),this.normals&&e.updateVerticesData(L.NormalKind,this.normals,t,i),this.tangents&&e.updateVerticesData(L.TangentKind,this.tangents,t,i),this.uvs&&e.updateVerticesData(L.UVKind,this.uvs,t,i),this.uvs2&&e.updateVerticesData(L.UV2Kind,this.uvs2,t,i),this.uvs3&&e.updateVerticesData(L.UV3Kind,this.uvs3,t,i),this.uvs4&&e.updateVerticesData(L.UV4Kind,this.uvs4,t,i),this.uvs5&&e.updateVerticesData(L.UV5Kind,this.uvs5,t,i),this.uvs6&&e.updateVerticesData(L.UV6Kind,this.uvs6,t,i),this.colors&&e.updateVerticesData(L.ColorKind,this.colors,t,i),this.matricesIndices&&e.updateVerticesData(L.MatricesIndicesKind,this.matricesIndices,t,i),this.matricesWeights&&e.updateVerticesData(L.MatricesWeightsKind,this.matricesWeights,t,i),this.matricesIndicesExtra&&e.updateVerticesData(L.MatricesIndicesExtraKind,this.matricesIndicesExtra,t,i),this.matricesWeightsExtra&&e.updateVerticesData(L.MatricesWeightsExtraKind,this.matricesWeightsExtra,t,i),this.indices&&e.setIndices(this.indices,null),this}static _TransformVector3Coordinates(e,t,i=0,r=e.length){let s=$.Vector3[0],a=$.Vector3[1];for(let o=i;o({vertexData:o})):[{vertexData:e}];return lv(this._mergeCoroutine(void 0,a,t,!1,i,r,s))}*_mergeCoroutine(e,t,i=!1,r,s,a=!1,o=!1){var u,m,_,p;this._validate();let l=t.map(g=>g.vertexData),c=this;if(o)for(let g of l)g&&(g._validate(),!this.normals&&g.normals&&(this.normals=new Float32Array(this.positions.length)),!this.tangents&&g.tangents&&(this.tangents=new Float32Array(this.positions.length/3*4)),!this.uvs&&g.uvs&&(this.uvs=new Float32Array(this.positions.length/3*2)),!this.uvs2&&g.uvs2&&(this.uvs2=new Float32Array(this.positions.length/3*2)),!this.uvs3&&g.uvs3&&(this.uvs3=new Float32Array(this.positions.length/3*2)),!this.uvs4&&g.uvs4&&(this.uvs4=new Float32Array(this.positions.length/3*2)),!this.uvs5&&g.uvs5&&(this.uvs5=new Float32Array(this.positions.length/3*2)),!this.uvs6&&g.uvs6&&(this.uvs6=new Float32Array(this.positions.length/3*2)),!this.colors&&g.colors&&(this.colors=new Float32Array(this.positions.length/3*4),this.colors.fill(1)),!this.matricesIndices&&g.matricesIndices&&(this.matricesIndices=new Float32Array(this.positions.length/3*4)),!this.matricesWeights&&g.matricesWeights&&(this.matricesWeights=new Float32Array(this.positions.length/3*4)),!this.matricesIndicesExtra&&g.matricesIndicesExtra&&(this.matricesIndicesExtra=new Float32Array(this.positions.length/3*4)),!this.matricesWeightsExtra&&g.matricesWeightsExtra&&(this.matricesWeightsExtra=new Float32Array(this.positions.length/3*4)));for(let g of l)if(g){if(o)this.normals&&!g.normals&&(g.normals=new Float32Array(g.positions.length)),this.tangents&&!g.tangents&&(g.tangents=new Float32Array(g.positions.length/3*4)),this.uvs&&!g.uvs&&(g.uvs=new Float32Array(g.positions.length/3*2)),this.uvs2&&!g.uvs2&&(g.uvs2=new Float32Array(g.positions.length/3*2)),this.uvs3&&!g.uvs3&&(g.uvs3=new Float32Array(g.positions.length/3*2)),this.uvs4&&!g.uvs4&&(g.uvs4=new Float32Array(g.positions.length/3*2)),this.uvs5&&!g.uvs5&&(g.uvs5=new Float32Array(g.positions.length/3*2)),this.uvs6&&!g.uvs6&&(g.uvs6=new Float32Array(g.positions.length/3*2)),this.colors&&!g.colors&&(g.colors=new Float32Array(g.positions.length/3*4),g.colors.fill(1)),this.matricesIndices&&!g.matricesIndices&&(g.matricesIndices=new Float32Array(g.positions.length/3*4)),this.matricesWeights&&!g.matricesWeights&&(g.matricesWeights=new Float32Array(g.positions.length/3*4)),this.matricesIndicesExtra&&!g.matricesIndicesExtra&&(g.matricesIndicesExtra=new Float32Array(g.positions.length/3*4)),this.matricesWeightsExtra&&!g.matricesWeightsExtra&&(g.matricesWeightsExtra=new Float32Array(g.positions.length/3*4));else if(g._validate(),!this.normals!=!g.normals||!this.tangents!=!g.tangents||!this.uvs!=!g.uvs||!this.uvs2!=!g.uvs2||!this.uvs3!=!g.uvs3||!this.uvs4!=!g.uvs4||!this.uvs5!=!g.uvs5||!this.uvs6!=!g.uvs6||!this.colors!=!g.colors||!this.matricesIndices!=!g.matricesIndices||!this.matricesWeights!=!g.matricesWeights||!this.matricesIndicesExtra!=!g.matricesIndicesExtra||!this.matricesWeightsExtra!=!g.matricesWeightsExtra)throw new Error("Cannot merge vertex data that do not have the same set of attributes")}if(a){let g,v=0,T=0,S=[],E=null,A=[];for(let M of this.splitBasedOnMaterialID())A.push({vertexData:M,transform:e});for(let M of t)if(M.vertexData)for(let y of M.vertexData.splitBasedOnMaterialID())A.push({vertexData:y,transform:M.transform});A.sort((M,y)=>{let C=M.vertexData.materialInfos?M.vertexData.materialInfos[0].materialIndex:0,D=y.vertexData.materialInfos?y.vertexData.materialInfos[0].materialIndex:0;return C>D?1:C===D?0:-1});for(let M of A){let y=M.vertexData;if(y.materialInfos?g=y.materialInfos[0].materialIndex:g=0,E&&E.materialIndex===g)E.indexCount+=y.indices.length,E.verticesCount+=y.positions.length/3;else{let C=new fv;C.materialIndex=g,C.indexStart=v,C.indexCount=y.indices.length,C.verticesStart=T,C.verticesCount=y.positions.length/3,S.push(C),E=C}v+=y.indices.length,T+=y.positions.length/3}let R=A.splice(0,1)[0];c=R.vertexData,e=R.transform,l=A.map(M=>M.vertexData),t=A,this.materialInfos=S}let f=l.reduce((g,v)=>{var T,S;return g+((S=(T=v.indices)==null?void 0:T.length)!=null?S:0)},(m=(u=c.indices)==null?void 0:u.length)!=null?m:0),h=s||l.some(g=>g.indices===c.indices)?(_=c.indices)==null?void 0:_.slice():c.indices;if(f>0){let g=(p=h==null?void 0:h.length)!=null?p:0;if(h||(h=new Array(f)),h.length!==f){if(Array.isArray(h))h.length=f;else{let T=i||h instanceof Uint32Array?new Uint32Array(f):new Uint16Array(f);T.set(h),h=T}e&&e.determinant()<0&&n._FlipFaces(h,0,g)}let v=c.positions?c.positions.length/3:0;for(let{vertexData:T,transform:S}of t)if(T.indices){for(let E=0;E[g.vertexData.positions,g.transform])),r&&(yield),c.normals&&(this.normals=n._MergeElement(L.NormalKind,c.normals,e,t.map(g=>[g.vertexData.normals,g.transform])),r&&(yield)),c.tangents&&(this.tangents=n._MergeElement(L.TangentKind,c.tangents,e,t.map(g=>[g.vertexData.tangents,g.transform])),r&&(yield)),c.uvs&&(this.uvs=n._MergeElement(L.UVKind,c.uvs,e,t.map(g=>[g.vertexData.uvs,g.transform])),r&&(yield)),c.uvs2&&(this.uvs2=n._MergeElement(L.UV2Kind,c.uvs2,e,t.map(g=>[g.vertexData.uvs2,g.transform])),r&&(yield)),c.uvs3&&(this.uvs3=n._MergeElement(L.UV3Kind,c.uvs3,e,t.map(g=>[g.vertexData.uvs3,g.transform])),r&&(yield)),c.uvs4&&(this.uvs4=n._MergeElement(L.UV4Kind,c.uvs4,e,t.map(g=>[g.vertexData.uvs4,g.transform])),r&&(yield)),c.uvs5&&(this.uvs5=n._MergeElement(L.UV5Kind,c.uvs5,e,t.map(g=>[g.vertexData.uvs5,g.transform])),r&&(yield)),c.uvs6&&(this.uvs6=n._MergeElement(L.UV6Kind,c.uvs6,e,t.map(g=>[g.vertexData.uvs6,g.transform])),r&&(yield)),c.colors&&(this.colors=n._MergeElement(L.ColorKind,c.colors,e,t.map(g=>[g.vertexData.colors,g.transform])),(c.hasVertexAlpha!==void 0||t.some(g=>g.vertexData.hasVertexAlpha!==void 0))&&(this.hasVertexAlpha=c.hasVertexAlpha||t.some(g=>g.vertexData.hasVertexAlpha)),r&&(yield)),c.matricesIndices&&(this.matricesIndices=n._MergeElement(L.MatricesIndicesKind,c.matricesIndices,e,t.map(g=>[g.vertexData.matricesIndices,g.transform])),r&&(yield)),c.matricesWeights&&(this.matricesWeights=n._MergeElement(L.MatricesWeightsKind,c.matricesWeights,e,t.map(g=>[g.vertexData.matricesWeights,g.transform])),r&&(yield)),c.matricesIndicesExtra&&(this.matricesIndicesExtra=n._MergeElement(L.MatricesIndicesExtraKind,c.matricesIndicesExtra,e,t.map(g=>[g.vertexData.matricesIndicesExtra,g.transform])),r&&(yield)),c.matricesWeightsExtra&&(this.matricesWeightsExtra=n._MergeElement(L.MatricesWeightsExtraKind,c.matricesWeightsExtra,e,t.map(g=>[g.vertexData.matricesWeightsExtra,g.transform]))),this}static _MergeElement(e,t,i,r){let s=r.filter(l=>l[0]!==null&&l[0]!==void 0);if(!t&&s.length==0)return t;if(!t)return this._MergeElement(e,s[0][0],s[0][1],s.slice(1));let a=s.reduce((l,c)=>l+c[0].length,t.length),o=e===L.PositionKind?n._TransformVector3Coordinates:e===L.NormalKind?n._TransformVector3Normals:e===L.TangentKind?n._TransformVector4Normals:()=>{};if(t instanceof Float32Array){let l=new Float32Array(a);l.set(t),i&&o(l,i,0,t.length);let c=t.length;for(let[f,d]of s)l.set(f,c),d&&o(l,d,c,f.length),c+=f.length;return l}else{let l=new Array(a);for(let f=0;f{let a=L.DeduceStride(r);if(s.length%a!==0)throw new Error("The "+r+"s array count must be a multiple of "+a);return s.length/a},t=e(L.PositionKind,this.positions),i=(r,s)=>{let a=e(r,s);if(a!==t)throw new Error("The "+r+"s element count ("+a+") does not match the positions count ("+t+")")};this.normals&&i(L.NormalKind,this.normals),this.tangents&&i(L.TangentKind,this.tangents),this.uvs&&i(L.UVKind,this.uvs),this.uvs2&&i(L.UV2Kind,this.uvs2),this.uvs3&&i(L.UV3Kind,this.uvs3),this.uvs4&&i(L.UV4Kind,this.uvs4),this.uvs5&&i(L.UV5Kind,this.uvs5),this.uvs6&&i(L.UV6Kind,this.uvs6),this.colors&&i(L.ColorKind,this.colors),this.matricesIndices&&i(L.MatricesIndicesKind,this.matricesIndices),this.matricesWeights&&i(L.MatricesWeightsKind,this.matricesWeights),this.matricesIndicesExtra&&i(L.MatricesIndicesExtraKind,this.matricesIndicesExtra),this.matricesWeightsExtra&&i(L.MatricesWeightsExtraKind,this.matricesWeightsExtra)}clone(){let e=this.serialize();return n.Parse(e)}serialize(){let e={};if(this.positions&&(e.positions=Array.from(this.positions)),this.normals&&(e.normals=Array.from(this.normals)),this.tangents&&(e.tangents=Array.from(this.tangents)),this.uvs&&(e.uvs=Array.from(this.uvs)),this.uvs2&&(e.uvs2=Array.from(this.uvs2)),this.uvs3&&(e.uvs3=Array.from(this.uvs3)),this.uvs4&&(e.uvs4=Array.from(this.uvs4)),this.uvs5&&(e.uvs5=Array.from(this.uvs5)),this.uvs6&&(e.uvs6=Array.from(this.uvs6)),this.colors&&(e.colors=Array.from(this.colors),e.hasVertexAlpha=this.hasVertexAlpha),this.matricesIndices&&(e.matricesIndices=Array.from(this.matricesIndices),e.matricesIndicesExpanded=!0),this.matricesWeights&&(e.matricesWeights=Array.from(this.matricesWeights)),this.matricesIndicesExtra&&(e.matricesIndicesExtra=Array.from(this.matricesIndicesExtra),e.matricesIndicesExtraExpanded=!0),this.matricesWeightsExtra&&(e.matricesWeightsExtra=Array.from(this.matricesWeightsExtra)),e.indices=this.indices?Array.from(this.indices):[],this.materialInfos){e.materialInfos=[];for(let t of this.materialInfos){let i={indexStart:t.indexStart,indexCount:t.indexCount,materialIndex:t.materialIndex,verticesStart:t.verticesStart,verticesCount:t.verticesCount};e.materialInfos.push(i)}}return e}static ExtractFromMesh(e,t,i){return n._ExtractFrom(e,t,i)}static ExtractFromGeometry(e,t,i){return n._ExtractFrom(e,t,i)}static _ExtractFrom(e,t,i){let r=new n;if(e.isVerticesDataPresent(L.PositionKind)&&(r.positions=e.getVerticesData(L.PositionKind,t,i)),e.isVerticesDataPresent(L.NormalKind)&&(r.normals=e.getVerticesData(L.NormalKind,t,i)),e.isVerticesDataPresent(L.TangentKind)&&(r.tangents=e.getVerticesData(L.TangentKind,t,i)),e.isVerticesDataPresent(L.UVKind)&&(r.uvs=e.getVerticesData(L.UVKind,t,i)),e.isVerticesDataPresent(L.UV2Kind)&&(r.uvs2=e.getVerticesData(L.UV2Kind,t,i)),e.isVerticesDataPresent(L.UV3Kind)&&(r.uvs3=e.getVerticesData(L.UV3Kind,t,i)),e.isVerticesDataPresent(L.UV4Kind)&&(r.uvs4=e.getVerticesData(L.UV4Kind,t,i)),e.isVerticesDataPresent(L.UV5Kind)&&(r.uvs5=e.getVerticesData(L.UV5Kind,t,i)),e.isVerticesDataPresent(L.UV6Kind)&&(r.uvs6=e.getVerticesData(L.UV6Kind,t,i)),e.isVerticesDataPresent(L.ColorKind)){let s=e.geometry||e,a=s.getVertexBuffer(L.ColorKind),o=s.getVerticesData(L.ColorKind,t,i);if(a.getSize()===3){let l=new Float32Array(o.length*4/3);for(let c=0,f=0;c!Array.isArray(n[0]))],Me,"_TransformVector3Coordinates",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector3Normals",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_TransformVector4Normals",null);P([zs.filter((...n)=>!Array.isArray(n[0]))],Me,"_FlipFaces",null)});var Jr,iR=I(()=>{Jr=class n{static get ForceFullSceneLoadingForIncremental(){return n._ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){n._ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return n._ShowLoadingScreen}static set ShowLoadingScreen(e){n._ShowLoadingScreen=e}static get loggingLevel(){return n._LoggingLevel}static set loggingLevel(e){n._LoggingLevel=e}static get CleanBoneMatrixWeights(){return n._CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){n._CleanBoneMatrixWeights=e}};Jr._ForceFullSceneLoadingForIncremental=!1;Jr._ShowLoadingScreen=!0;Jr._CleanBoneMatrixWeights=!1;Jr._LoggingLevel=0});var xn,rR=I(()=>{ke();zt();Tr();Zi();cv();iR();qm();wi();Df();tR();Gi();fn();Vm();xn=class n{get boundingBias(){return this._boundingBias}set boundingBias(e){this._boundingBias?this._boundingBias.copyFrom(e):this._boundingBias=e.clone(),this._updateBoundingInfo(!0,null)}static CreateGeometryForMesh(e){let t=new n(n.RandomId(),e.getScene());return t.applyToMesh(e),t}get meshes(){return this._meshes}constructor(e,t,i,r=!1,s=null,a=null){this.delayLoadState=0,this._totalVertices=0,this._isDisposed=!1,this._extend={minimum:new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),maximum:new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)},this._indexBufferIsUpdatable=!1,this._positionsCache=[],this._parentContainer=null,this.useBoundingInfoFromGeometry=!1,this._scene=t||Oe.LastCreatedScene,this._scene&&(this.id=e,this.uniqueId=this._scene.getUniqueId(),this._engine=this._scene.getEngine(),this._meshes=[],this._vertexBuffers={},this._indices=[],this._updatable=r,a!==null&&(this._totalVertices=a),i?this.setAllVerticesData(i,r):a===null&&(this._totalVertices=0),this._engine.getCaps().vertexArrayObject&&(this._vertexArrayObjects={}),s&&(this.applyToMesh(s),s.computeWorldMatrix(!0)))}get extend(){return this._extend}getScene(){return this._scene}getEngine(){return this._engine}isReady(){return this.delayLoadState===1||this.delayLoadState===0}get doNotSerialize(){for(let e=0;e{t._rebuild()})}setAllVerticesData(e,t){e.applyToGeometry(this,t),this._notifyUpdate()}setVerticesData(e,t,i=!1,r){i&&Array.isArray(t)&&(t=new Float32Array(t));let s=new L(this._engine,t,e,{updatable:i,postponeInternalCreation:this._meshes.length===0,stride:r,label:"Geometry_"+this.id+"_"+e});this.setVerticesBuffer(s)}removeVerticesData(e){this._vertexBuffers[e]&&(this._vertexBuffers[e].dispose(),delete this._vertexBuffers[e]),this._vertexArrayObjects&&this._disposeVertexArrayObjects()}setVerticesBuffer(e,t=null,i=!0){let r=e.getKind();this._vertexBuffers[r]&&i&&this._vertexBuffers[r].dispose(),e._buffer&&e._ownsBuffer&&e._buffer._increaseReferences(),this._vertexBuffers[r]=e;let s=this._meshes,a=s.length;if(r===L.PositionKind){this._totalVertices=t!=null?t:e._maxVerticesCount,this._updateExtend(this.useBoundingInfoFromGeometry&&this._boundingInfo?null:e.getFloatData(this._totalVertices)),this._resetPointsArrayCache();let o=this._extend&&this._extend.minimum||new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),l=this._extend&&this._extend.maximum||new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE);for(let c=0;c65535:e.is32Bits=r;for(let s of this._meshes)s._createGlobalSubMesh(!0),s.synchronizeInstances();this._notifyUpdate()}setIndices(e,t=null,i=!1,r=!1){this._indexBuffer&&this._engine._releaseBuffer(this._indexBuffer),this._indices=e,this._indexBufferIsUpdatable=i,this._meshes.length!==0&&this._indices&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,i,"Geometry_"+this.id+"_IndexBuffer")),t!=null&&(this._totalVertices=t);for(let s of this._meshes)s._createGlobalSubMesh(!r),s.synchronizeInstances();this._notifyUpdate()}getTotalIndices(){return this.isReady()?this._totalIndices!==void 0?this._totalIndices:this._indices.length:0}getIndices(e,t){if(!this.isReady())return null;let i=this._indices;return!t&&(!e||this._meshes.length===1)?i:i.slice()}getIndexBuffer(){return this.isReady()?this._indexBuffer:null}_releaseVertexArrayObject(e=null){!e||!this._vertexArrayObjects||this._vertexArrayObjects[e.key]&&(this._engine.releaseVertexArrayObject(this._vertexArrayObjects[e.key]),delete this._vertexArrayObjects[e.key])}releaseForMesh(e,t){let i=this._meshes,r=i.indexOf(e);r!==-1&&(i.splice(r,1),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject(),e._geometry=null,i.length===0&&t&&this.dispose())}applyToMesh(e){if(e._geometry===this)return;let t=e._geometry;t&&t.releaseForMesh(e),this._vertexArrayObjects&&e._invalidateInstanceVertexArrayObject();let i=this._meshes;e._geometry=this,e._internalAbstractMeshDataInfo._positions=null,this._scene.pushGeometry(this),i.push(e),this.isReady()?this._applyToMesh(e):this._boundingInfo&&e.setBoundingInfo(this._boundingInfo)}_updateExtend(e=null){if(this.useBoundingInfoFromGeometry&&this._boundingInfo)this._extend={minimum:this._boundingInfo.minimum.clone(),maximum:this._boundingInfo.maximum.clone()};else{if(!e&&(e=this.getVerticesData(L.PositionKind),!e))return;this._extend=eR(e,0,this._totalVertices,this.boundingBias,3)}}_applyToMesh(e){for(let t in this._vertexBuffers){let i=this._vertexBuffers[t];i._buffer.getBuffer()||i.create(),t===L.PositionKind&&(this._extend||this._updateExtend(),e.buildBoundingInfo(this._extend.minimum,this._extend.maximum),e._createGlobalSubMesh(e.isUnIndexed),e._updateBoundingInfo())}!this._indexBuffer&&this._indices&&this._indices.length>0&&(this._indexBuffer=this._engine.createIndexBuffer(this._indices,this._updatable,"Geometry_"+this.id+"_IndexBuffer")),e._syncGeometryWithMorphTargetManager(),e.synchronizeInstances()}_notifyUpdate(e){this.onGeometryUpdated&&this.onGeometryUpdated(this,e),this._vertexArrayObjects&&this._disposeVertexArrayObjects();for(let t of this._meshes)t._markSubMeshesAsAttributesDirty()}load(e,t){if(this.delayLoadState!==2){if(this.isReady()){t&&t();return}this.delayLoadState=2,this._queueLoad(e,t)}}_queueLoad(e,t){this.delayLoadingFile&&(e.addPendingData(this),e._loadFile(this.delayLoadingFile,i=>{if(!this._delayLoadingFunction)return;this._delayLoadingFunction(JSON.parse(i),this),this.delayLoadState=1,this._delayInfo=[],e.removePendingData(this);let r=this._meshes,s=r.length;for(let a=0;a0){for(let r=0;r0){for(let r=0;r0){for(let r=0;r-1&&this._parentContainer.geometries.splice(r,1),this._parentContainer=null}this._isDisposed=!0}copy(e){let t=new n(e,this._scene),i=this.getIndices(void 0,!0);i&&t.setIndices(i);let r=!1,s;for(s in this._vertexBuffers){let a=this.getVertexBuffer(s),o=a.getData();if(!o)continue;let l=a.isUpdatable(),c=a.getSize(),{type:f,byteOffset:d,byteStride:h,normalized:u}=a;r=r||l;let m=this._totalVertices;if(a.getIsInstanced()){let g;o instanceof Array?g=o.length*4:g=o.byteLength,m=g/h}let _=GV(o,c,f,d,h,m,!0),p=new L(this._engine,_,s,{updatable:l,useBytes:!1,stride:c,size:c,offset:0,type:f,normalized:u,takeBufferOwnership:!0,instanced:a.getIsInstanced()});t.setVerticesBuffer(p,m)}t._updatable=r,t.delayLoadState=this.delayLoadState,t.delayLoadingFile=this.delayLoadingFile,t._delayLoadingFunction=this._delayLoadingFunction;for(s in this._delayInfo)t._delayInfo=t._delayInfo||[],t._delayInfo.push(s);return t._boundingInfo=new An(this._extend.minimum,this._extend.maximum),t}serialize(){let e={};return e.id=this.id,e.uniqueId=this.uniqueId,e.updatable=this._updatable,ei&&ei.HasTags(this)&&(e.tags=ei.GetTags(this)),e}_toNumberArray(e){return Array.isArray(e)?e:Array.prototype.slice.call(e)}clearCachedData(){this._totalIndices=this._indices.length,this._indices=[],this._resetPointsArrayCache();for(let e in this._vertexBuffers)Object.prototype.hasOwnProperty.call(this._vertexBuffers,e)&&(this._vertexBuffers[e]._buffer._data=null)}serializeVerticeData(){let e=this.serialize();return this.isVerticesDataPresent(L.PositionKind)&&(e.positions=this._toNumberArray(this.getVerticesData(L.PositionKind)),this.isVertexBufferUpdatable(L.PositionKind)&&(e.positionsUpdatable=!0)),this.isVerticesDataPresent(L.NormalKind)&&(e.normals=this._toNumberArray(this.getVerticesData(L.NormalKind)),this.isVertexBufferUpdatable(L.NormalKind)&&(e.normalsUpdatable=!0)),this.isVerticesDataPresent(L.TangentKind)&&(e.tangents=this._toNumberArray(this.getVerticesData(L.TangentKind)),this.isVertexBufferUpdatable(L.TangentKind)&&(e.tangentsUpdatable=!0)),this.isVerticesDataPresent(L.UVKind)&&(e.uvs=this._toNumberArray(this.getVerticesData(L.UVKind)),this.isVertexBufferUpdatable(L.UVKind)&&(e.uvsUpdatable=!0)),this.isVerticesDataPresent(L.UV2Kind)&&(e.uvs2=this._toNumberArray(this.getVerticesData(L.UV2Kind)),this.isVertexBufferUpdatable(L.UV2Kind)&&(e.uvs2Updatable=!0)),this.isVerticesDataPresent(L.UV3Kind)&&(e.uvs3=this._toNumberArray(this.getVerticesData(L.UV3Kind)),this.isVertexBufferUpdatable(L.UV3Kind)&&(e.uvs3Updatable=!0)),this.isVerticesDataPresent(L.UV4Kind)&&(e.uvs4=this._toNumberArray(this.getVerticesData(L.UV4Kind)),this.isVertexBufferUpdatable(L.UV4Kind)&&(e.uvs4Updatable=!0)),this.isVerticesDataPresent(L.UV5Kind)&&(e.uvs5=this._toNumberArray(this.getVerticesData(L.UV5Kind)),this.isVertexBufferUpdatable(L.UV5Kind)&&(e.uvs5Updatable=!0)),this.isVerticesDataPresent(L.UV6Kind)&&(e.uvs6=this._toNumberArray(this.getVerticesData(L.UV6Kind)),this.isVertexBufferUpdatable(L.UV6Kind)&&(e.uvs6Updatable=!0)),this.isVerticesDataPresent(L.ColorKind)&&(e.colors=this._toNumberArray(this.getVerticesData(L.ColorKind)),this.isVertexBufferUpdatable(L.ColorKind)&&(e.colorsUpdatable=!0)),this.isVerticesDataPresent(L.MatricesIndicesKind)&&(e.matricesIndices=this._toNumberArray(this.getVerticesData(L.MatricesIndicesKind)),e.matricesIndicesExpanded=!0,this.isVertexBufferUpdatable(L.MatricesIndicesKind)&&(e.matricesIndicesUpdatable=!0)),this.isVerticesDataPresent(L.MatricesWeightsKind)&&(e.matricesWeights=this._toNumberArray(this.getVerticesData(L.MatricesWeightsKind)),this.isVertexBufferUpdatable(L.MatricesWeightsKind)&&(e.matricesWeightsUpdatable=!0)),e.indices=this._toNumberArray(this.getIndices()),e}static ExtractFromMesh(e,t){let i=e._geometry;return i?i.copy(t):null}static RandomId(){return pe.RandomId()}static _GetGeometryByLoadedUniqueId(e,t){for(let i=0;i0){let o=new Float32Array(e,a.positionsAttrDesc.offset,a.positionsAttrDesc.count);t.setVerticesData(L.PositionKind,o,!1)}if(a.normalsAttrDesc&&a.normalsAttrDesc.count>0){let o=new Float32Array(e,a.normalsAttrDesc.offset,a.normalsAttrDesc.count);t.setVerticesData(L.NormalKind,o,!1)}if(a.tangetsAttrDesc&&a.tangetsAttrDesc.count>0){let o=new Float32Array(e,a.tangetsAttrDesc.offset,a.tangetsAttrDesc.count);t.setVerticesData(L.TangentKind,o,!1)}if(a.uvsAttrDesc&&a.uvsAttrDesc.count>0){let o=new Float32Array(e,a.uvsAttrDesc.offset,a.uvsAttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs2AttrDesc.offset,a.uvs2AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs3AttrDesc.offset,a.uvs3AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs4AttrDesc.offset,a.uvs4AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs5AttrDesc.offset,a.uvs5AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.uvs6AttrDesc.offset,a.uvs6AttrDesc.count);if(yt)for(let l=1;l0){let o=new Float32Array(e,a.colorsAttrDesc.offset,a.colorsAttrDesc.count);t.setVerticesData(L.ColorKind,o,!1,a.colorsAttrDesc.stride)}if(a.matricesIndicesAttrDesc&&a.matricesIndicesAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesAttrDesc.offset,a.matricesIndicesAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(L.MatricesIndicesKind,l,!1)}if(a.matricesIndicesExtraAttrDesc&&a.matricesIndicesExtraAttrDesc.count>0){let o=new Int32Array(e,a.matricesIndicesExtraAttrDesc.offset,a.matricesIndicesExtraAttrDesc.count),l=[];for(let c=0;c>8),l.push((f&16711680)>>16),l.push(f>>24&255)}t.setVerticesData(L.MatricesIndicesExtraKind,l,!1)}if(a.matricesWeightsAttrDesc&&a.matricesWeightsAttrDesc.count>0){let o=new Float32Array(e,a.matricesWeightsAttrDesc.offset,a.matricesWeightsAttrDesc.count);t.setVerticesData(L.MatricesWeightsKind,o,!1)}if(a.indicesAttrDesc&&a.indicesAttrDesc.count>0){let o=new Int32Array(e,a.indicesAttrDesc.offset,a.indicesAttrDesc.count);t.setIndices(o,null)}if(a.subMeshesAttrDesc&&a.subMeshesAttrDesc.count>0){let o=new Int32Array(e,a.subMeshesAttrDesc.offset,a.subMeshesAttrDesc.count*5);t.subMeshes=[];for(let l=0;l>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(L.MatricesIndicesKind,a,e.matricesIndices._updatable||e.matricesIndicesUpdatable)}else delete e.matricesIndices._isExpanded,delete e.matricesIndicesExpanded,t.setVerticesData(L.MatricesIndicesKind,e.matricesIndices,e.matricesIndices._updatable||e.matricesIndicesUpdatable);if(e.matricesIndicesExtra)if(e.matricesIndicesExtraExpanded||e.matricesIndicesExtra._isExpanded)delete e.matricesIndices._isExpanded,delete e.matricesIndicesExtraExpanded,t.setVerticesData(L.MatricesIndicesExtraKind,e.matricesIndicesExtra,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable);else{let a=[];for(let o=0;o>8),a.push((l&16711680)>>16),a.push(l>>24&255)}t.setVerticesData(L.MatricesIndicesExtraKind,a,e.matricesIndicesExtra._updatable||e.matricesIndicesExtraUpdatable)}e.matricesWeights&&(n._CleanMatricesWeights(e,t),t.setVerticesData(L.MatricesWeightsKind,e.matricesWeights,e.matricesWeights._updatable)),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesWeightsExtraKind,e.matricesWeightsExtra,e.matricesWeights._updatable),t.setIndices(e.indices,null)}if(e.subMeshes){t.subMeshes=[];for(let a=0;a-1){let d=t.getScene().getLastSkeletonById(e.skeletonId);if(!d)return;r=d.bones.length}else return;let s=t.getVerticesData(L.MatricesIndicesKind),a=t.getVerticesData(L.MatricesIndicesExtraKind),o=e.matricesWeights,l=e.matricesWeightsExtra,c=e.numBoneInfluencer,f=o.length;for(let d=0;dc-1)&&(u=c-1),h>.001){let m=1/h;for(let _=0;_<4;_++)o[d+_]*=m;if(l)for(let _=0;_<4;_++)l[d+_]*=m}else u>=4?(l[d+u-4]=1-h,a[d+u-4]=r):(o[d+u]=1-h,s[d+u]=r)}t.setVerticesData(L.MatricesIndicesKind,s),e.matricesWeightsExtra&&t.setVerticesData(L.MatricesIndicesExtraKind,a)}static Parse(e,t,i){let r=new n(e.id,t,void 0,e.updatable);return r._loadedUniqueId=e.uniqueId,ei&&ei.AddTagsTo(r,e.tags),e.delayLoadingFile?(r.delayLoadState=4,r.delayLoadingFile=i+e.delayLoadingFile,r._boundingInfo=new An(b.FromArray(e.boundingBoxMinimum),b.FromArray(e.boundingBoxMaximum)),r._delayInfo=[],e.hasUVs&&r._delayInfo.push(L.UVKind),e.hasUVs2&&r._delayInfo.push(L.UV2Kind),e.hasUVs3&&r._delayInfo.push(L.UV3Kind),e.hasUVs4&&r._delayInfo.push(L.UV4Kind),e.hasUVs5&&r._delayInfo.push(L.UV5Kind),e.hasUVs6&&r._delayInfo.push(L.UV6Kind),e.hasColors&&r._delayInfo.push(L.ColorKind),e.hasMatricesIndices&&r._delayInfo.push(L.MatricesIndicesKind),e.hasMatricesWeights&&r._delayInfo.push(L.MatricesWeightsKind),r._delayLoadingFunction=Me.ImportVertexData):Me.ImportVertexData(e,r),t.pushGeometry(r,!0),r}}});var Zt,Vf=I(()=>{Wt();kt();Dr();mi();ke();_a();$i();Zt=class n extends Ei{get billboardMode(){return this._billboardMode}set billboardMode(e){this._billboardMode!==e&&(this._billboardMode=e,this._cache.useBillboardPosition=(this._billboardMode&n.BILLBOARDMODE_USE_POSITION)!==0)}get infiniteDistance(){return this._infiniteDistance}set infiniteDistance(e){this._infiniteDistance!==e&&(this._infiniteDistance=e)}constructor(e,t=null,i=!0){super(e,t,!1),this._forward=new b(0,0,1),this._up=new b(0,1,0),this._right=new b(1,0,0),this._position=b.Zero(),this._rotation=b.Zero(),this._rotationQuaternion=null,this._scaling=b.One(),this._transformToBoneReferal=null,this._isAbsoluteSynced=!1,this._billboardMode=n.BILLBOARDMODE_NONE,this.scalingDeterminant=1,this._infiniteDistance=!1,this.ignoreNonUniformScaling=!1,this.reIntegrateRotationIntoRotationQuaternion=!1,this._poseMatrix=null,this._localMatrix=Z.Zero(),this._usePivotMatrix=!1,this._absolutePosition=b.Zero(),this._absoluteScaling=b.Zero(),this._absoluteRotationQuaternion=Ke.Identity(),this._pivotMatrix=Z.Identity(),this._postMultiplyPivotMatrix=!1,this._isWorldMatrixFrozen=!1,this._indexInSceneTransformNodesArray=-1,this.onAfterWorldMatrixUpdateObservable=new te,this._nonUniformScaling=!1,i&&this.getScene().addTransformNode(this)}getClassName(){return"TransformNode"}get position(){return this._position}set position(e){this._position=e,this._markAsDirtyInternal()}isUsingPivotMatrix(){return this._usePivotMatrix}isUsingPostMultiplyPivotMatrix(){return this._postMultiplyPivotMatrix}get rotation(){return this._rotation}set rotation(e){this._rotation=e,this._rotationQuaternion=null,this._markAsDirtyInternal()}get scaling(){return this._scaling}set scaling(e){this._scaling=e,this._markAsDirtyInternal()}get rotationQuaternion(){return this._rotationQuaternion}set rotationQuaternion(e){this._rotationQuaternion=e,e&&this._rotation.setAll(0),this._markAsDirtyInternal()}_markAsDirtyInternal(){this._isDirty||(this._isDirty=!0,this.customMarkAsDirty&&this.customMarkAsDirty())}get forward(){return b.TransformNormalFromFloatsToRef(0,0,this.getScene().useRightHandedSystem?-1:1,this.getWorldMatrix(),this._forward),this._forward.normalize()}get up(){return b.TransformNormalFromFloatsToRef(0,1,0,this.getWorldMatrix(),this._up),this._up.normalize()}get right(){return b.TransformNormalFromFloatsToRef(this.getScene().useRightHandedSystem?-1:1,0,0,this.getWorldMatrix(),this._right),this._right.normalize()}updatePoseMatrix(e){return this._poseMatrix?(this._poseMatrix.copyFrom(e),this):(this._poseMatrix=e.clone(),this)}getPoseMatrix(){return this._poseMatrix||(this._poseMatrix=Z.Identity()),this._poseMatrix}_isSynchronized(){let e=this._cache;return!(this._billboardMode!==e.billboardMode||this._billboardMode!==n.BILLBOARDMODE_NONE||e.pivotMatrixUpdated||this._infiniteDistance||this._position._isDirty||this._scaling._isDirty||this._rotationQuaternion&&this._rotationQuaternion._isDirty||this._rotation._isDirty)}_initCache(){super._initCache();let e=this._cache;e.localMatrixUpdated=!1,e.billboardMode=-1,e.infiniteDistance=!1,e.useBillboardPosition=!1}get absolutePosition(){return this.getAbsolutePosition()}get absoluteScaling(){return this._syncAbsoluteScalingAndRotation(),this._absoluteScaling}get absoluteRotationQuaternion(){return this._syncAbsoluteScalingAndRotation(),this._absoluteRotationQuaternion}setPreTransformMatrix(e){return this.setPivotMatrix(e,!1)}setPivotMatrix(e,t=!0){return this._pivotMatrix.copyFrom(e),this._usePivotMatrix=!this._pivotMatrix.isIdentity(),this._cache.pivotMatrixUpdated=!0,this._postMultiplyPivotMatrix=t,this._postMultiplyPivotMatrix&&(this._pivotMatrixInverse?this._pivotMatrix.invertToRef(this._pivotMatrixInverse):this._pivotMatrixInverse=Z.Invert(this._pivotMatrix)),this}getPivotMatrix(){return this._pivotMatrix}instantiateHierarchy(e=null,t,i){let r=this.clone("Clone of "+(this.name||this.id),e||this.parent,!0);r&&i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.instantiateHierarchy(r,t,i);return r}freezeWorldMatrix(e=null,t=!1){return e?t?(this._rotation.setAll(0),this._rotationQuaternion=this._rotationQuaternion||Ke.Identity(),e.decompose(this._scaling,this._rotationQuaternion,this._position),this.computeWorldMatrix(!0)):(this._worldMatrix=e,this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._afterComputeWorldMatrix()):(this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0)),this._isDirty=!1,this._isWorldMatrixFrozen=!0,this}unfreezeWorldMatrix(){return this._isWorldMatrixFrozen=!1,this.computeWorldMatrix(!0),this}get isWorldMatrixFrozen(){return this._isWorldMatrixFrozen}getAbsolutePosition(){return this.computeWorldMatrix(),this._absolutePosition}setAbsolutePosition(e){if(!e)return this;let t,i,r;if(e.x===void 0){if(arguments.length<3)return this;t=arguments[0],i=arguments[1],r=arguments[2]}else t=e.x,i=e.y,r=e.z;if(this.parent){let s=$.Matrix[0];this.parent.getWorldMatrix().invertToRef(s),b.TransformCoordinatesFromFloatsToRef(t,i,r,s,this.position)}else this.position.x=t,this.position.y=i,this.position.z=r;return this._absolutePosition.copyFrom(e),this}setPositionWithLocalVector(e){return this.computeWorldMatrix(),this.position=b.TransformNormal(e,this._localMatrix),this}getPositionExpressedInLocalSpace(){this.computeWorldMatrix();let e=$.Matrix[0];return this._localMatrix.invertToRef(e),b.TransformNormal(this.position,e)}locallyTranslate(e){return this.computeWorldMatrix(!0),this.position=b.TransformCoordinates(e,this._localMatrix),this}lookAt(e,t=0,i=0,r=0,s=0){let a=n._LookAtVectorCache,o=s===0?this.position:this.getAbsolutePosition();if(e.subtractToRef(o,a),this.setDirection(a,t,i,r),s===1&&this.parent)if(this.rotationQuaternion){let l=$.Matrix[0];this.rotationQuaternion.toRotationMatrix(l);let c=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(c),c.invert(),l.multiplyToRef(c,l),this.rotationQuaternion.fromRotationMatrix(l)}else{let l=$.Quaternion[0];Ke.FromEulerVectorToRef(this.rotation,l);let c=$.Matrix[0];l.toRotationMatrix(c);let f=$.Matrix[1];this.parent.getWorldMatrix().getRotationMatrixToRef(f),f.invert(),c.multiplyToRef(f,c),l.fromRotationMatrix(c),l.toEulerAnglesToRef(this.rotation)}return this}getDirection(e){let t=b.Zero();return this.getDirectionToRef(e,t),t}getDirectionToRef(e,t){return b.TransformNormalToRef(e,this.getWorldMatrix(),t),this}setDirection(e,t=0,i=0,r=0){let s=-Math.atan2(e.z,e.x)+Math.PI/2,a=Math.sqrt(e.x*e.x+e.z*e.z),o=-Math.atan2(e.y,a);return this.rotationQuaternion?Ke.RotationYawPitchRollToRef(s+t,o+i,r,this.rotationQuaternion):(this.rotation.x=o+i,this.rotation.y=s+t,this.rotation.z=r),this}setPivotPoint(e,t=0){this.getScene().getRenderId()==0&&this.computeWorldMatrix(!0);let i=this.getWorldMatrix();if(t==1){let r=$.Matrix[0];i.invertToRef(r),e=b.TransformCoordinates(e,r)}return this.setPivotMatrix(Z.Translation(-e.x,-e.y,-e.z),!0)}getPivotPoint(){let e=b.Zero();return this.getPivotPointToRef(e),e}getPivotPointToRef(e){return e.x=-this._pivotMatrix.m[12],e.y=-this._pivotMatrix.m[13],e.z=-this._pivotMatrix.m[14],this}getAbsolutePivotPoint(){let e=b.Zero();return this.getAbsolutePivotPointToRef(e),e}getAbsolutePivotPointToRef(e){return this.getPivotPointToRef(e),b.TransformCoordinatesToRef(e,this.getWorldMatrix(),e),this}markAsDirty(e){if(this._isDirty)return this;if(this._children)for(let t of this._children)t.markAsDirty(e);return super.markAsDirty(e)}setParent(e,t=!1,i=!1){if(!e&&!this.parent)return this;let r=$.Quaternion[0],s=$.Vector3[0],a=$.Vector3[1],o=$.Matrix[1];Z.IdentityToRef(o);let l=$.Matrix[0];this.computeWorldMatrix(!0);let c=this.rotationQuaternion;return c||(c=n._TmpRotation,Ke.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,c)),Z.ComposeToRef(this.scaling,c,this.position,l),this.parent&&l.multiplyToRef(this.parent.computeWorldMatrix(!0),l),e&&(e.computeWorldMatrix(!0).invertToRef(o),l.multiplyToRef(o,l)),l.decompose(a,r,s,t?this:void 0),this.rotationQuaternion?this.rotationQuaternion.copyFrom(r):r.toEulerAnglesToRef(this.rotation),this.scaling.copyFrom(a),this.position.copyFrom(s),this.parent=e,i&&this.setPivotMatrix(Z.Identity()),this}addChild(e,t=!1){return e.setParent(this,t),this}removeChild(e,t=!1){return e.parent!==this?this:(e.setParent(null,t),this)}get nonUniformScaling(){return this._nonUniformScaling}_updateNonUniformScalingState(e){return this._nonUniformScaling===e?!1:(this._nonUniformScaling=e,!0)}attachToBone(e,t){return this._currentParentWhenAttachingToBone=this.parent,this._transformToBoneReferal=t,this.parent=e,e.getSkeleton().prepare(!0),e.getFinalMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this}detachFromBone(e=!1){return this.parent?(this.parent.getWorldMatrix().determinant()<0&&(this.scalingDeterminant*=-1),this._transformToBoneReferal=null,e?this.parent=this._currentParentWhenAttachingToBone:this.parent=null,this):(e&&(this.parent=this._currentParentWhenAttachingToBone),this)}rotate(e,t,i){e.normalize(),this.rotationQuaternion||(this.rotationQuaternion=this.rotation.toQuaternion(),this.rotation.setAll(0));let r;if(!i||i===0)r=Ke.RotationAxisToRef(e,t,n._RotationAxisCache),this.rotationQuaternion.multiplyToRef(r,this.rotationQuaternion);else{if(this.parent){let s=this.parent.getWorldMatrix(),a=$.Matrix[0];s.invertToRef(a),e=b.TransformNormal(e,a),s.determinant()<0&&(t*=-1)}r=Ke.RotationAxisToRef(e,t,n._RotationAxisCache),r.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion)}return this}rotateAround(e,t,i){t.normalize(),this.rotationQuaternion||(this.rotationQuaternion=Ke.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z),this.rotation.setAll(0));let r=$.Vector3[0],s=$.Vector3[1],a=$.Vector3[2],o=$.Quaternion[0],l=$.Matrix[0],c=$.Matrix[1],f=$.Matrix[2],d=$.Matrix[3];return e.subtractToRef(this.position,r),Z.TranslationToRef(r.x,r.y,r.z,l),Z.TranslationToRef(-r.x,-r.y,-r.z,c),Z.RotationAxisToRef(t,i,f),c.multiplyToRef(f,d),d.multiplyToRef(l,d),d.decompose(s,o,a),this.position.addInPlace(a),o.multiplyToRef(this.rotationQuaternion,this.rotationQuaternion),this}translate(e,t,i){let r=e.scale(t);if(!i||i===0){let s=this.getPositionExpressedInLocalSpace().add(r);this.setPositionWithLocalVector(s)}else this.setAbsolutePosition(this.getAbsolutePosition().add(r));return this}addRotation(e,t,i){let r;this.rotationQuaternion?r=this.rotationQuaternion:(r=$.Quaternion[1],Ke.RotationYawPitchRollToRef(this.rotation.y,this.rotation.x,this.rotation.z,r));let s=$.Quaternion[0];return Ke.RotationYawPitchRollToRef(t,e,i,s),r.multiplyInPlace(s),this.rotationQuaternion||r.toEulerAnglesToRef(this.rotation),this}_getEffectiveParent(){return this.parent}isWorldMatrixCameraDependent(){return this._infiniteDistance&&!this.parent||this._billboardMode!==n.BILLBOARDMODE_NONE}computeWorldMatrix(e=!1,t=null){if(this._isWorldMatrixFrozen&&!this._isDirty)return this._worldMatrix;let i=this.getScene().getRenderId();if(!this._isDirty&&!e&&(this._currentRenderId===i||this.isSynchronized()))return this._currentRenderId=i,this._worldMatrix;t=t||this.getScene().activeCamera,this._updateCache();let r=this._cache;r.pivotMatrixUpdated=!1,r.billboardMode=this.billboardMode,r.infiniteDistance=this.infiniteDistance,r.parent=this._parentNode,this._currentRenderId=i,this._childUpdateId+=1,this._isDirty=!1,this._position._isDirty=!1,this._rotation._isDirty=!1,this._scaling._isDirty=!1;let s=this._getEffectiveParent(),a=n._TmpScaling,o=this._position;if(this._infiniteDistance&&!this.parent&&t){let f=t.getWorldMatrix().m;o=n._TmpTranslation,o.copyFromFloats(this._position.x+f[12],this._position.y+f[13],this._position.z+f[14])}a.copyFromFloats(this._scaling.x*this.scalingDeterminant,this._scaling.y*this.scalingDeterminant,this._scaling.z*this.scalingDeterminant);let l;if(this._rotationQuaternion?(this._rotationQuaternion._isDirty=!1,l=this._rotationQuaternion,this.reIntegrateRotationIntoRotationQuaternion&&this.rotation.lengthSquared()&&(this._rotationQuaternion.multiplyInPlace(Ke.RotationYawPitchRoll(this._rotation.y,this._rotation.x,this._rotation.z)),this._rotation.copyFromFloats(0,0,0))):(l=n._TmpRotation,Ke.RotationYawPitchRollToRef(this._rotation.y,this._rotation.x,this._rotation.z,l)),this._usePivotMatrix){let c=$.Matrix[1];Z.ScalingToRef(a.x,a.y,a.z,c);let f=$.Matrix[0];l.toRotationMatrix(f),this._pivotMatrix.multiplyToRef(c,$.Matrix[4]),$.Matrix[4].multiplyToRef(f,this._localMatrix),this._postMultiplyPivotMatrix&&this._localMatrix.multiplyToRef(this._pivotMatrixInverse,this._localMatrix),this._localMatrix.addTranslationFromFloats(o.x,o.y,o.z)}else Z.ComposeToRef(a,l,o,this._localMatrix);if(s&&s.getWorldMatrix){if(e&&s.computeWorldMatrix(e),this.billboardMode){if(this._transformToBoneReferal){let h=this.parent;h.getSkeleton().prepare(),h.getFinalMatrix().multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),$.Matrix[7])}else $.Matrix[7].copyFrom(s.getWorldMatrix());let c=$.Vector3[5],f=$.Vector3[6],d=$.Quaternion[0];$.Matrix[7].decompose(f,d,c),Z.ScalingToRef(f.x,f.y,f.z,$.Matrix[7]),$.Matrix[7].setTranslation(c),n.BillboardUseParentOrientation&&(this._position.applyRotationQuaternionToRef(d,c),this._localMatrix.setTranslation(c)),this._localMatrix.multiplyToRef($.Matrix[7],this._worldMatrix)}else if(this._transformToBoneReferal){let c=this.parent;c.getSkeleton().prepare(),this._localMatrix.multiplyToRef(c.getFinalMatrix(),$.Matrix[6]),$.Matrix[6].multiplyToRef(this._transformToBoneReferal.getWorldMatrix(),this._worldMatrix)}else this._localMatrix.multiplyToRef(s.getWorldMatrix(),this._worldMatrix);this._markSyncedWithParent()}else this._worldMatrix.copyFrom(this._localMatrix);if(t&&this.billboardMode)if(r.useBillboardPosition){let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c);let f=t.globalPosition;this._worldMatrix.invertToRef($.Matrix[1]);let d=$.Vector3[1];b.TransformCoordinatesToRef(f,$.Matrix[1],d),d.normalize();let h=-Math.atan2(d.z,d.x)+Math.PI/2,u=Math.sqrt(d.x*d.x+d.z*d.z),m=-Math.atan2(d.y,u);if(Ke.RotationYawPitchRollToRef(h,m,0,$.Quaternion[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){let _=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(_),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(_.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(_.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(_.z=0),Z.RotationYawPitchRollToRef(_.y,_.x,_.z,$.Matrix[0])}else Z.FromQuaternionToRef($.Quaternion[0],$.Matrix[0]);this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}else{let c=$.Vector3[0];this._worldMatrix.getTranslationToRef(c),$.Matrix[1].copyFrom(t.getViewMatrix());let f=this.getScene().useRightHandedSystem;if(f&&$.Matrix[1].multiplyToRef(n._TmpRHRestore,$.Matrix[1]),$.Matrix[1].setTranslationFromFloats(0,0,0),$.Matrix[1].invertToRef($.Matrix[0]),(this.billboardMode&n.BILLBOARDMODE_ALL)!==n.BILLBOARDMODE_ALL){$.Matrix[0].decompose(void 0,$.Quaternion[0],void 0);let d=$.Vector3[1];$.Quaternion[0].toEulerAnglesToRef(d),(this.billboardMode&n.BILLBOARDMODE_X)!==n.BILLBOARDMODE_X&&(d.x=0),(this.billboardMode&n.BILLBOARDMODE_Y)!==n.BILLBOARDMODE_Y&&(d.y=0),(this.billboardMode&n.BILLBOARDMODE_Z)!==n.BILLBOARDMODE_Z&&(d.z=0),f&&(d.y+=Math.PI),Z.RotationYawPitchRollToRef(d.y,d.x,d.z,$.Matrix[0])}this._worldMatrix.setTranslationFromFloats(0,0,0),this._worldMatrix.multiplyToRef($.Matrix[0],this._worldMatrix),this._worldMatrix.setTranslation($.Vector3[0])}return this.ignoreNonUniformScaling?this._updateNonUniformScalingState(!1):this._scaling.isNonUniformWithinEpsilon(1e-6)?this._updateNonUniformScalingState(!0):s&&s._nonUniformScaling?this._updateNonUniformScalingState(s._nonUniformScaling):this._updateNonUniformScalingState(!1),this._afterComputeWorldMatrix(),this._absolutePosition.copyFromFloats(this._worldMatrix.m[12],this._worldMatrix.m[13],this._worldMatrix.m[14]),this._isAbsoluteSynced=!1,this.onAfterWorldMatrixUpdateObservable.notifyObservers(this),this._poseMatrix||(this._poseMatrix=Z.Invert(this._worldMatrix)),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix}resetLocalMatrix(e=!0){if(this.computeWorldMatrix(),e){let t=this.getChildren();for(let i=0;inew n(e,this.getScene()),this);if(r.name=e,r.id=e,t&&(r.parent=t),!i){let s=this.getDescendants(!0);for(let a=0;anew n(e.name,t),e,t,i);if(e.localMatrix?r.setPreTransformMatrix(Z.FromArray(e.localMatrix)):e.pivotMatrix&&r.setPivotMatrix(Z.FromArray(e.pivotMatrix)),r.setEnabled(e.isEnabled),r._waitingParsedUniqueId=e.uniqueId,e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.freezeWorldMatrix&&(r._waitingFreezeWorldMatrix=e.freezeWorldMatrix),e.animations){for(let s=0;s(!t||t(r))&&r instanceof n),i}dispose(e,t=!1){if(this.getScene().stopAnimation(this),this.getScene().removeTransformNode(this),this._parentContainer){let i=this._parentContainer.transformNodes.indexOf(this);i>-1&&this._parentContainer.transformNodes.splice(i,1),this._parentContainer=null}if(this.onAfterWorldMatrixUpdateObservable.clear(),e){let i=this.getChildTransformNodes(!0);for(let r of i)r.parent=null,r.computeWorldMatrix(!0)}super.dispose(e,t)}normalizeToUnitCube(e=!0,t=!1,i){let r=null,s=null;t&&(this.rotationQuaternion?(s=this.rotationQuaternion.clone(),this.rotationQuaternion.copyFromFloats(0,0,0,1)):this.rotation&&(r=this.rotation.clone(),this.rotation.copyFromFloats(0,0,0)));let a=this.getHierarchyBoundingVectors(e,i),o=a.max.subtract(a.min),l=Math.max(o.x,o.y,o.z);if(l===0)return this;let c=1/l;return this.scaling.scaleInPlace(c),t&&(this.rotationQuaternion&&s?this.rotationQuaternion.copyFrom(s):this.rotation&&r&&this.rotation.copyFrom(r)),this}_syncAbsoluteScalingAndRotation(){this._isAbsoluteSynced||(this._worldMatrix.decompose(this._absoluteScaling,this._absoluteRotationQuaternion),this._isAbsoluteSynced=!0)}};Zt.BILLBOARDMODE_NONE=0;Zt.BILLBOARDMODE_X=1;Zt.BILLBOARDMODE_Y=2;Zt.BILLBOARDMODE_Z=4;Zt.BILLBOARDMODE_ALL=7;Zt.BILLBOARDMODE_USE_POSITION=128;Zt.BillboardUseParentOrientation=!1;Zt._TmpRotation=Ke.Zero();Zt._TmpScaling=b.Zero();Zt._TmpTranslation=b.Zero();Zt._TmpRHRestore=Z.Scaling(1,1,-1);Zt._LookAtVectorCache=new b(0,0,0);Zt._RotationAxisCache=new Ke;P([Qr("position")],Zt.prototype,"_position",void 0);P([Qr("rotation")],Zt.prototype,"_rotation",void 0);P([NV("rotationQuaternion")],Zt.prototype,"_rotationQuaternion",void 0);P([Qr("scaling")],Zt.prototype,"_scaling",void 0);P([F("billboardMode")],Zt.prototype,"_billboardMode",void 0);P([F()],Zt.prototype,"scalingDeterminant",void 0);P([F("infiniteDistance")],Zt.prototype,"_infiniteDistance",void 0);P([F()],Zt.prototype,"ignoreNonUniformScaling",void 0);P([F()],Zt.prototype,"reIntegrateRotationIntoRotationQuaternion",void 0)});var nR,_H=I(()=>{ke();nR=class{constructor(){this._checkCollisions=!1,this._collisionMask=-1,this._collisionGroup=-1,this._surroundingMeshes=null,this._collider=null,this._oldPositionForCollisions=new b(0,0,0),this._diffPositionForCollisions=new b(0,0,0),this._collisionResponse=!0}}});function gH(n){return Math.floor(n/8)}function vH(n){return 1<{sR=class{constructor(e){this.size=e,this._byteArray=new Uint8Array(Math.ceil(this.size/8))}get(e){if(e>=this.size)throw new RangeError("Bit index out of range");let t=gH(e),i=vH(e);return(this._byteArray[t]&i)!==0}set(e,t){if(e>=this.size)throw new RangeError("Bit index out of range");let i=gH(e),r=vH(e);t?this._byteArray[i]|=r:this._byteArray[i]&=~r}}});var SH={};Fe(SH,{OptimizeIndices:()=>Ufe});function Ufe(n){let e=[],t=n.length/3;for(let l=0;l{let c=[l];for(;c.length>0;){let f=c.pop();if(!r.get(f)){r.set(f,!0),s.push(e[f]);for(let d of e[f]){let h=i.get(d);if(!h)return;for(let u of h)r.get(u)||c.push(u)}}}};for(let l=0;l{EH()});function Vfe(n,e,t){let i;switch(e){case L.PositionKind:i=r=>r.getPositions();break;case L.NormalKind:i=r=>r.getNormals();break;case L.TangentKind:i=r=>r.getTangents();break;case L.UVKind:i=r=>r.getUVs();break;case L.UV2Kind:i=r=>r.getUV2s();break;case L.ColorKind:i=r=>r.getColors();break;default:return}for(let r=0;r0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(i[h+u]*16),m,c),l.addToSelf(c));if(s&&a)for(u=0;u<4;u++)m=a[h+u],m>0&&(Z.FromFloat32ArrayToRefScaled(t,Math.floor(s[h+u]*16),m,c),l.addToSelf(c));f(n[d],n[d+1],n[d+2],l,o),o.toArray(n,d)}}var wD,FD,yr,$m=I(()=>{Wt();mi();ke();Zi();Tr();Vf();jg();qm();Of();_H();Sn();tR();zt();Kn();Mm();$i();kt();zr();wD=class{constructor(){this.facetNb=0,this.partitioningSubdivisions=10,this.partitioningBBoxRatio=1.01,this.facetDataEnabled=!1,this.facetParameters={},this.bbSize=b.Zero(),this.subDiv={max:1,X:1,Y:1,Z:1},this.facetDepthSort=!1,this.facetDepthSortEnabled=!1}},FD=class{constructor(){this._hasVertexAlpha=!1,this._useVertexColors=!0,this._numBoneInfluencers=4,this._applyFog=!0,this._receiveShadows=!1,this._facetData=new wD,this._visibility=1,this._skeleton=null,this._layerMask=268435455,this._computeBonesUsingShaders=!0,this._isActive=!1,this._onlyForInstances=!1,this._isActiveIntermediate=!1,this._onlyForInstancesIntermediate=!1,this._actAsRegularMesh=!1,this._currentLOD=new Map,this._collisionRetryCount=3,this._morphTargetManager=null,this._renderingGroupId=0,this._bakedVertexAnimationManager=null,this._material=null,this._positions=null,this._pointerOverDisableMeshTesting=!1,this._meshCollisionData=new nR,this._enableDistantPicking=!1,this._rawBoundingInfo=null,this._sideOrientationHint=!1,this._wasActiveLastFrame=!1}},yr=class n extends Zt{static get BILLBOARDMODE_NONE(){return Zt.BILLBOARDMODE_NONE}static get BILLBOARDMODE_X(){return Zt.BILLBOARDMODE_X}static get BILLBOARDMODE_Y(){return Zt.BILLBOARDMODE_Y}static get BILLBOARDMODE_Z(){return Zt.BILLBOARDMODE_Z}static get BILLBOARDMODE_ALL(){return Zt.BILLBOARDMODE_ALL}static get BILLBOARDMODE_USE_POSITION(){return Zt.BILLBOARDMODE_USE_POSITION}get facetNb(){return this._internalAbstractMeshDataInfo._facetData.facetNb}get partitioningSubdivisions(){return this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions}set partitioningSubdivisions(e){this._internalAbstractMeshDataInfo._facetData.partitioningSubdivisions=e}get partitioningBBoxRatio(){return this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio}set partitioningBBoxRatio(e){this._internalAbstractMeshDataInfo._facetData.partitioningBBoxRatio=e}get mustDepthSortFacets(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSort}set mustDepthSortFacets(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSort=e}get facetDepthSortFrom(){return this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom}set facetDepthSortFrom(e){this._internalAbstractMeshDataInfo._facetData.facetDepthSortFrom=e}get collisionRetryCount(){return this._internalAbstractMeshDataInfo._collisionRetryCount}set collisionRetryCount(e){this._internalAbstractMeshDataInfo._collisionRetryCount=e}get isFacetDataEnabled(){return this._internalAbstractMeshDataInfo._facetData.facetDataEnabled}get morphTargetManager(){return this._internalAbstractMeshDataInfo._morphTargetManager}set morphTargetManager(e){this._internalAbstractMeshDataInfo._morphTargetManager!==e&&(this._internalAbstractMeshDataInfo._morphTargetManager=e,this._syncGeometryWithMorphTargetManager())}get bakedVertexAnimationManager(){return this._internalAbstractMeshDataInfo._bakedVertexAnimationManager}set bakedVertexAnimationManager(e){this._internalAbstractMeshDataInfo._bakedVertexAnimationManager!==e&&(this._internalAbstractMeshDataInfo._bakedVertexAnimationManager=e,this._markSubMeshesAsAttributesDirty())}_syncGeometryWithMorphTargetManager(){}_updateNonUniformScalingState(e){return super._updateNonUniformScalingState(e)?(this._markSubMeshesAsMiscDirty(),!0):!1}get rawBoundingInfo(){return this._internalAbstractMeshDataInfo._rawBoundingInfo}set rawBoundingInfo(e){this._internalAbstractMeshDataInfo._rawBoundingInfo=e}set onCollide(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver&&this.onCollideObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollideObserver=this.onCollideObservable.add(e)}set onCollisionPositionChange(e){this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver&&this.onCollisionPositionChangeObservable.remove(this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver),this._internalAbstractMeshDataInfo._meshCollisionData._onCollisionPositionChangeObserver=this.onCollisionPositionChangeObservable.add(e)}get visibility(){return this._internalAbstractMeshDataInfo._visibility}set visibility(e){if(this._internalAbstractMeshDataInfo._visibility===e)return;let t=this._internalAbstractMeshDataInfo._visibility;this._internalAbstractMeshDataInfo._visibility=e,(t===1&&e!==1||t!==1&&e===1)&&this._markSubMeshesAsDirty(i=>{i.markAsMiscDirty(),i.markAsPrePassDirty()})}get pointerOverDisableMeshTesting(){return this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting}set pointerOverDisableMeshTesting(e){this._internalAbstractMeshDataInfo._pointerOverDisableMeshTesting=e}get renderingGroupId(){return this._internalAbstractMeshDataInfo._renderingGroupId}set renderingGroupId(e){this._internalAbstractMeshDataInfo._renderingGroupId=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){this._setMaterial(e)}_setMaterial(e){this._internalAbstractMeshDataInfo._material!==e&&(this._internalAbstractMeshDataInfo._material&&this._internalAbstractMeshDataInfo._material.meshMap&&(this._internalAbstractMeshDataInfo._material.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._material=e,e&&e.meshMap&&(e.meshMap[this.uniqueId]=this),this.onMaterialChangedObservable.hasObservers()&&this.onMaterialChangedObservable.notifyObservers(this),this.subMeshes&&(this.resetDrawCache(void 0,e==null),this._unBindEffect()))}getMaterialForRenderPass(e){var t;return(t=this._internalAbstractMeshDataInfo._materialForRenderPass)==null?void 0:t[e]}setMaterialForRenderPass(e,t){var r;this.resetDrawCache(e),this._internalAbstractMeshDataInfo._materialForRenderPass||(this._internalAbstractMeshDataInfo._materialForRenderPass=[]);let i=this._internalAbstractMeshDataInfo._materialForRenderPass[e];(r=i==null?void 0:i.meshMap)!=null&&r[this.uniqueId]&&(i.meshMap[this.uniqueId]=void 0),this._internalAbstractMeshDataInfo._materialForRenderPass[e]=t,t&&t.meshMap&&(t.meshMap[this.uniqueId]=this)}get receiveShadows(){return this._internalAbstractMeshDataInfo._receiveShadows}set receiveShadows(e){this._internalAbstractMeshDataInfo._receiveShadows!==e&&(this._internalAbstractMeshDataInfo._receiveShadows=e,this._markSubMeshesAsLightDirty())}get hasVertexAlpha(){return this._internalAbstractMeshDataInfo._hasVertexAlpha}set hasVertexAlpha(e){this._internalAbstractMeshDataInfo._hasVertexAlpha!==e&&(this._internalAbstractMeshDataInfo._hasVertexAlpha=e,this._markSubMeshesAsAttributesDirty(),this._markSubMeshesAsMiscDirty())}get useVertexColors(){return this._internalAbstractMeshDataInfo._useVertexColors}set useVertexColors(e){this._internalAbstractMeshDataInfo._useVertexColors!==e&&(this._internalAbstractMeshDataInfo._useVertexColors=e,this._markSubMeshesAsAttributesDirty())}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get numBoneInfluencers(){return this._internalAbstractMeshDataInfo._numBoneInfluencers}set numBoneInfluencers(e){this._internalAbstractMeshDataInfo._numBoneInfluencers!==e&&(this._internalAbstractMeshDataInfo._numBoneInfluencers=e,this._markSubMeshesAsAttributesDirty())}get applyFog(){return this._internalAbstractMeshDataInfo._applyFog}set applyFog(e){this._internalAbstractMeshDataInfo._applyFog!==e&&(this._internalAbstractMeshDataInfo._applyFog=e,this._markSubMeshesAsMiscDirty())}get enableDistantPicking(){return this._internalAbstractMeshDataInfo._enableDistantPicking}set enableDistantPicking(e){this._internalAbstractMeshDataInfo._enableDistantPicking=e}get layerMask(){return this._internalAbstractMeshDataInfo._layerMask}set layerMask(e){e!==this._internalAbstractMeshDataInfo._layerMask&&(this._internalAbstractMeshDataInfo._layerMask=e,this._resyncLightSources())}get collisionMask(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask}set collisionMask(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionMask=isNaN(e)?-1:e}get collisionResponse(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse}set collisionResponse(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionResponse=e}get collisionGroup(){return this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup}set collisionGroup(e){this._internalAbstractMeshDataInfo._meshCollisionData._collisionGroup=isNaN(e)?-1:e}get surroundingMeshes(){return this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes}set surroundingMeshes(e){this._internalAbstractMeshDataInfo._meshCollisionData._surroundingMeshes=e}get lightSources(){return this._lightSources}set skeleton(e){let t=this._internalAbstractMeshDataInfo._skeleton;t&&t.needInitialSkinMatrix&&t._unregisterMeshWithPoseMatrix(this),e&&e.needInitialSkinMatrix&&e._registerMeshWithPoseMatrix(this),this._internalAbstractMeshDataInfo._skeleton=e,this._internalAbstractMeshDataInfo._skeleton||(this._bonesTransformMatrices=null),this._markSubMeshesAsAttributesDirty()}get skeleton(){return this._internalAbstractMeshDataInfo._skeleton}constructor(e,t=null){switch(super(e,t,!1),this._internalAbstractMeshDataInfo=new FD,this._waitingMaterialId=null,this._waitingMorphTargetManagerId=null,this._waitingSkeletonId=null,this._waitingSkeletonUniqueId=null,this.cullingStrategy=n.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY,this.onCollideObservable=new te,this.onCollisionPositionChangeObservable=new te,this.onMaterialChangedObservable=new te,this.definedFacingForward=!0,this._occlusionQuery=null,this._renderingGroup=null,this.alphaIndex=Number.MAX_VALUE,this.isPickable=n.DefaultIsPickable,this.isNearPickable=!1,this.isNearGrabbable=!1,this.showSubMeshesBoundingBox=!1,this.isBlocker=!1,this.enablePointerMoveEvents=!1,this.outlineColor=Ee.Red(),this.outlineWidth=.02,this.overlayColor=Ee.Red(),this.overlayAlpha=.5,this.useOctreeForRenderingSelection=!0,this.useOctreeForPicking=!0,this.useOctreeForCollisions=!0,this.alwaysSelectAsActiveMesh=!1,this.doNotSyncBoundingInfo=!1,this.actionManager=null,this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.edgesWidth=1,this.edgesColor=new ft(1,0,0,1),this._edgesRenderer=null,this._masterMesh=null,this._boundingInfo=null,this._boundingInfoIsDirty=!0,this._renderId=0,this._intersectionsInProgress=new Array,this._unIndexed=!1,this._lightSources=new Array,this._waitingData={lods:null,actions:null,freezeWorldMatrix:null},this._bonesTransformMatrices=null,this._transformMatrixTexture=null,this.onRebuildObservable=new te,this._onCollisionPositionChange=(i,r,s=null)=>{r.subtractToRef(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions.length()>Re.CollisionsEpsilon&&this.position.addInPlace(this._internalAbstractMeshDataInfo._meshCollisionData._diffPositionForCollisions),s&&this.onCollideObservable.notifyObservers(s),this.onCollisionPositionChangeObservable.notifyObservers(this.position)},t=this.getScene(),this.layerMask=t.defaultRenderableLayerMask,t.addMesh(this),this._resyncLightSources(),this._uniformBuffer=new Sr(this.getScene().getEngine(),void 0,void 0,e,!this.getScene().getEngine().isWebGPU),this._buildUniformLayout(),t.performancePriority){case 2:this.doNotSyncBoundingInfo=!0;case 1:this.alwaysSelectAsActiveMesh=!0,this.isPickable=!1;break}}_buildUniformLayout(){this._uniformBuffer.addUniform("world",16),this._uniformBuffer.addUniform("visibility",1),this._uniformBuffer.create()}transferToEffect(e){let t=this._uniformBuffer;t.updateMatrix("world",e),t.updateFloat("visibility",this._internalAbstractMeshDataInfo._visibility),t.update()}getMeshUniformBuffer(){return this._uniformBuffer}getClassName(){return"AbstractMesh"}toString(e){let t="Name: "+this.name+", isInstance: "+(this.getClassName()==="InstancedMesh"?"YES":"NO");t+=", # of submeshes: "+(this.subMeshes?this.subMeshes.length:0);let i=this._internalAbstractMeshDataInfo._skeleton;return i&&(t+=", skeleton: "+i.name),e&&(t+=", billboard mode: "+["NONE","X","Y",null,"Z",null,null,"ALL"][this.billboardMode],t+=", freeze wrld mat: "+(this._isWorldMatrixFrozen||this._waitingData.freezeWorldMatrix?"YES":"NO")),t}_getEffectiveParent(){return this._masterMesh&&this.billboardMode!==Zt.BILLBOARDMODE_NONE?this._masterMesh:super._getEffectiveParent()}_getActionManagerForTrigger(e,t=!0){if(this.actionManager&&(t||this.actionManager.isRecursive))if(e){if(this.actionManager.hasSpecificTrigger(e))return this.actionManager}else return this.actionManager;return this.parent?this.parent._getActionManagerForTrigger(e,!1):null}_releaseRenderPassId(e){}_rebuild(e=!1){if(this.onRebuildObservable.notifyObservers(this),this._occlusionQuery!==null&&(this._occlusionQuery=null),!!this.subMeshes){for(let t of this.subMeshes)t._rebuild();this.resetDrawCache()}}_resyncLightSources(){this._lightSources.length=0;for(let e of this.getScene().lights)e.isEnabled()&&e.canAffectMesh(this)&&this._lightSources.push(e);this._markSubMeshesAsLightDirty()}_resyncLightSource(e){let t=e.isEnabled()&&e.canAffectMesh(this),i=this._lightSources.indexOf(e),r=!1;if(i===-1){if(!t)return;this._lightSources.push(e)}else{if(t)return;r=!0,this._lightSources.splice(i,1)}this._markSubMeshesAsLightDirty(r)}_unBindEffect(){for(let e of this.subMeshes)e.setEffect(null)}_removeLightSource(e,t){let i=this._lightSources.indexOf(e);i!==-1&&(this._lightSources.splice(i,1),this._markSubMeshesAsLightDirty(t))}_markSubMeshesAsDirty(e){if(this.subMeshes)for(let t of this.subMeshes)for(let i=0;it.markAsLightDirty(e))}_markSubMeshesAsAttributesDirty(){this._markSubMeshesAsDirty(e=>e.markAsAttributesDirty())}_markSubMeshesAsMiscDirty(){this._markSubMeshesAsDirty(e=>e.markAsMiscDirty())}markAsDirty(e){return this._currentRenderId=Number.MAX_VALUE,super.markAsDirty(e),this._isDirty=!0,this}resetDrawCache(e,t=!1){if(this.subMeshes)for(let i of this.subMeshes)i.resetDrawCache(e,t)}get isBlocked(){return!1}getLOD(e){return this}getTotalVertices(){return 0}getTotalIndices(){return 0}getIndices(){return null}getVerticesData(e){return null}setVerticesData(e,t,i,r){return this}updateVerticesData(e,t,i,r){return this}setIndices(e,t){return this}isVerticesDataPresent(e){return!1}getBoundingInfo(){return this._masterMesh?this._masterMesh.getBoundingInfo():(this._boundingInfoIsDirty&&(this._boundingInfoIsDirty=!1,this._updateBoundingInfo()),this._boundingInfo)}getRawBoundingInfo(){var e;return(e=this.rawBoundingInfo)!=null?e:this.getBoundingInfo()}setBoundingInfo(e){return this._boundingInfo=e,this}get hasBoundingInfo(){return this._boundingInfo!==null}buildBoundingInfo(e,t,i){return this._boundingInfo=new An(e,t,i),this._boundingInfo}normalizeToUnitCube(e=!0,t=!1,i){return super.normalizeToUnitCube(e,t,i)}get useBones(){return this.skeleton&&this.getScene().skeletonsEnabled&&this.isVerticesDataPresent(L.MatricesIndicesKind)&&this.isVerticesDataPresent(L.MatricesWeightsKind)}_preActivate(){}_preActivateForIntermediateRendering(e){}_activate(e,t){return this._renderId=e,!0}_postActivate(){}_freeze(){}_unFreeze(){}getWorldMatrix(){return this._masterMesh&&this.billboardMode===Zt.BILLBOARDMODE_NONE?this._masterMesh.getWorldMatrix():super.getWorldMatrix()}_getWorldMatrixDeterminant(){return this._masterMesh?this._masterMesh._getWorldMatrixDeterminant():super._getWorldMatrixDeterminant()}get isAnInstance(){return!1}get hasInstances(){return!1}get hasThinInstances(){return!1}movePOV(e,t,i){return this.position.addInPlace(this.calcMovePOV(e,t,i)),this}calcMovePOV(e,t,i){let r=new Z;(this.rotationQuaternion?this.rotationQuaternion:Ke.RotationYawPitchRoll(this.rotation.y,this.rotation.x,this.rotation.z)).toRotationMatrix(r);let a=b.Zero(),o=this.definedFacingForward?-1:1;return b.TransformCoordinatesFromFloatsToRef(e*o,t,i*o,r,a),a}rotatePOV(e,t,i){return this.rotation.addInPlace(this.calcRotatePOV(e,t,i)),this}calcRotatePOV(e,t,i){let r=this.definedFacingForward?1:-1;return new b(e*r,t,i*r)}_refreshBoundingInfo(e,t){if(e){let i=eR(e,0,this.getTotalVertices(),t);this._boundingInfo?this._boundingInfo.reConstruct(i.minimum,i.maximum):this._boundingInfo=new An(i.minimum,i.maximum)}if(this.subMeshes)for(let i=0;i{if(r){let o=r._vertexData||(r._vertexData={});return o[a]||this.copyVerticesData(a,o),o[a]}return this.getVerticesData(a)};if(t||(t=s(i)),!t)return null;if(r?(r._outputData?r._outputData.set(t):r._outputData=new Float32Array(t),t=r._outputData):(e.applyMorph&&this.morphTargetManager||e.applySkeleton&&this.skeleton)&&(t=t.slice()),e.applyMorph&&this.morphTargetManager&&Vfe(t,i,this.morphTargetManager),e.applySkeleton&&this.skeleton){let a=s(L.MatricesIndicesKind),o=s(L.MatricesWeightsKind);if(o&&a){let l=this.numBoneInfluencers>4,c=l?s(L.MatricesIndicesExtraKind):null,f=l?s(L.MatricesWeightsExtraKind):null,d=this.skeleton.getTransformMatrices(this);n._ApplySkeleton(t,i,d,a,o,c,f)}}if(e.updatePositionsArray!==!1&&i===L.PositionKind){let a=this._internalAbstractMeshDataInfo._positions||[],o=a.length;if(a.length=t.length/3,o1||!r.IsGlobal)&&r.updateBoundingInfo(e)}return this}_afterComputeWorldMatrix(){this.doNotSyncBoundingInfo||(this._boundingInfoIsDirty=!0)}isInFrustum(e){return this.getBoundingInfo().isInFrustum(e,this.cullingStrategy)}isCompletelyInFrustum(e){return this.getBoundingInfo().isCompletelyInFrustum(e)}intersectsMesh(e,t=!1,i){let r=this.getBoundingInfo(),s=e.getBoundingInfo();if(r.intersects(s,t))return!0;if(i){for(let a of this.getChildMeshes())if(a.intersectsMesh(e,t,!0))return!0}return!1}intersectsPoint(e){return this.getBoundingInfo().intersectsPoint(e)}get checkCollisions(){return this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions}set checkCollisions(e){this._internalAbstractMeshDataInfo._meshCollisionData._checkCollisions=e}get collider(){return this._internalAbstractMeshDataInfo._meshCollisionData._collider}moveWithCollisions(e,t=!0){this.getAbsolutePosition().addToRef(this.ellipsoidOffset,this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions);let r=this.getScene().collisionCoordinator;return this._internalAbstractMeshDataInfo._meshCollisionData._collider||(this._internalAbstractMeshDataInfo._meshCollisionData._collider=r.createCollider()),this._internalAbstractMeshDataInfo._meshCollisionData._collider._radius=this.ellipsoid,r.getNewPosition(this._internalAbstractMeshDataInfo._meshCollisionData._oldPositionForCollisions,e,this._internalAbstractMeshDataInfo._meshCollisionData._collider,this.collisionRetryCount,this,this._onCollisionPositionChange,this.uniqueId,t),this}_collideForSubMesh(e,t,i){var r;if(this._generatePointsArray(),!this._positions)return this;if(!e._lastColliderWorldVertices||!e._lastColliderTransformMatrix.equals(t)){e._lastColliderTransformMatrix=t.clone(),e._lastColliderWorldVertices=[],e._trianglePlanes=[];let s=e.verticesStart,a=e.verticesStart+e.verticesCount;for(let o=s;o1&&!a._checkCollision(e)||this._collideForSubMesh(a,t,e)}return this}_shouldConvertRHS(){return!1}_checkCollision(e){if(!this.getBoundingInfo()._checkCollision(e))return this;let t=$.Matrix[0],i=$.Matrix[1];return Z.ScalingToRef(1/e._radius.x,1/e._radius.y,1/e._radius.z,t),this.worldMatrixFromCache.multiplyToRef(t,i),this._processCollisionsForSubMeshes(e,i),this}_generatePointsArray(){return!1}intersects(e,t,i,r=!1,s,a=!1){let o=new Ts,l=this.getClassName(),c=l==="InstancedLinesMesh"||l==="LinesMesh"||l==="GreasedLineMesh"?this.intersectionThreshold:0,f=this.getBoundingInfo();if(!this.subMeshes||!a&&(!e.intersectsSphere(f.boundingSphere,c)||!e.intersectsBox(f.boundingBox,c)))return o;if(r)return o.hit=!a,o.pickedMesh=a?null:this,o.distance=a?0:b.Distance(e.origin,f.boundingSphere.center),o.subMeshId=0,o;if(!this._generatePointsArray())return o;let d=null,h=this._scene.getIntersectingSubMeshCandidates(this,e),u=h.length,m=!1;for(let _=0;_1&&!a&&!p.canIntersects(e))continue;let g=p.intersects(e,this._positions,this.getIndices(),t,i);if(g&&(t||!d||g.distanceo!==this&&o.actionManager===this.actionManager)&&this.actionManager.dispose(),this.actionManager=null),this._internalAbstractMeshDataInfo._skeleton=null,this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null),i=0;i-1&&this._parentContainer.meshes.splice(o,1),this._parentContainer=null}if(t&&this.material&&(this.material.getClassName()==="MultiMaterial"?this.material.dispose(!1,!0,!0):this.material.dispose(!1,!0)),!e)for(i=0;i65535){l=!0;break}l?e.depthSortedIndices=new Uint32Array(i):e.depthSortedIndices=new Uint16Array(i)}if(e.facetDepthSortFunction=function(l,c){return c.sqDistance-l.sqDistance},!e.facetDepthSortFrom){let l=this.getScene().activeCamera;e.facetDepthSortFrom=l?l.position:b.Zero()}e.depthSortedFacets=[];for(let l=0;lFt?s.maximum.x-s.minimum.x:Ft,e.bbSize.y=s.maximum.y-s.minimum.y>Ft?s.maximum.y-s.minimum.y:Ft,e.bbSize.z=s.maximum.z-s.minimum.z>Ft?s.maximum.z-s.minimum.z:Ft;let a=e.bbSize.x>e.bbSize.y?e.bbSize.x:e.bbSize.y;if(a=a>e.bbSize.z?a:e.bbSize.z,e.subDiv.max=e.partitioningSubdivisions,e.subDiv.X=Math.floor(e.subDiv.max*e.bbSize.x/a),e.subDiv.Y=Math.floor(e.subDiv.max*e.bbSize.y/a),e.subDiv.Z=Math.floor(e.subDiv.max*e.bbSize.z/a),e.subDiv.X=e.subDiv.X<1?1:e.subDiv.X,e.subDiv.Y=e.subDiv.Y<1?1:e.subDiv.Y,e.subDiv.Z=e.subDiv.Z<1?1:e.subDiv.Z,e.facetParameters.facetNormals=this.getFacetLocalNormals(),e.facetParameters.facetPositions=this.getFacetLocalPositions(),e.facetParameters.facetPartitioning=this.getFacetLocalPartitioning(),e.facetParameters.bInfo=s,e.facetParameters.bbSize=e.bbSize,e.facetParameters.subDiv=e.subDiv,e.facetParameters.ratio=this.partitioningBBoxRatio,e.facetParameters.depthSort=e.facetDepthSort,e.facetDepthSort&&e.facetDepthSortEnabled&&(this.computeWorldMatrix(!0),this._worldMatrix.invertToRef(e.invertedMatrix),b.TransformCoordinatesToRef(e.facetDepthSortFrom,e.invertedMatrix,e.facetDepthSortOrigin),e.facetParameters.distanceTo=e.facetDepthSortOrigin),e.facetParameters.depthSortedFacets=e.depthSortedFacets,r&&Me.ComputeNormals(t,i,r,e.facetParameters),e.facetDepthSort&&e.facetDepthSortEnabled){e.depthSortedFacets.sort(e.facetDepthSortFunction);let l=e.depthSortedIndices.length/3|0;for(let c=0;cs.subDiv.max||o<0||o>s.subDiv.max||l<0||l>s.subDiv.max?null:s.facetPartitioning[a+s.subDiv.max*o+s.subDiv.max*s.subDiv.max*l]}getClosestFacetAtCoordinates(e,t,i,r,s=!1,a=!0){let o=this.getWorldMatrix(),l=$.Matrix[5];o.invertToRef(l);let c=$.Vector3[8];b.TransformCoordinatesFromFloatsToRef(e,t,i,l,c);let f=this.getClosestFacetAtLocalCoordinates(c.x,c.y,c.z,r,s,a);return r&&b.TransformCoordinatesFromFloatsToRef(r.x,r.y,r.z,o,r),f}getClosestFacetAtLocalCoordinates(e,t,i,r,s=!1,a=!0){let o=null,l,c,f,d,h,u,m,_,p=this.getFacetLocalPositions(),g=this.getFacetLocalNormals(),v=this.getFacetsAtLocalCoordinates(e,t,i);if(!v)return null;let T=Number.MAX_VALUE,S,E,A,R;for(let M=0;M=0||s&&!a&&d<=0)&&(d=A.x*R.x+A.y*R.y+A.z*R.z,h=-(A.x*e+A.y*t+A.z*i-d)/(A.x*A.x+A.y*A.y+A.z*A.z),u=e+A.x*h,m=t+A.y*h,_=i+A.z*h,l=u-e,c=m-t,f=_-i,S=l*l+c*c+f*f,S(TH(),SH));return t(e),this.setIndices(e,this.getTotalVertices()),this}alignWithNormal(e,t){t||(t=Hs.Y);let i=$.Vector3[0],r=$.Vector3[1];return b.CrossToRef(t,e,r),b.CrossToRef(e,r,i),this.rotationQuaternion?Ke.RotationQuaternionFromAxisToRef(i,e,r,this.rotationQuaternion):b.RotationFromAxisToRef(i,e,r,this.rotation),this}_checkOcclusionQuery(e=!1){return!1}disableEdgesRendering(){throw Qe("EdgesRenderer")}enableEdgesRendering(e,t,i){throw Qe("EdgesRenderer")}getConnectedParticleSystems(){return this._scene.particleSystems.filter(e=>e.emitter===this)}};yr.OCCLUSION_TYPE_NONE=0;yr.OCCLUSION_TYPE_OPTIMISTIC=1;yr.OCCLUSION_TYPE_STRICT=2;yr.OCCLUSION_ALGORITHM_TYPE_ACCURATE=0;yr.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE=1;yr.CULLINGSTRATEGY_STANDARD=0;yr.CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;yr.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;yr.CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;yr.DefaultIsPickable=!0;P([zs.filter((...n)=>!Array.isArray(n[0])&&!Array.isArray(n[3])&&!Array.isArray(n[4])&&!Array.isArray(n[5])&&!Array.isArray(n[6]))],yr,"_ApplySkeleton",null);Ut("BABYLON.AbstractMesh",yr)});var qn,AH=I(()=>{Wt();Dr();kt();qn=class{constructor(){this.reset()}reset(){this.enabled=!1,this.mask=255,this.funcRef=1,this.funcMask=255,this.func=519,this.opStencilFail=7680,this.opDepthFail=7680,this.opStencilDepthPass=7681,this.backFunc=519,this.backOpStencilFail=7680,this.backOpDepthFail=7680,this.backOpStencilDepthPass=7681}get func(){return this._func}set func(e){this._func=e}get backFunc(){return this._backFunc}set backFunc(e){this._backFunc=e}get funcRef(){return this._funcRef}set funcRef(e){this._funcRef=e}get funcMask(){return this._funcMask}set funcMask(e){this._funcMask=e}get opStencilFail(){return this._opStencilFail}set opStencilFail(e){this._opStencilFail=e}get opDepthFail(){return this._opDepthFail}set opDepthFail(e){this._opDepthFail=e}get opStencilDepthPass(){return this._opStencilDepthPass}set opStencilDepthPass(e){this._opStencilDepthPass=e}get backOpStencilFail(){return this._backOpStencilFail}set backOpStencilFail(e){this._backOpStencilFail=e}get backOpDepthFail(){return this._backOpDepthFail}set backOpDepthFail(e){this._backOpDepthFail=e}get backOpStencilDepthPass(){return this._backOpStencilDepthPass}set backOpStencilDepthPass(e){this._backOpStencilDepthPass=e}get mask(){return this._mask}set mask(e){this._mask=e}get enabled(){return this._enabled}set enabled(e){this._enabled=e}getClassName(){return"MaterialStencilState"}copyTo(e){nt.Clone(()=>e,this)}serialize(){return nt.Serialize(this)}parse(e,t,i){nt.Parse(()=>this,e,t,i)}};P([F()],qn.prototype,"func",null);P([F()],qn.prototype,"backFunc",null);P([F()],qn.prototype,"funcRef",null);P([F()],qn.prototype,"funcMask",null);P([F()],qn.prototype,"opStencilFail",null);P([F()],qn.prototype,"opDepthFail",null);P([F()],qn.prototype,"opStencilDepthPass",null);P([F()],qn.prototype,"backOpStencilFail",null);P([F()],qn.prototype,"backOpDepthFail",null);P([F()],qn.prototype,"backOpStencilDepthPass",null);P([F()],qn.prototype,"mask",null);P([F()],qn.prototype,"enabled",null)});function Qn(n){n.indexOf("vClipPlane")===-1&&n.push("vClipPlane"),n.indexOf("vClipPlane2")===-1&&n.push("vClipPlane2"),n.indexOf("vClipPlane3")===-1&&n.push("vClipPlane3"),n.indexOf("vClipPlane4")===-1&&n.push("vClipPlane4"),n.indexOf("vClipPlane5")===-1&&n.push("vClipPlane5"),n.indexOf("vClipPlane6")===-1&&n.push("vClipPlane6")}function bl(n,e,t){var c,f,d,h,u,m;let i=!!((c=n.clipPlane)!=null?c:e.clipPlane),r=!!((f=n.clipPlane2)!=null?f:e.clipPlane2),s=!!((d=n.clipPlane3)!=null?d:e.clipPlane3),a=!!((h=n.clipPlane4)!=null?h:e.clipPlane4),o=!!((u=n.clipPlane5)!=null?u:e.clipPlane5),l=!!((m=n.clipPlane6)!=null?m:e.clipPlane6);i&&t.push("#define CLIPPLANE"),r&&t.push("#define CLIPPLANE2"),s&&t.push("#define CLIPPLANE3"),a&&t.push("#define CLIPPLANE4"),o&&t.push("#define CLIPPLANE5"),l&&t.push("#define CLIPPLANE6")}function xH(n,e,t){var f,d,h,u,m,_;let i=!1,r=!!((f=n.clipPlane)!=null?f:e.clipPlane),s=!!((d=n.clipPlane2)!=null?d:e.clipPlane2),a=!!((h=n.clipPlane3)!=null?h:e.clipPlane3),o=!!((u=n.clipPlane4)!=null?u:e.clipPlane4),l=!!((m=n.clipPlane5)!=null?m:e.clipPlane5),c=!!((_=n.clipPlane6)!=null?_:e.clipPlane6);return t.CLIPPLANE!==r&&(t.CLIPPLANE=r,i=!0),t.CLIPPLANE2!==s&&(t.CLIPPLANE2=s,i=!0),t.CLIPPLANE3!==a&&(t.CLIPPLANE3=a,i=!0),t.CLIPPLANE4!==o&&(t.CLIPPLANE4=o,i=!0),t.CLIPPLANE5!==l&&(t.CLIPPLANE5=l,i=!0),t.CLIPPLANE6!==c&&(t.CLIPPLANE6=c,i=!0),i}function $n(n,e,t){var r,s,a,o,l,c;let i=(r=e.clipPlane)!=null?r:t.clipPlane;Jm(n,"vClipPlane",i),i=(s=e.clipPlane2)!=null?s:t.clipPlane2,Jm(n,"vClipPlane2",i),i=(a=e.clipPlane3)!=null?a:t.clipPlane3,Jm(n,"vClipPlane3",i),i=(o=e.clipPlane4)!=null?o:t.clipPlane4,Jm(n,"vClipPlane4",i),i=(l=e.clipPlane5)!=null?l:t.clipPlane5,Jm(n,"vClipPlane5",i),i=(c=e.clipPlane6)!=null?c:t.clipPlane6,Jm(n,"vClipPlane6",i)}function Jm(n,e,t){var i;if(t){let r=((i=ka.getScene())==null?void 0:i.floatingOriginOffset)||b.ZeroReadOnly;n.setFloat4(e,t.normal.x,t.normal.y,t.normal.z,t.d+b.Dot(t.normal,r))}}var Ml=I(()=>{Qg();ke()});var ce,Ya=I(()=>{zr();ce=class{static get DiffuseTextureEnabled(){return this._DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){this._DiffuseTextureEnabled!==e&&(this._DiffuseTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseWeightTextureEnabled(){return this._BaseWeightTextureEnabled}static set BaseWeightTextureEnabled(e){this._BaseWeightTextureEnabled!==e&&(this._BaseWeightTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BaseDiffuseRoughnessTextureEnabled(){return this._BaseDiffuseRoughnessTextureEnabled}static set BaseDiffuseRoughnessTextureEnabled(e){this._BaseDiffuseRoughnessTextureEnabled!==e&&(this._BaseDiffuseRoughnessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DetailTextureEnabled(){return this._DetailTextureEnabled}static set DetailTextureEnabled(e){this._DetailTextureEnabled!==e&&(this._DetailTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get DecalMapEnabled(){return this._DecalMapEnabled}static set DecalMapEnabled(e){this._DecalMapEnabled!==e&&(this._DecalMapEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AmbientTextureEnabled(){return this._AmbientTextureEnabled}static set AmbientTextureEnabled(e){this._AmbientTextureEnabled!==e&&(this._AmbientTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get OpacityTextureEnabled(){return this._OpacityTextureEnabled}static set OpacityTextureEnabled(e){this._OpacityTextureEnabled!==e&&(this._OpacityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ReflectionTextureEnabled(){return this._ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){this._ReflectionTextureEnabled!==e&&(this._ReflectionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get EmissiveTextureEnabled(){return this._EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){this._EmissiveTextureEnabled!==e&&(this._EmissiveTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SpecularTextureEnabled(){return this._SpecularTextureEnabled}static set SpecularTextureEnabled(e){this._SpecularTextureEnabled!==e&&(this._SpecularTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get BumpTextureEnabled(){return this._BumpTextureEnabled}static set BumpTextureEnabled(e){this._BumpTextureEnabled!==e&&(this._BumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get LightmapTextureEnabled(){return this._LightmapTextureEnabled}static set LightmapTextureEnabled(e){this._LightmapTextureEnabled!==e&&(this._LightmapTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionTextureEnabled(){return this._RefractionTextureEnabled}static set RefractionTextureEnabled(e){this._RefractionTextureEnabled!==e&&(this._RefractionTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ColorGradingTextureEnabled(){return this._ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){this._ColorGradingTextureEnabled!==e&&(this._ColorGradingTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get FresnelEnabled(){return this._FresnelEnabled}static set FresnelEnabled(e){this._FresnelEnabled!==e&&(this._FresnelEnabled=e,Re.MarkAllMaterialsAsDirty(4))}static get ClearCoatTextureEnabled(){return this._ClearCoatTextureEnabled}static set ClearCoatTextureEnabled(e){this._ClearCoatTextureEnabled!==e&&(this._ClearCoatTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatBumpTextureEnabled(){return this._ClearCoatBumpTextureEnabled}static set ClearCoatBumpTextureEnabled(e){this._ClearCoatBumpTextureEnabled!==e&&(this._ClearCoatBumpTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ClearCoatTintTextureEnabled(){return this._ClearCoatTintTextureEnabled}static set ClearCoatTintTextureEnabled(e){this._ClearCoatTintTextureEnabled!==e&&(this._ClearCoatTintTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get SheenTextureEnabled(){return this._SheenTextureEnabled}static set SheenTextureEnabled(e){this._SheenTextureEnabled!==e&&(this._SheenTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get AnisotropicTextureEnabled(){return this._AnisotropicTextureEnabled}static set AnisotropicTextureEnabled(e){this._AnisotropicTextureEnabled!==e&&(this._AnisotropicTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get ThicknessTextureEnabled(){return this._ThicknessTextureEnabled}static set ThicknessTextureEnabled(e){this._ThicknessTextureEnabled!==e&&(this._ThicknessTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get RefractionIntensityTextureEnabled(){return this._ThicknessTextureEnabled}static set RefractionIntensityTextureEnabled(e){this._RefractionIntensityTextureEnabled!==e&&(this._RefractionIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyIntensityTextureEnabled(){return this._TranslucencyIntensityTextureEnabled}static set TranslucencyIntensityTextureEnabled(e){this._TranslucencyIntensityTextureEnabled!==e&&(this._TranslucencyIntensityTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get TranslucencyColorTextureEnabled(){return this._TranslucencyColorTextureEnabled}static set TranslucencyColorTextureEnabled(e){this._TranslucencyColorTextureEnabled!==e&&(this._TranslucencyColorTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}static get IridescenceTextureEnabled(){return this._IridescenceTextureEnabled}static set IridescenceTextureEnabled(e){this._IridescenceTextureEnabled!==e&&(this._IridescenceTextureEnabled=e,Re.MarkAllMaterialsAsDirty(1))}};ce._DiffuseTextureEnabled=!0;ce._BaseWeightTextureEnabled=!0;ce._BaseDiffuseRoughnessTextureEnabled=!0;ce._DetailTextureEnabled=!0;ce._DecalMapEnabled=!0;ce._AmbientTextureEnabled=!0;ce._OpacityTextureEnabled=!0;ce._ReflectionTextureEnabled=!0;ce._EmissiveTextureEnabled=!0;ce._SpecularTextureEnabled=!0;ce._BumpTextureEnabled=!0;ce._LightmapTextureEnabled=!0;ce._RefractionTextureEnabled=!0;ce._ColorGradingTextureEnabled=!0;ce._FresnelEnabled=!0;ce._ClearCoatTextureEnabled=!0;ce._ClearCoatBumpTextureEnabled=!0;ce._ClearCoatTintTextureEnabled=!0;ce._SheenTextureEnabled=!0;ce._AnisotropicTextureEnabled=!0;ce._ThicknessTextureEnabled=!0;ce._RefractionIntensityTextureEnabled=!0;ce._TranslucencyIntensityTextureEnabled=!0;ce._TranslucencyColorTextureEnabled=!0;ce._IridescenceTextureEnabled=!0});function Gf(n,e,t){if(!n||n.LOGARITHMICDEPTH||n.indexOf&&n.indexOf("LOGARITHMICDEPTH")>=0){let i=t.activeCamera;i.mode===1&&ee.Error("Logarithmic depth is not compatible with orthographic cameras!",20),e.setFloat("logarithmicDepthConstant",2/(Math.log(i.maxZ+1)/Math.LN2))}}var RH=I(()=>{Lt()});function kf(n,e,t,i=!1){t&&n.fogEnabled&&(!e||e.applyFog)&&n.fogMode!==0&&(t.setFloat4("vFogInfos",n.fogMode,n.fogStart,n.fogEnd,n.fogDensity),i?(n.fogColor.toLinearSpaceToRef(bH,n.getEngine().useExactSrgbConversions),t.setColor3("vFogColor",bH)):t.setColor3("vFogColor",n.fogColor))}function Il(n,e,t,i,r,s,a,o,l,c){let f=n.numMaxInfluencers||n.numInfluencers;return f<=0?0:(e.push("#define MORPHTARGETS"),n.hasPositions&&e.push("#define MORPHTARGETTEXTURE_HASPOSITIONS"),n.hasNormals&&e.push("#define MORPHTARGETTEXTURE_HASNORMALS"),n.hasTangents&&e.push("#define MORPHTARGETTEXTURE_HASTANGENTS"),n.hasUVs&&e.push("#define MORPHTARGETTEXTURE_HASUVS"),n.hasUV2s&&e.push("#define MORPHTARGETTEXTURE_HASUV2S"),n.hasColors&&e.push("#define MORPHTARGETTEXTURE_HASCOLORS"),n.supportsPositions&&r&&e.push("#define MORPHTARGETS_POSITION"),n.supportsNormals&&s&&e.push("#define MORPHTARGETS_NORMAL"),n.supportsTangents&&a&&e.push("#define MORPHTARGETS_TANGENT"),n.supportsUVs&&o&&e.push("#define MORPHTARGETS_UV"),n.supportsUV2s&&l&&e.push("#define MORPHTARGETS_UV2"),n.supportsColors&&c&&e.push("#define MORPHTARGETS_COLOR"),e.push("#define NUM_MORPH_INFLUENCERS "+f),n.isUsingTextureForTargets&&e.push("#define MORPHTARGETS_TEXTURE"),yh.NUM_MORPH_INFLUENCERS=f,yh.NORMAL=s,yh.TANGENT=a,yh.UV=o,yh.UV2=l,yh.COLOR=c,Ch(t,i,yh,r),f)}function Ch(n,e,t,i=!0){let r=t.NUM_MORPH_INFLUENCERS;if(r>0&&Oe.LastCreatedEngine){let s=Oe.LastCreatedEngine.getCaps().maxVertexAttribs,a=e.morphTargetManager;if(a!=null&&a.isUsingTextureForTargets)return;let o=a&&a.supportsPositions&&i,l=a&&a.supportsNormals&&t.NORMAL,c=a&&a.supportsTangents&&t.TANGENT,f=a&&a.supportsUVs&&t.UV1,d=a&&a.supportsUV2s&&t.UV2,h=a&&a.supportsColors&&t.VERTEXCOLOR;for(let u=0;us&&ee.Error("Cannot add more vertex attributes for mesh "+e.name)}}function No(n,e=!1){n.push("world0"),n.push("world1"),n.push("world2"),n.push("world3"),e&&(n.push("previousWorld0"),n.push("previousWorld1"),n.push("previousWorld2"),n.push("previousWorld3"))}function Jn(n,e){let t=n.morphTargetManager;!n||!t||e.setFloatArray("morphTargetInfluences",t.influences)}function Wf(n,e){e.bindToEffect(n,"Scene")}function ep(n,e,t,i,r=null,s=!1,a=!1,o=!1,l=!1,c=!1,f=!1,d=0){if(n.texturesEnabled&&r&&ce.ReflectionTextureEnabled){if(t.updateMatrix("reflectionMatrix",r.getReflectionTextureMatrix()),t.updateFloat2("vReflectionInfos",r.level*n.iblIntensity,d),o&&r.boundingBoxSize){let h=r;t.updateVector3("vReflectionPosition",h.boundingBoxPosition),t.updateVector3("vReflectionSize",h.boundingBoxSize)}if(s){let h=r.getSize().width;t.updateFloat2("vReflectionFilteringInfo",h,Math.log2(h))}if(c&&!e.USEIRRADIANCEMAP){let h=r.sphericalPolynomial;if(e.USESPHERICALFROMREFLECTIONMAP&&h)if(e.SPHERICAL_HARMONICS){let u=h.preScaledHarmonics;t.updateVector3("vSphericalL00",u.l00),t.updateVector3("vSphericalL1_1",u.l1_1),t.updateVector3("vSphericalL10",u.l10),t.updateVector3("vSphericalL11",u.l11),t.updateVector3("vSphericalL2_2",u.l2_2),t.updateVector3("vSphericalL2_1",u.l2_1),t.updateVector3("vSphericalL20",u.l20),t.updateVector3("vSphericalL21",u.l21),t.updateVector3("vSphericalL22",u.l22)}else t.updateFloat3("vSphericalX",h.x.x,h.x.y,h.x.z),t.updateFloat3("vSphericalY",h.y.x,h.y.y,h.y.z),t.updateFloat3("vSphericalZ",h.z.x,h.z.y,h.z.z),t.updateFloat3("vSphericalXX_ZZ",h.xx.x-h.zz.x,h.xx.y-h.zz.y,h.xx.z-h.zz.z),t.updateFloat3("vSphericalYY_ZZ",h.yy.x-h.zz.x,h.yy.y-h.zz.y,h.yy.z-h.zz.z),t.updateFloat3("vSphericalZZ",h.zz.x,h.zz.y,h.zz.z),t.updateFloat3("vSphericalXY",h.xy.x,h.xy.y,h.xy.z),t.updateFloat3("vSphericalYZ",h.yz.x,h.yz.y,h.yz.z),t.updateFloat3("vSphericalZX",h.zx.x,h.zx.y,h.zx.z)}else l&&e.USEIRRADIANCEMAP&&e.USE_IRRADIANCE_DOMINANT_DIRECTION&&r.irradianceTexture&&t.updateVector3("vReflectionDominantDirection",r.irradianceTexture._dominantDirection);a&&t.updateFloat3("vReflectionMicrosurfaceInfos",r.getSize().width,r.lodGenerationScale,r.lodGenerationOffset)}f&&t.updateColor3("vReflectionColor",i)}function aR(n,e,t,i=null,r=!1){if(i&&ce.ReflectionTextureEnabled){e.LODBASEDMICROSFURACE?t.setTexture("reflectionSampler",i):(t.setTexture("reflectionSampler",i._lodTextureMid||i),t.setTexture("reflectionSamplerLow",i._lodTextureLow||i),t.setTexture("reflectionSamplerHigh",i._lodTextureHigh||i)),e.USEIRRADIANCEMAP&&t.setTexture("irradianceSampler",i.irradianceTexture);let s=n.iblCdfGenerator;r&&s&&t.setTexture("icdfSampler",s.getIcdfTexture())}}function ni(n,e,t){e._needUVs=!0,e[t]=!0,n.optimizeUVAllocation&&n.getTextureMatrix().isIdentityAs3x2()?(e[t+"DIRECTUV"]=n.coordinatesIndex+1,e["MAINUV"+(n.coordinatesIndex+1)]=!0):e[t+"DIRECTUV"]=0}function si(n,e,t){let i=n.getTextureMatrix();e.updateMatrix(t+"Matrix",i)}function tp(n,e,t){t.BAKED_VERTEX_ANIMATION_TEXTURE&&t.INSTANCES&&n.push("bakedVertexAnimationSettingsInstanced")}function kfe(n,e){return e.set(n),e}function js(n,e,t){if(!(!e||!n)&&(n.computeBonesUsingShaders&&e._bonesComputationForcedToCPU&&(n.computeBonesUsingShaders=!1),n.useBones&&n.computeBonesUsingShaders&&n.skeleton)){let i=n.skeleton;if(i.isUsingTextureForMatrices&&e.getUniformIndex("boneTextureInfo")>-1){let r=i.getTransformMatrixTexture(n);e.setTexture("boneSampler",r),e.setFloat2("boneTextureInfo",i._textureWidth,i._textureHeight)}else{let r=i.getTransformMatrices(n);r&&(e.setMatrices("mBones",r),t&&n.getScene().prePassRenderer&&n.getScene().prePassRenderer.getIndex(2)&&(t.previousBones[n.uniqueId]||(t.previousBones[n.uniqueId]=r.slice()),e.setMatrices("mPreviousBones",t.previousBones[n.uniqueId]),kfe(r,t.previousBones[n.uniqueId])))}}}function Wfe(n,e,t,i,r,s=!0){n._bindLight(e,t,i,r,s)}function ip(n,e,t,i,r=4){let s=Math.min(e.lightSources.length,r);for(let a=0;a0&&(i.addCPUSkinningFallback(0,e),n.push("matricesIndices"),n.push("matricesWeights"),t.NUM_BONE_INFLUENCERS>4&&(n.push("matricesIndicesExtra"),n.push("matricesWeightsExtra")))}function np(n,e){(e.INSTANCES||e.THIN_INSTANCES)&&No(n,!!e.PREPASS_VELOCITY),e.INSTANCESCOLOR&&n.push("instanceColor")}function sp(n,e,t=4,i=0){let r=0;for(let s=0;s0&&(r=i+s,e.addFallback(r,"LIGHT"+s)),n.SHADOWS||(n["SHADOW"+s]&&e.addFallback(i,"SHADOW"+s),n["SHADOWPCF"+s]&&e.addFallback(i,"SHADOWPCF"+s),n["SHADOWPCSS"+s]&&e.addFallback(i,"SHADOWPCSS"+s),n["SHADOWPOISSON"+s]&&e.addFallback(i,"SHADOWPOISSON"+s),n["SHADOWESM"+s]&&e.addFallback(i,"SHADOWESM"+s),n["SHADOWCLOSEESM"+s]&&e.addFallback(i,"SHADOWCLOSEESM"+s));return r}function Hfe(n,e){return e.fogEnabled&&n.applyFog&&e.fogMode!==0}function ap(n,e,t,i,r,s,a,o=!1,l=!1,c,f){var d;if(a._areMiscDirty){a.LOGARITHMICDEPTH=t,a.POINTSIZE=i,a.FOG=r&&Hfe(n,e),a.NONUNIFORMSCALING=n.nonUniformScaling,a.ALPHATEST=s,a.DECAL_AFTER_DETAIL=o,a.USE_VERTEX_PULLING=l,a.RIGHT_HANDED=e.useRightHandedSystem;let h=(d=c==null?void 0:c.geometry)==null?void 0:d.getIndexBuffer(),u=c?c.isUnIndexed:!1;a.VERTEX_PULLING_USE_INDEX_BUFFER=!!h&&!u,a.VERTEX_PULLING_INDEX_BUFFER_32BITS=h&&!u?h.is32Bits:!1,a.VERTEXOUTPUT_INVARIANT=!!f}}function op(n,e,t,i=!1){if(!n.lightsEnabled||i)return!0;let r=e.lightSources,s=Math.min(r.length,t);for(let a=0;a0?(t.NUM_SAMPLES=""+r,a._features.needTypeSuffixInShaderConstants&&(t.NUM_SAMPLES=t.NUM_SAMPLES+"u"),t.REALTIME_FILTERING=!0,n.iblCdfGenerator&&(t.IBL_CDF_FILTERING=!0)):t.REALTIME_FILTERING=!1,t.INVERTCUBICMAP=e.coordinatesMode===_e.INVCUBIC_MODE,t.REFLECTIONMAP_3D=e.isCube,t.REFLECTIONMAP_OPPOSITEZ=t.REFLECTIONMAP_3D&&n.useRightHandedSystem?!e.invertZ:e.invertZ,t.REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,e.coordinatesMode){case _e.EXPLICIT_MODE:t.REFLECTIONMAP_EXPLICIT=!0;break;case _e.PLANAR_MODE:t.REFLECTIONMAP_PLANAR=!0;break;case _e.PROJECTION_MODE:t.REFLECTIONMAP_PROJECTION=!0;break;case _e.SKYBOX_MODE:t.REFLECTIONMAP_SKYBOX=!0;break;case _e.SPHERICAL_MODE:t.REFLECTIONMAP_SPHERICAL=!0;break;case _e.EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR=!0;break;case _e.FIXED_EQUIRECTANGULAR_MODE:t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!0;break;case _e.FIXED_EQUIRECTANGULAR_MIRRORED_MODE:t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!0;break;case _e.CUBIC_MODE:case _e.INVCUBIC_MODE:default:t.REFLECTIONMAP_CUBIC=!0,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!!e.boundingBoxSize;break}e.coordinatesMode!==_e.SKYBOX_MODE&&(e.irradianceTexture?(t.USEIRRADIANCEMAP=!0,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USESPHERICALINVERTEX=!1,e.irradianceTexture._dominantDirection?t.USE_IRRADIANCE_DOMINANT_DIRECTION=!0:t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1):e.isCube&&(t.USESPHERICALFROMREFLECTIONMAP=!0,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=s))}else t.REFLECTION=!1,t.REFLECTIONMAP_3D=!1,t.REFLECTIONMAP_SPHERICAL=!1,t.REFLECTIONMAP_PLANAR=!1,t.REFLECTIONMAP_CUBIC=!1,t.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,t.REFLECTIONMAP_PROJECTION=!1,t.REFLECTIONMAP_SKYBOX=!1,t.REFLECTIONMAP_EXPLICIT=!1,t.REFLECTIONMAP_EQUIRECTANGULAR=!1,t.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,t.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,t.INVERTCUBICMAP=!1,t.USESPHERICALFROMREFLECTIONMAP=!1,t.USEIRRADIANCEMAP=!1,t.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,t.USESPHERICALINVERTEX=!1,t.REFLECTIONMAP_OPPOSITEZ=!1,t.LODINREFLECTIONALPHA=!1,t.GAMMAREFLECTION=!1,t.RGBDREFLECTION=!1,t.LINEARSPECULARREFLECTION=!1;return!0}function zfe(n,e,t,i,r,s,a){var o;switch(a.needNormals=!0,r["LIGHT"+i]===void 0&&(a.needRebuild=!0),r["LIGHT"+i]=!0,r["SPOTLIGHT"+i]=!1,r["HEMILIGHT"+i]=!1,r["POINTLIGHT"+i]=!1,r["DIRLIGHT"+i]=!1,r["AREALIGHT"+i]=!1,r["CLUSTLIGHT"+i]=!1,t.prepareLightSpecificDefines(r,i),r["LIGHT_FALLOFF_PHYSICAL"+i]=!1,r["LIGHT_FALLOFF_GLTF"+i]=!1,r["LIGHT_FALLOFF_STANDARD"+i]=!1,t.falloffType){case jt.FALLOFF_GLTF:r["LIGHT_FALLOFF_GLTF"+i]=!0;break;case jt.FALLOFF_PHYSICAL:r["LIGHT_FALLOFF_PHYSICAL"+i]=!0;break;case jt.FALLOFF_STANDARD:r["LIGHT_FALLOFF_STANDARD"+i]=!0;break}if(s&&!t.specular.equalsFloats(0,0,0)&&(a.specularEnabled=!0),r["SHADOW"+i]=!1,r["SHADOWCSM"+i]=!1,r["SHADOWCSMDEBUG"+i]=!1,r["SHADOWCSMNUM_CASCADES"+i]=!1,r["SHADOWCSMUSESHADOWMAXZ"+i]=!1,r["SHADOWCSMNOBLEND"+i]=!1,r["SHADOWCSM_RIGHTHANDED"+i]=!1,r["SHADOWPCF"+i]=!1,r["SHADOWPCSS"+i]=!1,r["SHADOWPOISSON"+i]=!1,r["SHADOWESM"+i]=!1,r["SHADOWCLOSEESM"+i]=!1,r["SHADOWCUBE"+i]=!1,r["SHADOWLOWQUALITY"+i]=!1,r["SHADOWMEDIUMQUALITY"+i]=!1,e&&e.receiveShadows&&n.shadowsEnabled&&t.shadowEnabled){let l=(o=t.getShadowGenerator(n.activeCamera))!=null?o:t.getShadowGenerator();if(l){let c=l.getShadowMap();c&&c.renderList&&c.renderList.length>0&&(a.shadowEnabled=!0,l.prepareDefines(r,i))}}t.lightmapMode!=jt.LIGHTMAP_DEFAULT?(a.lightmapMode=!0,r["LIGHTMAPEXCLUDED"+i]=!0,r["LIGHTMAPNOSPECULAR"+i]=t.lightmapMode==jt.LIGHTMAP_SHADOWSONLY):(r["LIGHTMAPEXCLUDED"+i]=!1,r["LIGHTMAPNOSPECULAR"+i]=!1)}function cp(n,e,t,i,r,s=null,a=!1){let o=jfe(n,i);s!==!1&&(o=xH(t,n,i)),i.DEPTHPREPASS!==!e.getColorWrite()&&(i.DEPTHPREPASS=!i.DEPTHPREPASS,o=!0),i.INSTANCES!==r&&(i.INSTANCES=r,o=!0),i.THIN_INSTANCES!==a&&(i.THIN_INSTANCES=a,o=!0),o&&i.markAsUnprocessed()}function Xfe(n,e){if(n.useBones&&n.computeBonesUsingShaders&&n.skeleton){e.NUM_BONE_INFLUENCERS=n.numBoneInfluencers;let t=e.BONETEXTURE!==void 0;if(n.skeleton.isUsingTextureForMatrices&&t)e.BONETEXTURE=!0;else{e.BonesPerMesh=n.skeleton.bones.length+1,e.BONETEXTURE=t?!1:void 0;let i=n.getScene().prePassRenderer;if(i&&i.enabled){let r=i.excludedSkinnedMesh.indexOf(n)===-1;e.BONES_VELOCITY_ENABLED=r}}}else e.NUM_BONE_INFLUENCERS=0,e.BonesPerMesh=0,e.BONETEXTURE!==void 0&&(e.BONETEXTURE=!1)}function Yfe(n,e){let t=n.morphTargetManager;t?(e.MORPHTARGETS_UV=t.supportsUVs&&e.UV1,e.MORPHTARGETS_UV2=t.supportsUV2s&&e.UV2,e.MORPHTARGETS_TANGENT=t.supportsTangents&&e.TANGENT,e.MORPHTARGETS_NORMAL=t.supportsNormals&&e.NORMAL,e.MORPHTARGETS_POSITION=t.supportsPositions,e.MORPHTARGETS_COLOR=t.supportsColors,e.MORPHTARGETTEXTURE_HASUVS=t.hasUVs,e.MORPHTARGETTEXTURE_HASUV2S=t.hasUV2s,e.MORPHTARGETTEXTURE_HASTANGENTS=t.hasTangents,e.MORPHTARGETTEXTURE_HASNORMALS=t.hasNormals,e.MORPHTARGETTEXTURE_HASPOSITIONS=t.hasPositions,e.MORPHTARGETTEXTURE_HASCOLORS=t.hasColors,e.NUM_MORPH_INFLUENCERS=t.numMaxInfluencers||t.numInfluencers,e.MORPHTARGETS=e.NUM_MORPH_INFLUENCERS>0,e.MORPHTARGETS_TEXTURE=t.isUsingTextureForTargets):(e.MORPHTARGETS_UV=!1,e.MORPHTARGETS_UV2=!1,e.MORPHTARGETS_TANGENT=!1,e.MORPHTARGETS_NORMAL=!1,e.MORPHTARGETS_POSITION=!1,e.MORPHTARGETS_COLOR=!1,e.MORPHTARGETTEXTURE_HASUVS=!1,e.MORPHTARGETTEXTURE_HASUV2S=!1,e.MORPHTARGETTEXTURE_HASTANGENTS=!1,e.MORPHTARGETTEXTURE_HASNORMALS=!1,e.MORPHTARGETTEXTURE_HASPOSITIONS=!1,e.MORPHTARGETTEXTURE_HAS_COLORS=!1,e.MORPHTARGETS=!1,e.NUM_MORPH_INFLUENCERS=0)}function Kfe(n,e){let t=n.bakedVertexAnimationManager;e.BAKED_VERTEX_ANIMATION_TEXTURE=!!(t&&t.isEnabled)}function fp(n,e,t,i,r=!1,s=!0,a=!0){if(!e._areAttributesDirty&&e._needNormals===e._normals&&e._needUVs===e._uvs)return!1;e._normals=e._needNormals,e._uvs=e._needUVs,e.NORMAL=e._needNormals&&n.isVerticesDataPresent("normal"),e._needNormals&&n.isVerticesDataPresent("tangent")&&(e.TANGENT=!0);for(let o=1;o<=6;++o)e["UV"+o]=e._needUVs?n.isVerticesDataPresent(`uv${o===1?"":o}`):!1;if(t){let o=n.useVertexColors&&n.isVerticesDataPresent("color");e.VERTEXCOLOR=o,e.VERTEXALPHA=n.hasVertexAlpha&&o&&s}return n.isVerticesDataPresent("instanceColor")&&(n.hasInstances||n.hasThinInstances)&&(e.INSTANCESCOLOR=!0),i&&Xfe(n,e),r&&Yfe(n,e),a&&Kfe(n,e),!0}function dp(n,e){if(n.activeCamera){let t=e.MULTIVIEW;e.MULTIVIEW=n.activeCamera.outputRenderTarget!==null&&n.activeCamera.outputRenderTarget.getViewCount()>1,e.MULTIVIEW!=t&&e.markAsUnprocessed()}}function hp(n,e,t){let i=e.ORDER_INDEPENDENT_TRANSPARENCY,r=e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS;e.ORDER_INDEPENDENT_TRANSPARENCY=n.useOrderIndependentTransparency&&t,e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!n.getEngine().getCaps().textureFloatLinearFiltering,(i!==e.ORDER_INDEPENDENT_TRANSPARENCY||r!==e.ORDER_INDEPENDENT_TRANSPARENCY_16BITS)&&e.markAsUnprocessed()}function up(n,e,t){let i=e.PREPASS;if(!e._arePrePassDirty)return;let r=[{type:1,define:"PREPASS_POSITION",index:"PREPASS_POSITION_INDEX"},{type:9,define:"PREPASS_LOCAL_POSITION",index:"PREPASS_LOCAL_POSITION_INDEX"},{type:2,define:"PREPASS_VELOCITY",index:"PREPASS_VELOCITY_INDEX"},{type:11,define:"PREPASS_VELOCITY_LINEAR",index:"PREPASS_VELOCITY_LINEAR_INDEX"},{type:3,define:"PREPASS_REFLECTIVITY",index:"PREPASS_REFLECTIVITY_INDEX"},{type:0,define:"PREPASS_IRRADIANCE_LEGACY",index:"PREPASS_IRRADIANCE_LEGACY_INDEX"},{type:7,define:"PREPASS_ALBEDO_SQRT",index:"PREPASS_ALBEDO_SQRT_INDEX"},{type:5,define:"PREPASS_DEPTH",index:"PREPASS_DEPTH_INDEX"},{type:10,define:"PREPASS_SCREENSPACE_DEPTH",index:"PREPASS_SCREENSPACE_DEPTH_INDEX"},{type:6,define:"PREPASS_NORMAL",index:"PREPASS_NORMAL_INDEX"},{type:8,define:"PREPASS_WORLD_NORMAL",index:"PREPASS_WORLD_NORMAL_INDEX"},{type:14,define:"PREPASS_IRRADIANCE",index:"PREPASS_IRRADIANCE_INDEX"}];if(n.prePassRenderer&&n.prePassRenderer.enabled&&t){e.PREPASS=!0,e.SCENE_MRT_COUNT=n.prePassRenderer.mrtCount,e.PREPASS_NORMAL_WORLDSPACE=n.prePassRenderer.generateNormalsInWorldSpace,e.PREPASS_COLOR=!0,e.PREPASS_COLOR_INDEX=0;for(let s=0;s{Lt();Gi();Wg();Ml();Ya();Xr();RH();bH={r:0,g:0,b:0},yh={NUM_MORPH_INFLUENCERS:0,NORMAL:!1,TANGENT:!1,UV:!1,UV2:!1,COLOR:!1}});var Se,ts=I(()=>{Wt();kt();wi();mi();Gi();cv();Of();Lt();Dm();Eh();AH();es();Dr();VC();Se=class n{get useVertexPulling(){return this._useVertexPulling}set useVertexPulling(e){this._useVertexPulling!==e&&(this._useVertexPulling=e,this.markAsDirty(n.MiscDirtyFlag))}get _supportGlowLayer(){return!1}set _glowModeEnabled(e){}get shaderLanguage(){return this._shaderLanguage}get canRenderToMRT(){return!1}set alpha(e){if(this._alpha===e)return;let t=this._alpha;this._alpha=e,(t===1||e===1)&&this.markAsDirty(n.MiscDirtyFlag+n.PrePassDirtyFlag)}get alpha(){return this._alpha}set backFaceCulling(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,this.markAsDirty(n.TextureDirtyFlag))}get backFaceCulling(){return this._backFaceCulling}set cullBackFaces(e){this._cullBackFaces!==e&&(this._cullBackFaces=e,this.markAsDirty(n.TextureDirtyFlag))}get cullBackFaces(){return this._cullBackFaces}get blockDirtyMechanism(){return this._blockDirtyMechanism}set blockDirtyMechanism(e){this._blockDirtyMechanism!==e&&(this._blockDirtyMechanism=e,e||this.markDirty())}atomicMaterialsUpdate(e){this.blockDirtyMechanism=!0;try{e(this)}finally{this.blockDirtyMechanism=!1}}get hasRenderTargetTextures(){return this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._eventInfo.hasRenderTargetTextures}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}get onBindObservable(){return this._onBindObservable||(this._onBindObservable=new te),this._onBindObservable}set onBind(e){this._onBindObserver&&this.onBindObservable.remove(this._onBindObserver),this._onBindObserver=this.onBindObservable.add(e)}get onUnBindObservable(){return this._onUnBindObservable||(this._onUnBindObservable=new te),this._onUnBindObservable}get onEffectCreatedObservable(){return this._onEffectCreatedObservable||(this._onEffectCreatedObservable=new te),this._onEffectCreatedObservable}set alphaMode(e){this._alphaMode[0]!==e&&(this._alphaMode[0]=e,this.markAsDirty(n.TextureDirtyFlag))}get alphaMode(){return this._alphaMode[0]}get alphaModes(){return this._alphaMode}setAlphaMode(e,t=0){this._alphaMode[t]!==e&&(this._alphaMode[t]=e,this.markAsDirty(n.TextureDirtyFlag))}set needDepthPrePass(e){this._needDepthPrePass!==e&&(this._needDepthPrePass=e,this._needDepthPrePass&&(this.checkReadyOnEveryCall=!0))}get needDepthPrePass(){return this._needDepthPrePass}get isPrePassCapable(){return!1}set fogEnabled(e){this._fogEnabled!==e&&(this._fogEnabled=e,this.markAsDirty(n.MiscDirtyFlag))}get fogEnabled(){return this._fogEnabled}get wireframe(){switch(this._fillMode){case n.WireFrameFillMode:case n.LineListDrawMode:case n.LineLoopDrawMode:case n.LineStripDrawMode:return!0}return this._scene.forceWireframe}set wireframe(e){this.fillMode=e?n.WireFrameFillMode:n.TriangleFillMode}get pointsCloud(){switch(this._fillMode){case n.PointFillMode:case n.PointListDrawMode:return!0}return this._scene.forcePointsCloud}set pointsCloud(e){this.fillMode=e?n.PointFillMode:n.TriangleFillMode}get fillMode(){return this._fillMode}set fillMode(e){this._fillMode!==e&&(this._fillMode=e,this.markAsDirty(n.MiscDirtyFlag))}get useLogarithmicDepth(){return this._useLogarithmicDepth}set useLogarithmicDepth(e){let t=this.getScene().getEngine().getCaps().fragmentDepthSupported;e&&!t&&ee.Warn("Logarithmic depth has been requested for a material on a device that doesn't support it."),this._useLogarithmicDepth=e&&t,this._markAllSubMeshesAsMiscDirty()}get isVertexOutputInvariant(){return this._isVertexOutputInvariant}set isVertexOutputInvariant(e){this._isVertexOutputInvariant!==e&&(this._isVertexOutputInvariant=e,this._markAllSubMeshesAsMiscDirty())}_getDrawWrapper(){return this._drawWrapper}_setDrawWrapper(e){this._drawWrapper=e}constructor(e,t,i,r=!1){this.shadowDepthWrapper=null,this.allowShaderHotSwapping=!0,this._shaderLanguage=0,this._forceGLSL=!1,this._useVertexPulling=!1,this.metadata=null,this.reservedDataStore=null,this.checkReadyOnEveryCall=!1,this.checkReadyOnlyOnce=!1,this.state="",this._alpha=1,this._backFaceCulling=!0,this._cullBackFaces=!0,this._blockDirtyMechanism=!1,this.sideOrientation=null,this.onCompiled=null,this.onError=null,this.getRenderTargetTextures=null,this.doNotSerialize=!1,this._storeEffectOnSubMeshes=!1,this.animations=null,this.onDisposeObservable=new te,this._onDisposeObserver=null,this._onUnBindObservable=null,this._onBindObserver=null,this._alphaMode=[2],this._needDepthPrePass=!1,this.disableDepthWrite=!1,this.disableColorWrite=!1,this.forceDepthWrite=!1,this.depthFunction=0,this.separateCullingPass=!1,this._fogEnabled=!0,this.pointSize=1,this.zOffset=0,this.zOffsetUnits=0,this.stencil=new qn,this._isVertexOutputInvariant=n.ForceVertexOutputInvariant,this._useUBO=!1,this._fillMode=n.TriangleFillMode,this._cachedDepthWriteState=!1,this._cachedColorWriteState=!1,this._cachedDepthFunctionState=0,this._indexInSceneMaterialArray=-1,this.meshMap=null,this._parentContainer=null,this._uniformBufferLayoutBuilt=!1,this._eventInfo={},this._callbackPluginEventGeneric=()=>{},this._callbackPluginEventIsReadyForSubMesh=()=>{},this._callbackPluginEventPrepareDefines=()=>{},this._callbackPluginEventPrepareDefinesBeforeAttributes=()=>{},this._callbackPluginEventHardBindForSubMesh=()=>{},this._callbackPluginEventBindForSubMesh=()=>{},this._callbackPluginEventHasRenderTargetTextures=()=>{},this._callbackPluginEventFillRenderTargetTextures=()=>{},this._transparencyMode=null,this.name=e;let s=t||Oe.LastCreatedScene;s&&(this._scene=s,this._dirtyCallbacks={},this._forceGLSL=r,this._dirtyCallbacks[1]=this._markAllSubMeshesAsTexturesDirty.bind(this),this._dirtyCallbacks[2]=this._markAllSubMeshesAsLightsDirty.bind(this),this._dirtyCallbacks[4]=this._markAllSubMeshesAsFresnelDirty.bind(this),this._dirtyCallbacks[8]=this._markAllSubMeshesAsAttributesDirty.bind(this),this._dirtyCallbacks[16]=this._markAllSubMeshesAsMiscDirty.bind(this),this._dirtyCallbacks[32]=this._markAllSubMeshesAsPrePassDirty.bind(this),this._dirtyCallbacks[127]=this._markAllSubMeshesAsAllDirty.bind(this),this.id=e||pe.RandomId(),this.uniqueId=this._scene.getUniqueId(),this._materialContext=this._scene.getEngine().createMaterialContext(),this._drawWrapper=new Ss(this._scene.getEngine(),!1),this._drawWrapper.materialContext=this._materialContext,this._uniformBuffer=new Sr(this._scene.getEngine(),void 0,void 0,e),this._useUBO=this.getScene().getEngine().supportsUniformBuffers,this._createUniformBuffer(),i||this._scene.addMaterial(this),this._scene.useMaterialMeshMap&&(this.meshMap={}),n.OnEventObservable.notifyObservers(this,1))}_createUniformBuffer(){var t;let e=this.getScene().getEngine();(t=this._uniformBuffer)==null||t.dispose(),e.isWebGPU&&!this._forceGLSL?(this._uniformBuffer=new Sr(e,void 0,void 0,this.name,!0),this._shaderLanguage=1):this._uniformBuffer=new Sr(this._scene.getEngine(),void 0,void 0,this.name),this._uniformBufferLayoutBuilt=!1}toString(e){return"Name: "+this.name}getClassName(){return"Material"}get _isMaterial(){return!0}get isFrozen(){return this.checkReadyOnlyOnce}freeze(){this.markDirty(),this.checkReadyOnlyOnce=!0}unfreeze(){this.markDirty(),this.checkReadyOnlyOnce=!1}isReady(e,t){return!0}isReadyForSubMesh(e,t,i){let r=t.materialDefines;return r?(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=r,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),this._eventInfo.isReadyForSubMesh):!1}getEffect(){return this._drawWrapper.effect}getScene(){return this._scene}_getEffectiveOrientation(e){return this.sideOrientation!==null?this.sideOrientation:e.sideOrientation}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}get _hasTransparencyMode(){return this._transparencyMode!=null}get _transparencyModeIsBlend(){return this._transparencyMode===n.MATERIAL_ALPHABLEND||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _transparencyModeIsTest(){return this._transparencyMode===n.MATERIAL_ALPHATEST||this._transparencyMode===n.MATERIAL_ALPHATESTANDBLEND}get _disableAlphaBlending(){return this._transparencyMode===n.MATERIAL_OPAQUE||this._transparencyMode===n.MATERIAL_ALPHATEST}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1}needAlphaBlendingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsBlend:e.visibility<1?!0:this._disableAlphaBlending?!1:e.hasVertexAlpha||this.needAlphaBlending()}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:!1}needAlphaTestingForMesh(e){return this._hasTransparencyMode?this._transparencyModeIsTest:!this.needAlphaBlendingForMesh(e)&&this.needAlphaTesting()}getAlphaTestTexture(){return null}markDirty(e=!1){let t=this.getScene().meshes;for(let i of t)if(i.subMeshes){for(let r of i.subMeshes)if(r.getMaterial()===this)for(let s of r._drawWrappers)s&&this._materialContext===s.materialContext&&(s._wasPreviouslyReady=!1,s._wasPreviouslyUsingInstances=null,s._forceRebindOnNextCall=e)}e&&this.markAsDirty(n.AllDirtyFlag)}_preBind(e,t=null){let i=this._scene.getEngine(),s=(t==null?this.sideOrientation:t)===n.ClockWiseSideOrientation,a=e||this._getDrawWrapper();return ex(a)&&a.materialContext&&(a.materialContext.useVertexPulling=this.useVertexPulling),i.enableEffect(a),i.setState(this.backFaceCulling,this.zOffset,!1,s,this._scene._mirroredCameraPosition?!this.cullBackFaces:this.cullBackFaces,this.stencil,this.zOffsetUnits),s}bind(e,t){}buildUniformLayout(){let e=this._uniformBuffer;this._eventInfo.ubo=e,this._callbackPluginEventGeneric(8,this._eventInfo),e.create(),this._uniformBufferLayoutBuilt=!0}bindForSubMesh(e,t,i){let r=i._drawWrapper;this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),r._forceRebindOnNextCall=!1}bindOnlyWorldMatrix(e){}bindView(e){this._useUBO?this._needToBindSceneUbo=!0:e.setMatrix("view",this.getScene().getViewMatrix())}bindViewProjection(e){this._useUBO?this._needToBindSceneUbo=!0:(e.setMatrix("viewProjection",this.getScene().getTransformMatrix()),e.setMatrix("projection",this.getScene().getProjectionMatrix()),e.setMatrix("inverseProjection",this.getScene().getInverseProjectionMatrix()))}bindEyePosition(e,t){this._useUBO?this._needToBindSceneUbo=!0:this._scene.bindEyePosition(e,t)}_afterBind(e,t=null,i){if(this._scene._cachedMaterial=this,this._needToBindSceneUbo&&t&&(this._needToBindSceneUbo=!1,Wf(t,this.getScene().getSceneUniformBuffer()),this._scene.finalizeSceneUbo()),e?this._scene._cachedVisibility=e.visibility:this._scene._cachedVisibility=1,this._onBindObservable&&e&&this._onBindObservable.notifyObservers(e),this.disableDepthWrite){let r=this._scene.getEngine();this._cachedDepthWriteState=r.getDepthWrite(),r.setDepthWrite(!1)}if(this.disableColorWrite){let r=this._scene.getEngine();this._cachedColorWriteState=r.getColorWrite(),r.setColorWrite(!1)}if(this.depthFunction!==0){let r=this._scene.getEngine();this._cachedDepthFunctionState=r.getDepthFunction()||0,r.setDepthFunction(this.depthFunction)}}unbind(){this._scene.getSceneUniformBuffer().unbindEffect(),this._onUnBindObservable&&this._onUnBindObservable.notifyObservers(this),this.depthFunction!==0&&this._scene.getEngine().setDepthFunction(this._cachedDepthFunctionState),this.disableDepthWrite&&this._scene.getEngine().setDepthWrite(this._cachedDepthWriteState),this.disableColorWrite&&this._scene.getEngine().setColorWrite(this._cachedColorWriteState)}getAnimatables(){return this._eventInfo.animatables=[],this._callbackPluginEventGeneric(256,this._eventInfo),this._eventInfo.animatables}getActiveTextures(){return this._eventInfo.activeTextures=[],this._callbackPluginEventGeneric(512,this._eventInfo),this._eventInfo.activeTextures}hasTexture(e){return this._eventInfo.hasTexture=!1,this._eventInfo.texture=e,this._callbackPluginEventGeneric(1024,this._eventInfo),this._eventInfo.hasTexture}clone(e){return null}_clonePlugins(e,t){let i={};if(this._serializePlugins(i),n._ParsePlugins(i,e,this._scene,t),this.pluginManager)for(let r of this.pluginManager._plugins){let s=e.pluginManager.getPlugin(r.name);s&&r.copyTo(s)}}getBindedMeshes(){if(this.meshMap){let e=[];for(let t in this.meshMap){let i=this.meshMap[t];i&&e.push(i)}return e}else return this._scene.meshes.filter(t=>t.material===this)}forceCompilation(e,t,i,r){let s={clipPlane:!1,useInstances:!1,...i},a=this.getScene(),o=this.allowShaderHotSwapping;this.allowShaderHotSwapping=!1;let l=()=>{if(!this._scene||!this._scene.getEngine())return;let c=a.clipPlane;if(s.clipPlane&&(a.clipPlane=new Ao(0,0,0,1)),this._storeEffectOnSubMeshes){let f=!0,d=null;if(e.subMeshes){let h=new Ks(0,0,0,0,0,e,void 0,!1,!1);h.materialDefines&&(h.materialDefines._renderId=-1),this.isReadyForSubMesh(e,h,s.useInstances)||(h.effect&&h.effect.getCompilationError()&&h.effect.allFallbacksProcessed()?d=h.effect.getCompilationError():(f=!1,setTimeout(l,16)))}f&&(this.allowShaderHotSwapping=o,d&&r&&r(d),t&&t(this))}else this.isReady()?(this.allowShaderHotSwapping=o,t&&t(this)):setTimeout(l,16);s.clipPlane&&(a.clipPlane=c)};l()}async forceCompilationAsync(e,t){return await new Promise((i,r)=>{this.forceCompilation(e,()=>{i()},t,s=>{r(s)})})}markAsDirty(e){this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism||(n._DirtyCallbackArray.length=0,e&n.ImageProcessingDirtyFlag&&n._DirtyCallbackArray.push(n._ImageProcessingDirtyCallBack),e&n.TextureDirtyFlag&&n._DirtyCallbackArray.push(n._TextureDirtyCallBack),e&n.LightDirtyFlag&&n._DirtyCallbackArray.push(n._LightsDirtyCallBack),e&n.FresnelDirtyFlag&&n._DirtyCallbackArray.push(n._FresnelDirtyCallBack),e&n.AttributesDirtyFlag&&n._DirtyCallbackArray.push(n._AttributeDirtyCallBack),e&n.MiscDirtyFlag&&n._DirtyCallbackArray.push(n._MiscDirtyCallBack),e&n.PrePassDirtyFlag&&n._DirtyCallbackArray.push(n._PrePassDirtyCallBack),n._DirtyCallbackArray.length&&this._markAllSubMeshesAsDirty(n._RunDirtyCallBacks),this.getScene().resetCachedMaterial())}resetDrawCache(){let e=this.getScene().meshes;for(let t of e)if(t.subMeshes)for(let i of t.subMeshes)i.getMaterial()===this&&i.resetDrawCache()}_markAllSubMeshesAsDirty(e){let t=this.getScene();if(t.blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let i=t.meshes;for(let r of i)if(r.subMeshes){for(let s of r.subMeshes)if((s.getMaterial()||(t._hasDefaultMaterial?t.defaultMaterial:null))===this)for(let o of s._drawWrappers)!o||!o.defines||!o.defines.markAllAsDirty||this._materialContext===o.materialContext&&e(o.defines)}}_markScenePrePassDirty(){if(this.getScene().blockMaterialDirtyMechanism||this._blockDirtyMechanism)return;let e=this.getScene().enablePrePassRenderer();e&&e.markAsDirty()}_markAllSubMeshesAsAllDirty(){this._markAllSubMeshesAsDirty(n._AllDirtyCallBack)}_markAllSubMeshesAsImageProcessingDirty(){this._markAllSubMeshesAsDirty(n._ImageProcessingDirtyCallBack)}_markAllSubMeshesAsTexturesDirty(){this._markAllSubMeshesAsDirty(n._TextureDirtyCallBack)}_markAllSubMeshesAsFresnelDirty(){this._markAllSubMeshesAsDirty(n._FresnelDirtyCallBack)}_markAllSubMeshesAsFresnelAndMiscDirty(){this._markAllSubMeshesAsDirty(n._FresnelAndMiscDirtyCallBack)}_markAllSubMeshesAsLightsDirty(){this._markAllSubMeshesAsDirty(n._LightsDirtyCallBack)}_markAllSubMeshesAsAttributesDirty(){this._markAllSubMeshesAsDirty(n._AttributeDirtyCallBack)}_markAllSubMeshesAsMiscDirty(){this._markAllSubMeshesAsDirty(n._MiscDirtyCallBack)}_markAllSubMeshesAsPrePassDirty(){this._markAllSubMeshesAsDirty(n._PrePassDirtyCallBack)}_markAllSubMeshesAsTexturesAndMiscDirty(){this._markAllSubMeshesAsDirty(n._TextureAndMiscDirtyCallBack)}_checkScenePerformancePriority(){if(this._scene.performancePriority!==0){this.checkReadyOnlyOnce=!0;let e=this._scene.onScenePerformancePriorityChangedObservable.addOnce(()=>{this.checkReadyOnlyOnce=!1});this.onDisposeObservable.add(()=>{this._scene.onScenePerformancePriorityChangedObservable.remove(e)})}}setPrePassRenderer(e){return!1}dispose(e,t,i){let r=this.getScene();if(r.stopAnimation(this),r.freeProcessedMaterials(),r.removeMaterial(this),this._eventInfo.forceDisposeTextures=t,this._callbackPluginEventGeneric(2,this._eventInfo),this._parentContainer){let s=this._parentContainer.materials.indexOf(this);s>-1&&this._parentContainer.materials.splice(s,1),this._parentContainer=null}if(i!==!0)if(this.meshMap)for(let s in this.meshMap){let a=this.meshMap[s];this._disposeMeshResources(a)}else{let s=r.meshes;for(let a of s)this._disposeMeshResources(a)}this._uniformBuffer.dispose(),this._drawWrapper.effect&&(this._storeEffectOnSubMeshes||this._drawWrapper.effect.dispose(),this._drawWrapper.effect=null),this.metadata=null,this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this._onBindObservable&&this._onBindObservable.clear(),this._onUnBindObservable&&this._onUnBindObservable.clear(),this._onEffectCreatedObservable&&this._onEffectCreatedObservable.clear(),this._eventInfo&&(this._eventInfo={})}_disposeMeshResources(e){var r;if(!e)return;let t=e.geometry,i=e._internalAbstractMeshDataInfo._materialForRenderPass;if(this._storeEffectOnSubMeshes){if(e.subMeshes&&i)for(let s of e.subMeshes){let a=s._drawWrappers;for(let o=0;on.markAllAsDirty();Se._ImageProcessingDirtyCallBack=n=>n.markAsImageProcessingDirty();Se._TextureDirtyCallBack=n=>n.markAsTexturesDirty();Se._FresnelDirtyCallBack=n=>n.markAsFresnelDirty();Se._MiscDirtyCallBack=n=>n.markAsMiscDirty();Se._PrePassDirtyCallBack=n=>n.markAsPrePassDirty();Se._LightsDirtyCallBack=n=>n.markAsLightDirty();Se._AttributeDirtyCallBack=n=>n.markAsAttributesDirty();Se._FresnelAndMiscDirtyCallBack=n=>{Se._FresnelDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._TextureAndMiscDirtyCallBack=n=>{Se._TextureDirtyCallBack(n),Se._MiscDirtyCallBack(n)};Se._DirtyCallbackArray=[];Se._RunDirtyCallBacks=n=>{for(let e of Se._DirtyCallbackArray)e(n)};P([F()],Se.prototype,"id",void 0);P([F()],Se.prototype,"uniqueId",void 0);P([F()],Se.prototype,"name",void 0);P([F()],Se.prototype,"metadata",void 0);P([F()],Se.prototype,"checkReadyOnEveryCall",void 0);P([F()],Se.prototype,"checkReadyOnlyOnce",void 0);P([F()],Se.prototype,"state",void 0);P([F("alpha")],Se.prototype,"_alpha",void 0);P([F("backFaceCulling")],Se.prototype,"_backFaceCulling",void 0);P([F("cullBackFaces")],Se.prototype,"_cullBackFaces",void 0);P([F()],Se.prototype,"sideOrientation",void 0);P([F()],Se.prototype,"_alphaMode",void 0);P([F()],Se.prototype,"_needDepthPrePass",void 0);P([F()],Se.prototype,"disableDepthWrite",void 0);P([F()],Se.prototype,"disableColorWrite",void 0);P([F()],Se.prototype,"forceDepthWrite",void 0);P([F()],Se.prototype,"depthFunction",void 0);P([F()],Se.prototype,"separateCullingPass",void 0);P([F("fogEnabled")],Se.prototype,"_fogEnabled",void 0);P([F()],Se.prototype,"pointSize",void 0);P([F()],Se.prototype,"zOffset",void 0);P([F()],Se.prototype,"zOffsetUnits",void 0);P([F()],Se.prototype,"pointsCloud",null);P([F()],Se.prototype,"fillMode",null);P([F()],Se.prototype,"useLogarithmicDepth",null);P([F()],Se.prototype,"_isVertexOutputInvariant",void 0);P([F()],Se.prototype,"transparencyMode",null)});var _p,MH=I(()=>{ts();Df();$i();_p=class n extends Se{get subMaterials(){return this._subMaterials}set subMaterials(e){this._subMaterials=e,this._hookArray(e)}getChildren(){return this.subMaterials}constructor(e,t){super(e,t,!0),this._waitingSubMaterialsUniqueIds=[],this.getScene().addMultiMaterial(this),this.subMaterials=[],this._storeEffectOnSubMeshes=!0}_hookArray(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._markAllSubMeshesAsTexturesDirty(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._markAllSubMeshesAsTexturesDirty(),a}}getSubMaterial(e){return e<0||e>=this.subMaterials.length?this.getScene().defaultMaterial:this.subMaterials[e]}getActiveTextures(){return super.getActiveTextures().concat(...this.subMaterials.map(e=>e?e.getActiveTextures():[]))}hasTexture(e){var t;if(super.hasTexture(e))return!0;for(let i=0;i=0&&r.multiMaterials.splice(s,1),super.dispose(e,t)}static ParseMultiMaterial(e,t){let i=new n(e.name,t);if(i.id=e.id,i._loadedUniqueId=e.uniqueId,ei&&ei.AddTagsTo(i,e.tags),e.materialsUniqueIds)i._waitingSubMaterialsUniqueIds=e.materialsUniqueIds;else for(let r of e.materials)i.subMaterials.push(t.getLastMaterialById(r));return i}};Ut("BABYLON.MultiMaterial",_p)});var oR,IH=I(()=>{oR=class{constructor(e,t){this.distanceOrScreenCoverage=e,this.mesh=t}}});var gp,lR,BD,cR,UD,VD,yl,q,Fi=I(()=>{mi();wi();Gg();Df();PD();Rl();ke();zt();_a();Zi();Tr();rR();$m();cv();ts();MH();iR();Dr();Lt();$i();Sn();Wm();IH();gp=class{},lR=class{constructor(){this.batchCache=new cR(this),this.batchCacheReplacementModeInFrozenMode=new cR(this),this.instancesBufferSize=512*4}},BD=class{constructor(){this.renderPasses={}}},cR=class{constructor(e){this.parent=e,this.mustReturn=!1,this.visibleInstances=new Array,this.renderSelf=[],this.hardwareInstancedRendering=[]}},UD=class{constructor(){this.instancesCount=0,this.matrixBuffer=null,this.previousMatrixBuffer=null,this.matrixBufferSize=512,this.matrixData=null,this.boundingVectors=[],this.worldMatrices=null}},VD=class{constructor(){this._areNormalsFrozen=!1,this._source=null,this.meshMap=null,this._preActivateId=-1,this._LODLevels=new Array,this._useLODScreenCoverage=!1,this._effectiveMaterial=null,this._forcedInstanceCount=0,this._overrideRenderingFillMode=null}},yl={source:null,parent:null,doNotCloneChildren:!1,clonePhysicsImpostor:!0,cloneThinInstances:!1},q=class n extends yr{static _GetDefaultSideOrientation(e){return e||n.FRONTSIDE}get useLODScreenCoverage(){return this._internalMeshDataInfo._useLODScreenCoverage}set useLODScreenCoverage(e){this._internalMeshDataInfo._useLODScreenCoverage=e,this._sortLODLevels()}get computeBonesUsingShaders(){return this._internalAbstractMeshDataInfo._computeBonesUsingShaders}set computeBonesUsingShaders(e){this._internalAbstractMeshDataInfo._computeBonesUsingShaders!==e&&(e&&this._internalMeshDataInfo._sourcePositions&&(this.setVerticesData(L.PositionKind,this._internalMeshDataInfo._sourcePositions,!0),this._internalMeshDataInfo._sourceNormals&&this.setVerticesData(L.NormalKind,this._internalMeshDataInfo._sourceNormals,!0),this._internalMeshDataInfo._sourcePositions=null,this._internalMeshDataInfo._sourceNormals=null),this._internalAbstractMeshDataInfo._computeBonesUsingShaders=e,this._markSubMeshesAsAttributesDirty())}get onBeforeRenderObservable(){return this._internalMeshDataInfo._onBeforeRenderObservable||(this._internalMeshDataInfo._onBeforeRenderObservable=new te),this._internalMeshDataInfo._onBeforeRenderObservable}get onBeforeBindObservable(){return this._internalMeshDataInfo._onBeforeBindObservable||(this._internalMeshDataInfo._onBeforeBindObservable=new te),this._internalMeshDataInfo._onBeforeBindObservable}get onAfterRenderObservable(){return this._internalMeshDataInfo._onAfterRenderObservable||(this._internalMeshDataInfo._onAfterRenderObservable=new te),this._internalMeshDataInfo._onAfterRenderObservable}get onBetweenPassObservable(){return this._internalMeshDataInfo._onBetweenPassObservable||(this._internalMeshDataInfo._onBetweenPassObservable=new te),this._internalMeshDataInfo._onBetweenPassObservable}get onBeforeDrawObservable(){return this._internalMeshDataInfo._onBeforeDrawObservable||(this._internalMeshDataInfo._onBeforeDrawObservable=new te),this._internalMeshDataInfo._onBeforeDrawObservable}set onBeforeDraw(e){this._onBeforeDrawObserver&&this.onBeforeDrawObservable.remove(this._onBeforeDrawObserver),this._onBeforeDrawObserver=this.onBeforeDrawObservable.add(e)}get hasInstances(){return this.instances.length>0}get hasThinInstances(){return(this.forcedInstanceCount||this._thinInstanceDataStorage.instancesCount||0)>0}get forcedInstanceCount(){return this._internalMeshDataInfo._forcedInstanceCount}set forcedInstanceCount(e){this._internalMeshDataInfo._forcedInstanceCount=e}get sideOrientation(){return this._internalMeshDataInfo._sideOrientation}set sideOrientation(e){this._internalMeshDataInfo._sideOrientation=e,this._internalAbstractMeshDataInfo._sideOrientationHint=this._scene.useRightHandedSystem&&e===1||!this._scene.useRightHandedSystem&&e===0}get _effectiveSideOrientation(){return this._internalMeshDataInfo._effectiveSideOrientation}get overrideMaterialSideOrientation(){return this.sideOrientation}set overrideMaterialSideOrientation(e){this.sideOrientation=e,this.material&&(this.material.sideOrientation=null)}get overrideRenderingFillMode(){return this._internalMeshDataInfo._overrideRenderingFillMode}set overrideRenderingFillMode(e){this._internalMeshDataInfo._overrideRenderingFillMode=e}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){e&&(this.material&&this.material.sideOrientation===null||this._internalAbstractMeshDataInfo._sideOrientationHint)&&(e.sideOrientation=null),this._setMaterial(e)}get source(){return this._internalMeshDataInfo._source}get cloneMeshMap(){return this._internalMeshDataInfo.meshMap}get isUnIndexed(){return this._unIndexed}set isUnIndexed(e){this._unIndexed!==e&&(this._unIndexed=e,this._markSubMeshesAsAttributesDirty())}get worldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesData:void 0}get previousWorldMatrixInstancedBuffer(){let e=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._instanceDataStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];return e?e.instancesPreviousData:void 0}get manualUpdateOfWorldMatrixInstancedBuffer(){return this._instanceDataStorage.manualUpdate}set manualUpdateOfWorldMatrixInstancedBuffer(e){this._instanceDataStorage.manualUpdate=e}get manualUpdateOfPreviousWorldMatrixInstancedBuffer(){return this._instanceDataStorage.previousManualUpdate}set manualUpdateOfPreviousWorldMatrixInstancedBuffer(e){this._instanceDataStorage.previousManualUpdate=e}get forceWorldMatrixInstancedBufferUpdate(){return this._instanceDataStorage.forceMatrixUpdates}set forceWorldMatrixInstancedBufferUpdate(e){this._instanceDataStorage.forceMatrixUpdates=e}_copySource(e,t,i=!0,r=!1){var a,o;let s=this.getScene();if(e._geometry&&e._geometry.applyToMesh(this),Sl.DeepCopy(e,this,["name","material","skeleton","instances","parent","uniqueId","source","metadata","morphTargetManager","hasInstances","worldMatrixInstancedBuffer","previousWorldMatrixInstancedBuffer","hasLODLevels","geometry","isBlocked","areNormalsFrozen","facetNb","isFacetDataEnabled","lightSources","useBones","isAnInstance","collider","edgesRenderer","forward","up","right","absolutePosition","absoluteScaling","absoluteRotationQuaternion","isWorldMatrixFrozen","nonUniformScaling","behaviors","worldMatrixFromCache","hasThinInstances","cloneMeshMap","hasBoundingInfo","physicsBody","physicsImpostor"],["_poseMatrix"]),this._internalMeshDataInfo._source=e,s.useClonedMeshMap&&(e._internalMeshDataInfo.meshMap||(e._internalMeshDataInfo.meshMap={}),e._internalMeshDataInfo.meshMap[this.uniqueId]=this),this._originalBuilderSideOrientation=e._originalBuilderSideOrientation,this._creationDataStorage=e._creationDataStorage,e._ranges){let l=e._ranges;for(let c in l)Object.prototype.hasOwnProperty.call(l,c)&&l[c]&&this.createAnimationRange(c,l[c].from,l[c].to)}if(e.metadata&&e.metadata.clone?this.metadata=e.metadata.clone():this.metadata=e.metadata,this._internalMetadata=e._internalMetadata,ei&&ei.HasTags(e)&&ei.AddTagsTo(this,ei.GetTags(e,!0)),this.setEnabled(e.isEnabled(!1)),this.parent=e.parent,this.setPivotMatrix(e.getPivotMatrix(),this._postMultiplyPivotMatrix),this.id=this.name+"."+e.id,this.material=e.material,!t){let l=e.getDescendants(!0);for(let c=0;c{m&&p&&(this._uniformBuffer?this.transferToEffect(_):p.bindOnlyWorldMatrix(_))};let o,l=!1;if(i&&i._addToSceneRootNodes===void 0){let m=i;o=(c=m.parent)!=null?c:null,r=(f=m.source)!=null?f:null,s=(d=m.doNotCloneChildren)!=null?d:!1,a=(h=m.clonePhysicsImpostor)!=null?h:!0,l=(u=m.cloneThinInstances)!=null?u:!1}else o=i;r&&this._copySource(r,s,a,l),o!==null&&(this.parent=o),this._instanceDataStorage.hardwareInstancedRendering=this.getEngine().getCaps().instancedArrays,this._internalMeshDataInfo._onMeshReadyObserverAdded=m=>{m.unregisterOnNextCall=!0,this.isReady(!0)?this.onMeshReadyObservable.notifyObservers(this):this._internalMeshDataInfo._checkReadinessObserver||(this._internalMeshDataInfo._checkReadinessObserver=this._scene.onBeforeRenderObservable.add(()=>{this.isReady(!0)&&(this._scene.onBeforeRenderObservable.remove(this._internalMeshDataInfo._checkReadinessObserver),this._internalMeshDataInfo._checkReadinessObserver=null,this.onMeshReadyObservable.notifyObservers(this))}))},this.onMeshReadyObservable=new te(this._internalMeshDataInfo._onMeshReadyObserverAdded),r&&r.onClonedObservable.notifyObservers(this)}instantiateHierarchy(e=null,t,i){let r=this.getTotalVertices()===0||t&&t.doNotInstantiate&&(t.doNotInstantiate===!0||t.doNotInstantiate(this))?this.clone("Clone of "+(this.name||this.id),e||this.parent,!0):this.createInstance("instance of "+(this.name||this.id));r.parent=e||this.parent,r.position=this.position.clone(),r.scaling=this.scaling.clone(),this.rotationQuaternion?r.rotationQuaternion=this.rotationQuaternion.clone():r.rotation=this.rotation.clone(),i&&i(this,r);for(let s of this.getChildTransformNodes(!0))s.getClassName()==="InstancedMesh"&&r.getClassName()==="Mesh"&&s.sourceMesh===this?s.instantiateHierarchy(r,{doNotInstantiate:t&&t.doNotInstantiate||!1,newSourcedMesh:r},i):s.instantiateHierarchy(r,t,i);return r}getClassName(){return"Mesh"}get _isMesh(){return!0}toString(e){let t=super.toString(e);if(t+=", n vertices: "+this.getTotalVertices(),t+=", parent: "+(this._waitingParentId?this._waitingParentId:this.parent?this.parent.name:"NONE"),this.animations)for(let i=0;i0}getLODLevels(){return this._internalMeshDataInfo._LODLevels}_sortLODLevels(){let e=this._internalMeshDataInfo._useLODScreenCoverage?-1:1;this._internalMeshDataInfo._LODLevels.sort((t,i)=>t.distanceOrScreenCoveragei.distanceOrScreenCoverage?-e:0)}addLODLevel(e,t){if(t&&t._masterMesh)return ee.Warn("You cannot use a mesh as LOD level twice"),this;let i=new oR(e,t);return this._internalMeshDataInfo._LODLevels.push(i),t&&(t._masterMesh=this),this._sortLODLevels(),this}getLODLevelAtDistance(e){let t=this._internalMeshDataInfo;for(let i=0;io*a)return this.onLODLevelSelection&&this.onLODLevelSelection(a,this,this),this;for(let l=0;l0||this.hasThinInstances);this.computeWorldMatrix();let a=this.material||r.defaultMaterial;if(a){if(a._storeEffectOnSubMeshes)for(let _ of this.subMeshes){let p=_.getMaterial();if(p){if(p._storeEffectOnSubMeshes){if(!p.isReadyForSubMesh(this,_,s))return!1}else if(!p.isReady(this,s))return!1}}else if(!a.isReady(this,s))return!1}let o=i.currentRenderPassId;for(let _ of this.lightSources){let p=_.getShadowGenerators();if(!p)continue;let g=p.values();for(let v=g.next();v.done!==!0;v=g.next()){let T=v.value;if(T&&(!((l=T.getShadowMap())!=null&&l.renderList)||(c=T.getShadowMap())!=null&&c.renderList&&((d=(f=T.getShadowMap())==null?void 0:f.renderList)==null?void 0:d.indexOf(this))!==-1)){let E=(h=T.getShadowMap().renderPassIds)!=null?h:[i.currentRenderPassId];for(let A=0;A0){let i=this.getIndices();if(!i)return null;let r=i.length,s=!1;if(e)s=!0;else for(let a of this.subMeshes){if(a.indexStart+a.indexCount>r){s=!0;break}if(a.verticesStart+a.verticesCount>t){s=!0;break}}if(!s)return this.subMeshes[0]}return this.releaseSubMeshes(),new Ks(0,0,t,0,this.getTotalIndices()||(this.isUnIndexed?t:0),this)}subdivide(e){if(e<1)return;let t=this.getTotalIndices(),i=t/e|0,r=0;for(;i%3!==0;)i++;this.releaseSubMeshes();for(let s=0;s=t);s++)Ks.CreateFromIndices(0,r,r+i>=t?t-r:i,this,void 0,!1),r+=i;this.refreshBoundingInfo(),this.synchronizeInstances()}setVerticesData(e,t,i=!1,r){if(this._geometry)this._geometry.setVerticesData(e,t,i,r);else{let s=new Me;s.set(t,e);let a=this.getScene();new xn(xn.RandomId(),a,s,i,this)}return this}removeVerticesData(e){this._geometry&&this._geometry.removeVerticesData(e)}markVerticesDataAsUpdatable(e,t=!0){let i=this.getVertexBuffer(e);!i||i.isUpdatable()===t||this.setVerticesData(e,this.getVerticesData(e),t)}setVerticesBuffer(e,t=!0,i=null){return this._geometry||(this._geometry=xn.CreateGeometryForMesh(this)),this._geometry.setVerticesBuffer(e,i,t),this}updateVerticesData(e,t,i,r){return this._geometry?(r?(this.makeGeometryUnique(),this.updateVerticesData(e,t,i,!1)):this._geometry.updateVerticesData(e,t,i),this):this}updateMeshPositions(e,t=!0){let i=this.getVerticesData(L.PositionKind);if(!i)return this;if(e(i),this.updateVerticesData(L.PositionKind,i,!1,!1),t){let r=this.getIndices(),s=this.getVerticesData(L.NormalKind);if(!s)return this;Me.ComputeNormals(i,r,s),this.updateVerticesData(L.NormalKind,s,!1,!1)}return this}makeGeometryUnique(){if(!this._geometry)return this;if(this._geometry.meshes.length===1)return this;let e=this._geometry,t=this._geometry.copy(xn.RandomId());return e.releaseForMesh(this,!0),t.applyToMesh(this),this}setIndexBuffer(e,t,i,r=null){let s=this._geometry;s||(s=new xn(xn.RandomId(),this.getScene(),void 0,void 0,this)),s.setIndexBuffer(e,t,i,r)}setIndices(e,t=null,i=!1,r=!1){if(this._geometry)this._geometry.setIndices(e,t,i,r);else{let s=new Me;s.indices=e;let a=this.getScene();new xn(xn.RandomId(),a,s,i,this,t)}return this}updateIndices(e,t,i=!1){return this._geometry?(this._geometry.updateIndices(e,t,i),this):this}toLeftHanded(){return this._geometry?(this._geometry.toLeftHanded(),this):this}_bind(e,t,i,r=!0){if(!this._geometry)return this;let s=this.getScene().getEngine(),a;if(this._unIndexed)this._getRenderingFillMode(i)===Se.WireFrameFillMode?a=e._getLinesIndexBuffer(this.getIndices(),s):a=null;else switch(this._getRenderingFillMode(i)){case Se.PointFillMode:a=null;break;case Se.WireFrameFillMode:a=e._getLinesIndexBuffer(this.getIndices(),s);break;default:case Se.TriangleFillMode:a=this._geometry.getIndexBuffer();break}return this._bindDirect(t,a,r)}_bindDirect(e,t,i=!0){if(!this._geometry)return this;if(this.morphTargetManager&&this.morphTargetManager.isUsingTextureForTargets&&this.morphTargetManager._bind(e),!i||!this._userInstancedBuffersStorage||this.hasThinInstances)this._geometry._bind(e,t);else{if(!this._instanceDataStorage.useMonoDataStorageRenderPass&&this._userInstancedBuffersStorage.renderPasses&&this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId]){let r=this._userInstancedBuffersStorage.renderPasses[this._instanceDataStorage.engine.currentRenderPassId];for(let s in r)this._userInstancedBuffersStorage.vertexBuffers[s]=r[s]}this._geometry._bind(e,t,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;this._internalMeshDataInfo._onBeforeDrawObservable&&this._internalMeshDataInfo._onBeforeDrawObservable.notifyObservers(this);let s=this.getScene().getEngine(),a=s._currentMaterialContext,o=a&&a.useVertexPulling;return this._unIndexed&&t!==Se.WireFrameFillMode||t==Se.PointFillMode?s.drawArraysType(t,e.verticesStart,e.verticesCount,this.forcedInstanceCount||i):t==Se.WireFrameFillMode?s.drawElementsType(t,0,e._linesIndexCount,this.forcedInstanceCount||i):o?s.drawArraysType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i):s.drawElementsType(t,e.indexStart,e.indexCount,this.forcedInstanceCount||i),this}registerBeforeRender(e){return this.onBeforeRenderObservable.add(e),this}unregisterBeforeRender(e){return this.onBeforeRenderObservable.removeCallback(e),this}registerAfterRender(e){return this.onAfterRenderObservable.add(e),this}unregisterAfterRender(e){return this.onAfterRenderObservable.removeCallback(e),this}_getInstancesRenderList(e,t=!1){let i=this._instanceDataStorage.useMonoDataStorageRenderPass?this._instanceDataStorage.dataStorageRenderPass:this._getInstanceDataStorage();if(this._instanceDataStorage.isFrozen){if(t)return i.batchCacheReplacementModeInFrozenMode.hardwareInstancedRendering[e]=!1,i.batchCacheReplacementModeInFrozenMode.renderSelf[e]=!0,i.batchCacheReplacementModeInFrozenMode;if(i.previousBatch)return i.previousBatch}let r=this.getScene(),s=r._isInIntermediateRendering(),a=s?this._internalAbstractMeshDataInfo._onlyForInstancesIntermediate:this._internalAbstractMeshDataInfo._onlyForInstances,o=i.batchCache;if(o.mustReturn=!1,o.renderSelf[e]=t||!a&&this.isEnabled()&&this.isVisible,o.visibleInstances[e]=null,i.visibleInstances&&!t){let l=i.visibleInstances,c=r.getRenderId(),f=s?l.intermediateDefaultRenderId:l.defaultRenderId;o.visibleInstances[e]=l[c],!o.visibleInstances[e]&&f&&(o.visibleInstances[e]=l[f])}return o.hardwareInstancedRendering[e]=!t&&this._instanceDataStorage.hardwareInstancedRendering&&o.visibleInstances[e]!==null&&o.visibleInstances[e]!==void 0,i.previousBatch=o,o}_updateInstancedBuffers(e,t,i,r,s,a){var v;let o=t.visibleInstances[e._id],l=o?o.length:0,c=t.parent,f=this._instanceDataStorage,d=c.instancesBuffer,h=c.instancesPreviousBuffer,u=0,m=0,_=t.renderSelf[e._id],p=this._scene.floatingOriginOffset,g=!d||i!==c.instancesBufferSize||this._scene.needsPreviousWorldMatrices&&!c.instancesPreviousBuffer;if(!this._instanceDataStorage.manualUpdate&&(!f.isFrozen||g)){let T=this.getWorldMatrix();if(_){this._scene.needsPreviousWorldMatrices&&(f.masterMeshPreviousWorldMatrix?(f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u),f.masterMeshPreviousWorldMatrix.copyFrom(T)):(f.masterMeshPreviousWorldMatrix=T.clone(),f.masterMeshPreviousWorldMatrix.copyToArray(c.instancesPreviousData,u))),T.copyToArray(c.instancesData,u);let S=T.asArray();c.instancesData[u+12]=S[12]-p.x,c.instancesData[u+13]=S[13]-p.y,c.instancesData[u+14]=S[14]-p.z,u+=16,m++}if(o){if(n.INSTANCEDMESH_SORT_TRANSPARENT&&this._scene.activeCamera&&((v=e.getMaterial())!=null&&v.needAlphaBlendingForMesh(e.getRenderingMesh()))){let S=this._scene.activeCamera.globalPosition;for(let E=0;EE._distanceToCamera>A._distanceToCamera?-1:E._distanceToCamera1&&r.activeCamera===r.activeCameras[0]||a<=1,l=this._occlusionDataStorage&&this._occlusionDataStorage.occlusionForRenderPassId!==-1&&this._occlusionDataStorage.occlusionForRenderPassId!==s.currentRenderPassId;if(o&&this._checkOcclusionQuery(l)&&!this._occlusionDataStorage.forceRenderingWhenOccluded)return this;let c=this._getInstancesRenderList(e._id,!!i);if(c.mustReturn)return this;if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let f=0,d=null;this.ignoreCameraMaxZ&&r.activeCamera&&!r._isInIntermediateRendering()&&(f=r.activeCamera.maxZ,d=r.activeCamera,r.activeCamera.maxZ=0,r.updateTransformMatrix(!0)),this._internalMeshDataInfo._onBeforeRenderObservable&&this._internalMeshDataInfo._onBeforeRenderObservable.notifyObservers(this);let h=e.getRenderingMesh(),u=c.hardwareInstancedRendering[e._id]||h.hasThinInstances||!!this._userInstancedBuffersStorage&&!e.getMesh()._internalAbstractMeshDataInfo._actAsRegularMesh,m=this._instanceDataStorage,_=e.getMaterial();if(!_)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(!m.isFrozen||!this._internalMeshDataInfo._effectiveMaterial||this._internalMeshDataInfo._effectiveMaterial!==_){if(_._storeEffectOnSubMeshes){if(!_.isReadyForSubMesh(this,e,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this}else if(!_.isReady(this,u))return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;this._internalMeshDataInfo._effectiveMaterial=_}else if(_._storeEffectOnSubMeshes&&!((C=e._drawWrapper)!=null&&C._wasPreviouslyReady)||!_._storeEffectOnSubMeshes&&!_._getDrawWrapper()._wasPreviouslyReady)return d&&(d.maxZ=f,r.updateTransformMatrix(!0)),this;if(t){let w=this._internalMeshDataInfo._effectiveMaterial;if(w.alphaModes.length===1)s.setAlphaMode(w.alphaMode);else for(let G=0;Gg&&r++,E!==0&&T++,v+=E,g=E}if(c[T]++,T>a&&(a=T),v===0)s++;else{let S=1/v,E=0;for(let A=0;Af&&o++}}let d=this.skeleton.bones.length,h=this.getVerticesData(L.MatricesIndicesKind),u=this.getVerticesData(L.MatricesIndicesExtraKind),m=0;for(let p=0;p=d||v<0)&&m++}let _="Number of Weights = "+i/4+` Maximum influences = `+a+` Missing Weights = `+s+` Not Sorted = `+r+` Not Normalized = `+o+` WeightCounts = [`+c+`] Number of bones = `+d+` -Bad Bone Indices = `+m;return{skinned:!0,valid:s===0&&o===0&&m===0,report:_}}_checkDelayState(){let e=this.getScene();return this._geometry?this._geometry.load(e):this.delayLoadState===4&&(this.delayLoadState=2,this._queueLoad(e)),this}_queueLoad(e){e.addPendingData(this);let t=this.delayLoadingFile.indexOf(".babylonbinarymeshdata")!==-1;return pe.LoadFile(this.delayLoadingFile,i=>{i instanceof ArrayBuffer?this._delayLoadingFunction(i,this):this._delayLoadingFunction(JSON.parse(i),this);for(let r of this.instances)r.refreshBoundingInfo(),r._syncSubMeshes();this.delayLoadState=1,e.removePendingData(this)},()=>{},e.offlineProvider,t),this}isInFrustum(e){return this.delayLoadState===2||!super.isInFrustum(e)?!1:(this._checkDelayState(),!0)}setMaterialById(e){let t=this.getScene().materials,i;for(i=t.length-1;i>-1;i--)if(t[i].id===e)return this.material=t[i],this;let r=this.getScene().multiMaterials;for(i=r.length-1;i>-1;i--)if(r[i].id===e)return this.material=r[i],this;return this}getAnimatables(){let e=[];return this.material&&e.push(this.material),this.skeleton&&e.push(this.skeleton),e}bakeTransformIntoVertices(e){if(!this.isVerticesDataPresent(L.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(L.PositionKind),r=b.Zero(),s;for(s=0;s{let h=d.width,u=d.height,_=this.getEngine().createCanvas(h,u).getContext("2d");_.drawImage(d,0,0);let p=_.getImageData(0,0,h,u).data;this.applyDisplacementMapFromBuffer(p,h,u,t,i,s,a,o),r&&r(this)};return pe.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(L.PositionKind)||!this.isVerticesDataPresent(L.NormalKind)||!this.isVerticesDataPresent(L.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(L.PositionKind,!0,!0),f=this.getVerticesData(L.NormalKind),d=this.getVerticesData(L.UVKind),h=b.Zero(),u=b.Zero(),m=we.Zero();a=a||we.Zero(),o=o||new we(1,1);for(let _=0;_{var c;return!((c=this.getVertexBuffer(l))!=null&&c.getIsInstanced())}),i=this.getIndices(!1,!0),r={},s=(l,c)=>{let f=new Float32Array(i.length*c),d=0;for(let h=0;h{let o=r.length-1-a,l=r[o];for(let c=0;c{for(let o=0;o-1&&(r._waitingMorphTargetManagerId=e.morphTargetManagerId),e.skeletonId!==void 0&&e.skeletonId!==null&&(r.skeleton=t.getLastSkeletonById(e.skeletonId),r._waitingSkeletonId=e.skeletonId,e.numBoneInfluencers&&(r.numBoneInfluencers=e.numBoneInfluencers)),e.skeletonUniqueId!==void 0&&e.skeletonUniqueId!==null&&(r._waitingSkeletonUniqueId=e.skeletonUniqueId),e.animations){for(let a=0;a4,c=l?this.getVerticesData(L.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(L.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),h=b.Zero(),u=new Z,m=new Z,_=0,p;for(let g=0;g0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(a[_+p]*16),v,m),u.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[_+p],v>0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(c[_+p]*16),v,m),u.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[g],i._sourcePositions[g+1],i._sourcePositions[g+2],u,h),h.toArray(r,g),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[g],i._sourceNormals[g+1],i._sourceNormals[g+2],u,h),h.toArray(s,g)),u.reset()}return this.updateVerticesData(L.PositionKind,r),t&&this.updateVerticesData(L.NormalKind,s),this}static MinMax(e){let t=null,i=null;for(let r of e){let a=r.getBoundingInfo().boundingBox;!t||!i?(t=a.minimumWorld.clone(),i=a.maximumWorld.clone()):(t.minimizeInPlace(a.minimumWorld),i.maximizeInPlace(a.maximumWorld))}return!t||!i?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}static Center(e){let t=e instanceof Array?n.MinMax(e):e;return b.Center(t.min,t.max)}static MergeMeshes(e,t=!0,i,r,s,a){return lv(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await dH(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),cH())}static*_MergeMeshesCoroutine(e,t=!0,i,r,s,a,o){if(e=e.filter(Boolean),e.length===0)return null;let l;if(!i){let R=0;for(l=0;l=65536)return ee.Warn("Cannot merge meshes because resulting mesh will have more than 65536 vertices. Please use allow32BitsIndices = true to use 32 bits indices"),null}let c=e[0];a&&(s=!1,e.sort((R,M)=>{var y,C,D,w;return((C=(y=R.material)==null?void 0:y.uniqueId)!=null?C:-1)-((w=(D=M.material)==null?void 0:D.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,h=new Array,u=e[0].sideOrientation;for(l=0;lMath.max(y,C.start+C.count),0);if(a)if(R.material){let y=R.material;if(y instanceof _p){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:Me.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:_,transform:p}=m(e[0]);o&&(yield);let g=new Array(e.length-1);for(let R=1;R{throw Qe("GroundMesh")};q._GoldbergMeshParser=(n,e)=>{throw Qe("GoldbergMesh")};q._LinesMeshParser=(n,e)=>{throw Qe("LinesMesh")};q._GreasedLineMeshParser=(n,e)=>{throw Qe("GreasedLineMesh")};q._GreasedLineRibbonMeshParser=(n,e)=>{throw Qe("GreasedLineRibbonMesh")};q._TrailMeshParser=(n,e)=>{throw Qe("TrailMesh")};q._GaussianSplattingMeshParser=(n,e)=>{throw Qe("GaussianSplattingMesh")};q._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw Qe("GaussianSplattingPartProxyMesh")};q._GaussianSplattingCompoundMeshParser=(n,e)=>{throw Qe("GaussianSplattingCompoundMesh")};Ut("BABYLON.Mesh",q)});var vp,GD=I(()=>{yo();tc();Kn();vp=class{constructor(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this.targetAlpha=null,this._attachedCamera=null,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}get name(){return"AutoRotation"}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set idleRotationSpeed(e){this._idleRotationSpeed=e}get idleRotationSpeed(){return this._idleRotationSpeed}set idleRotationWaitTime(e){this._idleRotationWaitTime=e}get idleRotationWaitTime(){return this._idleRotationWaitTime}set idleRotationSpinupTime(e){this._idleRotationSpinupTime=e}get idleRotationSpinupTime(){return this._idleRotationSpinupTime}get rotationInProgress(){return Math.abs(this._cameraRotationSpeed)>0}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=br.Now,r=0;this._lastFrameTime!=null&&(r=i-this._lastFrameTime),this._lastFrameTime=i,this._applyUserInteraction();let s=i-this._lastInteractionTime-this._idleRotationWaitTime,a=Math.max(Math.min(s/this._idleRotationSpinupTime,1),0);this._cameraRotationSpeed=this._idleRotationSpeed*a,this._attachedCamera&&(this._attachedCamera.alpha-=this._cameraRotationSpeed*(r/1e3))})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null,this._lastFrameTime=null}resetLastInteractionTime(e){this._lastInteractionTime=e!=null?e:br.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){ph();wo=class n{constructor(){this._easingMode=n.EASINGMODE_EASEIN}setEasingMode(e){let t=Math.min(Math.max(e,0),2);this._easingMode=t}getEasingMode(){return this._easingMode}easeInCore(e){throw new Error("You must implement this method")}ease(e){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(e);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-e)}return e>=.5?(1-this.easeInCore((1-e)*2))*.5+.5:this.easeInCore(e*2)*.5}};wo.EASINGMODE_EASEIN=0;wo.EASINGMODE_EASEOUT=1;wo.EASINGMODE_EASEINOUT=2;cR=class extends wo{constructor(e=1){super(),this.amplitude=e}easeInCore(e){let t=Math.max(0,this.amplitude);return Math.pow(e,3)-e*t*Math.sin(3.141592653589793*e)}},fR=class extends wo{constructor(e=2){super(),this.exponent=e}easeInCore(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)}}});var Xf,WD=I(()=>{Xf=class n{constructor(e,t,i){this.name=e,this.from=t,this.to=i}clone(){return new n(this.name,this.from,this.to)}}});var HD,zD,XD,YD,KD,jD,Fo,mt,Yf=I(()=>{ke();zt();jn();$i();WD();_a();fx();_h();Dr();HD=Object.freeze(new Ke(0,0,0,0)),zD=Object.freeze(b.Zero()),XD=Object.freeze(we.Zero()),YD=Object.freeze(nc.Zero()),KD=Object.freeze(Ee.Black()),jD=Object.freeze(new ft(0,0,0,0)),Fo={key:0,repeatCount:0,loopMode:2},mt=class n{static _PrepareAnimation(e,t,i,r,s,a,o,l){let c;if(!isNaN(parseFloat(s))&&isFinite(s)?c=n.ANIMATIONTYPE_FLOAT:s instanceof Ke?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof we?c=n.ANIMATIONTYPE_VECTOR2:s instanceof Ee?c=n.ANIMATIONTYPE_COLOR3:s instanceof ft?c=n.ANIMATIONTYPE_COLOR4:s instanceof nc&&(c=n.ANIMATIONTYPE_SIZE),c==null)return null;let f=new n(e,t,i,c,o),d=[{frame:0,value:s},{frame:r,value:a}];return f.setKeys(d),l!==void 0&&f.setEasingFunction(l),f}static CreateAnimation(e,t,i,r){let s=new n(e+"Animation",e,i,t,n.ANIMATIONLOOPMODE_CONSTANT);return s.setEasingFunction(r),s}static CreateAndStartAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!h||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[h],0,s,h.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,r,s,a,o,l,c,f);return h?t.getScene().beginDirectHierarchyAnimation(t,i,[h],0,a,h.loopMode===1,1,d):null}static CreateMergeAndStartAnimation(e,t,i,r,s,a,o,l,c,f){let d=n._PrepareAnimation(e,i,r,s,a,o,l,c);return d?(t.animations.push(d),t.getScene().beginAnimation(t,0,s,d.loopMode===1,1,f)):null}static MakeAnimationAdditive(e,t,i,r=!1,s){var v,T;let a;typeof t=="object"?a=t:a={referenceFrame:t!=null?t:0,range:i,cloneOriginalAnimation:r,clonedAnimationName:s};let o=e;if(a.cloneOriginalAnimation&&(o=e.clone(),o.name=a.clonedAnimationName||o.name),!o._keys.length)return o;let l=a.referenceFrame&&a.referenceFrame>=0?a.referenceFrame:0,c=0,f=o._keys[0],d=o._keys.length-1,h=o._keys[d],u={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,_=h.frame;if(a.range){let S=o.getRange(a.range);S&&(m=S.from,_=S.to)}else m=(v=a.fromFrame)!=null?v:m,_=(T=a.toFrame)!=null?T:_;if(m!==f.frame&&(c=o.createKeyForFrame(m)),_!==h.frame&&(d=o.createKeyForFrame(_)),o._keys.length===1){let S=o._getKeyValue(o._keys[0]);u.referenceValue=S.clone?S.clone():S}else if(l<=f.frame){let S=o._getKeyValue(f.value);u.referenceValue=S.clone?S.clone():S}else if(l>=h.frame){let S=o._getKeyValue(h.value);u.referenceValue=S.clone?S.clone():S}else{Fo.key=0;let S=o._interpolate(l,Fo);u.referenceValue=S.clone?S.clone():S}o.dataType===n.ANIMATIONTYPE_QUATERNION?u.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(u.referenceValue.decompose(u.referenceScaling,u.referenceQuaternion,u.referencePosition),u.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,g=a.clipKeys?[]:null;for(let S=c;S<=d;S++){let E=o._keys[S];if((g||a.cloneOriginalAnimation)&&(E={frame:E.frame,value:E.value.clone?E.value.clone():E.value,inTangent:E.inTangent,outTangent:E.outTangent,interpolation:E.interpolation,lockedTangent:E.lockedTangent,easingFunction:E.easingFunction},g&&(p===Number.MAX_VALUE&&(p=E.frame),E.frame-=p,g.push(E))),!(S&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&E.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:E.value.decompose(u.keyScaling,u.keyQuaternion,u.keyPosition),u.keyPosition.subtractInPlace(u.referencePosition),u.keyScaling.divideInPlace(u.referenceScaling),u.referenceQuaternion.multiplyToRef(u.keyQuaternion,u.keyQuaternion),Z.ComposeToRef(u.keyScaling,u.keyQuaternion,u.keyPosition,E.value);break;case n.ANIMATIONTYPE_QUATERNION:u.referenceValue.multiplyToRef(E.value,E.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:E.value.subtractToRef(u.referenceValue,E.value);break;case n.ANIMATIONTYPE_SIZE:E.value.width-=u.referenceValue.width,E.value.height-=u.referenceValue.height;break;default:E.value-=u.referenceValue}}return g&&o.setKeys(g,!0),o}static TransitionTo(e,t,i,r,s,a,o,l=null,c=!0,f){if(o<=0)return i[e]=t,l&&l(),null;let d=s*(o/1e3);return a.setKeys(f!=null?f:[{frame:0,value:i[e].clone?i[e].clone():i[e]},{frame:d,value:t}]),i.animations||(i.animations=[]),i.animations.push(a),r.beginAnimation(i,0,d,!1,1,l!=null?l:void 0,void 0,c)}get runtimeAnimations(){return this._runtimeAnimations}get hasRunningRuntimeAnimations(){for(let e of this._runtimeAnimations)if(!e.isStopped())return!0;return!1}constructor(e,t,i,r,s,a){this.name=e,this.targetProperty=t,this.framePerSecond=i,this.dataType=r,this.loopMode=s,this.enableBlending=a,this._easingFunction=null,this._runtimeAnimations=new Array,this._events=new Array,this.blendingSpeed=.01,this._ranges={},this._coreAnimation=null,this.targetPropertyPath=t.split("."),this.dataType=r,this.loopMode=s===void 0?n.ANIMATIONLOOPMODE_CYCLE:s,this.uniqueId=n._UniqueIdGenerator++}toString(e){let t="Name: "+this.name+", property: "+this.targetProperty;if(t+=", datatype: "+["Float","Vector3","Quaternion","Matrix","Color3","Vector2"][this.dataType],t+=", nKeys: "+(this._keys?this._keys.length:"none"),t+=", nRanges: "+(this._ranges?Object.keys(this._ranges).length:"none"),e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i||(t+=", "),i=!1,t+=r;t+="}"}return t}addEvent(e){this._events.push(e),this._events.sort((t,i)=>t.frame-i.frame)}removeEvents(e){for(let t=0;t=0;a--)this._keys[a].frame>=r&&this._keys[a].frame<=s&&this._keys.splice(a,1)}this._ranges[e]=null}}getRange(e){return this._ranges[e]}getKeys(){return this._keys}getHighestFrame(){let e=0;for(let t=0,i=this._keys.length;t0)return t.highLimitValue.clone?t.highLimitValue.clone():t.highLimitValue;let r=this._keys,s;if(this._coreAnimation)s=this._coreAnimation._key;else{let _=r.length;for(s=t.key;s>=0&&e=r[s+1].frame;)++s;if(t.key=s,s<0)return i?void 0:this._getKeyValue(r[0].value);if(s+1>_-1)return i?void 0:this._getKeyValue(r[_-1].value);this._key=s}let a=r[s],o=r[s+1];if(i&&(e===a.frame||e===o.frame))return;let l=this._getKeyValue(a.value),c=this._getKeyValue(o.value);if(a.interpolation===1)return o.frame>e?l:c;let f=a.outTangent!==void 0&&o.inTangent!==void 0,d=o.frame-a.frame,h=(e-a.frame)/d,u=a.easingFunction||this.getEasingFunction();switch(u&&(h=u.ease(h)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let _=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,h):this.floatInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+_}break}case n.ANIMATIONTYPE_QUATERNION:{let _=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.quaternionInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.addInPlace((t.offsetValue||HD).scale(t.repeatCount))}return _}case n.ANIMATIONTYPE_VECTOR3:{let _=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||zD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let _=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector2InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||XD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_SIZE:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return this.sizeInterpolateFunction(l,c,h);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,h).add((t.offsetValue||YD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let _=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||KD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let _=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color4InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||jD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_MATRIX:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return n.AllowMatricesInterpolation?this.matrixInterpolateFunction(l,c,h,t.workValue):l;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return l}break}}return 0}matrixInterpolateFunction(e,t,i,r){return n.AllowMatrixDecomposeForInterpolation?r?(Z.DecomposeLerpToRef(e,t,i,r),r):Z.DecomposeLerp(e,t,i):r?(Z.LerpToRef(e,t,i,r),r):Z.Lerp(e,t,i)}clone(e=!1){let t=new n(this.name,this.targetPropertyPath.join("."),this.framePerSecond,this.dataType,this.loopMode);if(t.enableBlending=this.enableBlending,t.blendingSpeed=this.blendingSpeed,this._keys&&t.setKeys(this._keys,!1,e),this._ranges){t._ranges={};for(let i in this._ranges){let r=this._ranges[i];r&&(t._ranges[i]=r.clone())}}return t}setKeys(e,t=!1,i=!1){if(t)this._keys=e;else if(this._keys=e.slice(0),i)for(let r=0;r=2&&(l=o.values[1]),o.values.length>=3&&(c=o.values[2]),o.values.length>=4&&(f=o.values[3]);break;case n.ANIMATIONTYPE_QUATERNION:if(s=Ke.FromArray(o.values),o.values.length>=8){let h=Ke.FromArray(o.values.slice(4,8));h.equals(Ke.Zero())||(l=h)}if(o.values.length>=12){let h=Ke.FromArray(o.values.slice(8,12));h.equals(Ke.Zero())||(c=h)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=Z.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=Ee.FromArray(o.values),o.values[3]&&(l=Ee.FromArray(o.values[3])),o.values[4]&&(c=Ee.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=ft.FromArray(o.values),o.values[4]&&(l=ft.FromArray(o.values[4])),o.values[5]&&(c=ft.FromArray(o.values[5])),o.values[6]&&(f=ft.FromArray(o.values[6]));break;case n.ANIMATIONTYPE_VECTOR3:default:s=b.FromArray(o.values),o.values[3]&&(l=b.FromArray(o.values[3])),o.values[4]&&(c=b.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break}let d={};d.frame=o.frame,d.value=s,l!=null&&(d.inTangent=l),c!=null&&(d.outTangent=c),f!=null&&(d.interpolation=f),r.push(d)}if(t.setKeys(r),e.ranges)for(a=0;a{let s=new wr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a=JSON.parse(s.responseText);if(a.animations&&(a=a.animations),a.length){let o=[];for(let l of a)o.push(this.Parse(l));i(o)}else{let o=this.Parse(a);e&&(o.name=e),i(o)}}else r("Unable to load the animation")}),s.open("GET",t),s.send()})}static async ParseFromSnippetAsync(e){return await new Promise((t,i)=>{let r=new wr;r.addEventListener("readystatechange",()=>{if(r.readyState==4)if(r.status==200){let s=JSON.parse(JSON.parse(r.responseText).jsonPayload);if(s.animations){let a=JSON.parse(s.animations),o=[];for(let l of a.animations){let c=this.Parse(l);c.snippetId=e,o.push(c)}t(o)}else{let a=JSON.parse(s.animation),o=this.Parse(a);o.snippetId=e,t(o)}}else i("Unable to load the snippet "+e)}),r.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),r.send()})}};mt._UniqueIdGenerator=0;mt.AllowMatricesInterpolation=!1;mt.AllowMatrixDecomposeForInterpolation=!0;mt.InheritOriginalValueFromActiveAnimations=!1;mt.SnippetUrl="https://snippet.babylonjs.com";mt.ANIMATIONTYPE_FLOAT=0;mt.ANIMATIONTYPE_VECTOR3=1;mt.ANIMATIONTYPE_QUATERNION=2;mt.ANIMATIONTYPE_MATRIX=3;mt.ANIMATIONTYPE_COLOR3=4;mt.ANIMATIONTYPE_COLOR4=7;mt.ANIMATIONTYPE_VECTOR2=5;mt.ANIMATIONTYPE_SIZE=6;mt.ANIMATIONLOOPMODE_RELATIVE=0;mt.ANIMATIONLOOPMODE_CYCLE=1;mt.ANIMATIONLOOPMODE_CONSTANT=2;mt.ANIMATIONLOOPMODE_YOYO=4;mt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;mt.CreateFromSnippetAsync=mt.ParseFromSnippetAsync;Ut("BABYLON.Animation",mt);Ei._AnimationRangeFactory=(n,e,t)=>new Xf(n,e,t)});var Ep,yH=I(()=>{kD();Yf();Ep=class n{constructor(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._attachedCamera=null,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}get name(){return"Bouncing"}get autoTransitionRange(){return this._autoTransitionRange}set autoTransitionRange(e){if(this._autoTransitionRange===e)return;this._autoTransitionRange=e;let t=this._attachedCamera;t&&(e?this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(i=>{if(i&&(i.computeWorldMatrix(!0),i.getBoundingInfo)){let r=i.getBoundingInfo().diagonalLength;this.lowerRadiusTransitionRange=r*.05,this.upperRadiusTransitionRange=r*.05}}):this._onMeshTargetChangedObserver&&t.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e,this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._attachedCamera&&(this._isRadiusAtLimit(this._attachedCamera.lowerRadiusLimit)&&this._applyBoundRadiusAnimation(this.lowerRadiusTransitionRange),this._isRadiusAtLimit(this._attachedCamera.upperRadiusLimit)&&this._applyBoundRadiusAnimation(this.upperRadiusTransitionRange))})}detach(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)}_isRadiusAtLimit(e){return this._attachedCamera?this._attachedCamera.radius===e&&!this._radiusIsAnimating:!1}_applyBoundRadiusAnimation(e){if(!this._attachedCamera)return;this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=mt.CreateAnimation("radius",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;let t=mt.TransitionTo("radius",this._attachedCamera.radius+e,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,()=>this._clearAnimationLocks());t&&this._animatables.push(t)}_clearAnimationLocks(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()}};Ep.EasingFunction=new cR(.3);Ep.EasingMode=wo.EASINGMODE_EASEOUT});var Kf,CH=I(()=>{kD();mi();yo();tc();ke();Yf();Kf=class n{constructor(){this.onTargetFramingAnimationEndObservable=new te,this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._attachedCamera=null,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}get name(){return"Framing"}set mode(e){this._mode=e}get mode(){return this._mode}set radiusScale(e){this._radiusScale=e}get radiusScale(){return this._radiusScale}set positionScale(e){this._positionScale=e}get positionScale(){return this._positionScale}set defaultElevation(e){this._defaultElevation=e}get defaultElevation(){return this._defaultElevation}set elevationReturnTime(e){this._elevationReturnTime=e}get elevationReturnTime(){return this._elevationReturnTime}set elevationReturnWaitTime(e){this._elevationReturnWaitTime=e}get elevationReturnWaitTime(){return this._elevationReturnWaitTime}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set framingTime(e){this._framingTime=e}get framingTime(){return this._framingTime}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onMeshTargetChangedObserver=e.onMeshTargetChangedObservable.add(i=>{i&&i.getBoundingInfo&&this.zoomOnMesh(i,void 0,()=>{this.onTargetFramingAnimationEndObservable.notifyObservers()})}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._applyUserInteraction(),this._maintainCameraAboveGround()})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}zoomOnMesh(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,t,i)}zoomOnMeshHierarchy(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,t,i)}zoomOnMeshesHierarchy(e,t=!1,i=null){let r=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let a=0;a{this.stopAllAnimations(),r&&r(),this._attachedCamera&&this._attachedCamera.useInputToRestoreState&&this._attachedCamera.storeState()}),f&&this._animatables.push(f),!0}_calculateLowerRadiusFromModelBoundingSphere(e,t){let i=this._attachedCamera;if(!i)return 0;let r=i._calculateLowerRadiusFromModelBoundingSphere(e,t,this._radiusScale);return i.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(r=ri.upperRadiusLimit?i.upperRadiusLimit:r),r}_maintainCameraAboveGround(){if(this._elevationReturnTime<0)return;let e=br.Now-this._lastInteractionTime,t=Math.PI*.5-this._defaultElevation,i=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>i&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=mt.CreateAnimation("beta",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=mt.TransitionTo("beta",t,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,()=>{this._clearAnimationLocks(),this.stopAllAnimations()});r&&this._animatables.push(r)}}_clearAnimationLocks(){this._betaIsAnimating=!1}_applyUserInteraction(){this.isUserIsMoving&&(this._lastInteractionTime=br.Now,this.stopAllAnimations(),this._clearAnimationLocks())}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()}get isUserIsMoving(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1}};Kf.EasingFunction=new fR;Kf.EasingMode=wo.EASINGMODE_EASEINOUT;Kf.IgnoreBoundsSizeMode=0;Kf.FitFrustumSidesMode=1});var dR,ZD,Zs,qD=I(()=>{Wt();kt();Rl();ke();Kn();Mm();_a();Ei.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Zs(n,b.Zero(),e));dR=Z.Zero(),ZD=Ke.Identity(),Zs=class n extends gt{constructor(e,t,i,r=!0){super(e,t,i,r),this.cameraDirection=new b(0,0,0),this.cameraRotation=new we(0,0),this.updateUpVectorFromRotation=!1,this.speed=2,this.noRotationConstraint=!1,this.invertRotation=!1,this.inverseRotationSpeed=.2,this._panningEpsilon=Ft,this._rotationEpsilon=Ft,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=Z.Zero(),this._cameraTransformMatrix=Z.Zero(),this._cameraRotationMatrix=Z.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new Ke,this._deferredRotationUpdate=new b,this._deferredUpdated=!1,this._deferOnly=!1,this._cachedRotationZ=0,this._cachedQuaternionRotationZ=0,this._referencePoint=b.Forward(this.getScene().useRightHandedSystem),this.rotation=new b(0,this.getScene().useRightHandedSystem?Math.PI:0,0)}getFrontPosition(e){this.getWorldMatrix();let t=$.Vector3[0],i=$.Vector3[1];return i.set(0,0,this._scene.useRightHandedSystem?-1:1),this.getDirectionToRef(i,t),t.scaleInPlace(e),this.globalPosition.add(t)}_getLockedTargetPosition(){if(!this.lockedTarget)return null;if(this.lockedTarget.absolutePosition){let e=this.lockedTarget;e.computeWorldMatrix().getTranslationToRef(e.absolutePosition)}return this.lockedTarget.absolutePosition||this.lockedTarget}storeState(){return this._storedPosition=this.position.clone(),this._storedRotation=this.rotation.clone(),this.rotationQuaternion&&(this._storedRotationQuaternion=this.rotationQuaternion.clone()),super.storeState()}_restoreStateValues(){return super._restoreStateValues()?(this.position=this._storedPosition.clone(),this.rotation=this._storedRotation.clone(),this.rotationQuaternion&&this._storedRotationQuaternion&&(this.rotationQuaternion=this._storedRotationQuaternion.clone()),this.cameraDirection.copyFromFloats(0,0,0),this.cameraRotation.copyFromFloats(0,0),!0):!1}_initCache(){super._initCache(),this._cache.lockedTarget=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotation=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotationQuaternion=new Ke(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}_updateCache(e){e||super._updateCache();let t=this._getLockedTargetPosition();t?this._cache.lockedTarget?this._cache.lockedTarget.copyFrom(t):this._cache.lockedTarget=t.clone():this._cache.lockedTarget=null,this._cache.rotation.copyFrom(this.rotation),this.rotationQuaternion&&this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion)}_isSynchronizedViewMatrix(){if(!super._isSynchronizedViewMatrix())return!1;let e=this._getLockedTargetPosition();return(this._cache.lockedTarget?this._cache.lockedTarget.equals(e):!e)&&(this.rotationQuaternion?this.rotationQuaternion.equals(this._cache.rotationQuaternion):this._cache.rotation.equals(this.rotation))}_computeLocalCameraSpeed(){let e=this.getEngine();return this.speed*Math.sqrt(e.getDeltaTime()/(e.getFps()*100))}setTarget(e){this.upVector.normalize(),this._initialFocalDistance=e.subtract(this.position).length(),this.position.z===e.z&&(this.position.z+=Ft),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?Z.LookAtRHToRef(this.position,e,b.UpReadOnly,dR):Z.LookAtLHToRef(this.position,e,b.UpReadOnly,dR),dR.invert();let t=this.rotationQuaternion||ZD;Ke.FromRotationMatrixToRef(dR,t),t.toEulerAnglesToRef(this.rotation),this.rotation.z=0}get target(){return this.getTarget()}set target(e){this.setTarget(e)}getTarget(){return this._currentTarget}_decideIfNeedsToMove(){return Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){if(this.parent){this.parent.getWorldMatrix().invertToRef($.Matrix[0]),b.TransformNormalToRef(this.cameraDirection,$.Matrix[0],$.Vector3[0]),this._deferredPositionUpdate.addInPlace($.Vector3[0]),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate);return}this._deferredPositionUpdate.addInPlace(this.cameraDirection),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate)}_checkInputs(){let e=this.invertRotation?-this.inverseRotationSpeed:1,t=this._decideIfNeedsToMove(),i=this.cameraRotation.x||this.cameraRotation.y;this._deferredUpdated=!1,this._deferredRotationUpdate.copyFrom(this.rotation),this._deferredPositionUpdate.copyFrom(this.position),this.rotationQuaternion&&this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion),t&&this._updatePosition(),i&&(this.rotationQuaternion&&this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate),this._deferredRotationUpdate.x+=this.cameraRotation.x*e,this._deferredRotationUpdate.y+=this.cameraRotation.y*e,this.noRotationConstraint||(this._deferredRotationUpdate.x>1.570796&&(this._deferredRotationUpdate.x=1.570796),this._deferredRotationUpdate.x<-1.570796&&(this._deferredRotationUpdate.x=-1.570796)),this._deferOnly?this._deferredUpdated=!0:this.rotation.copyFrom(this._deferredRotationUpdate),this.rotationQuaternion&&this._deferredRotationUpdate.lengthSquared()&&(Ke.RotationYawPitchRollToRef(this._deferredRotationUpdate.y,this._deferredRotationUpdate.x,this._deferredRotationUpdate.z,this._deferredRotationQuaternionUpdate),this._deferOnly?this._deferredUpdated=!0:this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate)));let r=this.speed*this._panningEpsilon,s=this.speed*this._rotationEpsilon;t&&(Math.abs(this.cameraDirection.x){Lt();Dr();Rl();is={},Sp=class{constructor(e){this.attachedToElement=!1,this.attached={},this.camera=e,this.checkInputs=()=>{}}add(e){let t=e.getSimpleName();if(this.attached[t]){ee.Warn("camera input of type "+t+" already exists on camera");return}this.attached[t]=e,e.camera=this.camera,e.checkInputs&&(this.checkInputs=this._addCheckInputs(e.checkInputs.bind(e))),this.attachedToElement&&e.attachControl(this.noPreventDefault)}remove(e){for(let t in this.attached){let i=this.attached[t];if(i===e){i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck();return}}}removeByType(e){for(let t in this.attached){let i=this.attached[t];i.getClassName()===e&&(i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck())}}_addCheckInputs(e){let t=this.checkInputs;return()=>{t(),e()}}attachInput(e){this.attachedToElement&&e.attachControl(this.noPreventDefault)}attachElement(e=!1){if(!this.attachedToElement){e=gt.ForceAttachControlToAlwaysPreventDefault?!1:e,this.attachedToElement=!0,this.noPreventDefault=e;for(let t in this.attached)this.attached[t].attachControl(e)}}detachElement(e=!1){for(let t in this.attached)this.attached[t].detachControl(),e&&(this.attached[t].camera=null);this.attachedToElement=!1}rebuildInputCheck(){this.checkInputs=()=>{};for(let e in this.attached){let t=this.attached[e];t.checkInputs&&(this.checkInputs=this._addCheckInputs(t.checkInputs.bind(t)))}}clear(){this.attachedToElement&&this.detachElement(!0),this.attached={},this.attachedToElement=!1,this.checkInputs=()=>{}}serialize(e){let t={};for(let i in this.attached){let r=this.attached[i],s=nt.Serialize(r);t[r.getClassName()]=s}e.inputsmgr=t}parse(e){let t=e.inputsmgr;if(t){this.clear();for(let i in t){let r=is[i];if(r){let s=t[i],a=nt.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=is[this.attached[i].getClassName()];if(r){let s=nt.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var dv,PH=I(()=>{Wt();kt();wi();yo();dv=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement(),r=0,s=null;this._pointA=null,this._pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=o=>{var d,h;let l=o.event,c=l.pointerType==="touch";if(o.type!==at.POINTERMOVE&&this.buttons.indexOf(l.button)===-1)return;let f=l.target;if(this._altKey=l.altKey,this._ctrlKey=l.ctrlKey,this._metaKey=l.metaKey,this._shiftKey=l.shiftKey,this._buttonsPressed=l.buttons,t.isPointerLock){let u=l.movementX,m=l.movementY;this.onTouch(null,u,m),this._pointA=null,this._pointB=null}else{if(o.type!==at.POINTERDOWN&&o.type!==at.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((h=this._pointB)==null?void 0:h.pointerId)!==l.pointerId)return;if(o.type===at.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(u){}if(this._pointA===null)this._pointA={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else if(this._pointB===null)this._pointB={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else return;this._currentMousePointerIdDown===-1&&!c&&(this._currentMousePointerIdDown=l.pointerId),this.onButtonDown(l),e||(l.preventDefault(),i&&i.focus())}else if(o.type===at.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===at.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(u){}c||(this._pointB=null),t._badOS?this._pointA=this._pointB=null:this._pointB&&this._pointA&&this._pointA.pointerId==l.pointerId?(this._pointA=this._pointB,this._pointB=null):this._pointA&&this._pointB&&this._pointB.pointerId==l.pointerId?this._pointB=null:this._pointA=this._pointB=null,(r!==0||s)&&(this.onMultiTouch(this._pointA,this._pointB,r,0,s,null),r=0,s=null),this._currentMousePointerIdDown=-1,this.onButtonUp(l),e||l.preventDefault()}else if(o.type===at.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let u=l.clientX-this._pointA.x,m=l.clientY-this._pointA.y;this._pointA.x=l.clientX,this._pointA.y=l.clientY,this.onTouch(this._pointA,u,m)}else if(this._pointA&&this._pointB){let u=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;u.x=l.clientX,u.y=l.clientY;let m=this._pointA.x-this._pointB.x,_=this._pointA.y-this._pointB.y,p=m*m+_*_,g={x:(this._pointA.x+this._pointB.x)/2,y:(this._pointA.y+this._pointB.y)/2,pointerId:l.pointerId,type:o.type};this.onMultiTouch(this._pointA,this._pointB,r,p,s,g),s=g,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE|at.POINTERDOUBLETAP),this._onLostFocus=()=>{this._pointA=this._pointB=null,r=0,s=null,this.onLostFocus()},this._contextMenuBind=o=>this.onContextMenu(o),i&&i.addEventListener("contextmenu",this._contextMenuBind,!1);let a=this.camera.getScene().getEngine().getHostWindow();a&&pe.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&pe.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._contextMenuBind){let e=this.camera.getScene().getEngine().getInputElement();e&&e.removeEventListener("contextmenu",this._contextMenuBind)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._currentMousePointerIdDown=-1}getClassName(){return"BaseCameraPointersInput"}getSimpleName(){return"pointers"}onDoubleTap(e){}onTouch(e,t,i){}onMultiTouch(e,t,i,r,s,a){}onContextMenu(e){e.preventDefault()}onButtonDown(e){}onButtonUp(e){}onLostFocus(){}};P([F()],dv.prototype,"buttons",void 0)});var Ph,DH=I(()=>{Wt();kt();PH();Ph=class extends dv{constructor(){super(...arguments),this.pinchZoom=!0,this.multiTouchPanning=!0,this.multiTouchPanAndZoom=!0,this._isPinching=!1,this._twoFingerActivityCount=0,this._shouldStartPinchZoom=!1}_computePinchZoom(e,t){}_computeMultiTouchPanning(e,t){}onMultiTouch(e,t,i,r,s,a){i===0&&s===null||r===0&&a===null||(this.multiTouchPanAndZoom?(this._computePinchZoom(i,r),this._computeMultiTouchPanning(s,a)):this.multiTouchPanning&&this.pinchZoom?(this._twoFingerActivityCount++,this._isPinching||this._shouldStartPinchZoom?(this._computePinchZoom(i,r),this._isPinching=!0):this._computeMultiTouchPanning(s,a)):this.multiTouchPanning?this._computeMultiTouchPanning(s,a):this.pinchZoom&&this._computePinchZoom(i,r))}onButtonUp(e){this._twoFingerActivityCount=0,this._isPinching=!1}onLostFocus(){this._twoFingerActivityCount=0,this._isPinching=!1}};P([F()],Ph.prototype,"pinchZoom",void 0);P([F()],Ph.prototype,"multiTouchPanning",void 0);P([F()],Ph.prototype,"multiTouchPanAndZoom",void 0)});var ga,LH=I(()=>{Wt();kt();Cl();DH();ga=class n extends Ph{constructor(){super(...arguments),this.buttons=[0,1,2],this.angularSensibilityX=1e3,this.angularSensibilityY=1e3,this.pinchPrecision=12,this.pinchDeltaPercentage=0,this.useNaturalPinchZoom=!1,this.panningSensibility=1e3,this.pinchInwards=!0,this._isPanClick=!1}getClassName(){return"ArcRotateCameraPointersInput"}_computeMultiTouchPanning(e,t){if(this.panningSensibility!==0&&e&&t){let i=t.x-e.x,r=t.y-e.y;this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility}}_computePinchZoom(e,t){let i=this.camera.radius||n.MinimumRadiusForPinch;this.useNaturalPinchZoom?this.camera.radius=i*Math.sqrt(e)/Math.sqrt(t):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(t-e)*.001*i*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(t-e)/(this.pinchPrecision*(this.pinchInwards?1:-1)*(this.angularSensibilityX+this.angularSensibilityY)/2)}onTouch(e,t,i){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-t/this.panningSensibility,this.camera.inertialPanningY+=i/this.panningSensibility):(this.camera.inertialAlphaOffset-=t/this.angularSensibilityX,this.camera.inertialBetaOffset-=i/this.angularSensibilityY)}onDoubleTap(){this.camera.useInputToRestoreState&&this.camera.restoreState()}onMultiTouch(e,t,i,r,s,a){this._shouldStartPinchZoom=this._twoFingerActivityCount<20&&Math.abs(Math.sqrt(r)-Math.sqrt(i))>this.camera.pinchToPanMaxDistance,super.onMultiTouch(e,t,i,r,s,a)}onButtonDown(e){this._isPanClick=e.button===this.camera._panningMouseButton,super.onButtonDown(e)}onButtonUp(e){super.onButtonUp(e)}onLostFocus(){this._isPanClick=!1,super.onLostFocus()}};ga.MinimumRadiusForPinch=.001;P([F()],ga.prototype,"buttons",void 0);P([F()],ga.prototype,"angularSensibilityX",void 0);P([F()],ga.prototype,"angularSensibilityY",void 0);P([F()],ga.prototype,"pinchPrecision",void 0);P([F()],ga.prototype,"pinchDeltaPercentage",void 0);P([F()],ga.prototype,"useNaturalPinchZoom",void 0);P([F()],ga.prototype,"panningSensibility",void 0);is.ArcRotateCameraPointersInput=ga});var qs,OH=I(()=>{Wt();kt();Cl();wx();wi();qs=class{constructor(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===Co.KEYDOWN)this._ctrlPressed=i.ctrlKey,this._altPressed=i.altKey,(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),i.preventDefault&&(e||i.preventDefault()));else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),i.preventDefault&&(e||i.preventDefault())}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Wt();kt();Cl();yo();Dm();ke();Kn();Fx();jn();wi();qfe=40,jf=class{constructor(){this.wheelPrecision=3,this.zoomToMouseLocation=!1,this.wheelDeltaPercentage=0,this.customComputeDeltaFromMouseWheel=null,this._viewOffset=new b(0,0,0),this._globalOffset=new b(0,0,0),this._inertialPanning=b.Zero()}_computeDeltaFromMouseWheelLegacyEvent(e,t){let i,r=e*.01*this.wheelDeltaPercentage*t;return e>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Po.DOM_DELTA_LINE?qfe:1,a=-(i.deltaY*s);if(this.customComputeDeltaFromMouseWheel)r=this.customComputeDeltaFromMouseWheel(a,this,i);else if(this.wheelDeltaPercentage){if(r=this._computeDeltaFromMouseWheelLegacyEvent(a,this.camera.radius),r>0){let o=this.camera.radius,l=this.camera.inertialRadiusOffset+r;for(let c=0;c<20&&!(o<=l||Math.abs(l*this.camera.inertia)<.001);c++)o-=l,l*=this.camera.inertia;o=Bt(o,0,Number.MAX_VALUE),r=this._computeDeltaFromMouseWheelLegacyEvent(a,o)}}else r=a/(this.wheelPrecision*40);r&&(this.zoomToMouseLocation?(this._hitPlane||this._updateHitPlane(),this._zoomToMouse(r)):this.camera.inertialRadiusOffset+=r),i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,at.POINTERWHEEL),this.zoomToMouseLocation&&this._inertialPanning.setAll(0)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null)}checkInputs(){if(!this.zoomToMouseLocation)return;let e=this.camera;0+e.inertialAlphaOffset+e.inertialBetaOffset+e.inertialRadiusOffset&&(this._updateHitPlane(),e.target.addInPlace(this._inertialPanning),this._inertialPanning.scaleInPlace(e.inertia),this._zeroIfClose(this._inertialPanning))}getClassName(){return"ArcRotateCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}_updateHitPlane(){let e=this.camera,t=e.target.subtract(e.position);this._hitPlane=Ao.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,Z.Identity(),e,!1);(e.targetScreenOffset.x!==0||e.targetScreenOffset.y!==0)&&(this._viewOffset.set(e.targetScreenOffset.x,e.targetScreenOffset.y,0),e.getViewMatrix().invertToRef(e._cameraTransformMatrix),this._globalOffset=b.TransformNormal(this._viewOffset,e._cameraTransformMatrix),i.origin.addInPlace(this._globalOffset));let r=0;return this._hitPlane&&(r=(s=i.intersectsPlane(this._hitPlane))!=null?s:0),i.origin.addInPlace(i.direction.scaleInPlace(r))}_zoomToMouse(e){var l,c;let t=this.camera,i=1-t.inertia;if(t.lowerRadiusLimit){let f=(l=t.lowerRadiusLimit)!=null?l:0;t.radius-(t.inertialRadiusOffset+e)/if&&(e=(t.radius-f)*i-t.inertialRadiusOffset)}let s=e/i/t.radius,a=this._getPosition(),o=$.Vector3[6];a.subtractToRef(t.target,o),o.scaleInPlace(s),o.scaleInPlace(i),this._inertialPanning.addInPlace(o),t.inertialRadiusOffset+=e}_zeroIfClose(e){Math.abs(e.x){LH();OH();NH();Cl();hR=class extends Sp{constructor(e){super(e)}addMouseWheel(){return this.add(new jf),this}addPointers(){return this.add(new ga),this}addKeyboard(){return this.add(new qs),this}}});function Qfe(n){let e=Math.PI/2;return n.x===0&&n.z===0||(e=Math.acos(n.x/Math.sqrt(Math.pow(n.x,2)+Math.pow(n.z,2)))),n.z<0&&(e=2*Math.PI-e),e}function $fe(n,e){return Math.acos(n/e)}function rs(n,e){return isNaN(n)?e:n}var Si,uR=I(()=>{Wt();kt();mi();ke();jn();_a();Fi();GD();yH();CH();Rl();qD();wH();Kn();wi();$i();Ei.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new Si(n,0,0,1,b.Zero(),e));Si=class n extends Zs{get target(){return this._target}set target(e){this.setTarget(e)}get targetHost(){return this._targetHost}set targetHost(e){e&&this.setTarget(e)}getTarget(){return this.target}get position(){return this._position}set position(e){this.setPosition(e)}set upVector(e){this._upToYMatrix||(this._yToUpMatrix=new Z,this._upToYMatrix=new Z,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){Z.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),Z.RotationAlignToRef(this._upVector,b.UpReadOnly,this._upToYMatrix)}get angularSensibilityX(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0}set angularSensibilityX(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityX=e)}get angularSensibilityY(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0}set angularSensibilityY(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityY=e)}get pinchPrecision(){let e=this.inputs.attached.pointers;return e?e.pinchPrecision:0}set pinchPrecision(e){let t=this.inputs.attached.pointers;t&&(t.pinchPrecision=e)}get pinchDeltaPercentage(){let e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0}set pinchDeltaPercentage(e){let t=this.inputs.attached.pointers;t&&(t.pinchDeltaPercentage=e)}get useNaturalPinchZoom(){let e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1}set useNaturalPinchZoom(e){let t=this.inputs.attached.pointers;t&&(t.useNaturalPinchZoom=e)}get panningSensibility(){let e=this.inputs.attached.pointers;return e?e.panningSensibility:0}set panningSensibility(e){let t=this.inputs.attached.pointers;t&&(t.panningSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get wheelPrecision(){let e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0}set wheelPrecision(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelPrecision=e)}get zoomToMouseLocation(){let e=this.inputs.attached.mousewheel;return e?e.zoomToMouseLocation:!1}set zoomToMouseLocation(e){let t=this.inputs.attached.mousewheel;t&&(t.zoomToMouseLocation=e)}get wheelDeltaPercentage(){let e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0}set wheelDeltaPercentage(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelDeltaPercentage=e)}get isInterpolating(){return this._isInterpolating}get bouncingBehavior(){return this._bouncingBehavior}get useBouncingBehavior(){return this._bouncingBehavior!=null}set useBouncingBehavior(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new Ep,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))}get framingBehavior(){return this._framingBehavior}get useFramingBehavior(){return this._framingBehavior!=null}set useFramingBehavior(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Kf,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))}get autoRotationBehavior(){return this._autoRotationBehavior}get useAutoRotationBehavior(){return this._autoRotationBehavior!=null}set useAutoRotationBehavior(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new vp,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))}constructor(e,t,i,r,s,a,o=!0){super(e,b.Zero(),a,o),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.lowerAlphaLimit=null,this.upperAlphaLimit=null,this.lowerBetaLimit=.01,this.upperBetaLimit=Math.PI-.01,this.lowerRadiusLimit=null,this.upperRadiusLimit=null,this.lowerTargetYLimit=-1/0,this.inertialPanningX=0,this.inertialPanningY=0,this.pinchToPanMaxDistance=20,this.panningDistanceLimit=null,this.panningOriginTarget=b.Zero(),this.panningInertia=.9,this.zoomOnFactor=1,this.targetScreenOffset=we.Zero(),this.allowUpsideDown=!0,this.useInputToRestoreState=!0,this.restoreStateInterpolationFactor=0,this._currentInterpolationFactor=0,this._viewMatrix=new Z,this.panningAxis=new b(1,1,0),this._transformedDirection=new b,this.mapPanning=!1,this._isInterpolating=!1,this.onMeshTargetChangedObservable=new te,this.checkCollisions=!1,this.collisionRadius=new b(.5,.5,.5),this._previousPosition=b.Zero(),this._collisionVelocity=b.Zero(),this._newPosition=b.Zero(),this._computationVector=b.Zero(),this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget=new b(NaN,NaN,NaN),this._goalTargetScreenOffset=new we(NaN,NaN),this._onCollisionPositionChange=(l,c,f=null)=>{f?(this.setPosition(c),this.onCollide&&this.onCollide(f)):this._previousPosition.copyFrom(this._position);let d=Math.cos(this.alpha),h=Math.sin(this.alpha),u=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let _=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*u,this.radius*h*m),_.addToRef(this._computationVector,this._newPosition),this._position.copyFrom(this._newPosition);let p=this.upVector;this.allowUpsideDown&&this.beta<0&&(p=p.clone(),p=p.negate()),this._computeViewMatrix(this._position,_,p),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y),this._collisionTriggered=!1},this._target=b.Zero(),s&&this.setTarget(s),this.alpha=t,this.beta=i,this.radius=r,this.getViewMatrix(),this.inputs=new hR(this),this.inputs.addKeyboard().addMouseWheel().addPointers()}_initCache(){super._initCache(),this._cache._target=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=we.Zero()}_updateCache(e){e||super._updateCache(),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)}_getTargetPosition(){if(this._targetHost&&this._targetHost.getAbsolutePosition){let t=this._targetHost.getAbsolutePosition();this._targetBoundingCenter?t.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(t)}let e=this._getLockedTargetPosition();return e||this._target}storeState(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),super.storeState()}_restoreStateValues(){return this.hasStateStored()&&this.restoreStateInterpolationFactor>Ft&&this.restoreStateInterpolationFactor<1?(this.interpolateTo(this._storedAlpha,this._storedBeta,this._storedRadius,this._storedTarget,this._storedTargetScreenOffset,this.restoreStateInterpolationFactor),!0):super._restoreStateValues()?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1}stopInterpolation(){this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget.set(NaN,NaN,NaN),this._goalTargetScreenOffset.set(NaN,NaN)}interpolateTo(e=this.alpha,t=this.beta,i=this.radius,r=this.target,s=this.targetScreenOffset,a){var o,l,c,f,d,h,u;this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,a!=null?this._currentInterpolationFactor=a:this.restoreStateInterpolationFactor!==0?this._currentInterpolationFactor=this.restoreStateInterpolationFactor:this._currentInterpolationFactor=.1,this._goalAlpha=rs(e,this._goalAlpha),this._goalBeta=rs(t,this._goalBeta),this._goalRadius=rs(i,this._goalRadius),this._goalTarget.set(rs(r.x,this._goalTarget.x),rs(r.y,this._goalTarget.y),rs(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(rs(s.x,this._goalTargetScreenOffset.x),rs(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=Bt(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=Bt(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=Bt(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(h=this.upperRadiusLimit)!=null?h:1/0),this._goalTarget.y=Bt(this._goalTarget.y,(u=this.lowerTargetYLimit)!=null?u:-1/0,1/0),this._isInterpolating=!0}_isSynchronizedViewMatrix(){return super._isSynchronizedViewMatrix()?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1}attachControl(e,t,i=!0,r=2){let s=arguments;t=pe.BackCompatCameraNoPreventDefault(s),this._useCtrlForPanning=i,this._panningMouseButton=r,typeof s[0]=="boolean"&&(s.length>1&&(this._useCtrlForPanning=s[1]),s.length>2&&(this._panningMouseButton=s[2])),this.inputs.attachElement(t),this._reset=()=>{this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0}}detachControl(){this.inputs.detachElement(),this._reset&&this._reset()}_checkInputs(){if(this._collisionTriggered)return;this.inputs.checkInputs();let e=!1;if(this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){e=!0;let t=this.invertRotation?-1:1,i=this._calculateHandednessMultiplier(),r=this.inertialAlphaOffset*i;this.beta<0&&(r*=-1),this.alpha+=r*t,this.beta+=this.inertialBetaOffset*t,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)Math.PI&&(this.beta=this.beta-2*Math.PI):this.betathis.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alphathis.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radiusthis.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0),this.target.y=Math.max(this.target.y,this.lowerTargetYLimit)}rebuildAnglesAndRadius(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);let e=this.alpha;this.alpha=Qfe(this._computationVector),this.beta=$fe(this._computationVector.y,this.radius);let t=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=t*2*Math.PI,this._checkLimits()}setPosition(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())}setTarget(e,t=!1,i=!1,r=!1){var s;if(r=(s=this.overrideCloneAlphaBetaRadius)!=null?s:r,e.computeWorldMatrix)t&&e.getBoundingInfo?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{let a=e,o=this._getTargetPosition();if(o&&!i&&o.equals(a))return;this._targetHost=null,this._target=a,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}r||this.rebuildAnglesAndRadius()}_getViewMatrix(){let e=Math.cos(this.alpha),t=Math.sin(this.alpha),i=Math.cos(this.beta),r=Math.sin(this.beta);r===0&&(r=1e-4),this.radius===0&&(this.radius=1e-4);let s=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*r,this.radius*i,this.radius*t*r),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._yToUpMatrix,this._computationVector),s.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){let a=this.getScene().collisionCoordinator;this._collider||(this._collider=a.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,a.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);let a=this.upVector;this.allowUpsideDown&&r<0&&(a=a.negate()),this._computeViewMatrix(this._position,s,a),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget.copyFrom(s),this._viewMatrix}zoomOn(e,t=!1){e=e||this.getScene().meshes;let i=q.MinMax(e),r=this._calculateLowerRadiusFromModelBoundingSphere(i.min,i.max);if(r=Math.max(Math.min(r,this.upperRadiusLimit||Number.MAX_VALUE),this.lowerRadiusLimit||0),this.radius=r*this.zoomOnFactor,this.mode===gt.ORTHOGRAPHIC_CAMERA){let s=this.getScene().getEngine().getAspectRatio(this),a=r*this.zoomOnFactor/2;this.orthoLeft=-a*s,this.orthoRight=a*s,this.orthoBottom=-a,this.orthoTop=a}this.focusOn({min:i.min,max:i.max,distance:r},t)}focusOn(e,t=!1){let i,r;if(e.min===void 0){let s=e||this.getScene().meshes;i=q.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=q.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case gt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case gt.RIG_MODE_STEREOSCOPIC_INTERLACED:case gt.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:i=this._cameraRigParams.stereoHalfAngle*(t===0?-1:1);break}let r=new n(e,this.alpha+i,this.beta,this.radius,this._target,this.getScene());return r._cameraRigParams={},r.isRigCamera=!0,r.rigParent=this,r.upVector=this.upVector,r.mode=this.mode,r.orthoLeft=this.orthoLeft,r.orthoRight=this.orthoRight,r.orthoBottom=this.orthoBottom,r.orthoTop=this.orthoTop,r}_updateRigCameras(){let e=this._rigCameras[0],t=this._rigCameras[1];switch(e.beta=t.beta=this.beta,this.cameraRigMode){case gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case gt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case gt.RIG_MODE_STEREOSCOPIC_INTERLACED:case gt.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}super._updateRigCameras()}_calculateLowerRadiusFromModelBoundingSphere(e,t,i=1){let r=b.Distance(e,t),a=this.getScene().getEngine().getAspectRatio(this),o=Math.tan(this.fov/2),l=o*a,f=r*.5*i,d=f*Math.sqrt(1+1/(l*l)),h=f*Math.sqrt(1+1/(o*o));return Math.max(d,h)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],Si.prototype,"alpha",void 0);P([F()],Si.prototype,"beta",void 0);P([F()],Si.prototype,"radius",void 0);P([F()],Si.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Qr("target")],Si.prototype,"_target",void 0);P([mx("targetHost")],Si.prototype,"_targetHost",void 0);P([F()],Si.prototype,"inertialAlphaOffset",void 0);P([F()],Si.prototype,"inertialBetaOffset",void 0);P([F()],Si.prototype,"inertialRadiusOffset",void 0);P([F()],Si.prototype,"lowerAlphaLimit",void 0);P([F()],Si.prototype,"upperAlphaLimit",void 0);P([F()],Si.prototype,"lowerBetaLimit",void 0);P([F()],Si.prototype,"upperBetaLimit",void 0);P([F()],Si.prototype,"lowerRadiusLimit",void 0);P([F()],Si.prototype,"upperRadiusLimit",void 0);P([F()],Si.prototype,"lowerTargetYLimit",void 0);P([F()],Si.prototype,"inertialPanningX",void 0);P([F()],Si.prototype,"inertialPanningY",void 0);P([F()],Si.prototype,"pinchToPanMaxDistance",void 0);P([F()],Si.prototype,"panningDistanceLimit",void 0);P([Qr()],Si.prototype,"panningOriginTarget",void 0);P([F()],Si.prototype,"panningInertia",void 0);P([F()],Si.prototype,"zoomToMouseLocation",null);P([F()],Si.prototype,"zoomOnFactor",void 0);P([Fm()],Si.prototype,"targetScreenOffset",void 0);P([F()],Si.prototype,"allowUpsideDown",void 0);P([F()],Si.prototype,"useInputToRestoreState",void 0);P([F()],Si.prototype,"restoreStateInterpolationFactor",void 0);Ut("BABYLON.ArcRotateCamera",Si)});var Yt,Zf=I(()=>{Wt();kt();ke();zt();_a();Of();$i();Wg();Dr();Yt=class n extends Ei{get range(){return this._range}set range(e){this._range=e,this._inverseSquaredRange=1/(this.range*this.range)}get intensityMode(){return this._intensityMode}set intensityMode(e){this._intensityMode=e,this._computePhotometricScale()}get radius(){return this._radius}set radius(e){this._radius=e,this._computePhotometricScale()}get shadowEnabled(){return this._shadowEnabled}set shadowEnabled(e){this._shadowEnabled!==e&&(this._shadowEnabled=e,this._markMeshesAsLightDirty())}get includedOnlyMeshes(){return this._includedOnlyMeshes}set includedOnlyMeshes(e){this._includedOnlyMeshes=e,this._hookArrayForIncludedOnly(e)}get excludedMeshes(){return this._excludedMeshes}set excludedMeshes(e){this._excludedMeshes=e,this._hookArrayForExcluded(e)}get excludeWithLayerMask(){return this._excludeWithLayerMask}set excludeWithLayerMask(e){this._excludeWithLayerMask=e,this._resyncMeshes()}get includeOnlyWithLayerMask(){return this._includeOnlyWithLayerMask}set includeOnlyWithLayerMask(e){this._includeOnlyWithLayerMask=e,this._resyncMeshes()}get lightmapMode(){return this._lightmapMode}set lightmapMode(e){this._lightmapMode!==e&&(this._lightmapMode=e,this._markMeshesAsLightDirty())}getViewMatrix(e){return null}getProjectionMatrix(e,t){return null}constructor(e,t,i){super(e,t,!1),this.diffuse=new Ee(1,1,1),this.specular=new Ee(1,1,1),this.falloffType=n.FALLOFF_DEFAULT,this.intensity=1,this._range=Number.MAX_VALUE,this._inverseSquaredRange=0,this._photometricScale=1,this._intensityMode=n.INTENSITYMODE_AUTOMATIC,this._radius=1e-5,this.renderPriority=0,this._shadowEnabled=!0,this._excludeWithLayerMask=0,this._includeOnlyWithLayerMask=0,this._lightmapMode=0,this._shadowGenerators=null,this._excludedMeshesIds=new Array,this._includedOnlyMeshesIds=new Array,this._currentViewDepth=0,this._clusteredContainer=null,this._isLight=!0,i||this.getScene().addLight(this),this._uniformBuffer=new Sr(this.getScene().getEngine(),void 0,void 0,e),this._buildUniformLayout(),this.includedOnlyMeshes=[],this.excludedMeshes=[],i||this._resyncMeshes()}transferTexturesToEffect(e,t){return this}_bindLight(e,t,i,r,s=!0){var l;let a=e.toString(),o=!1;if(this._uniformBuffer.bindToEffect(i,"Light"+a),this._renderId!==t.getRenderId()||this._lastUseSpecular!==r||!this._uniformBuffer.useUbo){this._renderId=t.getRenderId(),this._lastUseSpecular=r;let c=this.getScaledIntensity();this.transferToEffect(i,a),this.diffuse.scaleToRef(c,Dn.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Dn.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Dn.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Dn.Color3[1],this.radius,a)),o=!0}if(this.transferTexturesToEffect(i,a),t.shadowsEnabled&&this.shadowEnabled&&s){let c=(l=this.getShadowGenerator(t.activeCamera))!=null?l:this.getShadowGenerator();c&&(c.bindShadowLight(a,i),o=!0)}o?this._uniformBuffer.update():this._uniformBuffer.bindUniformBuffer()}getClassName(){return"Light"}toString(e){let t="Name: "+this.name;if(t+=", type: "+["Point","Directional","Spot","Hemispheric","Clustered"][this.getTypeID()],this.animations)for(let i=0;i0&&this.includedOnlyMeshes.indexOf(e)===-1||this.excludedMeshes&&this.excludedMeshes.length>0&&this.excludedMeshes.indexOf(e)!==-1||this.includeOnlyWithLayerMask!==0&&(this.includeOnlyWithLayerMask&e.layerMask)===0||this.excludeWithLayerMask!==0&&this.excludeWithLayerMask&e.layerMask):!0}dispose(e,t=!1){if(this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.dispose();this._shadowGenerators=null}if(this.getScene().stopAnimation(this),this._parentContainer){let i=this._parentContainer.lights.indexOf(this);i>-1&&this._parentContainer.lights.splice(i,1),this._parentContainer=null}for(let i of this.getScene().meshes)i._removeLightSource(this,!0);this._uniformBuffer.dispose(),this.getScene().removeLight(this),super.dispose(e,t)}getTypeID(){return 0}getScaledIntensity(){return this._photometricScale*this.intensity}clone(e,t=null){let i=n.GetConstructorFromName(this.getTypeID(),e,this.getScene());if(!i)return null;let r=nt.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=nt.Serialize(this);if(e.uniqueId=this.uniqueId,e.type=this.getTypeID(),this.parent&&this.parent._serializeAsParent(e),this.excludedMeshes.length>0){e.excludedMeshesIds=[];for(let t of this.excludedMeshes)e.excludedMeshesIds.push(t.id)}if(this.includedOnlyMeshes.length>0){e.includedOnlyMeshesIds=[];for(let t of this.includedOnlyMeshes)e.includedOnlyMeshesIds.push(t.id)}return nt.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=Ei.Construct("Light_Type_"+e,t,i);return r||null}static Parse(e,t){let i=n.GetConstructorFromName(e.type,e.name,t);if(!i)return null;let r=nt.Parse(i,e,t);if(e.excludedMeshesIds&&(r._excludedMeshesIds=e.excludedMeshesIds),e.includedOnlyMeshesIds&&(r._includedOnlyMeshesIds=e.includedOnlyMeshesIds),e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.falloffType!==void 0&&(r.falloffType=e.falloffType),e.lightmapMode!==void 0&&(r.lightmapMode=e.lightmapMode),e.animations){for(let s=0;s{let s=t.apply(e,r);if(this._clusteredContainer)return s;for(let a of r)a._resyncLightSource(this);return s};let i=e.splice;if(e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);if(this._clusteredContainer)return a;for(let o of a)o._resyncLightSource(this);return a},!this._clusteredContainer)for(let r of e)r._resyncLightSource(this)}_hookArrayForIncludedOnly(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._resyncMeshes(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._resyncMeshes(),a},this._resyncMeshes()}_resyncMeshes(){if(!this._clusteredContainer)for(let e of this.getScene().meshes)e._resyncLightSource(this)}_markMeshesAsLightDirty(){for(let e of this.getScene().meshes)e.lightSources.indexOf(this)!==-1&&e._markSubMeshesAsLightDirty()}_computePhotometricScale(){this._photometricScale=this._getPhotometricScale(),this.getScene().resetCachedMaterial()}_getPhotometricScale(){let e=0,t=this.getTypeID(),i=this.intensityMode;switch(i===n.INTENSITYMODE_AUTOMATIC&&(t===n.LIGHTTYPEID_DIRECTIONALLIGHT?i=n.INTENSITYMODE_ILLUMINANCE:i=n.INTENSITYMODE_LUMINOUSINTENSITY),t){case n.LIGHTTYPEID_POINTLIGHT:case n.LIGHTTYPEID_SPOTLIGHT:switch(i){case n.INTENSITYMODE_LUMINOUSPOWER:e=1/(4*Math.PI);break;case n.INTENSITYMODE_LUMINOUSINTENSITY:e=1;break;case n.INTENSITYMODE_LUMINANCE:e=this.radius*this.radius;break}break;case n.LIGHTTYPEID_DIRECTIONALLIGHT:switch(i){case n.INTENSITYMODE_ILLUMINANCE:e=1;break;case n.INTENSITYMODE_LUMINANCE:{let r=this.radius;r=Math.max(r,.001),e=2*Math.PI*(1-Math.cos(r));break}}break;case n.LIGHTTYPEID_HEMISPHERICLIGHT:e=1;break}return e}_reorderLightsInScene(){let e=this.getScene();this._renderPriority!=0&&(e.requireLightSorting=!0),this.getScene().sortLightsByPriority()}areLightTexturesReady(){return!0}_isReady(){return!0}};Yt.FALLOFF_DEFAULT=jt.FALLOFF_DEFAULT;Yt.FALLOFF_PHYSICAL=jt.FALLOFF_PHYSICAL;Yt.FALLOFF_GLTF=jt.FALLOFF_GLTF;Yt.FALLOFF_STANDARD=jt.FALLOFF_STANDARD;Yt.LIGHTMAP_DEFAULT=jt.LIGHTMAP_DEFAULT;Yt.LIGHTMAP_SPECULAR=jt.LIGHTMAP_SPECULAR;Yt.LIGHTMAP_SHADOWSONLY=jt.LIGHTMAP_SHADOWSONLY;Yt.INTENSITYMODE_AUTOMATIC=jt.INTENSITYMODE_AUTOMATIC;Yt.INTENSITYMODE_LUMINOUSPOWER=jt.INTENSITYMODE_LUMINOUSPOWER;Yt.INTENSITYMODE_LUMINOUSINTENSITY=jt.INTENSITYMODE_LUMINOUSINTENSITY;Yt.INTENSITYMODE_ILLUMINANCE=jt.INTENSITYMODE_ILLUMINANCE;Yt.INTENSITYMODE_LUMINANCE=jt.INTENSITYMODE_LUMINANCE;Yt.LIGHTTYPEID_POINTLIGHT=jt.LIGHTTYPEID_POINTLIGHT;Yt.LIGHTTYPEID_DIRECTIONALLIGHT=jt.LIGHTTYPEID_DIRECTIONALLIGHT;Yt.LIGHTTYPEID_SPOTLIGHT=jt.LIGHTTYPEID_SPOTLIGHT;Yt.LIGHTTYPEID_HEMISPHERICLIGHT=jt.LIGHTTYPEID_HEMISPHERICLIGHT;Yt.LIGHTTYPEID_RECT_AREALIGHT=jt.LIGHTTYPEID_RECT_AREALIGHT;P([Ir()],Yt.prototype,"diffuse",void 0);P([Ir()],Yt.prototype,"specular",void 0);P([F()],Yt.prototype,"falloffType",void 0);P([F()],Yt.prototype,"intensity",void 0);P([F()],Yt.prototype,"range",null);P([F()],Yt.prototype,"intensityMode",null);P([F()],Yt.prototype,"radius",null);P([F()],Yt.prototype,"_renderPriority",void 0);P([le("_reorderLightsInScene")],Yt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],Yt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],Yt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],Yt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],Yt.prototype,"_lightmapMode",void 0)});var va,mR=I(()=>{Wt();kt();ke();zt();_a();Zf();$i();Ei.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new va(n,b.Zero(),e));va=class extends Yt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new Ee(0,0,0),this.direction=t||b.Up()}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightGround",3),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}getClassName(){return"HemisphericLight"}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(b.Zero())),this.direction}getShadowGenerator(){return null}transferToEffect(e,t){let i=b.Normalize(this.direction);return this._uniformBuffer.updateFloat4("vLightData",i.x,i.y,i.z,0,t),this._uniformBuffer.updateColor3("vLightGround",this.groundColor.scale(this.intensity),t),this}transferToNodeMaterialEffect(e,t){let i=b.Normalize(this.direction);return e.setFloat3(t,i.x,i.y,i.z),this}computeWorldMatrix(){return this._worldMatrix||(this._worldMatrix=Z.Identity()),this._worldMatrix}getTypeID(){return Yt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([Ir()],va.prototype,"groundColor",void 0);P([Qr()],va.prototype,"direction",void 0);Ut("BABYLON.HemisphericLight",va)});var Ka,pR=I(()=>{Wt();kt();ke();Zf();Mm();Ka=class extends Yt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=Z.Identity(),this._projectionMatrix=Z.Identity()}_setPosition(e){this._position=e}get position(){return this._position}set position(e){this._setPosition(e)}_setDirection(e){this._direction=e}get direction(){return this._direction}set direction(e){this._setDirection(e)}get shadowMinZ(){return this._shadowMinZ}set shadowMinZ(e){this._shadowMinZ=e,this.forceProjectionMatrixCompute()}get shadowMaxZ(){return this._shadowMaxZ}set shadowMaxZ(e){this._shadowMaxZ=e,this.forceProjectionMatrixCompute()}computeTransformedInformation(){return this.parent&&this.parent.getWorldMatrix?(this.transformedPosition||(this.transformedPosition=b.Zero()),b.TransformCoordinatesToRef(this.position,this.parent.getWorldMatrix(),this.transformedPosition),this.direction&&(this.transformedDirection||(this.transformedDirection=b.Zero()),b.TransformNormalToRef(this.direction,this.parent.getWorldMatrix(),this.transformedDirection)),!0):!1}getDepthScale(){return 50}getShadowDirection(e){return this.transformedDirection?this.transformedDirection:this.direction}getAbsolutePosition(){return this.transformedPosition?this.transformedPosition:this.position}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(this.position)),this.direction}getRotation(){this.direction.normalize();let e=b.Cross(this.direction,Hs.Y),t=b.Cross(e,this.direction);return b.RotationFromAxis(e,t,this.direction)}needCube(){return!1}needProjectionMatrixCompute(){return this._needProjectionMatrixCompute}forceProjectionMatrixCompute(){this._needProjectionMatrixCompute=!0}_initCache(){super._initCache(),this._cache.position=b.Zero()}_isSynchronized(){return!!this._cache.position.equals(this.position)}computeWorldMatrix(e){return!e&&this.isSynchronized()?(this._currentRenderId=this.getScene().getRenderId(),this._worldMatrix):(this._updateCache(),this._cache.position.copyFrom(this.position),this._worldMatrix||(this._worldMatrix=Z.Identity()),Z.TranslationToRef(this.position.x,this.position.y,this.position.z,this._worldMatrix),this.parent&&this.parent.getWorldMatrix&&(this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(),this._worldMatrix),this._markSyncedWithParent()),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix)}getDepthMinZ(e){return this.shadowMinZ!==void 0?this.shadowMinZ:(e==null?void 0:e.minZ)||0}getDepthMaxZ(e){return this.shadowMaxZ!==void 0?this.shadowMaxZ:(e==null?void 0:e.maxZ)||1e4}setShadowProjectionMatrix(e,t,i){return this.customProjectionMatrixBuilder?this.customProjectionMatrixBuilder(t,i,e):this._setDefaultShadowProjectionMatrix(e,t,i),this}_syncParentEnabledState(){super._syncParentEnabledState(),(!this.parent||!this.parent.getWorldMatrix)&&(this.transformedPosition=null,this.transformedDirection=null)}getViewMatrix(e){let t=$.Vector3[0],i=this.position;this.computeTransformedInformation()&&(i=this.transformedPosition),b.NormalizeToRef(this.getShadowDirection(e),t),Math.abs(b.Dot(t,b.Up()))===1&&(t.z=1e-13);let r=$.Vector3[1];return i.addToRef(t,r),Z.LookAtLHToRef(i,r,b.Up(),this._viewMatrix),this._viewMatrix}getProjectionMatrix(e,t){return this.setShadowProjectionMatrix(this._projectionMatrix,e!=null?e:this._viewMatrix,t!=null?t:[]),this._projectionMatrix}};P([Qr()],Ka.prototype,"position",null);P([Qr()],Ka.prototype,"direction",null);P([F()],Ka.prototype,"shadowMinZ",null);P([F()],Ka.prototype,"shadowMaxZ",null)});var Qs,FH=I(()=>{Wt();kt();ke();_a();Zf();pR();$i();Ei.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new Qs(n,b.Zero(),e));Qs=class extends Ka{get shadowFrustumSize(){return this._shadowFrustumSize}set shadowFrustumSize(e){this._shadowFrustumSize=e,this.forceProjectionMatrixCompute()}get shadowOrthoScale(){return this._shadowOrthoScale}set shadowOrthoScale(e){this._shadowOrthoScale=e,this.forceProjectionMatrixCompute()}get orthoLeft(){return this._orthoLeft}set orthoLeft(e){this._orthoLeft=e}get orthoRight(){return this._orthoRight}set orthoRight(e){this._orthoRight=e}get orthoTop(){return this._orthoTop}set orthoTop(e){this._orthoTop=e}get orthoBottom(){return this._orthoBottom}set orthoBottom(e){this._orthoBottom=e}constructor(e,t,i,r){super(e,i,r),this._shadowFrustumSize=0,this._shadowOrthoScale=.1,this.autoUpdateExtends=!0,this.autoCalcShadowZBounds=!1,this._orthoLeft=Number.MAX_VALUE,this._orthoRight=Number.MIN_VALUE,this._orthoTop=Number.MIN_VALUE,this._orthoBottom=Number.MAX_VALUE,this.position=t.scale(-1),this.direction=t}getClassName(){return"DirectionalLight"}getTypeID(){return Yt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;Z.OrthoLHToRef(this.shadowFrustumSize,this.shadowFrustumSize,this.shadowMinZ!==void 0?this.shadowMinZ:t?t.minZ:0,this.shadowMaxZ!==void 0?this.shadowMaxZ:t?t.maxZ:1e4,e,this.getScene().getEngine().isNDCHalfZRange)}_setDefaultAutoExtendShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(this.autoUpdateExtends||this._orthoLeft===Number.MAX_VALUE){let f=b.Zero();this._orthoLeft=Number.MAX_VALUE,this._orthoRight=-Number.MAX_VALUE,this._orthoTop=-Number.MAX_VALUE,this._orthoBottom=Number.MAX_VALUE;let d=Number.MAX_VALUE,h=-Number.MAX_VALUE;for(let u=0;uthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zh&&(h=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=h)}let s=this._orthoRight-this._orthoLeft,a=this._orthoTop-this._orthoBottom,o=this.shadowMinZ!==void 0?this.shadowMinZ:(r==null?void 0:r.minZ)||0,l=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r==null?void 0:r.maxZ)||1e4,c=this.getScene().getEngine().useReverseDepthBuffer;Z.OrthoOffCenterLHToRef(this._orthoLeft-s*this.shadowOrthoScale,this._orthoRight+s*this.shadowOrthoScale,this._orthoBottom-a*this.shadowOrthoScale,this._orthoTop+a*this.shadowOrthoScale,c?l:o,c?o:l,e,this.getScene().getEngine().isNDCHalfZRange)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z,1,t),this):(this._uniformBuffer.updateFloat4("vLightData",this.direction.x,this.direction.y,this.direction.z,1,t),this)}transferToNodeMaterialEffect(e,t){return this.computeTransformedInformation()?(e.setFloat3(t,this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z),this):(e.setFloat3(t,this.direction.x,this.direction.y,this.direction.z),this)}getDepthMinZ(e){let t=this._scene.getEngine();return!t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}getDepthMaxZ(e){let t=this._scene.getEngine();return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}prepareLightSpecificDefines(e,t){e["DIRLIGHT"+t]=!0}};P([F()],Qs.prototype,"shadowFrustumSize",null);P([F()],Qs.prototype,"shadowOrthoScale",null);P([F()],Qs.prototype,"autoUpdateExtends",void 0);P([F()],Qs.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],Qs.prototype,"_orthoLeft",void 0);P([F("orthoRight")],Qs.prototype,"_orthoRight",void 0);P([F("orthoTop")],Qs.prototype,"_orthoTop",void 0);P([F("orthoBottom")],Qs.prototype,"_orthoBottom",void 0);Ut("BABYLON.DirectionalLight",Qs)});var qf,BH=I(()=>{Wt();kt();ke();_a();Zf();pR();$i();Ei.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new qf(n,b.Zero(),e));qf=class extends Ka{get shadowAngle(){return this._shadowAngle}set shadowAngle(e){this._shadowAngle=e,this.forceProjectionMatrixCompute()}get direction(){return this._direction}set direction(e){let t=this.needCube();if(this._direction=e,this.needCube()!==t&&this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.recreateShadowMap()}}constructor(e,t,i,r){super(e,i,r),this._shadowAngle=Math.PI/2,this.position=t}getClassName(){return"PointLight"}getTypeID(){return Yt.LIGHTTYPEID_POINTLIGHT}needCube(){return!this.direction}getShadowDirection(e){if(this.direction)return super.getShadowDirection(e);switch(e){case 0:return new b(1,0,0);case 1:return new b(-1,0,0);case 2:return new b(0,-1,0);case 3:return new b(0,1,0);case 4:return new b(0,0,1);case 5:return new b(0,0,-1)}return b.Zero()}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera,s=this.getDepthMinZ(r),a=this.getDepthMaxZ(r),o=this.getScene().getEngine().useReverseDepthBuffer;Z.PerspectiveFovLHToRef(this.shadowAngle,1,o?a:s,o?s:a,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,o)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z,0,t):this._uniformBuffer.updateFloat4("vLightData",this.position.x-i.x,this.position.y-i.y,this.position.z-i.z,0,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,0,0,t),this}transferToNodeMaterialEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?e.setFloat3(t,this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z):e.setFloat3(t,this.position.x-i.x,this.position.y-i.y,this.position.z-i.z),this}prepareLightSpecificDefines(e,t){e["POINTLIGHT"+t]=!0}};P([F()],qf.prototype,"shadowAngle",null);Ut("BABYLON.PointLight",qf)});var Kr,QD=I(()=>{Wt();kt();ke();_a();Zf();pR();Xr();$i();Ei.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Kr(n,b.Zero(),b.Zero(),0,0,e));Kr=class n extends Ka{get iesProfileTexture(){return this._iesProfileTexture}set iesProfileTexture(e){this._iesProfileTexture!==e&&(this._iesProfileTexture=e,this._iesProfileTexture&&n._IsTexture(this._iesProfileTexture)&&this._iesProfileTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()}))}get angle(){return this._angle}set angle(e){this._angle=e,this._cosHalfAngle=Math.cos(e*.5),this._projectionTextureProjectionLightDirty=!0,this.forceProjectionMatrixCompute(),this._computeAngleValues()}get innerAngle(){return this._innerAngle}set innerAngle(e){this._innerAngle=e,this._computeAngleValues()}get shadowAngleScale(){return this._shadowAngleScale}set shadowAngleScale(e){this._shadowAngleScale=e,this.forceProjectionMatrixCompute()}get projectionTextureMatrix(){return this._projectionTextureMatrix}get projectionTextureLightNear(){return this._projectionTextureLightNear}set projectionTextureLightNear(e){this._projectionTextureLightNear=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureLightFar(){return this._projectionTextureLightFar}set projectionTextureLightFar(e){this._projectionTextureLightFar=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureUpDirection(){return this._projectionTextureUpDirection}set projectionTextureUpDirection(e){this._projectionTextureUpDirection=e,this._projectionTextureProjectionLightDirty=!0}get projectionTexture(){return this._projectionTexture}set projectionTexture(e){this._projectionTexture!==e&&(this._projectionTexture=e,this._projectionTextureDirty=!0,this._projectionTexture&&!this._projectionTexture.isReady()&&(n._IsProceduralTexture(this._projectionTexture)?this._projectionTexture.getEffect().executeWhenCompiled(()=>{this._markMeshesAsLightDirty()}):n._IsTexture(this._projectionTexture)&&this._projectionTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()})))}static _IsProceduralTexture(e){return e.onGeneratedObservable!==void 0}static _IsTexture(e){return e.onLoadObservable!==void 0}get projectionTextureProjectionLightMatrix(){return this._projectionTextureProjectionLightMatrix}set projectionTextureProjectionLightMatrix(e){this._projectionTextureProjectionLightMatrix=e,this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0}constructor(e,t,i,r,s,a,o){super(e,a,o),this._innerAngle=0,this._iesProfileTexture=null,this._projectionTextureMatrix=Z.Zero(),this._projectionTextureLightNear=1e-6,this._projectionTextureLightFar=1e3,this._projectionTextureUpDirection=b.Up(),this._projectionTextureViewLightDirty=!0,this._projectionTextureProjectionLightDirty=!0,this._projectionTextureDirty=!0,this._projectionTextureViewTargetVector=b.Zero(),this._projectionTextureViewLightMatrix=Z.Zero(),this._projectionTextureProjectionLightMatrix=Z.Zero(),this._projectionTextureScalingMatrix=Z.FromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1),this.position=t,this.direction=i,this.angle=r,this.exponent=s}getClassName(){return"SpotLight"}getTypeID(){return Yt.LIGHTTYPEID_SPOTLIGHT}_setDirection(e){super._setDirection(e),this._projectionTextureViewLightDirty=!0}_setPosition(e){super._setPosition(e),this._projectionTextureViewLightDirty=!0}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(!r)return;this._shadowAngleScale=this._shadowAngleScale||1;let s=this._shadowAngleScale*this._angle,a=this.shadowMinZ!==void 0?this.shadowMinZ:r.minZ,o=this.shadowMaxZ!==void 0?this.shadowMaxZ:r.maxZ,l=this.getScene().getEngine().useReverseDepthBuffer;Z.PerspectiveFovLHToRef(s,1,l?o:a,l?a:o,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,l)}_computeProjectionTextureViewLightMatrix(){this._projectionTextureViewLightDirty=!1,this._projectionTextureDirty=!0,this.getAbsolutePosition().addToRef(this.getShadowDirection(),this._projectionTextureViewTargetVector),Z.LookAtLHToRef(this.getAbsolutePosition(),this._projectionTextureViewTargetVector,this._projectionTextureUpDirection,this._projectionTextureViewLightMatrix)}_computeProjectionTextureProjectionLightMatrix(){this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0;let e=this.projectionTextureLightFar,t=this.projectionTextureLightNear,i=e/(e-t),r=-i*t,s=1/Math.tan(this._angle/2);Z.FromValuesToRef(s/1,0,0,0,0,s,0,0,0,0,i,1,0,0,r,0,this._projectionTextureProjectionLightMatrix)}_computeProjectionTextureMatrix(){if(this._projectionTextureDirty=!1,this._projectionTextureViewLightMatrix.multiplyToRef(this._projectionTextureProjectionLightMatrix,this._projectionTextureMatrix),this._projectionTexture instanceof _e){let e=this._projectionTexture.uScale/2,t=this._projectionTexture.vScale/2;Z.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,.5,0,.5,.5,.5,1,this._projectionTextureScalingMatrix)}this._projectionTextureMatrix.multiplyToRef(this._projectionTextureScalingMatrix,this._projectionTextureMatrix)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightDirection",3),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}_computeAngleValues(){this._lightAngleScale=1/Math.max(.001,Math.cos(this._innerAngle*.5)-this._cosHalfAngle),this._lightAngleOffset=-this._cosHalfAngle*this._lightAngleScale}transferTexturesToEffect(e,t){return this.projectionTexture&&this.projectionTexture.isReady()&&(this._projectionTextureViewLightDirty&&this._computeProjectionTextureViewLightMatrix(),this._projectionTextureProjectionLightDirty&&this._computeProjectionTextureProjectionLightMatrix(),this._projectionTextureDirty&&this._computeProjectionTextureMatrix(),e.setMatrix("textureProjectionMatrix"+t,this._projectionTextureMatrix),e.setTexture("projectionLightTexture"+t,this.projectionTexture)),this._iesProfileTexture&&this._iesProfileTexture.isReady()&&e.setTexture("iesLightTexture"+t,this._iesProfileTexture),this}transferToEffect(e,t){let i,r=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-r.x,this.transformedPosition.y-r.y,this.transformedPosition.z-r.z,this.exponent,t),i=b.Normalize(this.transformedDirection)):(this._uniformBuffer.updateFloat4("vLightData",this.position.x-r.x,this.position.y-r.y,this.position.z-r.z,this.exponent,t),i=b.Normalize(this.direction)),this._uniformBuffer.updateFloat4("vLightDirection",i.x,i.y,i.z,this._cosHalfAngle,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,this._lightAngleScale,this._lightAngleOffset,t),this}transferToNodeMaterialEffect(e,t){let i;return this.computeTransformedInformation()?i=b.Normalize(this.transformedDirection):i=b.Normalize(this.direction),this.getScene().useRightHandedSystem?e.setFloat3(t,-i.x,-i.y,-i.z):e.setFloat3(t,i.x,i.y,i.z),this}dispose(){super.dispose(),this._projectionTexture&&this._projectionTexture.dispose(),this._iesProfileTexture&&(this._iesProfileTexture.dispose(),this._iesProfileTexture=null)}getDepthMinZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMinZ!==void 0?this.shadowMinZ:(r=e==null?void 0:e.minZ)!=null?r:0;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?i:this._scene.getEngine().isNDCHalfZRange?0:i}getDepthMaxZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r=e==null?void 0:e.maxZ)!=null?r:1e4;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:i}areLightTexturesReady(){return!(this._projectionTexture&&!this._projectionTexture.isReadyOrNotBlocking()||this._iesProfileTexture&&!this._iesProfileTexture.isReadyOrNotBlocking())}prepareLightSpecificDefines(e,t){e["SPOTLIGHT"+t]=!0,e["PROJECTEDLIGHTTEXTURE"+t]=!!(this.projectionTexture&&this.projectionTexture.isReady()),e["IESLIGHTTEXTURE"+t]=!!(this._iesProfileTexture&&this._iesProfileTexture.isReady())}};P([F()],Kr.prototype,"angle",null);P([F()],Kr.prototype,"innerAngle",null);P([F()],Kr.prototype,"shadowAngleScale",null);P([F()],Kr.prototype,"exponent",void 0);P([F()],Kr.prototype,"projectionTextureLightNear",null);P([F()],Kr.prototype,"projectionTextureLightFar",null);P([F()],Kr.prototype,"projectionTextureUpDirection",null);P([Gt("projectedLightTexture")],Kr.prototype,"_projectionTexture",void 0);Ut("BABYLON.SpotLight",Kr)});function UH(n){let e=n.pathArray,t=n.closeArray||!1,i=n.closePath||!1,r=n.invertUV||!1,s=Math.floor(e[0].length/2),a=n.offset||s;a=a>s?s:Math.floor(a);let o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],h=[],u=[],m=[],_=[],p=[],g=[],v,T=[],S=[],E,A,R;if(e.length<2){let be=[],De=[];for(A=0;A0&&(G=D[R].subtract(D[R-1]).length(),O=G+p[E],m[E].push(O),p[E]=O),R++;i&&(R--,f.push(D[0].x,D[0].y,D[0].z),G=D[R].subtract(D[0]).length(),O=G+p[E],m[E].push(O),p[E]=O),T[E]=w+y,S[E]=M,M+=w+y}let N,B,V,Q;for(A=0;A{let m=i[0].length,_=o,p=0,g=_._originalBuilderSideOrientation===q.DOUBLESIDE?2:1;for(let v=1;v<=g;++v)for(let T=0;T{ke();Fi();Zi();Tr();fn();Me.CreateRibbon=UH;q.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Bo(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function VH(n){let e=[],t=[],i=[],r=[],s=n.radius||.5,a=n.tessellation||64,o=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,l=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;e.push(0,0,0),r.push(.5,.5);let c=Math.PI*2*o,f=o===1?c/a:c/(a-1),d=0;for(let m=0;m{Fi();Tr();fn();Me.CreateDisc=VH;q.CreateDisc=(n,e,t,i=null,r,s)=>$D(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var Tp,kH=I(()=>{ke();Zi();Fi();q._GroundMeshParser=(n,e)=>Tp.Parse(n,e);Tp=class n extends q{constructor(e,t){super(e,t),this.generateOctree=!1}getClassName(){return"GroundMesh"}get subdivisions(){return Math.min(this._subdivisionsX,this._subdivisionsY)}get subdivisionsX(){return this._subdivisionsX}get subdivisionsY(){return this._subdivisionsY}optimize(e,t=32){this._subdivisionsX=e,this._subdivisionsY=e,this.subdivide(e);let i=this;i.createOrUpdateSubmeshesOctree&&i.createOrUpdateSubmeshesOctree(t)}getHeightAtCoordinates(e,t){let i=this.getWorldMatrix(),r=$.Matrix[5];i.invertToRef(r);let s=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,r,s),e=s.x,t=s.z,e=this._maxX||t<=this._minZ||t>this._maxZ)return this.position.y;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let a=this._getFacetAt(e,t),o=-(a.x*e+a.z*t+a.w)/a.y;return b.TransformCoordinatesFromFloatsToRef(0,o,0,i,s),s.y}getNormalAtCoordinates(e,t){let i=new b(0,1,0);return this.getNormalAtCoordinatesToRef(e,t,i),i}getNormalAtCoordinatesToRef(e,t,i){let r=this.getWorldMatrix(),s=$.Matrix[5];r.invertToRef(s);let a=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,s,a),e=a.x,t=a.z,ethis._maxX||tthis._maxZ)return this;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let o=this._getFacetAt(e,t);return b.TransformNormalFromFloatsToRef(o.x,o.y,o.z,r,i),this}updateCoordinateHeights(){return(!this._heightQuads||this._heightQuads.length==0)&&this._initHeightQuads(),this._computeHeightQuads(),this}_getFacetAt(e,t){let i=Math.floor((e+this._maxX)*this._subdivisionsX/this._width),r=Math.floor(-(t+this._maxZ)*this._subdivisionsY/this._height+this._subdivisionsY),s=this._heightQuads[r*this._subdivisionsX+i],a;return tn.maxHeight){c=!0;let d=n.maxHeight;n.maxHeight=n.minHeight,n.minHeight=d}for(s=0;s<=n.subdivisions;s++)for(a=0;a<=n.subdivisions;a++){let d=new b(a*n.width/n.subdivisions-n.width/2,0,(n.subdivisions-s)*n.height/n.subdivisions-n.height/2),h=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,u=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(h+u*n.bufferWidth)*4,_=n.buffer[m]/255,p=n.buffer[m+1]/255,g=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(_=1-_,p=1-p,g=1-g);let T=_*o.r+p*o.g+g*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*T:d.y=n.minHeight-Ft,n.heightBuffer&&(n.heightBuffer[s*(n.subdivisions+1)+a]=d.y),t.push(d.x,d.y,d.z),i.push(0,0,0),r.push(a/n.subdivisions,1-s/n.subdivisions)}for(s=0;s=n.minHeight,p=t[h*3+1]>=n.minHeight,g=t[u*3+1]>=n.minHeight;_&&p&&g&&(e.push(d),e.push(h),e.push(u)),t[m*3+1]>=n.minHeight&&_&&g&&(e.push(m),e.push(d),e.push(u))}Me.ComputeNormals(t,e,i);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function eL(n,e={},t){let i=new Tp(n,t);return i._setReady(!1),i._subdivisionsX=e.subdivisionsX||e.subdivisions||1,i._subdivisionsY=e.subdivisionsY||e.subdivisions||1,i._width=e.width||1,i._height=e.height||1,i._maxX=i._width/2,i._maxZ=i._height/2,i._minX=-i._maxX,i._minZ=-i._maxZ,JD(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function tL(n,e,t=null){let i=new q(n,t);return WH(e).applyToMesh(i,e.updatable),i}function iL(n,e,t={},i=null){let r=t.width||10,s=t.height||10,a=t.subdivisions||1,o=t.minHeight||0,l=t.maxHeight||1,c=t.colorFilter||new Ee(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,h=t.onReady;i=i||Oe.LastCreatedScene;let u=new Tp(n,i);u._subdivisionsX=a,u._subdivisionsY=a,u._width=r,u._height=s,u._maxX=u._width/2,u._maxZ=u._height/2,u._minX=-u._maxX,u._minZ=-u._maxZ,u._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let _=(p,g,v)=>{HH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:g,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(u,d),h&&h(u,m),u._setReady(!0)};if(typeof e=="string"){i.addPendingData(u);let p=v=>{let T=v.width,S=v.height;if(i.isDisposed){i.removePendingData(u);return}let E=i==null?void 0:i.getEngine().resizeImageBitmap(v,T,S);_(E,T,S),i.removePendingData(u)},g=(v,T)=>{i.removePendingData(u),t.onError&&t.onError(v,T)};pe.LoadImage(e,p,g,i.offlineProvider)}else _(e.data,e.width,e.height);return u}var rL=I(()=>{ke();zt();Fi();Tr();kH();wi();Gi();Kn();fn();Me.CreateGround=JD;Me.CreateTiledGround=WH;Me.CreateGroundFromHeightMap=HH;q.CreateGround=(n,e,t,i,r,s)=>eL(n,{width:e,height:t,subdivisions:i,updatable:s},r);q.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>tL(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);q.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>iL(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function _R(n){let t=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23],i=[0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0],r=[],s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.wrap||!1,c=n.topBaseAt===void 0?1:n.topBaseAt,f=n.bottomBaseAt===void 0?0:n.bottomBaseAt;c=(c+4)%4,f=(f+4)%4;let d=[2,0,3,1],h=[2,0,1,3],u=d[c],m=h[f],_=[1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1];if(l){t=[2,3,0,2,0,1,4,5,6,4,6,7,9,10,11,9,11,8,12,14,15,12,13,14],_=[-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1];let R=[[1,1,1],[-1,1,1],[-1,1,-1],[1,1,-1]],M=[[-1,-1,1],[1,-1,1],[1,-1,-1],[-1,-1,-1]],y=[17,18,19,16],C=[22,23,20,21];for(;u>0;)R.unshift(R.pop()),y.unshift(y.pop()),u--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),_=_.concat(R).concat(M),t.push(y[0],y[2],y[3],y[0],y[1],y[2]),t.push(C[0],C[2],C[3],C[0],C[1],C[2])}let p=[s/2,a/2,o/2],g=_.reduce((R,M,y)=>R.concat(M*p[y%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,T=n.faceUV||new Array(6),S=n.faceColors,E=[];for(let R=0;R<6;R++)T[R]===void 0&&(T[R]=new Ni(0,0,1,1)),S&&S[R]===void 0&&(S[R]=new ft(1,1,1,1));for(let R=0;R<6;R++)if(r.push(T[R].z,yt?1-T[R].w:T[R].w),r.push(T[R].x,yt?1-T[R].w:T[R].w),r.push(T[R].x,yt?1-T[R].y:T[R].y),r.push(T[R].z,yt?1-T[R].y:T[R].y),S)for(let M=0;M<4;M++)E.push(S[R].r,S[R].g,S[R].b,S[R].a);Me._ComputeSides(v,g,t,i,r,n.frontUVs,n.backUVs);let A=new Me;if(A.indices=t,A.positions=g,A.normals=i,A.uvs=r,S){let R=v===Me.DOUBLESIDE?E.concat(E):E;A.colors=R}return A}function nL(n,e={},t=null){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,_R(e).applyToMesh(i,e.updatable),i}var sL=I(()=>{ke();zt();Fi();Tr();fn();rL();Me.CreateBox=_R;q.CreateBox=(n,e,t=null,i,r)=>nL(n,{size:e,sideOrientation:r,updatable:i},t)});function Ap(n){let e=n.pattern||q.NO_FLIP,t=n.tileWidth||n.tileSize||1,i=n.tileHeight||n.tileSize||1,r=n.alignHorizontal||0,s=n.alignVertical||0,a=n.width||n.size||1,o=Math.floor(a/t),l=a-o*t,c=n.height||n.size||1,f=Math.floor(c/i),d=c-f*i,h=t*o/2,u=i*f/2,m=0,_=0,p=0,g=0,v=0,T=0;if(l>0||d>0){switch(p=-h,g=-u,v=h,T=u,r){case q.CENTER:l/=2,p-=l,v+=l;break;case q.LEFT:v+=l,m=-l/2;break;case q.RIGHT:p-=l,m=l/2;break}switch(s){case q.CENTER:d/=2,g-=d,T+=d;break;case q.BOTTOM:T+=d,_=-d/2;break;case q.TOP:g-=d,_=d/2;break}}let S=[],E=[],A=[];A[0]=[0,0,1,0,1,1,0,1],A[1]=[0,0,1,0,1,1,0,1],(e===q.ROTATE_TILE||e===q.ROTATE_ROW)&&(A[1]=[1,1,0,1,0,0,1,0]),(e===q.FLIP_TILE||e===q.FLIP_ROW)&&(A[1]=[1,0,0,0,0,1,1,1]),(e===q.FLIP_N_ROTATE_TILE||e===q.FLIP_N_ROTATE_ROW)&&(A[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],y=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===q.CENTER||s===q.TOP),N=d>0&&(s===q.CENTER||s===q.BOTTOM),B=l>0&&(r===q.CENTER||r===q.RIGHT),V=l>0&&(r===q.CENTER||r===q.LEFT),Q,K,J,z,Y;if(O&&B&&(S.push(p+m,g+_,0),S.push(-h+m,g+_,0),S.push(-h+m,g+d+_,0),S.push(p+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=1-l/t,J=1-d/i,z=1,Y=1,Q=[K,J,z,J,z,Y,K,Y],e===q.ROTATE_ROW&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),e===q.FLIP_ROW&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),e===q.FLIP_N_ROTATE_ROW&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(S.push(h+m,g+_,0),S.push(v+m,g+_,0),S.push(v+m,g+d+_,0),S.push(h+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=0,J=1-d/i,z=l/t,Y=1,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW||e===q.ROTATE_TILE&&o%2===0)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW||e===q.FLIP_TILE&&o%2===0)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW||e===q.FLIP_N_ROTATE_TILE&&o%2===0)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(S.push(p+m,u+_,0),S.push(-h+m,u+_,0),S.push(-h+m,T+_,0),S.push(p+m,T+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=1-l/t,J=0,z=1,Y=d/i,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW&&f%2===1||e===q.ROTATE_TILE&&f%1===0)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW&&f%2===1||e===q.FLIP_TILE&&f%2===0)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW&&f%2===1||e===q.FLIP_N_ROTATE_TILE&&f%2===0)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(S.push(h+m,u+_,0),S.push(v+m,u+_,0),S.push(v+m,T+_,0),S.push(h+m,T+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=0,J=0,z=l/t,Y=d/i,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW&&f%2===1||e===q.ROTATE_TILE&&(f+o)%2===1)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW&&f%2===1||e===q.FLIP_TILE&&(f+o)%2===1)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW&&f%2===1||e===q.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let de=[];K=0,J=1-d/i,z=1,Y=1,de[0]=[K,J,z,J,z,Y,K,Y],de[1]=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_TILE||e===q.ROTATE_ROW)&&(de[1]=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_TILE||e===q.FLIP_ROW)&&(de[1]=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_TILE||e===q.FLIP_N_ROTATE_ROW)&&(de[1]=[K,1-J,z,1-J,z,1-Y,K,1-Y]);for(let ge=0;ge{Fi();Tr();Me.CreateTiledPlane=Ap});function XH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||q.NO_FLIP,s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.tileWidth||n.tileSize||1,c=n.tileHeight||n.tileSize||1,f=n.alignHorizontal||0,d=n.alignVertical||0,h=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Ni(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new ft(1,1,1,1));let u=s/2,m=a/2,_=o/2,p=[];for(let O=0;O<2;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});for(let O=2;O<4;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});let g=d;d===q.BOTTOM?g=q.TOP:d===q.TOP&&(g=q.BOTTOM);for(let O=4;O<6;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:g,alignHorizontal:f,sideOrientation:h});let v=[],T=[],S=[],E=[],A=[],R=[],M=[],y=[],C,D=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+D)),D+=R[O].length,i){let B=i[O];for(let V=0;V{ke();zt();Fi();Tr();aL();fn();gR=1,oL=-1;Me.CreateTiledBox=XH});function jH(n){let e=(n.segments||32)|0,t=n.diameterX||n.diameter||1,i=n.diameterY||n.diameter||1,r=n.diameterZ||n.diameter||1,s=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,a=n.slice&&n.slice<=0?1:n.slice||1,o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,h=[],u=[],m=[],_=[];for(let g=0;g<=f;g++){let v=g/f,T=v*Math.PI*a;for(let S=0;S<=d;S++){let E=S/d,A=E*Math.PI*2*s,R=Z.RotationZ(-T),M=Z.RotationY(A),y=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(y,M),D=C.multiply(c),w=C.divide(c).normalize();u.push(D.x,D.y,D.z),m.push(w.x,w.y,w.z),_.push(E,yt?1-v:v)}if(g>0){let S=u.length/3;for(let E=S-2*(d+1);E+d+21&&(h.push(E),h.push(E+1),h.push(E+d+1)),(g{ke();Fi();Tr();fn();Me.CreateSphere=jH;q.CreateSphere=(n,e,t,i,r,s)=>lL(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function qH(n){let e=n.height||2,t=n.diameterTop===0?0:n.diameterTop||n.diameter||1,i=n.diameterBottom===0?0:n.diameterBottom||n.diameter||1;t=t||1e-5,i=i||1e-5;let r=(n.tessellation||24)|0,s=(n.subdivisions||1)|0,a=!!n.hasRings,o=!!n.enclose,l=n.cap===0?0:n.cap||q.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,d=n.faceUV||new Array(3),h=n.faceColors,u=c!==1&&o?2:0,m=a?s:1,_=2+(1+u)*m,p;for(p=0;p<_;p++)h&&h[p]===void 0&&(h[p]=new ft(1,1,1,1));for(p=0;p<_;p++)d&&d[p]===void 0&&(d[p]=new Ni(0,0,1,1));let g=[],v=[],T=[],S=[],E=[],A=Math.PI*2*c/r,R,M,y,C=(i-t)/2/e,D=b.Zero(),w=b.Zero(),G=b.Zero(),O=b.Zero(),N=b.Zero(),B=Hs.Y,V,Q,K,J,z=1,Y=0,de;for(V=0;V<=s;V++)for(M=V/s,y=(M*(t-i)+i)/2,J=a&&V!==0&&V!==s?2:1,K=0;K{let ie=ve?t/2:i/2;if(ie===0)return;let ue,Pe,me,be=ve?d[_-1]:d[0],De=null;h&&(De=ve?h[_-1]:h[0]);let ut=v.length/3,Ye=ve?e/2:-e/2,je=new b(0,Ye,0);v.push(je.x,je.y,je.z),T.push(0,ve?1:-1,0);let Qt=be.y+(be.w-be.y)*.5;S.push(be.x+(be.z-be.x)*.5,yt?1-Qt:Qt),De&&E.push(De.r,De.g,De.b,De.a);let Pt=new we(.5,.5);for(me=0;me<=r;me++){ue=Math.PI*2*me*c/r;let Ti=Math.cos(-ue),se=Math.sin(-ue);Pe=new b(Ti*ie,Ye,se*ie);let Di=new we(Ti*Pt.x+.5,se*Pt.y+.5);v.push(Pe.x,Pe.y,Pe.z),T.push(0,ve?1:-1,0);let ii=be.y+(be.w-be.y)*Di.y;S.push(be.x+(be.z-be.x)*Di.x,yt?1-ii:ii),De&&E.push(De.r,De.g,De.b,De.a)}for(me=0;me{ke();zt();Fi();Tr();Ys();Mm();fn();Me.CreateCylinder=qH;q.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ti))&&(a!==void 0&&(l=o||q.DEFAULTSIDE,o=a),a=s,s=1),cL(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function $H(n){let e=[],t=[],i=[],r=[],s=n.diameter||1,a=n.thickness||.5,o=(n.tessellation||16)|0,l=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let h=d/o,u=d*Math.PI*2/o-Math.PI/2,m=Z.Translation(s/2,0,0).multiply(Z.RotationY(u));for(let _=0;_<=o;_++){let p=1-_/o,g=_*Math.PI*2/o+Math.PI,v=Math.cos(g),T=Math.sin(g),S=new b(v,T,0),E=S.scale(a/2),A=new we(h,p);E=b.TransformCoordinates(E,m),S=b.TransformNormal(S,m),t.push(E.x,E.y,E.z),i.push(S.x,S.y,S.z),r.push(A.x,yt?1-A.y:A.y);let R=(d+1)%c,M=(_+1)%c;e.push(d*c+_),e.push(d*c+M),e.push(R*c+_),e.push(d*c+M),e.push(R*c+M),e.push(R*c+_)}}Me._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function fL(n,e={},t){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,$H(e).applyToMesh(i,e.updatable),i}var JH=I(()=>{ke();Fi();Tr();fn();Me.CreateTorus=$H;q.CreateTorus=(n,e,t,i,r,s,a)=>fL(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function ez(n){let e=[],t=[],i=[],r=[],s=n.radius||2,a=n.tube||.5,o=n.radialSegments||32,l=n.tubularSegments||32,c=n.p||2,f=n.q||3,d=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,h=p=>{let g=Math.cos(p),v=Math.sin(p),T=f/c*p,S=Math.cos(T),E=s*(2+S)*.5*g,A=s*(2+S)*v*.5,R=s*Math.sin(T)*.5;return new b(E,A,R)},u,m;for(u=0;u<=o;u++){let g=u%o/o*2*c*Math.PI,v=h(g),T=h(g+.01),S=T.subtract(v),E=T.add(v),A=b.Cross(S,E);for(E=b.Cross(A,S),A.normalize(),E.normalize(),m=0;m{ke();Fi();Tr();fn();Me.CreateTorusKnot=ez;q.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>dL(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var Tc,hL=I(()=>{ke();Lt();$m();Fi();Gg();Vf();Zi();wi();$i();q._instancedMeshFactory=(n,e)=>{let t=new Tc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};Tc=class extends yr{constructor(e,t){super(e,t.getScene()),this._indexInSourceMeshInstanceArray=-1,this._distanceToCamera=0,t.addInstance(this),this._sourceMesh=t,this._unIndexed=t._unIndexed,this.position.copyFrom(t.position),this.rotation.copyFrom(t.rotation),this.scaling.copyFrom(t.scaling),t.rotationQuaternion&&(this.rotationQuaternion=t.rotationQuaternion.clone()),this.animations=t.animations.slice();for(let i of t.getAnimationRanges())i!=null&&this.createAnimationRange(i.name,i.from,i.to);if(this.infiniteDistance=t.infiniteDistance,this.setPivotMatrix(t.getPivotMatrix()),!t.skeleton&&!t.morphTargetManager&&t.hasBoundingInfo){let i=t.getBoundingInfo();this.buildBoundingInfo(i.minimum,i.maximum)}else this.refreshBoundingInfo(!0,!0);this._syncSubMeshes()}getClassName(){return"InstancedMesh"}get lightSources(){return this._sourceMesh._lightSources}_resyncLightSources(){}_resyncLightSource(){}_removeLightSource(){}get receiveShadows(){return this._sourceMesh.receiveShadows}set receiveShadows(e){var t;((t=this._sourceMesh)==null?void 0:t.receiveShadows)!==e&&pe.Warn("Setting receiveShadows on an instanced mesh has no effect")}get material(){return this._sourceMesh.material}set material(e){var t;((t=this._sourceMesh)==null?void 0:t.material)!==e&&pe.Warn("Setting material on an instanced mesh has no effect")}get visibility(){return this._sourceMesh.visibility}set visibility(e){var t;((t=this._sourceMesh)==null?void 0:t.visibility)!==e&&pe.Warn("Setting visibility on an instanced mesh has no effect")}get skeleton(){return this._sourceMesh.skeleton}set skeleton(e){var t;((t=this._sourceMesh)==null?void 0:t.skeleton)!==e&&pe.Warn("Setting skeleton on an instanced mesh has no effect")}get renderingGroupId(){return this._sourceMesh.renderingGroupId}set renderingGroupId(e){!this._sourceMesh||e===this._sourceMesh.renderingGroupId||ee.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene")}getTotalVertices(){return this._sourceMesh?this._sourceMesh.getTotalVertices():0}getTotalIndices(){return this._sourceMesh.getTotalIndices()}get sourceMesh(){return this._sourceMesh}get geometry(){return this._sourceMesh._geometry}createInstance(e){return this._sourceMesh.createInstance(e)}isReady(e=!1){return this._sourceMesh.isReady(e,!0)}getVerticesData(e,t,i){return this._sourceMesh.getVerticesData(e,t,i)}copyVerticesData(e,t){this._sourceMesh.copyVerticesData(e,t)}getVertexBuffer(e,t){return this._sourceMesh.getVertexBuffer(e,t)}setVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.setVerticesData(e,t,i,r),this.sourceMesh}updateVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.updateVerticesData(e,t,i,r),this.sourceMesh}setIndices(e,t=null){return this.sourceMesh&&this.sourceMesh.setIndices(e,t),this.sourceMesh}isVerticesDataPresent(e){return this._sourceMesh.isVerticesDataPresent(e)}getIndices(){return this._sourceMesh.getIndices()}get _positions(){return this._sourceMesh._positions}refreshBoundingInfo(e=!1,t=!1){if(this.hasBoundingInfo&&this.getBoundingInfo().isLocked)return this;let i;typeof e=="object"?i=e:i={applySkeleton:e,applyMorph:t};let r=this._sourceMesh.geometry?this._sourceMesh.geometry.boundingBias:null;return this._refreshBoundingInfo(this._sourceMesh._getData(i,null,L.PositionKind),r),this}_preActivate(){return this._currentLOD&&this._currentLOD._preActivate(),this}_activate(e,t){if(super._activate(e,t),this._sourceMesh.subMeshes||ee.Warn("Instances should only be created for meshes with geometry."),this._currentLOD){if(this._currentLOD._getWorldMatrixDeterminant()>=0!=this._getWorldMatrixDeterminant()>=0)return this._internalAbstractMeshDataInfo._actAsRegularMesh=!0,!0;if(this._internalAbstractMeshDataInfo._actAsRegularMesh=!1,this._currentLOD._registerInstanceForRenderId(this,e),t){if(!this._currentLOD._internalAbstractMeshDataInfo._isActiveIntermediate)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstancesIntermediate=!0,!0}else if(!this._currentLOD._internalAbstractMeshDataInfo._isActive)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstances=!0,!0}return!1}_postActivate(){this._sourceMesh.edgesShareWithInstances&&this._sourceMesh._edgesRenderer&&this._sourceMesh._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup?(this._sourceMesh._renderingGroup._edgesRenderers.pushNoDuplicate(this._sourceMesh._edgesRenderer),this._sourceMesh._edgesRenderer.customInstances.push(this.getWorldMatrix())):this._edgesRenderer&&this._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup&&this._sourceMesh._renderingGroup._edgesRenderers.push(this._edgesRenderer)}getWorldMatrix(){if(this._currentLOD&&this._currentLOD!==this._sourceMesh&&this._currentLOD.billboardMode!==Zt.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new Z);let e=this._currentLOD._masterMesh;return this._currentLOD._masterMesh=this,$.Vector3[7].copyFrom(this._currentLOD.position),this._currentLOD.position.set(0,0,0),this._billboardWorldMatrix.copyFrom(this._currentLOD.computeWorldMatrix(!0)),this._currentLOD.position.copyFrom($.Vector3[7]),this._currentLOD._masterMesh=e,this._billboardWorldMatrix}return super.getWorldMatrix()}get isAnInstance(){return!0}getLOD(e){if(!e)return this;let t=this.sourceMesh.getLODLevels();if(!t||t.length===0)this._currentLOD=this.sourceMesh;else{let i=this.getBoundingInfo();this._currentLOD=this.sourceMesh.getLOD(e,i.boundingSphere)}return this._currentLOD}_preActivateForIntermediateRendering(e){return this.sourceMesh._preActivateForIntermediateRendering(e)}_syncSubMeshes(){if(this.releaseSubMeshes(),this._sourceMesh.subMeshes)for(let e=0;e{ns=class{constructor(){this._defines={},this._currentRank=32,this._maxRank=-1,this._mesh=null}unBindMesh(){this._mesh=null}addFallback(e,t){this._defines[e]||(ethis._maxRank&&(this._maxRank=e),this._defines[e]=new Array),this._defines[e].push(t)}addCPUSkinningFallback(e,t){this._mesh=t,ethis._maxRank&&(this._maxRank=e)}get hasMoreFallbacks(){return this._currentRank<=this._maxRank}reduce(e,t){if(this._mesh&&this._mesh.computeBonesUsingShaders&&this._mesh.numBoneInfluencers>0){this._mesh.computeBonesUsingShaders=!1,e=e.replace("#define NUM_BONE_INFLUENCERS "+this._mesh.numBoneInfluencers,"#define NUM_BONE_INFLUENCERS 0"),t._bonesComputationForcedToCPU=!0;let i=this._mesh.getScene();for(let r=0;r0&&(s.computeBonesUsingShaders=!1);continue}if(!(!s.computeBonesUsingShaders||s.numBoneInfluencers===0)){if(s.material.getEffect()===t)s.computeBonesUsingShaders=!1;else if(s.subMeshes){for(let a of s.subMeshes)if(a.effect===t){s.computeBonesUsingShaders=!1;break}}}}}else{let i=this._defines[this._currentRank];if(i)for(let r=0;r{ke();ts();Pl=class extends Se{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new Z,this._storeEffectOnSubMeshes=i}getEffect(){return this._storeEffectOnSubMeshes?this._activeEffect:super.getEffect()}isReady(e,t){return e?!this._storeEffectOnSubMeshes||!e.subMeshes||e.subMeshes.length===0?!0:this.isReadyForSubMesh(e,e.subMeshes[0],t):!1}_isReadyForSubMesh(e){let t=e.materialDefines;return!!(!this.checkReadyOnEveryCall&&e.effect&&t&&t._renderId===this.getScene().getRenderId())}bindOnlyWorldMatrix(e){this._activeEffect.setMatrix("world",e)}bindOnlyNormalMatrix(e){this._activeEffect.setMatrix("normalMatrix",e)}bind(e,t){t&&this.bindForSubMesh(e,t,t.subMeshes[0])}_afterBind(e,t=null,i){super._afterBind(e,t,i),this.getScene()._cachedEffect=t,i?i._drawWrapper._forceRebindOnNextCall=!1:this._drawWrapper._forceRebindOnNextCall=!1}_mustRebind(e,t,i,r=1){return i._drawWrapper._forceRebindOnNextCall||e.isCachedMaterialInvalid(this,t,r)}dispose(e,t,i){this._activeEffect=void 0,super.dispose(e,t,i)}}});function $f(n){let e=n.getVertexBuffers();if(!e)return null;let t=iz.get(n);if(!t)t=new Map,iz.set(n,t);else{let i=!1;for(let r in e)if(!t.has(r)){i=!0;break}if(!i)return t}for(let i in e){let r=e[i];if(r){let s=r.byteOffset,a=r.byteStride,o=r.type,l=r.normalized;t.set(i,{offset:s,stride:a,type:o,normalized:l})}}return t}function Jf(n,e){e.forEach((t,i)=>{let r=`vp_${i}_info`;n.setFloat4(r,t.offset,t.stride,t.type,t.normalized?1:0)})}var iz,mv=I(()=>{iz=new WeakMap});var uL,Uo,mL=I(()=>{Dr();Ys();ke();Zi();Xr();$i();Qf();_h();uv();Gi();Ml();es();mv();uL={effect:null,subMesh:null},Uo=class n extends Pl{constructor(e,t,i,r={},s=!0){super(e,t,s),this._textures={},this._internalTextures={},this._textureArrays={},this._externalTextures={},this._floats={},this._ints={},this._uints={},this._floatsArrays={},this._colors3={},this._colors3Arrays={},this._colors4={},this._colors4Arrays={},this._vectors2={},this._vectors3={},this._vectors4={},this._quaternions={},this._quaternionsArrays={},this._matrices={},this._matrixArrays={},this._matrices3x3={},this._matrices2x2={},this._vectors2Arrays={},this._vectors3Arrays={},this._vectors4Arrays={},this._uniformBuffers={},this._textureSamplers={},this._storageBuffers={},this._cachedWorldViewMatrix=new Z,this._cachedWorldViewProjectionMatrix=new Z,this._multiview=!1,this._vertexPullingMetadata=null,this._materialHelperNeedsPreviousMatrices=!1,this._shaderPath=i,this._options={needAlphaBlending:!1,needAlphaTesting:!1,attributes:["position","normal","uv"],uniforms:["worldViewProjection"],uniformBuffers:[],samplers:[],externalTextures:[],samplerObjects:[],storageBuffers:[],defines:[],useClipPlane:!1,...r}}get shaderPath(){return this._shaderPath}set shaderPath(e){this._shaderPath=e}get options(){return this._options}get isMultiview(){return this._multiview}getClassName(){return"ShaderMaterial"}needAlphaBlending(){return this.alpha<1||this._options.needAlphaBlending}needAlphaTesting(){return this._options.needAlphaTesting}_checkUniform(e){this._options.uniforms.indexOf(e)===-1&&this._options.uniforms.push(e)}setTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._textures[e]=t,this}setInternalTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._internalTextures[e]=t,this}removeTexture(e){delete this._textures[e]}setTextureArray(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._checkUniform(e),this._textureArrays[e]=t,this}setExternalTexture(e,t){return this._options.externalTextures.indexOf(e)===-1&&this._options.externalTextures.push(e),this._externalTextures[e]=t,this}setFloat(e,t){return this._checkUniform(e),this._floats[e]=t,this}setInt(e,t){return this._checkUniform(e),this._ints[e]=t,this}setUInt(e,t){return this._checkUniform(e),this._uints[e]=t,this}setFloats(e,t){return this._checkUniform(e),this._floatsArrays[e]=t,this}setColor3(e,t){return this._checkUniform(e),this._colors3[e]=t,this}setColor3Array(e,t){return this._checkUniform(e),this._colors3Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b),i),[]),this}setColor4(e,t){return this._checkUniform(e),this._colors4[e]=t,this}setColor4Array(e,t){return this._checkUniform(e),this._colors4Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b,r.a),i),[]),this}setVector2(e,t){return this._checkUniform(e),this._vectors2[e]=t,this}setVector3(e,t){return this._checkUniform(e),this._vectors3[e]=t,this}setVector4(e,t){return this._checkUniform(e),this._vectors4[e]=t,this}setQuaternion(e,t){return this._checkUniform(e),this._quaternions[e]=t,this}setQuaternionArray(e,t){return this._checkUniform(e),this._quaternionsArrays[e]=t.reduce((i,r)=>(r.toArray(i,i.length),i),[]),this}setMatrix(e,t){return this._checkUniform(e),this._matrices[e]=t,this}setMatrices(e,t){this._checkUniform(e);let i=new Float32Array(t.length*16);for(let r=0;rs===e||s.startsWith(i));return r>=0&&this.options.defines.splice(r,1),(typeof t!="boolean"||t)&&this.options.defines.push(i+t),this}isReadyForSubMesh(e,t,i){return this.isReady(e,i,t)}isReady(e,t,i){var A,R,M,y;let r=i&&this._storeEffectOnSubMeshes;if(this.isFrozen){let C=r?i._drawWrapper:this._drawWrapper;if(C.effect&&C._wasPreviouslyReady&&C._wasPreviouslyUsingInstances===t)return!0}let s=this.getScene(),a=s.getEngine(),o=[],l=[],c=null,f=this._shaderPath,d=this._options.uniforms,h=this._options.uniformBuffers,u=this._options.samplers;a.getCaps().multiview&&s.activeCamera&&s.activeCamera.outputRenderTarget&&s.activeCamera.outputRenderTarget.getViewCount()>1&&(this._multiview=!0,o.push("#define MULTIVIEW"),d.indexOf("viewProjection")!==-1&&d.indexOf("viewProjectionR")===-1&&d.push("viewProjectionR"));for(let C=0;C4&&(l.push(L.MatricesIndicesExtraKind),l.push(L.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new ns,c.addCPUSkinningFallback(0,e),C.isUsingTextureForMatrices?(o.push("#define BONETEXTURE"),d.indexOf("boneTextureInfo")===-1&&d.push("boneTextureInfo"),this._options.samplers.indexOf("boneSampler")===-1&&this._options.samplers.push("boneSampler")):(o.push("#define BonesPerMesh "+(C.bones.length+1)),d.indexOf("mBones")===-1&&d.push("mBones"))}else o.push("#define NUM_BONE_INFLUENCERS 0");let m=0,_=e?e.morphTargetManager:null;if(_){let C=o.indexOf("#define UV1")!==-1,D=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,G=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=Il(_,o,l,e,!0,G,w,C,D,O),_.isUsingTextureForTargets&&(d.indexOf("morphTargetTextureIndices")===-1&&d.push("morphTargetTextureIndices"),this._options.samplers.indexOf("morphTargets")===-1&&this._options.samplers.push("morphTargets")),m>0&&(d=d.slice(),d.push("morphTargetInfluences"),d.push("morphTargetCount"),d.push("morphTargetTextureInfo"),d.push("morphTargetTextureIndices"))}else o.push("#define NUM_MORPH_INFLUENCERS 0");if(e){let C=e.bakedVertexAnimationManager;C&&C.isEnabled&&(o.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),d.indexOf("bakedVertexAnimationSettings")===-1&&d.push("bakedVertexAnimationSettings"),d.indexOf("bakedVertexAnimationTextureSizeInverted")===-1&&d.push("bakedVertexAnimationTextureSizeInverted"),d.indexOf("bakedVertexAnimationTime")===-1&&d.push("bakedVertexAnimationTime"),this._options.samplers.indexOf("bakedVertexAnimationTexture")===-1&&this._options.samplers.push("bakedVertexAnimationTexture"),t&&l.push("bakedVertexAnimationSettingsInstanced"))}for(let C in this._textures)if(!this._textures[C].isReady())return!1;for(let C in this._internalTextures)if(!this._internalTextures[C].isReady)return!1;e&&this.needAlphaTestingForMesh(e)&&o.push("#define ALPHATEST"),this._options.useClipPlane!==!1&&(Qn(d),bl(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ti.FOGMODE_NONE&&(o.push("#define FOG"),d.indexOf("view")===-1&&d.push("view"),d.indexOf("vFogInfos")===-1&&d.push("vFogInfos"),d.indexOf("vFogColor")===-1&&d.push("vFogColor")),this._useLogarithmicDepth&&(o.push("#define LOGARITHMICDEPTH"),d.indexOf("logarithmicDepthConstant")===-1&&d.push("logarithmicDepthConstant"));let p=i?i.getRenderingMesh():e;if(p&&this.useVertexPulling){let C=p.geometry;C&&(this._vertexPullingMetadata=$f(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,G)=>{d.push(`vp_${G}_info`)})),o.push("#define USE_VERTEX_PULLING");let D=(A=p.geometry)==null?void 0:A.getIndexBuffer();D&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),D.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),h=h.slice(),u=u.slice(),f=this.customShaderNameResolve(this.name,d,h,u,o,l));let g=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=g==null?void 0:g.effect)!=null?R:null,T=(M=g==null?void 0:g.defines)!=null?M:null,S=o.join(` +Bad Bone Indices = `+m;return{skinned:!0,valid:s===0&&o===0&&m===0,report:_}}_checkDelayState(){let e=this.getScene();return this._geometry?this._geometry.load(e):this.delayLoadState===4&&(this.delayLoadState=2,this._queueLoad(e)),this}_queueLoad(e){e.addPendingData(this);let t=this.delayLoadingFile.indexOf(".babylonbinarymeshdata")!==-1;return pe.LoadFile(this.delayLoadingFile,i=>{i instanceof ArrayBuffer?this._delayLoadingFunction(i,this):this._delayLoadingFunction(JSON.parse(i),this);for(let r of this.instances)r.refreshBoundingInfo(),r._syncSubMeshes();this.delayLoadState=1,e.removePendingData(this)},()=>{},e.offlineProvider,t),this}isInFrustum(e){return this.delayLoadState===2||!super.isInFrustum(e)?!1:(this._checkDelayState(),!0)}setMaterialById(e){let t=this.getScene().materials,i;for(i=t.length-1;i>-1;i--)if(t[i].id===e)return this.material=t[i],this;let r=this.getScene().multiMaterials;for(i=r.length-1;i>-1;i--)if(r[i].id===e)return this.material=r[i],this;return this}getAnimatables(){let e=[];return this.material&&e.push(this.material),this.skeleton&&e.push(this.skeleton),e}bakeTransformIntoVertices(e){if(!this.isVerticesDataPresent(L.PositionKind))return this;let t=this.subMeshes.splice(0);this._resetPointsArrayCache();let i=this.getVerticesData(L.PositionKind),r=b.Zero(),s;for(s=0;s{let h=d.width,u=d.height,_=this.getEngine().createCanvas(h,u).getContext("2d");_.drawImage(d,0,0);let p=_.getImageData(0,0,h,u).data;this.applyDisplacementMapFromBuffer(p,h,u,t,i,s,a,o),r&&r(this)};return pe.LoadImage(e,f,l||(()=>{}),c.offlineProvider),this}applyDisplacementMapFromBuffer(e,t,i,r,s,a,o,l=!1){if(!this.isVerticesDataPresent(L.PositionKind)||!this.isVerticesDataPresent(L.NormalKind)||!this.isVerticesDataPresent(L.UVKind))return ee.Warn("Cannot call applyDisplacementMap: Given mesh is not complete. Position, Normal or UV are missing"),this;let c=this.getVerticesData(L.PositionKind,!0,!0),f=this.getVerticesData(L.NormalKind),d=this.getVerticesData(L.UVKind),h=b.Zero(),u=b.Zero(),m=we.Zero();a=a||we.Zero(),o=o||new we(1,1);for(let _=0;_{var c;return!((c=this.getVertexBuffer(l))!=null&&c.getIsInstanced())}),i=this.getIndices(!1,!0),r={},s=(l,c)=>{let f=new Float32Array(i.length*c),d=0;for(let h=0;h{let o=r.length-1-a,l=r[o];for(let c=0;c{for(let o=0;o-1&&(r._waitingMorphTargetManagerId=e.morphTargetManagerId),e.skeletonId!==void 0&&e.skeletonId!==null&&(r.skeleton=t.getLastSkeletonById(e.skeletonId),r._waitingSkeletonId=e.skeletonId,e.numBoneInfluencers&&(r.numBoneInfluencers=e.numBoneInfluencers)),e.skeletonUniqueId!==void 0&&e.skeletonUniqueId!==null&&(r._waitingSkeletonUniqueId=e.skeletonUniqueId),e.animations){for(let a=0;a4,c=l?this.getVerticesData(L.MatricesIndicesExtraKind):null,f=l?this.getVerticesData(L.MatricesWeightsExtraKind):null,d=e.getTransformMatrices(this),h=b.Zero(),u=new Z,m=new Z,_=0,p;for(let g=0;g0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(a[_+p]*16),v,m),u.addToSelf(m));if(l)for(p=0;p<4;p++)v=f[_+p],v>0&&(Z.FromFloat32ArrayToRefScaled(d,Math.floor(c[_+p]*16),v,m),u.addToSelf(m));b.TransformCoordinatesFromFloatsToRef(i._sourcePositions[g],i._sourcePositions[g+1],i._sourcePositions[g+2],u,h),h.toArray(r,g),t&&(b.TransformNormalFromFloatsToRef(i._sourceNormals[g],i._sourceNormals[g+1],i._sourceNormals[g+2],u,h),h.toArray(s,g)),u.reset()}return this.updateVerticesData(L.PositionKind,r),t&&this.updateVerticesData(L.NormalKind,s),this}static MinMax(e){let t=null,i=null;for(let r of e){let a=r.getBoundingInfo().boundingBox;!t||!i?(t=a.minimumWorld.clone(),i=a.maximumWorld.clone()):(t.minimizeInPlace(a.minimumWorld),i.maximizeInPlace(a.maximumWorld))}return!t||!i?{min:b.Zero(),max:b.Zero()}:{min:t,max:i}}static Center(e){let t=e instanceof Array?n.MinMax(e):e;return b.Center(t.min,t.max)}static MergeMeshes(e,t=!0,i,r,s,a){return lv(n._MergeMeshesCoroutine(e,t,i,r,s,a,!1))}static async MergeMeshesAsync(e,t=!0,i,r,s,a){return await dH(n._MergeMeshesCoroutine(e,t,i,r,s,a,!0),cH())}static*_MergeMeshesCoroutine(e,t=!0,i,r,s,a,o){if(e=e.filter(Boolean),e.length===0)return null;let l;if(!i){let R=0;for(l=0;l=65536)return ee.Warn("Cannot merge meshes because resulting mesh will have more than 65536 vertices. Please use allow32BitsIndices = true to use 32 bits indices"),null}let c=e[0];a&&(s=!1,e.sort((R,M)=>{var y,C,D,w;return((C=(y=R.material)==null?void 0:y.uniqueId)!=null?C:-1)-((w=(D=M.material)==null?void 0:D.uniqueId)!=null?w:-1)}));let f=new Array,d=new Array,h=new Array,u=e[0].sideOrientation;for(l=0;lMath.max(y,C.start+C.count),0);if(a)if(R.material){let y=R.material;if(y instanceof _p){for(let C=0;C1){let R=0;for(let M=1;M{let M=R.computeWorldMatrix(!0);return{vertexData:Me.ExtractFromMesh(R,!1,!1),transform:M}},{vertexData:_,transform:p}=m(e[0]);o&&(yield);let g=new Array(e.length-1);for(let R=1;R{throw Qe("GroundMesh")};q._GoldbergMeshParser=(n,e)=>{throw Qe("GoldbergMesh")};q._LinesMeshParser=(n,e)=>{throw Qe("LinesMesh")};q._GreasedLineMeshParser=(n,e)=>{throw Qe("GreasedLineMesh")};q._GreasedLineRibbonMeshParser=(n,e)=>{throw Qe("GreasedLineRibbonMesh")};q._TrailMeshParser=(n,e)=>{throw Qe("TrailMesh")};q._GaussianSplattingMeshParser=(n,e)=>{throw Qe("GaussianSplattingMesh")};q._GaussianSplattingPartProxyMeshParser=(n,e)=>{throw Qe("GaussianSplattingPartProxyMesh")};q._GaussianSplattingCompoundMeshParser=(n,e)=>{throw Qe("GaussianSplattingCompoundMesh")};Ut("BABYLON.Mesh",q)});var vp,GD=I(()=>{yo();tc();Kn();vp=class{constructor(){this._zoomStopsAnimation=!1,this._idleRotationSpeed=.05,this._idleRotationWaitTime=2e3,this._idleRotationSpinupTime=2e3,this.targetAlpha=null,this._attachedCamera=null,this._isPointerDown=!1,this._lastFrameTime=null,this._lastInteractionTime=-1/0,this._cameraRotationSpeed=0,this._lastFrameRadius=0}get name(){return"AutoRotation"}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set idleRotationSpeed(e){this._idleRotationSpeed=e}get idleRotationSpeed(){return this._idleRotationSpeed}set idleRotationWaitTime(e){this._idleRotationWaitTime=e}get idleRotationWaitTime(){return this._idleRotationWaitTime}set idleRotationSpinupTime(e){this._idleRotationSpinupTime=e}get idleRotationSpinupTime(){return this._idleRotationSpinupTime}get rotationInProgress(){return Math.abs(this._cameraRotationSpeed)>0}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{if(this._reachTargetAlpha())return;let i=br.Now,r=0;this._lastFrameTime!=null&&(r=i-this._lastFrameTime),this._lastFrameTime=i,this._applyUserInteraction();let s=i-this._lastInteractionTime-this._idleRotationWaitTime,a=Math.max(Math.min(s/this._idleRotationSpinupTime,1),0);this._cameraRotationSpeed=this._idleRotationSpeed*a,this._attachedCamera&&(this._attachedCamera.alpha-=this._cameraRotationSpeed*(r/1e3))})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._attachedCamera=null,this._lastFrameTime=null}resetLastInteractionTime(e){this._lastInteractionTime=e!=null?e:br.Now}_reachTargetAlpha(){return this._attachedCamera&&this.targetAlpha?Math.abs(this._attachedCamera.alpha-this.targetAlpha){ph();wo=class n{constructor(){this._easingMode=n.EASINGMODE_EASEIN}setEasingMode(e){let t=Math.min(Math.max(e,0),2);this._easingMode=t}getEasingMode(){return this._easingMode}easeInCore(e){throw new Error("You must implement this method")}ease(e){switch(this._easingMode){case n.EASINGMODE_EASEIN:return this.easeInCore(e);case n.EASINGMODE_EASEOUT:return 1-this.easeInCore(1-e)}return e>=.5?(1-this.easeInCore((1-e)*2))*.5+.5:this.easeInCore(e*2)*.5}};wo.EASINGMODE_EASEIN=0;wo.EASINGMODE_EASEOUT=1;wo.EASINGMODE_EASEINOUT=2;fR=class extends wo{constructor(e=1){super(),this.amplitude=e}easeInCore(e){let t=Math.max(0,this.amplitude);return Math.pow(e,3)-e*t*Math.sin(3.141592653589793*e)}},dR=class extends wo{constructor(e=2){super(),this.exponent=e}easeInCore(e){return this.exponent<=0?e:(Math.exp(this.exponent*e)-1)/(Math.exp(this.exponent)-1)}}});var Xf,WD=I(()=>{Xf=class n{constructor(e,t,i){this.name=e,this.from=t,this.to=i}clone(){return new n(this.name,this.from,this.to)}}});var HD,zD,XD,YD,KD,jD,Fo,mt,Yf=I(()=>{ke();zt();jn();$i();WD();_a();dx();_h();Dr();HD=Object.freeze(new Ke(0,0,0,0)),zD=Object.freeze(b.Zero()),XD=Object.freeze(we.Zero()),YD=Object.freeze(nc.Zero()),KD=Object.freeze(Ee.Black()),jD=Object.freeze(new ft(0,0,0,0)),Fo={key:0,repeatCount:0,loopMode:2},mt=class n{static _PrepareAnimation(e,t,i,r,s,a,o,l){let c;if(!isNaN(parseFloat(s))&&isFinite(s)?c=n.ANIMATIONTYPE_FLOAT:s instanceof Ke?c=n.ANIMATIONTYPE_QUATERNION:s instanceof b?c=n.ANIMATIONTYPE_VECTOR3:s instanceof we?c=n.ANIMATIONTYPE_VECTOR2:s instanceof Ee?c=n.ANIMATIONTYPE_COLOR3:s instanceof ft?c=n.ANIMATIONTYPE_COLOR4:s instanceof nc&&(c=n.ANIMATIONTYPE_SIZE),c==null)return null;let f=new n(e,t,i,c,o),d=[{frame:0,value:s},{frame:r,value:a}];return f.setKeys(d),l!==void 0&&f.setEasingFunction(l),f}static CreateAnimation(e,t,i,r){let s=new n(e+"Animation",e,i,t,n.ANIMATIONLOOPMODE_CONSTANT);return s.setEasingFunction(r),s}static CreateAndStartAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,i,r,s,a,o,l,c);return!h||(t.getScene&&(d=t.getScene()),!d)?null:d.beginDirectAnimation(t,[h],0,s,h.loopMode!==n.ANIMATIONLOOPMODE_CONSTANT,1,f)}static CreateAndStartHierarchyAnimation(e,t,i,r,s,a,o,l,c,f,d){let h=n._PrepareAnimation(e,r,s,a,o,l,c,f);return h?t.getScene().beginDirectHierarchyAnimation(t,i,[h],0,a,h.loopMode===1,1,d):null}static CreateMergeAndStartAnimation(e,t,i,r,s,a,o,l,c,f){let d=n._PrepareAnimation(e,i,r,s,a,o,l,c);return d?(t.animations.push(d),t.getScene().beginAnimation(t,0,s,d.loopMode===1,1,f)):null}static MakeAnimationAdditive(e,t,i,r=!1,s){var v,T;let a;typeof t=="object"?a=t:a={referenceFrame:t!=null?t:0,range:i,cloneOriginalAnimation:r,clonedAnimationName:s};let o=e;if(a.cloneOriginalAnimation&&(o=e.clone(),o.name=a.clonedAnimationName||o.name),!o._keys.length)return o;let l=a.referenceFrame&&a.referenceFrame>=0?a.referenceFrame:0,c=0,f=o._keys[0],d=o._keys.length-1,h=o._keys[d],u={referenceValue:f.value,referencePosition:$.Vector3[0],referenceQuaternion:$.Quaternion[0],referenceScaling:$.Vector3[1],keyPosition:$.Vector3[2],keyQuaternion:$.Quaternion[1],keyScaling:$.Vector3[3]},m=f.frame,_=h.frame;if(a.range){let S=o.getRange(a.range);S&&(m=S.from,_=S.to)}else m=(v=a.fromFrame)!=null?v:m,_=(T=a.toFrame)!=null?T:_;if(m!==f.frame&&(c=o.createKeyForFrame(m)),_!==h.frame&&(d=o.createKeyForFrame(_)),o._keys.length===1){let S=o._getKeyValue(o._keys[0]);u.referenceValue=S.clone?S.clone():S}else if(l<=f.frame){let S=o._getKeyValue(f.value);u.referenceValue=S.clone?S.clone():S}else if(l>=h.frame){let S=o._getKeyValue(h.value);u.referenceValue=S.clone?S.clone():S}else{Fo.key=0;let S=o._interpolate(l,Fo);u.referenceValue=S.clone?S.clone():S}o.dataType===n.ANIMATIONTYPE_QUATERNION?u.referenceValue.normalize().conjugateInPlace():o.dataType===n.ANIMATIONTYPE_MATRIX&&(u.referenceValue.decompose(u.referenceScaling,u.referenceQuaternion,u.referencePosition),u.referenceQuaternion.normalize().conjugateInPlace());let p=Number.MAX_VALUE,g=a.clipKeys?[]:null;for(let S=c;S<=d;S++){let E=o._keys[S];if((g||a.cloneOriginalAnimation)&&(E={frame:E.frame,value:E.value.clone?E.value.clone():E.value,inTangent:E.inTangent,outTangent:E.outTangent,interpolation:E.interpolation,lockedTangent:E.lockedTangent,easingFunction:E.easingFunction},g&&(p===Number.MAX_VALUE&&(p=E.frame),E.frame-=p,g.push(E))),!(S&&o.dataType!==n.ANIMATIONTYPE_FLOAT&&E.value===f.value))switch(o.dataType){case n.ANIMATIONTYPE_MATRIX:E.value.decompose(u.keyScaling,u.keyQuaternion,u.keyPosition),u.keyPosition.subtractInPlace(u.referencePosition),u.keyScaling.divideInPlace(u.referenceScaling),u.referenceQuaternion.multiplyToRef(u.keyQuaternion,u.keyQuaternion),Z.ComposeToRef(u.keyScaling,u.keyQuaternion,u.keyPosition,E.value);break;case n.ANIMATIONTYPE_QUATERNION:u.referenceValue.multiplyToRef(E.value,E.value);break;case n.ANIMATIONTYPE_VECTOR2:case n.ANIMATIONTYPE_VECTOR3:case n.ANIMATIONTYPE_COLOR3:case n.ANIMATIONTYPE_COLOR4:E.value.subtractToRef(u.referenceValue,E.value);break;case n.ANIMATIONTYPE_SIZE:E.value.width-=u.referenceValue.width,E.value.height-=u.referenceValue.height;break;default:E.value-=u.referenceValue}}return g&&o.setKeys(g,!0),o}static TransitionTo(e,t,i,r,s,a,o,l=null,c=!0,f){if(o<=0)return i[e]=t,l&&l(),null;let d=s*(o/1e3);return a.setKeys(f!=null?f:[{frame:0,value:i[e].clone?i[e].clone():i[e]},{frame:d,value:t}]),i.animations||(i.animations=[]),i.animations.push(a),r.beginAnimation(i,0,d,!1,1,l!=null?l:void 0,void 0,c)}get runtimeAnimations(){return this._runtimeAnimations}get hasRunningRuntimeAnimations(){for(let e of this._runtimeAnimations)if(!e.isStopped())return!0;return!1}constructor(e,t,i,r,s,a){this.name=e,this.targetProperty=t,this.framePerSecond=i,this.dataType=r,this.loopMode=s,this.enableBlending=a,this._easingFunction=null,this._runtimeAnimations=new Array,this._events=new Array,this.blendingSpeed=.01,this._ranges={},this._coreAnimation=null,this.targetPropertyPath=t.split("."),this.dataType=r,this.loopMode=s===void 0?n.ANIMATIONLOOPMODE_CYCLE:s,this.uniqueId=n._UniqueIdGenerator++}toString(e){let t="Name: "+this.name+", property: "+this.targetProperty;if(t+=", datatype: "+["Float","Vector3","Quaternion","Matrix","Color3","Vector2"][this.dataType],t+=", nKeys: "+(this._keys?this._keys.length:"none"),t+=", nRanges: "+(this._ranges?Object.keys(this._ranges).length:"none"),e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i||(t+=", "),i=!1,t+=r;t+="}"}return t}addEvent(e){this._events.push(e),this._events.sort((t,i)=>t.frame-i.frame)}removeEvents(e){for(let t=0;t=0;a--)this._keys[a].frame>=r&&this._keys[a].frame<=s&&this._keys.splice(a,1)}this._ranges[e]=null}}getRange(e){return this._ranges[e]}getKeys(){return this._keys}getHighestFrame(){let e=0;for(let t=0,i=this._keys.length;t0)return t.highLimitValue.clone?t.highLimitValue.clone():t.highLimitValue;let r=this._keys,s;if(this._coreAnimation)s=this._coreAnimation._key;else{let _=r.length;for(s=t.key;s>=0&&e=r[s+1].frame;)++s;if(t.key=s,s<0)return i?void 0:this._getKeyValue(r[0].value);if(s+1>_-1)return i?void 0:this._getKeyValue(r[_-1].value);this._key=s}let a=r[s],o=r[s+1];if(i&&(e===a.frame||e===o.frame))return;let l=this._getKeyValue(a.value),c=this._getKeyValue(o.value);if(a.interpolation===1)return o.frame>e?l:c;let f=a.outTangent!==void 0&&o.inTangent!==void 0,d=o.frame-a.frame,h=(e-a.frame)/d,u=a.easingFunction||this.getEasingFunction();switch(u&&(h=u.ease(h)),this.dataType){case n.ANIMATIONTYPE_FLOAT:{let _=f?this.floatInterpolateFunctionWithTangents(l,a.outTangent*d,c,o.inTangent*d,h):this.floatInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return((m=t.offsetValue)!=null?m:0)*t.repeatCount+_}break}case n.ANIMATIONTYPE_QUATERNION:{let _=f?this.quaternionInterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.quaternionInterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.addInPlace((t.offsetValue||HD).scale(t.repeatCount))}return _}case n.ANIMATIONTYPE_VECTOR3:{let _=f?this.vector3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||zD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_VECTOR2:{let _=f?this.vector2InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.vector2InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||XD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_SIZE:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return this.sizeInterpolateFunction(l,c,h);case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return this.sizeInterpolateFunction(l,c,h).add((t.offsetValue||YD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR3:{let _=f?this.color3InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color3InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||KD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_COLOR4:{let _=f?this.color4InterpolateFunctionWithTangents(l,a.outTangent.scale(d),c,o.inTangent.scale(d),h):this.color4InterpolateFunction(l,c,h);switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return _;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return _.add((t.offsetValue||jD).scale(t.repeatCount))}break}case n.ANIMATIONTYPE_MATRIX:{switch(t.loopMode){case n.ANIMATIONLOOPMODE_CYCLE:case n.ANIMATIONLOOPMODE_CONSTANT:case n.ANIMATIONLOOPMODE_YOYO:return n.AllowMatricesInterpolation?this.matrixInterpolateFunction(l,c,h,t.workValue):l;case n.ANIMATIONLOOPMODE_RELATIVE:case n.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT:return l}break}}return 0}matrixInterpolateFunction(e,t,i,r){return n.AllowMatrixDecomposeForInterpolation?r?(Z.DecomposeLerpToRef(e,t,i,r),r):Z.DecomposeLerp(e,t,i):r?(Z.LerpToRef(e,t,i,r),r):Z.Lerp(e,t,i)}clone(e=!1){let t=new n(this.name,this.targetPropertyPath.join("."),this.framePerSecond,this.dataType,this.loopMode);if(t.enableBlending=this.enableBlending,t.blendingSpeed=this.blendingSpeed,this._keys&&t.setKeys(this._keys,!1,e),this._ranges){t._ranges={};for(let i in this._ranges){let r=this._ranges[i];r&&(t._ranges[i]=r.clone())}}return t}setKeys(e,t=!1,i=!1){if(t)this._keys=e;else if(this._keys=e.slice(0),i)for(let r=0;r=2&&(l=o.values[1]),o.values.length>=3&&(c=o.values[2]),o.values.length>=4&&(f=o.values[3]);break;case n.ANIMATIONTYPE_QUATERNION:if(s=Ke.FromArray(o.values),o.values.length>=8){let h=Ke.FromArray(o.values.slice(4,8));h.equals(Ke.Zero())||(l=h)}if(o.values.length>=12){let h=Ke.FromArray(o.values.slice(8,12));h.equals(Ke.Zero())||(c=h)}o.values.length>=13&&(f=o.values[12]);break;case n.ANIMATIONTYPE_MATRIX:s=Z.FromArray(o.values),o.values.length>=17&&(f=o.values[16]);break;case n.ANIMATIONTYPE_COLOR3:s=Ee.FromArray(o.values),o.values[3]&&(l=Ee.FromArray(o.values[3])),o.values[4]&&(c=Ee.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break;case n.ANIMATIONTYPE_COLOR4:s=ft.FromArray(o.values),o.values[4]&&(l=ft.FromArray(o.values[4])),o.values[5]&&(c=ft.FromArray(o.values[5])),o.values[6]&&(f=ft.FromArray(o.values[6]));break;case n.ANIMATIONTYPE_VECTOR3:default:s=b.FromArray(o.values),o.values[3]&&(l=b.FromArray(o.values[3])),o.values[4]&&(c=b.FromArray(o.values[4])),o.values[5]&&(f=o.values[5]);break}let d={};d.frame=o.frame,d.value=s,l!=null&&(d.inTangent=l),c!=null&&(d.outTangent=c),f!=null&&(d.interpolation=f),r.push(d)}if(t.setKeys(r),e.ranges)for(a=0;a{let s=new wr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a=JSON.parse(s.responseText);if(a.animations&&(a=a.animations),a.length){let o=[];for(let l of a)o.push(this.Parse(l));i(o)}else{let o=this.Parse(a);e&&(o.name=e),i(o)}}else r("Unable to load the animation")}),s.open("GET",t),s.send()})}static async ParseFromSnippetAsync(e){return await new Promise((t,i)=>{let r=new wr;r.addEventListener("readystatechange",()=>{if(r.readyState==4)if(r.status==200){let s=JSON.parse(JSON.parse(r.responseText).jsonPayload);if(s.animations){let a=JSON.parse(s.animations),o=[];for(let l of a.animations){let c=this.Parse(l);c.snippetId=e,o.push(c)}t(o)}else{let a=JSON.parse(s.animation),o=this.Parse(a);o.snippetId=e,t(o)}}else i("Unable to load the snippet "+e)}),r.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),r.send()})}};mt._UniqueIdGenerator=0;mt.AllowMatricesInterpolation=!1;mt.AllowMatrixDecomposeForInterpolation=!0;mt.InheritOriginalValueFromActiveAnimations=!1;mt.SnippetUrl="https://snippet.babylonjs.com";mt.ANIMATIONTYPE_FLOAT=0;mt.ANIMATIONTYPE_VECTOR3=1;mt.ANIMATIONTYPE_QUATERNION=2;mt.ANIMATIONTYPE_MATRIX=3;mt.ANIMATIONTYPE_COLOR3=4;mt.ANIMATIONTYPE_COLOR4=7;mt.ANIMATIONTYPE_VECTOR2=5;mt.ANIMATIONTYPE_SIZE=6;mt.ANIMATIONLOOPMODE_RELATIVE=0;mt.ANIMATIONLOOPMODE_CYCLE=1;mt.ANIMATIONLOOPMODE_CONSTANT=2;mt.ANIMATIONLOOPMODE_YOYO=4;mt.ANIMATIONLOOPMODE_RELATIVE_FROM_CURRENT=5;mt.CreateFromSnippetAsync=mt.ParseFromSnippetAsync;Ut("BABYLON.Animation",mt);Ei._AnimationRangeFactory=(n,e,t)=>new Xf(n,e,t)});var Ep,yH=I(()=>{kD();Yf();Ep=class n{constructor(){this.transitionDuration=450,this.lowerRadiusTransitionRange=2,this.upperRadiusTransitionRange=-2,this._autoTransitionRange=!1,this._attachedCamera=null,this._radiusIsAnimating=!1,this._radiusBounceTransition=null,this._animatables=new Array}get name(){return"Bouncing"}get autoTransitionRange(){return this._autoTransitionRange}set autoTransitionRange(e){if(this._autoTransitionRange===e)return;this._autoTransitionRange=e;let t=this._attachedCamera;t&&(e?this._onMeshTargetChangedObserver=t.onMeshTargetChangedObservable.add(i=>{if(i&&(i.computeWorldMatrix(!0),i.getBoundingInfo)){let r=i.getBoundingInfo().diagonalLength;this.lowerRadiusTransitionRange=r*.05,this.upperRadiusTransitionRange=r*.05}}):this._onMeshTargetChangedObserver&&t.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver))}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e,this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._attachedCamera&&(this._isRadiusAtLimit(this._attachedCamera.lowerRadiusLimit)&&this._applyBoundRadiusAnimation(this.lowerRadiusTransitionRange),this._isRadiusAtLimit(this._attachedCamera.upperRadiusLimit)&&this._applyBoundRadiusAnimation(this.upperRadiusTransitionRange))})}detach(){this._attachedCamera&&(this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null)}_isRadiusAtLimit(e){return this._attachedCamera?this._attachedCamera.radius===e&&!this._radiusIsAnimating:!1}_applyBoundRadiusAnimation(e){if(!this._attachedCamera)return;this._radiusBounceTransition||(n.EasingFunction.setEasingMode(n.EasingMode),this._radiusBounceTransition=mt.CreateAnimation("radius",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction)),this._cachedWheelPrecision=this._attachedCamera.wheelPrecision,this._attachedCamera.wheelPrecision=1/0,this._attachedCamera.inertialRadiusOffset=0,this.stopAllAnimations(),this._radiusIsAnimating=!0;let t=mt.TransitionTo("radius",this._attachedCamera.radius+e,this._attachedCamera,this._attachedCamera.getScene(),60,this._radiusBounceTransition,this.transitionDuration,()=>this._clearAnimationLocks());t&&this._animatables.push(t)}_clearAnimationLocks(){this._radiusIsAnimating=!1,this._attachedCamera&&(this._attachedCamera.wheelPrecision=this._cachedWheelPrecision)}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0].onAnimationEnd=null,this._animatables[0].stop(),this._animatables.shift()}};Ep.EasingFunction=new fR(.3);Ep.EasingMode=wo.EASINGMODE_EASEOUT});var Kf,CH=I(()=>{kD();mi();yo();tc();ke();Yf();Kf=class n{constructor(){this.onTargetFramingAnimationEndObservable=new te,this._mode=n.FitFrustumSidesMode,this._radiusScale=1,this._positionScale=.5,this._defaultElevation=.3,this._elevationReturnTime=1500,this._elevationReturnWaitTime=1e3,this._zoomStopsAnimation=!1,this._framingTime=1500,this.autoCorrectCameraLimitsAndSensibility=!0,this._attachedCamera=null,this._isPointerDown=!1,this._lastInteractionTime=-1/0,this._animatables=new Array,this._betaIsAnimating=!1}get name(){return"Framing"}set mode(e){this._mode=e}get mode(){return this._mode}set radiusScale(e){this._radiusScale=e}get radiusScale(){return this._radiusScale}set positionScale(e){this._positionScale=e}get positionScale(){return this._positionScale}set defaultElevation(e){this._defaultElevation=e}get defaultElevation(){return this._defaultElevation}set elevationReturnTime(e){this._elevationReturnTime=e}get elevationReturnTime(){return this._elevationReturnTime}set elevationReturnWaitTime(e){this._elevationReturnWaitTime=e}get elevationReturnWaitTime(){return this._elevationReturnWaitTime}set zoomStopsAnimation(e){this._zoomStopsAnimation=e}get zoomStopsAnimation(){return this._zoomStopsAnimation}set framingTime(e){this._framingTime=e}get framingTime(){return this._framingTime}get attachedNode(){return this._attachedCamera}init(){}attach(e){this._attachedCamera=e;let t=this._attachedCamera.getScene();n.EasingFunction.setEasingMode(n.EasingMode),this._onPrePointerObservableObserver=t.onPrePointerObservable.add(i=>{if(i.type===at.POINTERDOWN){this._isPointerDown=!0;return}i.type===at.POINTERUP&&(this._isPointerDown=!1)}),this._onMeshTargetChangedObserver=e.onMeshTargetChangedObservable.add(i=>{i&&i.getBoundingInfo&&this.zoomOnMesh(i,void 0,()=>{this.onTargetFramingAnimationEndObservable.notifyObservers()})}),this._onAfterCheckInputsObserver=e.onAfterCheckInputsObservable.add(()=>{this._applyUserInteraction(),this._maintainCameraAboveGround()})}detach(){if(!this._attachedCamera)return;let e=this._attachedCamera.getScene();this._onPrePointerObservableObserver&&e.onPrePointerObservable.remove(this._onPrePointerObservableObserver),this._onAfterCheckInputsObserver&&this._attachedCamera.onAfterCheckInputsObservable.remove(this._onAfterCheckInputsObserver),this._onMeshTargetChangedObserver&&this._attachedCamera.onMeshTargetChangedObservable.remove(this._onMeshTargetChangedObserver),this._attachedCamera=null}zoomOnMesh(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getBoundingInfo().boundingBox;this.zoomOnBoundingInfo(r.minimumWorld,r.maximumWorld,t,i)}zoomOnMeshHierarchy(e,t=!1,i=null){e.computeWorldMatrix(!0);let r=e.getHierarchyBoundingVectors(!0);this.zoomOnBoundingInfo(r.min,r.max,t,i)}zoomOnMeshesHierarchy(e,t=!1,i=null){let r=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new b(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let a=0;a{this.stopAllAnimations(),r&&r(),this._attachedCamera&&this._attachedCamera.useInputToRestoreState&&this._attachedCamera.storeState()}),f&&this._animatables.push(f),!0}_calculateLowerRadiusFromModelBoundingSphere(e,t){let i=this._attachedCamera;if(!i)return 0;let r=i._calculateLowerRadiusFromModelBoundingSphere(e,t,this._radiusScale);return i.lowerRadiusLimit&&this._mode===n.IgnoreBoundsSizeMode&&(r=ri.upperRadiusLimit?i.upperRadiusLimit:r),r}_maintainCameraAboveGround(){if(this._elevationReturnTime<0)return;let e=br.Now-this._lastInteractionTime,t=Math.PI*.5-this._defaultElevation,i=Math.PI*.5;if(this._attachedCamera&&!this._betaIsAnimating&&this._attachedCamera.beta>i&&e>=this._elevationReturnWaitTime){this._betaIsAnimating=!0,this.stopAllAnimations(),this._betaTransition||(this._betaTransition=mt.CreateAnimation("beta",mt.ANIMATIONTYPE_FLOAT,60,n.EasingFunction));let r=mt.TransitionTo("beta",t,this._attachedCamera,this._attachedCamera.getScene(),60,this._betaTransition,this._elevationReturnTime,()=>{this._clearAnimationLocks(),this.stopAllAnimations()});r&&this._animatables.push(r)}}_clearAnimationLocks(){this._betaIsAnimating=!1}_applyUserInteraction(){this.isUserIsMoving&&(this._lastInteractionTime=br.Now,this.stopAllAnimations(),this._clearAnimationLocks())}stopAllAnimations(){for(this._attachedCamera&&(this._attachedCamera.animations=[]);this._animatables.length;)this._animatables[0]&&(this._animatables[0].onAnimationEnd=null,this._animatables[0].stop()),this._animatables.shift()}get isUserIsMoving(){return this._attachedCamera?this._attachedCamera.inertialAlphaOffset!==0||this._attachedCamera.inertialBetaOffset!==0||this._attachedCamera.inertialRadiusOffset!==0||this._attachedCamera.inertialPanningX!==0||this._attachedCamera.inertialPanningY!==0||this._isPointerDown:!1}};Kf.EasingFunction=new dR;Kf.EasingMode=wo.EASINGMODE_EASEINOUT;Kf.IgnoreBoundsSizeMode=0;Kf.FitFrustumSidesMode=1});var hR,ZD,Zs,qD=I(()=>{Wt();kt();Rl();ke();Kn();Mm();_a();Ei.AddNodeConstructor("TargetCamera",(n,e)=>()=>new Zs(n,b.Zero(),e));hR=Z.Zero(),ZD=Ke.Identity(),Zs=class n extends gt{constructor(e,t,i,r=!0){super(e,t,i,r),this.cameraDirection=new b(0,0,0),this.cameraRotation=new we(0,0),this.updateUpVectorFromRotation=!1,this.speed=2,this.noRotationConstraint=!1,this.invertRotation=!1,this.inverseRotationSpeed=.2,this._panningEpsilon=Ft,this._rotationEpsilon=Ft,this.lockedTarget=null,this._currentTarget=b.Zero(),this._initialFocalDistance=1,this._viewMatrix=Z.Zero(),this._cameraTransformMatrix=Z.Zero(),this._cameraRotationMatrix=Z.Zero(),this._transformedReferencePoint=b.Zero(),this._deferredPositionUpdate=new b,this._deferredRotationQuaternionUpdate=new Ke,this._deferredRotationUpdate=new b,this._deferredUpdated=!1,this._deferOnly=!1,this._cachedRotationZ=0,this._cachedQuaternionRotationZ=0,this._referencePoint=b.Forward(this.getScene().useRightHandedSystem),this.rotation=new b(0,this.getScene().useRightHandedSystem?Math.PI:0,0)}getFrontPosition(e){this.getWorldMatrix();let t=$.Vector3[0],i=$.Vector3[1];return i.set(0,0,this._scene.useRightHandedSystem?-1:1),this.getDirectionToRef(i,t),t.scaleInPlace(e),this.globalPosition.add(t)}_getLockedTargetPosition(){if(!this.lockedTarget)return null;if(this.lockedTarget.absolutePosition){let e=this.lockedTarget;e.computeWorldMatrix().getTranslationToRef(e.absolutePosition)}return this.lockedTarget.absolutePosition||this.lockedTarget}storeState(){return this._storedPosition=this.position.clone(),this._storedRotation=this.rotation.clone(),this.rotationQuaternion&&(this._storedRotationQuaternion=this.rotationQuaternion.clone()),super.storeState()}_restoreStateValues(){return super._restoreStateValues()?(this.position=this._storedPosition.clone(),this.rotation=this._storedRotation.clone(),this.rotationQuaternion&&this._storedRotationQuaternion&&(this.rotationQuaternion=this._storedRotationQuaternion.clone()),this.cameraDirection.copyFromFloats(0,0,0),this.cameraRotation.copyFromFloats(0,0),!0):!1}_initCache(){super._initCache(),this._cache.lockedTarget=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotation=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.rotationQuaternion=new Ke(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE)}_updateCache(e){e||super._updateCache();let t=this._getLockedTargetPosition();t?this._cache.lockedTarget?this._cache.lockedTarget.copyFrom(t):this._cache.lockedTarget=t.clone():this._cache.lockedTarget=null,this._cache.rotation.copyFrom(this.rotation),this.rotationQuaternion&&this._cache.rotationQuaternion.copyFrom(this.rotationQuaternion)}_isSynchronizedViewMatrix(){if(!super._isSynchronizedViewMatrix())return!1;let e=this._getLockedTargetPosition();return(this._cache.lockedTarget?this._cache.lockedTarget.equals(e):!e)&&(this.rotationQuaternion?this.rotationQuaternion.equals(this._cache.rotationQuaternion):this._cache.rotation.equals(this.rotation))}_computeLocalCameraSpeed(){let e=this.getEngine();return this.speed*Math.sqrt(e.getDeltaTime()/(e.getFps()*100))}setTarget(e){this.upVector.normalize(),this._initialFocalDistance=e.subtract(this.position).length(),this.position.z===e.z&&(this.position.z+=Ft),this._referencePoint.normalize().scaleInPlace(this._initialFocalDistance),this.getScene().useRightHandedSystem?Z.LookAtRHToRef(this.position,e,b.UpReadOnly,hR):Z.LookAtLHToRef(this.position,e,b.UpReadOnly,hR),hR.invert();let t=this.rotationQuaternion||ZD;Ke.FromRotationMatrixToRef(hR,t),t.toEulerAnglesToRef(this.rotation),this.rotation.z=0}get target(){return this.getTarget()}set target(e){this.setTarget(e)}getTarget(){return this._currentTarget}_decideIfNeedsToMove(){return Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){if(this.parent){this.parent.getWorldMatrix().invertToRef($.Matrix[0]),b.TransformNormalToRef(this.cameraDirection,$.Matrix[0],$.Vector3[0]),this._deferredPositionUpdate.addInPlace($.Vector3[0]),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate);return}this._deferredPositionUpdate.addInPlace(this.cameraDirection),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate)}_checkInputs(){let e=this.invertRotation?-this.inverseRotationSpeed:1,t=this._decideIfNeedsToMove(),i=this.cameraRotation.x||this.cameraRotation.y;this._deferredUpdated=!1,this._deferredRotationUpdate.copyFrom(this.rotation),this._deferredPositionUpdate.copyFrom(this.position),this.rotationQuaternion&&this._deferredRotationQuaternionUpdate.copyFrom(this.rotationQuaternion),t&&this._updatePosition(),i&&(this.rotationQuaternion&&this.rotationQuaternion.toEulerAnglesToRef(this._deferredRotationUpdate),this._deferredRotationUpdate.x+=this.cameraRotation.x*e,this._deferredRotationUpdate.y+=this.cameraRotation.y*e,this.noRotationConstraint||(this._deferredRotationUpdate.x>1.570796&&(this._deferredRotationUpdate.x=1.570796),this._deferredRotationUpdate.x<-1.570796&&(this._deferredRotationUpdate.x=-1.570796)),this._deferOnly?this._deferredUpdated=!0:this.rotation.copyFrom(this._deferredRotationUpdate),this.rotationQuaternion&&this._deferredRotationUpdate.lengthSquared()&&(Ke.RotationYawPitchRollToRef(this._deferredRotationUpdate.y,this._deferredRotationUpdate.x,this._deferredRotationUpdate.z,this._deferredRotationQuaternionUpdate),this._deferOnly?this._deferredUpdated=!0:this.rotationQuaternion.copyFrom(this._deferredRotationQuaternionUpdate)));let r=this.speed*this._panningEpsilon,s=this.speed*this._rotationEpsilon;t&&(Math.abs(this.cameraDirection.x){Lt();Dr();Rl();is={},Sp=class{constructor(e){this.attachedToElement=!1,this.attached={},this.camera=e,this.checkInputs=()=>{}}add(e){let t=e.getSimpleName();if(this.attached[t]){ee.Warn("camera input of type "+t+" already exists on camera");return}this.attached[t]=e,e.camera=this.camera,e.checkInputs&&(this.checkInputs=this._addCheckInputs(e.checkInputs.bind(e))),this.attachedToElement&&e.attachControl(this.noPreventDefault)}remove(e){for(let t in this.attached){let i=this.attached[t];if(i===e){i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck();return}}}removeByType(e){for(let t in this.attached){let i=this.attached[t];i.getClassName()===e&&(i.detachControl(),i.camera=null,delete this.attached[t],this.rebuildInputCheck())}}_addCheckInputs(e){let t=this.checkInputs;return()=>{t(),e()}}attachInput(e){this.attachedToElement&&e.attachControl(this.noPreventDefault)}attachElement(e=!1){if(!this.attachedToElement){e=gt.ForceAttachControlToAlwaysPreventDefault?!1:e,this.attachedToElement=!0,this.noPreventDefault=e;for(let t in this.attached)this.attached[t].attachControl(e)}}detachElement(e=!1){for(let t in this.attached)this.attached[t].detachControl(),e&&(this.attached[t].camera=null);this.attachedToElement=!1}rebuildInputCheck(){this.checkInputs=()=>{};for(let e in this.attached){let t=this.attached[e];t.checkInputs&&(this.checkInputs=this._addCheckInputs(t.checkInputs.bind(t)))}}clear(){this.attachedToElement&&this.detachElement(!0),this.attached={},this.attachedToElement=!1,this.checkInputs=()=>{}}serialize(e){let t={};for(let i in this.attached){let r=this.attached[i],s=nt.Serialize(r);t[r.getClassName()]=s}e.inputsmgr=t}parse(e){let t=e.inputsmgr;if(t){this.clear();for(let i in t){let r=is[i];if(r){let s=t[i],a=nt.Parse(()=>new r,s,null);this.add(a)}}}else for(let i in this.attached){let r=is[this.attached[i].getClassName()];if(r){let s=nt.Parse(()=>new r,e,null);this.remove(this.attached[i]),this.add(s)}}}}});var dv,PH=I(()=>{Wt();kt();wi();yo();dv=class{constructor(){this._currentMousePointerIdDown=-1,this.buttons=[0,1,2]}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement(),r=0,s=null;this._pointA=null,this._pointB=null,this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._pointerInput=o=>{var d,h;let l=o.event,c=l.pointerType==="touch";if(o.type!==at.POINTERMOVE&&this.buttons.indexOf(l.button)===-1)return;let f=l.target;if(this._altKey=l.altKey,this._ctrlKey=l.ctrlKey,this._metaKey=l.metaKey,this._shiftKey=l.shiftKey,this._buttonsPressed=l.buttons,t.isPointerLock){let u=l.movementX,m=l.movementY;this.onTouch(null,u,m),this._pointA=null,this._pointB=null}else{if(o.type!==at.POINTERDOWN&&o.type!==at.POINTERDOUBLETAP&&c&&((d=this._pointA)==null?void 0:d.pointerId)!==l.pointerId&&((h=this._pointB)==null?void 0:h.pointerId)!==l.pointerId)return;if(o.type===at.POINTERDOWN&&(this._currentMousePointerIdDown===-1||c)){try{f==null||f.setPointerCapture(l.pointerId)}catch(u){}if(this._pointA===null)this._pointA={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else if(this._pointB===null)this._pointB={x:l.clientX,y:l.clientY,pointerId:l.pointerId,type:l.pointerType,button:l.button};else return;this._currentMousePointerIdDown===-1&&!c&&(this._currentMousePointerIdDown=l.pointerId),this.onButtonDown(l),e||(l.preventDefault(),i&&i.focus())}else if(o.type===at.POINTERDOUBLETAP)this.onDoubleTap(l.pointerType);else if(o.type===at.POINTERUP&&(this._currentMousePointerIdDown===l.pointerId||c)){try{f==null||f.releasePointerCapture(l.pointerId)}catch(u){}c||(this._pointB=null),t._badOS?this._pointA=this._pointB=null:this._pointB&&this._pointA&&this._pointA.pointerId==l.pointerId?(this._pointA=this._pointB,this._pointB=null):this._pointA&&this._pointB&&this._pointB.pointerId==l.pointerId?this._pointB=null:this._pointA=this._pointB=null,(r!==0||s)&&(this.onMultiTouch(this._pointA,this._pointB,r,0,s,null),r=0,s=null),this._currentMousePointerIdDown=-1,this.onButtonUp(l),e||l.preventDefault()}else if(o.type===at.POINTERMOVE){if(e||l.preventDefault(),this._pointA&&this._pointB===null){let u=l.clientX-this._pointA.x,m=l.clientY-this._pointA.y;this._pointA.x=l.clientX,this._pointA.y=l.clientY,this.onTouch(this._pointA,u,m)}else if(this._pointA&&this._pointB){let u=this._pointA.pointerId===l.pointerId?this._pointA:this._pointB;u.x=l.clientX,u.y=l.clientY;let m=this._pointA.x-this._pointB.x,_=this._pointA.y-this._pointB.y,p=m*m+_*_,g={x:(this._pointA.x+this._pointB.x)/2,y:(this._pointA.y+this._pointB.y)/2,pointerId:l.pointerId,type:o.type};this.onMultiTouch(this._pointA,this._pointB,r,p,s,g),s=g,r=p}}}},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE|at.POINTERDOUBLETAP),this._onLostFocus=()=>{this._pointA=this._pointB=null,r=0,s=null,this.onLostFocus()},this._contextMenuBind=o=>this.onContextMenu(o),i&&i.addEventListener("contextmenu",this._contextMenuBind,!1);let a=this.camera.getScene().getEngine().getHostWindow();a&&pe.RegisterTopRootEvents(a,[{name:"blur",handler:this._onLostFocus}])}detachControl(){if(this._onLostFocus){let e=this.camera.getScene().getEngine().getHostWindow();e&&pe.UnregisterTopRootEvents(e,[{name:"blur",handler:this._onLostFocus}])}if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._contextMenuBind){let e=this.camera.getScene().getEngine().getInputElement();e&&e.removeEventListener("contextmenu",this._contextMenuBind)}this._onLostFocus=null}this._altKey=!1,this._ctrlKey=!1,this._metaKey=!1,this._shiftKey=!1,this._buttonsPressed=0,this._currentMousePointerIdDown=-1}getClassName(){return"BaseCameraPointersInput"}getSimpleName(){return"pointers"}onDoubleTap(e){}onTouch(e,t,i){}onMultiTouch(e,t,i,r,s,a){}onContextMenu(e){e.preventDefault()}onButtonDown(e){}onButtonUp(e){}onLostFocus(){}};P([F()],dv.prototype,"buttons",void 0)});var Ph,DH=I(()=>{Wt();kt();PH();Ph=class extends dv{constructor(){super(...arguments),this.pinchZoom=!0,this.multiTouchPanning=!0,this.multiTouchPanAndZoom=!0,this._isPinching=!1,this._twoFingerActivityCount=0,this._shouldStartPinchZoom=!1}_computePinchZoom(e,t){}_computeMultiTouchPanning(e,t){}onMultiTouch(e,t,i,r,s,a){i===0&&s===null||r===0&&a===null||(this.multiTouchPanAndZoom?(this._computePinchZoom(i,r),this._computeMultiTouchPanning(s,a)):this.multiTouchPanning&&this.pinchZoom?(this._twoFingerActivityCount++,this._isPinching||this._shouldStartPinchZoom?(this._computePinchZoom(i,r),this._isPinching=!0):this._computeMultiTouchPanning(s,a)):this.multiTouchPanning?this._computeMultiTouchPanning(s,a):this.pinchZoom&&this._computePinchZoom(i,r))}onButtonUp(e){this._twoFingerActivityCount=0,this._isPinching=!1}onLostFocus(){this._twoFingerActivityCount=0,this._isPinching=!1}};P([F()],Ph.prototype,"pinchZoom",void 0);P([F()],Ph.prototype,"multiTouchPanning",void 0);P([F()],Ph.prototype,"multiTouchPanAndZoom",void 0)});var ga,LH=I(()=>{Wt();kt();Cl();DH();ga=class n extends Ph{constructor(){super(...arguments),this.buttons=[0,1,2],this.angularSensibilityX=1e3,this.angularSensibilityY=1e3,this.pinchPrecision=12,this.pinchDeltaPercentage=0,this.useNaturalPinchZoom=!1,this.panningSensibility=1e3,this.pinchInwards=!0,this._isPanClick=!1}getClassName(){return"ArcRotateCameraPointersInput"}_computeMultiTouchPanning(e,t){if(this.panningSensibility!==0&&e&&t){let i=t.x-e.x,r=t.y-e.y;this.camera.inertialPanningX+=-i/this.panningSensibility,this.camera.inertialPanningY+=r/this.panningSensibility}}_computePinchZoom(e,t){let i=this.camera.radius||n.MinimumRadiusForPinch;this.useNaturalPinchZoom?this.camera.radius=i*Math.sqrt(e)/Math.sqrt(t):this.pinchDeltaPercentage?this.camera.inertialRadiusOffset+=(t-e)*.001*i*this.pinchDeltaPercentage:this.camera.inertialRadiusOffset+=(t-e)/(this.pinchPrecision*(this.pinchInwards?1:-1)*(this.angularSensibilityX+this.angularSensibilityY)/2)}onTouch(e,t,i){this.panningSensibility!==0&&(this._ctrlKey&&this.camera._useCtrlForPanning||this._isPanClick)?(this.camera.inertialPanningX+=-t/this.panningSensibility,this.camera.inertialPanningY+=i/this.panningSensibility):(this.camera.inertialAlphaOffset-=t/this.angularSensibilityX,this.camera.inertialBetaOffset-=i/this.angularSensibilityY)}onDoubleTap(){this.camera.useInputToRestoreState&&this.camera.restoreState()}onMultiTouch(e,t,i,r,s,a){this._shouldStartPinchZoom=this._twoFingerActivityCount<20&&Math.abs(Math.sqrt(r)-Math.sqrt(i))>this.camera.pinchToPanMaxDistance,super.onMultiTouch(e,t,i,r,s,a)}onButtonDown(e){this._isPanClick=e.button===this.camera._panningMouseButton,super.onButtonDown(e)}onButtonUp(e){super.onButtonUp(e)}onLostFocus(){this._isPanClick=!1,super.onLostFocus()}};ga.MinimumRadiusForPinch=.001;P([F()],ga.prototype,"buttons",void 0);P([F()],ga.prototype,"angularSensibilityX",void 0);P([F()],ga.prototype,"angularSensibilityY",void 0);P([F()],ga.prototype,"pinchPrecision",void 0);P([F()],ga.prototype,"pinchDeltaPercentage",void 0);P([F()],ga.prototype,"useNaturalPinchZoom",void 0);P([F()],ga.prototype,"panningSensibility",void 0);is.ArcRotateCameraPointersInput=ga});var qs,OH=I(()=>{Wt();kt();Cl();Fx();wi();qs=class{constructor(){this.keysUp=[38],this.keysDown=[40],this.keysLeft=[37],this.keysRight=[39],this.keysReset=[220],this.panningSensibility=50,this.zoomingSensibility=25,this.useAltToZoom=!0,this.angularSpeed=.01,this._keys=new Array}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===Co.KEYDOWN)this._ctrlPressed=i.ctrlKey,this._altPressed=i.altKey,(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),i.preventDefault&&(e||i.preventDefault()));else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysReset.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),i.preventDefault&&(e||i.preventDefault())}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Wt();kt();Cl();yo();Dm();ke();Kn();Bx();jn();wi();qfe=40,jf=class{constructor(){this.wheelPrecision=3,this.zoomToMouseLocation=!1,this.wheelDeltaPercentage=0,this.customComputeDeltaFromMouseWheel=null,this._viewOffset=new b(0,0,0),this._globalOffset=new b(0,0,0),this._inertialPanning=b.Zero()}_computeDeltaFromMouseWheelLegacyEvent(e,t){let i,r=e*.01*this.wheelDeltaPercentage*t;return e>0?i=r/(1+this.wheelDeltaPercentage):i=r*(1+this.wheelDeltaPercentage),i}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r,s=i.deltaMode===Po.DOM_DELTA_LINE?qfe:1,a=-(i.deltaY*s);if(this.customComputeDeltaFromMouseWheel)r=this.customComputeDeltaFromMouseWheel(a,this,i);else if(this.wheelDeltaPercentage){if(r=this._computeDeltaFromMouseWheelLegacyEvent(a,this.camera.radius),r>0){let o=this.camera.radius,l=this.camera.inertialRadiusOffset+r;for(let c=0;c<20&&!(o<=l||Math.abs(l*this.camera.inertia)<.001);c++)o-=l,l*=this.camera.inertia;o=Bt(o,0,Number.MAX_VALUE),r=this._computeDeltaFromMouseWheelLegacyEvent(a,o)}}else r=a/(this.wheelPrecision*40);r&&(this.zoomToMouseLocation?(this._hitPlane||this._updateHitPlane(),this._zoomToMouse(r)):this.camera.inertialRadiusOffset+=r),i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,at.POINTERWHEEL),this.zoomToMouseLocation&&this._inertialPanning.setAll(0)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null)}checkInputs(){if(!this.zoomToMouseLocation)return;let e=this.camera;0+e.inertialAlphaOffset+e.inertialBetaOffset+e.inertialRadiusOffset&&(this._updateHitPlane(),e.target.addInPlace(this._inertialPanning),this._inertialPanning.scaleInPlace(e.inertia),this._zeroIfClose(this._inertialPanning))}getClassName(){return"ArcRotateCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}_updateHitPlane(){let e=this.camera,t=e.target.subtract(e.position);this._hitPlane=Ao.FromPositionAndNormal(e.target,t)}_getPosition(){var s;let e=this.camera,t=e.getScene(),i=t.createPickingRay(t.pointerX,t.pointerY,Z.Identity(),e,!1);(e.targetScreenOffset.x!==0||e.targetScreenOffset.y!==0)&&(this._viewOffset.set(e.targetScreenOffset.x,e.targetScreenOffset.y,0),e.getViewMatrix().invertToRef(e._cameraTransformMatrix),this._globalOffset=b.TransformNormal(this._viewOffset,e._cameraTransformMatrix),i.origin.addInPlace(this._globalOffset));let r=0;return this._hitPlane&&(r=(s=i.intersectsPlane(this._hitPlane))!=null?s:0),i.origin.addInPlace(i.direction.scaleInPlace(r))}_zoomToMouse(e){var l,c;let t=this.camera,i=1-t.inertia;if(t.lowerRadiusLimit){let f=(l=t.lowerRadiusLimit)!=null?l:0;t.radius-(t.inertialRadiusOffset+e)/if&&(e=(t.radius-f)*i-t.inertialRadiusOffset)}let s=e/i/t.radius,a=this._getPosition(),o=$.Vector3[6];a.subtractToRef(t.target,o),o.scaleInPlace(s),o.scaleInPlace(i),this._inertialPanning.addInPlace(o),t.inertialRadiusOffset+=e}_zeroIfClose(e){Math.abs(e.x){LH();OH();NH();Cl();uR=class extends Sp{constructor(e){super(e)}addMouseWheel(){return this.add(new jf),this}addPointers(){return this.add(new ga),this}addKeyboard(){return this.add(new qs),this}}});function Qfe(n){let e=Math.PI/2;return n.x===0&&n.z===0||(e=Math.acos(n.x/Math.sqrt(Math.pow(n.x,2)+Math.pow(n.z,2)))),n.z<0&&(e=2*Math.PI-e),e}function $fe(n,e){return Math.acos(n/e)}function rs(n,e){return isNaN(n)?e:n}var Si,mR=I(()=>{Wt();kt();mi();ke();jn();_a();Fi();GD();yH();CH();Rl();qD();wH();Kn();wi();$i();Ei.AddNodeConstructor("ArcRotateCamera",(n,e)=>()=>new Si(n,0,0,1,b.Zero(),e));Si=class n extends Zs{get target(){return this._target}set target(e){this.setTarget(e)}get targetHost(){return this._targetHost}set targetHost(e){e&&this.setTarget(e)}getTarget(){return this.target}get position(){return this._position}set position(e){this.setPosition(e)}set upVector(e){this._upToYMatrix||(this._yToUpMatrix=new Z,this._upToYMatrix=new Z,this._upVector=b.Zero()),e.normalize(),this._upVector.copyFrom(e),this.setMatUp()}get upVector(){return this._upVector}setMatUp(){Z.RotationAlignToRef(b.UpReadOnly,this._upVector,this._yToUpMatrix),Z.RotationAlignToRef(this._upVector,b.UpReadOnly,this._upToYMatrix)}get angularSensibilityX(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityX:0}set angularSensibilityX(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityX=e)}get angularSensibilityY(){let e=this.inputs.attached.pointers;return e?e.angularSensibilityY:0}set angularSensibilityY(e){let t=this.inputs.attached.pointers;t&&(t.angularSensibilityY=e)}get pinchPrecision(){let e=this.inputs.attached.pointers;return e?e.pinchPrecision:0}set pinchPrecision(e){let t=this.inputs.attached.pointers;t&&(t.pinchPrecision=e)}get pinchDeltaPercentage(){let e=this.inputs.attached.pointers;return e?e.pinchDeltaPercentage:0}set pinchDeltaPercentage(e){let t=this.inputs.attached.pointers;t&&(t.pinchDeltaPercentage=e)}get useNaturalPinchZoom(){let e=this.inputs.attached.pointers;return e?e.useNaturalPinchZoom:!1}set useNaturalPinchZoom(e){let t=this.inputs.attached.pointers;t&&(t.useNaturalPinchZoom=e)}get panningSensibility(){let e=this.inputs.attached.pointers;return e?e.panningSensibility:0}set panningSensibility(e){let t=this.inputs.attached.pointers;t&&(t.panningSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get wheelPrecision(){let e=this.inputs.attached.mousewheel;return e?e.wheelPrecision:0}set wheelPrecision(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelPrecision=e)}get zoomToMouseLocation(){let e=this.inputs.attached.mousewheel;return e?e.zoomToMouseLocation:!1}set zoomToMouseLocation(e){let t=this.inputs.attached.mousewheel;t&&(t.zoomToMouseLocation=e)}get wheelDeltaPercentage(){let e=this.inputs.attached.mousewheel;return e?e.wheelDeltaPercentage:0}set wheelDeltaPercentage(e){let t=this.inputs.attached.mousewheel;t&&(t.wheelDeltaPercentage=e)}get isInterpolating(){return this._isInterpolating}get bouncingBehavior(){return this._bouncingBehavior}get useBouncingBehavior(){return this._bouncingBehavior!=null}set useBouncingBehavior(e){e!==this.useBouncingBehavior&&(e?(this._bouncingBehavior=new Ep,this.addBehavior(this._bouncingBehavior)):this._bouncingBehavior&&(this.removeBehavior(this._bouncingBehavior),this._bouncingBehavior=null))}get framingBehavior(){return this._framingBehavior}get useFramingBehavior(){return this._framingBehavior!=null}set useFramingBehavior(e){e!==this.useFramingBehavior&&(e?(this._framingBehavior=new Kf,this.addBehavior(this._framingBehavior)):this._framingBehavior&&(this.removeBehavior(this._framingBehavior),this._framingBehavior=null))}get autoRotationBehavior(){return this._autoRotationBehavior}get useAutoRotationBehavior(){return this._autoRotationBehavior!=null}set useAutoRotationBehavior(e){e!==this.useAutoRotationBehavior&&(e?(this._autoRotationBehavior=new vp,this.addBehavior(this._autoRotationBehavior)):this._autoRotationBehavior&&(this.removeBehavior(this._autoRotationBehavior),this._autoRotationBehavior=null))}constructor(e,t,i,r,s,a,o=!0){super(e,b.Zero(),a,o),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.lowerAlphaLimit=null,this.upperAlphaLimit=null,this.lowerBetaLimit=.01,this.upperBetaLimit=Math.PI-.01,this.lowerRadiusLimit=null,this.upperRadiusLimit=null,this.lowerTargetYLimit=-1/0,this.inertialPanningX=0,this.inertialPanningY=0,this.pinchToPanMaxDistance=20,this.panningDistanceLimit=null,this.panningOriginTarget=b.Zero(),this.panningInertia=.9,this.zoomOnFactor=1,this.targetScreenOffset=we.Zero(),this.allowUpsideDown=!0,this.useInputToRestoreState=!0,this.restoreStateInterpolationFactor=0,this._currentInterpolationFactor=0,this._viewMatrix=new Z,this.panningAxis=new b(1,1,0),this._transformedDirection=new b,this.mapPanning=!1,this._isInterpolating=!1,this.onMeshTargetChangedObservable=new te,this.checkCollisions=!1,this.collisionRadius=new b(.5,.5,.5),this._previousPosition=b.Zero(),this._collisionVelocity=b.Zero(),this._newPosition=b.Zero(),this._computationVector=b.Zero(),this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget=new b(NaN,NaN,NaN),this._goalTargetScreenOffset=new we(NaN,NaN),this._onCollisionPositionChange=(l,c,f=null)=>{f?(this.setPosition(c),this.onCollide&&this.onCollide(f)):this._previousPosition.copyFrom(this._position);let d=Math.cos(this.alpha),h=Math.sin(this.alpha),u=Math.cos(this.beta),m=Math.sin(this.beta);m===0&&(m=1e-4);let _=this._getTargetPosition();this._computationVector.copyFromFloats(this.radius*d*m,this.radius*u,this.radius*h*m),_.addToRef(this._computationVector,this._newPosition),this._position.copyFrom(this._newPosition);let p=this.upVector;this.allowUpsideDown&&this.beta<0&&(p=p.clone(),p=p.negate()),this._computeViewMatrix(this._position,_,p),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y),this._collisionTriggered=!1},this._target=b.Zero(),s&&this.setTarget(s),this.alpha=t,this.beta=i,this.radius=r,this.getViewMatrix(),this.inputs=new uR(this),this.inputs.addKeyboard().addMouseWheel().addPointers()}_initCache(){super._initCache(),this._cache._target=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cache.alpha=void 0,this._cache.beta=void 0,this._cache.radius=void 0,this._cache.targetScreenOffset=we.Zero()}_updateCache(e){e||super._updateCache(),this._cache._target.copyFrom(this._getTargetPosition()),this._cache.alpha=this.alpha,this._cache.beta=this.beta,this._cache.radius=this.radius,this._cache.targetScreenOffset.copyFrom(this.targetScreenOffset)}_getTargetPosition(){if(this._targetHost&&this._targetHost.getAbsolutePosition){let t=this._targetHost.getAbsolutePosition();this._targetBoundingCenter?t.addToRef(this._targetBoundingCenter,this._target):this._target.copyFrom(t)}let e=this._getLockedTargetPosition();return e||this._target}storeState(){return this._storedAlpha=this.alpha,this._storedBeta=this.beta,this._storedRadius=this.radius,this._storedTarget=this._getTargetPosition().clone(),this._storedTargetScreenOffset=this.targetScreenOffset.clone(),super.storeState()}_restoreStateValues(){return this.hasStateStored()&&this.restoreStateInterpolationFactor>Ft&&this.restoreStateInterpolationFactor<1?(this.interpolateTo(this._storedAlpha,this._storedBeta,this._storedRadius,this._storedTarget,this._storedTargetScreenOffset,this.restoreStateInterpolationFactor),!0):super._restoreStateValues()?(this.setTarget(this._storedTarget.clone()),this.alpha=this._storedAlpha,this.beta=this._storedBeta,this.radius=this._storedRadius,this.targetScreenOffset=this._storedTargetScreenOffset.clone(),this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,!0):!1}stopInterpolation(){this._goalAlpha=NaN,this._goalBeta=NaN,this._goalRadius=NaN,this._goalTarget.set(NaN,NaN,NaN),this._goalTargetScreenOffset.set(NaN,NaN)}interpolateTo(e=this.alpha,t=this.beta,i=this.radius,r=this.target,s=this.targetScreenOffset,a){var o,l,c,f,d,h,u;this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0,a!=null?this._currentInterpolationFactor=a:this.restoreStateInterpolationFactor!==0?this._currentInterpolationFactor=this.restoreStateInterpolationFactor:this._currentInterpolationFactor=.1,this._goalAlpha=rs(e,this._goalAlpha),this._goalBeta=rs(t,this._goalBeta),this._goalRadius=rs(i,this._goalRadius),this._goalTarget.set(rs(r.x,this._goalTarget.x),rs(r.y,this._goalTarget.y),rs(r.z,this._goalTarget.z)),this._goalTargetScreenOffset.set(rs(s.x,this._goalTargetScreenOffset.x),rs(s.y,this._goalTargetScreenOffset.y)),this._goalAlpha=Bt(this._goalAlpha,(o=this.lowerAlphaLimit)!=null?o:-1/0,(l=this.upperAlphaLimit)!=null?l:1/0),this._goalBeta=Bt(this._goalBeta,(c=this.lowerBetaLimit)!=null?c:-1/0,(f=this.upperBetaLimit)!=null?f:1/0),this._goalRadius=Bt(this._goalRadius,(d=this.lowerRadiusLimit)!=null?d:-1/0,(h=this.upperRadiusLimit)!=null?h:1/0),this._goalTarget.y=Bt(this._goalTarget.y,(u=this.lowerTargetYLimit)!=null?u:-1/0,1/0),this._isInterpolating=!0}_isSynchronizedViewMatrix(){return super._isSynchronizedViewMatrix()?this._cache._target.equals(this._getTargetPosition())&&this._cache.alpha===this.alpha&&this._cache.beta===this.beta&&this._cache.radius===this.radius&&this._cache.targetScreenOffset.equals(this.targetScreenOffset):!1}attachControl(e,t,i=!0,r=2){let s=arguments;t=pe.BackCompatCameraNoPreventDefault(s),this._useCtrlForPanning=i,this._panningMouseButton=r,typeof s[0]=="boolean"&&(s.length>1&&(this._useCtrlForPanning=s[1]),s.length>2&&(this._panningMouseButton=s[2])),this.inputs.attachElement(t),this._reset=()=>{this.inertialAlphaOffset=0,this.inertialBetaOffset=0,this.inertialRadiusOffset=0,this.inertialPanningX=0,this.inertialPanningY=0}}detachControl(){this.inputs.detachElement(),this._reset&&this._reset()}_checkInputs(){if(this._collisionTriggered)return;this.inputs.checkInputs();let e=!1;if(this.inertialAlphaOffset!==0||this.inertialBetaOffset!==0||this.inertialRadiusOffset!==0){e=!0;let t=this.invertRotation?-1:1,i=this._calculateHandednessMultiplier(),r=this.inertialAlphaOffset*i;this.beta<0&&(r*=-1),this.alpha+=r*t,this.beta+=this.inertialBetaOffset*t,this.radius-=this.inertialRadiusOffset,this.inertialAlphaOffset*=this.inertia,this.inertialBetaOffset*=this.inertia,this.inertialRadiusOffset*=this.inertia,Math.abs(this.inertialAlphaOffset)Math.PI&&(this.beta=this.beta-2*Math.PI):this.betathis.upperBetaLimit&&(this.beta=this.upperBetaLimit),this.lowerAlphaLimit!==null&&this.alphathis.upperAlphaLimit&&(this.alpha=this.upperAlphaLimit),this.lowerRadiusLimit!==null&&this.radiusthis.upperRadiusLimit&&(this.radius=this.upperRadiusLimit,this.inertialRadiusOffset=0),this.target.y=Math.max(this.target.y,this.lowerTargetYLimit)}rebuildAnglesAndRadius(){this._position.subtractToRef(this._getTargetPosition(),this._computationVector),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._upToYMatrix,this._computationVector),this.radius=this._computationVector.length(),this.radius===0&&(this.radius=1e-4);let e=this.alpha;this.alpha=Qfe(this._computationVector),this.beta=$fe(this._computationVector.y,this.radius);let t=Math.round((e-this.alpha)/(2*Math.PI));this.alpha+=t*2*Math.PI,this._checkLimits()}setPosition(e){this._position.equals(e)||(this._position.copyFrom(e),this.rebuildAnglesAndRadius())}setTarget(e,t=!1,i=!1,r=!1){var s;if(r=(s=this.overrideCloneAlphaBetaRadius)!=null?s:r,e.computeWorldMatrix)t&&e.getBoundingInfo?this._targetBoundingCenter=e.getBoundingInfo().boundingBox.centerWorld.clone():this._targetBoundingCenter=null,e.computeWorldMatrix(),this._targetHost=e,this._target=this._getTargetPosition(),this.onMeshTargetChangedObservable.notifyObservers(this._targetHost);else{let a=e,o=this._getTargetPosition();if(o&&!i&&o.equals(a))return;this._targetHost=null,this._target=a,this._targetBoundingCenter=null,this.onMeshTargetChangedObservable.notifyObservers(null)}r||this.rebuildAnglesAndRadius()}_getViewMatrix(){let e=Math.cos(this.alpha),t=Math.sin(this.alpha),i=Math.cos(this.beta),r=Math.sin(this.beta);r===0&&(r=1e-4),this.radius===0&&(this.radius=1e-4);let s=this._getTargetPosition();if(this._computationVector.copyFromFloats(this.radius*e*r,this.radius*i,this.radius*t*r),(this._upVector.x!==0||this._upVector.y!==1||this._upVector.z!==0)&&b.TransformCoordinatesToRef(this._computationVector,this._yToUpMatrix,this._computationVector),s.addToRef(this._computationVector,this._newPosition),this.getScene().collisionsEnabled&&this.checkCollisions){let a=this.getScene().collisionCoordinator;this._collider||(this._collider=a.createCollider()),this._collider._radius=this.collisionRadius,this._newPosition.subtractToRef(this._position,this._collisionVelocity),this._collisionTriggered=!0,a.getNewPosition(this._position,this._collisionVelocity,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}else{this._position.copyFrom(this._newPosition);let a=this.upVector;this.allowUpsideDown&&r<0&&(a=a.negate()),this._computeViewMatrix(this._position,s,a),this._viewMatrix.addAtIndex(12,this.targetScreenOffset.x),this._viewMatrix.addAtIndex(13,this.targetScreenOffset.y)}return this._currentTarget.copyFrom(s),this._viewMatrix}zoomOn(e,t=!1){e=e||this.getScene().meshes;let i=q.MinMax(e),r=this._calculateLowerRadiusFromModelBoundingSphere(i.min,i.max);if(r=Math.max(Math.min(r,this.upperRadiusLimit||Number.MAX_VALUE),this.lowerRadiusLimit||0),this.radius=r*this.zoomOnFactor,this.mode===gt.ORTHOGRAPHIC_CAMERA){let s=this.getScene().getEngine().getAspectRatio(this),a=r*this.zoomOnFactor/2;this.orthoLeft=-a*s,this.orthoRight=a*s,this.orthoBottom=-a,this.orthoTop=a}this.focusOn({min:i.min,max:i.max,distance:r},t)}focusOn(e,t=!1){let i,r;if(e.min===void 0){let s=e||this.getScene().meshes;i=q.MinMax(s),r=b.Distance(i.min,i.max)}else{let s=e;i=s,r=s.distance}this._target=q.Center(i),t||(this.maxZ=r*2)}createRigCamera(e,t){let i=0;switch(this.cameraRigMode){case gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case gt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case gt.RIG_MODE_STEREOSCOPIC_INTERLACED:case gt.RIG_MODE_VR:i=this._cameraRigParams.stereoHalfAngle*(t===0?1:-1);break;case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:i=this._cameraRigParams.stereoHalfAngle*(t===0?-1:1);break}let r=new n(e,this.alpha+i,this.beta,this.radius,this._target,this.getScene());return r._cameraRigParams={},r.isRigCamera=!0,r.rigParent=this,r.upVector=this.upVector,r.mode=this.mode,r.orthoLeft=this.orthoLeft,r.orthoRight=this.orthoRight,r.orthoBottom=this.orthoBottom,r.orthoTop=this.orthoTop,r}_updateRigCameras(){let e=this._rigCameras[0],t=this._rigCameras[1];switch(e.beta=t.beta=this.beta,this.cameraRigMode){case gt.RIG_MODE_STEREOSCOPIC_ANAGLYPH:case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL:case gt.RIG_MODE_STEREOSCOPIC_OVERUNDER:case gt.RIG_MODE_STEREOSCOPIC_INTERLACED:case gt.RIG_MODE_VR:e.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle;break;case gt.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED:e.alpha=this.alpha+this._cameraRigParams.stereoHalfAngle,t.alpha=this.alpha-this._cameraRigParams.stereoHalfAngle;break}super._updateRigCameras()}_calculateLowerRadiusFromModelBoundingSphere(e,t,i=1){let r=b.Distance(e,t),a=this.getScene().getEngine().getAspectRatio(this),o=Math.tan(this.fov/2),l=o*a,f=r*.5*i,d=f*Math.sqrt(1+1/(l*l)),h=f*Math.sqrt(1+1/(o*o));return Math.max(d,h)}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"ArcRotateCamera"}};P([F()],Si.prototype,"alpha",void 0);P([F()],Si.prototype,"beta",void 0);P([F()],Si.prototype,"radius",void 0);P([F()],Si.prototype,"overrideCloneAlphaBetaRadius",void 0);P([Qr("target")],Si.prototype,"_target",void 0);P([px("targetHost")],Si.prototype,"_targetHost",void 0);P([F()],Si.prototype,"inertialAlphaOffset",void 0);P([F()],Si.prototype,"inertialBetaOffset",void 0);P([F()],Si.prototype,"inertialRadiusOffset",void 0);P([F()],Si.prototype,"lowerAlphaLimit",void 0);P([F()],Si.prototype,"upperAlphaLimit",void 0);P([F()],Si.prototype,"lowerBetaLimit",void 0);P([F()],Si.prototype,"upperBetaLimit",void 0);P([F()],Si.prototype,"lowerRadiusLimit",void 0);P([F()],Si.prototype,"upperRadiusLimit",void 0);P([F()],Si.prototype,"lowerTargetYLimit",void 0);P([F()],Si.prototype,"inertialPanningX",void 0);P([F()],Si.prototype,"inertialPanningY",void 0);P([F()],Si.prototype,"pinchToPanMaxDistance",void 0);P([F()],Si.prototype,"panningDistanceLimit",void 0);P([Qr()],Si.prototype,"panningOriginTarget",void 0);P([F()],Si.prototype,"panningInertia",void 0);P([F()],Si.prototype,"zoomToMouseLocation",null);P([F()],Si.prototype,"zoomOnFactor",void 0);P([Fm()],Si.prototype,"targetScreenOffset",void 0);P([F()],Si.prototype,"allowUpsideDown",void 0);P([F()],Si.prototype,"useInputToRestoreState",void 0);P([F()],Si.prototype,"restoreStateInterpolationFactor",void 0);Ut("BABYLON.ArcRotateCamera",Si)});var Kt,Zf=I(()=>{Wt();kt();ke();zt();_a();Of();$i();Wg();Dr();Kt=class n extends Ei{get range(){return this._range}set range(e){this._range=e,this._inverseSquaredRange=1/(this.range*this.range)}get intensityMode(){return this._intensityMode}set intensityMode(e){this._intensityMode=e,this._computePhotometricScale()}get radius(){return this._radius}set radius(e){this._radius=e,this._computePhotometricScale()}get shadowEnabled(){return this._shadowEnabled}set shadowEnabled(e){this._shadowEnabled!==e&&(this._shadowEnabled=e,this._markMeshesAsLightDirty())}get includedOnlyMeshes(){return this._includedOnlyMeshes}set includedOnlyMeshes(e){this._includedOnlyMeshes=e,this._hookArrayForIncludedOnly(e)}get excludedMeshes(){return this._excludedMeshes}set excludedMeshes(e){this._excludedMeshes=e,this._hookArrayForExcluded(e)}get excludeWithLayerMask(){return this._excludeWithLayerMask}set excludeWithLayerMask(e){this._excludeWithLayerMask=e,this._resyncMeshes()}get includeOnlyWithLayerMask(){return this._includeOnlyWithLayerMask}set includeOnlyWithLayerMask(e){this._includeOnlyWithLayerMask=e,this._resyncMeshes()}get lightmapMode(){return this._lightmapMode}set lightmapMode(e){this._lightmapMode!==e&&(this._lightmapMode=e,this._markMeshesAsLightDirty())}getViewMatrix(e){return null}getProjectionMatrix(e,t){return null}constructor(e,t,i){super(e,t,!1),this.diffuse=new Ee(1,1,1),this.specular=new Ee(1,1,1),this.falloffType=n.FALLOFF_DEFAULT,this.intensity=1,this._range=Number.MAX_VALUE,this._inverseSquaredRange=0,this._photometricScale=1,this._intensityMode=n.INTENSITYMODE_AUTOMATIC,this._radius=1e-5,this.renderPriority=0,this._shadowEnabled=!0,this._excludeWithLayerMask=0,this._includeOnlyWithLayerMask=0,this._lightmapMode=0,this._shadowGenerators=null,this._excludedMeshesIds=new Array,this._includedOnlyMeshesIds=new Array,this._currentViewDepth=0,this._clusteredContainer=null,this._isLight=!0,i||this.getScene().addLight(this),this._uniformBuffer=new Sr(this.getScene().getEngine(),void 0,void 0,e),this._buildUniformLayout(),this.includedOnlyMeshes=[],this.excludedMeshes=[],i||this._resyncMeshes()}transferTexturesToEffect(e,t){return this}_bindLight(e,t,i,r,s=!0){var l;let a=e.toString(),o=!1;if(this._uniformBuffer.bindToEffect(i,"Light"+a),this._renderId!==t.getRenderId()||this._lastUseSpecular!==r||!this._uniformBuffer.useUbo){this._renderId=t.getRenderId(),this._lastUseSpecular=r;let c=this.getScaledIntensity();this.transferToEffect(i,a),this.diffuse.scaleToRef(c,Dn.Color3[0]),this._uniformBuffer.updateColor4("vLightDiffuse",Dn.Color3[0],this.range,a),r&&(this.specular.scaleToRef(c,Dn.Color3[1]),this._uniformBuffer.updateColor4("vLightSpecular",Dn.Color3[1],this.radius,a)),o=!0}if(this.transferTexturesToEffect(i,a),t.shadowsEnabled&&this.shadowEnabled&&s){let c=(l=this.getShadowGenerator(t.activeCamera))!=null?l:this.getShadowGenerator();c&&(c.bindShadowLight(a,i),o=!0)}o?this._uniformBuffer.update():this._uniformBuffer.bindUniformBuffer()}getClassName(){return"Light"}toString(e){let t="Name: "+this.name;if(t+=", type: "+["Point","Directional","Spot","Hemispheric","Clustered"][this.getTypeID()],this.animations)for(let i=0;i0&&this.includedOnlyMeshes.indexOf(e)===-1||this.excludedMeshes&&this.excludedMeshes.length>0&&this.excludedMeshes.indexOf(e)!==-1||this.includeOnlyWithLayerMask!==0&&(this.includeOnlyWithLayerMask&e.layerMask)===0||this.excludeWithLayerMask!==0&&this.excludeWithLayerMask&e.layerMask):!0}dispose(e,t=!1){if(this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.dispose();this._shadowGenerators=null}if(this.getScene().stopAnimation(this),this._parentContainer){let i=this._parentContainer.lights.indexOf(this);i>-1&&this._parentContainer.lights.splice(i,1),this._parentContainer=null}for(let i of this.getScene().meshes)i._removeLightSource(this,!0);this._uniformBuffer.dispose(),this.getScene().removeLight(this),super.dispose(e,t)}getTypeID(){return 0}getScaledIntensity(){return this._photometricScale*this.intensity}clone(e,t=null){let i=n.GetConstructorFromName(this.getTypeID(),e,this.getScene());if(!i)return null;let r=nt.Clone(i,this);return e&&(r.name=e),t&&(r.parent=t),r.setEnabled(this.isEnabled()),this.onClonedObservable.notifyObservers(r),r}serialize(){let e=nt.Serialize(this);if(e.uniqueId=this.uniqueId,e.type=this.getTypeID(),this.parent&&this.parent._serializeAsParent(e),this.excludedMeshes.length>0){e.excludedMeshesIds=[];for(let t of this.excludedMeshes)e.excludedMeshesIds.push(t.id)}if(this.includedOnlyMeshes.length>0){e.includedOnlyMeshesIds=[];for(let t of this.includedOnlyMeshes)e.includedOnlyMeshesIds.push(t.id)}return nt.AppendSerializedAnimations(this,e),e.ranges=this.serializeAnimationRanges(),e.isEnabled=this.isEnabled(),e}static GetConstructorFromName(e,t,i){let r=Ei.Construct("Light_Type_"+e,t,i);return r||null}static Parse(e,t){let i=n.GetConstructorFromName(e.type,e.name,t);if(!i)return null;let r=nt.Parse(i,e,t);if(e.excludedMeshesIds&&(r._excludedMeshesIds=e.excludedMeshesIds),e.includedOnlyMeshesIds&&(r._includedOnlyMeshesIds=e.includedOnlyMeshesIds),e.parentId!==void 0&&(r._waitingParentId=e.parentId),e.parentInstanceIndex!==void 0&&(r._waitingParentInstanceIndex=e.parentInstanceIndex),e.falloffType!==void 0&&(r.falloffType=e.falloffType),e.lightmapMode!==void 0&&(r.lightmapMode=e.lightmapMode),e.animations){for(let s=0;s{let s=t.apply(e,r);if(this._clusteredContainer)return s;for(let a of r)a._resyncLightSource(this);return s};let i=e.splice;if(e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);if(this._clusteredContainer)return a;for(let o of a)o._resyncLightSource(this);return a},!this._clusteredContainer)for(let r of e)r._resyncLightSource(this)}_hookArrayForIncludedOnly(e){let t=e.push;e.push=(...r)=>{let s=t.apply(e,r);return this._resyncMeshes(),s};let i=e.splice;e.splice=(r,s)=>{let a=i.call(e,r,s!=null?s:e.length);return this._resyncMeshes(),a},this._resyncMeshes()}_resyncMeshes(){if(!this._clusteredContainer)for(let e of this.getScene().meshes)e._resyncLightSource(this)}_markMeshesAsLightDirty(){for(let e of this.getScene().meshes)e.lightSources.indexOf(this)!==-1&&e._markSubMeshesAsLightDirty()}_computePhotometricScale(){this._photometricScale=this._getPhotometricScale(),this.getScene().resetCachedMaterial()}_getPhotometricScale(){let e=0,t=this.getTypeID(),i=this.intensityMode;switch(i===n.INTENSITYMODE_AUTOMATIC&&(t===n.LIGHTTYPEID_DIRECTIONALLIGHT?i=n.INTENSITYMODE_ILLUMINANCE:i=n.INTENSITYMODE_LUMINOUSINTENSITY),t){case n.LIGHTTYPEID_POINTLIGHT:case n.LIGHTTYPEID_SPOTLIGHT:switch(i){case n.INTENSITYMODE_LUMINOUSPOWER:e=1/(4*Math.PI);break;case n.INTENSITYMODE_LUMINOUSINTENSITY:e=1;break;case n.INTENSITYMODE_LUMINANCE:e=this.radius*this.radius;break}break;case n.LIGHTTYPEID_DIRECTIONALLIGHT:switch(i){case n.INTENSITYMODE_ILLUMINANCE:e=1;break;case n.INTENSITYMODE_LUMINANCE:{let r=this.radius;r=Math.max(r,.001),e=2*Math.PI*(1-Math.cos(r));break}}break;case n.LIGHTTYPEID_HEMISPHERICLIGHT:e=1;break}return e}_reorderLightsInScene(){let e=this.getScene();this._renderPriority!=0&&(e.requireLightSorting=!0),this.getScene().sortLightsByPriority()}areLightTexturesReady(){return!0}_isReady(){return!0}};Kt.FALLOFF_DEFAULT=jt.FALLOFF_DEFAULT;Kt.FALLOFF_PHYSICAL=jt.FALLOFF_PHYSICAL;Kt.FALLOFF_GLTF=jt.FALLOFF_GLTF;Kt.FALLOFF_STANDARD=jt.FALLOFF_STANDARD;Kt.LIGHTMAP_DEFAULT=jt.LIGHTMAP_DEFAULT;Kt.LIGHTMAP_SPECULAR=jt.LIGHTMAP_SPECULAR;Kt.LIGHTMAP_SHADOWSONLY=jt.LIGHTMAP_SHADOWSONLY;Kt.INTENSITYMODE_AUTOMATIC=jt.INTENSITYMODE_AUTOMATIC;Kt.INTENSITYMODE_LUMINOUSPOWER=jt.INTENSITYMODE_LUMINOUSPOWER;Kt.INTENSITYMODE_LUMINOUSINTENSITY=jt.INTENSITYMODE_LUMINOUSINTENSITY;Kt.INTENSITYMODE_ILLUMINANCE=jt.INTENSITYMODE_ILLUMINANCE;Kt.INTENSITYMODE_LUMINANCE=jt.INTENSITYMODE_LUMINANCE;Kt.LIGHTTYPEID_POINTLIGHT=jt.LIGHTTYPEID_POINTLIGHT;Kt.LIGHTTYPEID_DIRECTIONALLIGHT=jt.LIGHTTYPEID_DIRECTIONALLIGHT;Kt.LIGHTTYPEID_SPOTLIGHT=jt.LIGHTTYPEID_SPOTLIGHT;Kt.LIGHTTYPEID_HEMISPHERICLIGHT=jt.LIGHTTYPEID_HEMISPHERICLIGHT;Kt.LIGHTTYPEID_RECT_AREALIGHT=jt.LIGHTTYPEID_RECT_AREALIGHT;P([Ir()],Kt.prototype,"diffuse",void 0);P([Ir()],Kt.prototype,"specular",void 0);P([F()],Kt.prototype,"falloffType",void 0);P([F()],Kt.prototype,"intensity",void 0);P([F()],Kt.prototype,"range",null);P([F()],Kt.prototype,"intensityMode",null);P([F()],Kt.prototype,"radius",null);P([F()],Kt.prototype,"_renderPriority",void 0);P([le("_reorderLightsInScene")],Kt.prototype,"renderPriority",void 0);P([F("shadowEnabled")],Kt.prototype,"_shadowEnabled",void 0);P([F("excludeWithLayerMask")],Kt.prototype,"_excludeWithLayerMask",void 0);P([F("includeOnlyWithLayerMask")],Kt.prototype,"_includeOnlyWithLayerMask",void 0);P([F("lightmapMode")],Kt.prototype,"_lightmapMode",void 0)});var va,pR=I(()=>{Wt();kt();ke();zt();_a();Zf();$i();Ei.AddNodeConstructor("Light_Type_3",(n,e)=>()=>new va(n,b.Zero(),e));va=class extends Kt{constructor(e,t,i,r){super(e,i,r),this.groundColor=new Ee(0,0,0),this.direction=t||b.Up()}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightGround",3),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}getClassName(){return"HemisphericLight"}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(b.Zero())),this.direction}getShadowGenerator(){return null}transferToEffect(e,t){let i=b.Normalize(this.direction);return this._uniformBuffer.updateFloat4("vLightData",i.x,i.y,i.z,0,t),this._uniformBuffer.updateColor3("vLightGround",this.groundColor.scale(this.intensity),t),this}transferToNodeMaterialEffect(e,t){let i=b.Normalize(this.direction);return e.setFloat3(t,i.x,i.y,i.z),this}computeWorldMatrix(){return this._worldMatrix||(this._worldMatrix=Z.Identity()),this._worldMatrix}getTypeID(){return Kt.LIGHTTYPEID_HEMISPHERICLIGHT}prepareLightSpecificDefines(e,t){e["HEMILIGHT"+t]=!0}};P([Ir()],va.prototype,"groundColor",void 0);P([Qr()],va.prototype,"direction",void 0);Ut("BABYLON.HemisphericLight",va)});var Ka,_R=I(()=>{Wt();kt();ke();Zf();Mm();Ka=class extends Kt{constructor(){super(...arguments),this._needProjectionMatrixCompute=!0,this._viewMatrix=Z.Identity(),this._projectionMatrix=Z.Identity()}_setPosition(e){this._position=e}get position(){return this._position}set position(e){this._setPosition(e)}_setDirection(e){this._direction=e}get direction(){return this._direction}set direction(e){this._setDirection(e)}get shadowMinZ(){return this._shadowMinZ}set shadowMinZ(e){this._shadowMinZ=e,this.forceProjectionMatrixCompute()}get shadowMaxZ(){return this._shadowMaxZ}set shadowMaxZ(e){this._shadowMaxZ=e,this.forceProjectionMatrixCompute()}computeTransformedInformation(){return this.parent&&this.parent.getWorldMatrix?(this.transformedPosition||(this.transformedPosition=b.Zero()),b.TransformCoordinatesToRef(this.position,this.parent.getWorldMatrix(),this.transformedPosition),this.direction&&(this.transformedDirection||(this.transformedDirection=b.Zero()),b.TransformNormalToRef(this.direction,this.parent.getWorldMatrix(),this.transformedDirection)),!0):!1}getDepthScale(){return 50}getShadowDirection(e){return this.transformedDirection?this.transformedDirection:this.direction}getAbsolutePosition(){return this.transformedPosition?this.transformedPosition:this.position}setDirectionToTarget(e){return this.direction=b.Normalize(e.subtract(this.position)),this.direction}getRotation(){this.direction.normalize();let e=b.Cross(this.direction,Hs.Y),t=b.Cross(e,this.direction);return b.RotationFromAxis(e,t,this.direction)}needCube(){return!1}needProjectionMatrixCompute(){return this._needProjectionMatrixCompute}forceProjectionMatrixCompute(){this._needProjectionMatrixCompute=!0}_initCache(){super._initCache(),this._cache.position=b.Zero()}_isSynchronized(){return!!this._cache.position.equals(this.position)}computeWorldMatrix(e){return!e&&this.isSynchronized()?(this._currentRenderId=this.getScene().getRenderId(),this._worldMatrix):(this._updateCache(),this._cache.position.copyFrom(this.position),this._worldMatrix||(this._worldMatrix=Z.Identity()),Z.TranslationToRef(this.position.x,this.position.y,this.position.z,this._worldMatrix),this.parent&&this.parent.getWorldMatrix&&(this._worldMatrix.multiplyToRef(this.parent.getWorldMatrix(),this._worldMatrix),this._markSyncedWithParent()),this._worldMatrixDeterminantIsDirty=!0,this._worldMatrix)}getDepthMinZ(e){return this.shadowMinZ!==void 0?this.shadowMinZ:(e==null?void 0:e.minZ)||0}getDepthMaxZ(e){return this.shadowMaxZ!==void 0?this.shadowMaxZ:(e==null?void 0:e.maxZ)||1e4}setShadowProjectionMatrix(e,t,i){return this.customProjectionMatrixBuilder?this.customProjectionMatrixBuilder(t,i,e):this._setDefaultShadowProjectionMatrix(e,t,i),this}_syncParentEnabledState(){super._syncParentEnabledState(),(!this.parent||!this.parent.getWorldMatrix)&&(this.transformedPosition=null,this.transformedDirection=null)}getViewMatrix(e){let t=$.Vector3[0],i=this.position;this.computeTransformedInformation()&&(i=this.transformedPosition),b.NormalizeToRef(this.getShadowDirection(e),t),Math.abs(b.Dot(t,b.Up()))===1&&(t.z=1e-13);let r=$.Vector3[1];return i.addToRef(t,r),Z.LookAtLHToRef(i,r,b.Up(),this._viewMatrix),this._viewMatrix}getProjectionMatrix(e,t){return this.setShadowProjectionMatrix(this._projectionMatrix,e!=null?e:this._viewMatrix,t!=null?t:[]),this._projectionMatrix}};P([Qr()],Ka.prototype,"position",null);P([Qr()],Ka.prototype,"direction",null);P([F()],Ka.prototype,"shadowMinZ",null);P([F()],Ka.prototype,"shadowMaxZ",null)});var Qs,FH=I(()=>{Wt();kt();ke();_a();Zf();_R();$i();Ei.AddNodeConstructor("Light_Type_1",(n,e)=>()=>new Qs(n,b.Zero(),e));Qs=class extends Ka{get shadowFrustumSize(){return this._shadowFrustumSize}set shadowFrustumSize(e){this._shadowFrustumSize=e,this.forceProjectionMatrixCompute()}get shadowOrthoScale(){return this._shadowOrthoScale}set shadowOrthoScale(e){this._shadowOrthoScale=e,this.forceProjectionMatrixCompute()}get orthoLeft(){return this._orthoLeft}set orthoLeft(e){this._orthoLeft=e}get orthoRight(){return this._orthoRight}set orthoRight(e){this._orthoRight=e}get orthoTop(){return this._orthoTop}set orthoTop(e){this._orthoTop=e}get orthoBottom(){return this._orthoBottom}set orthoBottom(e){this._orthoBottom=e}constructor(e,t,i,r){super(e,i,r),this._shadowFrustumSize=0,this._shadowOrthoScale=.1,this.autoUpdateExtends=!0,this.autoCalcShadowZBounds=!1,this._orthoLeft=Number.MAX_VALUE,this._orthoRight=Number.MIN_VALUE,this._orthoTop=Number.MIN_VALUE,this._orthoBottom=Number.MAX_VALUE,this.position=t.scale(-1),this.direction=t}getClassName(){return"DirectionalLight"}getTypeID(){return Kt.LIGHTTYPEID_DIRECTIONALLIGHT}_setDefaultShadowProjectionMatrix(e,t,i){this.shadowFrustumSize>0?this._setDefaultFixedFrustumShadowProjectionMatrix(e):this._setDefaultAutoExtendShadowProjectionMatrix(e,t,i)}_setDefaultFixedFrustumShadowProjectionMatrix(e){let t=this.getScene().activeCamera;Z.OrthoLHToRef(this.shadowFrustumSize,this.shadowFrustumSize,this.shadowMinZ!==void 0?this.shadowMinZ:t?t.minZ:0,this.shadowMaxZ!==void 0?this.shadowMaxZ:t?t.maxZ:1e4,e,this.getScene().getEngine().isNDCHalfZRange)}_setDefaultAutoExtendShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(this.autoUpdateExtends||this._orthoLeft===Number.MAX_VALUE){let f=b.Zero();this._orthoLeft=Number.MAX_VALUE,this._orthoRight=-Number.MAX_VALUE,this._orthoTop=-Number.MAX_VALUE,this._orthoBottom=Number.MAX_VALUE;let d=Number.MAX_VALUE,h=-Number.MAX_VALUE;for(let u=0;uthis._orthoRight&&(this._orthoRight=f.x),f.y>this._orthoTop&&(this._orthoTop=f.y),this.autoCalcShadowZBounds&&(f.zh&&(h=f.z))}this.autoCalcShadowZBounds&&(this._shadowMinZ=d,this._shadowMaxZ=h)}let s=this._orthoRight-this._orthoLeft,a=this._orthoTop-this._orthoBottom,o=this.shadowMinZ!==void 0?this.shadowMinZ:(r==null?void 0:r.minZ)||0,l=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r==null?void 0:r.maxZ)||1e4,c=this.getScene().getEngine().useReverseDepthBuffer;Z.OrthoOffCenterLHToRef(this._orthoLeft-s*this.shadowOrthoScale,this._orthoRight+s*this.shadowOrthoScale,this._orthoBottom-a*this.shadowOrthoScale,this._orthoTop+a*this.shadowOrthoScale,c?l:o,c?o:l,e,this.getScene().getEngine().isNDCHalfZRange)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z,1,t),this):(this._uniformBuffer.updateFloat4("vLightData",this.direction.x,this.direction.y,this.direction.z,1,t),this)}transferToNodeMaterialEffect(e,t){return this.computeTransformedInformation()?(e.setFloat3(t,this.transformedDirection.x,this.transformedDirection.y,this.transformedDirection.z),this):(e.setFloat3(t,this.direction.x,this.direction.y,this.direction.z),this)}getDepthMinZ(e){let t=this._scene.getEngine();return!t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}getDepthMaxZ(e){let t=this._scene.getEngine();return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:1}prepareLightSpecificDefines(e,t){e["DIRLIGHT"+t]=!0}};P([F()],Qs.prototype,"shadowFrustumSize",null);P([F()],Qs.prototype,"shadowOrthoScale",null);P([F()],Qs.prototype,"autoUpdateExtends",void 0);P([F()],Qs.prototype,"autoCalcShadowZBounds",void 0);P([F("orthoLeft")],Qs.prototype,"_orthoLeft",void 0);P([F("orthoRight")],Qs.prototype,"_orthoRight",void 0);P([F("orthoTop")],Qs.prototype,"_orthoTop",void 0);P([F("orthoBottom")],Qs.prototype,"_orthoBottom",void 0);Ut("BABYLON.DirectionalLight",Qs)});var qf,BH=I(()=>{Wt();kt();ke();_a();Zf();_R();$i();Ei.AddNodeConstructor("Light_Type_0",(n,e)=>()=>new qf(n,b.Zero(),e));qf=class extends Ka{get shadowAngle(){return this._shadowAngle}set shadowAngle(e){this._shadowAngle=e,this.forceProjectionMatrixCompute()}get direction(){return this._direction}set direction(e){let t=this.needCube();if(this._direction=e,this.needCube()!==t&&this._shadowGenerators){let i=this._shadowGenerators.values();for(let r=i.next();r.done!==!0;r=i.next())r.value.recreateShadowMap()}}constructor(e,t,i,r){super(e,i,r),this._shadowAngle=Math.PI/2,this.position=t}getClassName(){return"PointLight"}getTypeID(){return Kt.LIGHTTYPEID_POINTLIGHT}needCube(){return!this.direction}getShadowDirection(e){if(this.direction)return super.getShadowDirection(e);switch(e){case 0:return new b(1,0,0);case 1:return new b(-1,0,0);case 2:return new b(0,-1,0);case 3:return new b(0,1,0);case 4:return new b(0,0,1);case 5:return new b(0,0,-1)}return b.Zero()}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera,s=this.getDepthMinZ(r),a=this.getDepthMaxZ(r),o=this.getScene().getEngine().useReverseDepthBuffer;Z.PerspectiveFovLHToRef(this.shadowAngle,1,o?a:s,o?s:a,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,o)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}transferToEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z,0,t):this._uniformBuffer.updateFloat4("vLightData",this.position.x-i.x,this.position.y-i.y,this.position.z-i.z,0,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,0,0,t),this}transferToNodeMaterialEffect(e,t){let i=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?e.setFloat3(t,this.transformedPosition.x-i.x,this.transformedPosition.y-i.y,this.transformedPosition.z-i.z):e.setFloat3(t,this.position.x-i.x,this.position.y-i.y,this.position.z-i.z),this}prepareLightSpecificDefines(e,t){e["POINTLIGHT"+t]=!0}};P([F()],qf.prototype,"shadowAngle",null);Ut("BABYLON.PointLight",qf)});var Kr,QD=I(()=>{Wt();kt();ke();_a();Zf();_R();Xr();$i();Ei.AddNodeConstructor("Light_Type_2",(n,e)=>()=>new Kr(n,b.Zero(),b.Zero(),0,0,e));Kr=class n extends Ka{get iesProfileTexture(){return this._iesProfileTexture}set iesProfileTexture(e){this._iesProfileTexture!==e&&(this._iesProfileTexture=e,this._iesProfileTexture&&n._IsTexture(this._iesProfileTexture)&&this._iesProfileTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()}))}get angle(){return this._angle}set angle(e){this._angle=e,this._cosHalfAngle=Math.cos(e*.5),this._projectionTextureProjectionLightDirty=!0,this.forceProjectionMatrixCompute(),this._computeAngleValues()}get innerAngle(){return this._innerAngle}set innerAngle(e){this._innerAngle=e,this._computeAngleValues()}get shadowAngleScale(){return this._shadowAngleScale}set shadowAngleScale(e){this._shadowAngleScale=e,this.forceProjectionMatrixCompute()}get projectionTextureMatrix(){return this._projectionTextureMatrix}get projectionTextureLightNear(){return this._projectionTextureLightNear}set projectionTextureLightNear(e){this._projectionTextureLightNear=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureLightFar(){return this._projectionTextureLightFar}set projectionTextureLightFar(e){this._projectionTextureLightFar=e,this._projectionTextureProjectionLightDirty=!0}get projectionTextureUpDirection(){return this._projectionTextureUpDirection}set projectionTextureUpDirection(e){this._projectionTextureUpDirection=e,this._projectionTextureProjectionLightDirty=!0}get projectionTexture(){return this._projectionTexture}set projectionTexture(e){this._projectionTexture!==e&&(this._projectionTexture=e,this._projectionTextureDirty=!0,this._projectionTexture&&!this._projectionTexture.isReady()&&(n._IsProceduralTexture(this._projectionTexture)?this._projectionTexture.getEffect().executeWhenCompiled(()=>{this._markMeshesAsLightDirty()}):n._IsTexture(this._projectionTexture)&&this._projectionTexture.onLoadObservable.addOnce(()=>{this._markMeshesAsLightDirty()})))}static _IsProceduralTexture(e){return e.onGeneratedObservable!==void 0}static _IsTexture(e){return e.onLoadObservable!==void 0}get projectionTextureProjectionLightMatrix(){return this._projectionTextureProjectionLightMatrix}set projectionTextureProjectionLightMatrix(e){this._projectionTextureProjectionLightMatrix=e,this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0}constructor(e,t,i,r,s,a,o){super(e,a,o),this._innerAngle=0,this._iesProfileTexture=null,this._projectionTextureMatrix=Z.Zero(),this._projectionTextureLightNear=1e-6,this._projectionTextureLightFar=1e3,this._projectionTextureUpDirection=b.Up(),this._projectionTextureViewLightDirty=!0,this._projectionTextureProjectionLightDirty=!0,this._projectionTextureDirty=!0,this._projectionTextureViewTargetVector=b.Zero(),this._projectionTextureViewLightMatrix=Z.Zero(),this._projectionTextureProjectionLightMatrix=Z.Zero(),this._projectionTextureScalingMatrix=Z.FromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1),this.position=t,this.direction=i,this.angle=r,this.exponent=s}getClassName(){return"SpotLight"}getTypeID(){return Kt.LIGHTTYPEID_SPOTLIGHT}_setDirection(e){super._setDirection(e),this._projectionTextureViewLightDirty=!0}_setPosition(e){super._setPosition(e),this._projectionTextureViewLightDirty=!0}_setDefaultShadowProjectionMatrix(e,t,i){let r=this.getScene().activeCamera;if(!r)return;this._shadowAngleScale=this._shadowAngleScale||1;let s=this._shadowAngleScale*this._angle,a=this.shadowMinZ!==void 0?this.shadowMinZ:r.minZ,o=this.shadowMaxZ!==void 0?this.shadowMaxZ:r.maxZ,l=this.getScene().getEngine().useReverseDepthBuffer;Z.PerspectiveFovLHToRef(s,1,l?o:a,l?a:o,e,!0,this._scene.getEngine().isNDCHalfZRange,void 0,l)}_computeProjectionTextureViewLightMatrix(){this._projectionTextureViewLightDirty=!1,this._projectionTextureDirty=!0,this.getAbsolutePosition().addToRef(this.getShadowDirection(),this._projectionTextureViewTargetVector),Z.LookAtLHToRef(this.getAbsolutePosition(),this._projectionTextureViewTargetVector,this._projectionTextureUpDirection,this._projectionTextureViewLightMatrix)}_computeProjectionTextureProjectionLightMatrix(){this._projectionTextureProjectionLightDirty=!1,this._projectionTextureDirty=!0;let e=this.projectionTextureLightFar,t=this.projectionTextureLightNear,i=e/(e-t),r=-i*t,s=1/Math.tan(this._angle/2);Z.FromValuesToRef(s/1,0,0,0,0,s,0,0,0,0,i,1,0,0,r,0,this._projectionTextureProjectionLightMatrix)}_computeProjectionTextureMatrix(){if(this._projectionTextureDirty=!1,this._projectionTextureViewLightMatrix.multiplyToRef(this._projectionTextureProjectionLightMatrix,this._projectionTextureMatrix),this._projectionTexture instanceof _e){let e=this._projectionTexture.uScale/2,t=this._projectionTexture.vScale/2;Z.FromValuesToRef(e,0,0,0,0,t,0,0,0,0,.5,0,.5,.5,.5,1,this._projectionTextureScalingMatrix)}this._projectionTextureMatrix.multiplyToRef(this._projectionTextureScalingMatrix,this._projectionTextureMatrix)}_buildUniformLayout(){this._uniformBuffer.addUniform("vLightData",4),this._uniformBuffer.addUniform("vLightDiffuse",4),this._uniformBuffer.addUniform("vLightSpecular",4),this._uniformBuffer.addUniform("vLightDirection",3),this._uniformBuffer.addUniform("vLightFalloff",4),this._uniformBuffer.addUniform("shadowsInfo",3),this._uniformBuffer.addUniform("depthValues",2),this._uniformBuffer.create()}_computeAngleValues(){this._lightAngleScale=1/Math.max(.001,Math.cos(this._innerAngle*.5)-this._cosHalfAngle),this._lightAngleOffset=-this._cosHalfAngle*this._lightAngleScale}transferTexturesToEffect(e,t){return this.projectionTexture&&this.projectionTexture.isReady()&&(this._projectionTextureViewLightDirty&&this._computeProjectionTextureViewLightMatrix(),this._projectionTextureProjectionLightDirty&&this._computeProjectionTextureProjectionLightMatrix(),this._projectionTextureDirty&&this._computeProjectionTextureMatrix(),e.setMatrix("textureProjectionMatrix"+t,this._projectionTextureMatrix),e.setTexture("projectionLightTexture"+t,this.projectionTexture)),this._iesProfileTexture&&this._iesProfileTexture.isReady()&&e.setTexture("iesLightTexture"+t,this._iesProfileTexture),this}transferToEffect(e,t){let i,r=this._scene.floatingOriginOffset;return this.computeTransformedInformation()?(this._uniformBuffer.updateFloat4("vLightData",this.transformedPosition.x-r.x,this.transformedPosition.y-r.y,this.transformedPosition.z-r.z,this.exponent,t),i=b.Normalize(this.transformedDirection)):(this._uniformBuffer.updateFloat4("vLightData",this.position.x-r.x,this.position.y-r.y,this.position.z-r.z,this.exponent,t),i=b.Normalize(this.direction)),this._uniformBuffer.updateFloat4("vLightDirection",i.x,i.y,i.z,this._cosHalfAngle,t),this._uniformBuffer.updateFloat4("vLightFalloff",this.range,this._inverseSquaredRange,this._lightAngleScale,this._lightAngleOffset,t),this}transferToNodeMaterialEffect(e,t){let i;return this.computeTransformedInformation()?i=b.Normalize(this.transformedDirection):i=b.Normalize(this.direction),this.getScene().useRightHandedSystem?e.setFloat3(t,-i.x,-i.y,-i.z):e.setFloat3(t,i.x,i.y,i.z),this}dispose(){super.dispose(),this._projectionTexture&&this._projectionTexture.dispose(),this._iesProfileTexture&&(this._iesProfileTexture.dispose(),this._iesProfileTexture=null)}getDepthMinZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMinZ!==void 0?this.shadowMinZ:(r=e==null?void 0:e.minZ)!=null?r:0;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?i:this._scene.getEngine().isNDCHalfZRange?0:i}getDepthMaxZ(e){var r;let t=this._scene.getEngine(),i=this.shadowMaxZ!==void 0?this.shadowMaxZ:(r=e==null?void 0:e.maxZ)!=null?r:1e4;return t.useReverseDepthBuffer&&t.isNDCHalfZRange?0:i}areLightTexturesReady(){return!(this._projectionTexture&&!this._projectionTexture.isReadyOrNotBlocking()||this._iesProfileTexture&&!this._iesProfileTexture.isReadyOrNotBlocking())}prepareLightSpecificDefines(e,t){e["SPOTLIGHT"+t]=!0,e["PROJECTEDLIGHTTEXTURE"+t]=!!(this.projectionTexture&&this.projectionTexture.isReady()),e["IESLIGHTTEXTURE"+t]=!!(this._iesProfileTexture&&this._iesProfileTexture.isReady())}};P([F()],Kr.prototype,"angle",null);P([F()],Kr.prototype,"innerAngle",null);P([F()],Kr.prototype,"shadowAngleScale",null);P([F()],Kr.prototype,"exponent",void 0);P([F()],Kr.prototype,"projectionTextureLightNear",null);P([F()],Kr.prototype,"projectionTextureLightFar",null);P([F()],Kr.prototype,"projectionTextureUpDirection",null);P([Gt("projectedLightTexture")],Kr.prototype,"_projectionTexture",void 0);Ut("BABYLON.SpotLight",Kr)});function UH(n){let e=n.pathArray,t=n.closeArray||!1,i=n.closePath||!1,r=n.invertUV||!1,s=Math.floor(e[0].length/2),a=n.offset||s;a=a>s?s:Math.floor(a);let o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=n.uvs,c=n.colors,f=[],d=[],h=[],u=[],m=[],_=[],p=[],g=[],v,T=[],S=[],E,A,R;if(e.length<2){let be=[],De=[];for(A=0;A0&&(G=D[R].subtract(D[R-1]).length(),O=G+p[E],m[E].push(O),p[E]=O),R++;i&&(R--,f.push(D[0].x,D[0].y,D[0].z),G=D[R].subtract(D[0]).length(),O=G+p[E],m[E].push(O),p[E]=O),T[E]=w+y,S[E]=M,M+=w+y}let N,B,V,Q;for(A=0;A{let m=i[0].length,_=o,p=0,g=_._originalBuilderSideOrientation===q.DOUBLESIDE?2:1;for(let v=1;v<=g;++v)for(let T=0;T{ke();Fi();Zi();Tr();fn();Me.CreateRibbon=UH;q.CreateRibbon=(n,e,t=!1,i,r,s,a=!1,o,l)=>Bo(n,{pathArray:e,closeArray:t,closePath:i,offset:r,updatable:a,sideOrientation:o,instance:l},s)});function VH(n){let e=[],t=[],i=[],r=[],s=n.radius||.5,a=n.tessellation||64,o=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,l=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;e.push(0,0,0),r.push(.5,.5);let c=Math.PI*2*o,f=o===1?c/a:c/(a-1),d=0;for(let m=0;m{Fi();Tr();fn();Me.CreateDisc=VH;q.CreateDisc=(n,e,t,i=null,r,s)=>$D(n,{radius:e,tessellation:t,sideOrientation:s,updatable:r},i)});var Tp,kH=I(()=>{ke();Zi();Fi();q._GroundMeshParser=(n,e)=>Tp.Parse(n,e);Tp=class n extends q{constructor(e,t){super(e,t),this.generateOctree=!1}getClassName(){return"GroundMesh"}get subdivisions(){return Math.min(this._subdivisionsX,this._subdivisionsY)}get subdivisionsX(){return this._subdivisionsX}get subdivisionsY(){return this._subdivisionsY}optimize(e,t=32){this._subdivisionsX=e,this._subdivisionsY=e,this.subdivide(e);let i=this;i.createOrUpdateSubmeshesOctree&&i.createOrUpdateSubmeshesOctree(t)}getHeightAtCoordinates(e,t){let i=this.getWorldMatrix(),r=$.Matrix[5];i.invertToRef(r);let s=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,r,s),e=s.x,t=s.z,e=this._maxX||t<=this._minZ||t>this._maxZ)return this.position.y;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let a=this._getFacetAt(e,t),o=-(a.x*e+a.z*t+a.w)/a.y;return b.TransformCoordinatesFromFloatsToRef(0,o,0,i,s),s.y}getNormalAtCoordinates(e,t){let i=new b(0,1,0);return this.getNormalAtCoordinatesToRef(e,t,i),i}getNormalAtCoordinatesToRef(e,t,i){let r=this.getWorldMatrix(),s=$.Matrix[5];r.invertToRef(s);let a=$.Vector3[8];if(b.TransformCoordinatesFromFloatsToRef(e,0,t,s,a),e=a.x,t=a.z,ethis._maxX||tthis._maxZ)return this;(!this._heightQuads||this._heightQuads.length==0)&&(this._initHeightQuads(),this._computeHeightQuads());let o=this._getFacetAt(e,t);return b.TransformNormalFromFloatsToRef(o.x,o.y,o.z,r,i),this}updateCoordinateHeights(){return(!this._heightQuads||this._heightQuads.length==0)&&this._initHeightQuads(),this._computeHeightQuads(),this}_getFacetAt(e,t){let i=Math.floor((e+this._maxX)*this._subdivisionsX/this._width),r=Math.floor(-(t+this._maxZ)*this._subdivisionsY/this._height+this._subdivisionsY),s=this._heightQuads[r*this._subdivisionsX+i],a;return tn.maxHeight){c=!0;let d=n.maxHeight;n.maxHeight=n.minHeight,n.minHeight=d}for(s=0;s<=n.subdivisions;s++)for(a=0;a<=n.subdivisions;a++){let d=new b(a*n.width/n.subdivisions-n.width/2,0,(n.subdivisions-s)*n.height/n.subdivisions-n.height/2),h=(d.x+n.width/2)/n.width*(n.bufferWidth-1)|0,u=(1-(d.z+n.height/2)/n.height)*(n.bufferHeight-1)|0,m=(h+u*n.bufferWidth)*4,_=n.buffer[m]/255,p=n.buffer[m+1]/255,g=n.buffer[m+2]/255,v=n.buffer[m+3]/255;c&&(_=1-_,p=1-p,g=1-g);let T=_*o.r+p*o.g+g*o.b;v>=l?d.y=n.minHeight+(n.maxHeight-n.minHeight)*T:d.y=n.minHeight-Ft,n.heightBuffer&&(n.heightBuffer[s*(n.subdivisions+1)+a]=d.y),t.push(d.x,d.y,d.z),i.push(0,0,0),r.push(a/n.subdivisions,1-s/n.subdivisions)}for(s=0;s=n.minHeight,p=t[h*3+1]>=n.minHeight,g=t[u*3+1]>=n.minHeight;_&&p&&g&&(e.push(d),e.push(h),e.push(u)),t[m*3+1]>=n.minHeight&&_&&g&&(e.push(m),e.push(d),e.push(u))}Me.ComputeNormals(t,e,i);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function eL(n,e={},t){let i=new Tp(n,t);return i._setReady(!1),i._subdivisionsX=e.subdivisionsX||e.subdivisions||1,i._subdivisionsY=e.subdivisionsY||e.subdivisions||1,i._width=e.width||1,i._height=e.height||1,i._maxX=i._width/2,i._maxZ=i._height/2,i._minX=-i._maxX,i._minZ=-i._maxZ,JD(e).applyToMesh(i,e.updatable),i._setReady(!0),i}function tL(n,e,t=null){let i=new q(n,t);return WH(e).applyToMesh(i,e.updatable),i}function iL(n,e,t={},i=null){let r=t.width||10,s=t.height||10,a=t.subdivisions||1,o=t.minHeight||0,l=t.maxHeight||1,c=t.colorFilter||new Ee(.3,.59,.11),f=t.alphaFilter||0,d=t.updatable,h=t.onReady;i=i||Oe.LastCreatedScene;let u=new Tp(n,i);u._subdivisionsX=a,u._subdivisionsY=a,u._width=r,u._height=s,u._maxX=u._width/2,u._maxZ=u._height/2,u._minX=-u._maxX,u._minZ=-u._maxZ,u._setReady(!1);let m;t.passHeightBufferInCallback&&(m=new Float32Array((a+1)*(a+1)));let _=(p,g,v)=>{HH({width:r,height:s,subdivisions:a,minHeight:o,maxHeight:l,colorFilter:c,buffer:p,bufferWidth:g,bufferHeight:v,alphaFilter:f,heightBuffer:m}).applyToMesh(u,d),h&&h(u,m),u._setReady(!0)};if(typeof e=="string"){i.addPendingData(u);let p=v=>{let T=v.width,S=v.height;if(i.isDisposed){i.removePendingData(u);return}let E=i==null?void 0:i.getEngine().resizeImageBitmap(v,T,S);_(E,T,S),i.removePendingData(u)},g=(v,T)=>{i.removePendingData(u),t.onError&&t.onError(v,T)};pe.LoadImage(e,p,g,i.offlineProvider)}else _(e.data,e.width,e.height);return u}var rL=I(()=>{ke();zt();Fi();Tr();kH();wi();Gi();Kn();fn();Me.CreateGround=JD;Me.CreateTiledGround=WH;Me.CreateGroundFromHeightMap=HH;q.CreateGround=(n,e,t,i,r,s)=>eL(n,{width:e,height:t,subdivisions:i,updatable:s},r);q.CreateTiledGround=(n,e,t,i,r,s,a,o,l)=>tL(n,{xmin:e,zmin:t,xmax:i,zmax:r,subdivisions:s,precision:a,updatable:l},o);q.CreateGroundFromHeightMap=(n,e,t,i,r,s,a,o,l,c,f)=>iL(n,e,{width:t,height:i,subdivisions:r,minHeight:s,maxHeight:a,updatable:l,onReady:c,alphaFilter:f},o)});function gR(n){let t=[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23],i=[0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0],r=[],s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.wrap||!1,c=n.topBaseAt===void 0?1:n.topBaseAt,f=n.bottomBaseAt===void 0?0:n.bottomBaseAt;c=(c+4)%4,f=(f+4)%4;let d=[2,0,3,1],h=[2,0,1,3],u=d[c],m=h[f],_=[1,-1,1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,-1,1,-1,1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,1];if(l){t=[2,3,0,2,0,1,4,5,6,4,6,7,9,10,11,9,11,8,12,14,15,12,13,14],_=[-1,1,1,1,1,1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,-1,1,-1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,-1,-1];let R=[[1,1,1],[-1,1,1],[-1,1,-1],[1,1,-1]],M=[[-1,-1,1],[1,-1,1],[1,-1,-1],[-1,-1,-1]],y=[17,18,19,16],C=[22,23,20,21];for(;u>0;)R.unshift(R.pop()),y.unshift(y.pop()),u--;for(;m>0;)M.unshift(M.pop()),C.unshift(C.pop()),m--;R=R.flat(),M=M.flat(),_=_.concat(R).concat(M),t.push(y[0],y[2],y[3],y[0],y[1],y[2]),t.push(C[0],C[2],C[3],C[0],C[1],C[2])}let p=[s/2,a/2,o/2],g=_.reduce((R,M,y)=>R.concat(M*p[y%3]),[]),v=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,T=n.faceUV||new Array(6),S=n.faceColors,E=[];for(let R=0;R<6;R++)T[R]===void 0&&(T[R]=new Ni(0,0,1,1)),S&&S[R]===void 0&&(S[R]=new ft(1,1,1,1));for(let R=0;R<6;R++)if(r.push(T[R].z,yt?1-T[R].w:T[R].w),r.push(T[R].x,yt?1-T[R].w:T[R].w),r.push(T[R].x,yt?1-T[R].y:T[R].y),r.push(T[R].z,yt?1-T[R].y:T[R].y),S)for(let M=0;M<4;M++)E.push(S[R].r,S[R].g,S[R].b,S[R].a);Me._ComputeSides(v,g,t,i,r,n.frontUVs,n.backUVs);let A=new Me;if(A.indices=t,A.positions=g,A.normals=i,A.uvs=r,S){let R=v===Me.DOUBLESIDE?E.concat(E):E;A.colors=R}return A}function nL(n,e={},t=null){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,gR(e).applyToMesh(i,e.updatable),i}var sL=I(()=>{ke();zt();Fi();Tr();fn();rL();Me.CreateBox=gR;q.CreateBox=(n,e,t=null,i,r)=>nL(n,{size:e,sideOrientation:r,updatable:i},t)});function Ap(n){let e=n.pattern||q.NO_FLIP,t=n.tileWidth||n.tileSize||1,i=n.tileHeight||n.tileSize||1,r=n.alignHorizontal||0,s=n.alignVertical||0,a=n.width||n.size||1,o=Math.floor(a/t),l=a-o*t,c=n.height||n.size||1,f=Math.floor(c/i),d=c-f*i,h=t*o/2,u=i*f/2,m=0,_=0,p=0,g=0,v=0,T=0;if(l>0||d>0){switch(p=-h,g=-u,v=h,T=u,r){case q.CENTER:l/=2,p-=l,v+=l;break;case q.LEFT:v+=l,m=-l/2;break;case q.RIGHT:p-=l,m=l/2;break}switch(s){case q.CENTER:d/=2,g-=d,T+=d;break;case q.BOTTOM:T+=d,_=-d/2;break;case q.TOP:g-=d,_=d/2;break}}let S=[],E=[],A=[];A[0]=[0,0,1,0,1,1,0,1],A[1]=[0,0,1,0,1,1,0,1],(e===q.ROTATE_TILE||e===q.ROTATE_ROW)&&(A[1]=[1,1,0,1,0,0,1,0]),(e===q.FLIP_TILE||e===q.FLIP_ROW)&&(A[1]=[1,0,0,0,0,1,1,1]),(e===q.FLIP_N_ROTATE_TILE||e===q.FLIP_N_ROTATE_ROW)&&(A[1]=[0,1,1,1,1,0,0,0]);let R=[],M=[],y=[],C=0;for(let O=0;O0||d>0){let O=d>0&&(s===q.CENTER||s===q.TOP),N=d>0&&(s===q.CENTER||s===q.BOTTOM),B=l>0&&(r===q.CENTER||r===q.RIGHT),V=l>0&&(r===q.CENTER||r===q.LEFT),Q,K,J,z,Y;if(O&&B&&(S.push(p+m,g+_,0),S.push(-h+m,g+_,0),S.push(-h+m,g+d+_,0),S.push(p+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=1-l/t,J=1-d/i,z=1,Y=1,Q=[K,J,z,J,z,Y,K,Y],e===q.ROTATE_ROW&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),e===q.FLIP_ROW&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),e===q.FLIP_N_ROTATE_ROW&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O&&V&&(S.push(h+m,g+_,0),S.push(v+m,g+_,0),S.push(v+m,g+d+_,0),S.push(h+m,g+d+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=0,J=1-d/i,z=l/t,Y=1,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW||e===q.ROTATE_TILE&&o%2===0)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW||e===q.FLIP_TILE&&o%2===0)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW||e===q.FLIP_N_ROTATE_TILE&&o%2===0)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&B&&(S.push(p+m,u+_,0),S.push(-h+m,u+_,0),S.push(-h+m,T+_,0),S.push(p+m,T+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=1-l/t,J=0,z=1,Y=d/i,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW&&f%2===1||e===q.ROTATE_TILE&&f%1===0)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW&&f%2===1||e===q.FLIP_TILE&&f%2===0)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW&&f%2===1||e===q.FLIP_N_ROTATE_TILE&&f%2===0)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),N&&V&&(S.push(h+m,u+_,0),S.push(v+m,u+_,0),S.push(v+m,T+_,0),S.push(h+m,T+_,0),y.push(C,C+1,C+3,C+1,C+2,C+3),C+=4,K=0,J=0,z=l/t,Y=d/i,Q=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_ROW&&f%2===1||e===q.ROTATE_TILE&&(f+o)%2===1)&&(Q=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_ROW&&f%2===1||e===q.FLIP_TILE&&(f+o)%2===1)&&(Q=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_ROW&&f%2===1||e===q.FLIP_N_ROTATE_TILE&&(f+o)%2===1)&&(Q=[K,1-J,z,1-J,z,1-Y,K,1-Y]),R=R.concat(Q),M.push(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1),E.push(0,0,-1,0,0,-1,0,0,-1,0,0,-1)),O){let de=[];K=0,J=1-d/i,z=1,Y=1,de[0]=[K,J,z,J,z,Y,K,Y],de[1]=[K,J,z,J,z,Y,K,Y],(e===q.ROTATE_TILE||e===q.ROTATE_ROW)&&(de[1]=[1-K,1-J,1-z,1-J,1-z,1-Y,1-K,1-Y]),(e===q.FLIP_TILE||e===q.FLIP_ROW)&&(de[1]=[1-K,J,1-z,J,1-z,Y,1-K,Y]),(e===q.FLIP_N_ROTATE_TILE||e===q.FLIP_N_ROTATE_ROW)&&(de[1]=[K,1-J,z,1-J,z,1-Y,K,1-Y]);for(let ge=0;ge{Fi();Tr();Me.CreateTiledPlane=Ap});function XH(n){let t=n.faceUV||new Array(6),i=n.faceColors,r=n.pattern||q.NO_FLIP,s=n.width||n.size||1,a=n.height||n.size||1,o=n.depth||n.size||1,l=n.tileWidth||n.tileSize||1,c=n.tileHeight||n.tileSize||1,f=n.alignHorizontal||0,d=n.alignVertical||0,h=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE;for(let O=0;O<6;O++)t[O]===void 0&&(t[O]=new Ni(0,0,1,1)),i&&i[O]===void 0&&(i[O]=new ft(1,1,1,1));let u=s/2,m=a/2,_=o/2,p=[];for(let O=0;O<2;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:s,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});for(let O=2;O<4;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:o,height:a,alignVertical:d,alignHorizontal:f,sideOrientation:h});let g=d;d===q.BOTTOM?g=q.TOP:d===q.TOP&&(g=q.BOTTOM);for(let O=4;O<6;O++)p[O]=Ap({pattern:r,tileWidth:l,tileHeight:c,width:s,height:o,alignVertical:g,alignHorizontal:f,sideOrientation:h});let v=[],T=[],S=[],E=[],A=[],R=[],M=[],y=[],C,D=0;for(let O=0;O<6;O++){let N=p[O].positions.length;R[O]=[],M[O]=[];for(let B=0;BB+D)),D+=R[O].length,i){let B=i[O];for(let V=0;V{ke();zt();Fi();Tr();aL();fn();vR=1,oL=-1;Me.CreateTiledBox=XH});function jH(n){let e=(n.segments||32)|0,t=n.diameterX||n.diameter||1,i=n.diameterY||n.diameter||1,r=n.diameterZ||n.diameter||1,s=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,a=n.slice&&n.slice<=0?1:n.slice||1,o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=!!n.dedupTopBottomIndices,c=new b(t/2,i/2,r/2),f=2+e,d=2*f,h=[],u=[],m=[],_=[];for(let g=0;g<=f;g++){let v=g/f,T=v*Math.PI*a;for(let S=0;S<=d;S++){let E=S/d,A=E*Math.PI*2*s,R=Z.RotationZ(-T),M=Z.RotationY(A),y=b.TransformCoordinates(b.Up(),R),C=b.TransformCoordinates(y,M),D=C.multiply(c),w=C.divide(c).normalize();u.push(D.x,D.y,D.z),m.push(w.x,w.y,w.z),_.push(E,yt?1-v:v)}if(g>0){let S=u.length/3;for(let E=S-2*(d+1);E+d+21&&(h.push(E),h.push(E+1),h.push(E+d+1)),(g{ke();Fi();Tr();fn();Me.CreateSphere=jH;q.CreateSphere=(n,e,t,i,r,s)=>lL(n,{segments:e,diameterX:t,diameterY:t,diameterZ:t,sideOrientation:s,updatable:r},i)});function qH(n){let e=n.height||2,t=n.diameterTop===0?0:n.diameterTop||n.diameter||1,i=n.diameterBottom===0?0:n.diameterBottom||n.diameter||1;t=t||1e-5,i=i||1e-5;let r=(n.tessellation||24)|0,s=(n.subdivisions||1)|0,a=!!n.hasRings,o=!!n.enclose,l=n.cap===0?0:n.cap||q.CAP_ALL,c=n.arc&&(n.arc<=0||n.arc>1)?1:n.arc||1,f=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,d=n.faceUV||new Array(3),h=n.faceColors,u=c!==1&&o?2:0,m=a?s:1,_=2+(1+u)*m,p;for(p=0;p<_;p++)h&&h[p]===void 0&&(h[p]=new ft(1,1,1,1));for(p=0;p<_;p++)d&&d[p]===void 0&&(d[p]=new Ni(0,0,1,1));let g=[],v=[],T=[],S=[],E=[],A=Math.PI*2*c/r,R,M,y,C=(i-t)/2/e,D=b.Zero(),w=b.Zero(),G=b.Zero(),O=b.Zero(),N=b.Zero(),B=Hs.Y,V,Q,K,J,z=1,Y=0,de;for(V=0;V<=s;V++)for(M=V/s,y=(M*(t-i)+i)/2,J=a&&V!==0&&V!==s?2:1,K=0;K{let ie=ve?t/2:i/2;if(ie===0)return;let ue,Pe,me,be=ve?d[_-1]:d[0],De=null;h&&(De=ve?h[_-1]:h[0]);let ut=v.length/3,Ye=ve?e/2:-e/2,je=new b(0,Ye,0);v.push(je.x,je.y,je.z),T.push(0,ve?1:-1,0);let Qt=be.y+(be.w-be.y)*.5;S.push(be.x+(be.z-be.x)*.5,yt?1-Qt:Qt),De&&E.push(De.r,De.g,De.b,De.a);let Pt=new we(.5,.5);for(me=0;me<=r;me++){ue=Math.PI*2*me*c/r;let Ti=Math.cos(-ue),se=Math.sin(-ue);Pe=new b(Ti*ie,Ye,se*ie);let Di=new we(Ti*Pt.x+.5,se*Pt.y+.5);v.push(Pe.x,Pe.y,Pe.z),T.push(0,ve?1:-1,0);let ii=be.y+(be.w-be.y)*Di.y;S.push(be.x+(be.z-be.x)*Di.x,yt?1-ii:ii),De&&E.push(De.r,De.g,De.b,De.a)}for(me=0;me{ke();zt();Fi();Tr();Ys();Mm();fn();Me.CreateCylinder=qH;q.CreateCylinder=(n,e,t,i,r,s,a,o,l)=>((a===void 0||!(a instanceof ti))&&(a!==void 0&&(l=o||q.DEFAULTSIDE,o=a),a=s,s=1),cL(n,{height:e,diameterTop:t,diameterBottom:i,tessellation:r,subdivisions:s,sideOrientation:l,updatable:o},a))});function $H(n){let e=[],t=[],i=[],r=[],s=n.diameter||1,a=n.thickness||.5,o=(n.tessellation||16)|0,l=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,c=o+1;for(let d=0;d<=o;d++){let h=d/o,u=d*Math.PI*2/o-Math.PI/2,m=Z.Translation(s/2,0,0).multiply(Z.RotationY(u));for(let _=0;_<=o;_++){let p=1-_/o,g=_*Math.PI*2/o+Math.PI,v=Math.cos(g),T=Math.sin(g),S=new b(v,T,0),E=S.scale(a/2),A=new we(h,p);E=b.TransformCoordinates(E,m),S=b.TransformNormal(S,m),t.push(E.x,E.y,E.z),i.push(S.x,S.y,S.z),r.push(A.x,yt?1-A.y:A.y);let R=(d+1)%c,M=(_+1)%c;e.push(d*c+_),e.push(d*c+M),e.push(R*c+_),e.push(d*c+M),e.push(R*c+M),e.push(R*c+_)}}Me._ComputeSides(l,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function fL(n,e={},t){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,$H(e).applyToMesh(i,e.updatable),i}var JH=I(()=>{ke();Fi();Tr();fn();Me.CreateTorus=$H;q.CreateTorus=(n,e,t,i,r,s,a)=>fL(n,{diameter:e,thickness:t,tessellation:i,sideOrientation:a,updatable:s},r)});function ez(n){let e=[],t=[],i=[],r=[],s=n.radius||2,a=n.tube||.5,o=n.radialSegments||32,l=n.tubularSegments||32,c=n.p||2,f=n.q||3,d=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,h=p=>{let g=Math.cos(p),v=Math.sin(p),T=f/c*p,S=Math.cos(T),E=s*(2+S)*.5*g,A=s*(2+S)*v*.5,R=s*Math.sin(T)*.5;return new b(E,A,R)},u,m;for(u=0;u<=o;u++){let g=u%o/o*2*c*Math.PI,v=h(g),T=h(g+.01),S=T.subtract(v),E=T.add(v),A=b.Cross(S,E);for(E=b.Cross(A,S),A.normalize(),E.normalize(),m=0;m{ke();Fi();Tr();fn();Me.CreateTorusKnot=ez;q.CreateTorusKnot=(n,e,t,i,r,s,a,o,l,c)=>dL(n,{radius:e,tube:t,radialSegments:i,tubularSegments:r,p:s,q:a,sideOrientation:c,updatable:l},o)});var Tc,hL=I(()=>{ke();Lt();$m();Fi();Gg();Vf();Zi();wi();$i();q._instancedMeshFactory=(n,e)=>{let t=new Tc(n,e);if(e.instancedBuffers){t.instancedBuffers={};for(let i in e.instancedBuffers)t.instancedBuffers[i]=e.instancedBuffers[i]}return t};Tc=class extends yr{constructor(e,t){super(e,t.getScene()),this._indexInSourceMeshInstanceArray=-1,this._distanceToCamera=0,t.addInstance(this),this._sourceMesh=t,this._unIndexed=t._unIndexed,this.position.copyFrom(t.position),this.rotation.copyFrom(t.rotation),this.scaling.copyFrom(t.scaling),t.rotationQuaternion&&(this.rotationQuaternion=t.rotationQuaternion.clone()),this.animations=t.animations.slice();for(let i of t.getAnimationRanges())i!=null&&this.createAnimationRange(i.name,i.from,i.to);if(this.infiniteDistance=t.infiniteDistance,this.setPivotMatrix(t.getPivotMatrix()),!t.skeleton&&!t.morphTargetManager&&t.hasBoundingInfo){let i=t.getBoundingInfo();this.buildBoundingInfo(i.minimum,i.maximum)}else this.refreshBoundingInfo(!0,!0);this._syncSubMeshes()}getClassName(){return"InstancedMesh"}get lightSources(){return this._sourceMesh._lightSources}_resyncLightSources(){}_resyncLightSource(){}_removeLightSource(){}get receiveShadows(){return this._sourceMesh.receiveShadows}set receiveShadows(e){var t;((t=this._sourceMesh)==null?void 0:t.receiveShadows)!==e&&pe.Warn("Setting receiveShadows on an instanced mesh has no effect")}get material(){return this._sourceMesh.material}set material(e){var t;((t=this._sourceMesh)==null?void 0:t.material)!==e&&pe.Warn("Setting material on an instanced mesh has no effect")}get visibility(){return this._sourceMesh.visibility}set visibility(e){var t;((t=this._sourceMesh)==null?void 0:t.visibility)!==e&&pe.Warn("Setting visibility on an instanced mesh has no effect")}get skeleton(){return this._sourceMesh.skeleton}set skeleton(e){var t;((t=this._sourceMesh)==null?void 0:t.skeleton)!==e&&pe.Warn("Setting skeleton on an instanced mesh has no effect")}get renderingGroupId(){return this._sourceMesh.renderingGroupId}set renderingGroupId(e){!this._sourceMesh||e===this._sourceMesh.renderingGroupId||ee.Warn("Note - setting renderingGroupId of an instanced mesh has no effect on the scene")}getTotalVertices(){return this._sourceMesh?this._sourceMesh.getTotalVertices():0}getTotalIndices(){return this._sourceMesh.getTotalIndices()}get sourceMesh(){return this._sourceMesh}get geometry(){return this._sourceMesh._geometry}createInstance(e){return this._sourceMesh.createInstance(e)}isReady(e=!1){return this._sourceMesh.isReady(e,!0)}getVerticesData(e,t,i){return this._sourceMesh.getVerticesData(e,t,i)}copyVerticesData(e,t){this._sourceMesh.copyVerticesData(e,t)}getVertexBuffer(e,t){return this._sourceMesh.getVertexBuffer(e,t)}setVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.setVerticesData(e,t,i,r),this.sourceMesh}updateVerticesData(e,t,i,r){return this.sourceMesh&&this.sourceMesh.updateVerticesData(e,t,i,r),this.sourceMesh}setIndices(e,t=null){return this.sourceMesh&&this.sourceMesh.setIndices(e,t),this.sourceMesh}isVerticesDataPresent(e){return this._sourceMesh.isVerticesDataPresent(e)}getIndices(){return this._sourceMesh.getIndices()}get _positions(){return this._sourceMesh._positions}refreshBoundingInfo(e=!1,t=!1){if(this.hasBoundingInfo&&this.getBoundingInfo().isLocked)return this;let i;typeof e=="object"?i=e:i={applySkeleton:e,applyMorph:t};let r=this._sourceMesh.geometry?this._sourceMesh.geometry.boundingBias:null;return this._refreshBoundingInfo(this._sourceMesh._getData(i,null,L.PositionKind),r),this}_preActivate(){return this._currentLOD&&this._currentLOD._preActivate(),this}_activate(e,t){if(super._activate(e,t),this._sourceMesh.subMeshes||ee.Warn("Instances should only be created for meshes with geometry."),this._currentLOD){if(this._currentLOD._getWorldMatrixDeterminant()>=0!=this._getWorldMatrixDeterminant()>=0)return this._internalAbstractMeshDataInfo._actAsRegularMesh=!0,!0;if(this._internalAbstractMeshDataInfo._actAsRegularMesh=!1,this._currentLOD._registerInstanceForRenderId(this,e),t){if(!this._currentLOD._internalAbstractMeshDataInfo._isActiveIntermediate)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstancesIntermediate=!0,!0}else if(!this._currentLOD._internalAbstractMeshDataInfo._isActive)return this._currentLOD._internalAbstractMeshDataInfo._onlyForInstances=!0,!0}return!1}_postActivate(){this._sourceMesh.edgesShareWithInstances&&this._sourceMesh._edgesRenderer&&this._sourceMesh._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup?(this._sourceMesh._renderingGroup._edgesRenderers.pushNoDuplicate(this._sourceMesh._edgesRenderer),this._sourceMesh._edgesRenderer.customInstances.push(this.getWorldMatrix())):this._edgesRenderer&&this._edgesRenderer.isEnabled&&this._sourceMesh._renderingGroup&&this._sourceMesh._renderingGroup._edgesRenderers.push(this._edgesRenderer)}getWorldMatrix(){if(this._currentLOD&&this._currentLOD!==this._sourceMesh&&this._currentLOD.billboardMode!==Zt.BILLBOARDMODE_NONE&&this._currentLOD._masterMesh!==this){this._billboardWorldMatrix||(this._billboardWorldMatrix=new Z);let e=this._currentLOD._masterMesh;return this._currentLOD._masterMesh=this,$.Vector3[7].copyFrom(this._currentLOD.position),this._currentLOD.position.set(0,0,0),this._billboardWorldMatrix.copyFrom(this._currentLOD.computeWorldMatrix(!0)),this._currentLOD.position.copyFrom($.Vector3[7]),this._currentLOD._masterMesh=e,this._billboardWorldMatrix}return super.getWorldMatrix()}get isAnInstance(){return!0}getLOD(e){if(!e)return this;let t=this.sourceMesh.getLODLevels();if(!t||t.length===0)this._currentLOD=this.sourceMesh;else{let i=this.getBoundingInfo();this._currentLOD=this.sourceMesh.getLOD(e,i.boundingSphere)}return this._currentLOD}_preActivateForIntermediateRendering(e){return this.sourceMesh._preActivateForIntermediateRendering(e)}_syncSubMeshes(){if(this.releaseSubMeshes(),this._sourceMesh.subMeshes)for(let e=0;e{ns=class{constructor(){this._defines={},this._currentRank=32,this._maxRank=-1,this._mesh=null}unBindMesh(){this._mesh=null}addFallback(e,t){this._defines[e]||(ethis._maxRank&&(this._maxRank=e),this._defines[e]=new Array),this._defines[e].push(t)}addCPUSkinningFallback(e,t){this._mesh=t,ethis._maxRank&&(this._maxRank=e)}get hasMoreFallbacks(){return this._currentRank<=this._maxRank}reduce(e,t){if(this._mesh&&this._mesh.computeBonesUsingShaders&&this._mesh.numBoneInfluencers>0){this._mesh.computeBonesUsingShaders=!1,e=e.replace("#define NUM_BONE_INFLUENCERS "+this._mesh.numBoneInfluencers,"#define NUM_BONE_INFLUENCERS 0"),t._bonesComputationForcedToCPU=!0;let i=this._mesh.getScene();for(let r=0;r0&&(s.computeBonesUsingShaders=!1);continue}if(!(!s.computeBonesUsingShaders||s.numBoneInfluencers===0)){if(s.material.getEffect()===t)s.computeBonesUsingShaders=!1;else if(s.subMeshes){for(let a of s.subMeshes)if(a.effect===t){s.computeBonesUsingShaders=!1;break}}}}}else{let i=this._defines[this._currentRank];if(i)for(let r=0;r{ke();ts();Pl=class extends Se{constructor(e,t,i=!0,r=!1){super(e,t,void 0,r),this._normalMatrix=new Z,this._storeEffectOnSubMeshes=i}getEffect(){return this._storeEffectOnSubMeshes?this._activeEffect:super.getEffect()}isReady(e,t){return e?!this._storeEffectOnSubMeshes||!e.subMeshes||e.subMeshes.length===0?!0:this.isReadyForSubMesh(e,e.subMeshes[0],t):!1}_isReadyForSubMesh(e){let t=e.materialDefines;return!!(!this.checkReadyOnEveryCall&&e.effect&&t&&t._renderId===this.getScene().getRenderId())}bindOnlyWorldMatrix(e){this._activeEffect.setMatrix("world",e)}bindOnlyNormalMatrix(e){this._activeEffect.setMatrix("normalMatrix",e)}bind(e,t){t&&this.bindForSubMesh(e,t,t.subMeshes[0])}_afterBind(e,t=null,i){super._afterBind(e,t,i),this.getScene()._cachedEffect=t,i?i._drawWrapper._forceRebindOnNextCall=!1:this._drawWrapper._forceRebindOnNextCall=!1}_mustRebind(e,t,i,r=1){return i._drawWrapper._forceRebindOnNextCall||e.isCachedMaterialInvalid(this,t,r)}dispose(e,t,i){this._activeEffect=void 0,super.dispose(e,t,i)}}});function $f(n){let e=n.getVertexBuffers();if(!e)return null;let t=iz.get(n);if(!t)t=new Map,iz.set(n,t);else{let i=!1;for(let r in e)if(!t.has(r)){i=!0;break}if(!i)return t}for(let i in e){let r=e[i];if(r){let s=r.byteOffset,a=r.byteStride,o=r.type,l=r.normalized;t.set(i,{offset:s,stride:a,type:o,normalized:l})}}return t}function Jf(n,e){e.forEach((t,i)=>{let r=`vp_${i}_info`;n.setFloat4(r,t.offset,t.stride,t.type,t.normalized?1:0)})}var iz,mv=I(()=>{iz=new WeakMap});var uL,Uo,mL=I(()=>{Dr();Ys();ke();Zi();Xr();$i();Qf();_h();uv();Gi();Ml();es();mv();uL={effect:null,subMesh:null},Uo=class n extends Pl{constructor(e,t,i,r={},s=!0){super(e,t,s),this._textures={},this._internalTextures={},this._textureArrays={},this._externalTextures={},this._floats={},this._ints={},this._uints={},this._floatsArrays={},this._colors3={},this._colors3Arrays={},this._colors4={},this._colors4Arrays={},this._vectors2={},this._vectors3={},this._vectors4={},this._quaternions={},this._quaternionsArrays={},this._matrices={},this._matrixArrays={},this._matrices3x3={},this._matrices2x2={},this._vectors2Arrays={},this._vectors3Arrays={},this._vectors4Arrays={},this._uniformBuffers={},this._textureSamplers={},this._storageBuffers={},this._cachedWorldViewMatrix=new Z,this._cachedWorldViewProjectionMatrix=new Z,this._multiview=!1,this._vertexPullingMetadata=null,this._materialHelperNeedsPreviousMatrices=!1,this._shaderPath=i,this._options={needAlphaBlending:!1,needAlphaTesting:!1,attributes:["position","normal","uv"],uniforms:["worldViewProjection"],uniformBuffers:[],samplers:[],externalTextures:[],samplerObjects:[],storageBuffers:[],defines:[],useClipPlane:!1,...r}}get shaderPath(){return this._shaderPath}set shaderPath(e){this._shaderPath=e}get options(){return this._options}get isMultiview(){return this._multiview}getClassName(){return"ShaderMaterial"}needAlphaBlending(){return this.alpha<1||this._options.needAlphaBlending}needAlphaTesting(){return this._options.needAlphaTesting}_checkUniform(e){this._options.uniforms.indexOf(e)===-1&&this._options.uniforms.push(e)}setTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._textures[e]=t,this}setInternalTexture(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._internalTextures[e]=t,this}removeTexture(e){delete this._textures[e]}setTextureArray(e,t){return this._options.samplers.indexOf(e)===-1&&this._options.samplers.push(e),this._checkUniform(e),this._textureArrays[e]=t,this}setExternalTexture(e,t){return this._options.externalTextures.indexOf(e)===-1&&this._options.externalTextures.push(e),this._externalTextures[e]=t,this}setFloat(e,t){return this._checkUniform(e),this._floats[e]=t,this}setInt(e,t){return this._checkUniform(e),this._ints[e]=t,this}setUInt(e,t){return this._checkUniform(e),this._uints[e]=t,this}setFloats(e,t){return this._checkUniform(e),this._floatsArrays[e]=t,this}setColor3(e,t){return this._checkUniform(e),this._colors3[e]=t,this}setColor3Array(e,t){return this._checkUniform(e),this._colors3Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b),i),[]),this}setColor4(e,t){return this._checkUniform(e),this._colors4[e]=t,this}setColor4Array(e,t){return this._checkUniform(e),this._colors4Arrays[e]=t.reduce((i,r)=>(i.push(r.r,r.g,r.b,r.a),i),[]),this}setVector2(e,t){return this._checkUniform(e),this._vectors2[e]=t,this}setVector3(e,t){return this._checkUniform(e),this._vectors3[e]=t,this}setVector4(e,t){return this._checkUniform(e),this._vectors4[e]=t,this}setQuaternion(e,t){return this._checkUniform(e),this._quaternions[e]=t,this}setQuaternionArray(e,t){return this._checkUniform(e),this._quaternionsArrays[e]=t.reduce((i,r)=>(r.toArray(i,i.length),i),[]),this}setMatrix(e,t){return this._checkUniform(e),this._matrices[e]=t,this}setMatrices(e,t){this._checkUniform(e);let i=new Float32Array(t.length*16);for(let r=0;rs===e||s.startsWith(i));return r>=0&&this.options.defines.splice(r,1),(typeof t!="boolean"||t)&&this.options.defines.push(i+t),this}isReadyForSubMesh(e,t,i){return this.isReady(e,i,t)}isReady(e,t,i){var A,R,M,y;let r=i&&this._storeEffectOnSubMeshes;if(this.isFrozen){let C=r?i._drawWrapper:this._drawWrapper;if(C.effect&&C._wasPreviouslyReady&&C._wasPreviouslyUsingInstances===t)return!0}let s=this.getScene(),a=s.getEngine(),o=[],l=[],c=null,f=this._shaderPath,d=this._options.uniforms,h=this._options.uniformBuffers,u=this._options.samplers;a.getCaps().multiview&&s.activeCamera&&s.activeCamera.outputRenderTarget&&s.activeCamera.outputRenderTarget.getViewCount()>1&&(this._multiview=!0,o.push("#define MULTIVIEW"),d.indexOf("viewProjection")!==-1&&d.indexOf("viewProjectionR")===-1&&d.push("viewProjectionR"));for(let C=0;C4&&(l.push(L.MatricesIndicesExtraKind),l.push(L.MatricesWeightsExtraKind));let C=e.skeleton;o.push("#define NUM_BONE_INFLUENCERS "+e.numBoneInfluencers),c=new ns,c.addCPUSkinningFallback(0,e),C.isUsingTextureForMatrices?(o.push("#define BONETEXTURE"),d.indexOf("boneTextureInfo")===-1&&d.push("boneTextureInfo"),this._options.samplers.indexOf("boneSampler")===-1&&this._options.samplers.push("boneSampler")):(o.push("#define BonesPerMesh "+(C.bones.length+1)),d.indexOf("mBones")===-1&&d.push("mBones"))}else o.push("#define NUM_BONE_INFLUENCERS 0");let m=0,_=e?e.morphTargetManager:null;if(_){let C=o.indexOf("#define UV1")!==-1,D=o.indexOf("#define UV2")!==-1,w=o.indexOf("#define TANGENT")!==-1,G=o.indexOf("#define NORMAL")!==-1,O=o.indexOf("#define VERTEXCOLOR")!==-1;m=Il(_,o,l,e,!0,G,w,C,D,O),_.isUsingTextureForTargets&&(d.indexOf("morphTargetTextureIndices")===-1&&d.push("morphTargetTextureIndices"),this._options.samplers.indexOf("morphTargets")===-1&&this._options.samplers.push("morphTargets")),m>0&&(d=d.slice(),d.push("morphTargetInfluences"),d.push("morphTargetCount"),d.push("morphTargetTextureInfo"),d.push("morphTargetTextureIndices"))}else o.push("#define NUM_MORPH_INFLUENCERS 0");if(e){let C=e.bakedVertexAnimationManager;C&&C.isEnabled&&(o.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),d.indexOf("bakedVertexAnimationSettings")===-1&&d.push("bakedVertexAnimationSettings"),d.indexOf("bakedVertexAnimationTextureSizeInverted")===-1&&d.push("bakedVertexAnimationTextureSizeInverted"),d.indexOf("bakedVertexAnimationTime")===-1&&d.push("bakedVertexAnimationTime"),this._options.samplers.indexOf("bakedVertexAnimationTexture")===-1&&this._options.samplers.push("bakedVertexAnimationTexture"),t&&l.push("bakedVertexAnimationSettingsInstanced"))}for(let C in this._textures)if(!this._textures[C].isReady())return!1;for(let C in this._internalTextures)if(!this._internalTextures[C].isReady)return!1;e&&this.needAlphaTestingForMesh(e)&&o.push("#define ALPHATEST"),this._options.useClipPlane!==!1&&(Qn(d),bl(this,s,o)),s.fogEnabled&&(e!=null&&e.applyFog)&&s.fogMode!==ti.FOGMODE_NONE&&(o.push("#define FOG"),d.indexOf("view")===-1&&d.push("view"),d.indexOf("vFogInfos")===-1&&d.push("vFogInfos"),d.indexOf("vFogColor")===-1&&d.push("vFogColor")),this._useLogarithmicDepth&&(o.push("#define LOGARITHMICDEPTH"),d.indexOf("logarithmicDepthConstant")===-1&&d.push("logarithmicDepthConstant"));let p=i?i.getRenderingMesh():e;if(p&&this.useVertexPulling){let C=p.geometry;C&&(this._vertexPullingMetadata=$f(C),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((w,G)=>{d.push(`vp_${G}_info`)})),o.push("#define USE_VERTEX_PULLING");let D=(A=p.geometry)==null?void 0:A.getIndexBuffer();D&&!p.isUnIndexed&&(o.push("#define VERTEX_PULLING_USE_INDEX_BUFFER"),D.is32Bits&&o.push("#define VERTEX_PULLING_INDEX_BUFFER_32BITS"))}this.customShaderNameResolve&&(d=d.slice(),h=h.slice(),u=u.slice(),f=this.customShaderNameResolve(this.name,d,h,u,o,l));let g=r?i._getDrawWrapper(void 0,!0):this._drawWrapper,v=(R=g==null?void 0:g.effect)!=null?R:null,T=(M=g==null?void 0:g.defines)!=null?M:null,S=o.join(` `),E=v;return T!==S&&(E=a.createEffect(f,{attributes:l,uniformsNames:d,uniformBuffersNames:h,samplers:u,defines:S,fallbacks:c,onCompiled:this.onCompiled,onError:this.onError,indexParameters:{maxSimultaneousMorphTargets:m},shaderLanguage:this._options.shaderLanguage,extraInitializationsAsync:this._options.extraInitializationsAsync},a),r?i.setEffect(E,S,this._materialContext):g&&g.setEffect(E,S),this._onEffectCreatedObservable&&(uL.effect=E,uL.subMesh=(y=i!=null?i:e==null?void 0:e.subMeshes[0])!=null?y:null,this._onEffectCreatedObservable.notifyObservers(uL))),g._wasPreviouslyUsingInstances=!!t,E!=null&&E.isReady()?(v!==E&&s.resetCachedMaterial(),g._wasPreviouslyReady=!0,!0):!1}bindOnlyWorldMatrix(e,t){let i=t!=null?t:this.getEffect();if(!i)return;let r=this._options.uniforms;r.indexOf("world")!==-1&&i.setMatrix("world",e);let s=this.getScene();r.indexOf("worldView")!==-1&&(e.multiplyToRef(s.getViewMatrix(),this._cachedWorldViewMatrix),i.setMatrix("worldView",this._cachedWorldViewMatrix)),r.indexOf("worldViewProjection")!==-1&&(e.multiplyToRef(s.getTransformMatrix(),this._cachedWorldViewProjectionMatrix),i.setMatrix("worldViewProjection",this._cachedWorldViewProjectionMatrix)),r.indexOf("view")!==-1&&i.setMatrix("view",s.getViewMatrix())}bindForSubMesh(e,t,i){var r;this.bind(e,t,(r=i._drawWrapperOverride)==null?void 0:r.effect,i)}bind(e,t,i,r){var d;let s=r&&this._storeEffectOnSubMeshes,a=i!=null?i:s?r.effect:this.getEffect();if(!a)return;let o=this.getScene();this._activeEffect=a,this.bindOnlyWorldMatrix(e,i);let l=this._options.uniformBuffers,c=!1;if(a&&l&&l.length>0&&o.getEngine().supportsUniformBuffers)for(let h=0;hnew n(e,this.getScene(),this._shaderPath,this._options,this._storeEffectOnSubMeshes),this);t.name=e,t.id=e,typeof t._shaderPath=="object"&&(t._shaderPath={...t._shaderPath}),this._options={...this._options};let i=Object.keys(this._options);for(let r of i){let s=this._options[r];Array.isArray(s)&&(this._options[r]=s.slice(0))}this.stencil.copyTo(t.stencil);for(let r in this._textures)t.setTexture(r,this._textures[r]);for(let r in this._internalTextures)t.setInternalTexture(r,this._internalTextures[r]);for(let r in this._textureArrays)t.setTextureArray(r,this._textureArrays[r]);for(let r in this._externalTextures)t.setExternalTexture(r,this._externalTextures[r]);for(let r in this._ints)t.setInt(r,this._ints[r]);for(let r in this._uints)t.setUInt(r,this._uints[r]);for(let r in this._floats)t.setFloat(r,this._floats[r]);for(let r in this._floatsArrays)t.setFloats(r,this._floatsArrays[r]);for(let r in this._colors3)t.setColor3(r,this._colors3[r]);for(let r in this._colors3Arrays)t._colors3Arrays[r]=this._colors3Arrays[r];for(let r in this._colors4)t.setColor4(r,this._colors4[r]);for(let r in this._colors4Arrays)t._colors4Arrays[r]=this._colors4Arrays[r];for(let r in this._vectors2)t.setVector2(r,this._vectors2[r]);for(let r in this._vectors3)t.setVector3(r,this._vectors3[r]);for(let r in this._vectors4)t.setVector4(r,this._vectors4[r]);for(let r in this._quaternions)t.setQuaternion(r,this._quaternions[r]);for(let r in this._quaternionsArrays)t._quaternionsArrays[r]=this._quaternionsArrays[r];for(let r in this._matrices)t.setMatrix(r,this._matrices[r]);for(let r in this._matrixArrays)t._matrixArrays[r]=this._matrixArrays[r].slice();for(let r in this._matrices3x3)t.setMatrix3x3(r,this._matrices3x3[r]);for(let r in this._matrices2x2)t.setMatrix2x2(r,this._matrices2x2[r]);for(let r in this._vectors2Arrays)t.setArray2(r,this._vectors2Arrays[r]);for(let r in this._vectors3Arrays)t.setArray3(r,this._vectors3Arrays[r]);for(let r in this._vectors4Arrays)t.setArray4(r,this._vectors4Arrays[r]);for(let r in this._uniformBuffers)t.setUniformBuffer(r,this._uniformBuffers[r]);for(let r in this._textureSamplers)t.setTextureSampler(r,this._textureSamplers[r]);for(let r in this._storageBuffers)t.setStorageBuffer(r,this._storageBuffers[r]);return t}dispose(e,t,i){if(t){let r;for(r in this._textures)this._textures[r].dispose();for(r in this._internalTextures)this._internalTextures[r].dispose();for(r in this._textureArrays){let s=this._textureArrays[r];for(let a=0;anew n(e.name,t,e.shaderPath,e.options,e.storeEffectOnSubMeshes),e,t,i),s;e.stencil&&r.stencil.parse(e.stencil,t,i);for(s in e.textures)r.setTexture(s,_e.Parse(e.textures[s],t,i));for(s in e.textureArrays){let a=e.textureArrays[s],o=[];for(let l=0;l(c%3===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2]}));r.setColor3Array(s,a)}for(s in e.colors4){let a=e.colors4[s];r.setColor4(s,{r:a[0],g:a[1],b:a[2],a:a[3]})}for(s in e.colors4Arrays){let a=e.colors4Arrays[s].reduce((o,l,c)=>(c%4===0?o.push([l]):o[o.length-1].push(l),o),[]).map(o=>({r:o[0],g:o[1],b:o[2],a:o[3]}));r.setColor4Array(s,a)}for(s in e.vectors2){let a=e.vectors2[s];r.setVector2(s,{x:a[0],y:a[1]})}for(s in e.vectors3){let a=e.vectors3[s];r.setVector3(s,{x:a[0],y:a[1],z:a[2]})}for(s in e.vectors4){let a=e.vectors4[s];r.setVector4(s,{x:a[0],y:a[1],z:a[2],w:a[3]})}for(s in e.quaternions)r.setQuaternion(s,Ke.FromArray(e.quaternions[s]));for(s in e.matrices)r.setMatrix(s,Z.FromArray(e.matrices[s]));for(s in e.matrixArray)r._matrixArrays[s]=new Float32Array(e.matrixArray[s]);for(s in e.matrices3x3)r.setMatrix3x3(s,e.matrices3x3[s]);for(s in e.matrices2x2)r.setMatrix2x2(s,e.matrices2x2[s]);for(s in e.vectors2Arrays)r.setArray2(s,e.vectors2Arrays[s]);for(s in e.vectors3Arrays)r.setArray3(s,e.vectors3Arrays[s]);for(s in e.vectors4Arrays)r.setArray4(s,e.vectors4Arrays[s]);for(s in e.quaternionsArrays)r.setArray4(s,e.quaternionsArrays[s]);return r}static async ParseFromFileAsync(e,t,i,r=""){return await new Promise((s,a)=>{let o=new wr;o.addEventListener("readystatechange",()=>{if(o.readyState==4)if(o.status==200){let l=JSON.parse(o.responseText),c=this.Parse(l,i||Oe.LastCreatedScene,r);e&&(c.name=e),s(c)}else a("Unable to load the ShaderMaterial")}),o.open("GET",t),o.send()})}static async ParseFromSnippetAsync(e,t,i=""){return await new Promise((r,s)=>{let a=new wr;a.addEventListener("readystatechange",()=>{if(a.readyState==4)if(a.status==200){let o=JSON.parse(JSON.parse(a.responseText).jsonPayload),l=JSON.parse(o.shaderMaterial),c=this.Parse(l,t||Oe.LastCreatedScene,i);c.snippetId=e,r(c)}else s("Unable to load the snippet "+e)}),a.open("GET",this.SnippetUrl+"/"+e.replace(/#/g,"/")),a.send()})}};Uo.SnippetUrl="https://snippet.babylonjs.com";Uo.CreateFromSnippetAsync=Uo.ParseFromSnippetAsync;Ut("BABYLON.ShaderMaterial",Uo)});var rz,Jfe,Ac=I(()=>{k();rz="bonesDeclaration",Jfe=`#if NUM_BONE_INFLUENCERS>0 #ifndef USE_VERTEX_PULLING attribute matricesIndices : vec4f;attribute matricesWeights : vec4f; @@ -5130,10 +5130,10 @@ gl_FragColor=color; #endif #include(color,gl_FragColor) #define CUSTOM_FRAGMENT_MAIN_END -}`;x.ShadersStore[vL]||(x.ShadersStore[vL]=Wz);Lde={name:vL,shader:Wz}});var Dh,EL,Xz=I(()=>{zt();Zi();Fi();hL();ts();mL();q._LinesMeshParser=(n,e)=>Dh.Parse(n,e);Dh=class n extends q{_isShaderMaterial(e){return e?e.getClassName()==="ShaderMaterial":!1}constructor(e,t=null,i=null,r=null,s,a,o,l){super(e,t,i,r,s),this.useVertexColor=a,this.useVertexAlpha=o,this.color=new Ee(1,1,1),this.alpha=1,this._shaderLanguage=0,this._ownsMaterial=!1,r&&(this.color=r.color.clone(),this.alpha=r.alpha,this.useVertexColor=r.useVertexColor,this.useVertexAlpha=r.useVertexAlpha),this.intersectionThreshold=.1;let c=[],f={attributes:[L.PositionKind],uniforms:["world","viewProjection"],needAlphaBlending:!0,defines:c,useClipPlane:null,shaderLanguage:0};if(this.useVertexAlpha?f.defines.push("#define VERTEXALPHA"):f.needAlphaBlending=!1,this.useVertexColor?(f.defines.push("#define VERTEXCOLOR"),f.attributes.push(L.ColorKind)):(f.uniforms.push("color"),this._color4=new ft),l)this.material=l;else{this.getScene().getEngine().isWebGPU&&!n.ForceGLSL&&(this._shaderLanguage=1),f.shaderLanguage=this._shaderLanguage,f.extraInitializationsAsync=async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(_z(),pz)),Promise.resolve().then(()=>(xz(),Az))]):await Promise.all([Promise.resolve().then(()=>(Bz(),Fz)),Promise.resolve().then(()=>(zz(),Hz))])};let h=new Uo("colorShader",this.getScene(),"color",f,!1);h.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(h)}}getClassName(){return"LinesMesh"}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){let t=this.material;if(t===e)return;let i=t&&this._ownsMaterial;this._ownsMaterial=!1,this._setInternalMaterial(e),i&&(t==null||t.dispose())}_setInternalMaterial(e){this._setMaterial(e),this.material&&(this.material.fillMode=Se.LineListDrawMode,this.material.disableLighting=!0)}get checkCollisions(){return!1}set checkCollisions(e){}_bind(e,t){if(!this._geometry)return this;let i=this.isUnIndexed?null:this._geometry.getIndexBuffer();if(!this._userInstancedBuffersStorage||this.hasThinInstances?this._geometry._bind(t,i):this._geometry._bind(t,i,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects),!this.useVertexColor&&this._isShaderMaterial(this.material)){let{r,g:s,b:a}=this.color;this._color4.set(r,s,a,this.alpha),this.material.setColor4("color",this._color4)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let r=this.getScene().getEngine();return this._unIndexed?r.drawArraysType(Se.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Se.LineListDrawMode,e.indexStart,e.indexCount,i),this}dispose(e,t=!1,i){var r,s;i||(this._ownsMaterial?(r=this.material)==null||r.dispose(!1,!1,!0):t&&((s=this.material)==null||s.dispose(!1,!1,!0))),super.dispose(e)}clone(e,t=null,i){if(t&&t._addToSceneRootNodes===void 0){let r=t;return r.source=this,new n(e,this.getScene(),r.parent,r.source,r.doNotCloneChildren)}return new n(e,this.getScene(),t,this,i)}createInstance(e){let t=new EL(e,this);if(this.instancedBuffers){t.instancedBuffers={};for(let i in this.instancedBuffers)t.instancedBuffers[i]=this.instancedBuffers[i]}return t}serialize(e){super.serialize(e),e.color=this.color.asArray(),e.alpha=this.alpha}static Parse(e,t){let i=new n(e.name,t);return i.color=Ee.FromArray(e.color),i.alpha=e.alpha,i}};Dh.ForceGLSL=!1;EL=class extends Tc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function Yz(n){let e=[],t=[],i=n.lines,r=n.colors,s=[],a=0;for(let l=0;l0&&(e.push(a-1),e.push(a)),a++}}let o=new Me;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function Kz(n){let e=n.dashSize||3,t=n.gapSize||1,i=n.dashNb||200,r=n.points,s=[],a=[],o=b.Zero(),l=0,c,f,d=0,h;for(h=0;h{let d=b.Zero(),h=f.length/6,u=0,m,_,p=0,g,v;for(g=0;g{ke();Fi();Tr();Xz();Zi();Lt();Me.CreateLineSystem=Yz;Me.CreateDashedLines=Kz;q.CreateLines=(n,e,t=null,i=!1,r=null)=>TL(n,{points:e,updatable:i,instance:r},t);q.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>AL(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var xL,bv,vR,Zz=I(()=>{Lt();ke();Zi();Fi();Tr();ph();Kn();Gi();xL=class extends we{constructor(e,t){super(e.x,e.y),this.index=t}},bv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new xL(i,this.elements.length);t.push(r),this.elements.push(r)}return t}computeBounds(){let e=new we(this.elements[0].x,this.elements[0].y),t=new we(this.elements[0].x,this.elements[0].y);for(let i of this.elements)i.xt.x&&(t.x=i.x),i.yt.y&&(t.y=i.y);return{min:e,max:t,width:t.x-e.x,height:t.y-e.y}}},vR=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new bv,this._outlinepoints=new bv,this._holes=new Array,this._epoints=new Array,this._eholes=new Array,this.bjsEarcut=r,this._name=e,this._scene=i||Oe.LastCreatedScene;let s;t instanceof Om?s=t.getPoints():s=t,this._addToepoint(s),this._points.add(s),this._outlinepoints.add(s),typeof this.bjsEarcut=="undefined"&&ee.Warn("Earcut was not found, the polygon will not be built.")}addHole(e){this._points.add(e);let t=new bv;return t.add(e),this._holes.push(t),this._eholes.push(this._epoints.length/2),this._addToepoint(e),this}build(e=!1,t=0,i=2){let r=new q(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(L.PositionKind,s.positions,e),r.setVerticesData(L.NormalKind,s.normals,e),r.setVerticesData(L.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new Me,r=[],s=[],a=[],o=this._points.computeBounds();for(let f of this._points.elements)r.push(0,1,0),s.push(f.x,0,f.y),a.push((f.x-o.min.x)/o.width,(f.y-o.min.y)/o.height);let l=[],c=this.bjsEarcut(this._epoints,this._eholes,2);for(let f=0;f0){let f=s.length/3;for(let h of this._points.elements)r.push(0,-1,0),s.push(h.x,-e,h.y),a.push(1-(h.x-o.min.x)/o.width,1-(h.y-o.min.y)/o.height);let d=l.length;for(let h=0;hc?Rc?M{ke();zt();Fi();Tr();Zz();Zi();Gi();fn();Me.CreatePolygon=qz;q.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>ER(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);q.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>Mv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function bL(n,e,t=null){let i=e.path,r=e.shape,s=e.scale||1,a=e.rotation||0,o=e.cap===0?0:e.cap||q.NO_CAP,l=e.updatable,c=q._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,h=e.closeShape||!1,u=e.closePath||!1,m=e.capFunction||null;return Qz(n,r,i,s,a,null,null,u,h,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function ML(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(T,S)=>{var A,R;let E=(R=(A=e.scaleFunction)==null?void 0:A.call(e,T,S))!=null?R:1;return s.copyFromFloats(E,E,E)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||q.NO_CAP,d=e.updatable,h=e.firstNormal||null,u=e.adjustFrame||!1,m=q._GetDefaultSideOrientation(e.sideOrientation),_=e.instance,p=e.invertUV||!1,g=e.capFunction||null;return Qz(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,_||null,p,e.frontUVs||null,e.backUVs||null,h,u,g||null)}function Qz(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S){let E=(D,w,G,O,N,B,V,Q,K,J,z)=>{let Y=G.getTangents(),de=G.getNormals(),ge=G.getBinormals(),Ue=G.getDistances();if(z){for(let Ye=0;Ye0){let je=Y[Ye-1];b.Dot(je,Y[Ye])<0&&Y[Ye].scaleInPlace(-1),je=de[Ye-1],b.Dot(je,de[Ye])<0&&de[Ye].scaleInPlace(-1),je=ge[Ye-1],b.Dot(je,ge[Ye])<0&&ge[Ye].scaleInPlace(-1)}}let oe=0,ve=()=>N!==null?N:b.OneReadOnly,ue=J&&Q?Q:()=>B!==null?B:0,Pe=J&&V?V:ve,me=K===q.NO_CAP||K===q.CAP_END?0:2,be=$.Matrix[0];for(let Ye=0;Ye{let je=Array(),Qt=b.Zero(),Pt;for(Pt=0;Pt3?0:c,R=E(e,t,M,y,A,r,s,a,c,f,T);let C=Bo(n,{pathArray:R,closeArray:o,closePath:l,updatable:h,sideOrientation:u,invertUV:_,frontUVs:p||void 0,backUVs:g||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var $z=I(()=>{ke();Fi();hv();ph();q.ExtrudeShape=(n,e,t,i,r,s,a=null,o,l,c)=>{let f={shape:e,path:t,scale:i,rotation:r,cap:s===0?0:s||q.NO_CAP,sideOrientation:l,instance:c,updatable:o};return bL(n,f,a)};q.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let h={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||q.NO_CAP,sideOrientation:f,instance:d,updatable:c};return ML(n,h,l)}});function IL(n,e,t=null){let i=e.arc?e.arc<=0||e.arc>1?1:e.arc:1,r=e.closed===void 0?!0:e.closed,s=e.shape,a=e.radius||1,o=e.tessellation||64,l=e.clip||0,c=e.updatable,f=q._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||q.NO_CAP,h=Math.PI*2,u=[],m=e.invertUV||!1,_,p,g=h/o*i,v,T;for(_=0;_<=o-l;_++){for(T=[],(d==q.CAP_START||d==q.CAP_ALL)&&(T.push(new b(0,s[0].y,0)),T.push(new b(Math.cos(_*g)*s[0].x*a,s[0].y,Math.sin(_*g)*s[0].x*a))),p=0;p{ke();Fi();hv();q.CreateLathe=(n,e,t,i,r,s,a)=>IL(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function e4(n){let e=[],t=[],i=[],r=[],s=n.width!==void 0?n.width:n.size!==void 0?n.size:1,a=n.height!==void 0?n.height:n.size!==void 0?n.size:1,o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=s/2,c=a/2;t.push(-l,-c,0),i.push(0,0,-1),r.push(0,yt?1:0),t.push(l,-c,0),i.push(0,0,-1),r.push(1,yt?1:0),t.push(l,c,0),i.push(0,0,-1),r.push(1,yt?0:1),t.push(-l,c,0),i.push(0,0,-1),r.push(0,yt?0:1),e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),Me._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function yL(n,e={},t=null){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,e4(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var t4=I(()=>{Fi();Tr();fn();Me.CreatePlane=e4;q.CreatePlane=(n,e,t,i,r)=>yL(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function CL(n,e,t=null){let i=e.path,r=e.instance,s=1;e.radius!==void 0?s=e.radius:r&&(s=r._creationDataStorage.radius);let a=e.tessellation||64,o=e.radiusFunction||null,l=e.cap||q.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=q._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let h=(g,v,T,S,E,A,R,M)=>{let y=v.getTangents(),C=v.getNormals(),D=v.getDistances(),G=Math.PI*2/E*M,N=A||(()=>S),B,V,Q,K,J=$.Matrix[0],z=R===q.NO_CAP||R===q.CAP_END?0:2;for(let de=0;de{let Ue=Array();for(let oe=0;oe3?0:l,m=h(i,u,_,s,a,o,l,e.arc);let p=Bo(n,{pathArray:m,closePath:!0,closeArray:!1,updatable:f,sideOrientation:d,invertUV:c,frontUVs:e.frontUVs,backUVs:e.backUVs},t);return p._creationDataStorage.pathArray=m,p._creationDataStorage.path3D=u,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var i4=I(()=>{ke();Fi();hv();ph();q.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>CL(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function r4(n){let e=[];e[0]={vertex:[[0,0,1.732051],[1.632993,0,-.5773503],[-.8164966,1.414214,-.5773503],[-.8164966,-1.414214,-.5773503]],face:[[0,1,2],[0,2,3],[0,3,1],[1,3,2]]},e[1]={vertex:[[0,0,1.414214],[1.414214,0,0],[0,1.414214,0],[-1.414214,0,0],[0,-1.414214,0],[0,0,-1.414214]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,1],[1,4,5],[1,5,2],[2,5,3],[3,5,4]]},e[2]={vertex:[[0,0,1.070466],[.7136442,0,.7978784],[-.3568221,.618034,.7978784],[-.3568221,-.618034,.7978784],[.7978784,.618034,.3568221],[.7978784,-.618034,.3568221],[-.9341724,.381966,.3568221],[.1362939,1,.3568221],[.1362939,-1,.3568221],[-.9341724,-.381966,.3568221],[.9341724,.381966,-.3568221],[.9341724,-.381966,-.3568221],[-.7978784,.618034,-.3568221],[-.1362939,1,-.3568221],[-.1362939,-1,-.3568221],[-.7978784,-.618034,-.3568221],[.3568221,.618034,-.7978784],[.3568221,-.618034,-.7978784],[-.7136442,0,-.7978784],[0,0,-1.070466]],face:[[0,1,4,7,2],[0,2,6,9,3],[0,3,8,5,1],[1,5,11,10,4],[2,7,13,12,6],[3,9,15,14,8],[4,10,16,13,7],[5,8,14,17,11],[6,12,18,15,9],[10,11,17,19,16],[12,13,16,19,18],[14,15,18,19,17]]},e[3]={vertex:[[0,0,1.175571],[1.051462,0,.5257311],[.3249197,1,.5257311],[-.8506508,.618034,.5257311],[-.8506508,-.618034,.5257311],[.3249197,-1,.5257311],[.8506508,.618034,-.5257311],[.8506508,-.618034,-.5257311],[-.3249197,1,-.5257311],[-1.051462,0,-.5257311],[-.3249197,-1,-.5257311],[0,0,-1.175571]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,5],[0,5,1],[1,5,7],[1,7,6],[1,6,2],[2,6,8],[2,8,3],[3,8,9],[3,9,4],[4,9,10],[4,10,5],[5,10,7],[6,7,11],[6,11,8],[7,10,11],[8,11,9],[9,11,10]]},e[4]={vertex:[[0,0,1.070722],[.7148135,0,.7971752],[-.104682,.7071068,.7971752],[-.6841528,.2071068,.7971752],[-.104682,-.7071068,.7971752],[.6101315,.7071068,.5236279],[1.04156,.2071068,.1367736],[.6101315,-.7071068,.5236279],[-.3574067,1,.1367736],[-.7888348,-.5,.5236279],[-.9368776,.5,.1367736],[-.3574067,-1,.1367736],[.3574067,1,-.1367736],[.9368776,-.5,-.1367736],[.7888348,.5,-.5236279],[.3574067,-1,-.1367736],[-.6101315,.7071068,-.5236279],[-1.04156,-.2071068,-.1367736],[-.6101315,-.7071068,-.5236279],[.104682,.7071068,-.7971752],[.6841528,-.2071068,-.7971752],[.104682,-.7071068,-.7971752],[-.7148135,0,-.7971752],[0,0,-1.070722]],face:[[0,2,3],[1,6,5],[4,9,11],[7,15,13],[8,16,10],[12,14,19],[17,22,18],[20,21,23],[0,1,5,2],[0,3,9,4],[0,4,7,1],[1,7,13,6],[2,5,12,8],[2,8,10,3],[3,10,17,9],[4,11,15,7],[5,6,14,12],[6,13,20,14],[8,12,19,16],[9,17,18,11],[10,16,22,17],[11,18,21,15],[13,15,21,20],[14,20,23,19],[16,19,23,22],[18,22,23,21]]},e[5]={vertex:[[0,0,1.322876],[1.309307,0,.1889822],[-.9819805,.8660254,.1889822],[.1636634,-1.299038,.1889822],[.3273268,.8660254,-.9449112],[-.8183171,-.4330127,-.9449112]],face:[[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]]},e[6]={vertex:[[0,0,1.159953],[1.013464,0,.5642542],[-.3501431,.9510565,.5642542],[-.7715208,-.6571639,.5642542],[.6633206,.9510565,-.03144481],[.8682979,-.6571639,-.3996071],[-1.121664,.2938926,-.03144481],[-.2348831,-1.063314,-.3996071],[.5181548,.2938926,-.9953061],[-.5850262,-.112257,-.9953061]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,9,7],[5,7,9,8],[0,3,7,5,1],[2,4,8,9,6]]},e[7]={vertex:[[0,0,1.118034],[.8944272,0,.6708204],[-.2236068,.8660254,.6708204],[-.7826238,-.4330127,.6708204],[.6708204,.8660254,.2236068],[1.006231,-.4330127,-.2236068],[-1.006231,.4330127,.2236068],[-.6708204,-.8660254,-.2236068],[.7826238,.4330127,-.6708204],[.2236068,-.8660254,-.6708204],[-.8944272,0,-.6708204],[0,0,-1.118034]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,10,7],[5,9,11,8],[7,10,11,9],[0,3,7,9,5,1],[2,4,8,11,10,6]]},e[8]={vertex:[[-.729665,.670121,.319155],[-.655235,-.29213,-.754096],[-.093922,-.607123,.537818],[.702196,.595691,.485187],[.776626,-.36656,-.588064]],face:[[1,4,2],[0,1,2],[3,0,2],[4,3,2],[4,1,0,3]]},e[9]={vertex:[[-.868849,-.100041,.61257],[-.329458,.976099,.28078],[-.26629,-.013796,-.477654],[-.13392,-1.034115,.229829],[.738834,.707117,-.307018],[.859683,-.535264,-.338508]],face:[[3,0,2],[5,3,2],[4,5,2],[1,4,2],[0,1,2],[0,3,5,4,1]]},e[10]={vertex:[[-.610389,.243975,.531213],[-.187812,-.48795,-.664016],[-.187812,.9759,-.664016],[.187812,-.9759,.664016],[.798201,.243975,.132803]],face:[[1,3,0],[3,4,0],[3,1,4],[0,2,1],[0,4,2],[2,4,1]]},e[11]={vertex:[[-1.028778,.392027,-.048786],[-.640503,-.646161,.621837],[-.125162,-.395663,-.540059],[.004683,.888447,-.651988],[.125161,.395663,.540059],[.632925,-.791376,.433102],[1.031672,.157063,-.354165]],face:[[3,2,0],[2,1,0],[2,5,1],[0,4,3],[0,1,4],[4,1,5],[2,3,6],[3,4,6],[5,2,6],[4,5,6]]},e[12]={vertex:[[-.669867,.334933,-.529576],[-.669867,.334933,.529577],[-.4043,1.212901,0],[-.334933,-.669867,-.529576],[-.334933,-.669867,.529577],[.334933,.669867,-.529576],[.334933,.669867,.529577],[.4043,-1.212901,0],[.669867,-.334933,-.529576],[.669867,-.334933,.529577]],face:[[8,9,7],[6,5,2],[3,8,7],[5,0,2],[4,3,7],[0,1,2],[9,4,7],[1,6,2],[9,8,5,6],[8,3,0,5],[3,4,1,0],[4,9,6,1]]},e[13]={vertex:[[-.931836,.219976,-.264632],[-.636706,.318353,.692816],[-.613483,-.735083,-.264632],[-.326545,.979634,0],[-.318353,-.636706,.692816],[-.159176,.477529,-.856368],[.159176,-.477529,-.856368],[.318353,.636706,.692816],[.326545,-.979634,0],[.613482,.735082,-.264632],[.636706,-.318353,.692816],[.931835,-.219977,-.264632]],face:[[11,10,8],[7,9,3],[6,11,8],[9,5,3],[2,6,8],[5,0,3],[4,2,8],[0,1,3],[10,4,8],[1,7,3],[10,11,9,7],[11,6,5,9],[6,2,0,5],[2,4,1,0],[4,10,7,1]]},e[14]={vertex:[[-.93465,.300459,-.271185],[-.838689,-.260219,-.516017],[-.711319,.717591,.128359],[-.710334,-.156922,.080946],[-.599799,.556003,-.725148],[-.503838,-.004675,-.969981],[-.487004,.26021,.48049],[-.460089,-.750282,-.512622],[-.376468,.973135,-.325605],[-.331735,-.646985,.084342],[-.254001,.831847,.530001],[-.125239,-.494738,-.966586],[.029622,.027949,.730817],[.056536,-.982543,-.262295],[.08085,1.087391,.076037],[.125583,-.532729,.485984],[.262625,.599586,.780328],[.391387,-.726999,-.716259],[.513854,-.868287,.139347],[.597475,.85513,.326364],[.641224,.109523,.783723],[.737185,-.451155,.538891],[.848705,-.612742,-.314616],[.976075,.365067,.32976],[1.072036,-.19561,.084927]],face:[[15,18,21],[12,20,16],[6,10,2],[3,0,1],[9,7,13],[2,8,4,0],[0,4,5,1],[1,5,11,7],[7,11,17,13],[13,17,22,18],[18,22,24,21],[21,24,23,20],[20,23,19,16],[16,19,14,10],[10,14,8,2],[15,9,13,18],[12,15,21,20],[6,12,16,10],[3,6,2,0],[9,3,1,7],[9,15,12,6,3],[22,17,11,5,4,8,14,19,23,24]]};let t=n.type&&(n.type<0||n.type>=e.length)?0:n.type||0,i=n.size,r=n.sizeX||i||1,s=n.sizeY||i||1,a=n.sizeZ||i||1,o=n.custom||e[t],l=o.face.length,c=n.faceUV||new Array(l),f=n.faceColors,d=n.flat===void 0?!0:n.flat,h=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,u=[],m=[],_=[],p=[],g=[],v=0,T=0,S=[],E,A,R,M,y,C,D,w;if(d)for(A=0;A{ke();zt();Fi();Tr();fn();Me.CreatePolyhedron=r4;q.CreatePolyhedron=(n,e,t)=>Iv(n,e,t)});function n4(n){let e=n.sideOrientation||Me.DEFAULTSIDE,t=n.radius||1,i=n.flat===void 0?!0:n.flat,r=(n.subdivisions||4)|0,s=n.radiusX||t,a=n.radiusY||t,o=n.radiusZ||t,l=(1+Math.sqrt(5))/2,c=[-1,l,-0,1,l,0,-1,-l,0,1,-l,0,0,-1,-l,0,1,-l,0,-1,l,0,1,l,l,0,1,l,0,-1,-l,0,1,-l,0,-1],f=[0,11,5,0,5,1,0,1,7,0,7,10,12,22,23,1,5,20,5,11,4,23,22,13,22,18,6,7,1,8,14,21,4,14,4,2,16,13,6,15,6,19,3,8,9,4,21,5,13,17,23,6,13,22,19,6,18,9,8,1],d=[0,1,2,3,4,5,6,7,8,9,10,11,0,2,3,3,3,4,7,8,9,9,10,11],h=[5,1,3,1,6,4,0,0,5,3,4,2,2,2,4,0,2,0,1,1,6,0,6,2,0,4,3,3,4,4,3,1,4,2,4,4,0,2,1,1,2,2,3,3,1,3,2,4],u=138/1024,m=239/1024,_=60/1024,p=26/1024,g=-40/1024,v=20/1024,T=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],S=[],E=[],A=[],R=[],M=0,y=new Array(3),C=new Array(3),D;for(D=0;D<3;D++)y[D]=b.Zero(),C[D]=we.Zero();for(let G=0;G<20;G++){for(D=0;D<3;D++){let N=f[3*G+D];y[D].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),y[D].normalize(),C[D].copyFromFloats(h[2*N]*u+_+T[G]*g,h[2*N+1]*m+p+T[G]*v)}let O=(N,B,V,Q)=>{let K=b.Lerp(y[0],y[2],B/r),J=b.Lerp(y[1],y[2],B/r),z=r===B?y[2]:b.Lerp(K,J,N/(r-B));z.normalize();let Y;if(i){let oe=b.Lerp(y[0],y[2],Q/r),ve=b.Lerp(y[1],y[2],Q/r);Y=b.Lerp(oe,ve,V/(r-Q))}else Y=new b(z.x,z.y,z.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let de=we.Lerp(C[0],C[2],B/r),ge=we.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:we.Lerp(de,ge,N/(r-B));E.push(z.x*s,z.y*a,z.z*o),A.push(Y.x,Y.y,Y.z),R.push(Ue.x,yt?1-Ue.y:Ue.y),S.push(M),M++};for(let N=0;N{ke();Fi();Tr();fn();Me.CreateIcoSphere=n4;q.CreateIcoSphere=(n,e,t)=>DL(n,e,t)});function LL(n,e,t){var V,Q,K,J,z;let i=!!e.skeleton,r=!!((V=e.morphTargetManager)!=null&&V.numTargets),s=t.localMode||i,a=e.getIndices(),o=i||r?e.getPositionData(!0,!0):e.getVerticesData(L.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(L.NormalKind),c=s?i?e.getVerticesData(L.PositionKind):o:null,f=s?i?e.getVerticesData(L.NormalKind):l:null,d=e.getVerticesData(L.UVKind),h=i?e.getVerticesData(L.MatricesIndicesKind):null,u=i?e.getVerticesData(L.MatricesWeightsKind):null,m=i?e.getVerticesData(L.MatricesIndicesExtraKind):null,_=i?e.getVerticesData(L.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),g=t.normal||b.Up(),v=t.size||b.One(),T=t.angle||0;if(!g){let Y=new b(0,0,1),de=e.getScene().activeCamera,ge=b.TransformCoordinates(Y,de.getWorldMatrix());g=de.globalPosition.subtract(ge)}let S=-Math.atan2(g.z,g.x)-Math.PI/2,E=Math.sqrt(g.x*g.x+g.z*g.z),A=Math.atan2(g.y,E),R=new Me;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=_?[]:null;let M=0,y=(Y,de)=>{let ge=new SR;if(!a||!o||!l)return ge;let Ue=a[Y];if(ge.vertexIdx=Ue*3,ge.vertexIdxForBones=Ue*4,ge.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(ge.position,de,ge.position),ge.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(ge.normal,de,ge.normal),t.captureUVS&&d){let oe=d[Ue*2+1];ge.uv=new we(d[Ue*2],yt?1-oe:oe)}return ge},C=[0,0,0,0],D=(Y,de)=>{if(Y.length===0)return Y;let ge=.5*Math.abs(b.Dot(v,de)),Ue=(ie,ue,Pe,me)=>{for(let be=0;be{var ye,Be,Je,st,Ie,Le,lt,dt,qe,et,wt,$t,bi,ae,tt,Ce;let Pe=b.GetClipFactor(ie.position,ue.position,de,ge),me=C,be=C;if(h&&u){let Ze=ie.matrixIndicesOverride?0:ie.vertexIdxForBones,rt=(ye=ie.matrixIndicesOverride)!=null?ye:h,Ve=(Be=ie.matrixWeightsOverride)!=null?Be:u,Mt=ue.matrixIndicesOverride?0:ue.vertexIdxForBones,Xt=(Je=ue.matrixIndicesOverride)!=null?Je:h,pr=(st=ue.matrixWeightsOverride)!=null?st:u;me=[0,0,0,0],be=[0,0,0,0];let Ai=0;for(let Ar=0;Ar<4;++Ar)if(Ve[Ze+Ar]>0){let ne=Ue(Xt,rt[Ze+Ar],Mt,4);me[Ai]=rt[Ze+Ar],be[Ai]=So(Ve[Ze+Ar],ne>=0?pr[ne]:0,Pe),Ai++}for(let Ar=0;Ar<4&&Ai<4;++Ar){let ne=Xt[Mt+Ar];Ue(rt,ne,Ze,4)===-1&&(me[Ai]=ne,be[Ai]=So(0,pr[Mt+Ar],Pe),Ai++)}let Rn=be[0]+be[1]+be[2]+be[3];be[0]/=Rn,be[1]/=Rn,be[2]/=Rn,be[3]/=Rn}let De=ie.localPositionOverride?ie.localPositionOverride[0]:(Ie=c==null?void 0:c[ie.vertexIdx])!=null?Ie:0,ut=ie.localPositionOverride?ie.localPositionOverride[1]:(Le=c==null?void 0:c[ie.vertexIdx+1])!=null?Le:0,Ye=ie.localPositionOverride?ie.localPositionOverride[2]:(lt=c==null?void 0:c[ie.vertexIdx+2])!=null?lt:0,je=ue.localPositionOverride?ue.localPositionOverride[0]:(dt=c==null?void 0:c[ue.vertexIdx])!=null?dt:0,Qt=ue.localPositionOverride?ue.localPositionOverride[1]:(qe=c==null?void 0:c[ue.vertexIdx+1])!=null?qe:0,Pt=ue.localPositionOverride?ue.localPositionOverride[2]:(et=c==null?void 0:c[ue.vertexIdx+2])!=null?et:0,Ti=ie.localNormalOverride?ie.localNormalOverride[0]:(wt=f==null?void 0:f[ie.vertexIdx])!=null?wt:0,se=ie.localNormalOverride?ie.localNormalOverride[1]:($t=f==null?void 0:f[ie.vertexIdx+1])!=null?$t:0,Di=ie.localNormalOverride?ie.localNormalOverride[2]:(bi=f==null?void 0:f[ie.vertexIdx+2])!=null?bi:0,ii=ue.localNormalOverride?ue.localNormalOverride[0]:(ae=f==null?void 0:f[ue.vertexIdx])!=null?ae:0,yi=ue.localNormalOverride?ue.localNormalOverride[1]:(tt=f==null?void 0:f[ue.vertexIdx+1])!=null?tt:0,ct=ue.localNormalOverride?ue.localNormalOverride[2]:(Ce=f==null?void 0:f[ue.vertexIdx+2])!=null?Ce:0,Yi=Ti+(ii-Ti)*Pe,X=se+(yi-se)*Pe,U=Di+(ct-Di)*Pe,he=Math.sqrt(Yi*Yi+X*X+U*U);return new SR(b.Lerp(ie.position,ue.position,Pe),b.Lerp(ie.normal,ue.normal,Pe).normalize(),we.Lerp(ie.uv,ue.uv,Pe),-1,-1,c?[De+(je-De)*Pe,ut+(Qt-ut)*Pe,Ye+(Pt-Ye)*Pe]:null,f?[Yi/he,X/he,U/he]:null,me,be)},ve=null;Y.length>3&&(ve=[]);for(let ie=0;ie0,Qt=ut>0,Pt=Ye>0;switch((je?1:0)+(Qt?1:0)+(Pt?1:0)){case 0:Y.length>3?(ve.push(Y[ie]),ve.push(Y[ie+1]),ve.push(Y[ie+2])):ve=Y;break;case 1:if(ve=ve!=null?ve:new Array,je&&(ue=Y[ie+1],Pe=Y[ie+2],me=oe(Y[ie],ue),be=oe(Y[ie],Pe)),Qt){ue=Y[ie],Pe=Y[ie+2],me=oe(Y[ie+1],ue),be=oe(Y[ie+1],Pe),ve.push(me),ve.push(Pe.clone()),ve.push(ue.clone()),ve.push(Pe.clone()),ve.push(me.clone()),ve.push(be);break}Pt&&(ue=Y[ie],Pe=Y[ie+1],me=oe(Y[ie+2],ue),be=oe(Y[ie+2],Pe)),ue&&Pe&&me&&be&&(ve.push(ue.clone()),ve.push(Pe.clone()),ve.push(me),ve.push(be),ve.push(me.clone()),ve.push(Pe.clone()));break;case 2:ve=ve!=null?ve:new Array,je||(ue=Y[ie].clone(),Pe=oe(ue,Y[ie+1]),me=oe(ue,Y[ie+2]),ve.push(ue),ve.push(Pe),ve.push(me)),Qt||(ue=Y[ie+1].clone(),Pe=oe(ue,Y[ie+2]),me=oe(ue,Y[ie]),ve.push(ue),ve.push(Pe),ve.push(me)),Pt||(ue=Y[ie+2].clone(),Pe=oe(ue,Y[ie]),me=oe(ue,Y[ie+1]),ve.push(ue),ve.push(Pe),ve.push(me));break;case 3:break}}return ve},w=e instanceof q?e:null,G=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(Z.IdentityReadOnly);for(let Y=0;Y{ke();jn();Fi();Zi();Tr();fn();Ode=new b(1,0,0),Nde=new b(-1,0,0),wde=new b(0,1,0),Fde=new b(0,-1,0),Bde=new b(0,0,1),Ude=new b(0,0,-1),SR=class n{constructor(e=b.Zero(),t=b.Up(),i=we.Zero(),r=0,s=0,a=null,o=null,l=null,c=null){this.position=e,this.normal=t,this.uv=i,this.vertexIdx=r,this.vertexIdxForBones=s,this.localPositionOverride=a,this.localNormalOverride=o,this.matrixIndicesOverride=l,this.matrixWeightsOverride=c}clone(){var e,t,i,r;return new n(this.position.clone(),this.normal.clone(),this.uv.clone(),this.vertexIdx,this.vertexIdxForBones,(e=this.localPositionOverride)==null?void 0:e.slice(),(t=this.localNormalOverride)==null?void 0:t.slice(),(i=this.matrixIndicesOverride)==null?void 0:i.slice(),(r=this.matrixWeightsOverride)==null?void 0:r.slice())}};q.CreateDecal=(n,e,t,i,r,s)=>LL(n,e,{position:t,normal:i,size:r,angle:s})});function o4(n={subdivisions:2,tessellation:16,height:1,radius:.25,capSubdivisions:6}){let e=Math.max(n.subdivisions?n.subdivisions:2,1)|0,t=Math.max(n.tessellation?n.tessellation:16,3)|0,i=Math.max(n.height?n.height:1,0),r=Math.max(n.radius?n.radius:.25,0),s=Math.max(n.capSubdivisions?n.capSubdivisions:6,1)|0,a=t,o=e,l=Math.max(n.radiusTop?n.radiusTop:r,0),c=Math.max(n.radiusBottom?n.radiusBottom:r,0),f=i-(l+c),d=0,h=2*Math.PI,u=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),_=Math.acos((c-l)/i),p=[],g=[],v=[],T=[],S=0,E=[],A=f*.5,R=Math.PI*.5,M,y,C=b.Zero(),D=b.Zero(),w=Math.cos(_),G=Math.sin(_),O=new we(l*G,A+l*w).subtract(new we(c*G,-A+c*w)).length(),N=l*_+O+c*(R-_),B=0;for(y=0;y<=u;y++){let J=[],z=R-_*(y/u);B+=l*_/u;let Y=Math.cos(z),de=Math.sin(z),ge=Y*l;for(M=0;M<=a;M++){let Ue=M/a,oe=Ue*h+d,ve=Math.sin(oe),ie=Math.cos(oe);D.x=ge*ve,D.y=A+de*l,D.z=ge*ie,g.push(D.x,D.y,D.z),C.set(Y*ve,de,Y*ie),v.push(C.x,C.y,C.z),T.push(Ue,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}let V=i-l-c+w*l-w*c,Q=G*(c-l)/V;for(y=1;y<=o;y++){let J=[];B+=O/o;let z=G*(y*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,de=Y*h+d,ge=Math.sin(de),Ue=Math.cos(de);D.x=z*ge,D.y=A+w*l-y*V/o,D.z=z*Ue,g.push(D.x,D.y,D.z),C.set(ge,Q,Ue).normalize(),v.push(C.x,C.y,C.z),T.push(Y,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}for(y=1;y<=m;y++){let J=[],z=R-_-(Math.PI-_)*(y/m);B+=c*_/m;let Y=Math.cos(z),de=Math.sin(z),ge=Y*c;for(M=0;M<=a;M++){let Ue=M/a,oe=Ue*h+d,ve=Math.sin(oe),ie=Math.cos(oe);D.x=ge*ve,D.y=-A+de*c,D.z=ge*ie,g.push(D.x,D.y,D.z),C.set(Y*ve,de,Y*ie),v.push(C.x,C.y,C.z),T.push(Ue,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}for(M=0;M{Tr();ke();Fi();fn();q.CreateCapsule=(n,e,t)=>OL(n,e,t);Me.CreateCapsule=o4});var nr,c4=I(()=>{Lt();ke();nr=class n{constructor(e=0,t=0){this.x=e,this.y=t,e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("x is not an integer, floor(x) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("y is not an integer, floor(y) used"))}clone(){return new n(this.x,this.y)}rotate60About(e){let t=this.x;return this.x=e.x+e.y-this.y,this.y=t+this.y-e.x,this}rotateNeg60About(e){let t=this.x;return this.x=t+this.y-e.y,this.y=e.x+e.y-t,this}rotate120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m not an integer only floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n not an integer only floor(n) used"));let i=this.x;return this.x=e-i-this.y,this.y=t+i,this}rotateNeg120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m is not an integer, floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n is not an integer, floor(n) used"));let i=this.x;return this.x=this.y-t,this.y=e+t-i-this.y,this}toCartesianOrigin(e,t){let i=b.Zero();return i.x=e.x+2*this.x*t+this.y*t,i.y=e.y+Math.sqrt(3)*this.y*t,i}static Zero(){return new n(0,0)}}});var xp,yv,Rp,NL=I(()=>{ke();jn();Kn();c4();xp=class{constructor(){this.cartesian=[],this.vertices=[],this.max=[],this.min=[],this.closestTo=[],this.innerFacets=[],this.isoVecsABOB=[],this.isoVecsOBOA=[],this.isoVecsBAOA=[],this.vertexTypes=[],this.IDATA=new yv("icosahedron","Regular",[[0,Mr,-1],[-Mr,1,0],[-1,0,-Mr],[1,0,-Mr],[Mr,1,0],[0,Mr,1],[-1,0,Mr],[-Mr,-1,0],[0,-Mr,-1],[Mr,-1,0],[1,0,Mr],[0,-Mr,1]],[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[7,6,1],[8,7,2],[9,8,3],[10,9,4],[6,10,5],[2,7,1],[3,8,2],[4,9,3],[5,10,4],[1,6,5],[11,6,7],[11,7,8],[11,8,9],[11,9,10],[11,10,6]])}setIndices(){let e=12,t={},i=this.m,r=this.n,s=i;r!==0&&(s=lx(i,r));let a=i/s,o=r/s,l,c,f,d,h,u=nr.Zero(),m=new nr(i,r),_=new nr(-r,i+r),p=nr.Zero(),g=nr.Zero(),v=nr.Zero(),T=[],S,E,A,R,M=[],y=this.vertByDist,C=(D,w,G,O)=>{S=D+"|"+G,E=w+"|"+O,S in t||E in t?S in t&&!(E in t)?t[E]=t[S]:E in t&&!(S in t)&&(t[S]=t[E]):(t[S]=e,t[E]=e,e++),y[G][0]>2?M[t[S]]=[-y[G][0],y[G][1],t[S]]:M[t[S]]=[T[y[G][0]],y[G][1],t[S]]};this.IDATA.edgematch=[[1,"B"],[2,"B"],[3,"B"],[4,"B"],[0,"B"],[10,"O",14,"A"],[11,"O",10,"A"],[12,"O",11,"A"],[13,"O",12,"A"],[14,"O",13,"A"],[0,"O"],[1,"O"],[2,"O"],[3,"O"],[4,"O"],[19,"B",5,"A"],[15,"B",6,"A"],[16,"B",7,"A"],[17,"B",8,"A"],[18,"B",9,"A"]];for(let D=0;D<20;D++){if(T=this.IDATA.face[D],f=T[2],d=T[1],h=T[0],A=u.x+"|"+u.y,S=D+"|"+A,S in t||(t[S]=f,M[f]=[T[y[A][0]],y[A][1]]),A=m.x+"|"+m.y,S=D+"|"+A,S in t||(t[S]=d,M[d]=[T[y[A][0]],y[A][1]]),A=_.x+"|"+_.y,S=D+"|"+A,S in t||(t[S]=h,M[h]=[T[y[A][0]],y[A][1]]),l=this.IDATA.edgematch[D][0],c=this.IDATA.edgematch[D][1],c==="B")for(let w=1;w2?M[t[S]]=[-y[A][0],y[A][1],t[S]]:M[t[S]]=[T[y[A][0]],y[A][1],t[S]])}this.closestTo=M,this.vecToidx=t}calcCoeffs(){let e=this.m,t=this.n,i=Math.sqrt(3)/3,r=e*e+t*t+e*t;this.coau=(e+t)/r,this.cobu=-t/r,this.coav=-i*(e-t)/r,this.cobv=i*(2*e+t)/r}createInnerFacets(){let e=this.m,t=this.n;for(let i=0;i0&&r0){let E=lx(e,t),A=e/E,R=t/E;for(let y=1;yE.x-A.x),i.sort((E,A)=>E.y-A.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let E=0;E{let R=E.clone();return A==="A"&&R.rotateNeg120(e,t),A==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},u=[],m=[],_=[],p=[],g={},v=[],T=-1,S=-1;for(let E=0;EE[2]-A[2]),v.sort((E,A)=>E[3]-A[3]),v.sort((E,A)=>E[1]-A[1]),v.sort((E,A)=>E[0]-A[0]);for(let E=0;Et.vecToidx[e+r]))}mapABOBtoDATA(e,t){let i=t.IDATA.edgematch[e][0];for(let r=0;r-1?i[a][1]>0&&t[i[a][0]].push([a,i[a][1]]):t[12].push([a,i[a][0]]);let r=[];for(let a=0;a<12;a++)r[a]=a;let s=12;for(let a=0;a<12;a++){t[a].sort((o,l)=>o[1]-l[1]);for(let o=0;oa[3]-o[3]);for(let a=0;a0;)s=t[l],this.face[s].indexOf(o)>-1?(a=(this.face[s].indexOf(o)+1)%3,o=this.face[s][a],i.push(o),r.push(s),t.splice(l,1),l=0):l++;return this.adjacentFaces.push(i),r}toGoldbergPolyhedronData(){let e=new yv("GeoDual","Goldberg",[],[]);e.name="GD dual";let t=this.vertex.length,i=new Array(t);for(let c=0;ci){let c=r;r=i,i=c,ee.Warn("n > m therefore m and n swapped")}let s=new xp;s.build(i,r);let o={custom:Rp.BuildGeodesicData(s),size:e.size,sizeX:e.sizeX,sizeY:e.sizeY,sizeZ:e.sizeZ,faceUV:e.faceUV,faceColors:e.faceColors,flat:e.flat,updatable:e.updatable,sideOrientation:e.sideOrientation,frontUVs:e.frontUVs,backUVs:e.backUVs};return Iv(n,o,t)}var d4=I(()=>{PL();Lt();NL()});var Cv,h4=I(()=>{ke();Zi();Fi();zt();Lt();q._GoldbergMeshParser=(n,e)=>Cv.Parse(n,e);Cv=class n extends q{constructor(){super(...arguments),this.goldbergData={faceColors:[],faceCenters:[],faceZaxis:[],faceXaxis:[],faceYaxis:[],nbSharedFaces:0,nbUnsharedFaces:0,nbFaces:0,nbFacesAtPole:0,adjacentFaces:[]}}relatedGoldbergFace(e,t){return t===void 0?(e>this.goldbergData.nbUnsharedFaces-1&&(ee.Warn("Maximum number of unshared faces used"),e=this.goldbergData.nbUnsharedFaces-1),this.goldbergData.nbUnsharedFaces+e):(e>11&&(ee.Warn("Last pole used"),e=11),t>this.goldbergData.nbFacesAtPole-1&&(ee.Warn("Maximum number of faces at a pole used"),t=this.goldbergData.nbFacesAtPole-1),12+e*this.goldbergData.nbFacesAtPole+t)}_changeGoldbergFaceColors(e){for(let i=0;i1&&(d=1),c.push(d,h);for(let u=0;u<6;u++)d=a.x+o*Math.cos(l+u*Math.PI/3),h=a.y+o*Math.sin(l+u*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,h);for(let u=r;uft.FromArray(s)),i.faceCenters=i.faceCenters.map(s=>b.FromArray(s)),i.faceZaxis=i.faceZaxis.map(s=>b.FromArray(s)),i.faceXaxis=i.faceXaxis.map(s=>b.FromArray(s)),i.faceYaxis=i.faceYaxis.map(s=>b.FromArray(s));let r=new n(e.name,t);return r.goldbergData=i,r}}});function Vde(n,e){let t=n.size,i=n.sizeX||t||1,r=n.sizeY||t||1,s=n.sizeZ||t||1,a=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,h=-1/0,u=1/0,m=-1/0;for(let g=0;go){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new xp;c.build(o,l);let f=Rp.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),h=new Cv(n,t);e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),h._originalBuilderSideOrientation=e.sideOrientation,Vde(e,d).applyToMesh(h,e.updatable),h.goldbergData.nbSharedFaces=f.sharedNodes,h.goldbergData.nbUnsharedFaces=f.poleNodes,h.goldbergData.adjacentFaces=f.adjacentFaces,h.goldbergData.nbFaces=h.goldbergData.nbSharedFaces+h.goldbergData.nbUnsharedFaces,h.goldbergData.nbFacesAtPole=(h.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{ke();zt();Fi();Tr();Lt();NL();h4();fn()});function Gde(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new wL(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{ph();ke();Fi();Vf();RL();wL=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new Om(e,t),this._tempPaths.push(this._currentPath)}lineTo(e,t){this._currentPath.addLineTo(e,t)}quadraticCurveTo(e,t,i,r){this._currentPath.addQuadraticCurveTo(e,t,i,r,this._resolution)}bezierCurveTo(e,t,i,r,s,a){this._currentPath.addBezierCurveTo(e,t,i,r,s,a,this._resolution)}extractHoles(){for(let e of this._tempPaths)e.area()>0?this._holes.push(e):this._paths.push(e);if(!this._paths.length&&this._holes.length){let e=this._holes;this._holes=this._paths,this._paths=e}this._tempPaths.length=0}get paths(){return this._paths}get holes(){return this._holes}}});var xs,FL=I(()=>{hv();GH();sL();KH();ZH();QH();JH();tz();jz();RL();$z();Jz();t4();aL();rL();i4();PL();s4();a4();l4();d4();m4();_4();xs={CreateBox:nL,CreateTiledBox:YH,CreateSphere:lL,CreateDisc:$D,CreateIcoSphere:DL,CreateRibbon:Bo,CreateCylinder:cL,CreateTorus:fL,CreateTorusKnot:dL,CreateLineSystem:SL,CreateLines:TL,CreateDashedLines:AL,ExtrudeShape:bL,ExtrudeShapeCustom:ML,CreateLathe:IL,CreateTiledPlane:zH,CreatePlane:yL,CreateGround:eL,CreateTiledGround:tL,CreateGroundFromHeightMap:iL,CreatePolygon:ER,ExtrudePolygon:Mv,CreateTube:CL,CreatePolyhedron:Iv,CreateGeodesic:f4,CreateGoldberg:u4,CreateDecal:LL,CreateCapsule:OL,CreateText:p4}});var $s,TR=I(()=>{$s=class{constructor(){this.previousWorldMatrices={},this.previousBones={}}static AddUniforms(e){e.push("previousWorld","previousViewProjection","mPreviousBones")}static AddSamplers(e){}bindForSubMesh(e,t,i,r,s){if(t.prePassRenderer&&t.prePassRenderer.enabled&&t.prePassRenderer.currentRTisSceneRT&&(t.prePassRenderer.getIndex(2)!==-1||t.prePassRenderer.getIndex(11)!==-1)){this.previousWorldMatrices[i.uniqueId]||(this.previousWorldMatrices[i.uniqueId]=r.clone()),this.previousViewProjection||(this.previousViewProjection=t.getTransformMatrix().clone(),this.currentViewProjection=t.getTransformMatrix().clone());let a=t.getEngine();this.currentViewProjection.updateFlag!==t.getTransformMatrix().updateFlag?(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection),this.currentViewProjection.copyFrom(t.getTransformMatrix())):this._lastUpdateFrameId!==a.frameId&&(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection)),e.setMatrix("previousWorld",this.previousWorldMatrices[i.uniqueId]),e.setMatrix("previousViewProjection",this.previousViewProjection),this.previousWorldMatrices[i.uniqueId]=r.clone()}}}});var Lr,ja=I(()=>{Lr=class{constructor(e){if(this.VERTEXOUTPUT_INVARIANT=!1,this._keys=[],this._isDirty=!0,this._areLightsDirty=!0,this._areLightsDisposed=!1,this._areAttributesDirty=!0,this._areTexturesDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._normals=!1,this._uvs=!1,this._needNormals=!1,this._needUVs=!1,this._externalProperties=e,e)for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&this._setDefaultValue(t)}get isDirty(){return this._isDirty}markAsProcessed(){this._isDirty=!1,this._areAttributesDirty=!1,this._areTexturesDirty=!1,this._areFresnelDirty=!1,this._areLightsDirty=!1,this._areLightsDisposed=!1,this._areMiscDirty=!1,this._arePrePassDirty=!1,this._areImageProcessingDirty=!1}markAsUnprocessed(){this._isDirty=!0}markAllAsDirty(){this._areTexturesDirty=!0,this._areAttributesDirty=!0,this._areLightsDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._isDirty=!0}markAsImageProcessingDirty(){this._areImageProcessingDirty=!0,this._isDirty=!0}markAsLightDirty(e=!1){this._areLightsDirty=!0,this._areLightsDisposed=this._areLightsDisposed||e,this._isDirty=!0}markAsAttributesDirty(){this._areAttributesDirty=!0,this._isDirty=!0}markAsTexturesDirty(){this._areTexturesDirty=!0,this._isDirty=!0}markAsFresnelDirty(){this._areFresnelDirty=!0,this._isDirty=!0}markAsMiscDirty(){this._areMiscDirty=!0,this._isDirty=!0}markAsPrePassDirty(){this._arePrePassDirty=!0,this._isDirty=!0}rebuild(){this._keys.length=0;for(let e of Object.keys(this))e[0]!=="_"&&this._keys.push(e);if(this._externalProperties)for(let e in this._externalProperties)this._keys.indexOf(e)===-1&&this._keys.push(e)}isEqual(e){if(this._keys.length!==e._keys.length)return!1;for(let t=0;t{zt();Zi();Fi();hL();ts();mL();q._LinesMeshParser=(n,e)=>Dh.Parse(n,e);Dh=class n extends q{_isShaderMaterial(e){return e?e.getClassName()==="ShaderMaterial":!1}constructor(e,t=null,i=null,r=null,s,a,o,l){super(e,t,i,r,s),this.useVertexColor=a,this.useVertexAlpha=o,this.color=new Ee(1,1,1),this.alpha=1,this._shaderLanguage=0,this._ownsMaterial=!1,r&&(this.color=r.color.clone(),this.alpha=r.alpha,this.useVertexColor=r.useVertexColor,this.useVertexAlpha=r.useVertexAlpha),this.intersectionThreshold=.1;let c=[],f={attributes:[L.PositionKind],uniforms:["world","viewProjection"],needAlphaBlending:!0,defines:c,useClipPlane:null,shaderLanguage:0};if(this.useVertexAlpha?f.defines.push("#define VERTEXALPHA"):f.needAlphaBlending=!1,this.useVertexColor?(f.defines.push("#define VERTEXCOLOR"),f.attributes.push(L.ColorKind)):(f.uniforms.push("color"),this._color4=new ft),l)this.material=l;else{this.getScene().getEngine().isWebGPU&&!n.ForceGLSL&&(this._shaderLanguage=1),f.shaderLanguage=this._shaderLanguage,f.extraInitializationsAsync=async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(_z(),pz)),Promise.resolve().then(()=>(xz(),Az))]):await Promise.all([Promise.resolve().then(()=>(Bz(),Fz)),Promise.resolve().then(()=>(zz(),Hz))])};let h=new Uo("colorShader",this.getScene(),"color",f,!1);h.doNotSerialize=!0,this._ownsMaterial=!0,this._setInternalMaterial(h)}}getClassName(){return"LinesMesh"}get material(){return this._internalAbstractMeshDataInfo._material}set material(e){let t=this.material;if(t===e)return;let i=t&&this._ownsMaterial;this._ownsMaterial=!1,this._setInternalMaterial(e),i&&(t==null||t.dispose())}_setInternalMaterial(e){this._setMaterial(e),this.material&&(this.material.fillMode=Se.LineListDrawMode,this.material.disableLighting=!0)}get checkCollisions(){return!1}set checkCollisions(e){}_bind(e,t){if(!this._geometry)return this;let i=this.isUnIndexed?null:this._geometry.getIndexBuffer();if(!this._userInstancedBuffersStorage||this.hasThinInstances?this._geometry._bind(t,i):this._geometry._bind(t,i,this._userInstancedBuffersStorage.vertexBuffers,this._userInstancedBuffersStorage.vertexArrayObjects),!this.useVertexColor&&this._isShaderMaterial(this.material)){let{r,g:s,b:a}=this.color;this._color4.set(r,s,a,this.alpha),this.material.setColor4("color",this._color4)}return this}_draw(e,t,i){if(!this._geometry||!this._geometry.getVertexBuffers()||!this._unIndexed&&!this._geometry.getIndexBuffer())return this;let r=this.getScene().getEngine();return this._unIndexed?r.drawArraysType(Se.LineListDrawMode,e.verticesStart,e.verticesCount,i):r.drawElementsType(Se.LineListDrawMode,e.indexStart,e.indexCount,i),this}dispose(e,t=!1,i){var r,s;i||(this._ownsMaterial?(r=this.material)==null||r.dispose(!1,!1,!0):t&&((s=this.material)==null||s.dispose(!1,!1,!0))),super.dispose(e)}clone(e,t=null,i){if(t&&t._addToSceneRootNodes===void 0){let r=t;return r.source=this,new n(e,this.getScene(),r.parent,r.source,r.doNotCloneChildren)}return new n(e,this.getScene(),t,this,i)}createInstance(e){let t=new EL(e,this);if(this.instancedBuffers){t.instancedBuffers={};for(let i in this.instancedBuffers)t.instancedBuffers[i]=this.instancedBuffers[i]}return t}serialize(e){super.serialize(e),e.color=this.color.asArray(),e.alpha=this.alpha}static Parse(e,t){let i=new n(e.name,t);return i.color=Ee.FromArray(e.color),i.alpha=e.alpha,i}};Dh.ForceGLSL=!1;EL=class extends Tc{constructor(e,t){super(e,t),this.intersectionThreshold=t.intersectionThreshold}getClassName(){return"InstancedLinesMesh"}}});function Yz(n){let e=[],t=[],i=n.lines,r=n.colors,s=[],a=0;for(let l=0;l0&&(e.push(a-1),e.push(a)),a++}}let o=new Me;return o.indices=e,o.positions=t,r&&(o.colors=s),o}function Kz(n){let e=n.dashSize||3,t=n.gapSize||1,i=n.dashNb||200,r=n.points,s=[],a=[],o=b.Zero(),l=0,c,f,d=0,h;for(h=0;h{let d=b.Zero(),h=f.length/6,u=0,m,_,p=0,g,v;for(g=0;g{ke();Fi();Tr();Xz();Zi();Lt();Me.CreateLineSystem=Yz;Me.CreateDashedLines=Kz;q.CreateLines=(n,e,t=null,i=!1,r=null)=>TL(n,{points:e,updatable:i,instance:r},t);q.CreateDashedLines=(n,e,t,i,r,s=null,a,o)=>AL(n,{points:e,dashSize:t,gapSize:i,dashNb:r,updatable:a,instance:o},s)});var xL,bv,ER,Zz=I(()=>{Lt();ke();Zi();Fi();Tr();ph();Kn();Gi();xL=class extends we{constructor(e,t){super(e.x,e.y),this.index=t}},bv=class{constructor(){this.elements=[]}add(e){let t=[];for(let i of e){let r=new xL(i,this.elements.length);t.push(r),this.elements.push(r)}return t}computeBounds(){let e=new we(this.elements[0].x,this.elements[0].y),t=new we(this.elements[0].x,this.elements[0].y);for(let i of this.elements)i.xt.x&&(t.x=i.x),i.yt.y&&(t.y=i.y);return{min:e,max:t,width:t.x-e.x,height:t.y-e.y}}},ER=class{_addToepoint(e){for(let t of e)this._epoints.push(t.x,t.y)}constructor(e,t,i,r=earcut){this._points=new bv,this._outlinepoints=new bv,this._holes=new Array,this._epoints=new Array,this._eholes=new Array,this.bjsEarcut=r,this._name=e,this._scene=i||Oe.LastCreatedScene;let s;t instanceof Om?s=t.getPoints():s=t,this._addToepoint(s),this._points.add(s),this._outlinepoints.add(s),typeof this.bjsEarcut=="undefined"&&ee.Warn("Earcut was not found, the polygon will not be built.")}addHole(e){this._points.add(e);let t=new bv;return t.add(e),this._holes.push(t),this._eholes.push(this._epoints.length/2),this._addToepoint(e),this}build(e=!1,t=0,i=2){let r=new q(this._name,this._scene),s=this.buildVertexData(t,i);return r.setVerticesData(L.PositionKind,s.positions,e),r.setVerticesData(L.NormalKind,s.normals,e),r.setVerticesData(L.UVKind,s.uvs,e),r.setIndices(s.indices),r}buildVertexData(e=0,t=2){let i=new Me,r=[],s=[],a=[],o=this._points.computeBounds();for(let f of this._points.elements)r.push(0,1,0),s.push(f.x,0,f.y),a.push((f.x-o.min.x)/o.width,(f.y-o.min.y)/o.height);let l=[],c=this.bjsEarcut(this._epoints,this._eholes,2);for(let f=0;f0){let f=s.length/3;for(let h of this._points.elements)r.push(0,-1,0),s.push(h.x,-e,h.y),a.push(1-(h.x-o.min.x)/o.width,1-(h.y-o.min.y)/o.height);let d=l.length;for(let h=0;hc?Rc?M{ke();zt();Fi();Tr();Zz();Zi();Gi();fn();Me.CreatePolygon=qz;q.CreatePolygon=(n,e,t,i,r,s,a=earcut)=>SR(n,{shape:e,holes:i,updatable:r,sideOrientation:s},t,a);q.ExtrudePolygon=(n,e,t,i,r,s,a,o=earcut)=>Mv(n,{shape:e,holes:r,depth:t,updatable:s,sideOrientation:a},i,o)});function bL(n,e,t=null){let i=e.path,r=e.shape,s=e.scale||1,a=e.rotation||0,o=e.cap===0?0:e.cap||q.NO_CAP,l=e.updatable,c=q._GetDefaultSideOrientation(e.sideOrientation),f=e.instance||null,d=e.invertUV||!1,h=e.closeShape||!1,u=e.closePath||!1,m=e.capFunction||null;return Qz(n,r,i,s,a,null,null,u,h,o,!1,t,!!l,c,f,d,e.frontUVs||null,e.backUVs||null,e.firstNormal||null,!!e.adjustFrame,m)}function ML(n,e,t=null){var v;let i=e.path,r=e.shape,s=b.Zero(),a=(T,S)=>{var A,R;let E=(R=(A=e.scaleFunction)==null?void 0:A.call(e,T,S))!=null?R:1;return s.copyFromFloats(E,E,E)},o=e.rotationFunction||(()=>0),l=e.closePath||e.ribbonCloseArray||!1,c=e.closeShape||e.ribbonClosePath||!1,f=e.cap===0?0:e.cap||q.NO_CAP,d=e.updatable,h=e.firstNormal||null,u=e.adjustFrame||!1,m=q._GetDefaultSideOrientation(e.sideOrientation),_=e.instance,p=e.invertUV||!1,g=e.capFunction||null;return Qz(n,r,i,null,null,(v=e.scaleVectorFunction)!=null?v:a,o,l,c,f,!0,t,!!d,m,_||null,p,e.frontUVs||null,e.backUVs||null,h,u,g||null)}function Qz(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S){let E=(D,w,G,O,N,B,V,Q,K,J,z)=>{let Y=G.getTangents(),de=G.getNormals(),ge=G.getBinormals(),Ue=G.getDistances();if(z){for(let Ye=0;Ye0){let je=Y[Ye-1];b.Dot(je,Y[Ye])<0&&Y[Ye].scaleInPlace(-1),je=de[Ye-1],b.Dot(je,de[Ye])<0&&de[Ye].scaleInPlace(-1),je=ge[Ye-1],b.Dot(je,ge[Ye])<0&&ge[Ye].scaleInPlace(-1)}}let oe=0,ve=()=>N!==null?N:b.OneReadOnly,ue=J&&Q?Q:()=>B!==null?B:0,Pe=J&&V?V:ve,me=K===q.NO_CAP||K===q.CAP_END?0:2,be=$.Matrix[0];for(let Ye=0;Ye{let je=Array(),Qt=b.Zero(),Pt;for(Pt=0;Pt3?0:c,R=E(e,t,M,y,A,r,s,a,c,f,T);let C=Bo(n,{pathArray:R,closeArray:o,closePath:l,updatable:h,sideOrientation:u,invertUV:_,frontUVs:p||void 0,backUVs:g||void 0},d);return C._creationDataStorage.pathArray=R,C._creationDataStorage.path3D=M,C._creationDataStorage.cap=c,C}var $z=I(()=>{ke();Fi();hv();ph();q.ExtrudeShape=(n,e,t,i,r,s,a=null,o,l,c)=>{let f={shape:e,path:t,scale:i,rotation:r,cap:s===0?0:s||q.NO_CAP,sideOrientation:l,instance:c,updatable:o};return bL(n,f,a)};q.ExtrudeShapeCustom=(n,e,t,i,r,s,a,o,l,c,f,d)=>{let h={shape:e,path:t,scaleFunction:i,rotationFunction:r,ribbonCloseArray:s,ribbonClosePath:a,cap:o===0?0:o||q.NO_CAP,sideOrientation:f,instance:d,updatable:c};return ML(n,h,l)}});function IL(n,e,t=null){let i=e.arc?e.arc<=0||e.arc>1?1:e.arc:1,r=e.closed===void 0?!0:e.closed,s=e.shape,a=e.radius||1,o=e.tessellation||64,l=e.clip||0,c=e.updatable,f=q._GetDefaultSideOrientation(e.sideOrientation),d=e.cap||q.NO_CAP,h=Math.PI*2,u=[],m=e.invertUV||!1,_,p,g=h/o*i,v,T;for(_=0;_<=o-l;_++){for(T=[],(d==q.CAP_START||d==q.CAP_ALL)&&(T.push(new b(0,s[0].y,0)),T.push(new b(Math.cos(_*g)*s[0].x*a,s[0].y,Math.sin(_*g)*s[0].x*a))),p=0;p{ke();Fi();hv();q.CreateLathe=(n,e,t,i,r,s,a)=>IL(n,{shape:e,radius:t,tessellation:i,sideOrientation:a,updatable:s},r)});function e4(n){let e=[],t=[],i=[],r=[],s=n.width!==void 0?n.width:n.size!==void 0?n.size:1,a=n.height!==void 0?n.height:n.size!==void 0?n.size:1,o=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,l=s/2,c=a/2;t.push(-l,-c,0),i.push(0,0,-1),r.push(0,yt?1:0),t.push(l,-c,0),i.push(0,0,-1),r.push(1,yt?1:0),t.push(l,c,0),i.push(0,0,-1),r.push(1,yt?0:1),t.push(-l,c,0),i.push(0,0,-1),r.push(0,yt?0:1),e.push(0),e.push(1),e.push(2),e.push(0),e.push(2),e.push(3),Me._ComputeSides(o,t,e,i,r,n.frontUVs,n.backUVs);let f=new Me;return f.indices=e,f.positions=t,f.normals=i,f.uvs=r,f}function yL(n,e={},t=null){let i=new q(n,t);return e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),i._originalBuilderSideOrientation=e.sideOrientation,e4(e).applyToMesh(i,e.updatable),e.sourcePlane&&(i.translate(e.sourcePlane.normal,-e.sourcePlane.d),i.setDirection(e.sourcePlane.normal.scale(-1))),i}var t4=I(()=>{Fi();Tr();fn();Me.CreatePlane=e4;q.CreatePlane=(n,e,t,i,r)=>yL(n,{size:e,width:e,height:e,sideOrientation:r,updatable:i},t)});function CL(n,e,t=null){let i=e.path,r=e.instance,s=1;e.radius!==void 0?s=e.radius:r&&(s=r._creationDataStorage.radius);let a=e.tessellation||64,o=e.radiusFunction||null,l=e.cap||q.NO_CAP,c=e.invertUV||!1,f=e.updatable,d=q._GetDefaultSideOrientation(e.sideOrientation);e.arc=e.arc&&(e.arc<=0||e.arc>1)?1:e.arc||1;let h=(g,v,T,S,E,A,R,M)=>{let y=v.getTangents(),C=v.getNormals(),D=v.getDistances(),G=Math.PI*2/E*M,N=A||(()=>S),B,V,Q,K,J=$.Matrix[0],z=R===q.NO_CAP||R===q.CAP_END?0:2;for(let de=0;de{let Ue=Array();for(let oe=0;oe3?0:l,m=h(i,u,_,s,a,o,l,e.arc);let p=Bo(n,{pathArray:m,closePath:!0,closeArray:!1,updatable:f,sideOrientation:d,invertUV:c,frontUVs:e.frontUVs,backUVs:e.backUVs},t);return p._creationDataStorage.pathArray=m,p._creationDataStorage.path3D=u,p._creationDataStorage.tessellation=a,p._creationDataStorage.cap=l,p._creationDataStorage.arc=e.arc,p._creationDataStorage.radius=s,p}var i4=I(()=>{ke();Fi();hv();ph();q.CreateTube=(n,e,t,i,r,s,a,o,l,c)=>CL(n,{path:e,radius:t,tessellation:i,radiusFunction:r,arc:1,cap:s,updatable:o,sideOrientation:l,instance:c},a)});function r4(n){let e=[];e[0]={vertex:[[0,0,1.732051],[1.632993,0,-.5773503],[-.8164966,1.414214,-.5773503],[-.8164966,-1.414214,-.5773503]],face:[[0,1,2],[0,2,3],[0,3,1],[1,3,2]]},e[1]={vertex:[[0,0,1.414214],[1.414214,0,0],[0,1.414214,0],[-1.414214,0,0],[0,-1.414214,0],[0,0,-1.414214]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,1],[1,4,5],[1,5,2],[2,5,3],[3,5,4]]},e[2]={vertex:[[0,0,1.070466],[.7136442,0,.7978784],[-.3568221,.618034,.7978784],[-.3568221,-.618034,.7978784],[.7978784,.618034,.3568221],[.7978784,-.618034,.3568221],[-.9341724,.381966,.3568221],[.1362939,1,.3568221],[.1362939,-1,.3568221],[-.9341724,-.381966,.3568221],[.9341724,.381966,-.3568221],[.9341724,-.381966,-.3568221],[-.7978784,.618034,-.3568221],[-.1362939,1,-.3568221],[-.1362939,-1,-.3568221],[-.7978784,-.618034,-.3568221],[.3568221,.618034,-.7978784],[.3568221,-.618034,-.7978784],[-.7136442,0,-.7978784],[0,0,-1.070466]],face:[[0,1,4,7,2],[0,2,6,9,3],[0,3,8,5,1],[1,5,11,10,4],[2,7,13,12,6],[3,9,15,14,8],[4,10,16,13,7],[5,8,14,17,11],[6,12,18,15,9],[10,11,17,19,16],[12,13,16,19,18],[14,15,18,19,17]]},e[3]={vertex:[[0,0,1.175571],[1.051462,0,.5257311],[.3249197,1,.5257311],[-.8506508,.618034,.5257311],[-.8506508,-.618034,.5257311],[.3249197,-1,.5257311],[.8506508,.618034,-.5257311],[.8506508,-.618034,-.5257311],[-.3249197,1,-.5257311],[-1.051462,0,-.5257311],[-.3249197,-1,-.5257311],[0,0,-1.175571]],face:[[0,1,2],[0,2,3],[0,3,4],[0,4,5],[0,5,1],[1,5,7],[1,7,6],[1,6,2],[2,6,8],[2,8,3],[3,8,9],[3,9,4],[4,9,10],[4,10,5],[5,10,7],[6,7,11],[6,11,8],[7,10,11],[8,11,9],[9,11,10]]},e[4]={vertex:[[0,0,1.070722],[.7148135,0,.7971752],[-.104682,.7071068,.7971752],[-.6841528,.2071068,.7971752],[-.104682,-.7071068,.7971752],[.6101315,.7071068,.5236279],[1.04156,.2071068,.1367736],[.6101315,-.7071068,.5236279],[-.3574067,1,.1367736],[-.7888348,-.5,.5236279],[-.9368776,.5,.1367736],[-.3574067,-1,.1367736],[.3574067,1,-.1367736],[.9368776,-.5,-.1367736],[.7888348,.5,-.5236279],[.3574067,-1,-.1367736],[-.6101315,.7071068,-.5236279],[-1.04156,-.2071068,-.1367736],[-.6101315,-.7071068,-.5236279],[.104682,.7071068,-.7971752],[.6841528,-.2071068,-.7971752],[.104682,-.7071068,-.7971752],[-.7148135,0,-.7971752],[0,0,-1.070722]],face:[[0,2,3],[1,6,5],[4,9,11],[7,15,13],[8,16,10],[12,14,19],[17,22,18],[20,21,23],[0,1,5,2],[0,3,9,4],[0,4,7,1],[1,7,13,6],[2,5,12,8],[2,8,10,3],[3,10,17,9],[4,11,15,7],[5,6,14,12],[6,13,20,14],[8,12,19,16],[9,17,18,11],[10,16,22,17],[11,18,21,15],[13,15,21,20],[14,20,23,19],[16,19,23,22],[18,22,23,21]]},e[5]={vertex:[[0,0,1.322876],[1.309307,0,.1889822],[-.9819805,.8660254,.1889822],[.1636634,-1.299038,.1889822],[.3273268,.8660254,-.9449112],[-.8183171,-.4330127,-.9449112]],face:[[0,3,1],[2,4,5],[0,1,4,2],[0,2,5,3],[1,3,5,4]]},e[6]={vertex:[[0,0,1.159953],[1.013464,0,.5642542],[-.3501431,.9510565,.5642542],[-.7715208,-.6571639,.5642542],[.6633206,.9510565,-.03144481],[.8682979,-.6571639,-.3996071],[-1.121664,.2938926,-.03144481],[-.2348831,-1.063314,-.3996071],[.5181548,.2938926,-.9953061],[-.5850262,-.112257,-.9953061]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,9,7],[5,7,9,8],[0,3,7,5,1],[2,4,8,9,6]]},e[7]={vertex:[[0,0,1.118034],[.8944272,0,.6708204],[-.2236068,.8660254,.6708204],[-.7826238,-.4330127,.6708204],[.6708204,.8660254,.2236068],[1.006231,-.4330127,-.2236068],[-1.006231,.4330127,.2236068],[-.6708204,-.8660254,-.2236068],[.7826238,.4330127,-.6708204],[.2236068,-.8660254,-.6708204],[-.8944272,0,-.6708204],[0,0,-1.118034]],face:[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,10,7],[5,9,11,8],[7,10,11,9],[0,3,7,9,5,1],[2,4,8,11,10,6]]},e[8]={vertex:[[-.729665,.670121,.319155],[-.655235,-.29213,-.754096],[-.093922,-.607123,.537818],[.702196,.595691,.485187],[.776626,-.36656,-.588064]],face:[[1,4,2],[0,1,2],[3,0,2],[4,3,2],[4,1,0,3]]},e[9]={vertex:[[-.868849,-.100041,.61257],[-.329458,.976099,.28078],[-.26629,-.013796,-.477654],[-.13392,-1.034115,.229829],[.738834,.707117,-.307018],[.859683,-.535264,-.338508]],face:[[3,0,2],[5,3,2],[4,5,2],[1,4,2],[0,1,2],[0,3,5,4,1]]},e[10]={vertex:[[-.610389,.243975,.531213],[-.187812,-.48795,-.664016],[-.187812,.9759,-.664016],[.187812,-.9759,.664016],[.798201,.243975,.132803]],face:[[1,3,0],[3,4,0],[3,1,4],[0,2,1],[0,4,2],[2,4,1]]},e[11]={vertex:[[-1.028778,.392027,-.048786],[-.640503,-.646161,.621837],[-.125162,-.395663,-.540059],[.004683,.888447,-.651988],[.125161,.395663,.540059],[.632925,-.791376,.433102],[1.031672,.157063,-.354165]],face:[[3,2,0],[2,1,0],[2,5,1],[0,4,3],[0,1,4],[4,1,5],[2,3,6],[3,4,6],[5,2,6],[4,5,6]]},e[12]={vertex:[[-.669867,.334933,-.529576],[-.669867,.334933,.529577],[-.4043,1.212901,0],[-.334933,-.669867,-.529576],[-.334933,-.669867,.529577],[.334933,.669867,-.529576],[.334933,.669867,.529577],[.4043,-1.212901,0],[.669867,-.334933,-.529576],[.669867,-.334933,.529577]],face:[[8,9,7],[6,5,2],[3,8,7],[5,0,2],[4,3,7],[0,1,2],[9,4,7],[1,6,2],[9,8,5,6],[8,3,0,5],[3,4,1,0],[4,9,6,1]]},e[13]={vertex:[[-.931836,.219976,-.264632],[-.636706,.318353,.692816],[-.613483,-.735083,-.264632],[-.326545,.979634,0],[-.318353,-.636706,.692816],[-.159176,.477529,-.856368],[.159176,-.477529,-.856368],[.318353,.636706,.692816],[.326545,-.979634,0],[.613482,.735082,-.264632],[.636706,-.318353,.692816],[.931835,-.219977,-.264632]],face:[[11,10,8],[7,9,3],[6,11,8],[9,5,3],[2,6,8],[5,0,3],[4,2,8],[0,1,3],[10,4,8],[1,7,3],[10,11,9,7],[11,6,5,9],[6,2,0,5],[2,4,1,0],[4,10,7,1]]},e[14]={vertex:[[-.93465,.300459,-.271185],[-.838689,-.260219,-.516017],[-.711319,.717591,.128359],[-.710334,-.156922,.080946],[-.599799,.556003,-.725148],[-.503838,-.004675,-.969981],[-.487004,.26021,.48049],[-.460089,-.750282,-.512622],[-.376468,.973135,-.325605],[-.331735,-.646985,.084342],[-.254001,.831847,.530001],[-.125239,-.494738,-.966586],[.029622,.027949,.730817],[.056536,-.982543,-.262295],[.08085,1.087391,.076037],[.125583,-.532729,.485984],[.262625,.599586,.780328],[.391387,-.726999,-.716259],[.513854,-.868287,.139347],[.597475,.85513,.326364],[.641224,.109523,.783723],[.737185,-.451155,.538891],[.848705,-.612742,-.314616],[.976075,.365067,.32976],[1.072036,-.19561,.084927]],face:[[15,18,21],[12,20,16],[6,10,2],[3,0,1],[9,7,13],[2,8,4,0],[0,4,5,1],[1,5,11,7],[7,11,17,13],[13,17,22,18],[18,22,24,21],[21,24,23,20],[20,23,19,16],[16,19,14,10],[10,14,8,2],[15,9,13,18],[12,15,21,20],[6,12,16,10],[3,6,2,0],[9,3,1,7],[9,15,12,6,3],[22,17,11,5,4,8,14,19,23,24]]};let t=n.type&&(n.type<0||n.type>=e.length)?0:n.type||0,i=n.size,r=n.sizeX||i||1,s=n.sizeY||i||1,a=n.sizeZ||i||1,o=n.custom||e[t],l=o.face.length,c=n.faceUV||new Array(l),f=n.faceColors,d=n.flat===void 0?!0:n.flat,h=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,u=[],m=[],_=[],p=[],g=[],v=0,T=0,S=[],E,A,R,M,y,C,D,w;if(d)for(A=0;A{ke();zt();Fi();Tr();fn();Me.CreatePolyhedron=r4;q.CreatePolyhedron=(n,e,t)=>Iv(n,e,t)});function n4(n){let e=n.sideOrientation||Me.DEFAULTSIDE,t=n.radius||1,i=n.flat===void 0?!0:n.flat,r=(n.subdivisions||4)|0,s=n.radiusX||t,a=n.radiusY||t,o=n.radiusZ||t,l=(1+Math.sqrt(5))/2,c=[-1,l,-0,1,l,0,-1,-l,0,1,-l,0,0,-1,-l,0,1,-l,0,-1,l,0,1,l,l,0,1,l,0,-1,-l,0,1,-l,0,-1],f=[0,11,5,0,5,1,0,1,7,0,7,10,12,22,23,1,5,20,5,11,4,23,22,13,22,18,6,7,1,8,14,21,4,14,4,2,16,13,6,15,6,19,3,8,9,4,21,5,13,17,23,6,13,22,19,6,18,9,8,1],d=[0,1,2,3,4,5,6,7,8,9,10,11,0,2,3,3,3,4,7,8,9,9,10,11],h=[5,1,3,1,6,4,0,0,5,3,4,2,2,2,4,0,2,0,1,1,6,0,6,2,0,4,3,3,4,4,3,1,4,2,4,4,0,2,1,1,2,2,3,3,1,3,2,4],u=138/1024,m=239/1024,_=60/1024,p=26/1024,g=-40/1024,v=20/1024,T=[0,0,0,0,1,0,0,1,1,0,0,0,1,1,0,0,1,1,1,0],S=[],E=[],A=[],R=[],M=0,y=new Array(3),C=new Array(3),D;for(D=0;D<3;D++)y[D]=b.Zero(),C[D]=we.Zero();for(let G=0;G<20;G++){for(D=0;D<3;D++){let N=f[3*G+D];y[D].copyFromFloats(c[3*d[N]],c[3*d[N]+1],c[3*d[N]+2]),y[D].normalize(),C[D].copyFromFloats(h[2*N]*u+_+T[G]*g,h[2*N+1]*m+p+T[G]*v)}let O=(N,B,V,Q)=>{let K=b.Lerp(y[0],y[2],B/r),J=b.Lerp(y[1],y[2],B/r),z=r===B?y[2]:b.Lerp(K,J,N/(r-B));z.normalize();let Y;if(i){let oe=b.Lerp(y[0],y[2],Q/r),ve=b.Lerp(y[1],y[2],Q/r);Y=b.Lerp(oe,ve,V/(r-Q))}else Y=new b(z.x,z.y,z.z);Y.x/=s,Y.y/=a,Y.z/=o,Y.normalize();let de=we.Lerp(C[0],C[2],B/r),ge=we.Lerp(C[1],C[2],B/r),Ue=r===B?C[2]:we.Lerp(de,ge,N/(r-B));E.push(z.x*s,z.y*a,z.z*o),A.push(Y.x,Y.y,Y.z),R.push(Ue.x,yt?1-Ue.y:Ue.y),S.push(M),M++};for(let N=0;N{ke();Fi();Tr();fn();Me.CreateIcoSphere=n4;q.CreateIcoSphere=(n,e,t)=>DL(n,e,t)});function LL(n,e,t){var V,Q,K,J,z;let i=!!e.skeleton,r=!!((V=e.morphTargetManager)!=null&&V.numTargets),s=t.localMode||i,a=e.getIndices(),o=i||r?e.getPositionData(!0,!0):e.getVerticesData(L.PositionKind),l=i||r?e.getNormalsData(!0,!0):e.getVerticesData(L.NormalKind),c=s?i?e.getVerticesData(L.PositionKind):o:null,f=s?i?e.getVerticesData(L.NormalKind):l:null,d=e.getVerticesData(L.UVKind),h=i?e.getVerticesData(L.MatricesIndicesKind):null,u=i?e.getVerticesData(L.MatricesWeightsKind):null,m=i?e.getVerticesData(L.MatricesIndicesExtraKind):null,_=i?e.getVerticesData(L.MatricesWeightsExtraKind):null,p=t.position||b.Zero(),g=t.normal||b.Up(),v=t.size||b.One(),T=t.angle||0;if(!g){let Y=new b(0,0,1),de=e.getScene().activeCamera,ge=b.TransformCoordinates(Y,de.getWorldMatrix());g=de.globalPosition.subtract(ge)}let S=-Math.atan2(g.z,g.x)-Math.PI/2,E=Math.sqrt(g.x*g.x+g.z*g.z),A=Math.atan2(g.y,E),R=new Me;R.indices=[],R.positions=[],R.normals=[],R.uvs=[],R.matricesIndices=i?[]:null,R.matricesWeights=i?[]:null,R.matricesIndicesExtra=m?[]:null,R.matricesWeightsExtra=_?[]:null;let M=0,y=(Y,de)=>{let ge=new TR;if(!a||!o||!l)return ge;let Ue=a[Y];if(ge.vertexIdx=Ue*3,ge.vertexIdxForBones=Ue*4,ge.position=new b(o[Ue*3],o[Ue*3+1],o[Ue*3+2]),b.TransformCoordinatesToRef(ge.position,de,ge.position),ge.normal=new b(l[Ue*3],l[Ue*3+1],l[Ue*3+2]),b.TransformNormalToRef(ge.normal,de,ge.normal),t.captureUVS&&d){let oe=d[Ue*2+1];ge.uv=new we(d[Ue*2],yt?1-oe:oe)}return ge},C=[0,0,0,0],D=(Y,de)=>{if(Y.length===0)return Y;let ge=.5*Math.abs(b.Dot(v,de)),Ue=(ie,ue,Pe,me)=>{for(let be=0;be{var ye,Be,Je,st,Ie,Le,lt,dt,qe,et,wt,$t,bi,ae,tt,Ce;let Pe=b.GetClipFactor(ie.position,ue.position,de,ge),me=C,be=C;if(h&&u){let Ze=ie.matrixIndicesOverride?0:ie.vertexIdxForBones,rt=(ye=ie.matrixIndicesOverride)!=null?ye:h,Ve=(Be=ie.matrixWeightsOverride)!=null?Be:u,Mt=ue.matrixIndicesOverride?0:ue.vertexIdxForBones,Yt=(Je=ue.matrixIndicesOverride)!=null?Je:h,pr=(st=ue.matrixWeightsOverride)!=null?st:u;me=[0,0,0,0],be=[0,0,0,0];let Ai=0;for(let Ar=0;Ar<4;++Ar)if(Ve[Ze+Ar]>0){let ne=Ue(Yt,rt[Ze+Ar],Mt,4);me[Ai]=rt[Ze+Ar],be[Ai]=So(Ve[Ze+Ar],ne>=0?pr[ne]:0,Pe),Ai++}for(let Ar=0;Ar<4&&Ai<4;++Ar){let ne=Yt[Mt+Ar];Ue(rt,ne,Ze,4)===-1&&(me[Ai]=ne,be[Ai]=So(0,pr[Mt+Ar],Pe),Ai++)}let Rn=be[0]+be[1]+be[2]+be[3];be[0]/=Rn,be[1]/=Rn,be[2]/=Rn,be[3]/=Rn}let De=ie.localPositionOverride?ie.localPositionOverride[0]:(Ie=c==null?void 0:c[ie.vertexIdx])!=null?Ie:0,ut=ie.localPositionOverride?ie.localPositionOverride[1]:(Le=c==null?void 0:c[ie.vertexIdx+1])!=null?Le:0,Ye=ie.localPositionOverride?ie.localPositionOverride[2]:(lt=c==null?void 0:c[ie.vertexIdx+2])!=null?lt:0,je=ue.localPositionOverride?ue.localPositionOverride[0]:(dt=c==null?void 0:c[ue.vertexIdx])!=null?dt:0,Qt=ue.localPositionOverride?ue.localPositionOverride[1]:(qe=c==null?void 0:c[ue.vertexIdx+1])!=null?qe:0,Pt=ue.localPositionOverride?ue.localPositionOverride[2]:(et=c==null?void 0:c[ue.vertexIdx+2])!=null?et:0,Ti=ie.localNormalOverride?ie.localNormalOverride[0]:(wt=f==null?void 0:f[ie.vertexIdx])!=null?wt:0,se=ie.localNormalOverride?ie.localNormalOverride[1]:($t=f==null?void 0:f[ie.vertexIdx+1])!=null?$t:0,Di=ie.localNormalOverride?ie.localNormalOverride[2]:(bi=f==null?void 0:f[ie.vertexIdx+2])!=null?bi:0,ii=ue.localNormalOverride?ue.localNormalOverride[0]:(ae=f==null?void 0:f[ue.vertexIdx])!=null?ae:0,yi=ue.localNormalOverride?ue.localNormalOverride[1]:(tt=f==null?void 0:f[ue.vertexIdx+1])!=null?tt:0,ct=ue.localNormalOverride?ue.localNormalOverride[2]:(Ce=f==null?void 0:f[ue.vertexIdx+2])!=null?Ce:0,Yi=Ti+(ii-Ti)*Pe,X=se+(yi-se)*Pe,U=Di+(ct-Di)*Pe,he=Math.sqrt(Yi*Yi+X*X+U*U);return new TR(b.Lerp(ie.position,ue.position,Pe),b.Lerp(ie.normal,ue.normal,Pe).normalize(),we.Lerp(ie.uv,ue.uv,Pe),-1,-1,c?[De+(je-De)*Pe,ut+(Qt-ut)*Pe,Ye+(Pt-Ye)*Pe]:null,f?[Yi/he,X/he,U/he]:null,me,be)},ve=null;Y.length>3&&(ve=[]);for(let ie=0;ie0,Qt=ut>0,Pt=Ye>0;switch((je?1:0)+(Qt?1:0)+(Pt?1:0)){case 0:Y.length>3?(ve.push(Y[ie]),ve.push(Y[ie+1]),ve.push(Y[ie+2])):ve=Y;break;case 1:if(ve=ve!=null?ve:new Array,je&&(ue=Y[ie+1],Pe=Y[ie+2],me=oe(Y[ie],ue),be=oe(Y[ie],Pe)),Qt){ue=Y[ie],Pe=Y[ie+2],me=oe(Y[ie+1],ue),be=oe(Y[ie+1],Pe),ve.push(me),ve.push(Pe.clone()),ve.push(ue.clone()),ve.push(Pe.clone()),ve.push(me.clone()),ve.push(be);break}Pt&&(ue=Y[ie],Pe=Y[ie+1],me=oe(Y[ie+2],ue),be=oe(Y[ie+2],Pe)),ue&&Pe&&me&&be&&(ve.push(ue.clone()),ve.push(Pe.clone()),ve.push(me),ve.push(be),ve.push(me.clone()),ve.push(Pe.clone()));break;case 2:ve=ve!=null?ve:new Array,je||(ue=Y[ie].clone(),Pe=oe(ue,Y[ie+1]),me=oe(ue,Y[ie+2]),ve.push(ue),ve.push(Pe),ve.push(me)),Qt||(ue=Y[ie+1].clone(),Pe=oe(ue,Y[ie+2]),me=oe(ue,Y[ie]),ve.push(ue),ve.push(Pe),ve.push(me)),Pt||(ue=Y[ie+2].clone(),Pe=oe(ue,Y[ie]),me=oe(ue,Y[ie+1]),ve.push(ue),ve.push(Pe),ve.push(me));break;case 3:break}}return ve},w=e instanceof q?e:null,G=w==null?void 0:w._thinInstanceDataStorage.matrixData,O=(w==null?void 0:w.thinInstanceCount)||1,N=$.Matrix[0];N.copyFrom(Z.IdentityReadOnly);for(let Y=0;Y{ke();jn();Fi();Zi();Tr();fn();Ode=new b(1,0,0),Nde=new b(-1,0,0),wde=new b(0,1,0),Fde=new b(0,-1,0),Bde=new b(0,0,1),Ude=new b(0,0,-1),TR=class n{constructor(e=b.Zero(),t=b.Up(),i=we.Zero(),r=0,s=0,a=null,o=null,l=null,c=null){this.position=e,this.normal=t,this.uv=i,this.vertexIdx=r,this.vertexIdxForBones=s,this.localPositionOverride=a,this.localNormalOverride=o,this.matrixIndicesOverride=l,this.matrixWeightsOverride=c}clone(){var e,t,i,r;return new n(this.position.clone(),this.normal.clone(),this.uv.clone(),this.vertexIdx,this.vertexIdxForBones,(e=this.localPositionOverride)==null?void 0:e.slice(),(t=this.localNormalOverride)==null?void 0:t.slice(),(i=this.matrixIndicesOverride)==null?void 0:i.slice(),(r=this.matrixWeightsOverride)==null?void 0:r.slice())}};q.CreateDecal=(n,e,t,i,r,s)=>LL(n,e,{position:t,normal:i,size:r,angle:s})});function o4(n={subdivisions:2,tessellation:16,height:1,radius:.25,capSubdivisions:6}){let e=Math.max(n.subdivisions?n.subdivisions:2,1)|0,t=Math.max(n.tessellation?n.tessellation:16,3)|0,i=Math.max(n.height?n.height:1,0),r=Math.max(n.radius?n.radius:.25,0),s=Math.max(n.capSubdivisions?n.capSubdivisions:6,1)|0,a=t,o=e,l=Math.max(n.radiusTop?n.radiusTop:r,0),c=Math.max(n.radiusBottom?n.radiusBottom:r,0),f=i-(l+c),d=0,h=2*Math.PI,u=Math.max(n.topCapSubdivisions?n.topCapSubdivisions:s,1),m=Math.max(n.bottomCapSubdivisions?n.bottomCapSubdivisions:s,1),_=Math.acos((c-l)/i),p=[],g=[],v=[],T=[],S=0,E=[],A=f*.5,R=Math.PI*.5,M,y,C=b.Zero(),D=b.Zero(),w=Math.cos(_),G=Math.sin(_),O=new we(l*G,A+l*w).subtract(new we(c*G,-A+c*w)).length(),N=l*_+O+c*(R-_),B=0;for(y=0;y<=u;y++){let J=[],z=R-_*(y/u);B+=l*_/u;let Y=Math.cos(z),de=Math.sin(z),ge=Y*l;for(M=0;M<=a;M++){let Ue=M/a,oe=Ue*h+d,ve=Math.sin(oe),ie=Math.cos(oe);D.x=ge*ve,D.y=A+de*l,D.z=ge*ie,g.push(D.x,D.y,D.z),C.set(Y*ve,de,Y*ie),v.push(C.x,C.y,C.z),T.push(Ue,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}let V=i-l-c+w*l-w*c,Q=G*(c-l)/V;for(y=1;y<=o;y++){let J=[];B+=O/o;let z=G*(y*(c-l)/o+l);for(M=0;M<=a;M++){let Y=M/a,de=Y*h+d,ge=Math.sin(de),Ue=Math.cos(de);D.x=z*ge,D.y=A+w*l-y*V/o,D.z=z*Ue,g.push(D.x,D.y,D.z),C.set(ge,Q,Ue).normalize(),v.push(C.x,C.y,C.z),T.push(Y,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}for(y=1;y<=m;y++){let J=[],z=R-_-(Math.PI-_)*(y/m);B+=c*_/m;let Y=Math.cos(z),de=Math.sin(z),ge=Y*c;for(M=0;M<=a;M++){let Ue=M/a,oe=Ue*h+d,ve=Math.sin(oe),ie=Math.cos(oe);D.x=ge*ve,D.y=-A+de*c,D.z=ge*ie,g.push(D.x,D.y,D.z),C.set(Y*ve,de,Y*ie),v.push(C.x,C.y,C.z),T.push(Ue,yt?B/N:1-B/N),J.push(S),S++}E.push(J)}for(M=0;M{Tr();ke();Fi();fn();q.CreateCapsule=(n,e,t)=>OL(n,e,t);Me.CreateCapsule=o4});var nr,c4=I(()=>{Lt();ke();nr=class n{constructor(e=0,t=0){this.x=e,this.y=t,e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("x is not an integer, floor(x) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("y is not an integer, floor(y) used"))}clone(){return new n(this.x,this.y)}rotate60About(e){let t=this.x;return this.x=e.x+e.y-this.y,this.y=t+this.y-e.x,this}rotateNeg60About(e){let t=this.x;return this.x=t+this.y-e.y,this.y=e.x+e.y-t,this}rotate120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m not an integer only floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n not an integer only floor(n) used"));let i=this.x;return this.x=e-i-this.y,this.y=t+i,this}rotateNeg120(e,t){e!==Math.floor(e)&&(e=Math.floor(e),ee.Warn("m is not an integer, floor(m) used")),t!==Math.floor(t)&&(t=Math.floor(t),ee.Warn("n is not an integer, floor(n) used"));let i=this.x;return this.x=this.y-t,this.y=e+t-i-this.y,this}toCartesianOrigin(e,t){let i=b.Zero();return i.x=e.x+2*this.x*t+this.y*t,i.y=e.y+Math.sqrt(3)*this.y*t,i}static Zero(){return new n(0,0)}}});var xp,yv,Rp,NL=I(()=>{ke();jn();Kn();c4();xp=class{constructor(){this.cartesian=[],this.vertices=[],this.max=[],this.min=[],this.closestTo=[],this.innerFacets=[],this.isoVecsABOB=[],this.isoVecsOBOA=[],this.isoVecsBAOA=[],this.vertexTypes=[],this.IDATA=new yv("icosahedron","Regular",[[0,Mr,-1],[-Mr,1,0],[-1,0,-Mr],[1,0,-Mr],[Mr,1,0],[0,Mr,1],[-1,0,Mr],[-Mr,-1,0],[0,-Mr,-1],[Mr,-1,0],[1,0,Mr],[0,-Mr,1]],[[0,2,1],[0,3,2],[0,4,3],[0,5,4],[0,1,5],[7,6,1],[8,7,2],[9,8,3],[10,9,4],[6,10,5],[2,7,1],[3,8,2],[4,9,3],[5,10,4],[1,6,5],[11,6,7],[11,7,8],[11,8,9],[11,9,10],[11,10,6]])}setIndices(){let e=12,t={},i=this.m,r=this.n,s=i;r!==0&&(s=cx(i,r));let a=i/s,o=r/s,l,c,f,d,h,u=nr.Zero(),m=new nr(i,r),_=new nr(-r,i+r),p=nr.Zero(),g=nr.Zero(),v=nr.Zero(),T=[],S,E,A,R,M=[],y=this.vertByDist,C=(D,w,G,O)=>{S=D+"|"+G,E=w+"|"+O,S in t||E in t?S in t&&!(E in t)?t[E]=t[S]:E in t&&!(S in t)&&(t[S]=t[E]):(t[S]=e,t[E]=e,e++),y[G][0]>2?M[t[S]]=[-y[G][0],y[G][1],t[S]]:M[t[S]]=[T[y[G][0]],y[G][1],t[S]]};this.IDATA.edgematch=[[1,"B"],[2,"B"],[3,"B"],[4,"B"],[0,"B"],[10,"O",14,"A"],[11,"O",10,"A"],[12,"O",11,"A"],[13,"O",12,"A"],[14,"O",13,"A"],[0,"O"],[1,"O"],[2,"O"],[3,"O"],[4,"O"],[19,"B",5,"A"],[15,"B",6,"A"],[16,"B",7,"A"],[17,"B",8,"A"],[18,"B",9,"A"]];for(let D=0;D<20;D++){if(T=this.IDATA.face[D],f=T[2],d=T[1],h=T[0],A=u.x+"|"+u.y,S=D+"|"+A,S in t||(t[S]=f,M[f]=[T[y[A][0]],y[A][1]]),A=m.x+"|"+m.y,S=D+"|"+A,S in t||(t[S]=d,M[d]=[T[y[A][0]],y[A][1]]),A=_.x+"|"+_.y,S=D+"|"+A,S in t||(t[S]=h,M[h]=[T[y[A][0]],y[A][1]]),l=this.IDATA.edgematch[D][0],c=this.IDATA.edgematch[D][1],c==="B")for(let w=1;w2?M[t[S]]=[-y[A][0],y[A][1],t[S]]:M[t[S]]=[T[y[A][0]],y[A][1],t[S]])}this.closestTo=M,this.vecToidx=t}calcCoeffs(){let e=this.m,t=this.n,i=Math.sqrt(3)/3,r=e*e+t*t+e*t;this.coau=(e+t)/r,this.cobu=-t/r,this.coav=-i*(e-t)/r,this.cobv=i*(2*e+t)/r}createInnerFacets(){let e=this.m,t=this.n;for(let i=0;i0&&r0){let E=cx(e,t),A=e/E,R=t/E;for(let y=1;yE.x-A.x),i.sort((E,A)=>E.y-A.y);let o=new Array(e+t+1),l=new Array(e+t+1);for(let E=0;E{let R=E.clone();return A==="A"&&R.rotateNeg120(e,t),A==="B"&&R.rotate120(e,t),R.x<0?R.y:R.x+R.y},u=[],m=[],_=[],p=[],g={},v=[],T=-1,S=-1;for(let E=0;EE[2]-A[2]),v.sort((E,A)=>E[3]-A[3]),v.sort((E,A)=>E[1]-A[1]),v.sort((E,A)=>E[0]-A[0]);for(let E=0;Et.vecToidx[e+r]))}mapABOBtoDATA(e,t){let i=t.IDATA.edgematch[e][0];for(let r=0;r-1?i[a][1]>0&&t[i[a][0]].push([a,i[a][1]]):t[12].push([a,i[a][0]]);let r=[];for(let a=0;a<12;a++)r[a]=a;let s=12;for(let a=0;a<12;a++){t[a].sort((o,l)=>o[1]-l[1]);for(let o=0;oa[3]-o[3]);for(let a=0;a0;)s=t[l],this.face[s].indexOf(o)>-1?(a=(this.face[s].indexOf(o)+1)%3,o=this.face[s][a],i.push(o),r.push(s),t.splice(l,1),l=0):l++;return this.adjacentFaces.push(i),r}toGoldbergPolyhedronData(){let e=new yv("GeoDual","Goldberg",[],[]);e.name="GD dual";let t=this.vertex.length,i=new Array(t);for(let c=0;ci){let c=r;r=i,i=c,ee.Warn("n > m therefore m and n swapped")}let s=new xp;s.build(i,r);let o={custom:Rp.BuildGeodesicData(s),size:e.size,sizeX:e.sizeX,sizeY:e.sizeY,sizeZ:e.sizeZ,faceUV:e.faceUV,faceColors:e.faceColors,flat:e.flat,updatable:e.updatable,sideOrientation:e.sideOrientation,frontUVs:e.frontUVs,backUVs:e.backUVs};return Iv(n,o,t)}var d4=I(()=>{PL();Lt();NL()});var Cv,h4=I(()=>{ke();Zi();Fi();zt();Lt();q._GoldbergMeshParser=(n,e)=>Cv.Parse(n,e);Cv=class n extends q{constructor(){super(...arguments),this.goldbergData={faceColors:[],faceCenters:[],faceZaxis:[],faceXaxis:[],faceYaxis:[],nbSharedFaces:0,nbUnsharedFaces:0,nbFaces:0,nbFacesAtPole:0,adjacentFaces:[]}}relatedGoldbergFace(e,t){return t===void 0?(e>this.goldbergData.nbUnsharedFaces-1&&(ee.Warn("Maximum number of unshared faces used"),e=this.goldbergData.nbUnsharedFaces-1),this.goldbergData.nbUnsharedFaces+e):(e>11&&(ee.Warn("Last pole used"),e=11),t>this.goldbergData.nbFacesAtPole-1&&(ee.Warn("Maximum number of faces at a pole used"),t=this.goldbergData.nbFacesAtPole-1),12+e*this.goldbergData.nbFacesAtPole+t)}_changeGoldbergFaceColors(e){for(let i=0;i1&&(d=1),c.push(d,h);for(let u=0;u<6;u++)d=a.x+o*Math.cos(l+u*Math.PI/3),h=a.y+o*Math.sin(l+u*Math.PI/3),d<0&&(d=0),d>1&&(d=1),f.push(d,h);for(let u=r;uft.FromArray(s)),i.faceCenters=i.faceCenters.map(s=>b.FromArray(s)),i.faceZaxis=i.faceZaxis.map(s=>b.FromArray(s)),i.faceXaxis=i.faceXaxis.map(s=>b.FromArray(s)),i.faceYaxis=i.faceYaxis.map(s=>b.FromArray(s));let r=new n(e.name,t);return r.goldbergData=i,r}}});function Vde(n,e){let t=n.size,i=n.sizeX||t||1,r=n.sizeY||t||1,s=n.sizeZ||t||1,a=n.sideOrientation===0?0:n.sideOrientation||Me.DEFAULTSIDE,o=[],l=[],c=[],f=[],d=1/0,h=-1/0,u=1/0,m=-1/0;for(let g=0;go){let m=l;l=o,o=m,ee.Warn("n > m therefore m and n swapped")}let c=new xp;c.build(o,l);let f=Rp.BuildGeodesicData(c),d=f.toGoldbergPolyhedronData(),h=new Cv(n,t);e.sideOrientation=q._GetDefaultSideOrientation(e.sideOrientation),h._originalBuilderSideOrientation=e.sideOrientation,Vde(e,d).applyToMesh(h,e.updatable),h.goldbergData.nbSharedFaces=f.sharedNodes,h.goldbergData.nbUnsharedFaces=f.poleNodes,h.goldbergData.adjacentFaces=f.adjacentFaces,h.goldbergData.nbFaces=h.goldbergData.nbSharedFaces+h.goldbergData.nbUnsharedFaces,h.goldbergData.nbFacesAtPole=(h.goldbergData.nbUnsharedFaces-12)/12;for(let m=0;m{ke();zt();Fi();Tr();Lt();NL();h4();fn()});function Gde(n,e,t,i,r,s){let a=s.glyphs[n]||s.glyphs["?"];if(!a)return null;let o=new wL(r);if(a.o){let l=a.o.split(" ");for(let c=0,f=l.length;c{ph();ke();Fi();Vf();RL();wL=class{constructor(e){this._paths=[],this._tempPaths=[],this._holes=[],this._resolution=e}moveTo(e,t){this._currentPath=new Om(e,t),this._tempPaths.push(this._currentPath)}lineTo(e,t){this._currentPath.addLineTo(e,t)}quadraticCurveTo(e,t,i,r){this._currentPath.addQuadraticCurveTo(e,t,i,r,this._resolution)}bezierCurveTo(e,t,i,r,s,a){this._currentPath.addBezierCurveTo(e,t,i,r,s,a,this._resolution)}extractHoles(){for(let e of this._tempPaths)e.area()>0?this._holes.push(e):this._paths.push(e);if(!this._paths.length&&this._holes.length){let e=this._holes;this._holes=this._paths,this._paths=e}this._tempPaths.length=0}get paths(){return this._paths}get holes(){return this._holes}}});var xs,FL=I(()=>{hv();GH();sL();KH();ZH();QH();JH();tz();jz();RL();$z();Jz();t4();aL();rL();i4();PL();s4();a4();l4();d4();m4();_4();xs={CreateBox:nL,CreateTiledBox:YH,CreateSphere:lL,CreateDisc:$D,CreateIcoSphere:DL,CreateRibbon:Bo,CreateCylinder:cL,CreateTorus:fL,CreateTorusKnot:dL,CreateLineSystem:SL,CreateLines:TL,CreateDashedLines:AL,ExtrudeShape:bL,ExtrudeShapeCustom:ML,CreateLathe:IL,CreateTiledPlane:zH,CreatePlane:yL,CreateGround:eL,CreateTiledGround:tL,CreateGroundFromHeightMap:iL,CreatePolygon:SR,ExtrudePolygon:Mv,CreateTube:CL,CreatePolyhedron:Iv,CreateGeodesic:f4,CreateGoldberg:u4,CreateDecal:LL,CreateCapsule:OL,CreateText:p4}});var $s,AR=I(()=>{$s=class{constructor(){this.previousWorldMatrices={},this.previousBones={}}static AddUniforms(e){e.push("previousWorld","previousViewProjection","mPreviousBones")}static AddSamplers(e){}bindForSubMesh(e,t,i,r,s){if(t.prePassRenderer&&t.prePassRenderer.enabled&&t.prePassRenderer.currentRTisSceneRT&&(t.prePassRenderer.getIndex(2)!==-1||t.prePassRenderer.getIndex(11)!==-1)){this.previousWorldMatrices[i.uniqueId]||(this.previousWorldMatrices[i.uniqueId]=r.clone()),this.previousViewProjection||(this.previousViewProjection=t.getTransformMatrix().clone(),this.currentViewProjection=t.getTransformMatrix().clone());let a=t.getEngine();this.currentViewProjection.updateFlag!==t.getTransformMatrix().updateFlag?(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection),this.currentViewProjection.copyFrom(t.getTransformMatrix())):this._lastUpdateFrameId!==a.frameId&&(this._lastUpdateFrameId=a.frameId,this.previousViewProjection.copyFrom(this.currentViewProjection)),e.setMatrix("previousWorld",this.previousWorldMatrices[i.uniqueId]),e.setMatrix("previousViewProjection",this.previousViewProjection),this.previousWorldMatrices[i.uniqueId]=r.clone()}}}});var Lr,ja=I(()=>{Lr=class{constructor(e){if(this.VERTEXOUTPUT_INVARIANT=!1,this._keys=[],this._isDirty=!0,this._areLightsDirty=!0,this._areLightsDisposed=!1,this._areAttributesDirty=!0,this._areTexturesDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._normals=!1,this._uvs=!1,this._needNormals=!1,this._needUVs=!1,this._externalProperties=e,e)for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&this._setDefaultValue(t)}get isDirty(){return this._isDirty}markAsProcessed(){this._isDirty=!1,this._areAttributesDirty=!1,this._areTexturesDirty=!1,this._areFresnelDirty=!1,this._areLightsDirty=!1,this._areLightsDisposed=!1,this._areMiscDirty=!1,this._arePrePassDirty=!1,this._areImageProcessingDirty=!1}markAsUnprocessed(){this._isDirty=!0}markAllAsDirty(){this._areTexturesDirty=!0,this._areAttributesDirty=!0,this._areLightsDirty=!0,this._areFresnelDirty=!0,this._areMiscDirty=!0,this._arePrePassDirty=!0,this._areImageProcessingDirty=!0,this._isDirty=!0}markAsImageProcessingDirty(){this._areImageProcessingDirty=!0,this._isDirty=!0}markAsLightDirty(e=!1){this._areLightsDirty=!0,this._areLightsDisposed=this._areLightsDisposed||e,this._isDirty=!0}markAsAttributesDirty(){this._areAttributesDirty=!0,this._isDirty=!0}markAsTexturesDirty(){this._areTexturesDirty=!0,this._isDirty=!0}markAsFresnelDirty(){this._areFresnelDirty=!0,this._isDirty=!0}markAsMiscDirty(){this._areMiscDirty=!0,this._isDirty=!0}markAsPrePassDirty(){this._arePrePassDirty=!0,this._isDirty=!0}rebuild(){this._keys.length=0;for(let e of Object.keys(this))e[0]!=="_"&&this._keys.push(e);if(this._externalProperties)for(let e in this._externalProperties)this._keys.indexOf(e)===-1&&this._keys.push(e)}isEqual(e){if(this._keys.length!==e._keys.length)return!1;for(let t=0;t{ja()});function Xde(){Hde.length=0,zde=!1,Se.OnEventObservable.remove(g4),g4=null}var Wde,Mp,Hde,zde,g4,v4=I(()=>{ts();Gi();jA();k();Wde=new RegExp("^([gimus]+)!"),Mp=class n{constructor(e){this._plugins=[],this._activePlugins=[],this._activePluginsForExtraEvents=[],this._material=e,this._scene=e.getScene(),this._engine=this._scene.getEngine()}_addPlugin(e){for(let r=0;rthis._handlePluginEvent(r,s),this._plugins.push(e),this._plugins.sort((r,s)=>r.priority-s.priority),this._codeInjectionPoints={};let i={};i[n._MaterialPluginClassToMainDefine[t]]={type:"boolean",default:!0};for(let r of this._plugins)r.collectDefines(i),this._collectPointNames("vertex",r.getCustomCode("vertex",this._material.shaderLanguage)),this._collectPointNames("fragment",r.getCustomCode("fragment",this._material.shaderLanguage));return this._defineNamesFromPlugins=i,!0}_activatePlugin(e){this._activePlugins.indexOf(e)===-1&&(this._activePlugins.push(e),this._activePlugins.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventIsReadyForSubMesh=this._handlePluginEventIsReadyForSubMesh.bind(this),this._material._callbackPluginEventPrepareDefinesBeforeAttributes=this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this),this._material._callbackPluginEventPrepareDefines=this._handlePluginEventPrepareDefines.bind(this),this._material._callbackPluginEventBindForSubMesh=this._handlePluginEventBindForSubMesh.bind(this),e.registerForExtraEvents&&(this._activePluginsForExtraEvents.push(e),this._activePluginsForExtraEvents.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventHasRenderTargetTextures=this._handlePluginEventHasRenderTargetTextures.bind(this),this._material._callbackPluginEventFillRenderTargetTextures=this._handlePluginEventFillRenderTargetTextures.bind(this),this._material._callbackPluginEventHardBindForSubMesh=this._handlePluginEventHardBindForSubMesh.bind(this)))}getPlugin(e){for(let t=0;t0&&r.uniforms.push(...this._uniformList),this._samplerList.length>0&&r.samplers.push(...this._samplerList),this._uboList.length>0&&r.uniformBuffersNames.push(...this._uboList),r.customCode=this._injectCustomCode(r,r.customCode);break}case 8:{let r=t;this._uboDeclaration="",this._vertexDeclaration="",this._fragmentDeclaration="",this._uniformList=[],this._samplerList=[],this._uboList=[];let s=this._material.shaderLanguage===1;for(let a of this._plugins){let o=a.getUniforms(this._material.shaderLanguage);if(o){if(o.ubo)for(let l of o.ubo){if(l.size&&l.type){let c=(i=l.arraySize)!=null?i:0;if(r.ubo.addUniform(l.name,l.size,c),s){let f;switch(l.type){case"mat4":f="mat4x4f";break;case"float":f="f32";break;default:f=`${l.type}f`;break}c>0?this._uboDeclaration+=`uniform ${l.name}: array<${f}, ${c}>; +`);break}}return e}}});function bp(n){return class extends n{constructor(){super(...arguments),this.IMAGEPROCESSING=!1,this.VIGNETTE=!1,this.VIGNETTEBLENDMODEMULTIPLY=!1,this.VIGNETTEBLENDMODEOPAQUE=!1,this.TONEMAPPING=0,this.CONTRAST=!1,this.COLORCURVES=!1,this.COLORGRADING=!1,this.COLORGRADING3D=!1,this.SAMPLER3DGREENDEPTH=!1,this.SAMPLER3DBGRMAP=!1,this.DITHER=!1,this.IMAGEPROCESSINGPOSTPROCESS=!1,this.SKIPFINALCOLORCLAMP=!1,this.EXPOSURE=!1}}}var xR=I(()=>{ja()});function Xde(){Hde.length=0,zde=!1,Se.OnEventObservable.remove(g4),g4=null}var Wde,Mp,Hde,zde,g4,v4=I(()=>{ts();Gi();ZA();k();Wde=new RegExp("^([gimus]+)!"),Mp=class n{constructor(e){this._plugins=[],this._activePlugins=[],this._activePluginsForExtraEvents=[],this._material=e,this._scene=e.getScene(),this._engine=this._scene.getEngine()}_addPlugin(e){for(let r=0;rthis._handlePluginEvent(r,s),this._plugins.push(e),this._plugins.sort((r,s)=>r.priority-s.priority),this._codeInjectionPoints={};let i={};i[n._MaterialPluginClassToMainDefine[t]]={type:"boolean",default:!0};for(let r of this._plugins)r.collectDefines(i),this._collectPointNames("vertex",r.getCustomCode("vertex",this._material.shaderLanguage)),this._collectPointNames("fragment",r.getCustomCode("fragment",this._material.shaderLanguage));return this._defineNamesFromPlugins=i,!0}_activatePlugin(e){this._activePlugins.indexOf(e)===-1&&(this._activePlugins.push(e),this._activePlugins.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventIsReadyForSubMesh=this._handlePluginEventIsReadyForSubMesh.bind(this),this._material._callbackPluginEventPrepareDefinesBeforeAttributes=this._handlePluginEventPrepareDefinesBeforeAttributes.bind(this),this._material._callbackPluginEventPrepareDefines=this._handlePluginEventPrepareDefines.bind(this),this._material._callbackPluginEventBindForSubMesh=this._handlePluginEventBindForSubMesh.bind(this),e.registerForExtraEvents&&(this._activePluginsForExtraEvents.push(e),this._activePluginsForExtraEvents.sort((t,i)=>t.priority-i.priority),this._material._callbackPluginEventHasRenderTargetTextures=this._handlePluginEventHasRenderTargetTextures.bind(this),this._material._callbackPluginEventFillRenderTargetTextures=this._handlePluginEventFillRenderTargetTextures.bind(this),this._material._callbackPluginEventHardBindForSubMesh=this._handlePluginEventHardBindForSubMesh.bind(this)))}getPlugin(e){for(let t=0;t0&&r.uniforms.push(...this._uniformList),this._samplerList.length>0&&r.samplers.push(...this._samplerList),this._uboList.length>0&&r.uniformBuffersNames.push(...this._uboList),r.customCode=this._injectCustomCode(r,r.customCode);break}case 8:{let r=t;this._uboDeclaration="",this._vertexDeclaration="",this._fragmentDeclaration="",this._uniformList=[],this._samplerList=[],this._uboList=[];let s=this._material.shaderLanguage===1;for(let a of this._plugins){let o=a.getUniforms(this._material.shaderLanguage);if(o){if(o.ubo)for(let l of o.ubo){if(l.size&&l.type){let c=(i=l.arraySize)!=null?i:0;if(r.ubo.addUniform(l.name,l.size,c),s){let f;switch(l.type){case"mat4":f="mat4x4f";break;case"float":f="f32";break;default:f=`${l.type}f`;break}c>0?this._uboDeclaration+=`uniform ${l.name}: array<${f}, ${c}>; `:this._uboDeclaration+=`uniform ${l.name}: ${f}; `}else this._uboDeclaration+=`${l.type} ${l.name}${c>0?`[${c}]`:""}; `}this._uniformList.push(l.name)}o.vertex&&(this._vertexDeclaration+=o.vertex+` @@ -5141,7 +5141,7 @@ gl_FragColor=color; `),o.externalUniforms&&this._uniformList.push(...o.externalUniforms)}a.getSamplers(this._samplerList),a.getUniformBuffersNames(this._uboList)}break}}}_collectPointNames(e,t){if(t)for(let i in t)this._codeInjectionPoints[e]||(this._codeInjectionPoints[e]={}),this._codeInjectionPoints[e][i]=!0}_injectCustomCode(e,t){return(i,r)=>{var o,l;t&&(r=t(i,r)),this._uboDeclaration&&(r=r.replace("#define ADDITIONAL_UBO_DECLARATION",this._uboDeclaration)),this._vertexDeclaration&&(r=r.replace("#define ADDITIONAL_VERTEX_DECLARATION",this._vertexDeclaration)),this._fragmentDeclaration&&(r=r.replace("#define ADDITIONAL_FRAGMENT_DECLARATION",this._fragmentDeclaration));let s=(o=this._codeInjectionPoints)==null?void 0:o[i];if(!s)return r;let a=null;for(let c in s){let f="";for(let d of this._activePlugins){let h=this._material.shaderLanguage,u=(l=d.getCustomCode(i,h))==null?void 0:l[c];u&&(d.resolveIncludes&&(a===null&&(a={defines:[],indexParameters:e.indexParameters,isFragment:!1,shouldUseHighPrecisionShader:this._engine._shouldUseHighPrecisionShader,processor:void 0,supportsUniformBuffers:this._engine.supportsUniformBuffers,shadersRepository:x.GetShadersRepository(h),includesShadersStore:x.GetIncludesShadersStore(h),version:void 0,platformName:this._engine.shaderPlatformName,processingContext:void 0,isNDCHalfZRange:this._engine.isNDCHalfZRange,useReverseDepthBuffer:this._engine.useReverseDepthBuffer,processCodeAfterIncludes:void 0}),a.isFragment=i==="fragment",Cg(u,a,m=>u=m)),f+=u+` `)}if(f.length>0)if(c.charAt(0)==="!"){c=c.substring(1);let d="g";if(c.charAt(0)==="!")d="",c=c.substring(1);else{let _=Wde.exec(c);_&&_.length>=2&&(d=_[1],c=c.substring(d.length+1))}d.indexOf("g")<0&&(d+="g");let h=r,u=new RegExp(c,d),m=u.exec(h);for(;m!==null;){let _=f;for(let p=0;p{Xde()});Hde=[],zde=!1,g4=null});var jr,id=I(()=>{Wt();kt();v4();Dr();$i();jr=class{isCompatible(e){return e===0}_enable(e){e&&this._pluginManager._activatePlugin(this)}constructor(e,t,i,r,s=!0,a=!1,o=!1){this.priority=500,this.resolveIncludes=!1,this.registerForExtraEvents=!1,this.doNotSerialize=!1,this._material=e,this.name=t,this.priority=i,this.resolveIncludes=o,e.pluginManager||(e.pluginManager=new Mp(e),e.onDisposeObservable.add(()=>{e.pluginManager=void 0})),this._pluginDefineNames=r,this._pluginManager=e.pluginManager,s&&this._pluginManager._addPlugin(this),a&&this._enable(!0),this.markAllDefinesAsDirty=e._dirtyCallbacks[127]}getClassName(){return"MaterialPluginBase"}isReadyForSubMesh(e,t,i,r){return!0}hardBindForSubMesh(e,t,i,r){}bindForSubMesh(e,t,i,r){}dispose(e){}getCustomCode(e,t=0){return null}collectDefines(e){if(this._pluginDefineNames)for(let t of Object.keys(this._pluginDefineNames)){if(t[0]==="_")continue;let i=typeof this._pluginDefineNames[t];e[t]={type:i==="number"?"number":i==="string"?"string":i==="boolean"?"boolean":"object",default:this._pluginDefineNames[t]}}}prepareDefinesBeforeAttributes(e,t,i){}prepareDefines(e,t,i){}hasTexture(e){return!1}hasRenderTargetTextures(){return!1}fillRenderTargetTextures(e){}getActiveTextures(e){}getAnimatables(e){}addFallbacks(e,t,i){return i}getSamplers(e){}getAttributes(e,t,i){}getUniformBuffersNames(e){}getUniforms(e=0){return{}}copyTo(e){nt.Clone(()=>e,this)}serialize(){return nt.Serialize(this)}parse(e,t,i){nt.Parse(()=>this,e,t,i)}};P([F()],jr.prototype,"name",void 0);P([F()],jr.prototype,"priority",void 0);P([F()],jr.prototype,"resolveIncludes",void 0);P([F()],jr.prototype,"registerForExtraEvents",void 0);Ut("BABYLON.MaterialPluginBase",jr)});var BL,Za,UL=I(()=>{Wt();ts();kt();Ya();ja();id();es();BL=class extends Lr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},Za=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new BL,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Se.MATERIAL_NORMALBLENDMETHOD_WHITEOUT,this._isEnabled=!1,this.isEnabled=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&!this._texture.isReady()):!0}prepareDefines(e,t){if(this._isEnabled){e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod;let i=t.getEngine();e._areTexturesDirty&&(i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&this._isEnabled?(ni(this._texture,e,"DETAIL"),e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod):e.DETAIL=!1)}else e.DETAIL=!1}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&this._texture&&ce.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),si(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&ce.DetailTextureEnabled&&e.setTexture("detailSampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){var t;e&&((t=this._texture)==null||t.dispose())}getClassName(){return"DetailMapConfiguration"}getSamplers(e){e.push("detailSampler")}getUniforms(){return{ubo:[{name:"vDetailInfos",size:4,type:"vec4"},{name:"detailMatrix",size:16,type:"mat4"}]}}};P([Gt("detailTexture"),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"texture",void 0);P([F()],Za.prototype,"diffuseBlendLevel",void 0);P([F()],Za.prototype,"roughnessBlendLevel",void 0);P([F()],Za.prototype,"bumpLevel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"normalBlendMethod",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"isEnabled",void 0)});var E4,ss,xR=I(()=>{ke();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(E4||(E4={}));ss=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:Z.Zero(),currentViewProjection:Z.Zero(),previousBones:{},lastUpdateFrameId:-1,excludedSkinnedMesh:[],reverseCulling:!1},n._Configurations[e]}static DeleteConfiguration(e){delete n._Configurations[e]}static GetConfiguration(e){return n._Configurations[e]}static AddUniformsAndSamplers(e,t){e.push("previousWorld","previousViewProjection","mPreviousBones")}static MarkAsDirty(e,t){for(let i of t)if(i.subMeshes)for(let r of i.subMeshes)r._removeDrawWrapper(e)}static PrepareDefines(e,t,i){if(!i._arePrePassDirty)return;let r=n._Configurations[e];if(!r)return;i.PREPASS=!0;let s=0;for(let a=0;a{});function yp(n){return class extends n{constructor(){super(...arguments),this.PREPASS=!1,this.PREPASS_COLOR=!1,this.PREPASS_COLOR_INDEX=-1,this.PREPASS_IRRADIANCE_LEGACY=!1,this.PREPASS_IRRADIANCE_LEGACY_INDEX=-1,this.PREPASS_IRRADIANCE=!1,this.PREPASS_IRRADIANCE_INDEX=-1,this.PREPASS_ALBEDO=!1,this.PREPASS_ALBEDO_INDEX=-1,this.PREPASS_ALBEDO_SQRT=!1,this.PREPASS_ALBEDO_SQRT_INDEX=-1,this.PREPASS_DEPTH=!1,this.PREPASS_DEPTH_INDEX=-1,this.PREPASS_SCREENSPACE_DEPTH=!1,this.PREPASS_SCREENSPACE_DEPTH_INDEX=-1,this.PREPASS_NORMALIZED_VIEW_DEPTH=!1,this.PREPASS_NORMALIZED_VIEW_DEPTH_INDEX=-1,this.PREPASS_NORMAL=!1,this.PREPASS_NORMAL_INDEX=-1,this.PREPASS_NORMAL_WORLDSPACE=!1,this.PREPASS_WORLD_NORMAL=!1,this.PREPASS_WORLD_NORMAL_INDEX=-1,this.PREPASS_POSITION=!1,this.PREPASS_POSITION_INDEX=-1,this.PREPASS_LOCAL_POSITION=!1,this.PREPASS_LOCAL_POSITION_INDEX=-1,this.PREPASS_VELOCITY=!1,this.PREPASS_VELOCITY_INDEX=-1,this.PREPASS_VELOCITY_LINEAR=!1,this.PREPASS_VELOCITY_LINEAR_INDEX=-1,this.PREPASS_REFLECTIVITY=!1,this.PREPASS_REFLECTIVITY_INDEX=-1,this.SCENE_MRT_COUNT=0}}}var bR=I(()=>{});function Cp(n){return class extends n{constructor(...e){super(...e),OV()(this,"_imageProcessingConfiguration")}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}set imageProcessingConfiguration(e){this._attachImageProcessingConfiguration(e),this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()}_attachImageProcessingConfiguration(e){e!==this._imageProcessingConfiguration&&(this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),!e&&this.getScene?this._imageProcessingConfiguration=this.getScene().imageProcessingConfiguration:e&&(this._imageProcessingConfiguration=e),this._imageProcessingConfiguration&&(this._imageProcessingObserver=this._imageProcessingConfiguration.onUpdateParameters.add(()=>{this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()})))}get cameraColorCurvesEnabled(){return this.imageProcessingConfiguration.colorCurvesEnabled}set cameraColorCurvesEnabled(e){this.imageProcessingConfiguration.colorCurvesEnabled=e}get cameraColorGradingEnabled(){return this.imageProcessingConfiguration.colorGradingEnabled}set cameraColorGradingEnabled(e){this.imageProcessingConfiguration.colorGradingEnabled=e}get cameraToneMappingEnabled(){return this._imageProcessingConfiguration.toneMappingEnabled}set cameraToneMappingEnabled(e){this._imageProcessingConfiguration.toneMappingEnabled=e}get cameraExposure(){return this._imageProcessingConfiguration.exposure}set cameraExposure(e){this._imageProcessingConfiguration.exposure=e}get cameraContrast(){return this._imageProcessingConfiguration.contrast}set cameraContrast(e){this._imageProcessingConfiguration.contrast=e}get cameraColorGradingTexture(){return this._imageProcessingConfiguration.colorGradingTexture}set cameraColorGradingTexture(e){this._imageProcessingConfiguration.colorGradingTexture=e}get cameraColorCurves(){return this._imageProcessingConfiguration.colorCurves}set cameraColorCurves(e){this._imageProcessingConfiguration.colorCurves=e}}}var MR=I(()=>{kt()});var S4,Yde,Lh=I(()=>{k();S4="sceneUboDeclaration",Yde=`struct Scene {viewProjection : mat4x4, +`+d)}}return r}}};Mp._MaterialPluginClassToMainDefine={};Mp._MaterialPluginCounter=0;Oe.OnEnginesDisposedObservable.add(()=>{Xde()});Hde=[],zde=!1,g4=null});var jr,id=I(()=>{Wt();kt();v4();Dr();$i();jr=class{isCompatible(e){return e===0}_enable(e){e&&this._pluginManager._activatePlugin(this)}constructor(e,t,i,r,s=!0,a=!1,o=!1){this.priority=500,this.resolveIncludes=!1,this.registerForExtraEvents=!1,this.doNotSerialize=!1,this._material=e,this.name=t,this.priority=i,this.resolveIncludes=o,e.pluginManager||(e.pluginManager=new Mp(e),e.onDisposeObservable.add(()=>{e.pluginManager=void 0})),this._pluginDefineNames=r,this._pluginManager=e.pluginManager,s&&this._pluginManager._addPlugin(this),a&&this._enable(!0),this.markAllDefinesAsDirty=e._dirtyCallbacks[127]}getClassName(){return"MaterialPluginBase"}isReadyForSubMesh(e,t,i,r){return!0}hardBindForSubMesh(e,t,i,r){}bindForSubMesh(e,t,i,r){}dispose(e){}getCustomCode(e,t=0){return null}collectDefines(e){if(this._pluginDefineNames)for(let t of Object.keys(this._pluginDefineNames)){if(t[0]==="_")continue;let i=typeof this._pluginDefineNames[t];e[t]={type:i==="number"?"number":i==="string"?"string":i==="boolean"?"boolean":"object",default:this._pluginDefineNames[t]}}}prepareDefinesBeforeAttributes(e,t,i){}prepareDefines(e,t,i){}hasTexture(e){return!1}hasRenderTargetTextures(){return!1}fillRenderTargetTextures(e){}getActiveTextures(e){}getAnimatables(e){}addFallbacks(e,t,i){return i}getSamplers(e){}getAttributes(e,t,i){}getUniformBuffersNames(e){}getUniforms(e=0){return{}}copyTo(e){nt.Clone(()=>e,this)}serialize(){return nt.Serialize(this)}parse(e,t,i){nt.Parse(()=>this,e,t,i)}};P([F()],jr.prototype,"name",void 0);P([F()],jr.prototype,"priority",void 0);P([F()],jr.prototype,"resolveIncludes",void 0);P([F()],jr.prototype,"registerForExtraEvents",void 0);Ut("BABYLON.MaterialPluginBase",jr)});var BL,Za,UL=I(()=>{Wt();ts();kt();Ya();ja();id();es();BL=class extends Lr{constructor(){super(...arguments),this.DETAIL=!1,this.DETAILDIRECTUV=0,this.DETAIL_NORMALBLENDMETHOD=0}},Za=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"DetailMap",140,new BL,t),this._texture=null,this.diffuseBlendLevel=1,this.roughnessBlendLevel=1,this.bumpLevel=1,this._normalBlendMethod=Se.MATERIAL_NORMALBLENDMETHOD_WHITEOUT,this._isEnabled=!1,this.isEnabled=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&!this._texture.isReady()):!0}prepareDefines(e,t){if(this._isEnabled){e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod;let i=t.getEngine();e._areTexturesDirty&&(i.getCaps().standardDerivatives&&this._texture&&ce.DetailTextureEnabled&&this._isEnabled?(ni(this._texture,e,"DETAIL"),e.DETAIL_NORMALBLENDMETHOD=this._normalBlendMethod):e.DETAIL=!1)}else e.DETAIL=!1}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&this._texture&&ce.DetailTextureEnabled&&(e.updateFloat4("vDetailInfos",this._texture.coordinatesIndex,this.diffuseBlendLevel,this.bumpLevel,this.roughnessBlendLevel),si(this._texture,e,"detail")),t.texturesEnabled&&this._texture&&ce.DetailTextureEnabled&&e.setTexture("detailSampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){var t;e&&((t=this._texture)==null||t.dispose())}getClassName(){return"DetailMapConfiguration"}getSamplers(e){e.push("detailSampler")}getUniforms(){return{ubo:[{name:"vDetailInfos",size:4,type:"vec4"},{name:"detailMatrix",size:16,type:"mat4"}]}}};P([Gt("detailTexture"),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"texture",void 0);P([F()],Za.prototype,"diffuseBlendLevel",void 0);P([F()],Za.prototype,"roughnessBlendLevel",void 0);P([F()],Za.prototype,"bumpLevel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"normalBlendMethod",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Za.prototype,"isEnabled",void 0)});var E4,ss,RR=I(()=>{ke();(function(n){n[n.Zero=0]="Zero",n[n.One=1]="One",n[n.MaxViewZ=2]="MaxViewZ",n[n.NoClear=3]="NoClear"})(E4||(E4={}));ss=class n{static CreateConfiguration(e){return n._Configurations[e]={defines:{},previousWorldMatrices:{},previousViewProjection:Z.Zero(),currentViewProjection:Z.Zero(),previousBones:{},lastUpdateFrameId:-1,excludedSkinnedMesh:[],reverseCulling:!1},n._Configurations[e]}static DeleteConfiguration(e){delete n._Configurations[e]}static GetConfiguration(e){return n._Configurations[e]}static AddUniformsAndSamplers(e,t){e.push("previousWorld","previousViewProjection","mPreviousBones")}static MarkAsDirty(e,t){for(let i of t)if(i.subMeshes)for(let r of i.subMeshes)r._removeDrawWrapper(e)}static PrepareDefines(e,t,i){if(!i._arePrePassDirty)return;let r=n._Configurations[e];if(!r)return;i.PREPASS=!0;let s=0;for(let a=0;a{});function yp(n){return class extends n{constructor(){super(...arguments),this.PREPASS=!1,this.PREPASS_COLOR=!1,this.PREPASS_COLOR_INDEX=-1,this.PREPASS_IRRADIANCE_LEGACY=!1,this.PREPASS_IRRADIANCE_LEGACY_INDEX=-1,this.PREPASS_IRRADIANCE=!1,this.PREPASS_IRRADIANCE_INDEX=-1,this.PREPASS_ALBEDO=!1,this.PREPASS_ALBEDO_INDEX=-1,this.PREPASS_ALBEDO_SQRT=!1,this.PREPASS_ALBEDO_SQRT_INDEX=-1,this.PREPASS_DEPTH=!1,this.PREPASS_DEPTH_INDEX=-1,this.PREPASS_SCREENSPACE_DEPTH=!1,this.PREPASS_SCREENSPACE_DEPTH_INDEX=-1,this.PREPASS_NORMALIZED_VIEW_DEPTH=!1,this.PREPASS_NORMALIZED_VIEW_DEPTH_INDEX=-1,this.PREPASS_NORMAL=!1,this.PREPASS_NORMAL_INDEX=-1,this.PREPASS_NORMAL_WORLDSPACE=!1,this.PREPASS_WORLD_NORMAL=!1,this.PREPASS_WORLD_NORMAL_INDEX=-1,this.PREPASS_POSITION=!1,this.PREPASS_POSITION_INDEX=-1,this.PREPASS_LOCAL_POSITION=!1,this.PREPASS_LOCAL_POSITION_INDEX=-1,this.PREPASS_VELOCITY=!1,this.PREPASS_VELOCITY_INDEX=-1,this.PREPASS_VELOCITY_LINEAR=!1,this.PREPASS_VELOCITY_LINEAR_INDEX=-1,this.PREPASS_REFLECTIVITY=!1,this.PREPASS_REFLECTIVITY_INDEX=-1,this.SCENE_MRT_COUNT=0}}}var MR=I(()=>{});function Cp(n){return class extends n{constructor(...e){super(...e),OV()(this,"_imageProcessingConfiguration")}get imageProcessingConfiguration(){return this._imageProcessingConfiguration}set imageProcessingConfiguration(e){this._attachImageProcessingConfiguration(e),this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()}_attachImageProcessingConfiguration(e){e!==this._imageProcessingConfiguration&&(this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),!e&&this.getScene?this._imageProcessingConfiguration=this.getScene().imageProcessingConfiguration:e&&(this._imageProcessingConfiguration=e),this._imageProcessingConfiguration&&(this._imageProcessingObserver=this._imageProcessingConfiguration.onUpdateParameters.add(()=>{this._markAllSubMeshesAsImageProcessingDirty&&this._markAllSubMeshesAsImageProcessingDirty()})))}get cameraColorCurvesEnabled(){return this.imageProcessingConfiguration.colorCurvesEnabled}set cameraColorCurvesEnabled(e){this.imageProcessingConfiguration.colorCurvesEnabled=e}get cameraColorGradingEnabled(){return this.imageProcessingConfiguration.colorGradingEnabled}set cameraColorGradingEnabled(e){this.imageProcessingConfiguration.colorGradingEnabled=e}get cameraToneMappingEnabled(){return this._imageProcessingConfiguration.toneMappingEnabled}set cameraToneMappingEnabled(e){this._imageProcessingConfiguration.toneMappingEnabled=e}get cameraExposure(){return this._imageProcessingConfiguration.exposure}set cameraExposure(e){this._imageProcessingConfiguration.exposure=e}get cameraContrast(){return this._imageProcessingConfiguration.contrast}set cameraContrast(e){this._imageProcessingConfiguration.contrast=e}get cameraColorGradingTexture(){return this._imageProcessingConfiguration.colorGradingTexture}set cameraColorGradingTexture(e){this._imageProcessingConfiguration.colorGradingTexture=e}get cameraColorCurves(){return this._imageProcessingConfiguration.colorCurves}set cameraColorCurves(e){this._imageProcessingConfiguration.colorCurves=e}}}var IR=I(()=>{kt()});var S4,Yde,Lh=I(()=>{k();S4="sceneUboDeclaration",Yde=`struct Scene {viewProjection : mat4x4, #ifdef MULTIVIEW viewProjectionR : mat4x4, #endif @@ -5158,10 +5158,10 @@ visibility : f32,};var mesh : Mesh; #define ADDITIONAL_UBO_DECLARATION #include #include -`;x.IncludesShadersStoreWGSL[A4]||(x.IncludesShadersStoreWGSL[A4]=jde)});var x4,Zde,IR=I(()=>{k();x4="uvAttributeDeclaration",Zde=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) +`;x.IncludesShadersStoreWGSL[A4]||(x.IncludesShadersStoreWGSL[A4]=jde)});var x4,Zde,yR=I(()=>{k();x4="uvAttributeDeclaration",Zde=`#if defined(UV{X}) && !defined(USE_VERTEX_PULLING) attribute uv{X}: vec2f; #endif -`;x.IncludesShadersStoreWGSL[x4]||(x.IncludesShadersStoreWGSL[x4]=Zde)});var R4,qde,yR=I(()=>{k();R4="prePassVertexDeclaration",qde=`#ifdef PREPASS +`;x.IncludesShadersStoreWGSL[x4]||(x.IncludesShadersStoreWGSL[x4]=Zde)});var R4,qde,CR=I(()=>{k();R4="prePassVertexDeclaration",qde=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vPosition : vec3f; #endif @@ -5178,7 +5178,7 @@ uniform previousViewProjection: mat4x4f;varying vCurrentPosition: vec4f;varying `;x.IncludesShadersStoreWGSL[R4]||(x.IncludesShadersStoreWGSL[R4]=qde)});var b4,Qde,Pp=I(()=>{k();b4="mainUVVaryingDeclaration",Qde=`#ifdef MAINUV{X} varying vMainUV{X}: vec2f; #endif -`;x.IncludesShadersStoreWGSL[b4]||(x.IncludesShadersStoreWGSL[b4]=Qde)});var M4,$de,CR=I(()=>{k();M4="samplerVertexDeclaration",$de=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStoreWGSL[b4]||(x.IncludesShadersStoreWGSL[b4]=Qde)});var M4,$de,PR=I(()=>{k();M4="samplerVertexDeclaration",$de=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying v_VARYINGNAME_UV: vec2f; #endif `;x.IncludesShadersStoreWGSL[M4]||(x.IncludesShadersStoreWGSL[M4]=$de)});var I4,Jde,GL=I(()=>{k();I4="bumpVertexDeclaration",Jde=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) @@ -5213,7 +5213,7 @@ uniform vLightGround{X}: vec3f; uniform vLightWidth{X}: vec4f;uniform vLightHeight{X}: vec4f; #endif #endif -`;x.IncludesShadersStoreWGSL[y4]||(x.IncludesShadersStoreWGSL[y4]=ehe)});var P4,the,PR=I(()=>{k();P4="lightVxUboDeclaration",the=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[y4]||(x.IncludesShadersStoreWGSL[y4]=ehe)});var P4,the,DR=I(()=>{k();P4="lightVxUboDeclaration",the=`#ifdef LIGHT{X} struct Light{X} {vLightData: vec4f, vLightDiffuse: vec4f, @@ -5283,7 +5283,7 @@ uniform morphTargetCount: f32; `;x.IncludesShadersStoreWGSL[L4]||(x.IncludesShadersStoreWGSL[L4]=rhe)});var O4,nhe,Oh=I(()=>{k();O4="logDepthDeclaration",nhe=`#ifdef LOGARITHMICDEPTH uniform logarithmicDepthConstant: f32;varying vFragmentDepth: f32; #endif -`;x.IncludesShadersStoreWGSL[O4]||(x.IncludesShadersStoreWGSL[O4]=nhe)});var N4,she,DR=I(()=>{k();N4="vertexPullingDeclaration",she=`#ifdef USE_VERTEX_PULLING +`;x.IncludesShadersStoreWGSL[O4]||(x.IncludesShadersStoreWGSL[O4]=nhe)});var N4,she,LR=I(()=>{k();N4="vertexPullingDeclaration",she=`#ifdef USE_VERTEX_PULLING #ifdef VERTEX_PULLING_USE_INDEX_BUFFER var indices : array; #endif @@ -5461,7 +5461,7 @@ vp_readMatrixWeightExtraValue(offset+cs*3u,dataType,normalized) #endif #endif #endif -`;x.IncludesShadersStoreWGSL[N4]||(x.IncludesShadersStoreWGSL[N4]=she)});var w4,ahe,LR=I(()=>{k();w4="vertexPullingVertex",ahe=`#ifdef USE_VERTEX_PULLING +`;x.IncludesShadersStoreWGSL[N4]||(x.IncludesShadersStoreWGSL[N4]=she)});var w4,ahe,OR=I(()=>{k();w4="vertexPullingVertex",ahe=`#ifdef USE_VERTEX_PULLING let vpVertexIndex: u32=vp_readVertexIndex(vertexInputs.vertexIndex);positionUpdated=vp_readPosition(uniforms.vp_position_info,vpVertexIndex); #ifdef NORMAL normalUpdated=vp_readNormal(uniforms.vp_normal_info,vpVertexIndex); @@ -5630,7 +5630,7 @@ colorUpdated=colorUpdated+(vertexInputs.color{X}-vertexInputs.color)*uniforms.mo #endif #endif #endif -`;x.IncludesShadersStoreWGSL[B4]||(x.IncludesShadersStoreWGSL[B4]=lhe)});var U4,che,OR=I(()=>{k();U4="prePassVertex",che=`#ifdef PREPASS_DEPTH +`;x.IncludesShadersStoreWGSL[B4]||(x.IncludesShadersStoreWGSL[B4]=lhe)});var U4,che,NR=I(()=>{k();U4="prePassVertex",che=`#ifdef PREPASS_DEPTH vertexOutputs.vViewPos=(scene.view*worldPos).rgb; #endif #ifdef PREPASS_NORMALIZED_VIEW_DEPTH @@ -5669,7 +5669,7 @@ vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWor vertexOutputs.vPreviousPosition=uniforms.previousViewProjection*finalPreviousWorld* vec4f(positionUpdated,1.0); #endif #endif -`;x.IncludesShadersStoreWGSL[U4]||(x.IncludesShadersStoreWGSL[U4]=che)});var V4,fhe,NR=I(()=>{k();V4="uvVariableDeclaration",fhe=`#ifdef MAINUV{X} +`;x.IncludesShadersStoreWGSL[U4]||(x.IncludesShadersStoreWGSL[U4]=che)});var V4,fhe,wR=I(()=>{k();V4="uvVariableDeclaration",fhe=`#ifdef MAINUV{X} #if !defined(UV{X}) var uv{X}: vec2f=vec2f(0.,0.); #elif defined(USE_VERTEX_PULLING) @@ -5679,7 +5679,7 @@ var uv{X}: vec2f=vertexInputs.uv{X}; #endif vertexOutputs.vMainUV{X}=uv{X}; #endif -`;x.IncludesShadersStoreWGSL[V4]||(x.IncludesShadersStoreWGSL[V4]=fhe)});var G4,dhe,wR=I(()=>{k();G4="samplerVertexImplementation",dhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStoreWGSL[V4]||(x.IncludesShadersStoreWGSL[V4]=fhe)});var G4,dhe,FR=I(()=>{k();G4="samplerVertexImplementation",dhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 if (uniforms.v_INFONAME_==0.) {vertexOutputs.v_VARYINGNAME_UV= (uniforms._MATRIXNAME_Matrix* vec4f(uvUpdated,1.0,0.0)).xy;} #ifdef UV2 @@ -5703,12 +5703,12 @@ else if (uniforms.v_INFONAME_==5.) {vertexOutputs.v_VARYINGNAME_UV= (uniforms._MATRIXNAME_Matrix* vec4f(vertexInputs.uv6,1.0,0.0)).xy;} #endif #endif -`;x.IncludesShadersStoreWGSL[G4]||(x.IncludesShadersStoreWGSL[G4]=dhe)});var k4,hhe,FR=I(()=>{k();k4="bumpVertex",hhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStoreWGSL[G4]||(x.IncludesShadersStoreWGSL[G4]=dhe)});var k4,hhe,BR=I(()=>{k();k4="bumpVertex",hhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2]; #endif #endif -`;x.IncludesShadersStoreWGSL[k4]||(x.IncludesShadersStoreWGSL[k4]=hhe)});var W4,uhe,BR=I(()=>{k();W4="shadowsVertex",uhe=`#ifdef SHADOWS +`;x.IncludesShadersStoreWGSL[k4]||(x.IncludesShadersStoreWGSL[k4]=hhe)});var W4,uhe,UR=I(()=>{k();W4="shadowsVertex",uhe=`#ifdef SHADOWS #if defined(SHADOWCSM{X}) #ifdef SCENE_UBO vertexOutputs.vPositionFromCamera{X}=scene.view*worldPos; @@ -5756,10 +5756,10 @@ vertexOutputs.vDepthMetric{X}=(vertexOutputs.vPositionFromLight{X}.z+light{X}.de #endif #endif #endif -`;x.IncludesShadersStoreWGSL[W4]||(x.IncludesShadersStoreWGSL[W4]=uhe)});var H4,mhe,UR=I(()=>{k();H4="logDepthVertex",mhe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStoreWGSL[W4]||(x.IncludesShadersStoreWGSL[W4]=uhe)});var H4,mhe,VR=I(()=>{k();H4="logDepthVertex",mhe=`#ifdef LOGARITHMICDEPTH vertexOutputs.vFragmentDepth=1.0+vertexOutputs.position.w;vertexOutputs.position.z=log2(max(0.000001,vertexOutputs.vFragmentDepth))*uniforms.logarithmicDepthConstant; #endif -`;x.IncludesShadersStoreWGSL[H4]||(x.IncludesShadersStoreWGSL[H4]=mhe)});var X4={};Fe(X4,{defaultVertexShaderWGSL:()=>phe});var kL,z4,phe,Y4=I(()=>{k();VL();IR();Ha();Ac();xc();ed();yR();Pp();CR();GL();Rc();pv();C4();PR();rd();nd();Oh();DR();LR();sd();ad();bc();Mc();Ic();OR();NR();wR();FR();yc();_v();BR();gv();UR();kL="defaultVertexShader",z4=`#include +`;x.IncludesShadersStoreWGSL[H4]||(x.IncludesShadersStoreWGSL[H4]=mhe)});var X4={};Fe(X4,{defaultVertexShaderWGSL:()=>phe});var kL,z4,phe,Y4=I(()=>{k();VL();yR();Ha();Ac();xc();ed();CR();Pp();PR();GL();Rc();pv();C4();DR();rd();nd();Oh();LR();OR();sd();ad();bc();Mc();Ic();NR();wR();FR();BR();yc();_v();UR();gv();VR();kL="defaultVertexShader",z4=`#include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING attribute position: vec3f; @@ -5940,7 +5940,7 @@ vertexOutputs.vMainUV2=uv2Updated; #include #define CUSTOM_VERTEX_MAIN_END } -`;x.ShadersStoreWGSL[kL]||(x.ShadersStoreWGSL[kL]=z4);phe={name:kL,shader:z4}});var K4,_he,VR=I(()=>{k();K4="prePassDeclaration",_he=`#ifdef PREPASS +`;x.ShadersStoreWGSL[kL]||(x.ShadersStoreWGSL[kL]=z4);phe={name:kL,shader:z4}});var K4,_he,GR=I(()=>{k();K4="prePassDeclaration",_he=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vPosition : vec3f; #endif @@ -5954,11 +5954,11 @@ varying vNormViewDepth: f32; varying vCurrentPosition: vec4f;varying vPreviousPosition: vec4f; #endif #endif -`;x.IncludesShadersStoreWGSL[K4]||(x.IncludesShadersStoreWGSL[K4]=_he)});var j4,ghe,GR=I(()=>{k();j4="oitDeclaration",ghe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStoreWGSL[K4]||(x.IncludesShadersStoreWGSL[K4]=_he)});var j4,ghe,kR=I(()=>{k();j4="oitDeclaration",ghe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY #define MAX_DEPTH 99999.0 var oitDepthSamplerSampler: sampler;var oitDepthSampler: texture_2d;var oitFrontColorSamplerSampler: sampler;var oitFrontColorSampler: texture_2d; #endif -`;x.IncludesShadersStoreWGSL[j4]||(x.IncludesShadersStoreWGSL[j4]=ghe)});var Z4,vhe,kR=I(()=>{k();Z4="lightUboDeclaration",vhe=`#ifdef LIGHT{X} +`;x.IncludesShadersStoreWGSL[j4]||(x.IncludesShadersStoreWGSL[j4]=ghe)});var Z4,vhe,WR=I(()=>{k();Z4="lightUboDeclaration",vhe=`#ifdef LIGHT{X} struct Light{X} {vLightData: vec4f, vLightDiffuse: vec4f, @@ -6189,7 +6189,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;x.IncludesShadersStoreWGSL[$4]||(x.IncludesShadersStoreWGSL[$4]=The)});var eX,Ahe,WR=I(()=>{k();eX="shadowsFragmentFunctions",Ahe=`#ifdef SHADOWS +`;x.IncludesShadersStoreWGSL[$4]||(x.IncludesShadersStoreWGSL[$4]=The)});var eX,Ahe,HR=I(()=>{k();eX="shadowsFragmentFunctions",Ahe=`#ifdef SHADOWS #ifndef SHADOWFLOAT fn unpack(color: vec4f)->f32 {const bit_shift: vec4f= vec4f(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);} @@ -6567,7 +6567,7 @@ return vec3f(0,0,0); #endif } #endif -`;x.IncludesShadersStoreWGSL[nX]||(x.IncludesShadersStoreWGSL[nX]=bhe)});var sX,Mhe,HR=I(()=>{k();sX="imageProcessingDeclaration",Mhe=`#ifdef EXPOSURE +`;x.IncludesShadersStoreWGSL[nX]||(x.IncludesShadersStoreWGSL[nX]=bhe)});var sX,Mhe,zR=I(()=>{k();sX="imageProcessingDeclaration",Mhe=`#ifdef EXPOSURE uniform exposureLinear: f32; #endif #ifdef CONTRAST @@ -6593,7 +6593,7 @@ uniform colorTransformSettings: vec4f; #ifdef DITHER uniform ditherIntensity: f32; #endif -`;x.IncludesShadersStoreWGSL[sX]||(x.IncludesShadersStoreWGSL[sX]=Mhe)});var aX,Ihe,zR=I(()=>{k();aX="imageProcessingFunctions",Ihe=`#if TONEMAPPING==3 +`;x.IncludesShadersStoreWGSL[sX]||(x.IncludesShadersStoreWGSL[sX]=Mhe)});var aX,Ihe,XR=I(()=>{k();aX="imageProcessingFunctions",Ihe=`#if TONEMAPPING==3 const PBRNeutralStartCompression: f32=0.8-0.04;const PBRNeutralDesaturation: f32=0.15;fn PBRNeutralToneMapping( color: vec3f )->vec3f {var x: f32=min(color.r,min(color.g,color.b));var offset: f32=select(0.04,x-6.25*x*x,x<0.08);var result=color;result-=offset;var peak: f32=max(result.r,max(result.g,result.b));if (peak{k();oX="bumpFragmentMainFunctions",yhe=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return vec4f(rgb,result.a);}`;x.IncludesShadersStoreWGSL[aX]||(x.IncludesShadersStoreWGSL[aX]=Ihe)});var oX,yhe,YR=I(()=>{k();oX="bumpFragmentMainFunctions",yhe=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; #endif @@ -6695,7 +6695,7 @@ fn perturbNormal(cotangentFrame: mat3x3f,textureSample: vec3f,scale: f32)->vec3f fn cotangent_frame(normal: vec3f,p: vec3f,uv: vec2f,tangentSpaceParams: vec2f)->mat3x3f {var dp1: vec3f=dpdx(p);var dp2: vec3f=dpdy(p);var duv1: vec2f=dpdx(uv);var duv2: vec2f=dpdy(uv);var dp2perp: vec3f=cross(dp2,normal);var dp1perp: vec3f=cross(normal,dp1);var tangent: vec3f=dp2perp*duv1.x+dp1perp*duv2.x;var bitangent: vec3f=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;var det: f32=max(dot(tangent,tangent),dot(bitangent,bitangent));var invmax: f32=select(inverseSqrt(det),0.0,det==0.0);return mat3x3f(tangent*invmax,bitangent*invmax,normal);} #endif -`;x.IncludesShadersStoreWGSL[oX]||(x.IncludesShadersStoreWGSL[oX]=yhe)});var lX,Che,YR=I(()=>{k();Nh();lX="bumpFragmentFunctions",Che=`#if defined(BUMP) +`;x.IncludesShadersStoreWGSL[oX]||(x.IncludesShadersStoreWGSL[oX]=yhe)});var lX,Che,KR=I(()=>{k();Nh();lX="bumpFragmentFunctions",Che=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -6725,7 +6725,7 @@ return -texCoordOffset; #endif } #endif -`;x.IncludesShadersStoreWGSL[lX]||(x.IncludesShadersStoreWGSL[lX]=Che)});var cX,Phe,KR=I(()=>{k();cX="bumpFragment",Phe=`var uvOffset: vec2f= vec2f(0.0,0.0); +`;x.IncludesShadersStoreWGSL[lX]||(x.IncludesShadersStoreWGSL[lX]=Che)});var cX,Phe,jR=I(()=>{k();cX="bumpFragment",Phe=`var uvOffset: vec2f= vec2f(0.0,0.0); #if defined(BUMP) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE var normalScale: f32=1.0; @@ -6787,7 +6787,7 @@ decalTempAlpha=decalColor.a*decalColor.a; #endif surfaceAlbedo=mix(surfaceAlbedo.rgb,decalTempColor,decalTempAlpha); #endif -`;x.IncludesShadersStoreWGSL[fX]||(x.IncludesShadersStoreWGSL[fX]=Dhe)});var dX,Lhe,jR=I(()=>{k();dX="depthPrePass",Lhe=`#ifdef DEPTHPREPASS +`;x.IncludesShadersStoreWGSL[fX]||(x.IncludesShadersStoreWGSL[fX]=Dhe)});var dX,Lhe,ZR=I(()=>{k();dX="depthPrePass",Lhe=`#ifdef DEPTHPREPASS #if !defined(PREPASS) && !defined(ORDER_INDEPENDENT_TRANSPARENCY) fragmentOutputs.color= vec4f(0.,0.,0.,1.0); #endif @@ -7180,10 +7180,10 @@ sheenBase+=info.sheen.rgb*shadow; #endif #endif #endif -`;x.IncludesShadersStoreWGSL[hX]||(x.IncludesShadersStoreWGSL[hX]=Ohe)});var uX,Nhe,ZR=I(()=>{k();uX="logDepthFragment",Nhe=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStoreWGSL[hX]||(x.IncludesShadersStoreWGSL[hX]=Ohe)});var uX,Nhe,qR=I(()=>{k();uX="logDepthFragment",Nhe=`#ifdef LOGARITHMICDEPTH fragmentOutputs.fragDepth=log2(fragmentInputs.vFragmentDepth)*uniforms.logarithmicDepthConstant*0.5; #endif -`;x.IncludesShadersStoreWGSL[uX]||(x.IncludesShadersStoreWGSL[uX]=Nhe)});var mX,whe,qR=I(()=>{k();mX="oitFragment",whe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStoreWGSL[uX]||(x.IncludesShadersStoreWGSL[uX]=Nhe)});var mX,whe,QR=I(()=>{k();mX="oitFragment",whe=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY var fragDepth: f32=fragmentInputs.position.z; #ifdef ORDER_INDEPENDENT_TRANSPARENCY_16BITS var halfFloat: u32=pack2x16float( vec2f(fragDepth));var full: vec2f=unpack2x16float(halfFloat);fragDepth=full.x; @@ -7208,7 +7208,7 @@ if (fragDepth>nearestDepth && fragDepthFhe});var YL,pX,Fhe,gX=I(()=>{k();VL();VR();GR();Pp();Ha();kR();J4();WR();Nh();rX();Dv();HR();zR();XR();YR();Cc();Oh();vv();Pc();KR();zL();jR();XL();ZR();Ev();qR();YL="defaultPixelShader",pX=`#include +`;x.IncludesShadersStoreWGSL[mX]||(x.IncludesShadersStoreWGSL[mX]=whe)});var _X={};Fe(_X,{defaultPixelShaderWGSL:()=>Fhe});var YL,pX,Fhe,gX=I(()=>{k();VL();GR();kR();Pp();Ha();WR();J4();HR();Nh();rX();Dv();zR();XR();YR();KR();Cc();Oh();vv();Pc();jR();zL();ZR();XL();qR();Ev();QR();YL="defaultPixelShader",pX=`#include #include[SCENE_MRT_COUNT] #include #define CUSTOM_FRAGMENT_BEGIN @@ -7574,10 +7574,10 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #endif #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStoreWGSL[YL]||(x.ShadersStoreWGSL[YL]=pX);Fhe={name:YL,shader:pX}});var vX,Bhe,QR=I(()=>{k();vX="decalVertexDeclaration",Bhe=`#ifdef DECAL +`;x.ShadersStoreWGSL[YL]||(x.ShadersStoreWGSL[YL]=pX);Fhe={name:YL,shader:pX}});var vX,Bhe,$R=I(()=>{k();vX="decalVertexDeclaration",Bhe=`#ifdef DECAL uniform vec4 vDecalInfos;uniform mat4 decalMatrix; #endif -`;x.IncludesShadersStore[vX]||(x.IncludesShadersStore[vX]=Bhe)});var EX,Uhe,SX=I(()=>{k();QR();EX="defaultVertexDeclaration",Uhe=`uniform mat4 viewProjection; +`;x.IncludesShadersStore[vX]||(x.IncludesShadersStore[vX]=Bhe)});var EX,Uhe,SX=I(()=>{k();$R();EX="defaultVertexDeclaration",Uhe=`uniform mat4 viewProjection; #ifdef MULTIVIEW mat4 viewProjectionR; #endif @@ -7633,10 +7633,10 @@ layout(std140,column_major) uniform;uniform Mesh }; #include #include -`;x.IncludesShadersStore[xX]||(x.IncludesShadersStore[xX]=khe)});var RX,Whe,$R=I(()=>{k();RX="uvAttributeDeclaration",Whe=`#ifdef UV{X} +`;x.IncludesShadersStore[xX]||(x.IncludesShadersStore[xX]=khe)});var RX,Whe,JR=I(()=>{k();RX="uvAttributeDeclaration",Whe=`#ifdef UV{X} attribute vec2 uv{X}; #endif -`;x.IncludesShadersStore[RX]||(x.IncludesShadersStore[RX]=Whe)});var bX,Hhe,JR=I(()=>{k();bX="prePassVertexDeclaration",Hhe=`#ifdef PREPASS +`;x.IncludesShadersStore[RX]||(x.IncludesShadersStore[RX]=Whe)});var bX,Hhe,eb=I(()=>{k();bX="prePassVertexDeclaration",Hhe=`#ifdef PREPASS #ifdef PREPASS_LOCAL_POSITION varying vec3 vPosition; #endif @@ -7653,7 +7653,7 @@ uniform mat4 previousViewProjection;varying vec4 vCurrentPosition;varying vec4 v `;x.IncludesShadersStore[bX]||(x.IncludesShadersStore[bX]=Hhe)});var MX,zhe,Dp=I(()=>{k();MX="mainUVVaryingDeclaration",zhe=`#ifdef MAINUV{X} varying vec2 vMainUV{X}; #endif -`;x.IncludesShadersStore[MX]||(x.IncludesShadersStore[MX]=zhe)});var IX,Xhe,eb=I(()=>{k();IX="samplerVertexDeclaration",Xhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStore[MX]||(x.IncludesShadersStore[MX]=zhe)});var IX,Xhe,tb=I(()=>{k();IX="samplerVertexDeclaration",Xhe=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 varying vec2 v_VARYINGNAME_UV; #endif `;x.IncludesShadersStore[IX]||(x.IncludesShadersStore[IX]=Xhe)});var yX,Yhe,jL=I(()=>{k();yX="bumpVertexDeclaration",Yhe=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) @@ -7661,7 +7661,7 @@ varying vec2 v_VARYINGNAME_UV; varying mat3 vTBN; #endif #endif -`;x.IncludesShadersStore[yX]||(x.IncludesShadersStore[yX]=Yhe)});var CX,Khe,tb=I(()=>{k();CX="lightVxFragmentDeclaration",Khe=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[yX]||(x.IncludesShadersStore[yX]=Yhe)});var CX,Khe,ib=I(()=>{k();CX="lightVxFragmentDeclaration",Khe=`#ifdef LIGHT{X} uniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X}; #ifdef SPECULARTERM uniform vec4 vLightSpecular{X}; @@ -7688,7 +7688,7 @@ uniform vec3 vLightGround{X}; uniform vec4 vLightWidth{X};uniform vec4 vLightHeight{X}; #endif #endif -`;x.IncludesShadersStore[CX]||(x.IncludesShadersStore[CX]=Khe)});var PX,jhe,ib=I(()=>{k();PX="lightVxUboDeclaration",jhe=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[CX]||(x.IncludesShadersStore[CX]=Khe)});var PX,jhe,rb=I(()=>{k();PX="lightVxUboDeclaration",jhe=`#ifdef LIGHT{X} uniform Light{X} {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular; #ifdef SPOTLIGHT{X} @@ -7826,7 +7826,7 @@ colorUpdated+=(color{X}-color)*morphTargetInfluences[{X}]; #endif #endif #endif -`;x.IncludesShadersStore[wX]||(x.IncludesShadersStore[wX]=Jhe)});var FX,eue,rb=I(()=>{k();FX="prePassVertex",eue=`#ifdef PREPASS_DEPTH +`;x.IncludesShadersStore[wX]||(x.IncludesShadersStore[wX]=Jhe)});var FX,eue,nb=I(()=>{k();FX="prePassVertex",eue=`#ifdef PREPASS_DEPTH vViewPos=(view*worldPos).rgb; #endif #ifdef PREPASS_NORMALIZED_VIEW_DEPTH @@ -7865,13 +7865,13 @@ vPreviousPosition=previousViewProjection*finalPreviousWorld*previousInfluence*ve vPreviousPosition=previousViewProjection*finalPreviousWorld*vec4(positionUpdated,1.0); #endif #endif -`;x.IncludesShadersStore[FX]||(x.IncludesShadersStore[FX]=eue)});var BX,tue,nb=I(()=>{k();BX="uvVariableDeclaration",tue=`#if !defined(UV{X}) && defined(MAINUV{X}) +`;x.IncludesShadersStore[FX]||(x.IncludesShadersStore[FX]=eue)});var BX,tue,sb=I(()=>{k();BX="uvVariableDeclaration",tue=`#if !defined(UV{X}) && defined(MAINUV{X}) vec2 uv{X}=vec2(0.,0.); #endif #ifdef MAINUV{X} vMainUV{X}=uv{X}; #endif -`;x.IncludesShadersStore[BX]||(x.IncludesShadersStore[BX]=tue)});var UX,iue,sb=I(()=>{k();UX="samplerVertexImplementation",iue=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 +`;x.IncludesShadersStore[BX]||(x.IncludesShadersStore[BX]=tue)});var UX,iue,ab=I(()=>{k();UX="samplerVertexImplementation",iue=`#if defined(_DEFINENAME_) && _DEFINENAME_DIRECTUV==0 if (v_INFONAME_==0.) {v_VARYINGNAME_UV=vec2(_MATRIXNAME_Matrix*vec4(uvUpdated,1.0,0.0));} #ifdef UV2 @@ -7895,12 +7895,12 @@ else if (v_INFONAME_==5.) {v_VARYINGNAME_UV=vec2(_MATRIXNAME_Matrix*vec4(uv6,1.0,0.0));} #endif #endif -`;x.IncludesShadersStore[UX]||(x.IncludesShadersStore[UX]=iue)});var VX,rue,ab=I(()=>{k();VX="bumpVertex",rue=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) +`;x.IncludesShadersStore[UX]||(x.IncludesShadersStore[UX]=iue)});var VX,rue,ob=I(()=>{k();VX="bumpVertex",rue=`#if defined(BUMP) || defined(PARALLAX) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #if defined(TANGENT) && defined(NORMAL) vec3 tbnNormal=normalize(normalUpdated);vec3 tbnTangent=normalize(tangentUpdated.xyz);vec3 tbnBitangent=cross(tbnNormal,tbnTangent)*tangentUpdated.w;vTBN=mat3(finalWorld)*mat3(tbnTangent,tbnBitangent,tbnNormal); #endif #endif -`;x.IncludesShadersStore[VX]||(x.IncludesShadersStore[VX]=rue)});var GX,nue,ob=I(()=>{k();GX="shadowsVertex",nue=`#ifdef SHADOWS +`;x.IncludesShadersStore[VX]||(x.IncludesShadersStore[VX]=rue)});var GX,nue,lb=I(()=>{k();GX="shadowsVertex",nue=`#ifdef SHADOWS #if defined(SHADOWCSM{X}) vPositionFromCamera{X}=view*worldPos;for (int i=0; i{k();kX="pointCloudVertex",sue=`#if defined(POINTSIZE) && !defined(WEBGPU) gl_PointSize=pointSize; #endif -`;x.IncludesShadersStore[kX]||(x.IncludesShadersStore[kX]=sue)});var WX,aue,lb=I(()=>{k();WX="logDepthVertex",aue=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStore[kX]||(x.IncludesShadersStore[kX]=sue)});var WX,aue,cb=I(()=>{k();WX="logDepthVertex",aue=`#ifdef LOGARITHMICDEPTH vFragmentDepth=1.0+gl_Position.w;gl_Position.z=log2(max(0.000001,vFragmentDepth))*logarithmicDepthConstant; #endif -`;x.IncludesShadersStore[WX]||(x.IncludesShadersStore[WX]=aue)});var zX={};Fe(zX,{defaultVertexShader:()=>oue});var qL,HX,oue,XX=I(()=>{k();SX();KL();$R();za();Dc();Lc();td();JR();Dp();eb();jL();Oc();Sv();tb();ib();od();ld();Fh();cd();fd();Nc();wc();Fc();rb();nb();sb();ab();Bc();Tv();ob();Av();ZL();lb();qL="defaultVertexShader",HX=`#define CUSTOM_VERTEX_EXTENSION +`;x.IncludesShadersStore[WX]||(x.IncludesShadersStore[WX]=aue)});var zX={};Fe(zX,{defaultVertexShader:()=>oue});var qL,HX,oue,XX=I(()=>{k();SX();KL();JR();za();Dc();Lc();td();eb();Dp();tb();jL();Oc();Sv();ib();rb();od();ld();Fh();cd();fd();Nc();wc();Fc();nb();sb();ab();ob();Bc();Tv();lb();Av();ZL();cb();qL="defaultVertexShader",HX=`#define CUSTOM_VERTEX_EXTENSION #include<__decl__defaultVertex> #define CUSTOM_VERTEX_BEGIN attribute vec3 position; @@ -8078,10 +8078,10 @@ vMainUV2=uv2Updated; #include #define CUSTOM_VERTEX_MAIN_END } -`;x.ShadersStore[qL]||(x.ShadersStore[qL]=HX);oue={name:qL,shader:HX}});var YX,lue,cb=I(()=>{k();YX="decalFragmentDeclaration",lue=`#ifdef DECAL +`;x.ShadersStore[qL]||(x.ShadersStore[qL]=HX);oue={name:qL,shader:HX}});var YX,lue,fb=I(()=>{k();YX="decalFragmentDeclaration",lue=`#ifdef DECAL uniform vec4 vDecalInfos; #endif -`;x.IncludesShadersStore[YX]||(x.IncludesShadersStore[YX]=lue)});var KX,cue,jX=I(()=>{k();cb();KX="defaultFragmentDeclaration",cue=`uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;uniform vec4 vSpecularColor;uniform vec3 vEmissiveColor;uniform vec3 vAmbientColor;uniform float visibility; +`;x.IncludesShadersStore[YX]||(x.IncludesShadersStore[YX]=lue)});var KX,cue,jX=I(()=>{k();fb();KX="defaultFragmentDeclaration",cue=`uniform vec4 vEyePosition;uniform vec4 vDiffuseColor;uniform vec4 vSpecularColor;uniform vec3 vEmissiveColor;uniform vec3 vAmbientColor;uniform float visibility; #ifdef DIFFUSE uniform vec2 vDiffuseInfos; #endif @@ -8149,7 +8149,7 @@ uniform vec4 vDetailInfos; #endif #include #define ADDITIONAL_FRAGMENT_DECLARATION -`;x.IncludesShadersStore[KX]||(x.IncludesShadersStore[KX]=cue)});var ZX,fue,fb=I(()=>{k();ZX="prePassDeclaration",fue=`#ifdef PREPASS +`;x.IncludesShadersStore[KX]||(x.IncludesShadersStore[KX]=cue)});var ZX,fue,db=I(()=>{k();ZX="prePassDeclaration",fue=`#ifdef PREPASS #extension GL_EXT_draw_buffers : require layout(location=0) out highp vec4 glFragData[{X}];highp vec4 gl_FragColor; #ifdef PREPASS_LOCAL_POSITION @@ -8165,14 +8165,14 @@ varying highp float vNormViewDepth; varying highp vec4 vCurrentPosition;varying highp vec4 vPreviousPosition; #endif #endif -`;x.IncludesShadersStore[ZX]||(x.IncludesShadersStore[ZX]=fue)});var qX,due,db=I(()=>{k();qX="oitDeclaration",due=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStore[ZX]||(x.IncludesShadersStore[ZX]=fue)});var qX,due,hb=I(()=>{k();qX="oitDeclaration",due=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY #extension GL_EXT_draw_buffers : require layout(location=0) out vec2 depth; layout(location=1) out vec4 frontColor;layout(location=2) out vec4 backColor; #define MAX_DEPTH 99999.0 highp vec4 gl_FragColor;uniform sampler2D oitDepthSampler;uniform sampler2D oitFrontColorSampler; #endif -`;x.IncludesShadersStore[qX]||(x.IncludesShadersStore[qX]=due)});var QX,hue,hb=I(()=>{k();QX="lightFragmentDeclaration",hue=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[qX]||(x.IncludesShadersStore[qX]=due)});var QX,hue,ub=I(()=>{k();QX="lightFragmentDeclaration",hue=`#ifdef LIGHT{X} uniform vec4 vLightData{X};uniform vec4 vLightDiffuse{X}; #ifdef SPECULARTERM uniform vec4 vLightSpecular{X}; @@ -8246,7 +8246,7 @@ uniform mat4 textureProjectionMatrix{X};uniform sampler2D projectionLightTexture uniform vec2 vSliceData{X};uniform vec2 vSliceRanges{X}[CLUSTLIGHT_SLICES];uniform sampler2D lightDataTexture{X};uniform highp sampler2D tileMaskTexture{X}; #endif #endif -`;x.IncludesShadersStore[QX]||(x.IncludesShadersStore[QX]=hue)});var $X,uue,ub=I(()=>{k();$X="lightUboDeclaration",uue=`#ifdef LIGHT{X} +`;x.IncludesShadersStore[QX]||(x.IncludesShadersStore[QX]=hue)});var $X,uue,mb=I(()=>{k();$X="lightUboDeclaration",uue=`#ifdef LIGHT{X} uniform Light{X} {vec4 vLightData;vec4 vLightDiffuse;vec4 vLightSpecular; #ifdef SPOTLIGHT{X} @@ -8470,7 +8470,7 @@ result.specular+=info.specular; batchOffset+=CLUSTLIGHT_BATCH;} return result;} #endif -`;x.IncludesShadersStore[t5]||(x.IncludesShadersStore[t5]=_ue)});var r5,gue,mb=I(()=>{k();r5="shadowsFragmentFunctions",gue=`#ifdef SHADOWS +`;x.IncludesShadersStore[t5]||(x.IncludesShadersStore[t5]=_ue)});var r5,gue,pb=I(()=>{k();r5="shadowsFragmentFunctions",gue=`#ifdef SHADOWS #if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) #define TEXTUREFUNC(s,c,l) texture2DLodEXT(s,c,l) #else @@ -8897,7 +8897,7 @@ return vec3(0,0,0); #endif } #endif -`;x.IncludesShadersStore[o5]||(x.IncludesShadersStore[o5]=Sue)});var l5,Tue,pb=I(()=>{k();l5="imageProcessingDeclaration",Tue=`#ifdef EXPOSURE +`;x.IncludesShadersStore[o5]||(x.IncludesShadersStore[o5]=Sue)});var l5,Tue,_b=I(()=>{k();l5="imageProcessingDeclaration",Tue=`#ifdef EXPOSURE uniform float exposureLinear; #endif #ifdef CONTRAST @@ -8923,7 +8923,7 @@ uniform vec4 colorTransformSettings; #ifdef DITHER uniform float ditherIntensity; #endif -`;x.IncludesShadersStore[l5]||(x.IncludesShadersStore[l5]=Tue)});var c5,Aue,_b=I(()=>{k();c5="imageProcessingFunctions",Aue=`#if defined(COLORGRADING) && !defined(COLORGRADING3D) +`;x.IncludesShadersStore[l5]||(x.IncludesShadersStore[l5]=Tue)});var c5,Aue,gb=I(()=>{k();c5="imageProcessingFunctions",Aue=`#if defined(COLORGRADING) && !defined(COLORGRADING3D) /** * Polyfill for SAMPLE_TEXTURE_3D,which is unsupported in WebGL. * sampler3dSetting.x=textureOffset (0.5/textureSize). @@ -9011,7 +9011,7 @@ float luma=getLuminance(result.rgb);vec2 curveMix=clamp(vec2(luma*3.0-1.5,luma*- float rand=getRand(gl_FragCoord.xy*vInverseScreenSize);float dither=mix(-ditherIntensity,ditherIntensity,rand);result.rgb=saturate(result.rgb+vec3(dither)); #endif #define CUSTOM_IMAGEPROCESSINGFUNCTIONS_UPDATERESULT_ATEND -return result;}`;x.IncludesShadersStore[c5]||(x.IncludesShadersStore[c5]=Aue)});var f5,xue,gb=I(()=>{k();f5="bumpFragmentMainFunctions",xue=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) +return result;}`;x.IncludesShadersStore[c5]||(x.IncludesShadersStore[c5]=Aue)});var f5,xue,vb=I(()=>{k();f5="bumpFragmentMainFunctions",xue=`#if defined(BUMP) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) || defined(DETAIL) #if defined(TANGENT) && defined(NORMAL) varying mat3 vTBN; #endif @@ -9072,7 +9072,7 @@ vec3 perturbNormal(mat3 cotangentFrame,vec3 textureSample,float scale) mat3 cotangent_frame(vec3 normal,vec3 p,vec2 uv,vec2 tangentSpaceParams) {vec3 dp1=dFdx(p);vec3 dp2=dFdy(p);vec2 duv1=dFdx(uv);vec2 duv2=dFdy(uv);vec3 dp2perp=cross(dp2,normal);vec3 dp1perp=cross(normal,dp1);vec3 tangent=dp2perp*duv1.x+dp1perp*duv2.x;vec3 bitangent=dp2perp*duv1.y+dp1perp*duv2.y;tangent*=tangentSpaceParams.x;bitangent*=tangentSpaceParams.y;float det=max(dot(tangent,tangent),dot(bitangent,bitangent));float invmax=det==0.0 ? 0.0 : inversesqrt(det);return mat3(tangent*invmax,bitangent*invmax,normal);} #endif -`;x.IncludesShadersStore[f5]||(x.IncludesShadersStore[f5]=xue)});var d5,Rue,vb=I(()=>{k();Bh();d5="bumpFragmentFunctions",Rue=`#if defined(BUMP) +`;x.IncludesShadersStore[f5]||(x.IncludesShadersStore[f5]=xue)});var d5,Rue,Eb=I(()=>{k();Bh();d5="bumpFragmentFunctions",Rue=`#if defined(BUMP) #include(_DEFINENAME_,BUMP,_VARYINGNAME_,Bump,_SAMPLERNAME_,bump) #endif #if defined(DETAIL) @@ -9102,7 +9102,7 @@ return -texCoordOffset; #endif } #endif -`;x.IncludesShadersStore[d5]||(x.IncludesShadersStore[d5]=Rue)});var h5,bue,Eb=I(()=>{k();h5="bumpFragment",bue=`vec2 uvOffset=vec2(0.0,0.0); +`;x.IncludesShadersStore[d5]||(x.IncludesShadersStore[d5]=Rue)});var h5,bue,Sb=I(()=>{k();h5="bumpFragment",bue=`vec2 uvOffset=vec2(0.0,0.0); #if defined(BUMP) || defined(PARALLAX) || defined(DETAIL) #ifdef NORMALXYSCALE float normalScale=1.0; @@ -9163,7 +9163,7 @@ decalColor.a*=decalColor.a; #endif surfaceAlbedo.rgb=mix(surfaceAlbedo.rgb,decalColor.rgb,decalColor.a); #endif -`;x.IncludesShadersStore[u5]||(x.IncludesShadersStore[u5]=Mue)});var m5,Iue,Sb=I(()=>{k();m5="depthPrePass",Iue=`#ifdef DEPTHPREPASS +`;x.IncludesShadersStore[u5]||(x.IncludesShadersStore[u5]=Mue)});var m5,Iue,Tb=I(()=>{k();m5="depthPrePass",Iue=`#ifdef DEPTHPREPASS gl_FragColor=vec4(0.,0.,0.,1.0);return; #endif `;x.IncludesShadersStore[m5]||(x.IncludesShadersStore[m5]=Iue)});var p5,yue,eO=I(()=>{k();p5="lightFragment",yue=`#ifdef LIGHT{X} @@ -9544,10 +9544,10 @@ sheenBase+=info.sheen.rgb*shadow; #endif #endif #endif -`;x.IncludesShadersStore[p5]||(x.IncludesShadersStore[p5]=yue)});var _5,Cue,Tb=I(()=>{k();_5="logDepthFragment",Cue=`#ifdef LOGARITHMICDEPTH +`;x.IncludesShadersStore[p5]||(x.IncludesShadersStore[p5]=yue)});var _5,Cue,Ab=I(()=>{k();_5="logDepthFragment",Cue=`#ifdef LOGARITHMICDEPTH gl_FragDepthEXT=log2(vFragmentDepth)*logarithmicDepthConstant*0.5; #endif -`;x.IncludesShadersStore[_5]||(x.IncludesShadersStore[_5]=Cue)});var g5,Pue,Ab=I(()=>{k();g5="oitFragment",Pue=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY +`;x.IncludesShadersStore[_5]||(x.IncludesShadersStore[_5]=Cue)});var g5,Pue,xb=I(()=>{k();g5="oitFragment",Pue=`#ifdef ORDER_INDEPENDENT_TRANSPARENCY float fragDepth=gl_FragCoord.z; #ifdef ORDER_INDEPENDENT_TRANSPARENCY_16BITS uint halfFloat=packHalf2x16(vec2(fragDepth));vec2 full=unpackHalf2x16(halfFloat);fragDepth=full.x; @@ -9572,7 +9572,7 @@ if (fragDepth>nearestDepth && fragDepthDue});var tO,v5,Due,S5=I(()=>{k();jX();KL();fb();db();Dp();za();hb();ub();i5();mb();Bh();a5();Ov();pb();_b();gb();vb();Uc();Fh();xv();Vc();Eb();JL();Sb();eO();Tb();Rv();Ab();tO="defaultPixelShader",v5=`#define CUSTOM_FRAGMENT_EXTENSION +`;x.IncludesShadersStore[g5]||(x.IncludesShadersStore[g5]=Pue)});var E5={};Fe(E5,{defaultPixelShader:()=>Due});var tO,v5,Due,S5=I(()=>{k();jX();KL();db();hb();Dp();za();ub();mb();i5();pb();Bh();a5();Ov();_b();gb();vb();Eb();Uc();Fh();xv();Vc();Sb();JL();Tb();eO();Ab();Rv();xb();tO="defaultPixelShader",v5=`#define CUSTOM_FRAGMENT_EXTENSION #include<__decl__defaultFragment> #if defined(BUMP) || !defined(NORMAL) #extension GL_OES_standard_derivatives : enable @@ -9921,7 +9921,7 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=color.rgb*color.a*alphaMultiplier; #endif #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStore[tO]||(x.ShadersStore[tO]=v5);Due={name:tO,shader:v5}});var iO,rO,nO,sO,We,Gc=I(()=>{Wt();kt();Mo();Ys();zt();Zi();TR();AR();Kg();ts();ja();uv();$i();Ya();Qf();UL();Ml();mv();es();Dr();xR();RR();bR();MR();iO={effect:null,subMesh:null},rO=class extends yp(Ip(Lr)){},nO=class extends bp(rO){constructor(e){super(e),this.DIFFUSE=!1,this.DIFFUSEDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.OPACITY=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.REFLECTION=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.SPECULAR=!1,this.SPECULARDIRECTUV=0,this.BUMP=!1,this.BUMPDIRECTUV=0,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.SPECULAROVERALPHA=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHAFROMDIFFUSE=!1,this.POINTSIZE=!1,this.FOG=!1,this.SPECULARTERM=!1,this.DIFFUSEFRESNEL=!1,this.OPACITYFRESNEL=!1,this.REFLECTIONFRESNEL=!1,this.REFRACTIONFRESNEL=!1,this.EMISSIVEFRESNEL=!1,this.FRESNEL=!1,this.NORMAL=!1,this.TANGENT=!1,this.VERTEXCOLOR=!1,this.VERTEXALPHA=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.GLOSSINESS=!1,this.ROUGHNESS=!1,this.EMISSIVEASILLUMINATION=!1,this.LINKEMISSIVEWITHDIFFUSE=!1,this.REFLECTIONFRESNELFROMSPECULAR=!1,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.USELIGHTMAPASSHADOWMAP=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.INVERTCUBICMAP=!1,this.LOGARITHMICDEPTH=!1,this.REFRACTION=!1,this.REFRACTIONMAP_3D=!1,this.REFLECTIONOVERALPHA=!1,this.TWOSIDEDLIGHTING=!1,this.SHADOWFLOAT=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.NONUNIFORMSCALING=!1,this.PREMULTIPLYALPHA=!1,this.ALPHATEST_AFTERALLALPHACOMPUTATIONS=!1,this.ALPHABLEND=!0,this.RGBDLIGHTMAP=!1,this.RGBDREFLECTION=!1,this.RGBDREFRACTION=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.IS_REFLECTION_LINEAR=!1,this.IS_REFRACTION_LINEAR=!1,this.DECAL_AFTER_DETAIL=!1,this.rebuild()}},sO=class extends Cp(Pl){},We=class n extends sO{get isPrePassCapable(){return!this.disableDepthWrite}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._diffuseTexture=null,this._ambientTexture=null,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._specularTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._refractionTexture=null,this.ambientColor=new Ee(0,0,0),this.diffuseColor=new Ee(1,1,1),this.specularColor=new Ee(1,1,1),this.emissiveColor=new Ee(0,0,0),this.specularPower=64,this._useAlphaFromDiffuseTexture=!1,this._useEmissiveAsIllumination=!1,this._linkEmissiveWithDiffuse=!1,this._useSpecularOverAlpha=!1,this._useReflectionOverAlpha=!1,this._disableLighting=!1,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this._roughness=0,this.indexOfRefraction=.98,this.invertRefractionY=!0,this.alphaCutOff=.4,this._useLightmapAsShadowmap=!1,this._useReflectionFresnelFromSpecular=!1,this._useGlossinessFromSpecularMapAlpha=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._applyDecalMapAfterDetailMap=!1,this._shadersLoaded=!1,this._vertexPullingMetadata=null,this._renderTargets=new Xi(16),this._globalAmbientColor=new Ee(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new Za(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new $s,this.getRenderTargetTextures=()=>(this._renderTargets.reset(),n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&this._renderTargets.push(this._refractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets)}get hasRenderTargetTextures(){return n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget||n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}getClassName(){return"StandardMaterial"}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromDiffuseTexture()||this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===Se.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Se.MATERIAL_OPAQUE}_hasAlphaChannel(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._diffuseTexture}isReadyForSubMesh(e,t,i=!1){this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new nO(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=lp(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!op(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;dp(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(s,a,this.canRenderToMRT&&!l),hp(s,a,l),ss.PrepareDefines(o.currentRenderPassId,e,a),a._areTexturesDirty){this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a._needUVs=!1;for(let f=1;f<=6;++f)a["MAINUV"+f]=!1;if(s.texturesEnabled){if(a.DIFFUSEDIRECTUV=0,a.BUMPDIRECTUV=0,a.AMBIENTDIRECTUV=0,a.OPACITYDIRECTUV=0,a.EMISSIVEDIRECTUV=0,a.SPECULARDIRECTUV=0,a.LIGHTMAPDIRECTUV=0,this._diffuseTexture&&n.DiffuseTextureEnabled)if(this._diffuseTexture.isReadyOrNotBlocking())ni(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())ni(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())ni(this._opacityTexture,a,"OPACITY"),a.OPACITYRGB=this._opacityTexture.getAlphaFromRGB;else return!1;else a.OPACITY=!1;if(this._reflectionTexture&&n.ReflectionTextureEnabled?(a.ROUGHNESS=this._roughness>0,a.REFLECTIONOVERALPHA=this._useReflectionOverAlpha):(a.ROUGHNESS=!1,a.REFLECTIONOVERALPHA=!1),!Hf(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())ni(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())ni(this._lightmapTexture,a,"LIGHTMAP"),a.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,a.RGBDLIGHTMAP=this._lightmapTexture.isRGBD;else return!1;else a.LIGHTMAP=!1;if(this._specularTexture&&n.SpecularTextureEnabled)if(this._specularTexture.isReadyOrNotBlocking())ni(this._specularTexture,a,"SPECULAR"),a.GLOSSINESS=this._useGlossinessFromSpecularMapAlpha;else return!1;else a.SPECULAR=!1;if(s.getEngine().getCaps().standardDerivatives&&this._bumpTexture&&n.BumpTextureEnabled){if(this._bumpTexture.isReady())ni(this._bumpTexture,a,"BUMP"),a.PARALLAX=this._useParallax,a.PARALLAX_RHS=s.useRightHandedSystem,a.PARALLAXOCCLUSION=this._useParallaxOcclusion;else return!1;a.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap}else a.BUMP=!1,a.PARALLAX=!1,a.PARALLAX_RHS=!1,a.PARALLAXOCCLUSION=!1;if(this._refractionTexture&&n.RefractionTextureEnabled)if(this._refractionTexture.isReadyOrNotBlocking())a._needUVs=!0,a.REFRACTION=!0,a.REFRACTIONMAP_3D=this._refractionTexture.isCube,a.RGBDREFRACTION=this._refractionTexture.isRGBD,a.USE_LOCAL_REFRACTIONMAP_CUBIC=!!this._refractionTexture.boundingBoxSize;else return!1;else a.REFRACTION=!1;a.TWOSIDEDLIGHTING=!this._backFaceCulling&&this._twoSidedLighting}else a.DIFFUSE=!1,a.AMBIENT=!1,a.OPACITY=!1,a.REFLECTION=!1,a.EMISSIVE=!1,a.LIGHTMAP=!1,a.BUMP=!1,a.REFRACTION=!1;a.ALPHAFROMDIFFUSE=this._shouldUseAlphaFromDiffuseTexture(),a.EMISSIVEASILLUMINATION=this._useEmissiveAsIllumination,a.LINKEMISSIVEWITHDIFFUSE=this._linkEmissiveWithDiffuse,a.SPECULAROVERALPHA=this._useSpecularOverAlpha,a.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,a.ALPHATEST_AFTERALLALPHACOMPUTATIONS=this.transparencyMode!==null,a.ALPHABLEND=this.transparencyMode===null||this.needAlphaBlendingForMesh(e)}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=a,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh)return!1;if(a._areImageProcessingDirty&&this._imageProcessingConfiguration){if(!this._imageProcessingConfiguration.isReady())return!1;this._imageProcessingConfiguration.prepareDefines(a),a.IS_REFLECTION_LINEAR=this.reflectionTexture!=null&&!this.reflectionTexture.gammaSpace,a.IS_REFRACTION_LINEAR=this.refractionTexture!=null&&!this.refractionTexture.gammaSpace}if(a._areFresnelDirty&&(n.FresnelEnabled?(this._diffuseFresnelParameters||this._opacityFresnelParameters||this._emissiveFresnelParameters||this._refractionFresnelParameters||this._reflectionFresnelParameters)&&(a.DIFFUSEFRESNEL=this._diffuseFresnelParameters&&this._diffuseFresnelParameters.isEnabled,a.OPACITYFRESNEL=this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled,a.REFLECTIONFRESNEL=this._reflectionFresnelParameters&&this._reflectionFresnelParameters.isEnabled,a.REFLECTIONFRESNELFROMSPECULAR=this._useReflectionFresnelFromSpecular,a.REFRACTIONFRESNEL=this._refractionFresnelParameters&&this._refractionFresnelParameters.isEnabled,a.EMISSIVEFRESNEL=this._emissiveFresnelParameters&&this._emissiveFresnelParameters.isEnabled,a._needNormals=!0,a.FRESNEL=!0):a.FRESNEL=!1),a.AREALIGHTUSED||a.CLUSTLIGHT_BATCH){for(let f=0;f{m.push(`vp_${y}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,a,h,v));let T=a.toString(),S=t.effect,E=s.getEngine().createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:a.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Y4(),X4)),Promise.resolve().then(()=>(gX(),_X))]):await Promise.all([Promise.resolve().then(()=>(XX(),zX)),Promise.resolve().then(()=>(S5(),E5))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,E)if(this._onEffectCreatedObservable&&(iO.effect=E,iO.subMesh=t,this._onEffectCreatedObservable.notifyObservers(iO)),this.allowShaderHotSwapping&&S&&!E.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(E,a,this._materialContext)}return!t.effect||!t.effect.isReady()?!1:(a._renderId=s.getRenderId(),r._wasPreviouslyReady=!c,r._wasPreviouslyUsingInstances=i,this._checkScenePerformancePriority(),!0)}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("diffuseLeftColor",4),e.addUniform("diffuseRightColor",4),e.addUniform("opacityParts",4),e.addUniform("reflectionLeftColor",4),e.addUniform("reflectionRightColor",4),e.addUniform("refractionLeftColor",4),e.addUniform("refractionRightColor",4),e.addUniform("emissiveLeftColor",4),e.addUniform("emissiveRightColor",4),e.addUniform("vDiffuseInfos",2),e.addUniform("vAmbientInfos",2),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vSpecularInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("diffuseMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("specularMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("pointSize",1),e.addUniform("alphaCutOff",1),e.addUniform("refractionMatrix",16),e.addUniform("vRefractionInfos",4),e.addUniform("vRefractionPosition",3),e.addUniform("vRefractionSize",3),e.addUniform("vSpecularColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vDiffuseColor",4),e.addUniform("vAmbientColor",3),e.addUniform("cameraInfo",4),pp(e,!1,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var f;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e),this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(r.getEngine().currentRenderPassId,this._activeEffect,t,e,this);let o=r.activeCamera;o?this._uniformBuffer.updateFloat4("cameraInfo",o.minZ,o.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let l=this._mustRebind(r,a,i,t.visibility);js(t,a),this._vertexPullingMetadata&&Jf(a,this._vertexPullingMetadata);let c=this._uniformBuffer;if(l){if(this.bindViewProjection(a),!c.useUbo||!this.isFrozen||!c.isSync||i._drawWrapper._forceRebindOnNextCall){if(n.FresnelEnabled&&s.FRESNEL){if(this.diffuseFresnelParameters&&this.diffuseFresnelParameters.isEnabled&&(c.updateColor4("diffuseLeftColor",this.diffuseFresnelParameters.leftColor,this.diffuseFresnelParameters.power),c.updateColor4("diffuseRightColor",this.diffuseFresnelParameters.rightColor,this.diffuseFresnelParameters.bias)),this.opacityFresnelParameters&&this.opacityFresnelParameters.isEnabled){let d=Dn.Color3[0];d.set(this.opacityFresnelParameters.leftColor.toLuminance(),this.opacityFresnelParameters.rightColor.toLuminance(),this.opacityFresnelParameters.bias),c.updateColor4("opacityParts",d,this.opacityFresnelParameters.power)}this.reflectionFresnelParameters&&this.reflectionFresnelParameters.isEnabled&&(c.updateColor4("reflectionLeftColor",this.reflectionFresnelParameters.leftColor,this.reflectionFresnelParameters.power),c.updateColor4("reflectionRightColor",this.reflectionFresnelParameters.rightColor,this.reflectionFresnelParameters.bias)),this.refractionFresnelParameters&&this.refractionFresnelParameters.isEnabled&&(c.updateColor4("refractionLeftColor",this.refractionFresnelParameters.leftColor,this.refractionFresnelParameters.power),c.updateColor4("refractionRightColor",this.refractionFresnelParameters.rightColor,this.refractionFresnelParameters.bias)),this.emissiveFresnelParameters&&this.emissiveFresnelParameters.isEnabled&&(c.updateColor4("emissiveLeftColor",this.emissiveFresnelParameters.leftColor,this.emissiveFresnelParameters.power),c.updateColor4("emissiveRightColor",this.emissiveFresnelParameters.rightColor,this.emissiveFresnelParameters.bias))}if(r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&(c.updateFloat2("vDiffuseInfos",this._diffuseTexture.coordinatesIndex,this._diffuseTexture.level),si(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),si(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),si(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),ep(r,s,c,Ee.White(),this._reflectionTexture,!1,!1,!0,!1,!1,!1,this.roughness),(!this._reflectionTexture||!n.ReflectionTextureEnabled)&&c.updateFloat2("vReflectionInfos",0,this.roughness),this._emissiveTexture&&n.EmissiveTextureEnabled&&(c.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),si(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),si(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),si(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),si(this._bumpTexture,c,"bump"),r._mirroredCameraPosition?c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),this._refractionTexture&&n.RefractionTextureEnabled)){let d=1;if(this._refractionTexture.isCube||(c.updateMatrix("refractionMatrix",this._refractionTexture.getReflectionTextureMatrix()),this._refractionTexture.depth&&(d=this._refractionTexture.depth)),c.updateFloat4("vRefractionInfos",this._refractionTexture.level,this.indexOfRefraction,d,this.invertRefractionY?-1:1),this._refractionTexture.boundingBoxSize){let h=this._refractionTexture;c.updateVector3("vRefractionPosition",h.boundingBoxPosition),c.updateVector3("vRefractionSize",h.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:Ee.BlackReadOnly),c.updateColor4("vDiffuseColor",this.diffuseColor,this.alpha),r.ambientColor.multiplyToRef(this.ambientColor,this._globalAmbientColor),c.updateColor3("vAmbientColor",this._globalAmbientColor)}r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&a.setTexture("diffuseSampler",this._diffuseTexture),this._ambientTexture&&n.AmbientTextureEnabled&&a.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&n.OpacityTextureEnabled&&a.setTexture("opacitySampler",this._opacityTexture),this._reflectionTexture&&n.ReflectionTextureEnabled&&(this._reflectionTexture.isCube?a.setTexture("reflectionCubeSampler",this._reflectionTexture):a.setTexture("reflection2DSampler",this._reflectionTexture)),this._emissiveTexture&&n.EmissiveTextureEnabled&&a.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&n.LightmapTextureEnabled&&a.setTexture("lightmapSampler",this._lightmapTexture),this._specularTexture&&n.SpecularTextureEnabled&&a.setTexture("specularSampler",this._specularTexture),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&a.setTexture("bumpSampler",this._bumpTexture),this._refractionTexture&&n.RefractionTextureEnabled&&(this._refractionTexture.isCube?a.setTexture("refractionCubeSampler",this._refractionTexture):a.setTexture("refraction2DSampler",this._refractionTexture))),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ti.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),kf(r,t,a),s.NUM_MORPH_INFLUENCERS&&Jn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Gf(s,a,r),this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.applyByPostProcess&&this._imageProcessingConfiguration.bind(this._activeEffect)),this._afterBind(t,this._activeEffect,i),c.update()}getAnimatables(){let e=super.getAnimatables();return this._diffuseTexture&&this._diffuseTexture.animations&&this._diffuseTexture.animations.length>0&&e.push(this._diffuseTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._specularTexture&&this._specularTexture.animations&&this._specularTexture.animations.length>0&&e.push(this._specularTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),e}getActiveTextures(){let e=super.getActiveTextures();return this._diffuseTexture&&e.push(this._diffuseTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._specularTexture&&e.push(this._specularTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),this._refractionTexture&&e.push(this._refractionTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._diffuseTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._specularTexture===e||this._bumpTexture===e||this._lightmapTexture===e||this._refractionTexture===e)}dispose(e,t){var i,r,s,a,o,l,c,f,d;t&&((i=this._diffuseTexture)==null||i.dispose(),(r=this._ambientTexture)==null||r.dispose(),(s=this._opacityTexture)==null||s.dispose(),(a=this._reflectionTexture)==null||a.dispose(),(o=this._emissiveTexture)==null||o.dispose(),(l=this._specularTexture)==null||l.dispose(),(c=this._bumpTexture)==null||c.dispose(),(f=this._lightmapTexture)==null||f.dispose(),(d=this._refractionTexture)==null||d.dispose()),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.name=e,r.id=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return ce.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){ce.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return ce.DetailTextureEnabled}static set DetailTextureEnabled(e){ce.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return ce.AmbientTextureEnabled}static set AmbientTextureEnabled(e){ce.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return ce.OpacityTextureEnabled}static set OpacityTextureEnabled(e){ce.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return ce.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){ce.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return ce.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){ce.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return ce.SpecularTextureEnabled}static set SpecularTextureEnabled(e){ce.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return ce.BumpTextureEnabled}static set BumpTextureEnabled(e){ce.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return ce.LightmapTextureEnabled}static set LightmapTextureEnabled(e){ce.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return ce.RefractionTextureEnabled}static set RefractionTextureEnabled(e){ce.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return ce.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){ce.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return ce.FresnelEnabled}static set FresnelEnabled(e){ce.FresnelEnabled=e}};We.ForceGLSL=!1;P([Gt("diffuseTexture")],We.prototype,"_diffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"diffuseTexture",void 0);P([Gt("ambientTexture")],We.prototype,"_ambientTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"ambientTexture",void 0);P([Gt("opacityTexture")],We.prototype,"_opacityTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"opacityTexture",void 0);P([Gt("reflectionTexture")],We.prototype,"_reflectionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"reflectionTexture",void 0);P([Gt("emissiveTexture")],We.prototype,"_emissiveTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"emissiveTexture",void 0);P([Gt("specularTexture")],We.prototype,"_specularTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"specularTexture",void 0);P([Gt("bumpTexture")],We.prototype,"_bumpTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"bumpTexture",void 0);P([Gt("lightmapTexture")],We.prototype,"_lightmapTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"lightmapTexture",void 0);P([Gt("refractionTexture")],We.prototype,"_refractionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"refractionTexture",void 0);P([Ir("ambient")],We.prototype,"ambientColor",void 0);P([Ir("diffuse")],We.prototype,"diffuseColor",void 0);P([Ir("specular")],We.prototype,"specularColor",void 0);P([Ir("emissive")],We.prototype,"emissiveColor",void 0);P([F()],We.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],We.prototype,"_useAlphaFromDiffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],We.prototype,"_useEmissiveAsIllumination",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],We.prototype,"_linkEmissiveWithDiffuse",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],We.prototype,"_useSpecularOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],We.prototype,"_useReflectionOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],We.prototype,"_disableLighting",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],We.prototype,"_useObjectSpaceNormalMap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],We.prototype,"_useParallax",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],We.prototype,"_useParallaxOcclusion",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallaxOcclusion",void 0);P([F()],We.prototype,"parallaxScaleBias",void 0);P([F("roughness")],We.prototype,"_roughness",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"roughness",void 0);P([F()],We.prototype,"indexOfRefraction",void 0);P([F()],We.prototype,"invertRefractionY",void 0);P([F()],We.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],We.prototype,"_useLightmapAsShadowmap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useLightmapAsShadowmap",void 0);P([wm("diffuseFresnelParameters")],We.prototype,"_diffuseFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"diffuseFresnelParameters",void 0);P([wm("opacityFresnelParameters")],We.prototype,"_opacityFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelAndMiscDirty")],We.prototype,"opacityFresnelParameters",void 0);P([wm("reflectionFresnelParameters")],We.prototype,"_reflectionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"reflectionFresnelParameters",void 0);P([wm("refractionFresnelParameters")],We.prototype,"_refractionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"refractionFresnelParameters",void 0);P([wm("emissiveFresnelParameters")],We.prototype,"_emissiveFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],We.prototype,"_useReflectionFresnelFromSpecular",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],We.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],We.prototype,"_maxSimultaneousLights",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],We.prototype,"_invertNormalMapX",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],We.prototype,"_invertNormalMapY",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],We.prototype,"_twoSidedLighting",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],We.prototype,"_applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],We.prototype,"applyDecalMapAfterDetailMap",void 0);Ut("BABYLON.StandardMaterial",We);ti.DefaultMaterialFactory=n=>new We("default material",n)});var T5=I(()=>{Eo();vs();Ws();bt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Vi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?Cn(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?Cn(e,this._caps.maxTextureSize):e),r.width=n,r.height=e,r.isReady=!1,r.generateMipMaps=t,r.samplingMode=i,this.updateTextureSamplingMode(i,r),this._internalTexturesCache.push(r),r};bt.prototype.updateDynamicTexture=function(n,e,t,i=!1,r,s=!1,a=!1){if(!n)return;let o=this._gl,l=o.TEXTURE_2D,c=this._bindTextureDirectly(l,n,!0,s);this._unpackFlipY(t===void 0?n.invertY:t),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);let f=this._getWebGLTextureType(n.type),d=this._getInternalFormat(r||n.format),h=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,h,d,f,e),n.generateMipMaps&&o.generateMipmap(l),c||this._bindTextureDirectly(l,null),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),r&&(n.format=r),n._dynamicTextureSource=e,n._premulAlpha=i,n.invertY=t||!1,n.isReady=!0}});var xb,A5=I(()=>{Lt();Xr();T5();xb=class n extends _e{constructor(e,t,i,r=!1,s=3,a=5,o){let l=!i||i._isScene,c=l?i:i==null?void 0:i.scene,f=l?!r:i;super(null,c,f,o,s,void 0,void 0,void 0,void 0,a),this.name=e,this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE,this._generateMipMaps=r;let d=this._getEngine();if(!d)return;if(t.getContext)this._canvas=t,this._ownCanvas=!1,this._texture=d.createDynamicTexture(this._canvas.width,this._canvas.height,r,s);else{this._canvas=d.createCanvas(1,1),this._ownCanvas=!0;let u=t;u.width||u.width===0?this._texture=d.createDynamicTexture(u.width,u.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let h=this.getSize();this._canvas.width!==h.width&&(this._canvas.width=h.width),this._canvas.height!==h.height&&(this._canvas.height=h.height),this._context=this._canvas.getContext("2d")}getClassName(){return"DynamicTexture"}get canRescale(){return!0}_recreate(e){this._canvas.width=e.width,this._canvas.height=e.height,this.releaseInternalTexture(),this._texture=this._getEngine().createDynamicTexture(e.width,e.height,this._generateMipMaps,this.samplingMode)}scale(e){let t=this.getSize();t.width*=e,t.height*=e,this._recreate(t)}scaleTo(e,t){let i=this.getSize();i.width=e,i.height=t,this._recreate(i)}getContext(){return this._context}clear(e){let t=this.getSize();e&&(this._context.fillStyle=e),this._context.clearRect(0,0,t.width,t.height)}update(e,t=!1,i=!1){this._texture&&this._getEngine().updateDynamicTexture(this._texture,this._canvas,e===void 0?!0:e,t,this._format||void 0,void 0,i)}drawText(e,t,i,r,s,a,o,l=!0){let c=this.getSize();if(a&&(this._context.fillStyle=a,this._context.fillRect(0,0,c.width,c.height)),this._context.font=r,t==null){let f=this._context.measureText(e);t=(c.width-f.width)/2}if(i==null){let f=parseInt(r.replace(/\D/g,""));i=c.height/2+f/3.65}this._context.fillStyle=s||"",this._context.fillText(e,t,i),l&&this.update(o)}dispose(){var e,t;super.dispose(),this._ownCanvas&&((t=(e=this._canvas)==null?void 0:e.remove)==null||t.call(e)),this._canvas=null,this._context=null}clone(){let e=this.getScene();if(!e)return this;let t=this.getSize(),i=new n(this.name,t,e,this._generateMipMaps);return i.hasAlpha=this.hasAlpha,i.level=this.level,i.wrapU=this.wrapU,i.wrapV=this.wrapV,i}serialize(){let e=this.getScene();e&&!e.isReady()&&ee.Warn("The scene must be ready before serializing the dynamic texture");let t=super.serialize();return n._IsCanvasElement(this._canvas)&&(t.base64String=this._canvas.toDataURL()),t.invertY=this._invertY,t.samplingMode=this.samplingMode,t}static _IsCanvasElement(e){return e.toDataURL!==void 0}_rebuild(){this.update()}}});function bb(n,e,t,i,r,s=!1){let a=en.Zero();return Nv(n,e,t,i,a,r,s),a}function Nv(n,e,t,i,r,s,a=!1,o=!1){let l=n.getEngine();if(!s&&!(s=n.activeCamera)&&!(s=n.cameraToUseForPointers))return n;let c=s.viewport,f=l.getRenderHeight(),{x:d,y:h,width:u,height:m}=c.toGlobal(l.getRenderWidth(),f),_=1/l.getHardwareScalingLevel();return e=e*_-d,t=t*_-(f-h-m),r.update(e,t,u,m,i||Z.IdentityReadOnly,a?Z.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function b5(n,e,t,i){let r=en.Zero();return aO(n,e,t,r,i),r}function aO(n,e,t,i,r){if(!Ts)return n;let s=n.getEngine();if(!r&&!(r=n.activeCamera)&&!(r=n.cameraToUseForPointers))throw new Error("Active camera not set");let a=r.viewport,o=s.getRenderHeight(),{x:l,y:c,width:f,height:d}=a.toGlobal(s.getRenderWidth(),o),h=Z.Identity(),u=1/s.getHardwareScalingLevel();return e=e*u-l,t=t*u-(o-c-d),i.update(e,t,f,d,h,h,r.getProjectionMatrix()),n}function Rb(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return oO(n,t,i,l,r,s,a,o)}function oO(n,e,t,i,r,s,a,o){let l=e.intersects(i,r,a,s,t,o);return!l||!l.hit||!r&&n!=null&&l.distance>=n.distance?null:l}function Lue(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function M5(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?Lue(e,n):0}}function I5(n,e,t,i,r){let s=n(t,e.enableDistantPicking);return!s.intersectsSphere(i.boundingSphere,r)||!s.intersectsBox(i.boundingBox,r)?null:s}function lO(n,e,t,i,r,s){let a=null,o=!!(n.activeCameras&&n.activeCameras.length>1&&n.cameraToUseForPointers!==n.activeCamera),l=n.cameraToUseForPointers||n.activeCamera,c=R5.internalPickerForMesh||Rb,f=c===Rb;for(let d=0;d>4);for(let A=0;A1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=R5.internalPickerForMesh||Rb,l=o===Rb;for(let c=0;c>4);for(let S=0;S(n._tempPickingRay||(n._tempPickingRay=en.Zero()),Nv(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=bb(n,e,t,Z.Identity(),s||null)),a}function P5(n,e,t,i,r,s,a,o=!1){let l=lO(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=en.Zero()),Nv(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=bb(n,e,t,Z.Identity(),s||null)),l}function D5(n,e,t,i,r){let s=lO(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=en.Zero()),en.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function L5(n,e,t,i,r,s){return y5(n,a=>bb(n,e,t,a,r||null),i,s)}function O5(n,e,t,i){return y5(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=en.Zero()),en.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function x5(n,e,t=100,i,r){i||(i=n.getWorldMatrix()),e.length=t,r?e.origin.copyFrom(r):e.origin.copyFrom(n.position);let s=$.Vector3[2];s.set(0,0,n._scene.useRightHandedSystem?-1:1);let a=$.Vector3[3];return b.TransformNormalToRef(s,i,a),b.NormalizeToRef(a,e.direction),e}function N5(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return x5(this,new en(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return x5(this,t,i,r,s)}),n&&(bh._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return bb(this,t,i,r,s,a)})}var R5,en,cO=I(()=>{Kn();ke();pl();DD();jg();Gi();UP();R5={internalPickerForMesh:void 0},en=class n{constructor(e,t,i=Number.MAX_VALUE,r=Ft){this.origin=e,this.direction=t,this.length=i,this.epsilon=r}clone(){return new n(this.origin.clone(),this.direction.clone(),this.length)}intersectsBoxMinMax(e,t,i=0){let r=n._TmpVector3[0].copyFromFloats(e.x-i,e.y-i,e.z-i),s=n._TmpVector3[1].copyFromFloats(t.x+i,t.y+i,t.z+i),a=0,o=Number.MAX_VALUE,l,c,f,d;if(Math.abs(this.direction.x)<1e-7){if(this.origin.xs.x)return!1}else if(l=1/this.direction.x,c=(r.x-this.origin.x)*l,f=(s.x-this.origin.x)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.ys.y)return!1}else if(l=1/this.direction.y,c=(r.y-this.origin.y)*l,f=(s.y-this.origin.y)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.zs.z)return!1}else if(l=1/this.direction.z,c=(r.z-this.origin.z)*l,f=(s.z-this.origin.z)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;return!0}intersectsBox(e,t=0){return this.intersectsBoxMinMax(e.minimum,e.maximum,t)}intersectsSphere(e,t=0){let i=e.center.x-this.origin.x,r=e.center.y-this.origin.y,s=e.center.z-this.origin.z,a=i*i+r*r+s*s,o=e.radius+t,l=o*o;if(a<=l)return!0;let c=i*this.direction.x+r*this.direction.y+s*this.direction.z;return c<0?!1:a-c*c<=l}intersectsTriangle(e,t,i){let r=n._TmpVector3[0],s=n._TmpVector3[1],a=n._TmpVector3[2],o=n._TmpVector3[3],l=n._TmpVector3[4];t.subtractToRef(e,r),i.subtractToRef(e,s),b.CrossToRef(this.direction,s,a);let c=b.Dot(r,a);if(c===0)return null;let f=1/c;this.origin.subtractToRef(e,o);let d=b.Dot(o,a)*f;if(d<-this.epsilon||d>1+this.epsilon)return null;b.CrossToRef(o,r,l);let h=b.Dot(this.direction,l)*f;if(h<-this.epsilon||d+h>1+this.epsilon)return null;let u=b.Dot(s,l)*f;return u>this.length||u<0?null:new Ih(1-d-h,d,u)}intersectsPlane(e){let t,i=b.Dot(e.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;{let r=b.Dot(e.normal,this.origin);return t=(-e.d-r)/i,t<0?t<-999999997475243e-21?null:0:t}}intersectsAxis(e,t=0){switch(e){case"y":{let i=(this.origin.y-t)/this.direction.y;return i>0?null:new b(this.origin.x+this.direction.x*-i,t,this.origin.z+this.direction.z*-i)}case"x":{let i=(this.origin.x-t)/this.direction.x;return i>0?null:new b(t,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i)}case"z":{let i=(this.origin.z-t)/this.direction.z;return i>0?null:new b(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,t)}default:return null}}intersectsMesh(e,t,i,r=!1,s,a=!1){let o=$.Matrix[0];return e.getWorldMatrix().invertToRef(o),this._tmpRay?n.TransformToRef(this,o,this._tmpRay):this._tmpRay=n.Transform(this,o),e.intersects(this._tmpRay,t,i,r,s,a)}intersectsMeshes(e,t,i){i?i.length=0:i=[];for(let r=0;rt.distance?1:0}intersectionSegment(e,t,i){let r=this.origin,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2],l=$.Vector3[3];t.subtractToRef(e,s),this.direction.scaleToRef(n._Rayl,o),r.addToRef(o,a),e.subtractToRef(r,l);let c=b.Dot(s,s),f=b.Dot(s,o),d=b.Dot(o,o),h=b.Dot(s,l),u=b.Dot(o,l),m=c*d-f*f,_,p=m,g,v=m;mp&&(_=p,g=u+f,v=d)),g<0?(g=0,-h<0?_=0:-h>c?_=p:(_=-h,p=c)):g>v&&(g=v,-h+f<0?_=0:-h+f>c?_=p:(_=-h+f,p=c));let T=Math.abs(_)0&&S<=this.length&&R.lengthSquared(){Ys();Rl();cO();cO();N5(ti,gt);ti.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return Nv(this,n,e,t,i,r,s,a)};ti.prototype.createPickingRayInCameraSpace=function(n,e,t){return b5(this,n,e,t)};ti.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return aO(this,n,e,t,i)};ti.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return C5(this,n,e,t,i,r)};ti.prototype.pick=function(n,e,t,i,r,s,a=!1){return P5(this,n,e,t,i,r,s,a)};ti.prototype.pickWithRay=function(n,e,t,i){return D5(this,n,e,t,i)};ti.prototype.multiPick=function(n,e,t,i,r){return L5(this,n,e,t,i,r)};ti.prototype.multiPickWithRay=function(n,e,t){return O5(this,n,e,t)}});var w5,Oue,dO=I(()=>{k();w5="kernelBlurVaryingDeclaration",Oue="varying sampleCoord{X}: vec2f;";x.IncludesShadersStoreWGSL[w5]||(x.IncludesShadersStoreWGSL[w5]=Oue)});var F5,Nue,Mb=I(()=>{k();F5="packingFunctions",Nue=`fn pack(depth: f32)->vec4f +`;x.ShadersStore[tO]||(x.ShadersStore[tO]=v5);Due={name:tO,shader:v5}});var iO,rO,nO,sO,We,Gc=I(()=>{Wt();kt();Mo();Ys();zt();Zi();AR();xR();Kg();ts();ja();uv();$i();Ya();Qf();UL();Ml();mv();es();Dr();RR();bR();MR();IR();iO={effect:null,subMesh:null},rO=class extends yp(Ip(Lr)){},nO=class extends bp(rO){constructor(e){super(e),this.DIFFUSE=!1,this.DIFFUSEDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.OPACITY=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.REFLECTION=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.SPECULAR=!1,this.SPECULARDIRECTUV=0,this.BUMP=!1,this.BUMPDIRECTUV=0,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.SPECULAROVERALPHA=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHAFROMDIFFUSE=!1,this.POINTSIZE=!1,this.FOG=!1,this.SPECULARTERM=!1,this.DIFFUSEFRESNEL=!1,this.OPACITYFRESNEL=!1,this.REFLECTIONFRESNEL=!1,this.REFRACTIONFRESNEL=!1,this.EMISSIVEFRESNEL=!1,this.FRESNEL=!1,this.NORMAL=!1,this.TANGENT=!1,this.VERTEXCOLOR=!1,this.VERTEXALPHA=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.GLOSSINESS=!1,this.ROUGHNESS=!1,this.EMISSIVEASILLUMINATION=!1,this.LINKEMISSIVEWITHDIFFUSE=!1,this.REFLECTIONFRESNELFROMSPECULAR=!1,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.USELIGHTMAPASSHADOWMAP=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.INVERTCUBICMAP=!1,this.LOGARITHMICDEPTH=!1,this.REFRACTION=!1,this.REFRACTIONMAP_3D=!1,this.REFLECTIONOVERALPHA=!1,this.TWOSIDEDLIGHTING=!1,this.SHADOWFLOAT=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.NONUNIFORMSCALING=!1,this.PREMULTIPLYALPHA=!1,this.ALPHATEST_AFTERALLALPHACOMPUTATIONS=!1,this.ALPHABLEND=!0,this.RGBDLIGHTMAP=!1,this.RGBDREFLECTION=!1,this.RGBDREFRACTION=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.IS_REFLECTION_LINEAR=!1,this.IS_REFRACTION_LINEAR=!1,this.DECAL_AFTER_DETAIL=!1,this.rebuild()}},sO=class extends Cp(Pl){},We=class n extends sO{get isPrePassCapable(){return!this.disableDepthWrite}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._diffuseTexture=null,this._ambientTexture=null,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._specularTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._refractionTexture=null,this.ambientColor=new Ee(0,0,0),this.diffuseColor=new Ee(1,1,1),this.specularColor=new Ee(1,1,1),this.emissiveColor=new Ee(0,0,0),this.specularPower=64,this._useAlphaFromDiffuseTexture=!1,this._useEmissiveAsIllumination=!1,this._linkEmissiveWithDiffuse=!1,this._useSpecularOverAlpha=!1,this._useReflectionOverAlpha=!1,this._disableLighting=!1,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this._roughness=0,this.indexOfRefraction=.98,this.invertRefractionY=!0,this.alphaCutOff=.4,this._useLightmapAsShadowmap=!1,this._useReflectionFresnelFromSpecular=!1,this._useGlossinessFromSpecularMapAlpha=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._applyDecalMapAfterDetailMap=!1,this._shadersLoaded=!1,this._vertexPullingMetadata=null,this._renderTargets=new Xi(16),this._globalAmbientColor=new Ee(0,0,0),this._cacheHasRenderTargetTextures=!1,this.detailMap=new Za(this),this._attachImageProcessingConfiguration(null),this.prePassConfiguration=new $s,this.getRenderTargetTextures=()=>(this._renderTargets.reset(),n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&this._renderTargets.push(this._refractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets)}get hasRenderTargetTextures(){return n.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget||n.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}getClassName(){return"StandardMaterial"}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromDiffuseTexture()||this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled}needAlphaTesting(){return this._hasTransparencyMode?this._transparencyModeIsTest:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===Se.MATERIAL_ALPHATEST)}_shouldUseAlphaFromDiffuseTexture(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha&&this._useAlphaFromDiffuseTexture&&this._transparencyMode!==Se.MATERIAL_OPAQUE}_hasAlphaChannel(){return this._diffuseTexture!=null&&this._diffuseTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._diffuseTexture}isReadyForSubMesh(e,t,i=!1){this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new nO(this._eventInfo.defineNames));let s=this.getScene(),a=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let o=s.getEngine();if(a._needNormals=lp(s,e,a,!0,this._maxSimultaneousLights,this._disableLighting),!op(s,e,this._maxSimultaneousLights,this._disableLighting))return!1;dp(s,a);let l=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(s,a,this.canRenderToMRT&&!l),hp(s,a,l),ss.PrepareDefines(o.currentRenderPassId,e,a),a._areTexturesDirty){this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a._needUVs=!1;for(let f=1;f<=6;++f)a["MAINUV"+f]=!1;if(s.texturesEnabled){if(a.DIFFUSEDIRECTUV=0,a.BUMPDIRECTUV=0,a.AMBIENTDIRECTUV=0,a.OPACITYDIRECTUV=0,a.EMISSIVEDIRECTUV=0,a.SPECULARDIRECTUV=0,a.LIGHTMAPDIRECTUV=0,this._diffuseTexture&&n.DiffuseTextureEnabled)if(this._diffuseTexture.isReadyOrNotBlocking())ni(this._diffuseTexture,a,"DIFFUSE");else return!1;else a.DIFFUSE=!1;if(this._ambientTexture&&n.AmbientTextureEnabled)if(this._ambientTexture.isReadyOrNotBlocking())ni(this._ambientTexture,a,"AMBIENT");else return!1;else a.AMBIENT=!1;if(this._opacityTexture&&n.OpacityTextureEnabled)if(this._opacityTexture.isReadyOrNotBlocking())ni(this._opacityTexture,a,"OPACITY"),a.OPACITYRGB=this._opacityTexture.getAlphaFromRGB;else return!1;else a.OPACITY=!1;if(this._reflectionTexture&&n.ReflectionTextureEnabled?(a.ROUGHNESS=this._roughness>0,a.REFLECTIONOVERALPHA=this._useReflectionOverAlpha):(a.ROUGHNESS=!1,a.REFLECTIONOVERALPHA=!1),!Hf(s,this._reflectionTexture,a))return!1;if(this._emissiveTexture&&n.EmissiveTextureEnabled)if(this._emissiveTexture.isReadyOrNotBlocking())ni(this._emissiveTexture,a,"EMISSIVE");else return!1;else a.EMISSIVE=!1;if(this._lightmapTexture&&n.LightmapTextureEnabled)if(this._lightmapTexture.isReadyOrNotBlocking())ni(this._lightmapTexture,a,"LIGHTMAP"),a.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,a.RGBDLIGHTMAP=this._lightmapTexture.isRGBD;else return!1;else a.LIGHTMAP=!1;if(this._specularTexture&&n.SpecularTextureEnabled)if(this._specularTexture.isReadyOrNotBlocking())ni(this._specularTexture,a,"SPECULAR"),a.GLOSSINESS=this._useGlossinessFromSpecularMapAlpha;else return!1;else a.SPECULAR=!1;if(s.getEngine().getCaps().standardDerivatives&&this._bumpTexture&&n.BumpTextureEnabled){if(this._bumpTexture.isReady())ni(this._bumpTexture,a,"BUMP"),a.PARALLAX=this._useParallax,a.PARALLAX_RHS=s.useRightHandedSystem,a.PARALLAXOCCLUSION=this._useParallaxOcclusion;else return!1;a.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap}else a.BUMP=!1,a.PARALLAX=!1,a.PARALLAX_RHS=!1,a.PARALLAXOCCLUSION=!1;if(this._refractionTexture&&n.RefractionTextureEnabled)if(this._refractionTexture.isReadyOrNotBlocking())a._needUVs=!0,a.REFRACTION=!0,a.REFRACTIONMAP_3D=this._refractionTexture.isCube,a.RGBDREFRACTION=this._refractionTexture.isRGBD,a.USE_LOCAL_REFRACTIONMAP_CUBIC=!!this._refractionTexture.boundingBoxSize;else return!1;else a.REFRACTION=!1;a.TWOSIDEDLIGHTING=!this._backFaceCulling&&this._twoSidedLighting}else a.DIFFUSE=!1,a.AMBIENT=!1,a.OPACITY=!1,a.REFLECTION=!1,a.EMISSIVE=!1,a.LIGHTMAP=!1,a.BUMP=!1,a.REFRACTION=!1;a.ALPHAFROMDIFFUSE=this._shouldUseAlphaFromDiffuseTexture(),a.EMISSIVEASILLUMINATION=this._useEmissiveAsIllumination,a.LINKEMISSIVEWITHDIFFUSE=this._linkEmissiveWithDiffuse,a.SPECULAROVERALPHA=this._useSpecularOverAlpha,a.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,a.ALPHATEST_AFTERALLALPHACOMPUTATIONS=this.transparencyMode!==null,a.ALPHABLEND=this.transparencyMode===null||this.needAlphaBlendingForMesh(e)}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=a,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh)return!1;if(a._areImageProcessingDirty&&this._imageProcessingConfiguration){if(!this._imageProcessingConfiguration.isReady())return!1;this._imageProcessingConfiguration.prepareDefines(a),a.IS_REFLECTION_LINEAR=this.reflectionTexture!=null&&!this.reflectionTexture.gammaSpace,a.IS_REFRACTION_LINEAR=this.refractionTexture!=null&&!this.refractionTexture.gammaSpace}if(a._areFresnelDirty&&(n.FresnelEnabled?(this._diffuseFresnelParameters||this._opacityFresnelParameters||this._emissiveFresnelParameters||this._refractionFresnelParameters||this._reflectionFresnelParameters)&&(a.DIFFUSEFRESNEL=this._diffuseFresnelParameters&&this._diffuseFresnelParameters.isEnabled,a.OPACITYFRESNEL=this._opacityFresnelParameters&&this._opacityFresnelParameters.isEnabled,a.REFLECTIONFRESNEL=this._reflectionFresnelParameters&&this._reflectionFresnelParameters.isEnabled,a.REFLECTIONFRESNELFROMSPECULAR=this._useReflectionFresnelFromSpecular,a.REFRACTIONFRESNEL=this._refractionFresnelParameters&&this._refractionFresnelParameters.isEnabled,a.EMISSIVEFRESNEL=this._emissiveFresnelParameters&&this._emissiveFresnelParameters.isEnabled,a._needNormals=!0,a.FRESNEL=!0):a.FRESNEL=!1),a.AREALIGHTUSED||a.CLUSTLIGHT_BATCH){for(let f=0;f{m.push(`vp_${y}_info`)}))}else this._vertexPullingMetadata=null;let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,a,h,v));let T=a.toString(),S=t.effect,E=s.getEngine().createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:d,onCompiled:this.onCompiled,onError:this.onError,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:a.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(Y4(),X4)),Promise.resolve().then(()=>(gX(),_X))]):await Promise.all([Promise.resolve().then(()=>(XX(),zX)),Promise.resolve().then(()=>(S5(),E5))]),this._shadersLoaded=!0}},o);if(this._eventInfo.customCode=void 0,E)if(this._onEffectCreatedObservable&&(iO.effect=E,iO.subMesh=t,this._onEffectCreatedObservable.notifyObservers(iO)),this.allowShaderHotSwapping&&S&&!E.isReady()){if(a.markAsUnprocessed(),c=this.isFrozen,f)return a._areLightsDisposed=!0,!1}else s.resetCachedMaterial(),t.setEffect(E,a,this._materialContext)}return!t.effect||!t.effect.isReady()?!1:(a._renderId=s.getRenderId(),r._wasPreviouslyReady=!c,r._wasPreviouslyUsingInstances=i,this._checkScenePerformancePriority(),!0)}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("diffuseLeftColor",4),e.addUniform("diffuseRightColor",4),e.addUniform("opacityParts",4),e.addUniform("reflectionLeftColor",4),e.addUniform("reflectionRightColor",4),e.addUniform("refractionLeftColor",4),e.addUniform("refractionRightColor",4),e.addUniform("emissiveLeftColor",4),e.addUniform("emissiveRightColor",4),e.addUniform("vDiffuseInfos",2),e.addUniform("vAmbientInfos",2),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vSpecularInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("diffuseMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("specularMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("pointSize",1),e.addUniform("alphaCutOff",1),e.addUniform("refractionMatrix",16),e.addUniform("vRefractionInfos",4),e.addUniform("vRefractionPosition",3),e.addUniform("vRefractionSize",3),e.addUniform("vSpecularColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vDiffuseColor",4),e.addUniform("vAmbientColor",3),e.addUniform("cameraInfo",4),pp(e,!1,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var f;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e),this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(r.getEngine().currentRenderPassId,this._activeEffect,t,e,this);let o=r.activeCamera;o?this._uniformBuffer.updateFloat4("cameraInfo",o.minZ,o.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let l=this._mustRebind(r,a,i,t.visibility);js(t,a),this._vertexPullingMetadata&&Jf(a,this._vertexPullingMetadata);let c=this._uniformBuffer;if(l){if(this.bindViewProjection(a),!c.useUbo||!this.isFrozen||!c.isSync||i._drawWrapper._forceRebindOnNextCall){if(n.FresnelEnabled&&s.FRESNEL){if(this.diffuseFresnelParameters&&this.diffuseFresnelParameters.isEnabled&&(c.updateColor4("diffuseLeftColor",this.diffuseFresnelParameters.leftColor,this.diffuseFresnelParameters.power),c.updateColor4("diffuseRightColor",this.diffuseFresnelParameters.rightColor,this.diffuseFresnelParameters.bias)),this.opacityFresnelParameters&&this.opacityFresnelParameters.isEnabled){let d=Dn.Color3[0];d.set(this.opacityFresnelParameters.leftColor.toLuminance(),this.opacityFresnelParameters.rightColor.toLuminance(),this.opacityFresnelParameters.bias),c.updateColor4("opacityParts",d,this.opacityFresnelParameters.power)}this.reflectionFresnelParameters&&this.reflectionFresnelParameters.isEnabled&&(c.updateColor4("reflectionLeftColor",this.reflectionFresnelParameters.leftColor,this.reflectionFresnelParameters.power),c.updateColor4("reflectionRightColor",this.reflectionFresnelParameters.rightColor,this.reflectionFresnelParameters.bias)),this.refractionFresnelParameters&&this.refractionFresnelParameters.isEnabled&&(c.updateColor4("refractionLeftColor",this.refractionFresnelParameters.leftColor,this.refractionFresnelParameters.power),c.updateColor4("refractionRightColor",this.refractionFresnelParameters.rightColor,this.refractionFresnelParameters.bias)),this.emissiveFresnelParameters&&this.emissiveFresnelParameters.isEnabled&&(c.updateColor4("emissiveLeftColor",this.emissiveFresnelParameters.leftColor,this.emissiveFresnelParameters.power),c.updateColor4("emissiveRightColor",this.emissiveFresnelParameters.rightColor,this.emissiveFresnelParameters.bias))}if(r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&(c.updateFloat2("vDiffuseInfos",this._diffuseTexture.coordinatesIndex,this._diffuseTexture.level),si(this._diffuseTexture,c,"diffuse")),this._ambientTexture&&n.AmbientTextureEnabled&&(c.updateFloat2("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level),si(this._ambientTexture,c,"ambient")),this._opacityTexture&&n.OpacityTextureEnabled&&(c.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),si(this._opacityTexture,c,"opacity")),this._hasAlphaChannel()&&c.updateFloat("alphaCutOff",this.alphaCutOff),ep(r,s,c,Ee.White(),this._reflectionTexture,!1,!1,!0,!1,!1,!1,this.roughness),(!this._reflectionTexture||!n.ReflectionTextureEnabled)&&c.updateFloat2("vReflectionInfos",0,this.roughness),this._emissiveTexture&&n.EmissiveTextureEnabled&&(c.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),si(this._emissiveTexture,c,"emissive")),this._lightmapTexture&&n.LightmapTextureEnabled&&(c.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),si(this._lightmapTexture,c,"lightmap")),this._specularTexture&&n.SpecularTextureEnabled&&(c.updateFloat2("vSpecularInfos",this._specularTexture.coordinatesIndex,this._specularTexture.level),si(this._specularTexture,c,"specular")),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&(c.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,1/this._bumpTexture.level,this.parallaxScaleBias),si(this._bumpTexture,c,"bump"),r._mirroredCameraPosition?c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):c.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),this._refractionTexture&&n.RefractionTextureEnabled)){let d=1;if(this._refractionTexture.isCube||(c.updateMatrix("refractionMatrix",this._refractionTexture.getReflectionTextureMatrix()),this._refractionTexture.depth&&(d=this._refractionTexture.depth)),c.updateFloat4("vRefractionInfos",this._refractionTexture.level,this.indexOfRefraction,d,this.invertRefractionY?-1:1),this._refractionTexture.boundingBoxSize){let h=this._refractionTexture;c.updateVector3("vRefractionPosition",h.boundingBoxPosition),c.updateVector3("vRefractionSize",h.boundingBoxSize)}}this.pointsCloud&&c.updateFloat("pointSize",this.pointSize),c.updateColor4("vSpecularColor",this.specularColor,this.specularPower),c.updateColor3("vEmissiveColor",n.EmissiveTextureEnabled?this.emissiveColor:Ee.BlackReadOnly),c.updateColor4("vDiffuseColor",this.diffuseColor,this.alpha),r.ambientColor.multiplyToRef(this.ambientColor,this._globalAmbientColor),c.updateColor3("vAmbientColor",this._globalAmbientColor)}r.texturesEnabled&&(this._diffuseTexture&&n.DiffuseTextureEnabled&&a.setTexture("diffuseSampler",this._diffuseTexture),this._ambientTexture&&n.AmbientTextureEnabled&&a.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&n.OpacityTextureEnabled&&a.setTexture("opacitySampler",this._opacityTexture),this._reflectionTexture&&n.ReflectionTextureEnabled&&(this._reflectionTexture.isCube?a.setTexture("reflectionCubeSampler",this._reflectionTexture):a.setTexture("reflection2DSampler",this._reflectionTexture)),this._emissiveTexture&&n.EmissiveTextureEnabled&&a.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&n.LightmapTextureEnabled&&a.setTexture("lightmapSampler",this._lightmapTexture),this._specularTexture&&n.SpecularTextureEnabled&&a.setTexture("specularSampler",this._specularTexture),this._bumpTexture&&r.getEngine().getCaps().standardDerivatives&&n.BumpTextureEnabled&&a.setTexture("bumpSampler",this._bumpTexture),this._refractionTexture&&n.RefractionTextureEnabled&&(this._refractionTexture.isCube?a.setTexture("refractionCubeSampler",this._refractionTexture):a.setTexture("refraction2DSampler",this._refractionTexture))),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(a,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(l||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,a,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ti.FOGMODE_NONE||this._reflectionTexture||this._refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),kf(r,t,a),s.NUM_MORPH_INFLUENCERS&&Jn(t,a),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((f=t.bakedVertexAnimationManager)==null||f.bind(a,s.INSTANCES)),this.useLogarithmicDepth&&Gf(s,a,r),this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.applyByPostProcess&&this._imageProcessingConfiguration.bind(this._activeEffect)),this._afterBind(t,this._activeEffect,i),c.update()}getAnimatables(){let e=super.getAnimatables();return this._diffuseTexture&&this._diffuseTexture.animations&&this._diffuseTexture.animations.length>0&&e.push(this._diffuseTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._specularTexture&&this._specularTexture.animations&&this._specularTexture.animations.length>0&&e.push(this._specularTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),e}getActiveTextures(){let e=super.getActiveTextures();return this._diffuseTexture&&e.push(this._diffuseTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._specularTexture&&e.push(this._specularTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),this._refractionTexture&&e.push(this._refractionTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._diffuseTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._specularTexture===e||this._bumpTexture===e||this._lightmapTexture===e||this._refractionTexture===e)}dispose(e,t){var i,r,s,a,o,l,c,f,d;t&&((i=this._diffuseTexture)==null||i.dispose(),(r=this._ambientTexture)==null||r.dispose(),(s=this._opacityTexture)==null||s.dispose(),(a=this._reflectionTexture)==null||a.dispose(),(o=this._emissiveTexture)==null||o.dispose(),(l=this._specularTexture)==null||l.dispose(),(c=this._bumpTexture)==null||c.dispose(),(f=this._lightmapTexture)==null||f.dispose(),(d=this._refractionTexture)==null||d.dispose()),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.name=e,r.id=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}static get DiffuseTextureEnabled(){return ce.DiffuseTextureEnabled}static set DiffuseTextureEnabled(e){ce.DiffuseTextureEnabled=e}static get DetailTextureEnabled(){return ce.DetailTextureEnabled}static set DetailTextureEnabled(e){ce.DetailTextureEnabled=e}static get AmbientTextureEnabled(){return ce.AmbientTextureEnabled}static set AmbientTextureEnabled(e){ce.AmbientTextureEnabled=e}static get OpacityTextureEnabled(){return ce.OpacityTextureEnabled}static set OpacityTextureEnabled(e){ce.OpacityTextureEnabled=e}static get ReflectionTextureEnabled(){return ce.ReflectionTextureEnabled}static set ReflectionTextureEnabled(e){ce.ReflectionTextureEnabled=e}static get EmissiveTextureEnabled(){return ce.EmissiveTextureEnabled}static set EmissiveTextureEnabled(e){ce.EmissiveTextureEnabled=e}static get SpecularTextureEnabled(){return ce.SpecularTextureEnabled}static set SpecularTextureEnabled(e){ce.SpecularTextureEnabled=e}static get BumpTextureEnabled(){return ce.BumpTextureEnabled}static set BumpTextureEnabled(e){ce.BumpTextureEnabled=e}static get LightmapTextureEnabled(){return ce.LightmapTextureEnabled}static set LightmapTextureEnabled(e){ce.LightmapTextureEnabled=e}static get RefractionTextureEnabled(){return ce.RefractionTextureEnabled}static set RefractionTextureEnabled(e){ce.RefractionTextureEnabled=e}static get ColorGradingTextureEnabled(){return ce.ColorGradingTextureEnabled}static set ColorGradingTextureEnabled(e){ce.ColorGradingTextureEnabled=e}static get FresnelEnabled(){return ce.FresnelEnabled}static set FresnelEnabled(e){ce.FresnelEnabled=e}};We.ForceGLSL=!1;P([Gt("diffuseTexture")],We.prototype,"_diffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"diffuseTexture",void 0);P([Gt("ambientTexture")],We.prototype,"_ambientTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"ambientTexture",void 0);P([Gt("opacityTexture")],We.prototype,"_opacityTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"opacityTexture",void 0);P([Gt("reflectionTexture")],We.prototype,"_reflectionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"reflectionTexture",void 0);P([Gt("emissiveTexture")],We.prototype,"_emissiveTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"emissiveTexture",void 0);P([Gt("specularTexture")],We.prototype,"_specularTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"specularTexture",void 0);P([Gt("bumpTexture")],We.prototype,"_bumpTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"bumpTexture",void 0);P([Gt("lightmapTexture")],We.prototype,"_lightmapTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"lightmapTexture",void 0);P([Gt("refractionTexture")],We.prototype,"_refractionTexture",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"refractionTexture",void 0);P([Ir("ambient")],We.prototype,"ambientColor",void 0);P([Ir("diffuse")],We.prototype,"diffuseColor",void 0);P([Ir("specular")],We.prototype,"specularColor",void 0);P([Ir("emissive")],We.prototype,"emissiveColor",void 0);P([F()],We.prototype,"specularPower",void 0);P([F("useAlphaFromDiffuseTexture")],We.prototype,"_useAlphaFromDiffuseTexture",void 0);P([le("_markAllSubMeshesAsTexturesAndMiscDirty")],We.prototype,"useAlphaFromDiffuseTexture",void 0);P([F("useEmissiveAsIllumination")],We.prototype,"_useEmissiveAsIllumination",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useEmissiveAsIllumination",void 0);P([F("linkEmissiveWithDiffuse")],We.prototype,"_linkEmissiveWithDiffuse",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"linkEmissiveWithDiffuse",void 0);P([F("useSpecularOverAlpha")],We.prototype,"_useSpecularOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useSpecularOverAlpha",void 0);P([F("useReflectionOverAlpha")],We.prototype,"_useReflectionOverAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useReflectionOverAlpha",void 0);P([F("disableLighting")],We.prototype,"_disableLighting",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"disableLighting",void 0);P([F("useObjectSpaceNormalMap")],We.prototype,"_useObjectSpaceNormalMap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useObjectSpaceNormalMap",void 0);P([F("useParallax")],We.prototype,"_useParallax",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallax",void 0);P([F("useParallaxOcclusion")],We.prototype,"_useParallaxOcclusion",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useParallaxOcclusion",void 0);P([F()],We.prototype,"parallaxScaleBias",void 0);P([F("roughness")],We.prototype,"_roughness",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"roughness",void 0);P([F()],We.prototype,"indexOfRefraction",void 0);P([F()],We.prototype,"invertRefractionY",void 0);P([F()],We.prototype,"alphaCutOff",void 0);P([F("useLightmapAsShadowmap")],We.prototype,"_useLightmapAsShadowmap",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useLightmapAsShadowmap",void 0);P([wm("diffuseFresnelParameters")],We.prototype,"_diffuseFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"diffuseFresnelParameters",void 0);P([wm("opacityFresnelParameters")],We.prototype,"_opacityFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelAndMiscDirty")],We.prototype,"opacityFresnelParameters",void 0);P([wm("reflectionFresnelParameters")],We.prototype,"_reflectionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"reflectionFresnelParameters",void 0);P([wm("refractionFresnelParameters")],We.prototype,"_refractionFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"refractionFresnelParameters",void 0);P([wm("emissiveFresnelParameters")],We.prototype,"_emissiveFresnelParameters",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"emissiveFresnelParameters",void 0);P([F("useReflectionFresnelFromSpecular")],We.prototype,"_useReflectionFresnelFromSpecular",void 0);P([le("_markAllSubMeshesAsFresnelDirty")],We.prototype,"useReflectionFresnelFromSpecular",void 0);P([F("useGlossinessFromSpecularMapAlpha")],We.prototype,"_useGlossinessFromSpecularMapAlpha",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"useGlossinessFromSpecularMapAlpha",void 0);P([F("maxSimultaneousLights")],We.prototype,"_maxSimultaneousLights",void 0);P([le("_markAllSubMeshesAsLightsDirty")],We.prototype,"maxSimultaneousLights",void 0);P([F("invertNormalMapX")],We.prototype,"_invertNormalMapX",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapX",void 0);P([F("invertNormalMapY")],We.prototype,"_invertNormalMapY",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"invertNormalMapY",void 0);P([F("twoSidedLighting")],We.prototype,"_twoSidedLighting",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],We.prototype,"twoSidedLighting",void 0);P([F("applyDecalMapAfterDetailMap")],We.prototype,"_applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],We.prototype,"applyDecalMapAfterDetailMap",void 0);Ut("BABYLON.StandardMaterial",We);ti.DefaultMaterialFactory=n=>new We("default material",n)});var T5=I(()=>{Eo();vs();Ws();bt.prototype.createDynamicTexture=function(n,e,t,i){let r=new Vi(this,4);return r.baseWidth=n,r.baseHeight=e,t&&(n=this.needPOTTextures?Cn(n,this._caps.maxTextureSize):n,e=this.needPOTTextures?Cn(e,this._caps.maxTextureSize):e),r.width=n,r.height=e,r.isReady=!1,r.generateMipMaps=t,r.samplingMode=i,this.updateTextureSamplingMode(i,r),this._internalTexturesCache.push(r),r};bt.prototype.updateDynamicTexture=function(n,e,t,i=!1,r,s=!1,a=!1){if(!n)return;let o=this._gl,l=o.TEXTURE_2D,c=this._bindTextureDirectly(l,n,!0,s);this._unpackFlipY(t===void 0?n.invertY:t),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,1);let f=this._getWebGLTextureType(n.type),d=this._getInternalFormat(r||n.format),h=this._getRGBABufferInternalSizedFormat(n.type,d);o.texImage2D(l,0,h,d,f,e),n.generateMipMaps&&o.generateMipmap(l),c||this._bindTextureDirectly(l,null),i&&o.pixelStorei(o.UNPACK_PREMULTIPLY_ALPHA_WEBGL,0),r&&(n.format=r),n._dynamicTextureSource=e,n._premulAlpha=i,n.invertY=t||!1,n.isReady=!0}});var Rb,A5=I(()=>{Lt();Xr();T5();Rb=class n extends _e{constructor(e,t,i,r=!1,s=3,a=5,o){let l=!i||i._isScene,c=l?i:i==null?void 0:i.scene,f=l?!r:i;super(null,c,f,o,s,void 0,void 0,void 0,void 0,a),this.name=e,this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE,this._generateMipMaps=r;let d=this._getEngine();if(!d)return;if(t.getContext)this._canvas=t,this._ownCanvas=!1,this._texture=d.createDynamicTexture(this._canvas.width,this._canvas.height,r,s);else{this._canvas=d.createCanvas(1,1),this._ownCanvas=!0;let u=t;u.width||u.width===0?this._texture=d.createDynamicTexture(u.width,u.height,r,s):this._texture=d.createDynamicTexture(t,t,r,s)}let h=this.getSize();this._canvas.width!==h.width&&(this._canvas.width=h.width),this._canvas.height!==h.height&&(this._canvas.height=h.height),this._context=this._canvas.getContext("2d")}getClassName(){return"DynamicTexture"}get canRescale(){return!0}_recreate(e){this._canvas.width=e.width,this._canvas.height=e.height,this.releaseInternalTexture(),this._texture=this._getEngine().createDynamicTexture(e.width,e.height,this._generateMipMaps,this.samplingMode)}scale(e){let t=this.getSize();t.width*=e,t.height*=e,this._recreate(t)}scaleTo(e,t){let i=this.getSize();i.width=e,i.height=t,this._recreate(i)}getContext(){return this._context}clear(e){let t=this.getSize();e&&(this._context.fillStyle=e),this._context.clearRect(0,0,t.width,t.height)}update(e,t=!1,i=!1){this._texture&&this._getEngine().updateDynamicTexture(this._texture,this._canvas,e===void 0?!0:e,t,this._format||void 0,void 0,i)}drawText(e,t,i,r,s,a,o,l=!0){let c=this.getSize();if(a&&(this._context.fillStyle=a,this._context.fillRect(0,0,c.width,c.height)),this._context.font=r,t==null){let f=this._context.measureText(e);t=(c.width-f.width)/2}if(i==null){let f=parseInt(r.replace(/\D/g,""));i=c.height/2+f/3.65}this._context.fillStyle=s||"",this._context.fillText(e,t,i),l&&this.update(o)}dispose(){var e,t;super.dispose(),this._ownCanvas&&((t=(e=this._canvas)==null?void 0:e.remove)==null||t.call(e)),this._canvas=null,this._context=null}clone(){let e=this.getScene();if(!e)return this;let t=this.getSize(),i=new n(this.name,t,e,this._generateMipMaps);return i.hasAlpha=this.hasAlpha,i.level=this.level,i.wrapU=this.wrapU,i.wrapV=this.wrapV,i}serialize(){let e=this.getScene();e&&!e.isReady()&&ee.Warn("The scene must be ready before serializing the dynamic texture");let t=super.serialize();return n._IsCanvasElement(this._canvas)&&(t.base64String=this._canvas.toDataURL()),t.invertY=this._invertY,t.samplingMode=this.samplingMode,t}static _IsCanvasElement(e){return e.toDataURL!==void 0}_rebuild(){this.update()}}});function Mb(n,e,t,i,r,s=!1){let a=en.Zero();return Nv(n,e,t,i,a,r,s),a}function Nv(n,e,t,i,r,s,a=!1,o=!1){let l=n.getEngine();if(!s&&!(s=n.activeCamera)&&!(s=n.cameraToUseForPointers))return n;let c=s.viewport,f=l.getRenderHeight(),{x:d,y:h,width:u,height:m}=c.toGlobal(l.getRenderWidth(),f),_=1/l.getHardwareScalingLevel();return e=e*_-d,t=t*_-(f-h-m),r.update(e,t,u,m,i||Z.IdentityReadOnly,a?Z.IdentityReadOnly:s.getViewMatrix(),s.getProjectionMatrix(),o),n}function b5(n,e,t,i){let r=en.Zero();return aO(n,e,t,r,i),r}function aO(n,e,t,i,r){if(!Ts)return n;let s=n.getEngine();if(!r&&!(r=n.activeCamera)&&!(r=n.cameraToUseForPointers))throw new Error("Active camera not set");let a=r.viewport,o=s.getRenderHeight(),{x:l,y:c,width:f,height:d}=a.toGlobal(s.getRenderWidth(),o),h=Z.Identity(),u=1/s.getHardwareScalingLevel();return e=e*u-l,t=t*u-(o-c-d),i.update(e,t,f,d,h,h,r.getProjectionMatrix()),n}function bb(n,e,t,i,r,s,a,o){let l=e(i,t.enableDistantPicking);return oO(n,t,i,l,r,s,a,o)}function oO(n,e,t,i,r,s,a,o){let l=e.intersects(i,r,a,s,t,o);return!l||!l.hit||!r&&n!=null&&l.distance>=n.distance?null:l}function Lue(n,e){return n==="InstancedLinesMesh"||n==="LinesMesh"?e.intersectionThreshold:0}function M5(n){let e=n.getClassName();if(e==="GreasedLineMesh")return{rawBoundingInfo:null,intersectionThreshold:0};let t=n.rawBoundingInfo;return{rawBoundingInfo:t,intersectionThreshold:t?Lue(e,n):0}}function I5(n,e,t,i,r){let s=n(t,e.enableDistantPicking);return!s.intersectsSphere(i.boundingSphere,r)||!s.intersectsBox(i.boundingBox,r)?null:s}function lO(n,e,t,i,r,s){let a=null,o=!!(n.activeCameras&&n.activeCameras.length>1&&n.cameraToUseForPointers!==n.activeCamera),l=n.cameraToUseForPointers||n.activeCamera,c=R5.internalPickerForMesh||bb,f=c===bb;for(let d=0;d>4);for(let A=0;A1&&n.cameraToUseForPointers!==n.activeCamera),a=n.cameraToUseForPointers||n.activeCamera,o=R5.internalPickerForMesh||bb,l=o===bb;for(let c=0;c>4);for(let S=0;S(n._tempPickingRay||(n._tempPickingRay=en.Zero()),Nv(n,e,t,o,n._tempPickingRay,s||null),n._tempPickingRay),i,r,!0);return a&&(a.ray=Mb(n,e,t,Z.Identity(),s||null)),a}function P5(n,e,t,i,r,s,a,o=!1){let l=lO(n,(c,f)=>(n._tempPickingRay||(n._tempPickingRay=en.Zero()),Nv(n,e,t,c,n._tempPickingRay,s||null,!1,f),n._tempPickingRay),i,r,!1,a);return l&&(l.ray=Mb(n,e,t,Z.Identity(),s||null)),l}function D5(n,e,t,i,r){let s=lO(n,a=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),a.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=en.Zero()),en.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i,!1,r);return s&&(s.ray=e),s}function L5(n,e,t,i,r,s){return y5(n,a=>Mb(n,e,t,a,r||null),i,s)}function O5(n,e,t,i){return y5(n,r=>(n._pickWithRayInverseMatrix||(n._pickWithRayInverseMatrix=Z.Identity()),r.invertToRef(n._pickWithRayInverseMatrix),n._cachedRayForTransform||(n._cachedRayForTransform=en.Zero()),en.TransformToRef(e,n._pickWithRayInverseMatrix,n._cachedRayForTransform),n._cachedRayForTransform),t,i)}function x5(n,e,t=100,i,r){i||(i=n.getWorldMatrix()),e.length=t,r?e.origin.copyFrom(r):e.origin.copyFrom(n.position);let s=$.Vector3[2];s.set(0,0,n._scene.useRightHandedSystem?-1:1);let a=$.Vector3[3];return b.TransformNormalToRef(s,i,a),b.NormalizeToRef(a,e.direction),e}function N5(n,e){e&&(e.prototype.getForwardRay=function(t=100,i,r){return x5(this,new en(b.Zero(),b.Zero(),t),t,i,r)},e.prototype.getForwardRayToRef=function(t,i=100,r,s){return x5(this,t,i,r,s)}),n&&(bh._IsPickingAvailable=!0,n.prototype.createPickingRay=function(t,i,r,s,a=!1){return Mb(this,t,i,r,s,a)})}var R5,en,cO=I(()=>{Kn();ke();pl();DD();jg();Gi();UP();R5={internalPickerForMesh:void 0},en=class n{constructor(e,t,i=Number.MAX_VALUE,r=Ft){this.origin=e,this.direction=t,this.length=i,this.epsilon=r}clone(){return new n(this.origin.clone(),this.direction.clone(),this.length)}intersectsBoxMinMax(e,t,i=0){let r=n._TmpVector3[0].copyFromFloats(e.x-i,e.y-i,e.z-i),s=n._TmpVector3[1].copyFromFloats(t.x+i,t.y+i,t.z+i),a=0,o=Number.MAX_VALUE,l,c,f,d;if(Math.abs(this.direction.x)<1e-7){if(this.origin.xs.x)return!1}else if(l=1/this.direction.x,c=(r.x-this.origin.x)*l,f=(s.x-this.origin.x)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.y)<1e-7){if(this.origin.ys.y)return!1}else if(l=1/this.direction.y,c=(r.y-this.origin.y)*l,f=(s.y-this.origin.y)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;if(Math.abs(this.direction.z)<1e-7){if(this.origin.zs.z)return!1}else if(l=1/this.direction.z,c=(r.z-this.origin.z)*l,f=(s.z-this.origin.z)*l,f===-1/0&&(f=1/0),c>f&&(d=c,c=f,f=d),a=Math.max(c,a),o=Math.min(f,o),a>o)return!1;return!0}intersectsBox(e,t=0){return this.intersectsBoxMinMax(e.minimum,e.maximum,t)}intersectsSphere(e,t=0){let i=e.center.x-this.origin.x,r=e.center.y-this.origin.y,s=e.center.z-this.origin.z,a=i*i+r*r+s*s,o=e.radius+t,l=o*o;if(a<=l)return!0;let c=i*this.direction.x+r*this.direction.y+s*this.direction.z;return c<0?!1:a-c*c<=l}intersectsTriangle(e,t,i){let r=n._TmpVector3[0],s=n._TmpVector3[1],a=n._TmpVector3[2],o=n._TmpVector3[3],l=n._TmpVector3[4];t.subtractToRef(e,r),i.subtractToRef(e,s),b.CrossToRef(this.direction,s,a);let c=b.Dot(r,a);if(c===0)return null;let f=1/c;this.origin.subtractToRef(e,o);let d=b.Dot(o,a)*f;if(d<-this.epsilon||d>1+this.epsilon)return null;b.CrossToRef(o,r,l);let h=b.Dot(this.direction,l)*f;if(h<-this.epsilon||d+h>1+this.epsilon)return null;let u=b.Dot(s,l)*f;return u>this.length||u<0?null:new Ih(1-d-h,d,u)}intersectsPlane(e){let t,i=b.Dot(e.normal,this.direction);if(Math.abs(i)<999999997475243e-21)return null;{let r=b.Dot(e.normal,this.origin);return t=(-e.d-r)/i,t<0?t<-999999997475243e-21?null:0:t}}intersectsAxis(e,t=0){switch(e){case"y":{let i=(this.origin.y-t)/this.direction.y;return i>0?null:new b(this.origin.x+this.direction.x*-i,t,this.origin.z+this.direction.z*-i)}case"x":{let i=(this.origin.x-t)/this.direction.x;return i>0?null:new b(t,this.origin.y+this.direction.y*-i,this.origin.z+this.direction.z*-i)}case"z":{let i=(this.origin.z-t)/this.direction.z;return i>0?null:new b(this.origin.x+this.direction.x*-i,this.origin.y+this.direction.y*-i,t)}default:return null}}intersectsMesh(e,t,i,r=!1,s,a=!1){let o=$.Matrix[0];return e.getWorldMatrix().invertToRef(o),this._tmpRay?n.TransformToRef(this,o,this._tmpRay):this._tmpRay=n.Transform(this,o),e.intersects(this._tmpRay,t,i,r,s,a)}intersectsMeshes(e,t,i){i?i.length=0:i=[];for(let r=0;rt.distance?1:0}intersectionSegment(e,t,i){let r=this.origin,s=$.Vector3[0],a=$.Vector3[1],o=$.Vector3[2],l=$.Vector3[3];t.subtractToRef(e,s),this.direction.scaleToRef(n._Rayl,o),r.addToRef(o,a),e.subtractToRef(r,l);let c=b.Dot(s,s),f=b.Dot(s,o),d=b.Dot(o,o),h=b.Dot(s,l),u=b.Dot(o,l),m=c*d-f*f,_,p=m,g,v=m;mp&&(_=p,g=u+f,v=d)),g<0?(g=0,-h<0?_=0:-h>c?_=p:(_=-h,p=c)):g>v&&(g=v,-h+f<0?_=0:-h+f>c?_=p:(_=-h+f,p=c));let T=Math.abs(_)0&&S<=this.length&&R.lengthSquared(){Ys();Rl();cO();cO();N5(ti,gt);ti.prototype.createPickingRayToRef=function(n,e,t,i,r,s=!1,a=!1){return Nv(this,n,e,t,i,r,s,a)};ti.prototype.createPickingRayInCameraSpace=function(n,e,t){return b5(this,n,e,t)};ti.prototype.createPickingRayInCameraSpaceToRef=function(n,e,t,i){return aO(this,n,e,t,i)};ti.prototype.pickWithBoundingInfo=function(n,e,t,i,r){return C5(this,n,e,t,i,r)};ti.prototype.pick=function(n,e,t,i,r,s,a=!1){return P5(this,n,e,t,i,r,s,a)};ti.prototype.pickWithRay=function(n,e,t,i){return D5(this,n,e,t,i)};ti.prototype.multiPick=function(n,e,t,i,r){return L5(this,n,e,t,i,r)};ti.prototype.multiPickWithRay=function(n,e,t){return O5(this,n,e,t)}});var w5,Oue,dO=I(()=>{k();w5="kernelBlurVaryingDeclaration",Oue="varying sampleCoord{X}: vec2f;";x.IncludesShadersStoreWGSL[w5]||(x.IncludesShadersStoreWGSL[w5]=Oue)});var F5,Nue,Ib=I(()=>{k();F5="packingFunctions",Nue=`fn pack(depth: f32)->vec4f {const bit_shift: vec4f= vec4f(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const bit_mask: vec4f= vec4f(0.0,1.0/255.0,1.0/255.0,1.0/255.0);var res: vec4f=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;} fn unpack(color: vec4f)->f32 {const bit_shift: vec4f= vec4f(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;x.IncludesShadersStoreWGSL[F5]||(x.IncludesShadersStoreWGSL[F5]=Nue)});var B5,wue,U5=I(()=>{k();B5="kernelBlurFragment",wue=`#ifdef DOF @@ -9945,7 +9945,7 @@ blend+=unpack(textureSample(textureSampler,textureSamplerSampler,fragmentInputs. #else blend+=textureSample(textureSampler,textureSamplerSampler,fragmentInputs.sampleCenter+uniforms.delta*KERNEL_DEP_OFFSET{X})*computedWeight; #endif -`;x.IncludesShadersStoreWGSL[V5]||(x.IncludesShadersStoreWGSL[V5]=Fue)});var W5={};Fe(W5,{kernelBlurPixelShaderWGSL:()=>Bue});var hO,k5,Bue,H5=I(()=>{k();dO();Mb();U5();G5();hO="kernelBlurPixelShader",k5=`var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform delta: vec2f;varying sampleCenter: vec2f; +`;x.IncludesShadersStoreWGSL[V5]||(x.IncludesShadersStoreWGSL[V5]=Fue)});var W5={};Fe(W5,{kernelBlurPixelShaderWGSL:()=>Bue});var hO,k5,Bue,H5=I(()=>{k();dO();Ib();U5();G5();hO="kernelBlurPixelShader",k5=`var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform delta: vec2f;varying sampleCenter: vec2f; #ifdef DOF var circleOfConfusionSamplerSampler: sampler;var circleOfConfusionSampler: texture_2d;fn sampleCoC(offset: vec2f)->f32 {var coc: f32=textureSample(circleOfConfusionSampler,circleOfConfusionSamplerSampler,offset).r;return coc; } #endif @@ -9990,7 +9990,7 @@ vertexOutputs.sampleCenter=(vertexInputs.position*madd+madd); #include[0..varyingCount] vertexOutputs.position= vec4f(vertexInputs.position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;x.ShadersStoreWGSL[uO]||(x.ShadersStoreWGSL[uO]=Y5);Vue={name:uO,shader:Y5}});var Z5,Gue,mO=I(()=>{k();Z5="kernelBlurVaryingDeclaration",Gue="varying vec2 sampleCoord{X};";x.IncludesShadersStore[Z5]||(x.IncludesShadersStore[Z5]=Gue)});var q5,kue,Ib=I(()=>{k();q5="packingFunctions",kue=`vec4 pack(float depth) +}`;x.ShadersStoreWGSL[uO]||(x.ShadersStoreWGSL[uO]=Y5);Vue={name:uO,shader:Y5}});var Z5,Gue,mO=I(()=>{k();Z5="kernelBlurVaryingDeclaration",Gue="varying vec2 sampleCoord{X};";x.IncludesShadersStore[Z5]||(x.IncludesShadersStore[Z5]=Gue)});var q5,kue,yb=I(()=>{k();q5="packingFunctions",kue=`vec4 pack(float depth) {const vec4 bit_shift=vec4(255.0*255.0*255.0,255.0*255.0,255.0,1.0);const vec4 bit_mask=vec4(0.0,1.0/255.0,1.0/255.0,1.0/255.0);vec4 res=fract(depth*bit_shift);res-=res.xxyz*bit_mask;return res;} float unpack(vec4 color) {const vec4 bit_shift=vec4(1.0/(255.0*255.0*255.0),1.0/(255.0*255.0),1.0/255.0,1.0);return dot(color,bit_shift);}`;x.IncludesShadersStore[q5]||(x.IncludesShadersStore[q5]=kue)});var Q5,Wue,$5=I(()=>{k();Q5="kernelBlurFragment",Wue=`#ifdef DOF @@ -10014,7 +10014,7 @@ blend+=unpack(texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})) #else blend+=texture2D(textureSampler,sampleCenter+delta*KERNEL_DEP_OFFSET{X})*computedWeight; #endif -`;x.IncludesShadersStore[J5]||(x.IncludesShadersStore[J5]=Hue)});var iY={};Fe(iY,{kernelBlurPixelShader:()=>zue});var pO,tY,zue,rY=I(()=>{k();mO();Ib();$5();eY();pO="kernelBlurPixelShader",tY=`uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter; +`;x.IncludesShadersStore[J5]||(x.IncludesShadersStore[J5]=Hue)});var iY={};Fe(iY,{kernelBlurPixelShader:()=>zue});var pO,tY,zue,rY=I(()=>{k();mO();yb();$5();eY();pO="kernelBlurPixelShader",tY=`uniform sampler2D textureSampler;uniform vec2 delta;varying vec2 sampleCenter; #ifdef DOF uniform sampler2D circleOfConfusionSampler;float sampleCoC(in vec2 offset) {float coc=texture2D(circleOfConfusionSampler,offset).r;return coc; } #endif @@ -10073,7 +10073,7 @@ fn bayerDither8(_P: vec2f)->f32 {var P1: vec2f=((_P)%(2.0)); var P2: vec2f=floor(0.5 *((_P)%(4.0))); var P4: vec2f=floor(0.25*((_P)%(8.0))); return 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);} -`;x.IncludesShadersStoreWGSL[cY]||(x.IncludesShadersStoreWGSL[cY]=Kue)});var dY,jue,hY=I(()=>{k();Mb();fY();dY="shadowMapFragmentExtraDeclaration",jue=`#if SM_FLOAT==0 +`;x.IncludesShadersStoreWGSL[cY]||(x.IncludesShadersStoreWGSL[cY]=Kue)});var dY,jue,hY=I(()=>{k();Ib();fY();dY="shadowMapFragmentExtraDeclaration",jue=`#if SM_FLOAT==0 #include #endif #if SM_SOFTTRANSPARENTSHADOW==1 @@ -10265,7 +10265,7 @@ float bayerDither8(vec2 _P) {vec2 P1=mod(_P,2.0); vec2 P2=floor(0.5 *mod(_P,4.0)); vec2 P4=floor(0.25*mod(_P,8.0)); return 4.0*(4.0*bayerDither2(P1)+bayerDither2(P2))+bayerDither2(P4);} -`;x.IncludesShadersStore[OY]||(x.IncludesShadersStore[OY]=rme)});var wY,nme,FY=I(()=>{k();Ib();NY();wY="shadowMapFragmentExtraDeclaration",nme=`#if SM_FLOAT==0 +`;x.IncludesShadersStore[OY]||(x.IncludesShadersStore[OY]=rme)});var wY,nme,FY=I(()=>{k();yb();NY();wY="shadowMapFragmentExtraDeclaration",nme=`#if SM_FLOAT==0 #include #endif #if SM_SOFTTRANSPARENTSHADOW==1 @@ -10461,8 +10461,8 @@ for (int y=-OFFSET; y<=OFFSET; y++) colorDepth+=texture2D(textureSampler,vUV+vec2(x,y)/screenSize);gl_FragColor=(colorDepth/float((OFFSET*2+1)*(OFFSET*2+1)));}`;x.ShadersStore[MO]||(x.ShadersStore[MO]=n8);pme={name:MO,shader:n8}});var l8={};Fe(l8,{shadowMapFragmentSoftTransparentShadow:()=>_me});var IO,o8,_me,c8=I(()=>{k();IO="shadowMapFragmentSoftTransparentShadow",o8=`#if SM_SOFTTRANSPARENTSHADOW==1 if ((bayerDither8(floor(mod(gl_FragCoord.xy,8.0))))/64.0>=softTransparentShadowSM.x*alpha) discard; #endif -`;x.IncludesShadersStore[IO]||(x.IncludesShadersStore[IO]=o8);_me={name:IO,shader:o8}});var Bi,yb=I(()=>{ke();zt();Zi();Zf();Xr();wf();hc();vO();mi();Sn();Qf();Rx();Eh();Ml();es();Qg();Bi=class n{get bias(){return this._bias}set bias(e){this._bias=e}get normalBias(){return this._normalBias}set normalBias(e){this._normalBias=e}get blurBoxOffset(){return this._blurBoxOffset}set blurBoxOffset(e){this._blurBoxOffset!==e&&(this._blurBoxOffset=e,this._disposeBlurPostProcesses())}get blurScale(){return this._blurScale}set blurScale(e){this._blurScale!==e&&(this._blurScale=e,this._disposeBlurPostProcesses())}get blurKernel(){return this._blurKernel}set blurKernel(e){this._blurKernel!==e&&(this._blurKernel=e,this._disposeBlurPostProcesses())}get useKernelBlur(){return this._useKernelBlur}set useKernelBlur(e){this._useKernelBlur!==e&&(this._useKernelBlur=e,this._disposeBlurPostProcesses())}get depthScale(){return this._depthScale!==void 0?this._depthScale:this._light.getDepthScale()}set depthScale(e){this._depthScale=e}_validateFilter(e){return e}get filter(){return this._filter}set filter(e){if(e=this._validateFilter(e),this._light.needCube()){if(e===n.FILTER_BLUREXPONENTIALSHADOWMAP){this.useExponentialShadowMap=!0;return}else if(e===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP){this.useCloseExponentialShadowMap=!0;return}else if(e===n.FILTER_PCF||e===n.FILTER_PCSS){this.usePoissonSampling=!0;return}}if((e===n.FILTER_PCF||e===n.FILTER_PCSS)&&!this._scene.getEngine()._features.supportShadowSamplers){this.usePoissonSampling=!0;return}this._filter!==e&&(this._filter=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get usePoissonSampling(){return this.filter===n.FILTER_POISSONSAMPLING}set usePoissonSampling(e){let t=this._validateFilter(n.FILTER_POISSONSAMPLING);!e&&this.filter!==n.FILTER_POISSONSAMPLING||(this.filter=e?t:n.FILTER_NONE)}get useExponentialShadowMap(){return this.filter===n.FILTER_EXPONENTIALSHADOWMAP}set useExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_EXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_EXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurExponentialShadowMap(){return this.filter===n.FILTER_BLUREXPONENTIALSHADOWMAP}set useBlurExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLUREXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLUREXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useCloseExponentialShadowMap(){return this.filter===n.FILTER_CLOSEEXPONENTIALSHADOWMAP}set useCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_CLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_CLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurCloseExponentialShadowMap(){return this.filter===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP}set useBlurCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get usePercentageCloserFiltering(){return this.filter===n.FILTER_PCF}set usePercentageCloserFiltering(e){let t=this._validateFilter(n.FILTER_PCF);!e&&this.filter!==n.FILTER_PCF||(this.filter=e?t:n.FILTER_NONE)}get filteringQuality(){return this._filteringQuality}set filteringQuality(e){this._filteringQuality!==e&&(this._filteringQuality=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get useContactHardeningShadow(){return this.filter===n.FILTER_PCSS}set useContactHardeningShadow(e){let t=this._validateFilter(n.FILTER_PCSS);!e&&this.filter!==n.FILTER_PCSS||(this.filter=e?t:n.FILTER_NONE)}get contactHardeningLightSizeUVRatio(){return this._contactHardeningLightSizeUVRatio}set contactHardeningLightSizeUVRatio(e){this._contactHardeningLightSizeUVRatio=e}get darkness(){return this._darkness}set darkness(e){this.setDarkness(e)}getDarkness(){return this._darkness}setDarkness(e){return e>=1?this._darkness=1:e<=0?this._darkness=0:this._darkness=e,this}get transparencyShadow(){return this._transparencyShadow}set transparencyShadow(e){this.setTransparencyShadow(e)}setTransparencyShadow(e){return this._transparencyShadow=e,this}getShadowMap(){return this._shadowMap}getShadowMapForRendering(){return this._shadowMap2?this._shadowMap2:this._shadowMap}getClassName(){return n.CLASSNAME}addShadowCaster(e,t=!0){if(!this._shadowMap)return this;if(this._shadowMap.renderList||(this._shadowMap.renderList=[]),this._shadowMap.renderList.indexOf(e)===-1&&this._shadowMap.renderList.push(e),t)for(let i of e.getChildMeshes())this._shadowMap.renderList.indexOf(i)===-1&&this._shadowMap.renderList.push(i);return this}removeShadowCaster(e,t=!0){if(!this._shadowMap||!this._shadowMap.renderList)return this;let i=this._shadowMap.renderList.indexOf(e);if(i!==-1&&this._shadowMap.renderList.splice(i,1),t)for(let r of e.getChildren())this.removeShadowCaster(r);return this}getLight(){return this._light}get shaderLanguage(){return this._shaderLanguage}_getCamera(){var e;return(e=this._camera)!=null?e:this._scene.activeCamera}get mapSize(){return this._mapSize}set mapSize(e){this._mapSize=e,this._light._markMeshesAsLightDirty(),this.recreateShadowMap()}get light(){return this._light}set light(e){this._light!==e&&(this.dispose(!1),this._light=e,this._createInstance())}get useFloat32TextureType(){return this._usefullFloatFirst}set useFloat32TextureType(e){this._usefullFloatFirst!==e&&(this.dispose(!1),this._usefullFloatFirst=e,this._createInstance())}get camera(){return this._camera}set camera(e){this._camera!==e&&(this.dispose(!1),this._camera=e,this._createInstance())}get useRedTextureFormat(){return this._useRedTextureType}set useRedTextureFormat(e){this._useRedTextureType!==e&&(this.dispose(!1),this._useRedTextureType=e,this._createInstance())}constructor(e,t,i,r,s,a=!1){this.onBeforeShadowMapRenderObservable=new te,this.onAfterShadowMapRenderObservable=new te,this.onBeforeShadowMapRenderMeshObservable=new te,this.onAfterShadowMapRenderMeshObservable=new te,this.doNotSerialize=!1,this._bias=5e-5,this._normalBias=0,this._blurBoxOffset=1,this._blurScale=2,this._blurKernel=1,this._useKernelBlur=!1,this._filter=n.FILTER_NONE,this._filteringQuality=n.QUALITY_HIGH,this._contactHardeningLightSizeUVRatio=.1,this._darkness=0,this._transparencyShadow=!1,this.enableSoftTransparentShadow=!1,this.useOpacityTextureForTransparentShadow=!1,this.frustumEdgeFalloff=0,this._shaderLanguage=0,this.forceBackFacesOnly=!1,this._lightDirection=b.Zero(),this._viewMatrix=Z.Zero(),this._projectionMatrix=Z.Zero(),this._transformMatrix=Z.Zero(),this._cachedPosition=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cachedDirection=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._currentFaceIndex=0,this._currentFaceIndexCache=0,this._defaultTextureMatrix=Z.Identity(),this._shadersLoaded=!1,this._mapSize=e,this._light=t,this._usefullFloatFirst=!!i,this._scene=t.getScene(),this._camera=r!=null?r:null,this._useRedTextureType=!!s,this._forceGLSL=a,this._createInstance()}_createInstance(){this._initShaderSourceAsync(this._forceGLSL);let e=this._light._shadowGenerators;e||(e=this._light._shadowGenerators=new Map),e.set(this._camera,this),this.id=this._light.id,this._useUBO=this._scene.getEngine().supportsUniformBuffers,this._useUBO&&(this._sceneUBOs=[this._scene.createSceneUniformBuffer(`Scene for Shadow Generator (light "${this._light.name}")`,{forceMono:!0})]),n._SceneComponentInitialization(this._scene);let t=this._scene.getEngine().getCaps();this._usefullFloatFirst?t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:this._textureType=0:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:this._textureType=0,this._initializeGenerator(),this._applyFilterValues()}_initializeGenerator(){this._light._markMeshesAsLightDirty(),this._initializeShadowMap()}_createTargetRenderTexture(){var t;let e=this._scene.getEngine();(t=this._shadowMap)==null||t.dispose(),e._features.supportDepthStencilTexture?(this._shadowMap=new Yr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube(),void 0,!1,!1,void 0,this._useRedTextureType?6:5),this._shadowMap.createDepthStencilTexture(e.useReverseDepthBuffer?516:513,!0,void 0,void 0,void 0,`DepthStencilForShadowGenerator-${this._light.name}`)):this._shadowMap=new Yr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube()),this._shadowMap.noPrePassRenderer=!0}_initializeShadowMap(){if(this._createTargetRenderTexture(),this._shadowMap===null)return;this._shadowMap.wrapU=_e.CLAMP_ADDRESSMODE,this._shadowMap.wrapV=_e.CLAMP_ADDRESSMODE,this._shadowMap.anisotropicFilteringLevel=1,this._shadowMap.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE),this._shadowMap.renderParticles=!1,this._shadowMap.ignoreCameraViewport=!0,this._storedUniqueId&&(this._shadowMap.uniqueId=this._storedUniqueId),this._shadowMap.customRenderFunction=(r,s,a,o)=>this._renderForShadowMap(r,s,a,o),this._shadowMap.customIsReadyFunction=(r,s,a)=>{if(!a||!r.subMeshes)return!0;let o=!0;for(let l of r.subMeshes){let c=l.getRenderingMesh(),d=this._scene.getEngine(),h=l.getMaterial();if(!h||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let u=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(u.mustReturn)continue;let m=d.getCaps().instancedArrays&&(u.visibleInstances[l._id]!==null&&u.visibleInstances[l._id]!==void 0||c.hasThinInstances),_=h.needAlphaBlendingForMesh(c);o=this.isReady(l,m,_)&&o}return o};let e=this._scene.getEngine();this._shadowMap.onBeforeBindObservable.add(()=>{var r;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((r=e._debugPushGroup)==null||r.call(e,`Shadow map generation for pass id ${e.currentRenderPassId}`))}),this._shadowMap.onBeforeRenderObservable.add(r=>{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[0]),this._currentFaceIndex=r,this._filter===n.FILTER_PCF&&e.setColorWrite(!1),this.getTransformMatrix(),ka.eyeAtCamera=!1,this._scene.setTransformMatrix(this._viewMatrix,this._projectionMatrix),this._sceneUBOs&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onAfterUnbindObservable.add(()=>{var s,a;if(this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._currentSceneUBO),ka.eyeAtCamera=!0,this._scene.updateTransformMatrix(),this._filter===n.FILTER_PCF&&e.setColorWrite(!0),!this.useBlurExponentialShadowMap&&!this.useBlurCloseExponentialShadowMap){(s=e._debugPopGroup)==null||s.call(e);return}let r=this.getShadowMapForRendering();r&&(this._scene.postProcessManager.directRender(this._blurPostProcesses,r.renderTarget,!0),e.unBindFramebuffer(r.renderTarget,!0)),e._enableGPUDebugMarkers&&((a=e._debugPopGroup)==null||a.call(e))});let t=new ft(0,0,0,0),i=new ft(1,1,1,1);this._shadowMap.onClearObservable.add(r=>{this._filter===n.FILTER_PCF?r.clear(i,!1,!0,!1):this.useExponentialShadowMap||this.useBlurExponentialShadowMap?r.clear(t,!0,!0,!1):r.clear(i,!0,!0,!1)}),this._shadowMap.onResizeObservable.add(r=>{this._storedUniqueId=this._shadowMap.uniqueId,this._mapSize=r.getRenderSize(),this._light._markMeshesAsLightDirty(),this.recreateShadowMap()});for(let r=Fa.MIN_RENDERINGGROUPS;r(gY(),_Y)),Promise.resolve().then(()=>(MY(),bY)),Promise.resolve().then(()=>(CY(),yY)),Promise.resolve().then(()=>(LY(),DY))])):await Promise.all([Promise.resolve().then(()=>(kY(),GY)),Promise.resolve().then(()=>(r8(),i8)),Promise.resolve().then(()=>(a8(),s8)),Promise.resolve().then(()=>(c8(),l8))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new Yr(this._light.name+"_shadowMap2",t,this._scene,!1,!0,this._textureType,void 0,void 0,!1),this._shadowMap2.wrapU=_e.CLAMP_ADDRESSMODE,this._shadowMap2.wrapV=_e.CLAMP_ADDRESSMODE,this._shadowMap2.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE)),this.useKernelBlur?(this._kernelBlurXPostprocess=new qa(this._light.name+"KernelBlurX",new we(1,0),this.blurKernel,1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.width=t,this._kernelBlurXPostprocess.height=t,this._kernelBlurXPostprocess.externalTextureSamplerBinding=!0,this._kernelBlurXPostprocess.onApplyObservable.add(i=>{i.setTexture("textureSampler",this._shadowMap)}),this._kernelBlurYPostprocess=new qa(this._light.name+"KernelBlurY",new we(0,1),this.blurKernel,1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.autoClear=!1,this._kernelBlurYPostprocess.autoClear=!1,this._textureType===0&&(this._kernelBlurXPostprocess.packedFloat=!0,this._kernelBlurYPostprocess.packedFloat=!0),this._blurPostProcesses=[this._kernelBlurXPostprocess,this._kernelBlurYPostprocess]):(this._boxBlurPostprocess=new Ci(this._light.name+"DepthBoxBlur","depthBoxBlur",["screenSize","boxOffset"],[],1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,"#define OFFSET "+this._blurBoxOffset,this._textureType,void 0,void 0,void 0,void 0,this._shaderLanguage),this._boxBlurPostprocess.externalTextureSamplerBinding=!0,this._boxBlurPostprocess.onApplyObservable.add(i=>{i.setFloat2("screenSize",t,t),i.setTexture("textureSampler",this._shadowMap)}),this._boxBlurPostprocess.autoClear=!1,this._blurPostProcesses=[this._boxBlurPostprocess])}_renderForShadowMap(e,t,i,r){let s;if(r.length)for(s=0;s{r!==i&&!E?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(A)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(E?A:S))}),this.forceBackFacesOnly&&a.setState(!0,0,!1,!1,o.cullBackFaces),this.onAfterShadowMapRenderObservable.notifyObservers(v),this.onAfterShadowMapRenderMeshObservable.notifyObservers(i)}else this._shadowMap&&this._shadowMap.resetRefreshCounter()}_applyFilterValues(){this._shadowMap&&(this.filter===n.FILTER_NONE||this.filter===n.FILTER_PCSS?this._shadowMap.updateSamplingMode(_e.NEAREST_SAMPLINGMODE):this._shadowMap.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE))}forceCompilation(e,t){let i={useInstances:!1,...t},r=this.getShadowMap();if(!r){e&&e(this);return}let s=r.renderList;if(!s){e&&e(this);return}let a=[];for(let c of s)a.push(...c.subMeshes);if(a.length===0){e&&e(this);return}let o=0,l=()=>{var c,f;if(!(!this._scene||!this._scene.getEngine())){for(;this.isReady(a[o],i.useInstances,(f=(c=a[o].getMaterial())==null?void 0:c.needAlphaBlendingForMesh(a[o].getMesh()))!=null?f:!1);)if(o++,o>=a.length){e&&e(this);return}setTimeout(l,16)}};l()}async forceCompilationAsync(e){return await new Promise(t=>{this.forceCompilation(()=>{t()},e)})}_isReadyCustomDefines(e,t,i){}_prepareShadowDefines(e,t,i,r){i.push("#define SM_LIGHTTYPE_"+this._light.getClassName().toUpperCase()),i.push("#define SM_FLOAT "+(this._textureType!==0?"1":"0")),i.push("#define SM_ESM "+(this.useExponentialShadowMap||this.useBlurExponentialShadowMap?"1":"0")),i.push("#define SM_DEPTHTEXTURE "+(this.usePercentageCloserFiltering||this.useContactHardeningShadow?"1":"0"));let s=e.getMesh();return i.push("#define SM_NORMALBIAS "+(this.normalBias&&s.isVerticesDataPresent(L.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===Yt.LIGHTTYPEID_DIRECTIONALLIGHT?"1":"0")),i.push("#define SM_USEDISTANCE "+(this._light.needCube()?"1":"0")),i.push("#define SM_SOFTTRANSPARENTSHADOW "+(this.enableSoftTransparentShadow&&r?"1":"0")),this._isReadyCustomDefines(i,e,t),i}isReady(e,t,i){var o;if(!this._shadersLoaded)return!1;let r=e.getMaterial(),s=r==null?void 0:r.shadowDepthWrapper;if(this._opacityTexture=null,!r)return!1;let a=[];if(this._prepareShadowDefines(e,t,a,i),s){if(!s.isReadyForSubMesh(e,a,this,t,this._scene.getEngine().currentRenderPassId))return!1}else{let l=e._getDrawWrapper(void 0,!0),c=l.effect,f=l.defines,d=[L.PositionKind],h=e.getMesh(),u=!1,m=!1,_=!1,p=!1;this.normalBias&&h.isVerticesDataPresent(L.NormalKind)&&(d.push(L.NormalKind),a.push("#define NORMAL"),u=!0,h.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let g=r.needAlphaTestingForMesh(h);if((g||r.needAlphaBlendingForMesh(h))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let A=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),g&&a.push(`#define ALPHATESTVALUE ${A}${A%1===0?".":""}`),h.isVerticesDataPresent(L.UVKind)&&(d.push(L.UVKind),a.push("#define UV1"),m=!0),h.isVerticesDataPresent(L.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(L.UV2Kind),a.push("#define UV2"),_=!0)}let v=new ns;if(h.useBones&&h.computeBonesUsingShaders&&h.skeleton){d.push(L.MatricesIndicesKind),d.push(L.MatricesWeightsKind),h.numBoneInfluencers>4&&(d.push(L.MatricesIndicesExtraKind),d.push(L.MatricesWeightsExtraKind));let A=h.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+h.numBoneInfluencers),h.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,h),A.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(A.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let T=h.morphTargetManager?Il(h.morphTargetManager,a,d,h,!0,u,!1,m,_,p):0;if(bl(r,this._scene,a),t&&(a.push("#define INSTANCES"),No(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let A of this.customShaderOptions.defines)a.indexOf(A)===-1&&a.push(A);let S=h.bakedVertexAnimationManager;S&&S.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let E=a.join(` -`);if(f!==E){f=E;let A="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],y=["Scene","Mesh"];if(Qn(R),this.customShaderOptions){if(A=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let D of this.customShaderOptions.attributes)d.indexOf(D)===-1&&d.push(D);if(this.customShaderOptions.uniforms)for(let D of this.customShaderOptions.uniforms)R.indexOf(D)===-1&&R.push(D);if(this.customShaderOptions.samplers)for(let D of this.customShaderOptions.samplers)M.indexOf(D)===-1&&M.push(D)}let C=this._scene.getEngine();c=C.createEffect(A,{attributes:d,uniformsNames:R,uniformBuffersNames:y,samplers:M,defines:E,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:T},shaderLanguage:this._shaderLanguage},C),l.setEffect(c,f)}if(!c.isReady())return!1}return(this.useBlurExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(!this._blurPostProcesses||!this._blurPostProcesses.length)&&this._initializeBlurRTTAndPostProcesses(),!(this._kernelBlurXPostprocess&&!this._kernelBlurXPostprocess.isReady()||this._kernelBlurYPostprocess&&!this._kernelBlurYPostprocess.isReady()||this._boxBlurPostprocess&&!this._boxBlurPostprocess.isReady())}prepareDefines(e,t){let i=this._scene,r=this._light;!i.shadowsEnabled||!r.shadowEnabled||(e["SHADOW"+t]=!0,this.useContactHardeningShadow?(e["SHADOWPCSS"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePercentageCloserFiltering?(e["SHADOWPCF"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePoissonSampling?e["SHADOWPOISSON"+t]=!0:this.useExponentialShadowMap||this.useBlurExponentialShadowMap?e["SHADOWESM"+t]=!0:(this.useCloseExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(e["SHADOWCLOSEESM"+t]=!0),r.needCube()&&(e["SHADOWCUBE"+t]=!0))}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera(),a=this.getShadowMap();if(!a)return;if(!i.needCube()){let l=r.floatingOriginOffset,c=this.getTransformMatrix(),f=r.floatingOriginMode?FP(l,this._viewMatrix,this._projectionMatrix,$.Matrix[0]):c;t.setMatrix("lightMatrix"+e,f)}let o=this.getShadowMapForRendering();this._filter===n.FILTER_PCF?(t.setDepthStencilTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),a.getSize().width,1/a.getSize().width,this.frustumEdgeFalloff,e)):this._filter===n.FILTER_PCSS?(t.setDepthStencilTexture("shadowTexture"+e,o),t.setTexture("depthTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),1/a.getSize().width,this._contactHardeningLightSizeUVRatio*a.getSize().width,this.frustumEdgeFalloff,e)):(t.setTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),this.blurScale/a.getSize().width,this.depthScale,this.frustumEdgeFalloff,e)),i._uniformBuffer.updateFloat2("depthValues",this.getLight().getDepthMinZ(s),this.getLight().getDepthMinZ(s)+this.getLight().getDepthMaxZ(s),e)}get viewMatrix(){return this._viewMatrix}get projectionMatrix(){return this._projectionMatrix}getTransformMatrix(){let e=this._scene;if(this._currentRenderId===e.getRenderId()&&this._currentFaceIndexCache===this._currentFaceIndex)return this._transformMatrix;this._currentRenderId=e.getRenderId(),this._currentFaceIndexCache=this._currentFaceIndex;let t=this._light.position;if(this._light.computeTransformedInformation()&&(t=this._light.transformedPosition),b.NormalizeToRef(this._light.getShadowDirection(this._currentFaceIndex),this._lightDirection),Math.abs(b.Dot(this._lightDirection,b.Up()))===1&&(this._lightDirection.z=1e-13),this._light.needProjectionMatrixCompute()||!this._cachedPosition||!this._cachedDirection||!t.equals(this._cachedPosition)||!this._lightDirection.equals(this._cachedDirection)){this._cachedPosition.copyFrom(t),this._cachedDirection.copyFrom(this._lightDirection),Z.LookAtLHToRef(t,t.add(this._lightDirection),b.Up(),this._viewMatrix);let i=this.getShadowMap();if(i){let r=i.renderList;r&&this._light.setShadowProjectionMatrix(this._projectionMatrix,this._viewMatrix,r)}this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix)}return this._transformMatrix}recreateShadowMap(){let e=this._shadowMap;if(!e)return;let t=e.renderList;if(this._disposeRTTandPostProcesses(),this._initializeGenerator(),this.filter=this._filter,this._applyFilterValues(),t){this._shadowMap.renderList||(this._shadowMap.renderList=[]);for(let i of t)this._shadowMap.renderList.push(i)}else this._shadowMap.renderList=null}_disposeBlurPostProcesses(){this._shadowMap2&&(this._shadowMap2.dispose(),this._shadowMap2=null),this._boxBlurPostprocess&&(this._boxBlurPostprocess.dispose(),this._boxBlurPostprocess=null),this._kernelBlurXPostprocess&&(this._kernelBlurXPostprocess.dispose(),this._kernelBlurXPostprocess=null),this._kernelBlurYPostprocess&&(this._kernelBlurYPostprocess.dispose(),this._kernelBlurYPostprocess=null),this._blurPostProcesses=[]}_disposeRTTandPostProcesses(){this._shadowMap&&(this._shadowMap.dispose(),this._shadowMap=null),this._disposeBlurPostProcesses()}_disposeSceneUBOs(){if(this._sceneUBOs){for(let e of this._sceneUBOs)e.dispose();this._sceneUBOs=[]}}dispose(e=!0){if(this._disposeRTTandPostProcesses(),this._disposeSceneUBOs(),this._light){if(this._light._shadowGenerators){let t=this._light._shadowGenerators.entries();for(let i=t.next();i.done!==!0;i=t.next()){let[r,s]=i.value;s===this&&this._light._shadowGenerators.delete(r)}this._light._shadowGenerators.size===0&&(this._light._shadowGenerators=null)}this._light._markMeshesAsLightDirty()}e&&(this.onBeforeShadowMapRenderMeshObservable.clear(),this.onBeforeShadowMapRenderObservable.clear(),this.onAfterShadowMapRenderMeshObservable.clear(),this.onAfterShadowMapRenderObservable.clear())}serialize(){var i;let e={},t=this.getShadowMap();if(!t)return e;if(e.className=this.getClassName(),e.lightId=this._light.id,e.cameraId=(i=this._camera)==null?void 0:i.id,e.id=this.id,e.mapSize=t.getRenderSize(),e.forceBackFacesOnly=this.forceBackFacesOnly,e.darkness=this.getDarkness(),e.transparencyShadow=this._transparencyShadow,e.frustumEdgeFalloff=this.frustumEdgeFalloff,e.bias=this.bias,e.normalBias=this.normalBias,e.usePercentageCloserFiltering=this.usePercentageCloserFiltering,e.useContactHardeningShadow=this.useContactHardeningShadow,e.contactHardeningLightSizeUVRatio=this.contactHardeningLightSizeUVRatio,e.filteringQuality=this.filteringQuality,e.useExponentialShadowMap=this.useExponentialShadowMap,e.useBlurExponentialShadowMap=this.useBlurExponentialShadowMap,e.useCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.useBlurCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.usePoissonSampling=this.usePoissonSampling,e.depthScale=this.depthScale,e.blurBoxOffset=this.blurBoxOffset,e.blurKernel=this.blurKernel,e.blurScale=this.blurScale,e.useKernelBlur=this.useKernelBlur,e.renderList=[],t.renderList)for(let r=0;r{throw Qe("ShadowGeneratorSceneComponent")}});var d8={};Fe(d8,{depthPixelShader:()=>gme});var yO,f8,gme,CO=I(()=>{k();Uc();Ib();Vc();yO="depthPixelShader",f8=`#ifdef ALPHATEST +`;x.IncludesShadersStore[IO]||(x.IncludesShadersStore[IO]=o8);_me={name:IO,shader:o8}});var Bi,Cb=I(()=>{ke();zt();Zi();Zf();Xr();wf();hc();vO();mi();Sn();Qf();bx();Eh();Ml();es();Qg();Bi=class n{get bias(){return this._bias}set bias(e){this._bias=e}get normalBias(){return this._normalBias}set normalBias(e){this._normalBias=e}get blurBoxOffset(){return this._blurBoxOffset}set blurBoxOffset(e){this._blurBoxOffset!==e&&(this._blurBoxOffset=e,this._disposeBlurPostProcesses())}get blurScale(){return this._blurScale}set blurScale(e){this._blurScale!==e&&(this._blurScale=e,this._disposeBlurPostProcesses())}get blurKernel(){return this._blurKernel}set blurKernel(e){this._blurKernel!==e&&(this._blurKernel=e,this._disposeBlurPostProcesses())}get useKernelBlur(){return this._useKernelBlur}set useKernelBlur(e){this._useKernelBlur!==e&&(this._useKernelBlur=e,this._disposeBlurPostProcesses())}get depthScale(){return this._depthScale!==void 0?this._depthScale:this._light.getDepthScale()}set depthScale(e){this._depthScale=e}_validateFilter(e){return e}get filter(){return this._filter}set filter(e){if(e=this._validateFilter(e),this._light.needCube()){if(e===n.FILTER_BLUREXPONENTIALSHADOWMAP){this.useExponentialShadowMap=!0;return}else if(e===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP){this.useCloseExponentialShadowMap=!0;return}else if(e===n.FILTER_PCF||e===n.FILTER_PCSS){this.usePoissonSampling=!0;return}}if((e===n.FILTER_PCF||e===n.FILTER_PCSS)&&!this._scene.getEngine()._features.supportShadowSamplers){this.usePoissonSampling=!0;return}this._filter!==e&&(this._filter=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get usePoissonSampling(){return this.filter===n.FILTER_POISSONSAMPLING}set usePoissonSampling(e){let t=this._validateFilter(n.FILTER_POISSONSAMPLING);!e&&this.filter!==n.FILTER_POISSONSAMPLING||(this.filter=e?t:n.FILTER_NONE)}get useExponentialShadowMap(){return this.filter===n.FILTER_EXPONENTIALSHADOWMAP}set useExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_EXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_EXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurExponentialShadowMap(){return this.filter===n.FILTER_BLUREXPONENTIALSHADOWMAP}set useBlurExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLUREXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLUREXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useCloseExponentialShadowMap(){return this.filter===n.FILTER_CLOSEEXPONENTIALSHADOWMAP}set useCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_CLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_CLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get useBlurCloseExponentialShadowMap(){return this.filter===n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP}set useBlurCloseExponentialShadowMap(e){let t=this._validateFilter(n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP);!e&&this.filter!==n.FILTER_BLURCLOSEEXPONENTIALSHADOWMAP||(this.filter=e?t:n.FILTER_NONE)}get usePercentageCloserFiltering(){return this.filter===n.FILTER_PCF}set usePercentageCloserFiltering(e){let t=this._validateFilter(n.FILTER_PCF);!e&&this.filter!==n.FILTER_PCF||(this.filter=e?t:n.FILTER_NONE)}get filteringQuality(){return this._filteringQuality}set filteringQuality(e){this._filteringQuality!==e&&(this._filteringQuality=e,this._disposeBlurPostProcesses(),this._applyFilterValues(),this._light._markMeshesAsLightDirty())}get useContactHardeningShadow(){return this.filter===n.FILTER_PCSS}set useContactHardeningShadow(e){let t=this._validateFilter(n.FILTER_PCSS);!e&&this.filter!==n.FILTER_PCSS||(this.filter=e?t:n.FILTER_NONE)}get contactHardeningLightSizeUVRatio(){return this._contactHardeningLightSizeUVRatio}set contactHardeningLightSizeUVRatio(e){this._contactHardeningLightSizeUVRatio=e}get darkness(){return this._darkness}set darkness(e){this.setDarkness(e)}getDarkness(){return this._darkness}setDarkness(e){return e>=1?this._darkness=1:e<=0?this._darkness=0:this._darkness=e,this}get transparencyShadow(){return this._transparencyShadow}set transparencyShadow(e){this.setTransparencyShadow(e)}setTransparencyShadow(e){return this._transparencyShadow=e,this}getShadowMap(){return this._shadowMap}getShadowMapForRendering(){return this._shadowMap2?this._shadowMap2:this._shadowMap}getClassName(){return n.CLASSNAME}addShadowCaster(e,t=!0){if(!this._shadowMap)return this;if(this._shadowMap.renderList||(this._shadowMap.renderList=[]),this._shadowMap.renderList.indexOf(e)===-1&&this._shadowMap.renderList.push(e),t)for(let i of e.getChildMeshes())this._shadowMap.renderList.indexOf(i)===-1&&this._shadowMap.renderList.push(i);return this}removeShadowCaster(e,t=!0){if(!this._shadowMap||!this._shadowMap.renderList)return this;let i=this._shadowMap.renderList.indexOf(e);if(i!==-1&&this._shadowMap.renderList.splice(i,1),t)for(let r of e.getChildren())this.removeShadowCaster(r);return this}getLight(){return this._light}get shaderLanguage(){return this._shaderLanguage}_getCamera(){var e;return(e=this._camera)!=null?e:this._scene.activeCamera}get mapSize(){return this._mapSize}set mapSize(e){this._mapSize=e,this._light._markMeshesAsLightDirty(),this.recreateShadowMap()}get light(){return this._light}set light(e){this._light!==e&&(this.dispose(!1),this._light=e,this._createInstance())}get useFloat32TextureType(){return this._usefullFloatFirst}set useFloat32TextureType(e){this._usefullFloatFirst!==e&&(this.dispose(!1),this._usefullFloatFirst=e,this._createInstance())}get camera(){return this._camera}set camera(e){this._camera!==e&&(this.dispose(!1),this._camera=e,this._createInstance())}get useRedTextureFormat(){return this._useRedTextureType}set useRedTextureFormat(e){this._useRedTextureType!==e&&(this.dispose(!1),this._useRedTextureType=e,this._createInstance())}constructor(e,t,i,r,s,a=!1){this.onBeforeShadowMapRenderObservable=new te,this.onAfterShadowMapRenderObservable=new te,this.onBeforeShadowMapRenderMeshObservable=new te,this.onAfterShadowMapRenderMeshObservable=new te,this.doNotSerialize=!1,this._bias=5e-5,this._normalBias=0,this._blurBoxOffset=1,this._blurScale=2,this._blurKernel=1,this._useKernelBlur=!1,this._filter=n.FILTER_NONE,this._filteringQuality=n.QUALITY_HIGH,this._contactHardeningLightSizeUVRatio=.1,this._darkness=0,this._transparencyShadow=!1,this.enableSoftTransparentShadow=!1,this.useOpacityTextureForTransparentShadow=!1,this.frustumEdgeFalloff=0,this._shaderLanguage=0,this.forceBackFacesOnly=!1,this._lightDirection=b.Zero(),this._viewMatrix=Z.Zero(),this._projectionMatrix=Z.Zero(),this._transformMatrix=Z.Zero(),this._cachedPosition=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._cachedDirection=new b(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._currentFaceIndex=0,this._currentFaceIndexCache=0,this._defaultTextureMatrix=Z.Identity(),this._shadersLoaded=!1,this._mapSize=e,this._light=t,this._usefullFloatFirst=!!i,this._scene=t.getScene(),this._camera=r!=null?r:null,this._useRedTextureType=!!s,this._forceGLSL=a,this._createInstance()}_createInstance(){this._initShaderSourceAsync(this._forceGLSL);let e=this._light._shadowGenerators;e||(e=this._light._shadowGenerators=new Map),e.set(this._camera,this),this.id=this._light.id,this._useUBO=this._scene.getEngine().supportsUniformBuffers,this._useUBO&&(this._sceneUBOs=[this._scene.createSceneUniformBuffer(`Scene for Shadow Generator (light "${this._light.name}")`,{forceMono:!0})]),n._SceneComponentInitialization(this._scene);let t=this._scene.getEngine().getCaps();this._usefullFloatFirst?t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:this._textureType=0:t.textureHalfFloatRender&&t.textureHalfFloatLinearFiltering?this._textureType=2:t.textureFloatRender&&t.textureFloatLinearFiltering?this._textureType=1:this._textureType=0,this._initializeGenerator(),this._applyFilterValues()}_initializeGenerator(){this._light._markMeshesAsLightDirty(),this._initializeShadowMap()}_createTargetRenderTexture(){var t;let e=this._scene.getEngine();(t=this._shadowMap)==null||t.dispose(),e._features.supportDepthStencilTexture?(this._shadowMap=new Yr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube(),void 0,!1,!1,void 0,this._useRedTextureType?6:5),this._shadowMap.createDepthStencilTexture(e.useReverseDepthBuffer?516:513,!0,void 0,void 0,void 0,`DepthStencilForShadowGenerator-${this._light.name}`)):this._shadowMap=new Yr(this._light.name+"_shadowMap",this._mapSize,this._scene,!1,!0,this._textureType,this._light.needCube()),this._shadowMap.noPrePassRenderer=!0}_initializeShadowMap(){if(this._createTargetRenderTexture(),this._shadowMap===null)return;this._shadowMap.wrapU=_e.CLAMP_ADDRESSMODE,this._shadowMap.wrapV=_e.CLAMP_ADDRESSMODE,this._shadowMap.anisotropicFilteringLevel=1,this._shadowMap.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE),this._shadowMap.renderParticles=!1,this._shadowMap.ignoreCameraViewport=!0,this._storedUniqueId&&(this._shadowMap.uniqueId=this._storedUniqueId),this._shadowMap.customRenderFunction=(r,s,a,o)=>this._renderForShadowMap(r,s,a,o),this._shadowMap.customIsReadyFunction=(r,s,a)=>{if(!a||!r.subMeshes)return!0;let o=!0;for(let l of r.subMeshes){let c=l.getRenderingMesh(),d=this._scene.getEngine(),h=l.getMaterial();if(!h||l.verticesCount===0||this.customAllowRendering&&!this.customAllowRendering(l))continue;let u=c._getInstancesRenderList(l._id,!!l.getReplacementMesh());if(u.mustReturn)continue;let m=d.getCaps().instancedArrays&&(u.visibleInstances[l._id]!==null&&u.visibleInstances[l._id]!==void 0||c.hasThinInstances),_=h.needAlphaBlendingForMesh(c);o=this.isReady(l,m,_)&&o}return o};let e=this._scene.getEngine();this._shadowMap.onBeforeBindObservable.add(()=>{var r;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((r=e._debugPushGroup)==null||r.call(e,`Shadow map generation for pass id ${e.currentRenderPassId}`))}),this._shadowMap.onBeforeRenderObservable.add(r=>{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[0]),this._currentFaceIndex=r,this._filter===n.FILTER_PCF&&e.setColorWrite(!1),this.getTransformMatrix(),ka.eyeAtCamera=!1,this._scene.setTransformMatrix(this._viewMatrix,this._projectionMatrix),this._sceneUBOs&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onAfterUnbindObservable.add(()=>{var s,a;if(this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._currentSceneUBO),ka.eyeAtCamera=!0,this._scene.updateTransformMatrix(),this._filter===n.FILTER_PCF&&e.setColorWrite(!0),!this.useBlurExponentialShadowMap&&!this.useBlurCloseExponentialShadowMap){(s=e._debugPopGroup)==null||s.call(e);return}let r=this.getShadowMapForRendering();r&&(this._scene.postProcessManager.directRender(this._blurPostProcesses,r.renderTarget,!0),e.unBindFramebuffer(r.renderTarget,!0)),e._enableGPUDebugMarkers&&((a=e._debugPopGroup)==null||a.call(e))});let t=new ft(0,0,0,0),i=new ft(1,1,1,1);this._shadowMap.onClearObservable.add(r=>{this._filter===n.FILTER_PCF?r.clear(i,!1,!0,!1):this.useExponentialShadowMap||this.useBlurExponentialShadowMap?r.clear(t,!0,!0,!1):r.clear(i,!0,!0,!1)}),this._shadowMap.onResizeObservable.add(r=>{this._storedUniqueId=this._shadowMap.uniqueId,this._mapSize=r.getRenderSize(),this._light._markMeshesAsLightDirty(),this.recreateShadowMap()});for(let r=Fa.MIN_RENDERINGGROUPS;r(gY(),_Y)),Promise.resolve().then(()=>(MY(),bY)),Promise.resolve().then(()=>(CY(),yY)),Promise.resolve().then(()=>(LY(),DY))])):await Promise.all([Promise.resolve().then(()=>(kY(),GY)),Promise.resolve().then(()=>(r8(),i8)),Promise.resolve().then(()=>(a8(),s8)),Promise.resolve().then(()=>(c8(),l8))]),this._shadersLoaded=!0}_initializeBlurRTTAndPostProcesses(){let e=this._scene.getEngine(),t=this._mapSize/this.blurScale;(!this.useKernelBlur||this.blurScale!==1)&&(this._shadowMap2=new Yr(this._light.name+"_shadowMap2",t,this._scene,!1,!0,this._textureType,void 0,void 0,!1),this._shadowMap2.wrapU=_e.CLAMP_ADDRESSMODE,this._shadowMap2.wrapV=_e.CLAMP_ADDRESSMODE,this._shadowMap2.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE)),this.useKernelBlur?(this._kernelBlurXPostprocess=new qa(this._light.name+"KernelBlurX",new we(1,0),this.blurKernel,1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.width=t,this._kernelBlurXPostprocess.height=t,this._kernelBlurXPostprocess.externalTextureSamplerBinding=!0,this._kernelBlurXPostprocess.onApplyObservable.add(i=>{i.setTexture("textureSampler",this._shadowMap)}),this._kernelBlurYPostprocess=new qa(this._light.name+"KernelBlurY",new we(0,1),this.blurKernel,1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,this._textureType),this._kernelBlurXPostprocess.autoClear=!1,this._kernelBlurYPostprocess.autoClear=!1,this._textureType===0&&(this._kernelBlurXPostprocess.packedFloat=!0,this._kernelBlurYPostprocess.packedFloat=!0),this._blurPostProcesses=[this._kernelBlurXPostprocess,this._kernelBlurYPostprocess]):(this._boxBlurPostprocess=new Ci(this._light.name+"DepthBoxBlur","depthBoxBlur",["screenSize","boxOffset"],[],1,null,_e.BILINEAR_SAMPLINGMODE,e,!1,"#define OFFSET "+this._blurBoxOffset,this._textureType,void 0,void 0,void 0,void 0,this._shaderLanguage),this._boxBlurPostprocess.externalTextureSamplerBinding=!0,this._boxBlurPostprocess.onApplyObservable.add(i=>{i.setFloat2("screenSize",t,t),i.setTexture("textureSampler",this._shadowMap)}),this._boxBlurPostprocess.autoClear=!1,this._blurPostProcesses=[this._boxBlurPostprocess])}_renderForShadowMap(e,t,i,r){let s;if(r.length)for(s=0;s{r!==i&&!E?(i.getMeshUniformBuffer().bindToEffect(v,"Mesh"),i.transferToEffect(A)):(r.getMeshUniformBuffer().bindToEffect(v,"Mesh"),r.transferToEffect(E?A:S))}),this.forceBackFacesOnly&&a.setState(!0,0,!1,!1,o.cullBackFaces),this.onAfterShadowMapRenderObservable.notifyObservers(v),this.onAfterShadowMapRenderMeshObservable.notifyObservers(i)}else this._shadowMap&&this._shadowMap.resetRefreshCounter()}_applyFilterValues(){this._shadowMap&&(this.filter===n.FILTER_NONE||this.filter===n.FILTER_PCSS?this._shadowMap.updateSamplingMode(_e.NEAREST_SAMPLINGMODE):this._shadowMap.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE))}forceCompilation(e,t){let i={useInstances:!1,...t},r=this.getShadowMap();if(!r){e&&e(this);return}let s=r.renderList;if(!s){e&&e(this);return}let a=[];for(let c of s)a.push(...c.subMeshes);if(a.length===0){e&&e(this);return}let o=0,l=()=>{var c,f;if(!(!this._scene||!this._scene.getEngine())){for(;this.isReady(a[o],i.useInstances,(f=(c=a[o].getMaterial())==null?void 0:c.needAlphaBlendingForMesh(a[o].getMesh()))!=null?f:!1);)if(o++,o>=a.length){e&&e(this);return}setTimeout(l,16)}};l()}async forceCompilationAsync(e){return await new Promise(t=>{this.forceCompilation(()=>{t()},e)})}_isReadyCustomDefines(e,t,i){}_prepareShadowDefines(e,t,i,r){i.push("#define SM_LIGHTTYPE_"+this._light.getClassName().toUpperCase()),i.push("#define SM_FLOAT "+(this._textureType!==0?"1":"0")),i.push("#define SM_ESM "+(this.useExponentialShadowMap||this.useBlurExponentialShadowMap?"1":"0")),i.push("#define SM_DEPTHTEXTURE "+(this.usePercentageCloserFiltering||this.useContactHardeningShadow?"1":"0"));let s=e.getMesh();return i.push("#define SM_NORMALBIAS "+(this.normalBias&&s.isVerticesDataPresent(L.NormalKind)?"1":"0")),i.push("#define SM_DIRECTIONINLIGHTDATA "+(this.getLight().getTypeID()===Kt.LIGHTTYPEID_DIRECTIONALLIGHT?"1":"0")),i.push("#define SM_USEDISTANCE "+(this._light.needCube()?"1":"0")),i.push("#define SM_SOFTTRANSPARENTSHADOW "+(this.enableSoftTransparentShadow&&r?"1":"0")),this._isReadyCustomDefines(i,e,t),i}isReady(e,t,i){var o;if(!this._shadersLoaded)return!1;let r=e.getMaterial(),s=r==null?void 0:r.shadowDepthWrapper;if(this._opacityTexture=null,!r)return!1;let a=[];if(this._prepareShadowDefines(e,t,a,i),s){if(!s.isReadyForSubMesh(e,a,this,t,this._scene.getEngine().currentRenderPassId))return!1}else{let l=e._getDrawWrapper(void 0,!0),c=l.effect,f=l.defines,d=[L.PositionKind],h=e.getMesh(),u=!1,m=!1,_=!1,p=!1;this.normalBias&&h.isVerticesDataPresent(L.NormalKind)&&(d.push(L.NormalKind),a.push("#define NORMAL"),u=!0,h.nonUniformScaling&&a.push("#define NONUNIFORMSCALING"));let g=r.needAlphaTestingForMesh(h);if((g||r.needAlphaBlendingForMesh(h))&&(this.useOpacityTextureForTransparentShadow?this._opacityTexture=r.opacityTexture:this._opacityTexture=r.getAlphaTestTexture(),this._opacityTexture)){if(!this._opacityTexture.isReady())return!1;let A=(o=r.alphaCutOff)!=null?o:n.DEFAULT_ALPHA_CUTOFF;a.push("#define ALPHATEXTURE"),g&&a.push(`#define ALPHATESTVALUE ${A}${A%1===0?".":""}`),h.isVerticesDataPresent(L.UVKind)&&(d.push(L.UVKind),a.push("#define UV1"),m=!0),h.isVerticesDataPresent(L.UV2Kind)&&this._opacityTexture.coordinatesIndex===1&&(d.push(L.UV2Kind),a.push("#define UV2"),_=!0)}let v=new ns;if(h.useBones&&h.computeBonesUsingShaders&&h.skeleton){d.push(L.MatricesIndicesKind),d.push(L.MatricesWeightsKind),h.numBoneInfluencers>4&&(d.push(L.MatricesIndicesExtraKind),d.push(L.MatricesWeightsExtraKind));let A=h.skeleton;a.push("#define NUM_BONE_INFLUENCERS "+h.numBoneInfluencers),h.numBoneInfluencers>0&&v.addCPUSkinningFallback(0,h),A.isUsingTextureForMatrices?a.push("#define BONETEXTURE"):a.push("#define BonesPerMesh "+(A.bones.length+1))}else a.push("#define NUM_BONE_INFLUENCERS 0");let T=h.morphTargetManager?Il(h.morphTargetManager,a,d,h,!0,u,!1,m,_,p):0;if(bl(r,this._scene,a),t&&(a.push("#define INSTANCES"),No(d),e.getRenderingMesh().hasThinInstances&&a.push("#define THIN_INSTANCES")),this.customShaderOptions&&this.customShaderOptions.defines)for(let A of this.customShaderOptions.defines)a.indexOf(A)===-1&&a.push(A);let S=h.bakedVertexAnimationManager;S&&S.isEnabled&&(a.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&d.push("bakedVertexAnimationSettingsInstanced"));let E=a.join(` +`);if(f!==E){f=E;let A="shadowMap",R=["world","mBones","viewProjection","diffuseMatrix","lightDataSM","depthValuesSM","biasAndScaleSM","morphTargetInfluences","morphTargetCount","boneTextureInfo","softTransparentShadowSM","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture"],M=["diffuseSampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],y=["Scene","Mesh"];if(Qn(R),this.customShaderOptions){if(A=this.customShaderOptions.shaderName,this.customShaderOptions.attributes)for(let D of this.customShaderOptions.attributes)d.indexOf(D)===-1&&d.push(D);if(this.customShaderOptions.uniforms)for(let D of this.customShaderOptions.uniforms)R.indexOf(D)===-1&&R.push(D);if(this.customShaderOptions.samplers)for(let D of this.customShaderOptions.samplers)M.indexOf(D)===-1&&M.push(D)}let C=this._scene.getEngine();c=C.createEffect(A,{attributes:d,uniformsNames:R,uniformBuffersNames:y,samplers:M,defines:E,fallbacks:v,onCompiled:null,onError:null,indexParameters:{maxSimultaneousMorphTargets:T},shaderLanguage:this._shaderLanguage},C),l.setEffect(c,f)}if(!c.isReady())return!1}return(this.useBlurExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(!this._blurPostProcesses||!this._blurPostProcesses.length)&&this._initializeBlurRTTAndPostProcesses(),!(this._kernelBlurXPostprocess&&!this._kernelBlurXPostprocess.isReady()||this._kernelBlurYPostprocess&&!this._kernelBlurYPostprocess.isReady()||this._boxBlurPostprocess&&!this._boxBlurPostprocess.isReady())}prepareDefines(e,t){let i=this._scene,r=this._light;!i.shadowsEnabled||!r.shadowEnabled||(e["SHADOW"+t]=!0,this.useContactHardeningShadow?(e["SHADOWPCSS"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePercentageCloserFiltering?(e["SHADOWPCF"+t]=!0,this._filteringQuality===n.QUALITY_LOW?e["SHADOWLOWQUALITY"+t]=!0:this._filteringQuality===n.QUALITY_MEDIUM&&(e["SHADOWMEDIUMQUALITY"+t]=!0)):this.usePoissonSampling?e["SHADOWPOISSON"+t]=!0:this.useExponentialShadowMap||this.useBlurExponentialShadowMap?e["SHADOWESM"+t]=!0:(this.useCloseExponentialShadowMap||this.useBlurCloseExponentialShadowMap)&&(e["SHADOWCLOSEESM"+t]=!0),r.needCube()&&(e["SHADOWCUBE"+t]=!0))}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera(),a=this.getShadowMap();if(!a)return;if(!i.needCube()){let l=r.floatingOriginOffset,c=this.getTransformMatrix(),f=r.floatingOriginMode?FP(l,this._viewMatrix,this._projectionMatrix,$.Matrix[0]):c;t.setMatrix("lightMatrix"+e,f)}let o=this.getShadowMapForRendering();this._filter===n.FILTER_PCF?(t.setDepthStencilTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),a.getSize().width,1/a.getSize().width,this.frustumEdgeFalloff,e)):this._filter===n.FILTER_PCSS?(t.setDepthStencilTexture("shadowTexture"+e,o),t.setTexture("depthTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),1/a.getSize().width,this._contactHardeningLightSizeUVRatio*a.getSize().width,this.frustumEdgeFalloff,e)):(t.setTexture("shadowTexture"+e,o),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),this.blurScale/a.getSize().width,this.depthScale,this.frustumEdgeFalloff,e)),i._uniformBuffer.updateFloat2("depthValues",this.getLight().getDepthMinZ(s),this.getLight().getDepthMinZ(s)+this.getLight().getDepthMaxZ(s),e)}get viewMatrix(){return this._viewMatrix}get projectionMatrix(){return this._projectionMatrix}getTransformMatrix(){let e=this._scene;if(this._currentRenderId===e.getRenderId()&&this._currentFaceIndexCache===this._currentFaceIndex)return this._transformMatrix;this._currentRenderId=e.getRenderId(),this._currentFaceIndexCache=this._currentFaceIndex;let t=this._light.position;if(this._light.computeTransformedInformation()&&(t=this._light.transformedPosition),b.NormalizeToRef(this._light.getShadowDirection(this._currentFaceIndex),this._lightDirection),Math.abs(b.Dot(this._lightDirection,b.Up()))===1&&(this._lightDirection.z=1e-13),this._light.needProjectionMatrixCompute()||!this._cachedPosition||!this._cachedDirection||!t.equals(this._cachedPosition)||!this._lightDirection.equals(this._cachedDirection)){this._cachedPosition.copyFrom(t),this._cachedDirection.copyFrom(this._lightDirection),Z.LookAtLHToRef(t,t.add(this._lightDirection),b.Up(),this._viewMatrix);let i=this.getShadowMap();if(i){let r=i.renderList;r&&this._light.setShadowProjectionMatrix(this._projectionMatrix,this._viewMatrix,r)}this._viewMatrix.multiplyToRef(this._projectionMatrix,this._transformMatrix)}return this._transformMatrix}recreateShadowMap(){let e=this._shadowMap;if(!e)return;let t=e.renderList;if(this._disposeRTTandPostProcesses(),this._initializeGenerator(),this.filter=this._filter,this._applyFilterValues(),t){this._shadowMap.renderList||(this._shadowMap.renderList=[]);for(let i of t)this._shadowMap.renderList.push(i)}else this._shadowMap.renderList=null}_disposeBlurPostProcesses(){this._shadowMap2&&(this._shadowMap2.dispose(),this._shadowMap2=null),this._boxBlurPostprocess&&(this._boxBlurPostprocess.dispose(),this._boxBlurPostprocess=null),this._kernelBlurXPostprocess&&(this._kernelBlurXPostprocess.dispose(),this._kernelBlurXPostprocess=null),this._kernelBlurYPostprocess&&(this._kernelBlurYPostprocess.dispose(),this._kernelBlurYPostprocess=null),this._blurPostProcesses=[]}_disposeRTTandPostProcesses(){this._shadowMap&&(this._shadowMap.dispose(),this._shadowMap=null),this._disposeBlurPostProcesses()}_disposeSceneUBOs(){if(this._sceneUBOs){for(let e of this._sceneUBOs)e.dispose();this._sceneUBOs=[]}}dispose(e=!0){if(this._disposeRTTandPostProcesses(),this._disposeSceneUBOs(),this._light){if(this._light._shadowGenerators){let t=this._light._shadowGenerators.entries();for(let i=t.next();i.done!==!0;i=t.next()){let[r,s]=i.value;s===this&&this._light._shadowGenerators.delete(r)}this._light._shadowGenerators.size===0&&(this._light._shadowGenerators=null)}this._light._markMeshesAsLightDirty()}e&&(this.onBeforeShadowMapRenderMeshObservable.clear(),this.onBeforeShadowMapRenderObservable.clear(),this.onAfterShadowMapRenderMeshObservable.clear(),this.onAfterShadowMapRenderObservable.clear())}serialize(){var i;let e={},t=this.getShadowMap();if(!t)return e;if(e.className=this.getClassName(),e.lightId=this._light.id,e.cameraId=(i=this._camera)==null?void 0:i.id,e.id=this.id,e.mapSize=t.getRenderSize(),e.forceBackFacesOnly=this.forceBackFacesOnly,e.darkness=this.getDarkness(),e.transparencyShadow=this._transparencyShadow,e.frustumEdgeFalloff=this.frustumEdgeFalloff,e.bias=this.bias,e.normalBias=this.normalBias,e.usePercentageCloserFiltering=this.usePercentageCloserFiltering,e.useContactHardeningShadow=this.useContactHardeningShadow,e.contactHardeningLightSizeUVRatio=this.contactHardeningLightSizeUVRatio,e.filteringQuality=this.filteringQuality,e.useExponentialShadowMap=this.useExponentialShadowMap,e.useBlurExponentialShadowMap=this.useBlurExponentialShadowMap,e.useCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.useBlurCloseExponentialShadowMap=this.useBlurExponentialShadowMap,e.usePoissonSampling=this.usePoissonSampling,e.depthScale=this.depthScale,e.blurBoxOffset=this.blurBoxOffset,e.blurKernel=this.blurKernel,e.blurScale=this.blurScale,e.useKernelBlur=this.useKernelBlur,e.renderList=[],t.renderList)for(let r=0;r{throw Qe("ShadowGeneratorSceneComponent")}});var d8={};Fe(d8,{depthPixelShader:()=>gme});var yO,f8,gme,CO=I(()=>{k();Uc();yb();Vc();yO="depthPixelShader",f8=`#ifdef ALPHATEST varying vec2 vUV;uniform sampler2D diffuseSampler; #endif #include @@ -10619,7 +10619,7 @@ vertexOutputs.vUV= (uniforms.diffuseMatrix* vec4f(uv2Updated,1.0,0.0)).xy; #endif #endif } -`;x.ShadersStoreWGSL[LO]||(x.ShadersStoreWGSL[LO]=_8);Sme={name:LO,shader:_8}});var S8={};Fe(S8,{depthPixelShaderWGSL:()=>Tme});var OO,E8,Tme,T8=I(()=>{k();Cc();Mb();Pc();OO="depthPixelShader",E8=`#ifdef ALPHATEST +`;x.ShadersStoreWGSL[LO]||(x.ShadersStoreWGSL[LO]=_8);Sme={name:LO,shader:_8}});var S8={};Fe(S8,{depthPixelShaderWGSL:()=>Tme});var OO,E8,Tme,T8=I(()=>{k();Cc();Ib();Pc();OO="depthPixelShader",E8=`#ifdef ALPHATEST varying vUV: vec2f;var diffuseSamplerSampler: sampler;var diffuseSampler: texture_2d; #endif #include @@ -10717,12 +10717,12 @@ void main(void) {glFragColor=vec4(0.);if (true) { discard;}} #endif -`;x.ShadersStore[FO]||(x.ShadersStore[FO]=b8);xme={name:FO,shader:b8}});var I8,dd,Rme,bme,Vo,Cb,y8=I(()=>{mi();Sh();Gi();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(I8||(I8={}));dd=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(wO(),R8)))):t.push(Promise.resolve().then(()=>(BO(),M8)))}constructor(e,t=null,i="",r){super({...r,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,defines:i}),this.textureWidth=0,this.textureHeight=0}bind(e=!1){super.bind(e);let t=this.drawWrapper.effect;this.textureWidth===1||this.textureHeight===1?t.setInt2("texSize",this.textureWidth,this.textureHeight):t.setFloat2("texSize",this.textureWidth,this.textureHeight)}};dd.FragmentUrl="minmaxRedux";dd.Uniforms=["texSize"];Rme=new Float32Array(4),bme=new Uint8Array(4),Vo={min:0,max:0},Cb=class{get depthRedux(){return this._depthRedux}set depthRedux(e){this._depthRedux!==e&&(this._depthRedux=e,this._recreatePostProcesses())}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}constructor(e,t=!0){this.onAfterReductionPerformed=new te,this._textureWidth=0,this._textureHeight=0,this._scene=e,this._depthRedux=t,this.reductionSteps=[]}setTextureDimensions(e,t,i=0){return e===this._textureWidth&&t===this._textureHeight&&i===this._depthTextureType?!1:(this._textureWidth=e,this._textureHeight=t,this._depthTextureType=i,this._recreatePostProcesses(),!0)}readMinMax(e){let t=e.type===1||e.type===2,i=t?Rme:bme;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Vo.min=i[0],Vo.max=i[1],t||(Vo.min=Vo.min/255,Vo.max=Vo.max/255),Vo.min>=Vo.max&&(Vo.min=0,Vo.max=1),this.onAfterReductionPerformed.notifyObservers(Vo)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._textureWidth=0,this._textureHeight=0);for(let t=0;t{mi();Sh();Gi();(function(n){n[n.NormalizedViewDepth=0]="NormalizedViewDepth",n[n.ViewDepth=1]="ViewDepth",n[n.ScreenDepth=2]="ScreenDepth"})(I8||(I8={}));dd=class n extends $r{_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(wO(),R8)))):t.push(Promise.resolve().then(()=>(BO(),M8)))}constructor(e,t=null,i="",r){super({...r,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms,defines:i}),this.textureWidth=0,this.textureHeight=0}bind(e=!1){super.bind(e);let t=this.drawWrapper.effect;this.textureWidth===1||this.textureHeight===1?t.setInt2("texSize",this.textureWidth,this.textureHeight):t.setFloat2("texSize",this.textureWidth,this.textureHeight)}};dd.FragmentUrl="minmaxRedux";dd.Uniforms=["texSize"];Rme=new Float32Array(4),bme=new Uint8Array(4),Vo={min:0,max:0},Pb=class{get depthRedux(){return this._depthRedux}set depthRedux(e){this._depthRedux!==e&&(this._depthRedux=e,this._recreatePostProcesses())}get textureWidth(){return this._textureWidth}get textureHeight(){return this._textureHeight}constructor(e,t=!0){this.onAfterReductionPerformed=new te,this._textureWidth=0,this._textureHeight=0,this._scene=e,this._depthRedux=t,this.reductionSteps=[]}setTextureDimensions(e,t,i=0){return e===this._textureWidth&&t===this._textureHeight&&i===this._depthTextureType?!1:(this._textureWidth=e,this._textureHeight=t,this._depthTextureType=i,this._recreatePostProcesses(),!0)}readMinMax(e){let t=e.type===1||e.type===2,i=t?Rme:bme;this._scene.getEngine()._readTexturePixels(e,1,1,-1,0,i,!1),Vo.min=i[0],Vo.max=i[1],t||(Vo.min=Vo.min/255,Vo.max=Vo.max/255),Vo.min>=Vo.max&&(Vo.min=0,Vo.max=1),this.onAfterReductionPerformed.notifyObservers(Vo)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._textureWidth=0,this._textureHeight=0);for(let t=0;t1||i>1;){t=Math.max(Math.round(t/2),1),i=Math.max(Math.round(i/2),1);let a=new dd("Reduction phase "+s,e.getEngine(),"#define "+(t==1&&i==1?"LAST":t==1||i==1?"ONEBEFORELAST":"MAIN"));a.textureWidth=t,a.textureHeight=i,this.reductionSteps.push(a),s++}}}});var Pb,C8=I(()=>{hc();Ax();y8();BO();wO();Pb=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new dc(e.getScene()),this._thinMinMaxReducer=new Cb(e.getScene()),this._reductionSteps=[],this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{this._postProcessManager._rebuild()})}get sourceTexture(){return this._sourceTexture}setSourceTexture(e,t,i=2,r=!0){if(e!==this._sourceTexture&&(this._thinMinMaxReducer.depthRedux=t,this.deactivate(),this._sourceTexture=e,this._forceFullscreenViewport=r,this._thinMinMaxReducer.setTextureDimensions(e.getRenderWidth(),e.getRenderHeight()))){this._disposePostProcesses();let s=this._thinMinMaxReducer.reductionSteps;for(let a=0;a{c.setTexture("textureSampler",this._sourceTexture)})),a===s.length-1&&this._reductionSteps[a-1].onAfterRenderObservable.add(()=>{this._thinMinMaxReducer.readMinMax(l.inputTexture.texture)})}}}get refreshRate(){return this._sourceTexture?this._sourceTexture.refreshRate:-1}set refreshRate(e){this._sourceTexture&&(this._sourceTexture.refreshRate=e)}get activated(){return this._activated}activate(){this._onAfterUnbindObserver||!this._sourceTexture||(this._onAfterUnbindObserver=this._sourceTexture.onAfterUnbindObservable.add(()=>{var t,i;let e=this._camera.getScene().getEngine();(t=e._debugPushGroup)==null||t.call(e,"min max reduction"),this._reductionSteps[0].activate(this._camera),this._postProcessManager.directRender(this._reductionSteps,this._reductionSteps[0].inputTexture,this._forceFullscreenViewport,0,0,!0,this._reductionSteps.length-1),e.unBindFramebuffer(this._reductionSteps[this._reductionSteps.length-1].inputTexture,!1),(i=e._debugPopGroup)==null||i.call(e)}),this._activated=!0)}deactivate(){!this._onAfterUnbindObserver||!this._sourceTexture||(this._sourceTexture.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=null,this._activated=!1)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._camera.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=void 0,this._disposePostProcesses(),this._postProcessManager.dispose(),this._postProcessManager=void 0,this._thinMinMaxReducer.dispose(),this._thinMinMaxReducer=void 0,this._sourceTexture=null)}_disposePostProcesses(){for(let e=0;e{A8();C8();Db=class extends Pb{get depthRenderer(){return this._depthRenderer}constructor(e){super(e)}setDepthRenderer(e=null,t=2,i=!0){let r=this._camera.getScene();this._depthRenderer&&(delete r._depthRenderer[this._depthRendererId],this._depthRenderer.dispose(),this._depthRenderer=null),e===null&&(r._depthRenderer||(r._depthRenderer={}),this._depthRendererId="minmax_"+this._camera.uniqueId,e=this._depthRenderer=new Lp(r,t,this._camera,!1,1,!1,`DepthRenderer ${this._depthRendererId}`),e.enabled=!1,r._depthRenderer[this._depthRendererId]=e),super.setSourceTexture(e.getDepthMap(),!0,t,i)}setSourceTexture(e,t,i=2,r=!0){super.setSourceTexture(e,t,i,r)}activate(){this._depthRenderer&&(this._depthRenderer.enabled=!0),super.activate()}deactivate(){super.deactivate(),this._depthRenderer&&(this._depthRenderer.enabled=!1)}dispose(e=!0){super.dispose(e),this._depthRenderer&&e&&(this._depthRenderer.dispose(),this._depthRenderer=null)}}});var D8,Mme,Or,Op,Lb,Go,L8=I(()=>{ke();wf();Sn();yb();qm();P8();Lt();Gi();Qg();D8=b.Up(),Mme=b.Zero(),Or=new b,Op=new b,Lb=new Z,Go=class n extends Bi{_validateFilter(e){return e===Bi.FILTER_NONE||e===Bi.FILTER_PCF||e===Bi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Bi.FILTER_NONE)}get numCascades(){return this._numCascades}set numCascades(e){e=Math.min(Math.max(e,n.MIN_CASCADES_COUNT),n.MAX_CASCADES_COUNT),e!==this._numCascades&&(this._numCascades=e,this.recreateShadowMap(),this._recreateSceneUBOs())}get freezeShadowCastersBoundingInfo(){return this._freezeShadowCastersBoundingInfo}set freezeShadowCastersBoundingInfo(e){this._freezeShadowCastersBoundingInfoObservable&&e&&(this._scene.onBeforeRenderObservable.remove(this._freezeShadowCastersBoundingInfoObservable),this._freezeShadowCastersBoundingInfoObservable=null),!this._freezeShadowCastersBoundingInfoObservable&&!e&&(this._freezeShadowCastersBoundingInfoObservable=this._scene.onBeforeRenderObservable.add(()=>this._computeShadowCastersBoundingInfo())),this._freezeShadowCastersBoundingInfo=e,e&&this._computeShadowCastersBoundingInfo()}_computeShadowCastersBoundingInfo(){if(this._scbiMin.copyFromFloats(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._scbiMax.copyFromFloats(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),this._shadowMap&&this._shadowMap.renderList){let e=this._shadowMap.renderList;for(let t=0;tt&&(e=0,t=1),e<0&&(e=0),t>1&&(t=1),this._minDistance=e,this._maxDistance=t,this._breaksAreDirty=!0)}get minDistance(){return this._minDistance}get maxDistance(){return this._maxDistance}getClassName(){return n.CLASSNAME}getCascadeMinExtents(e){return e>=0&&e=0&&et.maxZ&&t.maxZ!==0||(this._shadowMaxZ=e,this._light._markMeshesAsLightDirty(),this._breaksAreDirty=!0)}get debug(){return this._debug}set debug(e){this._debug=e,this._light._markMeshesAsLightDirty()}get depthClamp(){return this._depthClamp}set depthClamp(e){this._depthClamp=e}get cascadeBlendPercentage(){return this._cascadeBlendPercentage}set cascadeBlendPercentage(e){this._cascadeBlendPercentage=e,this._light._markMeshesAsLightDirty()}get lambda(){return this._lambda}set lambda(e){let t=Math.min(Math.max(e,0),1);this._lambda!=t&&(this._lambda=t,this._breaksAreDirty=!0)}getCascadeViewMatrix(e){return e>=0&&e=0&&e=0&&e{let r=i.min,s=i.max;r>=s&&(r=0,s=1),(r!=this._minDistance||s!=this._maxDistance)&&this.setMinMaxDistance(r,s)}),this._depthReducer.setDepthRenderer(this._depthRenderer)),this._depthReducer.activate()}}get autoCalcDepthBoundsRefreshRate(){var e,t,i;return(i=(t=(e=this._depthReducer)==null?void 0:e.depthRenderer)==null?void 0:t.getDepthMap().refreshRate)!=null?i:-1}set autoCalcDepthBoundsRefreshRate(e){var t;(t=this._depthReducer)!=null&&t.depthRenderer&&(this._depthReducer.depthRenderer.getDepthMap().refreshRate=e)}splitFrustum(){this._breaksAreDirty=!0}_splitFrustum(){let e=this._getCamera();if(!e)return;let t=e.minZ,i=e.maxZ||this._shadowMaxZ,r=i-t,s=this._minDistance,a=this._shadowMaxZ=t?Math.min((this._shadowMaxZ-t)/(i-t),this._maxDistance):this._maxDistance,o=t+s*r,l=t+a*r,c=l-o,f=l/o;for(let d=0;da||(!this._depthClamp||this.filter===Bi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Bi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),Z.OrthoOffCenterLHToRef(this._cascadeMinExtents[r].x,this._cascadeMaxExtents[r].x,this._cascadeMinExtents[r].y,this._cascadeMaxExtents[r].y,i?a:s,i?s:a,this._projectionMatrices[r],e.getEngine().isNDCHalfZRange),this._cascadeMinExtents[r].z=s,this._cascadeMaxExtents[r].z=a,this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),b.TransformCoordinatesToRef(Mme,this._transformMatrices[r],Or),Or.scaleInPlace(this._mapSize/2),Op.copyFromFloats(Math.round(Or.x),Math.round(Or.y),Math.round(Or.z)),Op.subtractInPlace(Or).scaleInPlace(2/this._mapSize),Z.TranslationToRef(Op.x,Op.y,0,Lb),this._projectionMatrices[r].multiplyToRef(Lb,this._projectionMatrices[r]),this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),this._transformMatrices[r].copyToArray(this._transformMatricesAsArray,r*16)}}_computeFrustumInWorldSpace(e){let t=this._getCamera();if(!t)return;let i=this._cascades[e].prevBreakDistance,r=this._cascades[e].breakDistance,s=this._scene.getEngine().isNDCHalfZRange;t.getViewMatrix();let a=t.maxZ===0,o=t.maxZ;a&&(t.maxZ=this._shadowMaxZ,t.getProjectionMatrix(!0));let l=Z.Invert(t.getTransformationMatrix());a&&(t.maxZ=o,t.getProjectionMatrix(!0));let c=this._scene.getEngine().useReverseDepthBuffer?4:0;for(let f=0;f{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[t]),this._currentLayer=t,this._filter===Bi.FILTER_PCF&&e.setColorWrite(!1),ka.eyeAtCamera=!1,this._scene.setTransformMatrix(this.getCascadeViewMatrix(t),this.getCascadeProjectionMatrix(t)),this._useUBO&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onBeforeBindObservable.add(()=>{var t;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((t=e._debugPushGroup)==null||t.call(e,`Cascaded shadow map generation for pass id ${e.currentRenderPassId}`)),this._breaksAreDirty&&this._splitFrustum(),this._computeMatrices()}),this._splitFrustum()}_bindCustomEffectForRenderSubMeshForShadowMap(e,t){t.setMatrix("viewProjection",this.getCascadeTransformMatrix(this._currentLayer))}_isReadyCustomDefines(e){e.push("#define SM_DEPTHCLAMP "+(this._depthClamp&&this._filter!==Bi.FILTER_PCSS?"1":"0"))}prepareDefines(e,t){super.prepareDefines(e,t);let i=this._scene,r=this._light;if(!i.shadowsEnabled||!r.shadowEnabled)return;e["SHADOWCSM"+t]=!0,e["SHADOWCSMDEBUG"+t]=this.debug,e["SHADOWCSMNUM_CASCADES"+t]=this.numCascades,e["SHADOWCSM_RIGHTHANDED"+t]=i.useRightHandedSystem;let s=this._getCamera();s&&this._shadowMaxZ<=(s.maxZ||this._shadowMaxZ)&&(e["SHADOWCSMUSESHADOWMAXZ"+t]=!0),this.cascadeBlendPercentage===0&&(e["SHADOWCSMNOBLEND"+t]=!0)}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera();if(!s)return;let a=this.getShadowMap();if(!a)return;let o=a.getSize().width,l=this._transformMatricesAsArray,c=r.floatingOriginMode?kG(this._scene.floatingOriginOffset,this._viewMatrices,this._projectionMatrices,this._numCascades,this._tempTransformMatricesAsArray):l;if(t.setMatrices("lightMatrix"+e,c),t.setArray("viewFrustumZ"+e,this._viewSpaceFrustumsZ),t.setFloat("cascadeBlendFactor"+e,this.cascadeBlendPercentage===0?1e4:1/this.cascadeBlendPercentage),t.setArray("frustumLengths"+e,this._frustumLengths),this._filter===Bi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Bi.FILTER_PCSS){for(let f=0;fnew n(r,s,void 0,a));return e.numCascades!==void 0&&(i.numCascades=e.numCascades),e.debug!==void 0&&(i.debug=e.debug),e.stabilizeCascades!==void 0&&(i.stabilizeCascades=e.stabilizeCascades),e.lambda!==void 0&&(i.lambda=e.lambda),e.cascadeBlendPercentage!==void 0&&(i.cascadeBlendPercentage=e.cascadeBlendPercentage),e.depthClamp!==void 0&&(i.depthClamp=e.depthClamp),e.autoCalcDepthBounds!==void 0&&(i.autoCalcDepthBounds=e.autoCalcDepthBounds),e.shadowMaxZ!==void 0&&(i.shadowMaxZ=e.shadowMaxZ),e.penumbraDarkness!==void 0&&(i.penumbraDarkness=e.penumbraDarkness),e.freezeShadowCastersBoundingInfo!==void 0&&(i.freezeShadowCastersBoundingInfo=e.freezeShadowCastersBoundingInfo),e.minDistance!==void 0&&e.maxDistance!==void 0&&i.setMinMaxDistance(e.minDistance,e.maxDistance),i}};Go._FrustumCornersNdcSpace=[new b(-1,1,-1),new b(1,1,-1),new b(1,-1,-1),new b(-1,-1,-1),new b(-1,1,1),new b(1,1,1),new b(1,-1,1),new b(-1,-1,1)];Go.CLASSNAME="CascadedShadowGenerator";Go.DEFAULT_CASCADES_COUNT=4;Go.MIN_CASCADES_COUNT=2;Go.MAX_CASCADES_COUNT=4;Go._SceneComponentInitialization=n=>{throw Qe("ShadowGeneratorSceneComponent")}});function Ob(n,e){Ime[n]=e}var Ime,UO=I(()=>{Ime={}});var VO,O8=I(()=>{yb();L8();Wm();UO();Ob(it.NAME_SHADOWGENERATOR,(n,e)=>{if(n.shadowGenerators!==void 0&&n.shadowGenerators!==null)for(let t=0,i=n.shadowGenerators.length;t{let e=n._getComponent(it.NAME_SHADOWGENERATOR);e||(e=new VO(n),n._addComponent(e))}});async function N8(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new wr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a={};if(e.responseHeaders)for(let o of e.responseHeaders)a[o]=s.getResponseHeader(o)||"";i({response:s.response,headerValues:a})}else r(`Unable to fetch data from ${n}. Error code: ${s.status}`)}),s.open(t,n),s.send()})}var w8=I(()=>{_h()});function yme(n){return!!n.createPlugin}function Cme(n){return!!n.name}function Nb(){return Dl[".babylon"]}function Pme(n){for(let e in Dl){let t=Dl[e];if(t.mimeType===n)return t}}function kO(n,e){let t=Dl[n];return t||(ee.Warn("Unable to find a plugin to load "+n+" files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/features/featuresDeepDive/importers/loadingFileTypes"),e?Nb():void 0)}function Dme(n){return!!Dl[n]}function Lme(n){for(let e in Dl){let t=Dl[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return Dl[e]}return Nb()}function Ome(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function Nme(n){return n.substring(0,5)==="data:"?n.substring(5):null}function WO(n,e,t){let r="Unable to load from "+(n.rawData?"binary data":n.url);return e?r+=`: ${e}`:t&&(r+=`: ${t}`),r}async function HO(n,e,t,i,r,s,a,o,l){var u;let c=Nme(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?Ome(n.url):"",d=a?kO(a,!0):c?Lme(n.url):kO(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await N8(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),_=m.headerValues?m.headerValues["Content-Type"]:"";_&&(d=Pme(_))}d||(d=Nb())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((u=l==null?void 0:l[d.plugin.name])==null?void 0:u.enabled)===!1)throw new Error(`The '${d.plugin.name}' plugin is disabled via the loader options passed to the loading operation.`);if(n.rawData&&!d.isBinary)throw"Loading from ArrayBufferView can not be used with plugins that don't support binary loading.";return(m=>{if(yme(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(g=>{r("Error instantiating plugin.",g)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var A;if(!m)throw`The loader plugin corresponding to the '${a}' file type has not been found. If using es6, please import the plugin you wish to use before.`;if(B8.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!Cf(n.url))){if(m.directLoad){let R=m.directLoad(e,c);R instanceof Promise?R.then(M=>{t(m,M)}).catch(M=>{r("Error in directLoad of _loadData: "+M,M)}):t(m,R)}else t(m,c);return}let _=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},g=null,v=!1;(A=m.onDisposeObservable)==null||A.add(()=>{v=!0,g&&(g.abort(),g=null),s()});let T=()=>{if(v)return;let R=(M,y)=>{r(M==null?void 0:M.statusText,y)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";g=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,_,R,o):e._loadFile(n.file||n.url,p,i,!0,_,R)},S=e.getEngine(),E=S.enableOfflineSupport;if(E){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}E=!R}E&&Re.OfflineProviderFactory?e.offlineProvider=Re.OfflineProviderFactory(n.url,T,S.disableManifestCheck):T()})}function zO(n,e){let t,i,r=null,s=null;if(!e)t=n,i=pe.GetFilename(n),n=pe.GetFolderPath(n);else if(Cme(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=If(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return pe.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=pe.GetFilename(e),n=pe.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function hd(n){if(typeof n.extensions=="string"){let e=n.extensions;Dl[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)Dl[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function wv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await V8(i,r,n,e,s,a,o,l)}async function U8(n,e,t="",i=Oe.LastCreatedScene,r=null,s=null,a=null,o=null,l="",c={}){if(!i)return ee.Error("No scene available to import mesh to"),null;let f=zO(e,t);if(!f)return null;let d={};i.addPendingData(d);let h=()=>{i.removePendingData(d)},u=(p,g)=>{let v=WO(f,p,g);a?a(i,v,new Xs(v,wa.SceneLoaderError,g)):ee.Error(v),h()},m=s?p=>{try{s(p)}catch(g){u("Error in onProgress callback: "+g,g)}}:void 0,_=(p,g,v,T,S,E,A,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,g,v,T,S,E,A,R)}catch(M){u("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await HO(f,i,(p,g,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let T=p,S=[],E=[],A=[];if(!T.importMesh(n,i,g,f.rootUrl,S,E,A,u))return;i.loadingPluginName=p.name,_(S,E,A,[],[],[],[],[])}else p.importMeshAsync(n,i,g,f.rootUrl,m,f.name).then(S=>{i.loadingPluginName=p.name,_(S.meshes,S.particleSystems,S.skeletons,S.animationGroups,S.transformNodes,S.geometries,S.lights,S.spriteManagers)}).catch(S=>{u(S.message,S)})},m,u,h,o,l,c)}async function V8(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{U8(n,e,t,i,(f,d,h,u,m,_,p,g)=>{l({meshes:f,particleSystems:d,skeletons:h,animationGroups:u,transformNodes:m,geometries:_,lights:p,spriteManagers:g})},r,(f,d,h)=>{c(h||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function G8(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){pe.Error("No engine available");return}await XO(n,e,new ti(t),i,r,s,a,o,l)}async function wme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{G8(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function XO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to append to"),null;let c=zO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};Jr.ShowLoadingScreen&&!GO&&(GO=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),GO=!1}));let h=(_,p)=>{let g=WO(c,_,p);s?s(t,g,new Xs(g,wa.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(_){h("Error in onSuccess callback",_)}t.removePendingData(f)};return await HO(c,t,(_,p)=>{if(_.load){if(!_.load(t,p,c.rootUrl,h))return;t.loadingPluginName=_.name,m()}else _.loadAsync(t,p,c.rootUrl,u,c.name).then(()=>{t.loadingPluginName=_.name,m()}).catch(v=>{h(v.message,v)})},u,h,d,a,o,l)}async function Fme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{XO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function YO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to load asset container to"),null;let c=zO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},h=(_,p)=>{let g=WO(c,_,p);s?s(t,g,new Xs(g,wa.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=_=>{if(i)try{i(_)}catch(p){h("Error in onSuccess callback",p)}t.removePendingData(f)};return await HO(c,t,(_,p)=>{if(_.loadAssetContainer){let v=_.loadAssetContainer(t,p,c.rootUrl,h);if(!v)return;v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}else _.loadAssetContainerAsync?_.loadAssetContainerAsync(t,p,c.rootUrl,u,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}).catch(v=>{h(v.message,v)}):h("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},u,h,d,a,o,l)}async function Bme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{YO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function k8(n,e="",t=Oe.LastCreatedScene,i=!0,r=0,s=null,a=null,o=null,l=null,c=null,f="",d={}){if(!t){ee.Error("No scene available to load animations to");return}if(i){for(let p of t.animatables)p.reset();t.stopAllAnimations();let m=t.animationGroups.slice();for(let p of m)p.dispose();let _=t.getNodes();for(let p of _)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let _ of m)_.dispose();break;case 1:for(let _ of t.animationGroups)_.stop();break;case 2:for(let _ of t.animationGroups)_.reset(),_.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let h=t.animatables.length;await YO(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(h),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function Ume(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{k8(n,e,t,i,r,s,h=>{f(h)},a,(h,u,m)=>{d(m||new Error(u))},o,l,c).catch(d)}catch(h){d(h)}})}var F8,B8,Dl,GO,Uh,Np=I(()=>{wi();mi();Ys();Gi();Lt();tR();lc();Fg();wg();zr();w8();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(F8||(F8={}));B8=new te,Dl={},GO=!1;Uh=class{static get ForceFullSceneLoadingForIncremental(){return Jr.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){Jr.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return Jr.ShowLoadingScreen}static set ShowLoadingScreen(e){Jr.ShowLoadingScreen=e}static get loggingLevel(){return Jr.loggingLevel}static set loggingLevel(e){Jr.loggingLevel=e}static get CleanBoneMatrixWeights(){return Jr.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){Jr.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return Nb()}static GetPluginForExtension(e){var t;return(t=kO(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Dme(e)}static RegisterPlugin(e){hd(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){U8(e,t,i,r,s,a,o,l,c,f).catch(d=>o==null?void 0:o(Oe.LastCreatedScene,d==null?void 0:d.message,d))}static async ImportMeshAsync(e,t,i,r,s,a,o){return await V8(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){G8(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAsync(e,t,i,r,s,a){return await wme(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){XO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async AppendAsync(e,t,i,r,s,a){return await Fme(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){YO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAssetContainerAsync(e,t,i,r,s,a){return await Bme(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){k8(e,t,i,r,s,a,o,l,c,f,d).catch(h=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,h==null?void 0:h.message,h))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await Ume(e,t,i,r,s,a,l,f,d)}};Uh.NO_LOGGING=0;Uh.MINIMAL_LOGGING=1;Uh.SUMMARY_LOGGING=2;Uh.DETAILED_LOGGING=3;Uh.OnPluginActivatedObservable=B8});var wb,KO,jO,Ll,Fv=I(()=>{Fi();Vf();$m();Lt();Gi();hL();Zf();Rl();wi();Df();wb=class{constructor(){this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.sounds=null,this.effectLayers=[],this.layers=[],this.reflectionProbes=[],this.spriteManagers=[]}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture=e}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}},KO=class extends wb{},jO=class{constructor(){this.rootNodes=[],this.skeletons=[],this.animationGroups=[]}dispose(){let e=this.rootNodes;for(let r of e)r.dispose();e.length=0;let t=this.skeletons;for(let r of t)r.dispose();t.length=0;let i=this.animationGroups;for(let r of i)r.dispose();i.length=0}},Ll=class extends wb{constructor(e){super(),this._wasAddedToScene=!1,e=e||Oe.LastCreatedScene,e&&(this.scene=e,this.proceduralTextures=[],e.onDisposeObservable.add(()=>{this._wasAddedToScene||this.dispose()}),this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{for(let t of this.geometries)t._rebuild();for(let t of this.meshes)t._rebuild();for(let t of this.particleSystems)t.rebuild();for(let t of this.textures)t._rebuild();for(let t of this.spriteManagers)t.rebuild()}))}_topologicalSort(e){let t=new Map;for(let o of e)t.set(o.uniqueId,o);let i={dependsOn:new Map,dependedBy:new Map};for(let o of e){let l=o.uniqueId;i.dependsOn.set(l,new Set),i.dependedBy.set(l,new Set)}for(let o of e){let l=o.uniqueId,c=i.dependsOn.get(l);if(o instanceof Tc){let d=o.sourceMesh;t.has(d.uniqueId)&&(c.add(d.uniqueId),i.dependedBy.get(d.uniqueId).add(l))}let f=i.dependedBy.get(l);for(let d of o.getDescendants()){let h=d.uniqueId;t.has(h)&&(f.add(h),i.dependsOn.get(h).add(l))}}let r=[],s=[];for(let o of e){let l=o.uniqueId;i.dependsOn.get(l).size===0&&(s.push(o),t.delete(l))}let a=s;for(;a.length>0;){let o=a.shift();r.push(o);let l=i.dependedBy.get(o.uniqueId);for(let c of Array.from(l.values())){let f=i.dependsOn.get(c);f.delete(o.uniqueId),f.size===0&&t.get(c)&&(a.push(t.get(c)),t.delete(c))}}return t.size>0&&(ee.Error("SceneSerializer._topologicalSort: There were unvisited nodes:"),t.forEach(o=>{ee.Error(o.name)})),r}_addNodeAndDescendantsToList(e,t,i,r){if(!(!i||r&&!r(i)||t.has(i.uniqueId))){e.push(i),t.add(i.uniqueId);for(let s of i.getDescendants(!0))this._addNodeAndDescendantsToList(e,t,s,r)}}_isNodeInContainer(e){return e instanceof yr&&this.meshes.indexOf(e)!==-1||e instanceof Zt&&this.transformNodes.indexOf(e)!==-1||e instanceof Yt&&this.lights.indexOf(e)!==-1||e instanceof gt&&this.cameras.indexOf(e)!==-1}_isValidHierarchy(){for(let e of this.meshes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.transformNodes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.lights)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.cameras)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;return!0}instantiateModelsToScene(e,t=!1,i){this._isValidHierarchy()||pe.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new jO,o=[],l=[],c={doNotInstantiate:!0,...i},f=(_,p)=>{if(r[_.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(_.name)),p instanceof q){let g=p;if(g.morphTargetManager){let v=_.morphTargetManager;g.morphTargetManager=v.clone();for(let T=0;T{if(f(_,p),_.parent){let g=r[_.parent.uniqueId],v=s[g];v?p.parent=v:p.parent=_.parent}if(p.position&&_.position&&p.position.copyFrom(_.position),p.rotationQuaternion&&_.rotationQuaternion&&p.rotationQuaternion.copyFrom(_.rotationQuaternion),p.rotation&&_.rotation&&p.rotation.copyFrom(_.rotation),p.scaling&&_.scaling&&p.scaling.copyFrom(_.scaling),p.material){let g=p;if(g.material)if(t){let v=_.material;if(l.indexOf(v)===-1){let T=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=T.uniqueId,s[T.uniqueId]=T,v.getClassName()==="MultiMaterial"){let S=v;for(let E of S.subMaterials)E&&(T=E.clone(e?e(E.name):"Clone of "+E.name),l.push(E),r[E.uniqueId]=T.uniqueId,s[T.uniqueId]=T);S.subMaterials=S.subMaterials.map(E=>E&&s[r[E.uniqueId]])}}g.getClassName()!=="InstancedMesh"&&(g.material=s[r[v.uniqueId]])}else g.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(g.material)===-1&&this.scene.addMultiMaterial(g.material):this.scene.materials.indexOf(g.material)===-1&&this.scene.addMaterial(g.material)}p.parent===null&&a.rootNodes.push(p)};for(let _ of u)if(_.getClassName()==="InstancedMesh"){let p=_,g=p.sourceMesh,v=r[g.uniqueId],S=(typeof v=="number"?s[v]:g).createInstance(p.name);m(p,S)}else{let p=!0;_.getClassName()==="TransformNode"||_.getClassName()==="Node"||_.skeleton||!_.getTotalVertices||_.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(_):p=!c.doNotInstantiate);let g=p?_.createInstance(`instance of ${_.name}`):_.clone(`Clone of ${_.name}`,null,!0);if(!g)throw new Error(`Could not clone or instantiate node on Asset Container ${_.name}`);m(_,g)}for(let _ of this.skeletons){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name);for(let g of this.meshes)if(g.skeleton===_&&!g.isAnInstance){let v=s[r[g.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let T of p.bones)T._linkedTransformNode&&(T._linkedTransformNode=s[r[T._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let _ of this.animationGroups){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name,g=>s[r[g.uniqueId]]||g);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||pe.Warn("SceneSerializer.addAllToScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!0,this.addToScene(null),this.environmentTexture&&(this.scene.environmentTexture=this.environmentTexture);for(let e of this.scene._serializableComponents)e.addFromContainer(this);this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null}}addToScene(e=null){let t=[];for(let i of this.cameras)e&&!e(i)||(this.scene.addCamera(i),t.push(i));for(let i of this.lights)e&&!e(i)||(this.scene.addLight(i),t.push(i));for(let i of this.meshes)e&&!e(i)||(this.scene.addMesh(i),t.push(i));for(let i of this.skeletons)e&&!e(i)||this.scene.addSkeleton(i);for(let i of this.animations)e&&!e(i)||this.scene.addAnimation(i);for(let i of this.animationGroups)e&&!e(i)||this.scene.addAnimationGroup(i);for(let i of this.multiMaterials)e&&!e(i)||this.scene.addMultiMaterial(i);for(let i of this.materials)e&&!e(i)||this.scene.addMaterial(i);for(let i of this.morphTargetManagers)e&&!e(i)||this.scene.addMorphTargetManager(i);for(let i of this.geometries)e&&!e(i)||this.scene.addGeometry(i);for(let i of this.transformNodes)e&&!e(i)||(this.scene.addTransformNode(i),t.push(i));for(let i of this.actionManagers)e&&!e(i)||this.scene.addActionManager(i);for(let i of this.textures)e&&!e(i)||this.scene.addTexture(i);for(let i of this.reflectionProbes)e&&!e(i)||this.scene.addReflectionProbe(i);for(let i of this.spriteManagers)e&&!e(i)||(this.scene.spriteManagers||(this.scene.spriteManagers=[]),this.scene.spriteManagers.push(i));if(t.length){let i=new Set(this.scene.meshes);for(let r of this.scene.lights)i.add(r);for(let r of this.scene.cameras)i.add(r);for(let r of this.scene.transformNodes)i.add(r);for(let r of this.skeletons)for(let s of r.bones)i.add(s);for(let r of t)r.parent&&!i.has(r.parent)&&(r.setParent?r.setParent(null):r.parent=null)}}removeAllFromScene(){this._isValidHierarchy()||pe.Warn("SceneSerializer.removeAllFromScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!1,this.removeFromScene(null),this.environmentTexture===this.scene.environmentTexture&&(this.scene.environmentTexture=null);for(let e of this.scene._serializableComponents)e.removeFromContainer(this)}removeFromScene(e=null){for(let t of this.cameras)e&&!e(t)||this.scene.removeCamera(t);for(let t of this.lights)e&&!e(t)||this.scene.removeLight(t);for(let t of this.meshes)e&&!e(t)||this.scene.removeMesh(t,!0);for(let t of this.skeletons)e&&!e(t)||this.scene.removeSkeleton(t);for(let t of this.animations)e&&!e(t)||this.scene.removeAnimation(t);for(let t of this.animationGroups)e&&!e(t)||this.scene.removeAnimationGroup(t);for(let t of this.multiMaterials)e&&!e(t)||this.scene.removeMultiMaterial(t);for(let t of this.materials)e&&!e(t)||this.scene.removeMaterial(t);for(let t of this.morphTargetManagers)e&&!e(t)||this.scene.removeMorphTargetManager(t);for(let t of this.geometries)e&&!e(t)||this.scene.removeGeometry(t);for(let t of this.transformNodes)e&&!e(t)||this.scene.removeTransformNode(t);for(let t of this.actionManagers)e&&!e(t)||this.scene.removeActionManager(t);for(let t of this.textures)e&&!e(t)||this.scene.removeTexture(t);for(let t of this.reflectionProbes)e&&!e(t)||this.scene.removeReflectionProbe(t);for(let t of this.spriteManagers)if(!(e&&!e(t))&&this.scene.spriteManagers){let i=this.scene.spriteManagers.indexOf(t);i!==-1&&this.scene.spriteManagers.splice(i,1)}}dispose(){let e=this.cameras.slice(0);for(let _ of e)_.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let _ of t)_.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let _ of i)_.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let _ of r)_.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let _ of s)_.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let _ of a)_.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let _ of o)_.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let _ of l)_.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let _ of c)_.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let _ of f)_.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let _ of d)_.dispose();this.textures.length=0;let h=this.reflectionProbes.slice(0);for(let _ of h)_.dispose();this.reflectionProbes.length=0;let u=this.morphTargetManagers.slice(0);for(let _ of u)_.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let _ of m)_.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let _ of this.scene._serializableComponents)_.removeFromContainer(this,!0);this._onContextRestoredObserver&&(this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}_moveAssets(e,t,i){if(!(!e||!t))for(let r of e){let s=!0;if(i){for(let a of i)if(r===a){s=!1;break}}s&&(t.push(r),r._parentContainer=this)}}moveAllFromScene(e){this._wasAddedToScene=!1,e===void 0&&(e=new KO);for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=this[t]||(t==="_environmentTexture"?null:[]),this._moveAssets(this.scene[t],this[t],e[t]));this.environmentTexture=this.scene.environmentTexture,this.removeAllFromScene()}createRootMesh(){let e=new q("assetContainerRootMesh",this.scene);for(let t of this.meshes)t.parent||e.addChild(t);return this.meshes.unshift(e),e}mergeAnimationsTo(e=Oe.LastCreatedScene,t,i=null){if(!e)return ee.Error("No scene available to merge animations to"),[];let r=i||(l=>{let c,f=l.animations.length?l.animations[0].targetProperty:"",d=l.name.split(".").join("").split("_primitive")[0];switch(f){case"position":case"rotationQuaternion":c=e.getTransformNodeByName(l.name)||e.getTransformNodeByName(d);break;case"influence":c=e.getMorphTargetByName(l.name)||e.getMorphTargetByName(d);break;default:c=e.getNodeByName(l.name)||e.getNodeByName(d)}return c}),s=this.getNodes();for(let l of s){let c=r(l);if(c!==null){for(let f of l.animations){let d=c.animations.filter(h=>h.targetProperty===f.targetProperty);for(let h of d){let u=c.animations.indexOf(h,0);u>-1&&c.animations.splice(u,1)}}c.animations=c.animations.concat(l.animations)}}let a=[],o=this.animationGroups.slice();for(let l of o){a.push(l.clone(l.name,r));for(let c of l.animatables)c.stop()}for(let l of t){let c=r(l.target);c&&(e.beginAnimation(c,l.fromFrame,l.toFrame,l.loopAnimation,l.speedRatio,l.onAnimationEnd?l.onAnimationEnd:void 0,void 0,!0,void 0,l.onAnimationLoop?l.onAnimationLoop:void 0),e.stopAnimation(l.target))}return a}populateRootNodes(){this.rootNodes.length=0;for(let e of this.meshes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.transformNodes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.lights)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.cameras)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e)}addAllAssetsToContainer(e){if(!e)return;let t=[],i=new Set;for(t.push(e);t.length>0;){let r=t.pop();if(r instanceof q?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof Tc?this.meshes.push(r):r instanceof Zt?this.transformNodes.push(r):r instanceof Yt?this.lights.push(r):r instanceof gt&&this.cameras.push(r),r instanceof yr){if(r.material&&this.materials.indexOf(r.material)===-1){this.materials.push(r.material);for(let s of r.material.getActiveTextures())this.textures.indexOf(s)===-1&&this.textures.push(s)}r.skeleton&&this.skeletons.indexOf(r.skeleton)===-1&&this.skeletons.push(r.skeleton),r.morphTargetManager&&this.morphTargetManagers.indexOf(r.morphTargetManager)===-1&&this.morphTargetManagers.push(r.morphTargetManager)}for(let s of r.getChildren())i.has(s)||t.push(s);i.add(r)}this.populateRootNodes()}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];ei&&ei.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialsByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}}});var Vh,W8=I(()=>{Bg();Vh=class{constructor(e){this.byteOffset=0,this.buffer=e}async loadAsync(e){let t=await this.buffer.readAsync(this.byteOffset,e);this._dataView=new DataView(t.buffer,t.byteOffset,t.byteLength),this._dataByteOffset=0}readUint32(){let e=this._dataView.getUint32(this._dataByteOffset,!0);return this._dataByteOffset+=4,this.byteOffset+=4,e}readUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._dataByteOffset,e);return this._dataByteOffset+=e,this.byteOffset+=e,t}readString(e){return UV(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function ZO(n,e,t,i){let r={externalResourceFunction:i};return t&&(r.uri=e==="file:"?t:e+t),ArrayBuffer.isView(n)?GLTFValidator.validateBytes(n,r):GLTFValidator.validateString(n,r)}function Vme(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{ZO(t.data,t.rootUrl,t.fileName,i=>new Promise((r,s)=>{let a=n.length;n.push({resolve:r,reject:s}),postMessage({id:"getExternalResource",index:a,uri:i})})).then(i=>{postMessage({id:"validate.resolve",value:i})},i=>{postMessage({id:"validate.reject",reason:i})});break}case"getExternalResource.resolve":{n[t.index].resolve(t.value);break}case"getExternalResource.reject":{n[t.index].reject(t.reason);break}}}}var wp,H8=I(()=>{wi();wp=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${ZO}(${Vme})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=h=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(h)},d=h=>{let u=h.data;switch(u.id){case"getExternalResource":{r(u.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:u.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:u.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=u.value,s(u.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(u.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:pe.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let h=e.slice();c.postMessage({id:"validate",data:h,rootUrl:t,fileName:i},[h.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=pe.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>ZO(e,t,i,r)))}};wp.Configuration={url:`${pe._DefaultCdnUrl}/gltf_validator.js`};wp._LastResults=null});var kc,Bv,z8=I(()=>{kc="Z2xURg",Bv={name:"gltf",extensions:{".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},canDirectLoad(n){return n.indexOf("asset")!==-1&&n.indexOf("version")!==-1||n.startsWith("data:base64,"+kc)||n.startsWith("data:;base64,"+kc)||n.startsWith("data:application/octet-stream;base64,"+kc)||n.startsWith("data:model/gltf-binary;base64,"+kc)}}});function X8(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function Gme(n,e,t){try{if(e<0||e>=n.byteLength)throw new RangeError("Offset is out of range.");if(e+t>n.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(n.buffer,n.byteOffset+e,t))}catch(i){return Promise.reject(i)}}var Fp,Gh,bs,Fb,kme,qO,ud,QO=I(()=>{mi();wi();Np();Fv();Lt();W8();H8();z8();lc();Fg();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(Fp||(Fp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(Gh||(Gh={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(bs||(bs={}));Fb=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=Gh.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=Fp.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}},kme=new Fb,qO=class extends Fb{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A,R,M,y,C,D;e&&(this.alwaysComputeBoundingBox=(t=e.alwaysComputeBoundingBox)!=null?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=(i=e.alwaysComputeSkeletonRootNode)!=null?i:this.alwaysComputeSkeletonRootNode,this.animationStartMode=(r=e.animationStartMode)!=null?r:this.animationStartMode,this.capturePerformanceCounters=(s=e.capturePerformanceCounters)!=null?s:this.capturePerformanceCounters,this.compileMaterials=(a=e.compileMaterials)!=null?a:this.compileMaterials,this.compileShadowGenerators=(o=e.compileShadowGenerators)!=null?o:this.compileShadowGenerators,this.coordinateSystemMode=(l=e.coordinateSystemMode)!=null?l:this.coordinateSystemMode,this.createInstances=(c=e.createInstances)!=null?c:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=(f=e.extensionOptions)!=null?f:this.extensionOptions,this.loadAllMaterials=(d=e.loadAllMaterials)!=null?d:this.loadAllMaterials,this.loadMorphTargets=(h=e.loadMorphTargets)!=null?h:this.loadMorphTargets,this.loadNodeAnimations=(u=e.loadNodeAnimations)!=null?u:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(_=e.loadSkins)!=null?_:this.loadSkins,this.loggingEnabled=(p=e.loggingEnabled)!=null?p:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=(g=e.preprocessUrlAsync)!=null?g:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(T=e.targetFps)!=null?T:this.targetFps,this.transparencyAsCoverage=(S=e.transparencyAsCoverage)!=null?S:this.transparencyAsCoverage,this.useClipPlane=(E=e.useClipPlane)!=null?E:this.useClipPlane,this.useGltfTextureNames=(A=e.useGltfTextureNames)!=null?A:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(y=e.useSRGBBuffers)!=null?y:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(D=e.dontUseTransmissionHelper)!=null?D:this.dontUseTransmissionHelper)}},ud=class n extends qO{constructor(e){super(),this.onParsedObservable=new te,this.onMeshLoadedObservable=new te,this.onSkinLoadedObservable=new te,this.onTextureLoadedObservable=new te,this.onMaterialLoadedObservable=new te,this.onCameraLoadedObservable=new te,this.onCompleteObservable=new te,this.onErrorObservable=new te,this.onDisposeObservable=new te,this.onExtensionLoadedObservable=new te,this.onValidatedObservable=new te,this._loader=null,this._state=null,this._requests=new Array,this.name=Bv.name,this.extensions=Bv.extensions,this.onLoaderStateChangedObservable=new te,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign({...kme},e))}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(let e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=e=>Promise.resolve(e),this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,t,i,r,s,a,o,l){if(ArrayBuffer.isView(t))return this._loadBinary(e,t,i,r,o,l),null;this._progressCallback=s;let c=t.name||pe.GetFilename(t);if(a){if(this.useRangeRequests){this.validate&&ee.Warn("glTF validation is not supported when range requests are enabled");let f={abort:()=>{},onCompleteObservable:new te},d={readAsync:(h,u)=>new Promise((m,_)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{_(p)},p=>{p.setRequestHeader("Range",`bytes=${h}-${h+u-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new Vh(d)).then(h=>{f.onCompleteObservable.notifyObservers(f),r(h)},o?h=>o(void 0,h):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new Vh({readAsync:(d,h)=>X8(f,d,h),byteLength:f.byteLength})).then(d=>{r(d)},o?d=>o(void 0,d):void 0)},!0,o)}else return this._loadFile(e,t,f=>{try{this._validate(e,f,i,c),r({json:this._parseJson(f)})}catch(d){o&&o()}},!1,o)}_loadBinary(e,t,i,r,s,a){this._validate(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i,a),this._unpackBinaryAsync(new Vh({readAsync:(o,l)=>Gme(t,o,l),byteLength:t.byteLength})).then(o=>{r(o)},s?o=>s(void 0,o):void 0)}importMeshAsync(e,t,i,r,s,a){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(i),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(i),this._loader.importMeshAsync(e,t,null,i,r,s,a)))}loadAsync(e,t,i,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,i,r,s)))}loadAssetContainerAsync(e,t,i,r,s){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t);let a=new Ll(e),o=[];this.onMaterialLoadedObservable.add(d=>{o.push(d)});let l=[];this.onTextureLoadedObservable.add(d=>{l.push(d)});let c=[];this.onCameraLoadedObservable.add(d=>{c.push(d)});let f=[];return this.onMeshLoadedObservable.add(d=>{d.morphTargetManager&&f.push(d.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,t,i,r,s).then(d=>(Array.prototype.push.apply(a.geometries,d.geometries),Array.prototype.push.apply(a.meshes,d.meshes),Array.prototype.push.apply(a.particleSystems,d.particleSystems),Array.prototype.push.apply(a.skeletons,d.skeletons),Array.prototype.push.apply(a.animationGroups,d.animationGroups),Array.prototype.push.apply(a.materials,o),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,d.lights),Array.prototype.push.apply(a.transformNodes,d.transformNodes),Array.prototype.push.apply(a.cameras,c),Array.prototype.push.apply(a.morphTargetManagers,f),a))})}canDirectLoad(e){return Bv.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+kc)||t.startsWith(";base64,"+kc)||t.startsWith("application/octet-stream;base64,"+kc)||t.startsWith("model/gltf-binary;base64,"+kc)){let i=Pf(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new Vh({readAsync:(r,s)=>X8(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[Bv.name])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(i=>{t(i)})})}_setState(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(bs[this._state]))}_loadFile(e,t,i,r,s,a){let o=e._loadFile(t,i,l=>{this._onProgress(l,o)},!0,r,s,a);return o.onCompleteObservable.add(()=>{o._lengthComputable=!0,o._total=o._loaded}),this._requests.push(o),o}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let i=!0,r=0,s=0;for(let a of this._requests){if(a._lengthComputable===void 0||a._loaded===void 0||a._total===void 0)return;i=i&&a._lengthComputable,r+=a._loaded,s+=a._total}this._progressCallback({lengthComputable:i,loaded:r,total:i?s:0})}_validate(e,t,i="",r=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),wp.ValidateAsync(t,i,r,s=>this.preprocessUrlAsync(i+s).then(a=>e._loadFileAsync(a,void 0,!0,!0).then(o=>new Uint8Array(o,0,o.byteLength)))).then(s=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(s),this.onValidatedObservable.clear()},s=>{this._endPerformanceCounter("Validate JSON"),pe.Warn(`Failed to validate: ${s.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){let t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);let i=n._parseVersion(t.version);if(!i)throw new Error("Invalid version: "+t.version);if(t.minVersion!==void 0){let a=n._parseVersion(t.minVersion);if(!a)throw new Error("Invalid minimum version: "+t.minVersion);if(n._compareVersion(a,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}let s={1:n._CreateGLTF1Loader,2:n._CreateGLTF2Loader}[i.major];if(!s)throw new Error("Unsupported version: "+t.version);return s(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);let t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{let t={Magic:1179937895},i=e.readUint32();if(i!==t.Magic)throw new Xs("Unexpected magic: "+i,wa.GLTFLoaderUnexpectedMagicError);let r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);let s=e.readUint32();!this.useRangeRequests&&s!==e.buffer.byteLength&&ee.Warn(`Length in header does not match actual data length: ${s} != ${e.buffer.byteLength}`);let a;switch(r){case 1:{a=this._unpackBinaryV1Async(e,s);break}case 2:{a=this._unpackBinaryV2Async(e,s);break}default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),a})}_unpackBinaryV1Async(e,t){let i={JSON:0},r=e.readUint32(),s=e.readUint32();if(s!==i.JSON)throw new Error(`Unexpected content format: ${s}`);let a=t-e.byteOffset,o={json:this._parseJson(e.readString(r)),bin:null};if(a!==0){let l=e.byteOffset;o.bin={readAsync:(c,f)=>e.buffer.readAsync(l+c,f),byteLength:a}}return Promise.resolve(o)}_unpackBinaryV2Async(e,t){let i={JSON:1313821514,BIN:5130562},r=e.readUint32();if(e.readUint32()!==i.JSON)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{let a={json:this._parseJson(e.readString(r)),bin:null},o=()=>{let l=e.readUint32();switch(e.readUint32()){case i.JSON:throw new Error("Unexpected JSON chunk");case i.BIN:{let f=e.byteOffset;a.bin={readAsync:(d,h)=>e.buffer.readAsync(f+d,h),byteLength:l},e.skipBytes(l);break}default:{e.skipBytes(l);break}}return e.byteOffset!==t?e.loadAsync(8).then(o):Promise.resolve(a)};return o()})}static _parseVersion(e){if(e==="1.0"||e==="1.0.1")return{major:1,minor:0};let t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.majort.minor?1:e.minor{Bb=class{get resolve(){return this._resolve}get reject(){return this._reject}constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}}});var as,K8=I(()=>{Wt();kt();Cl();wx();ke();wi();as=class{constructor(){this.keysUp=[38],this.keysUpward=[33],this.keysDown=[40],this.keysDownward=[34],this.keysLeft=[37],this.keysRight=[39],this.rotationSpeed=.5,this.keysRotateLeft=[],this.keysRotateRight=[],this.keysRotateUp=[],this.keysRotateDown=[],this._keys=new Array}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===Co.KEYDOWN)(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),e||i.preventDefault());else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),e||i.preventDefault()}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Wt();mi();kt();Cl();yo();wi();kh=class{constructor(e=!0){this.touchEnabled=e,this.buttons=[0,1,2],this.angularSensibility=2e3,this._previousPosition=null,this.onPointerMovedObservable=new te,this._allowCameraRotation=!0,this._currentActiveButton=-1,this._activePointerId=-1}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement();this._pointerInput||(this._pointerInput=r=>{let s=r.event,a=s.pointerType==="touch";if(!this.touchEnabled&&a||r.type!==at.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===at.POINTERDOWN){if(a&&this._activePointerId!==-1||!a&&this._currentActiveButton!==-1)return;this._activePointerId=s.pointerId;try{o==null||o.setPointerCapture(s.pointerId)}catch(l){}this._currentActiveButton===-1&&(this._currentActiveButton=s.button),this._previousPosition={x:s.clientX,y:s.clientY},e||(s.preventDefault(),i&&i.focus()),t.isPointerLock&&this._onMouseMove&&this._onMouseMove(r.event)}else if(r.type===at.POINTERUP){if(a&&this._activePointerId!==s.pointerId||!a&&this._currentActiveButton!==s.button)return;try{o==null||o.releasePointerCapture(s.pointerId)}catch(l){}this._currentActiveButton=-1,this._previousPosition=null,e||s.preventDefault(),this._activePointerId=-1}else if(r.type===at.POINTERMOVE&&(this._activePointerId===s.pointerId||!a)){if(t.isPointerLock&&this._onMouseMove)this._onMouseMove(r.event);else if(this._previousPosition){let l=this.camera._calculateHandednessMultiplier(),c=(s.clientX-this._previousPosition.x)*l,f=(s.clientY-this._previousPosition.y)*l;this._allowCameraRotation&&(this.camera.cameraRotation.y+=c/this.angularSensibility,this.camera.cameraRotation.x+=f/this.angularSensibility),this.onPointerMovedObservable.notifyObservers({offsetX:c,offsetY:f}),this._previousPosition={x:s.clientX,y:s.clientY},e||s.preventDefault()}}}),this._onMouseMove=r=>{if(!t.isPointerLock)return;let s=this.camera._calculateHandednessMultiplier();this.camera.cameraRotation.y+=r.movementX*s/this.angularSensibility,this.camera.cameraRotation.x+=r.movementY*s/this.angularSensibility,this._previousPosition=null,e||r.preventDefault()},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE),i&&(this._contextMenuBind=r=>this.onContextMenu(r),i.addEventListener("contextmenu",this._contextMenuBind,!1))}onContextMenu(e){e.preventDefault()}detachControl(){if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._contextMenuBind){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("contextmenu",this._contextMenuBind)}this.onPointerMovedObservable&&this.onPointerMovedObservable.clear(),this._observer=null,this._onMouseMove=null,this._previousPosition=null}this._activePointerId=-1,this._currentActiveButton=-1}getClassName(){return"FreeCameraMouseInput"}getSimpleName(){return"mouse"}};P([F()],kh.prototype,"buttons",void 0);P([F()],kh.prototype,"angularSensibility",void 0);is.FreeCameraMouseInput=kh});var Wh,Z8=I(()=>{Wt();kt();mi();yo();Fx();wi();Wh=class{constructor(){this.wheelPrecisionX=3,this.wheelPrecisionY=3,this.wheelPrecisionZ=3,this.onChangedObservable=new te,this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0,this._ffMultiplier=12,this._normalize=120}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Po.DOM_DELTA_LINE?this._ffMultiplier:1;this._wheelDeltaX+=this.wheelPrecisionX*r*i.deltaX/this._normalize,this._wheelDeltaY-=this.wheelPrecisionY*r*i.deltaY/this._normalize,this._wheelDeltaZ+=this.wheelPrecisionZ*r*i.deltaZ/this._normalize,i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,at.POINTERWHEEL)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null),this.onChangedObservable&&this.onChangedObservable.clear()}checkInputs(){this.onChangedObservable.notifyObservers({wheelDeltaX:this._wheelDeltaX,wheelDeltaY:this._wheelDeltaY,wheelDeltaZ:this._wheelDeltaZ}),this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0}getClassName(){return"BaseCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}};P([F()],Wh.prototype,"wheelPrecisionX",void 0);P([F()],Wh.prototype,"wheelPrecisionY",void 0);P([F()],Wh.prototype,"wheelPrecisionZ",void 0)});var ki,Js,q8=I(()=>{Wt();kt();Cl();Z8();ke();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(ki||(ki={}));Js=class extends Wh{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==ki.MoveRelative||(this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==ki.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==ki.MoveRelative||(this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==ki.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==ki.MoveRelative||(this._wheelZAction=ki.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==ki.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==ki.RotateRelative||(this._wheelXAction=ki.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==ki.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==ki.RotateRelative||(this._wheelYAction=ki.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==ki.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==ki.RotateRelative||(this._wheelZAction=ki.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==ki.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==ki.MoveScene||(this._wheelXAction=ki.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==ki.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==ki.MoveScene||(this._wheelYAction=ki.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==ki.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==ki.MoveScene||(this._wheelZAction=ki.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==ki.MoveScene?null:this._wheelZActionCoordinate}checkInputs(){if(this._wheelDeltaX===0&&this._wheelDeltaY===0&&this._wheelDeltaZ==0)return;this._moveRelative.setAll(0),this._rotateRelative.setAll(0),this._moveScene.setAll(0),this._updateCamera(),this.camera.getScene().useRightHandedSystem&&(this._moveRelative.z*=-1);let e=Z.Zero();this.camera.getViewMatrix().invertToRef(e);let t=b.Zero();b.TransformNormalToRef(this._moveRelative,e,t),this.camera.cameraRotation.x+=this._rotateRelative.x/200,this.camera.cameraRotation.y+=this._rotateRelative.y/200,this.camera.cameraDirection.addInPlace(t),this.camera.cameraDirection.addInPlace(this._moveScene),super.checkInputs()}_updateCamera(){this._updateCameraProperty(this._wheelDeltaX,this._wheelXAction,this._wheelXActionCoordinate),this._updateCameraProperty(this._wheelDeltaY,this._wheelYAction,this._wheelYActionCoordinate),this._updateCameraProperty(this._wheelDeltaZ,this._wheelZAction,this._wheelZActionCoordinate)}_updateCameraProperty(e,t,i){if(e===0||t===null||i===null)return;let r=null;switch(t){case ki.MoveRelative:r=this._moveRelative;break;case ki.RotateRelative:r=this._rotateRelative;break;case ki.MoveScene:r=this._moveScene;break}switch(i){case 0:r.set(e,0,0);break;case 1:r.set(0,e,0);break;case 2:r.set(0,0,e);break}}};P([F()],Js.prototype,"wheelXMoveRelative",null);P([F()],Js.prototype,"wheelYMoveRelative",null);P([F()],Js.prototype,"wheelZMoveRelative",null);P([F()],Js.prototype,"wheelXRotateRelative",null);P([F()],Js.prototype,"wheelYRotateRelative",null);P([F()],Js.prototype,"wheelZRotateRelative",null);P([F()],Js.prototype,"wheelXMoveScene",null);P([F()],Js.prototype,"wheelYMoveScene",null);P([F()],Js.prototype,"wheelZMoveScene",null);is.FreeCameraMouseWheelInput=Js});var Hh,Q8=I(()=>{Wt();kt();Cl();yo();ke();wi();Hh=class{constructor(e=!1){this.allowMouse=e,this.touchAngularSensibility=2e5,this.touchMoveSensibility=250,this.singleFingerRotate=!1,this._offsetX=null,this._offsetY=null,this._pointerPressed=new Array,this._isSafari=pe.IsSafari()}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=null;if(this._pointerInput===void 0&&(this._onLostFocus=()=>{this._offsetX=null,this._offsetY=null},this._pointerInput=i=>{let r=i.event,s=r.pointerType==="mouse"||this._isSafari&&typeof r.pointerType=="undefined";if(!(!this.allowMouse&&s)){if(i.type===at.POINTERDOWN){if(e||r.preventDefault(),this._pointerPressed.push(r.pointerId),this._pointerPressed.length!==1)return;t={x:r.clientX,y:r.clientY}}else if(i.type===at.POINTERUP){e||r.preventDefault();let a=this._pointerPressed.indexOf(r.pointerId);if(a===-1||(this._pointerPressed.splice(a,1),a!=0))return;t=null,this._offsetX=null,this._offsetY=null}else if(i.type===at.POINTERMOVE){if(e||r.preventDefault(),!t||this._pointerPressed.indexOf(r.pointerId)!=0)return;this._offsetX=r.clientX-t.x,this._offsetY=-(r.clientY-t.y)}}}),this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE),this._onLostFocus){let r=this.camera.getEngine().getInputElement();r&&r.addEventListener("blur",this._onLostFocus)}}detachControl(){if(this._pointerInput){if(this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null),this._onLostFocus){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("blur",this._onLostFocus),this._onLostFocus=null}this._pointerPressed.length=0,this._offsetX=null,this._offsetY=null}}checkInputs(){if(this._offsetX===null||this._offsetY===null||this._offsetX===0&&this._offsetY===0)return;let e=this.camera,t=e._calculateHandednessMultiplier();if(e.cameraRotation.y=this._offsetX*t/this.touchAngularSensibility,this.singleFingerRotate&&this._pointerPressed.length===1||!this.singleFingerRotate&&this._pointerPressed.length>1)e.cameraRotation.x=-(this._offsetY*t)/this.touchAngularSensibility;else{let r=e._computeLocalCameraSpeed(),s=$.Vector3[0];s.copyFromFloats(0,0,this.touchMoveSensibility!==0?r*this._offsetY/this.touchMoveSensibility:0),Z.RotationYawPitchRollToRef(e.rotation.y,e.rotation.x,0,e._cameraRotationMatrix),b.TransformCoordinatesToRef(s,e._cameraRotationMatrix,s),e.cameraDirection.addInPlace(s)}}getClassName(){return"FreeCameraTouchInput"}getSimpleName(){return"touch"}};P([F()],Hh.prototype,"touchAngularSensibility",void 0);P([F()],Hh.prototype,"touchMoveSensibility",void 0);is.FreeCameraTouchInput=Hh});var Ub,$8=I(()=>{Cl();K8();j8();q8();Q8();Ub=class extends Sp{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new as),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new kh(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new Js,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new Hh),this}clear(){super.clear(),this._mouseInput=null}}});var Wc,J8=I(()=>{Wt();kt();ke();qD();$8();wi();$i();zr();Wc=class extends Zs{get angularSensibility(){let e=this.inputs.attached.mouse;return e?e.angularSensibility:0}set angularSensibility(e){let t=this.inputs.attached.mouse;t&&(t.angularSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysUpward(){let e=this.inputs.attached.keyboard;return e?e.keysUpward:[]}set keysUpward(e){let t=this.inputs.attached.keyboard;t&&(t.keysUpward=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysDownward(){let e=this.inputs.attached.keyboard;return e?e.keysDownward:[]}set keysDownward(e){let t=this.inputs.attached.keyboard;t&&(t.keysDownward=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get keysRotateLeft(){let e=this.inputs.attached.keyboard;return e?e.keysRotateLeft:[]}set keysRotateLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateLeft=e)}get keysRotateRight(){let e=this.inputs.attached.keyboard;return e?e.keysRotateRight:[]}set keysRotateRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateRight=e)}get keysRotateUp(){let e=this.inputs.attached.keyboard;return e?e.keysRotateUp:[]}set keysRotateUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateUp=e)}get keysRotateDown(){let e=this.inputs.attached.keyboard;return e?e.keysRotateDown:[]}set keysRotateDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateDown=e)}constructor(e,t,i,r=!0){super(e,t,i,r),this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.checkCollisions=!1,this.applyGravity=!1,this._needMoveForGravity=!1,this._oldPosition=b.Zero(),this._diffPosition=b.Zero(),this._newPosition=b.Zero(),this._collisionMask=-1,this._onCollisionPositionChange=(s,a,o=null)=>{this._newPosition.copyFrom(a),this._newPosition.subtractToRef(this._oldPosition,this._diffPosition),this._diffPosition.length()>Re.CollisionsEpsilon&&(this.position.addToRef(this._diffPosition,this._deferredPositionUpdate),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate),this.onCollide&&o&&this.onCollide(o))},this.inputs=new Ub(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=pe.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(t)}detachControl(){this.inputs.detachElement(),this.cameraDirection=new b(0,0,0),this.cameraRotation=new we(0,0)}get collisionMask(){return this._collisionMask}set collisionMask(e){this._collisionMask=isNaN(e)?-1:e}_collideWithWorld(e){let t;this.parent?t=b.TransformCoordinates(this.position,this.parent.getWorldMatrix()):t=this.position,t.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);let i=this.getScene().collisionCoordinator;this._collider||(this._collider=i.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;let r=e;this.applyGravity&&(r=e.add(this.getScene().gravity)),i.getNewPosition(this._oldPosition,r,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}_checkInputs(){this._localDirection||(this._localDirection=b.Zero(),this._transformedDirection=b.Zero()),this.inputs.checkInputs(),super._checkInputs()}set needMoveForGravity(e){this._needMoveForGravity=e}get needMoveForGravity(){return this._needMoveForGravity}_decideIfNeedsToMove(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):super._updatePosition()}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"FreeCamera"}};P([Qr()],Wc.prototype,"ellipsoid",void 0);P([Qr()],Wc.prototype,"ellipsoidOffset",void 0);P([F()],Wc.prototype,"checkCollisions",void 0);P([F()],Wc.prototype,"applyGravity",void 0);Ut("BABYLON.FreeCamera",Wc)});var Qa,Vb=I(()=>{ke();pl();_a();Qa=class n extends Ei{get _matrix(){return this._compose(),this._localMatrix}set _matrix(e){e.updateFlag===this._localMatrix.updateFlag&&!this._needToCompose||(this._needToCompose=!1,this._localMatrix.copyFrom(e),this._markAsDirtyAndDecompose())}constructor(e,t,i=null,r=null,s=null,a=null,o=null){var l;super(e,t.getScene(),!1),this.name=e,this.children=[],this.animations=[],this._index=null,this._scalingDeterminant=1,this._needToDecompose=!0,this._needToCompose=!1,this._linkedTransformNode=null,this._waitingTransformNodeId=null,this._waitingTransformNodeUniqueId=null,this._skeleton=t,this._localMatrix=(l=r==null?void 0:r.clone())!=null?l:Z.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new Z,this._absoluteBindMatrix=new Z,this._absoluteInverseBindMatrix=new Z,this._finalMatrix=new Z,t.bones.push(this),this.setParent(i,!1),this._updateAbsoluteBindMatrices()}getClassName(){return"Bone"}getSkeleton(){return this._skeleton}get parent(){return this._parentNode}getParent(){return this.parent}getChildren(){return this.children}getIndex(){return this._index===null?this.getSkeleton().bones.indexOf(this):this._index}set parent(e){this.setParent(e)}setParent(e,t=!0){if(this.parent!==e){if(this.parent){let i=this.parent.children.indexOf(this);i!==-1&&this.parent.children.splice(i,1)}this._parentNode=e,this.parent&&this.parent.children.push(this),t&&this._updateAbsoluteBindMatrices(),this.markAsDirty()}}getLocalMatrix(){return this._compose(),this._localMatrix}getBindMatrix(){return this._bindMatrix}getBaseMatrix(){return this.getBindMatrix()}getRestMatrix(){return this._restMatrix}getRestPose(){return this.getRestMatrix()}setRestMatrix(e){this._restMatrix.copyFrom(e)}setRestPose(e){this.setRestMatrix(e)}getBindPose(){return this.getBindMatrix()}setBindMatrix(e){this.updateMatrix(e)}setBindPose(e){this.setBindMatrix(e)}getFinalMatrix(){return this._finalMatrix}getWorldMatrix(){return this.getFinalMatrix()}returnToRest(){var e;if(this._linkedTransformNode){let t=$.Vector3[0],i=$.Quaternion[0],r=$.Vector3[1];this.getRestMatrix().decompose(t,i,r),this._linkedTransformNode.position.copyFrom(r),this._linkedTransformNode.rotationQuaternion=(e=this._linkedTransformNode.rotationQuaternion)!=null?e:Ke.Identity(),this._linkedTransformNode.rotationQuaternion.copyFrom(i),this._linkedTransformNode.scaling.copyFrom(t)}else this._matrix=this._restMatrix}getAbsoluteInverseBindMatrix(){return this._absoluteInverseBindMatrix}getInvertedAbsoluteTransform(){return this.getAbsoluteInverseBindMatrix()}getAbsoluteMatrix(){return this._skeleton.computeAbsoluteMatrices(),this._absoluteMatrix}getAbsoluteTransform(){return this.getAbsoluteMatrix()}linkTransformNode(e){this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode--,this._linkedTransformNode=e,this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode++}getTransformNode(){return this._linkedTransformNode}get position(){return this._decompose(),this._localPosition}set position(e){this._decompose(),this._localPosition.copyFrom(e),this._markAsDirtyAndCompose()}get rotation(){return this.getRotation()}set rotation(e){this.setRotation(e)}get rotationQuaternion(){return this._decompose(),this._localRotation}set rotationQuaternion(e){this.setRotationQuaternion(e)}get scaling(){return this.getScale()}set scaling(e){this.setScale(e)}get animationPropertiesOverride(){return this._skeleton.animationPropertiesOverride}_decompose(){this._needToDecompose&&(this._needToDecompose=!1,this._localScaling||(this._localScaling=b.Zero(),this._localRotation=Ke.Zero(),this._localPosition=b.Zero()),this._localMatrix.decompose(this._localScaling,this._localRotation,this._localPosition))}_compose(){if(this._needToCompose){if(!this._localScaling){this._needToCompose=!1;return}this._needToCompose=!1,Z.ComposeToRef(this._localScaling,this._localRotation,this._localPosition,this._localMatrix)}}updateMatrix(e,t=!0,i=!0){this._bindMatrix.copyFrom(e),t&&this._updateAbsoluteBindMatrices(),i?this._matrix=e:this.markAsDirty()}_updateAbsoluteBindMatrices(e,t=!0){if(e||(e=this._bindMatrix),this.parent?e.multiplyToRef(this.parent._absoluteBindMatrix,this._absoluteBindMatrix):this._absoluteBindMatrix.copyFrom(e),this._absoluteBindMatrix.invertToRef(this._absoluteInverseBindMatrix),t)for(let i=0;i{Xr();Uv=class n extends _e{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,h,u){super(null,s,!a,o,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,f),this.format=r,this._engine&&(!this._engine._caps.textureFloatLinearFiltering&&c===1&&(l=1),!this._engine._caps.textureHalfFloatLinearFiltering&&c===2&&(l=1),this._texture=this._engine.createRawTexture(e,t,i,r,a,o,l,null,c,f!=null?f:0,d!=null?d:!1,u),this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE,this._waitingForData=!!h&&!e)}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._getEngine().updateRawTexture(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,this._texture._useSRGBBuffer,t),this._waitingForData=!1}clone(){if(!this._texture)return super.clone();let e=new n(null,this.getSize().width,this.getSize().height,this.format,this.getScene(),this._texture.generateMipMaps,this._invertY,this.samplingMode,this._texture.type,this._texture._creationFlags,this._useSRGBBuffer);return e._texture=this._texture,this._texture.incrementReferences(),e}isReady(){return super.isReady()&&!this._waitingForData}static CreateLuminanceTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,1,r,s,a,o)}static CreateLuminanceAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,2,r,s,a,o)}static CreateAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,0,r,s,a,o)}static CreateRGBTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1){return new n(e,t,i,4,r,s,a,o,l,c,f)}static CreateRGBATexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1,d=!1){return new n(e,t,i,5,r,s,a,o,l,c,f,d)}static CreateRGBAStorageTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=!1){return new n(e,t,i,5,r,s,a,o,l,1,c)}static CreateRTexture(e,t,i,r,s=!0,a=!1,o=_e.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l)}static CreateRStorageTexture(e,t,i,r,s=!0,a=!1,o=_e.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l,1)}}});var Gb,t6=I(()=>{Vb();mi();ke();e6();Yf();WD();Gi();Lt();Gg();Gb=class n{get useTextureToStoreBoneMatrices(){return this._useTextureToStoreBoneMatrices}set useTextureToStoreBoneMatrices(e){this._useTextureToStoreBoneMatrices=e,this._markAsDirty()}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}get isUsingTextureForMatrices(){return this.useTextureToStoreBoneMatrices&&this._canUseTextureForBones}get uniqueId(){return this._uniqueId}constructor(e,t,i){this.name=e,this.id=t,this.bones=[],this.needInitialSkinMatrix=!1,this._isDirty=!0,this._meshesWithPoseMatrix=new Array,this._identity=Z.Identity(),this._currentRenderId=-1,this._textureWidth=0,this._textureHeight=1,this._ranges={},this._absoluteTransformIsDirty=!0,this._canUseTextureForBones=!1,this._uniqueId=0,this._numBonesWithLinkedTransformNode=0,this._hasWaitingData=null,this._parentContainer=null,this.doNotSerialize=!1,this._useTextureToStoreBoneMatrices=!0,this._animationPropertiesOverride=null,this.onBeforeComputeObservable=new te,this.metadata=null,this.bones=[],this._scene=i||Oe.LastCreatedScene,this._uniqueId=this._scene.getUniqueId(),this._scene.addSkeleton(this),this._isDirty=!0;let r=this._scene.getEngine().getCaps();this._canUseTextureForBones=r.textureFloat&&r.maxVertexTextureImageUnits>0}getClassName(){return"Skeleton"}getChildren(){return this.bones.filter(e=>!e.getParent())}getTransformMatrices(e){if(this.needInitialSkinMatrix){if(!e)throw new Error("getTransformMatrices: When using the needInitialSkinMatrix flag, a mesh must be provided");return e._bonesTransformMatrices||this.prepare(!0),e._bonesTransformMatrices}return(!this._transformMatrices||this._isDirty)&&this.prepare(!this._transformMatrices),this._transformMatrices}getTransformMatrixTexture(e){return this.needInitialSkinMatrix&&e._transformMatrixTexture?e._transformMatrixTexture:this._transformMatrixTexture}getScene(){return this._scene}toString(e){let t=`Name: ${this.name}, nBones: ${this.bones.length}`;if(t+=`, nAnimationRanges: ${this._ranges?Object.keys(this._ranges).length:"none"}`,e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i&&(t+=", ",i=!1),t+=r;t+="}"}return t}getBoneIndexByName(e){for(let t=0,i=this.bones.length;t-1&&this._meshesWithPoseMatrix.splice(t,1)}_computeTransformMatrices(e,t){this.onBeforeComputeObservable.notifyObservers(this);for(let i=0;i0){for(let r of this.bones)if(r._linkedTransformNode){let s=r._linkedTransformNode;r.position=s.position,s.rotationQuaternion?r.rotationQuaternion=s.rotationQuaternion:r.rotation=s.rotation,r.scaling=s.scaling}}let t=null;if(this.needInitialSkinMatrix)for(let r of this._meshesWithPoseMatrix){let s=r.getPoseMatrix(),a=this._isDirty;if(t===null&&(t=this._computeTextureSize()),(!r._bonesTransformMatrices||r._bonesTransformMatrices.length!==t)&&(r._bonesTransformMatrices=new Float32Array(t),a=!0),!!a){if(this._synchronizedWithMesh!==r){this._synchronizedWithMesh=r;for(let o of this.bones)o.getParent()||(o.getBindMatrix().multiplyToRef(s,$.Matrix[1]),o._updateAbsoluteBindMatrices($.Matrix[1]));if(this.isUsingTextureForMatrices){let o=(i=r._transformMatrixTexture)==null?void 0:i.getSize(),l=o?o.width*o.height*4:0;(!r._transformMatrixTexture||l!==t)&&(r._transformMatrixTexture&&r._transformMatrixTexture.dispose(),r._transformMatrixTexture=Uv.CreateRGBATexture(r._bonesTransformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))}}this._computeTransformMatrices(r._bonesTransformMatrices,s),this.isUsingTextureForMatrices&&r._transformMatrixTexture&&r._transformMatrixTexture.update(r._bonesTransformMatrices)}}else{if(!this._isDirty)return;t===null&&(t=this._computeTextureSize()),(!this._transformMatrices||this._transformMatrices.length!==t)&&(this._transformMatrices=new Float32Array(t),this.isUsingTextureForMatrices&&(this._transformMatrixTexture&&this._transformMatrixTexture.dispose(),this._transformMatrixTexture=Uv.CreateRGBATexture(this._transformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))),this._computeTransformMatrices(this._transformMatrices,null),this.isUsingTextureForMatrices&&this._transformMatrixTexture&&this._transformMatrixTexture.update(this._transformMatrices)}this._isDirty=!1}getAnimatables(){if(!this._animatables||this._animatables.length!==this.bones.length){this._animatables=[];for(let e=0;e-1&&this._parentContainer.skeletons.splice(e,1),this._parentContainer=null}this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null)}serialize(){var t,i;let e={};e.name=this.name,e.id=this.id,e.uniqueId=this.uniqueId,this.dimensionsAtRest&&(e.dimensionsAtRest=this.dimensionsAtRest.asArray()),e.bones=[],e.needInitialSkinMatrix=this.needInitialSkinMatrix,this.metadata&&(e.metadata=this.metadata);for(let r=0;r0&&(o.animation=s.animations[0].serialize()),e.ranges=[];for(let l in this._ranges){let c=this._ranges[l];if(!c)continue;let f={};f.name=l,f.from=c.from,f.to=c.to,e.ranges.push(f)}}return e}static Parse(e,t){let i=new n(e.name,e.id,t);e.dimensionsAtRest&&(i.dimensionsAtRest=b.FromArray(e.dimensionsAtRest)),i.needInitialSkinMatrix=e.needInitialSkinMatrix,e.metadata&&(i.metadata=e.metadata);let r;for(r=0;r-1&&(o=i.bones[s.parentBoneIndex]);let l=s.rest?Z.FromArray(s.rest):null,c=new Qa(s.name,i,o,Z.FromArray(s.matrix),l,null,a);s.id!==void 0&&s.id!==null&&(c.id=s.id),s.length&&(c.length=s.length),s.metadata&&(c.metadata=s.metadata),s.animation&&c.animations.push(mt.Parse(s.animation)),s.linkedTransformNodeId!==void 0&&s.linkedTransformNodeId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeId=s.linkedTransformNodeId),s.linkedTransformNodeUniqueId!==void 0&&s.linkedTransformNodeUniqueId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeUniqueId=s.linkedTransformNodeUniqueId)}if(e.ranges)for(r=0;r0&&(e=this._meshesWithPoseMatrix[0].getPoseMatrix()),e}sortBones(){let e=[],t=new Array(this.bones.length);for(let i=0;i{Wt();mi();Gi();Zi();kt();Dr();$i();md=class n{get influence(){return this._influence}set influence(e){if(this._influence===e)return;let t=this._influence;this._influence=e,this.onInfluenceChanged.hasObservers()&&this.onInfluenceChanged.notifyObservers(t===0||e===0)}get animationPropertiesOverride(){return!this._animationPropertiesOverride&&this._scene?this._scene.animationPropertiesOverride:this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}constructor(e,t=0,i=null,r=null){this.name=e,this.animations=[],this._positions=null,this._normals=null,this._tangents=null,this._uvs=null,this._uv2s=null,this._colors=null,this._uniqueId=0,this.onInfluenceChanged=new te,this._onDataLayoutChanged=new te,this.morphTargetManager=null,this._animationPropertiesOverride=null,this.id=e,this.morphTargetManager=r,this._scene=i||Oe.LastCreatedScene,this.influence=t,this._scene&&(this._uniqueId=this._scene.getUniqueId())}get uniqueId(){return this._uniqueId}get hasPositions(){return!!this._positions}get hasNormals(){return!!this._normals}get hasTangents(){return!!this._tangents}get hasUVs(){return!!this._uvs}get hasUV2s(){return!!this._uv2s}get hasColors(){return!!this._colors}get vertexCount(){return this._positions?this._positions.length/3:this._normals?this._normals.length/3:this._tangents?this._tangents.length/3:this._uvs?this._uvs.length/2:this._uv2s?this._uv2s.length/2:this._colors?this._colors.length/4:0}setPositions(e){let t=this.hasPositions;this._positions=e,t!==this.hasPositions&&this._onDataLayoutChanged.notifyObservers(void 0)}getPositions(){return this._positions}setNormals(e){let t=this.hasNormals;this._normals=e,t!==this.hasNormals&&this._onDataLayoutChanged.notifyObservers(void 0)}getNormals(){return this._normals}setTangents(e){let t=this.hasTangents;this._tangents=e,t!==this.hasTangents&&this._onDataLayoutChanged.notifyObservers(void 0)}getTangents(){return this._tangents}setUVs(e){let t=this.hasUVs;this._uvs=e,t!==this.hasUVs&&this._onDataLayoutChanged.notifyObservers(void 0)}getUVs(){return this._uvs}setUV2s(e){let t=this.hasUV2s;this._uv2s=e,t!==this.hasUV2s&&this._onDataLayoutChanged.notifyObservers(void 0)}getUV2s(){return this._uv2s}setColors(e){let t=this.hasColors;this._colors=e,t!==this.hasColors&&this._onDataLayoutChanged.notifyObservers(void 0)}getColors(){return this._colors}clone(){let e=nt.Clone(()=>new n(this.name,this.influence,this._scene,this.morphTargetManager),this);return e._positions=this._positions,e._normals=this._normals,e._tangents=this._tangents,e._uvs=this._uvs,e._uv2s=this._uv2s,e._colors=this._colors,e}serialize(){let e={};return e.name=this.name,e.influence=this.influence,this.id!=null&&(e.id=this.id),e.uniqueId=this.uniqueId,e.positions=Array.prototype.slice.call(this.getPositions()),this.hasNormals&&(e.normals=Array.prototype.slice.call(this.getNormals())),this.hasTangents&&(e.tangents=Array.prototype.slice.call(this.getTangents())),this.hasUVs&&(e.uvs=Array.prototype.slice.call(this.getUVs())),this.hasUV2s&&(e.uv2s=Array.prototype.slice.call(this.getUV2s())),this.hasColors&&(e.colors=Array.prototype.slice.call(this.getColors())),nt.AppendSerializedAnimations(this,e),e}getClassName(){return"MorphTarget"}static Parse(e,t,i=null){let r=new n(e.name,e.influence,t,i);if(r.setPositions(e.positions),e.id!=null&&(r.id=e.id),e.normals&&r.setNormals(e.normals),e.tangents&&r.setTangents(e.tangents),e.uvs&&r.setUVs(e.uvs),e.uv2s&&r.setUV2s(e.uv2s),e.colors&&r.setColors(e.colors),e.animations){for(let s=0;s{Xr();kb=class n extends _e{get depth(){return this._depth}constructor(e,t,i,r,s,a,o=!0,l=!1,c=_e.TRILINEAR_SAMPLINGMODE,f=0,d,h){super(null,a,!o,l),this.format=s,this._texture=a.getEngine().createRawTexture2DArray(e,t,i,r,s,o,l,c,null,f,d!=null?d:0,h),this._depth=r,this.is2DArray=!0}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._texture&&this._getEngine().updateRawTexture2DArray(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,t)}static CreateRGBATexture(e,t,i,r,s,a=!0,o=!1,l=3,c=0){return new n(e,t,i,r,5,s,a,o,l,c)}}});var zh,r6=I(()=>{Mo();Lt();Gi();$O();i6();zh=class n{set areUpdatesFrozen(e){e?this._blockCounter++:(this._blockCounter--,this._blockCounter<=0&&(this._blockCounter=0,this._syncActiveTargets(this._forceUpdateWhenUnfrozen),this._forceUpdateWhenUnfrozen=!1))}get areUpdatesFrozen(){return this._blockCounter>0}constructor(e=null,t){if(this.meshName=t,this._targets=new Array,this._targetInfluenceChangedObservers=new Array,this._targetDataLayoutChangedObservers=new Array,this._activeTargets=new Xi(16),this._supportsPositions=!1,this._supportsNormals=!1,this._supportsTangents=!1,this._supportsUVs=!1,this._supportsUV2s=!1,this._supportsColors=!1,this._vertexCount=0,this._uniqueId=0,this._tempInfluences=new Array,this._canUseTextureForTargets=!1,this._blockCounter=0,this._mustSynchronize=!0,this._forceUpdateWhenUnfrozen=!1,this._textureVertexStride=0,this._textureWidth=0,this._textureHeight=1,this._parentContainer=null,this.optimizeInfluencers=!0,this.enablePositionMorphing=!0,this.enableNormalMorphing=!0,this.enableTangentMorphing=!0,this.enableUVMorphing=!0,this.enableUV2Morphing=!0,this.enableColorMorphing=!0,this._numMaxInfluencers=0,this._useTextureToStoreTargets=!0,this.metadata=null,this._influencesAreDirty=!1,this._needUpdateInfluences=!1,e||(e=Oe.LastCreatedScene),this._scene=e,this._scene){this._scene.addMorphTargetManager(this),this._uniqueId=this._scene.getUniqueId();let i=this._scene.getEngine().getCaps();this._canUseTextureForTargets=i.canUseGLVertexID&&i.textureFloat&&i.maxVertexTextureImageUnits>0&&i.texture2DArrayMaxLayerCount>1}}get numMaxInfluencers(){return n.ConstantTargetCountForTextureMode>0&&this.isUsingTextureForTargets?n.ConstantTargetCountForTextureMode:this._numMaxInfluencers}set numMaxInfluencers(e){this._numMaxInfluencers!==e&&(this._numMaxInfluencers=e,this._mustSynchronize=!0,this._syncActiveTargets())}get uniqueId(){return this._uniqueId}get vertexCount(){return this._vertexCount}get supportsPositions(){return this._supportsPositions&&this.enablePositionMorphing}get supportsNormals(){return this._supportsNormals&&this.enableNormalMorphing}get supportsTangents(){return this._supportsTangents&&this.enableTangentMorphing}get supportsUVs(){return this._supportsUVs&&this.enableUVMorphing}get supportsUV2s(){return this._supportsUV2s&&this.enableUV2Morphing}get supportsColors(){return this._supportsColors&&this.enableColorMorphing}get hasPositions(){return this._supportsPositions}get hasNormals(){return this._supportsNormals}get hasTangents(){return this._supportsTangents}get hasUVs(){return this._supportsUVs}get hasUV2s(){return this._supportsUV2s}get hasColors(){return this._supportsColors}get numTargets(){return this._targets.length}get numInfluencers(){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.length}get influences(){return this._influencesAreDirty&&this._syncActiveTargets(),this._influences}get useTextureToStoreTargets(){return this._useTextureToStoreTargets}set useTextureToStoreTargets(e){this._useTextureToStoreTargets!==e&&(this._useTextureToStoreTargets=e,this._mustSynchronize=!0,this._syncActiveTargets())}get isUsingTextureForTargets(){var e;return n.EnableTextureStorage&&this.useTextureToStoreTargets&&this._canUseTextureForTargets&&!((e=this._scene)!=null&&e.getEngine().getCaps().disableMorphTargetTexture)}getActiveTarget(e){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.data[e]}getTarget(e){return this._targets[e]}getTargetByName(e){for(let t of this._targets)if(t.name===e)return t;return null}addTarget(e){this._targets.push(e),this._targetInfluenceChangedObservers.push(e.onInfluenceChanged.add(t=>{this.areUpdatesFrozen&&t&&(this._forceUpdateWhenUnfrozen=!0),this._influencesAreDirty=!0,this._needUpdateInfluences=this._needUpdateInfluences||t})),this._targetDataLayoutChangedObservers.push(e._onDataLayoutChanged.add(()=>{this._mustSynchronize=!0,this._syncActiveTargets()})),this._mustSynchronize=!0,this._syncActiveTargets()}removeTarget(e){let t=this._targets.indexOf(e);t>=0&&(this._targets.splice(t,1),e.onInfluenceChanged.remove(this._targetInfluenceChangedObservers.splice(t,1)[0]),e._onDataLayoutChanged.remove(this._targetDataLayoutChangedObservers.splice(t,1)[0]),this._mustSynchronize=!0,this._syncActiveTargets()),this._scene&&this._scene.stopAnimation(e)}_bind(e){this._influencesAreDirty&&this._syncActiveTargets(),e.setFloat3("morphTargetTextureInfo",this._textureVertexStride,this._textureWidth,this._textureHeight),e.setFloatArray("morphTargetTextureIndices",this._morphTargetTextureIndices),e.setTexture("morphTargets",this._targetStoreTexture),e.setFloat("morphTargetCount",this.numInfluencers)}clone(){let e=new n(this._scene);e.areUpdatesFrozen=!0;for(let t of this._targets)e.addTarget(t.clone());return e.areUpdatesFrozen=!1,e.enablePositionMorphing=this.enablePositionMorphing,e.enableNormalMorphing=this.enableNormalMorphing,e.enableTangentMorphing=this.enableTangentMorphing,e.enableUVMorphing=this.enableUVMorphing,e.enableUV2Morphing=this.enableUV2Morphing,e.enableColorMorphing=this.enableColorMorphing,e.metadata=this.metadata,e}serialize(){let e={};e.id=this.uniqueId,e.meshName=this.meshName,e.targets=[];for(let t of this._targets)e.targets.push(t.serialize());return this.metadata&&(e.metadata=this.metadata),e}_syncActiveTargets(e=!1){if(this.areUpdatesFrozen)return;e=e||this._needUpdateInfluences,this._needUpdateInfluences=!1,this._influencesAreDirty=!1;let t=!!this._targetStoreTexture,i=this.isUsingTextureForTargets;(this._mustSynchronize||t!==i)&&(this._mustSynchronize=!1,this.synchronize());let r=0;this._activeTargets.reset(),(!this._morphTargetTextureIndices||this._morphTargetTextureIndices.length!==this._targets.length)&&(this._morphTargetTextureIndices=new Float32Array(this._targets.length));let s=-1;for(let a of this._targets)if(s++,!(a.influence===0&&this.optimizeInfluencers)){if(this._activeTargets.length>=n.MaxActiveMorphTargetsInVertexAttributeMode&&!this.isUsingTextureForTargets)break;this._activeTargets.push(a),this._morphTargetTextureIndices[r]=s,this._tempInfluences[r++]=a.influence}this._morphTargetTextureIndices.length!==r&&(this._morphTargetTextureIndices=this._morphTargetTextureIndices.slice(0,r)),(!this._influences||this._influences.length!==r)&&(this._influences=new Float32Array(r));for(let a=0;ae.getCaps().texture2DArrayMaxLayerCount&&(this.useTextureToStoreTargets=!1);for(let i of this._targets){this._supportsPositions=this._supportsPositions&&i.hasPositions,this._supportsNormals=this._supportsNormals&&i.hasNormals,this._supportsTangents=this._supportsTangents&&i.hasTangents,this._supportsUVs=this._supportsUVs&&i.hasUVs,this._supportsUV2s=this._supportsUV2s&&i.hasUV2s,this._supportsColors=this._supportsColors&&i.hasColors;let r=i.vertexCount;if(this._vertexCount===0)this._vertexCount=r;else if(this._vertexCount!==r){ee.Error(`Incompatible target. Targets must all have the same vertices count. Current vertex count: ${this._vertexCount}, vertex count for target "${i.name}": ${r}`);return}}if(this.isUsingTextureForTargets){this._textureVertexStride=0,this._supportsPositions&&this._textureVertexStride++,this._supportsNormals&&this._textureVertexStride++,this._supportsTangents&&this._textureVertexStride++,this._supportsUVs&&this._textureVertexStride++,this._supportsUV2s&&this._textureVertexStride++,this._supportsColors&&this._textureVertexStride++,this._textureWidth=this._vertexCount*this._textureVertexStride||1,this._textureHeight=1;let i=e.getCaps().maxTextureSize;this._textureWidth>i&&(this._textureHeight=Math.ceil(this._textureWidth/i),this._textureWidth=i);let r=this._targets.length,s=new Float32Array(r*this._textureWidth*this._textureHeight*4),a;for(let o=0;o-1&&this._parentContainer.morphTargetManagers.splice(e,1),this._parentContainer=null}for(let e of this._targets)this._scene.stopAnimation(e)}}static Parse(e,t){let i=new n(t);for(let r of e.targets)i.addTarget(md.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};zh.EnableTextureStorage=!0;zh.MaxActiveMorphTargetsInVertexAttributeMode=8;zh.ConstantTargetCountForTextureMode=0});function Wb(n,e,t){Vv(n)&&ee.Warn(`Extension with the name '${n}' already exists`),JO.set(n,{isGLTFExtension:e,factory:t})}function Vv(n){return JO.delete(n)}var JO,n6,eN=I(()=>{Lt();JO=new Map,n6=JO});var W,tN=I(()=>{W=class{};W.AUTOSAMPLERSUFFIX="Sampler";W.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";W.ALPHA_DISABLE=0;W.ALPHA_ADD=1;W.ALPHA_COMBINE=2;W.ALPHA_SUBTRACT=3;W.ALPHA_MULTIPLY=4;W.ALPHA_MAXIMIZED=5;W.ALPHA_ONEONE=6;W.ALPHA_PREMULTIPLIED=7;W.ALPHA_PREMULTIPLIED_PORTERDUFF=8;W.ALPHA_INTERPOLATE=9;W.ALPHA_SCREENMODE=10;W.ALPHA_ONEONE_ONEONE=11;W.ALPHA_ALPHATOCOLOR=12;W.ALPHA_REVERSEONEMINUS=13;W.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;W.ALPHA_ONEONE_ONEZERO=15;W.ALPHA_EXCLUSION=16;W.ALPHA_LAYER_ACCUMULATE=17;W.ALPHA_MIN=18;W.ALPHA_MAX=19;W.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;W.ALPHA_EQUATION_ADD=0;W.ALPHA_EQUATION_SUBSTRACT=1;W.ALPHA_EQUATION_REVERSE_SUBTRACT=2;W.ALPHA_EQUATION_MAX=3;W.ALPHA_EQUATION_MIN=4;W.ALPHA_EQUATION_DARKEN=5;W.DELAYLOADSTATE_NONE=0;W.DELAYLOADSTATE_LOADED=1;W.DELAYLOADSTATE_LOADING=2;W.DELAYLOADSTATE_NOTLOADED=4;W.NEVER=512;W.ALWAYS=519;W.LESS=513;W.EQUAL=514;W.LEQUAL=515;W.GREATER=516;W.GEQUAL=518;W.NOTEQUAL=517;W.KEEP=7680;W.ZERO=0;W.REPLACE=7681;W.INCR=7682;W.DECR=7683;W.INVERT=5386;W.INCR_WRAP=34055;W.DECR_WRAP=34056;W.TEXTURE_CLAMP_ADDRESSMODE=0;W.TEXTURE_WRAP_ADDRESSMODE=1;W.TEXTURE_MIRROR_ADDRESSMODE=2;W.TEXTURE_CREATIONFLAG_STORAGE=1;W.TEXTUREFORMAT_ALPHA=0;W.TEXTUREFORMAT_LUMINANCE=1;W.TEXTUREFORMAT_LUMINANCE_ALPHA=2;W.TEXTUREFORMAT_RGB=4;W.TEXTUREFORMAT_RGBA=5;W.TEXTUREFORMAT_RED=6;W.TEXTUREFORMAT_R=6;W.TEXTUREFORMAT_R16_UNORM=33322;W.TEXTUREFORMAT_RG16_UNORM=33324;W.TEXTUREFORMAT_RGB16_UNORM=32852;W.TEXTUREFORMAT_RGBA16_UNORM=32859;W.TEXTUREFORMAT_R16_SNORM=36760;W.TEXTUREFORMAT_RG16_SNORM=36761;W.TEXTUREFORMAT_RGB16_SNORM=36762;W.TEXTUREFORMAT_RGBA16_SNORM=36763;W.TEXTUREFORMAT_RG=7;W.TEXTUREFORMAT_RED_INTEGER=8;W.TEXTUREFORMAT_R_INTEGER=8;W.TEXTUREFORMAT_RG_INTEGER=9;W.TEXTUREFORMAT_RGB_INTEGER=10;W.TEXTUREFORMAT_RGBA_INTEGER=11;W.TEXTUREFORMAT_BGRA=12;W.TEXTUREFORMAT_DEPTH24_STENCIL8=13;W.TEXTUREFORMAT_DEPTH32_FLOAT=14;W.TEXTUREFORMAT_DEPTH16=15;W.TEXTUREFORMAT_DEPTH24=16;W.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;W.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;W.TEXTUREFORMAT_STENCIL8=19;W.TEXTUREFORMAT_UNDEFINED=4294967295;W.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;W.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;W.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;W.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;W.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;W.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;W.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;W.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;W.TEXTURETYPE_UNSIGNED_BYTE=0;W.TEXTURETYPE_UNSIGNED_INT=0;W.TEXTURETYPE_FLOAT=1;W.TEXTURETYPE_HALF_FLOAT=2;W.TEXTURETYPE_BYTE=3;W.TEXTURETYPE_SHORT=4;W.TEXTURETYPE_UNSIGNED_SHORT=5;W.TEXTURETYPE_INT=6;W.TEXTURETYPE_UNSIGNED_INTEGER=7;W.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;W.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;W.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;W.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;W.TEXTURETYPE_UNSIGNED_INT_24_8=12;W.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;W.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;W.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;W.TEXTURETYPE_UNDEFINED=16;W.TEXTURE_2D=3553;W.TEXTURE_2D_ARRAY=35866;W.TEXTURE_CUBE_MAP=34067;W.TEXTURE_CUBE_MAP_ARRAY=3735928559;W.TEXTURE_3D=32879;W.TEXTURE_NEAREST_SAMPLINGMODE=1;W.TEXTURE_NEAREST_NEAREST=1;W.TEXTURE_BILINEAR_SAMPLINGMODE=2;W.TEXTURE_LINEAR_LINEAR=2;W.TEXTURE_TRILINEAR_SAMPLINGMODE=3;W.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;W.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;W.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;W.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;W.TEXTURE_NEAREST_LINEAR=7;W.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;W.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;W.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;W.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;W.TEXTURE_LINEAR_NEAREST=12;W.TEXTURE_EXPLICIT_MODE=0;W.TEXTURE_SPHERICAL_MODE=1;W.TEXTURE_PLANAR_MODE=2;W.TEXTURE_CUBIC_MODE=3;W.TEXTURE_PROJECTION_MODE=4;W.TEXTURE_SKYBOX_MODE=5;W.TEXTURE_INVCUBIC_MODE=6;W.TEXTURE_EQUIRECTANGULAR_MODE=7;W.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;W.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;W.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;W.TEXTURE_FILTERING_QUALITY_HIGH=64;W.TEXTURE_FILTERING_QUALITY_MEDIUM=16;W.TEXTURE_FILTERING_QUALITY_LOW=8;W.SCALEMODE_FLOOR=1;W.SCALEMODE_NEAREST=2;W.SCALEMODE_CEILING=3;W.MATERIAL_TextureDirtyFlag=1;W.MATERIAL_LightDirtyFlag=2;W.MATERIAL_FresnelDirtyFlag=4;W.MATERIAL_AttributesDirtyFlag=8;W.MATERIAL_MiscDirtyFlag=16;W.MATERIAL_PrePassDirtyFlag=32;W.MATERIAL_ImageProcessingDirtyFlag=64;W.MATERIAL_AllDirtyFlag=127;W.MATERIAL_TriangleFillMode=0;W.MATERIAL_WireFrameFillMode=1;W.MATERIAL_PointFillMode=2;W.MATERIAL_PointListDrawMode=3;W.MATERIAL_LineListDrawMode=4;W.MATERIAL_LineLoopDrawMode=5;W.MATERIAL_LineStripDrawMode=6;W.MATERIAL_TriangleStripDrawMode=7;W.MATERIAL_TriangleFanDrawMode=8;W.MATERIAL_ClockWiseSideOrientation=0;W.MATERIAL_CounterClockWiseSideOrientation=1;W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;W.MATERIAL_DIFFUSE_MODEL_BURLEY=1;W.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;W.MATERIAL_DIFFUSE_MODEL_LEGACY=3;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;W.ACTION_NothingTrigger=0;W.ACTION_OnPickTrigger=1;W.ACTION_OnLeftPickTrigger=2;W.ACTION_OnRightPickTrigger=3;W.ACTION_OnCenterPickTrigger=4;W.ACTION_OnPickDownTrigger=5;W.ACTION_OnDoublePickTrigger=6;W.ACTION_OnPickUpTrigger=7;W.ACTION_OnPickOutTrigger=16;W.ACTION_OnLongPressTrigger=8;W.ACTION_OnPointerOverTrigger=9;W.ACTION_OnPointerOutTrigger=10;W.ACTION_OnEveryFrameTrigger=11;W.ACTION_OnIntersectionEnterTrigger=12;W.ACTION_OnIntersectionExitTrigger=13;W.ACTION_OnKeyDownTrigger=14;W.ACTION_OnKeyUpTrigger=15;W.PARTICLES_BILLBOARDMODE_Y=2;W.PARTICLES_BILLBOARDMODE_ALL=7;W.PARTICLES_BILLBOARDMODE_STRETCHED=8;W.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;W.MESHES_CULLINGSTRATEGY_STANDARD=0;W.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;W.SCENELOADER_NO_LOGGING=0;W.SCENELOADER_MINIMAL_LOGGING=1;W.SCENELOADER_SUMMARY_LOGGING=2;W.SCENELOADER_DETAILED_LOGGING=3;W.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;W.PREPASS_POSITION_TEXTURE_TYPE=1;W.PREPASS_VELOCITY_TEXTURE_TYPE=2;W.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;W.PREPASS_COLOR_TEXTURE_TYPE=4;W.PREPASS_DEPTH_TEXTURE_TYPE=5;W.PREPASS_NORMAL_TEXTURE_TYPE=6;W.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;W.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;W.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;W.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;W.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;W.PREPASS_ALBEDO_TEXTURE_TYPE=12;W.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;W.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;W.BUFFER_CREATIONFLAG_READ=1;W.BUFFER_CREATIONFLAG_WRITE=2;W.BUFFER_CREATIONFLAG_READWRITE=3;W.BUFFER_CREATIONFLAG_UNIFORM=4;W.BUFFER_CREATIONFLAG_VERTEX=8;W.BUFFER_CREATIONFLAG_INDEX=16;W.BUFFER_CREATIONFLAG_STORAGE=32;W.BUFFER_CREATIONFLAG_INDIRECT=64;W.RENDERPASS_MAIN=0;W.INPUT_ALT_KEY=18;W.INPUT_CTRL_KEY=17;W.INPUT_META_KEY1=91;W.INPUT_META_KEY2=92;W.INPUT_META_KEY3=93;W.INPUT_SHIFT_KEY=16;W.SNAPSHOTRENDERING_STANDARD=0;W.SNAPSHOTRENDERING_FAST=1;W.PERSPECTIVE_CAMERA=0;W.ORTHOGRAPHIC_CAMERA=1;W.FOVMODE_VERTICAL_FIXED=0;W.FOVMODE_HORIZONTAL_FIXED=1;W.RIG_MODE_NONE=0;W.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;W.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;W.RIG_MODE_STEREOSCOPIC_INTERLACED=14;W.RIG_MODE_VR=20;W.RIG_MODE_CUSTOM=22;W.MAX_SUPPORTED_UV_SETS=6;W.GL_ALPHA_EQUATION_ADD=32774;W.GL_ALPHA_EQUATION_MIN=32775;W.GL_ALPHA_EQUATION_MAX=32776;W.GL_ALPHA_EQUATION_SUBTRACT=32778;W.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;W.GL_ALPHA_FUNCTION_SRC=768;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;W.GL_ALPHA_FUNCTION_SRC_ALPHA=770;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;W.GL_ALPHA_FUNCTION_DST_ALPHA=772;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;W.GL_ALPHA_FUNCTION_DST_COLOR=774;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;W.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;W.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;W.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;W.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;W.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;W.SnippetUrl="https://snippet.babylonjs.com";W.FOGMODE_NONE=0;W.FOGMODE_EXP=1;W.FOGMODE_EXP2=2;W.FOGMODE_LINEAR=3;W.BYTE=5120;W.UNSIGNED_BYTE=5121;W.SHORT=5122;W.UNSIGNED_SHORT=5123;W.INT=5124;W.UNSIGNED_INT=5125;W.FLOAT=5126;W.PositionKind="position";W.NormalKind="normal";W.TangentKind="tangent";W.UVKind="uv";W.UV2Kind="uv2";W.UV3Kind="uv3";W.UV4Kind="uv4";W.UV5Kind="uv5";W.UV6Kind="uv6";W.ColorKind="color";W.ColorInstanceKind="instanceColor";W.MatricesIndicesKind="matricesIndices";W.MatricesWeightsKind="matricesWeights";W.MatricesIndicesExtraKind="matricesIndicesExtra";W.MatricesWeightsExtraKind="matricesWeightsExtra";W.ANIMATIONTYPE_FLOAT=0;W.ANIMATIONTYPE_VECTOR3=1;W.ANIMATIONTYPE_QUATERNION=2;W.ANIMATIONTYPE_MATRIX=3;W.ANIMATIONTYPE_COLOR3=4;W.ANIMATIONTYPE_COLOR4=7;W.ANIMATIONTYPE_VECTOR2=5;W.ANIMATIONTYPE_SIZE=6;W.ShadowMinZ=0;W.ShadowMaxZ=1e4;W.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;W.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var ptt,s6=I(()=>{ptt=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function pd(n,e,t,i){let r=ot(n,e);return i?r[t][i]:r[t]}function ot(n,e,t){var i,r,s;return(s=(r=n._data)==null?void 0:r[(i=t==null?void 0:t.fillMode)!=null?i:W.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function un(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=pd(t,r,n,e);return new we(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:ot,set:(t,i,r,s)=>{let a=pd(i,s,n,e);a.uOffset=t.x,a.vOffset=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uOffset`,()=>`${n}${e?"."+e:""}.vOffset`]},rotation:{type:"number",get:(t,i,r)=>{var s;return(s=pd(t,r,n,e))==null?void 0:s.wAng},getTarget:ot,set:(t,i,r,s)=>pd(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=pd(t,r,n,e);return new we(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:ot,set:(t,i,r,s)=>{let a=pd(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function Gv(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=a6;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function kv(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=a6;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var Wme,Hme,zme,Xme,Yme,Kme,a6,iN=I(()=>{ke();tN();zt();QD();s6();Wme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTransformNode),getPropertyName:[()=>"length"]},__array__:{__target__:!0,translation:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.position},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.position.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.rotationQuaternion},set:(n,e)=>{var t,i;return(i=(t=e._babylonTransformNode)==null?void 0:t.rotationQuaternion)==null?void 0:i.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.scaling},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.scaling.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{length:{type:"number",get:n=>n._numMorphTargets,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},__array__:{__target__:!0,type:"number",get:(n,e)=>{var t,i;return e!==void 0?(i=(t=n._primitiveBabylonMeshes)==null?void 0:t[0].morphTargetManager)==null?void 0:i.getTarget(e).influence:void 0},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},type:"number[]",get:(n,e)=>[0],getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:n=>{var e,t,i;return Z.Compose((e=n._babylonTransformNode)==null?void 0:e.scaling,(t=n._babylonTransformNode)==null?void 0:t.rotationQuaternion,(i=n._babylonTransformNode)==null?void 0:i.position)},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:n=>{var r,s,a,o,l,c,f;let e=Z.Identity(),t=n.parent;for(;t&&t.parent;)t=t.parent;let i=((r=n._babylonTransformNode)==null?void 0:r.position._isDirty)||((a=(s=n._babylonTransformNode)==null?void 0:s.rotationQuaternion)==null?void 0:a._isDirty)||((o=n._babylonTransformNode)==null?void 0:o.scaling._isDirty);if(t){let d=(l=t._babylonTransformNode)==null?void 0:l.computeWorldMatrix(!0).invert();d&&((f=(c=n._babylonTransformNode)==null?void 0:c.computeWorldMatrix(i))==null||f.multiplyToRef(d,e))}else n._babylonTransformNode&&e.copyFrom(n._babylonTransformNode.computeWorldMatrix(i));return e},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Kr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!0)[0];t&&(t.intensity=n)}}},color:{type:"Color3",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Kr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!0)[0];t&&(t.diffuse=n)}}}},KHR_node_visibility:{visible:{type:"boolean",get:n=>n._primitiveBabylonMeshes?n._primitiveBabylonMeshes[0].isVisible:!1,getTarget:()=>{},set:(n,e)=>{e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.forEach(t=>t.isVisible=n)}}}}}},Hme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},zme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>{var t;return(t=e.primitives[0]._instanceData)==null?void 0:t.babylonSourceMesh}),getPropertyName:[()=>"length"]},__array__:{}},Xme={__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new we((t=(e=n._babylonCamera)==null?void 0:e.orthoLeft)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoRight)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoLeft=n.x,e._babylonCamera.orthoRight=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new we((t=(e=n._babylonCamera)==null?void 0:e.orthoBottom)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoTop)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoBottom=n.x,e._babylonCamera.orthoTop=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.getEngine().getAspectRatio(n._babylonCamera)},getTarget:n=>n,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.fov},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.fov=n)},getTarget:n=>n,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}}}},Yme={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).emissiveColor,set:(n,e,t,i)=>ot(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:un("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=pd(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=pd(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:un("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>ot(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:un("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=ot(n,e,t);return ft.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=ot(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:un("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).metallic,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).roughness,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:un("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>ot(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{ot(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>ot(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{ot(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:un("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{ot(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{ot(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:un("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=ot(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:un("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:un("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.dispersion,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>ot(n,e,t).emissiveIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>ot(n,e,t).indexOfRefraction,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.intensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.indexOfRefraction,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:un("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.maximumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.minimumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:un("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).sheen.color,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:un("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).sheen.intensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:un("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).metallicF0Factor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).metallicReflectanceColor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:un("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:un("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.refractionIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:un("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.translucencyIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:un("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).subSurface.translucencyColor,getTarget:ot,set:(n,e,t,i)=>{var r;return n&&((r=ot(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:un("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).subSurface.tintColor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.tintColorAtDistance,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.maximumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:un("subSurface","thicknessTexture")}}}}}},Kme={KHR_lights_punctual:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},range:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.range},set:(n,e)=>e._babylonLight?e._babylonLight.range=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"range"]},spot:{innerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.innerAngle},set:(n,e)=>e._babylonLight?e._babylonLight.innerAngle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"innerConeAngle"]},outerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.angle},set:(n,e)=>e._babylonLight?e._babylonLight.angle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},size:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.height},set:(n,e)=>e._babylonLight?e._babylonLight.height=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"size"]},rect:{aspect:{type:"number",get:n=>{var e,t;return((e=n._babylonLight)==null?void 0:e.width)/((t=n._babylonLight)==null?void 0:t.height)},set:(n,e)=>e._babylonLight?e._babylonLight.width=n*e._babylonLight.height:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]}}},EXT_lights_image_based:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTexture),getPropertyName:[n=>"length"]},__array__:{__target__:!0,intensity:{type:"number",get:n=>{var e;return(e=n._babylonTexture)==null?void 0:e.level},set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.level=n)},getTarget:n=>n._babylonTexture},rotation:{type:"Quaternion",get:n=>{var e;return n._babylonTexture&&Ke.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=Ke.Inverse(n)),Z.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};a6={cameras:Xme,nodes:Wme,materials:Yme,extensions:Kme,animations:Hme,meshes:zme}});function rN(...n){let e=t=>!!t&&typeof t=="object";return n.reduce((t,i)=>{let r=Object.keys(i);for(let s of r){let a=t[s],o=i[s];Array.isArray(a)&&Array.isArray(o)?t[s]=a.concat(...o):e(a)&&e(o)?t[s]=rN(a,o):t[s]=o}return t},{})}var o6=I(()=>{});var Wv,l6=I(()=>{Wv=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var Hb,c6=I(()=>{ke();Yf();Hb=class{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,r){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=r,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===mt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=Z.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){let a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(let o of this._target)this._preparePath(o,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];let s=t.getEvents();if(s&&s.length>0)for(let a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){let i=this._animation.targetPropertyPath;if(i.length>1){let r=e;for(let s=0;s-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;ii[i.length-1].frame&&(e=i[i.length-1].frame);let r=this._events;if(r.length)for(let a=0;athis._maxFrame)&&(t=this._minFrame),(ithis._maxFrame)&&(i=this._maxFrame),h=i-t;let m,_=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,g=!1,v=r&&this._animationState.loopMode===mt.ANIMATIONLOOPMODE_YOYO;if(v){let T=(_-t)/h,S=Math.sin(T*Math.PI);_=Math.abs(S)*h+t;let A=S>=0?1:-1;this._yoyoDirection!==A&&(g=!0),this._yoyoDirection=A}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=_,!r&&i>=t&&(_>=h&&s>0||_<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(_<=h&&s<0||_>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==mt.ANIMATIONLOOPMODE_CYCLE){let T=i.toString()+t.toString();if(!this._offsetsCache[T]){this._animationState.repeatCount=0,this._animationState.loopMode=mt.ANIMATIONLOOPMODE_CYCLE;let S=o._interpolate(t,this._animationState),E=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case mt.ANIMATIONTYPE_FLOAT:this._offsetsCache[T]=E-S;break;case mt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_SIZE:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_COLOR3:this._offsetsCache[T]=E.subtract(S);break;default:break}this._highLimitsCache[T]=E}p=this._highLimitsCache[T],m=this._offsetsCache[T]}if(m===void 0)switch(o.dataType){case mt.ANIMATIONTYPE_FLOAT:m=0;break;case mt.ANIMATIONTYPE_QUATERNION:m=HD;break;case mt.ANIMATIONTYPE_VECTOR3:m=zD;break;case mt.ANIMATIONTYPE_VECTOR2:m=XD;break;case mt.ANIMATIONTYPE_SIZE:m=YD;break;case mt.ANIMATIONTYPE_COLOR3:m=KD;break;case mt.ANIMATIONTYPE_COLOR4:m=jD;break}if(this._host&&this._host.syncRoot){let T=this._host.syncRoot,S=(T.masterFrame-T.fromFrame)/(T.toFrame-T.fromFrame);f=t+h*S}else _>0&&t>i||_<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=h===0?0:_/h>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let u=o._interpolate(f,this._animationState);if(this.setValue(u,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||h<0&&f<=d[m].frame&&d[m].frame<=t){let _=d[m];_.isDone||(_.onlyOnce&&(d.splice(m,1),m--),_.isDone=!0,_.action(f))}}return c||(this._stopped=!0),c}}});function jme(n){if(n.totalWeight===0&&n.totalAdditiveWeight===0)return n.originalValue;let e=1,t=$.Vector3[0],i=$.Vector3[1],r=$.Quaternion[0],s=0,a=n.animations[0],o=n.originalValue,l,c=!1;if(n.totalWeight<1)l=1-n.totalWeight,o.decompose(i,r,t);else{if(s=1,e=n.totalWeight,l=a.weight/e,l==1)if(n.totalAdditiveWeight)c=!0;else return a.currentValue;a.currentValue.decompose(i,r,t)}if(!c){i.scaleInPlace(l),t.scaleInPlace(l),r.scaleInPlace(l);for(let d=s;d0?l:-l,r),u.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(Ke.SlerpToRef(i,t.currentValue,Math.min(1,n.totalWeight),r),n.totalAdditiveWeight===0)return r}else if(n.animations.length>1){let s=1,a,o;if(n.totalWeight<1){let c=1-n.totalWeight;a=[],o=[],a.push(i),o.push(c)}else{if(n.animations.length===2&&(Ke.SlerpToRef(n.animations[0].currentValue,n.animations[1].currentValue,n.animations[1].weight/n.totalWeight,e),n.totalAdditiveWeight===0))return e;a=[],o=[],s=n.totalWeight}for(let c=0;c=l&&v.frame<=c&&(s?(S=v.value.clone(),m?(T=S.getTranslation(),S.setTranslation(T.scaleInPlace(_))):p&&a?(T=S.getTranslation(),S.setTranslation(T.multiplyInPlace(a))):S=v.value):S=v.value,g.push({frame:v.frame+r,value:S}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=br.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;let r=this._activeAnimatables;if(r.length===0)return;this._animationTime+=this.deltaTime;let s=this._animationTime;for(let a=0;at.playOrder-i.playOrder)},n.prototype.beginWeightedAnimation=function(t,i,r,s=1,a,o=1,l,c,f,d,h=!1){let u=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,h);return u.weight=s,u},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,h=!1){if(a<0){let m=i;i=r,r=m,a=-a}i>r&&(a=-a),c&&this.stopAnimation(t,void 0,f),l||(l=new Hv(this,t,i,r,s,a,o,void 0,d,h));let u=f?f(t):!0;if(t.animations&&u&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let _=0;_s&&(o=-o),new Hv(this,t,r,s,a,o,l,i,c,f)},n.prototype.beginDirectHierarchyAnimation=function(t,i,r,s,a,o,l,c,f,d=!1){let h=t.getDescendants(i),u=[];u.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of h)u.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return u},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{mi();c6();Yf();tc();ke();Hv=class n{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){let t=this._runtimeAnimations;for(let i=0;i-1){let a=this._runtimeAnimations;for(let o=a.length-1;o>=0;o--){let l=a[o];e&&l.animation.name!=e||t&&!t(l.target)||(l.dispose(),a.splice(o,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),r||this._raiseOnAnimationEnd())}}else{let s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);let a=this._runtimeAnimations;for(let o=0;o{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!n.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1,i=this._runtimeAnimations,r;for(r=0;r{Vb();nN();Ys();nN();f6(ti,Qa)});var h6={};Fe(h6,{AnimationGroup:()=>sN,TargetedAnimation:()=>zb});var zb,sN,u6=I(()=>{Yf();mi();Gi();Df();d6();Wx();zb=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=gc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},sN=class n{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t0)){for(let t=0;ta&&(a=l.to);let o=new n(e[0].name+"_merged",e[0]._scene,r);for(let l of e){i&&l.normalize(s,a);for(let c of l.targetedAnimations)o.addTargetedAnimation(c.animation,c.target);t&&l.dispose()}return o}getScene(){return this._scene}constructor(e,t=null,i=-1,r=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new te,this.onAnimationLoopObservable=new te,this.onAnimationGroupLoopObservable=new te,this.onAnimationGroupEndObservable=new te,this.onAnimationGroupPauseObservable=new te,this.onAnimationGroupPlayObservable=new te,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||Oe.LastCreatedScene,this._weight=i,this._playOrder=r,this.uniqueId=this._scene.getUniqueId(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){let i=new zb(this);i.animation=e,i.target=t;let r=e.getKeys();return this._from>r[0].frame&&(this._from=r[0].frame),this._to-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;ie){let l={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,l)}if(o.frame{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,r,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a{this.onAnimationEndObservable.notifyObservers(o),this._checkAnimationGroupEnded(l)},this._processLoop(l,o,a),this._animatables.push(l)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){let i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,r=!1){let s=new n(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(let a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(r):a.animation,t?t(a.target):a.target);return s}serialize(){let e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t_[0].frame&&(c=_[0].frame),f<_[_.length-1].frame&&(f=_[_.length-1].frame)}o._from=c,o._to=f}return o}static ClipKeys(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipKeysInPlace(a,t,i,s)}static ClipKeysInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!1)}static ClipFrames(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipFramesInPlace(a,t,i,s)}static ClipFramesInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!0)}static ClipInPlace(e,t,i,r,s=!1){let a=Number.MAX_VALUE,o=-Number.MAX_VALUE,l=e.targetedAnimations;for(let c=0;c=t&&_<=i||s&&p.frame>=t&&p.frame<=i){let g={frame:p.frame,value:p.value.clone?p.value.clone():p.value,inTangent:p.inTangent,outTangent:p.outTangent,interpolation:p.interpolation,lockedTangent:p.lockedTangent};m===Number.MAX_VALUE&&(m=g.frame),g.frame-=m,u.push(g)}}if(u.length===0){l.splice(c,1),c--;continue}a>u[0].frame&&(a=u[0].frame),ozv,TransformNodeAnimationPropertyInfo:()=>Bp,WeightAnimationPropertyInfo:()=>Xb,getQuaternion:()=>m6,getVector3:()=>aN,getWeights:()=>p6});function aN(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function m6(n,e,t,i){return Ke.FromArray(e,t).scaleInPlace(i)}function p6(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{Yf();ke();iN();zv=class{constructor(e,t,i,r){this.type=e,this.name=t,this.getValue=i,this.getStride=r}_buildAnimation(e,t,i){let r=new mt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},Bp=class extends zv{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},Xb=class extends zv{buildAnimations(e,t,i,r){let s=[];if(e._numMorphTargets)for(let a=0;a({frame:l.frame,inTangent:l.inTangent?l.inTangent[a]:void 0,value:l.value[a],outTangent:l.outTangent?l.outTangent[a]:void 0,interpolation:l.interpolation})),!0),e._primitiveBabylonMeshes){for(let l of e._primitiveBabylonMeshes)if(l.morphTargetManager){let c=l.morphTargetManager.getTarget(a),f=o.clone();c.animations.push(f),s.push({babylonAnimatable:c,babylonAnimation:f})}}}return s}};kv("/nodes/{}/translation",[new Bp(mt.ANIMATIONTYPE_VECTOR3,"position",aN,()=>3)]);kv("/nodes/{}/rotation",[new Bp(mt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",m6,()=>4)]);kv("/nodes/{}/scale",[new Bp(mt.ANIMATIONTYPE_VECTOR3,"scaling",aN,()=>3)]);kv("/nodes/{}/weights",[new Xb(mt.ANIMATIONTYPE_FLOAT,"influence",p6,n=>n._numMorphTargets)])});var Qme,$me,Jme,epe,oN,Yb,lN,v6,Kb=I(()=>{Xr();jP();Qme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR42u29yY5tWXIlZnbuiSaTbZFUkZRKrCKhElASQA0EoQABgn6hJvoXzfUP+gP9hWb6Bg00IgRoQJaKqUxmZmTEe8/v0uB2u7Fm2T7HIyIrnz88uPvt3f2a2WrMbOvf/u3PvvzP/sUf/N6//i8vf/lv/3v5H//d//Sb//Uq/5u8yf8hV/m/5Cp/L1f5hVzlG7nKJ7mKyJuIXN/hPwqXI/g++zq6rPI5u8z+WqfLre+zy7PrVv9L8brsMiGvk8XLmM/sdfHXal4e3ad6GXPdyu2ij8u/+uv/5cuf/OSLfdtEfvUr+dnf/d0X//t3H/7bf/hP//N/928h/0Yg/4VA/kogfyGQP5Wr/IFAvhbIlwK5CGQTPP+9z5uPeePJSW+yo2+s/GtN30Rnv1E+f5zxof9R/lSXv/nr//mrr3+i+5dfyX7ZZQP07Tffys//8R/l/9TtX7790T/7r/8G8pdy+/8XAvnnAvkzgfwzgfyxQP5AIL8vkJ8K5KsmMVzu1U7p5PA5AXxOAJ8TwPf7sX/51ZeXfcemqnp9w/W77/S7X/6T/vzf/7383RWCX3/z05/9i3/13/0PX//eX/2FyP8tIv+PiPy9iPy/IvIzEfm5iPxCRH4lIt/c/393//9BRD6KyKf7f488fP74/PH544dJAF9cLl98IZfLBZtuqterXr/7Dt9982v95S9+Lv+gF/3i7Spv/8lf/vnf/vGf/dF/JfKnIvLnIvLvReQ/NEngn0TklyLy6/v/34jIt00iGJOBlxAsdvv54/PH5493SQCXy9t2ueh2ueimKorrFbjq9eNH+fDtb+TXv/ol/vHyhX4Fxfbx7euPf/Lnf/PfiPyeiPyhiPxxkwB+fk8AvxzQgJcIrGTwFsiAEXH4/PH54/PHUgLY7whgu2C7bLqpQgHB2xvePn6SDx8+6G9+84384vKF/IPu8iVU9Y/+7C/+jWxffiHytYj8VER+X0T+oEEBvxqQwCMJeIngo5EI3goIwVMIPn98/vj8ESaAbbtu2ybbvl8u2ybbdtluSECA65u8ffqIDx8+6G++/VZ/efkV/sO261dQXP7wT/7kX8vl8qXIFyLylbySwe/dE0CLAr65B/9vGn0gQwRMMqgmhM/J4fPH548eAezbZd/lsm3YtssNAYiqiogAAkCvb5/k46cP8u2HD/rrb7+R/2/b9Wu9yJe//8d/9Ney6S5yEZFdRL68/38khG/uKOCnAwoYkcCoEXwkEgGDDq7CeQfyOTl8/vhd1QCum26ybZtu2yabbrKpQvXue1yvuF6v+vbpTT5+/CDffviAX1++1V9sO77WXb/66R/+4V/dgkbllQi+aBLBV/dE8LWRALwkYCWCNyMZXElkwLTMeMkga/P4/PH547ccAVwuctkvdxSw6bbdtYDbTfSZBN7e8PHTR/3u4wf55vKd/nL7DX6mu3791U9//5+/gkNFZGuSgZUQvnKowKgLWLTAQgRtEniTuEfwaELw0MJvf3LQzynud+53uG+X6y3gN9kul+2y6XVT1U27JCDAFVc8ksAn/e7jR/nN5YP+avtWfq6Xy9f7Vz/9w1dgRYngiyYhfNkkgzYBWHTg44AEMmqQUYQKOmDaiCIa8TmsfmzB+DnZDQjgcpGLbti2y3bZHjRAdRMVvb/dcYU8kcDbPQlsH/CrbddfbF98+RPZfvLFnAQeieCRDC5DMvju/vmD4JkEvjRQgKULeGggowdHkAHTYxihg89vu88I5UeGAPSOAFTlrgPopiqbKPSmCKreUoAAkCcSePukHz590m8vH+WbD9/JP335k6/+tA86KxFchv8jMvhiogE4JQm8XhfKqOAqx5qRPyeGzx8/cgSwbXcUoLJtim27C4Oi93+4v6VxQwKAvl2v+Hj9pB8+fZJvt4/yzfbF9lPdv/wJnsE2BogmyeCRED40tGFvksIXiSbgiYSRRpDNDZ6BDI6ghM+J4fPHeyKAO+zX7cb9t4tedMMNAQju5V+f1uAtBSiu1zsduMrHy5t8ePsk3376KN98sX/xE5FPAnm7/782o0DiUINXMkCXCB7/P94/e87AWUmARQWVvgMuKej9t1RLBp+Tw+ePgwngsutFFdu26WXbbl+rSvdfbnqAiuA23QcBgCugV1zl7e1NPm5v+LC96XfbJ/1W9y++fgXjA3bDYXV+MuhRwSPwL3JLMFYC+HS/LU8HYrGwIhwyNOF12SvgM4SgztdifP85MXz+KGsA2C6X7aJ6bXSAOwrY5OYIqGy3d5uq4P5GhABXuV6veLvRAf10fZMPb2/y3b7vX7+g+9v98/WOBq7GG7RNAlYy+Dgkhhb+Xxp0sE8IAC4SGAP/TbgVJK/PoJPBnAiwPKxsXfbbnRg+i3s/JAK4Q/4b9NfLtomBAqCickMBjy7BuywAUVyv8na94tMjCVzf9KNcLl/0SeA6oAEYb1i9g+FtSALb/bKL8/+t+wxXFMyswqiHoK4ToIgKqslgpg1qUC0QoYbvJZg/B/q5v4szHmPX7YEAsD0CX25OwEUVm9xag1+agKg+nxQArnKjAtDr9U0+Xd/k4/UqH7bL5YsewrcBBiMJZPRAp6TwQgWfjM9vgRbgUYGL8AvLWH2gqhesCokeUmCSwPsnhs8fP2YNYMO2XeSmAWxy2VQaXeDmDIhApf33rD4PTUCuV+DtCn27XuXT5ir8VmCJ2G5BpBM8/r/dEcJb8/0lEQMtJHA5TAlqNuLRhJChhEpSqFabH3di+G1AGj+W1/dyAR4IYJNNnuLf6+tWC9CHHiAtFhAIFLjK2/Uqn65X+SS67aK+3QeTDoy/IG2ogQ7fb/dAtz5vBgrYGqrwNtCHsVfgIvwK07OTQBURVNCBFpKCOjqCHn5L/67TgTN+fpySAC56nwSUi256kXsSuFGAVyLoUIDo8/Pz7fdoErr/v17lk162HbgHvFpIYDfoAJJfW4sGPjkU4VNAF8ZEcLmLhdc7kljdY1y1Dq9yLiI4IiRqcLujb138KIPn80ejATwRwIbtBvn1cqv+2J78/5EI5N4cJA8qIPcmwRsKAHDF9WYP6mV7VmrgLuTpxYTcMEW0LAmoQxFsuvAI8tv/a/C5fV2ZMMiKg++FCM7RDPRu8ebWY7VG6VJi+Bzk35MI2LsAckMAgwvQ0gC5DQjd3ABg2HQLAPpEAlZ1Bu7VV7MGHDFRAbo3VKsTbAY9sPWC/uvx86gBbDK3D1eEQS8pbAeSgSwmhepnJb6uBv/o/PzHLzxWA/X7TH77De5j6AGQi6o0CUGfCOD2X7cXAlCFQABtEsGLDtxuOyQB2UTQBKZe5GUPXgkUYCUAbZJRhBDeuq8xBf+bgwbehDm+BFQi2IJksOocvA8ysIMfxluVcRsY/eB3JzH8GFDAXQO48X/dcIf9jyDHptIigDsFkEe066tBSETQUYF7ElDdYEBytN4+rk9UcBPfrKaZqFHWcw3i4J8/X4ev2//bSXqAhwTay6OEIPLD2Ipt8OtAGzxkwLw9WVFRjTc/qC6H3+YK/b1oAA0KuOizHfieCLaHHiAb5NYTIC9EMEbZrVEQt1xwhVy1UfBh8PUOquMizwaap3tQXfY5B//tea/NZdfhsvbz+PURQTDSGWB87VX/7WSd4KxjUqrIgE0IUkoKGnhIvwvawpGf6eECXJ7tv4qbA7DJgwpsKthEmmYgfaAAffYF3HLxo0vwNjJ0SwRWMG4db4eh1gPNm18vQ+us/0eGmxDemu/fnM/X4evq/8342ksGHgLY5LyT/zg0wM8lcMjgGFXwqIOVFJBQw99eCvF9oZL9Mfl3QwAvIXDsBRC9R+fz8x0FPBLB0xJEpwUobrfAkARgIAF41h3wQgP6QAmX5E/7eI43IxGwwf/moIkRyWRJQIPgt9CA9b39nzt4bYUWjAlCjWDPgv8IEjgLJfzuaAsrv9VdVG4OwOXW/fdoA35qAdL0BDwvf6AAUVHd8LIEu94A3K+Q+2YxaB84MOH62P//qoo38fCRDERE2zf0JfmDa+MieElAjcDPKz+mRKCOtdgGtXaBjgNJ4H2owSpNeAW/rRH4CaHSpMwnBYYycjgSJwfie9CR6mPu20Uv8kABF206AvXlBMiIBPSlB9wjBW1fwEuSb94296VCqgMaGCt/G1BbExi3IG+r3a3J6P48Gv/J0YmEYoiGY7V/SxwFCwGoE/xa0AJ0CEiV9QPCJb1OJ5F1VTjEY2/MO9AEJvj1BJTQpqLfTlGwjABuzT962e4IoKnyrdh3+/6mzDVJ4PHOxj0JqGKoy20+wBMN6D1gLWi9NQHfVP5MEEPzjGYy8BMAOnTAJgEr8HUIejRo5xrA5xkR5AngmiSHs+zDDAmMgWzTg55GSJEmHE8IvWPAoYTfhWak/Wn/bQ0CGLSAjv83SUEfKp5q24LXuQICpzrjrgWoza8xVE00CQCORdhMJuTUT/rjuls0gO4Iby8BIEgK6gS7BsGuTtDrScH/fR68biUHNVGBnxjeNyHEvQe/ve3LZQqgG3rof6cEclsNflG9J4KtaQ8WHcVBHS1BtHE4QP9OBMS98mpbKTeDW7dJwRsnHpMBTFJpV4I+b0kY/NqInVFSyBLANbnMSgBM8F+Fqfxq/h657/Up+GaBnwV9hRqc9bZ/vA6vu+T9E8KPJWns94UfTeCj2QXwCHS9dNL8Xf3Ho/rfewSeFODGDV69AU0y6NFAE1DP3qK++rdB7/1HRxf86gT376zOr99T/h/ioBiXWQkgQgVeIrCC/WomhDmQK+hASI2ARQZKooHMLdCJwGEBBXC3+uERwg+VOHZ9ioAt9H80AI06wGgJ3nQA3BoCut6AhxYwgcPOFnxuFnrphk+NIKIGrWPQtgz3b0i7Y6D5rs1GKqTop0nQX52vmQC4BkjA+r4a7Kx9WLENGeegkhSETBCrNXIMdi/444Rw1n6E96ry7OPuj8UfLxtQ78NA2iSBbg7gIiIbdDLsb5agPhLC3RkYKv8NDbS2YGsatNRAG2oQwf9ZIOydgy1MAzBkAw8UwEEIDzSAqdPQ6za0PkeJAMH3Z0wXniUSZoHvBXU2mcjQgv56TedIKglCpIoQfgwCIjOytd8WgN0bfxoR8Fn9Gx0Aj5Zgq0lIZbsH/ibSJoFnS+C98g9ooHEELI3gliy25yONIiE6pb0NfBlyNEYyENoodkKwgl6I6s8kARgJ4ZoEfuYWHLEJa0LhSBXm7kImGeSfVdoJ1DO2G7WXsehAptupSOoyrCSF904k+6vt98X/ZcM98Hsd4JYIXhQAIg3/f9AAUYhsLQKAtkHVBnzjCKhOoYl2ym+iBtvzDzQ2DLXJ4PUmbJHAVnBQX4jkxfvHhNDqAdHXGQJgv0aSDGItgOseHIU+K9hXnIJzkoGlEKzNHagTdJ6VWEUH4iCKH4fd2AwDPaYBm4Wgng4gQ9V/CoGiuNmD04AQtNGMGzSAAQ2I2pzfogY9LRh7BrbOh4+D30sAencljFu2CUFrwY8UAWRfWwGvVOVfbx2uIILM0pwDv082dUTw8hYs8L+uIWiHGpWgClnAa1lMPJogovvvbePPs/q3Xr++kgCsfgB5oQF9WYKPJqEn6G+OE3i5AqouF59FQOmahQC8rlPLj38kg1c2f30vw+XaoIX24/pMGIgSBoZqoH3wo0sIIGlA9PWcCPrAtpPB8eBf6x1o6cHra+2+tpIFP4PgBfxZtZUJfo4qxELT948D9ucK8Mt9+ccjIQw6QJcEbrD/1g340ATuDgDkFfx6twSf1f9xvuBECYxq/7ythQQGm+5JDx6Brw4CkMGT3wgscCUoQ4sU2t6DR2ciBjTgtcpenQoZVX9NuL4Owc+dVaDursYVkVALX+shjSBKBuvCYDUZjE5BdNkxdHAUBexyHwB6NP7Iyw7sxUDViwge1t+mz8B/LAvVx/c3PeBBCToB8IUGOgqA3iV4yUg6UAOxaUFHDx6CYS8SorMOue0CCJGAf5YfRhoAI+A1CvwxqNkAY5yAIx2EQmkFfeWOXi+nEdSQQA0ZHMEItiagJArQxDXIrj8nCfQi4HZPAttrIahso9oPQ/2/JwV5JQU8zw+7I4D7/sBn4EO6rjw0FR+i3Z9fHtahzsFvJgM0X+tmVH5vaYiNDGAigewAz+gyNLThnjCURQFR1b9d3lZvnVqmj9mEPDKIUIC4KCCjBXywS4N+otp/Hk3QVthOkwEKlV9PQwXjT7s/zwF4Qf9toAAzFdjuaEB6S7D1//U5FIQu2MevO0rQQH8ZmoXE6B/IkgE60XCjVoq8gt2iCG0S8L5GdxkM1cGsfsCMArSCAnrr7dzAZxCEEpepvB8tqHJ/q+bmJGGts/AcAXFOMMeTwC7Pw0B6CtCtA2vWgonqBQJFSwH0JQK29OB2kvgj2HHXAoyeAIsCQO0kMNECAhFMqCBf8mElAkyBbX1tJQP2RJ/ha0gpAfS9l+/5n00CkrQpq0MZbOdAuxmMvHswog62jZj7BnYQe19b14kxNq2D/ehX/p68HEcF+x3yP7z/V/A/q/5DA3i5A/dzA5pdgbKp3v3/wQF4Bb70WkCTHGRAA6+KL0bFl6FJaFw0ImZwm6igSwbbwPn9RMBWf3sN2JgA/BVh/Rg0kQBgePf6HglAHLFQwqQQOwDjbdVxNZjR4iM6Qa3WxwvNxh0JFb3g/WzFQQS8b/ttKcDWoABtUMAd8j9hf0MB2uDXhzX4CHj03L9DBU3Qjz0C0l4mLSLQPicOOwZoVCB6P6dA7nDbGkVuxcNr8PU2JQO4wX5trEqmccZaHU4q8oCDFOpzAnOwqyMIMktNNNAHouDGxO37DgArQZzlmp/14W1QlqHTMaIIx7SCx0+5yza7AKJ3IXBrNAHVDcMZAU/BT/vgv/ULPOA+XiLggAREDF2g0ci6xNDRglegd7P7TWWH5oJfayliEg7bScQRBVgI4Ookg/F6rvpLWP29swREqA3CaG8/FpKqS8DTAV4TiBqIqtxfzaQRLys5I0XEFIFrPbZRQb+16Fgi2LvJv8EFUPW1gGfQv1T/F/d/HBnccP7rAwnIIyHI4ArgWeGbU4eHy6Tx/EeTZIb5bo/BsMBjmjBE08f/RB0PHYBd9eVRAGY7cHRwiBf8WeCPHY1bgBTa9xKTELzEkQX9CPtl0gJiqsAmCT7I8xbjivh3JGFI+D2nBcSJQJ8agDX+O9iBL7UfG4bzAkcaICrbtYHz1ycSmGmAjJfL3CMgT3tQpmrfB7gxSzC1DnvdhQMieG47u75+kTouKNkM8c/+vq/Q7ZYjO/hhVvRq8F/9gGfhP8aqE9EIdR6LTwJ1h0BItyDqB8iFwuNqASscRnYioxOg9ApvnYA35f8e9Ohbfe8J4rknoFkO0lmA2gmAG0YK0DkB4ieEjiLoMD8wBzom27ANZkzIoU8EMHk/uo1mzeVoEoRWKn8L/62EYAX/lsB7D/LXg74uAMr9oGivJ0CNJCGD6i9DhZdQF+gtOp4S+NODRzsDVbhdgv4BqTMNyIL9SCKwL9/FGPp5oQKxIf8A/UX6r231H7YIqLML0Ae2GtrADOvRQH5b/MPE9dt9BGLNG8jVTAQvIaK5TtvvvWQgDvyXIClUA78S9Nfg7VtIBlO7cbsEYkQDMot+ygQ7QwmOawTHnAM2XUSnJvPIYRYMmYPS+sv3J+cfP3d04JYIXsF/EwMbBKB9Q9AY+BiSwFj9mzrSXmcJhFPVHySTbgHJCPvRQ/z7G/SVUETsg0ZF+i3CRoCjhf7y1A9mOiDD7TwdwEoEXjLwAv+avLE2B7Jnb+OqDpBoAchoQJskxKnss0vu7Q2YhcDv4ySeLOg9GsCKiUIihP7yfW7zbTsBh0TQfN0iAWn9f72Z56/Ax9P7j5OAH/Qvv3/QxKfk0DgDuP+R3USg3bzBC7bO/QT9Eeh9QvDPG7glBQzJwK740lAFFgFk8P88CqDGAa223YckWYhr+c0BPdwetl2ocnsfzePAWcVnnAIp6gDVhDLyfV4nqFEDPxHsbWD3k4BDkN+pARqKMLYBPzYEvxp9xmCHQQdgWH/9EtH2TIFpu3AH/cdGydv1j0TQbRrq+D/mLcX3ZACZ15bF378CG0My6Kq/zoGOQwhASDFwFbxyNGBuSxbCEhQ/uEPe/6gAERWQObCVVfjPpQX+rexxYhYFxIkgpgX7Y/vPs+Pvxf9vwt8kAs7i32t3QCP+3SPaTwIytQXP38u0PESm+YER+o9B3vr8mETAUfDrEkPI80ck0FZ0dXh9U+HRbhey0cAc2H7A4y4egoD6y8JfkBiigLdFP8v2W00E8deT2IeAKujZ/QAVKpAtKI20gLWksHedfgPcb+0+NEHefd9vB9rayi8h7J91gBbaw20MsnWAF5xHkyDUCOoXp+yrOwwxcKj0aL6fFppaaKDv6OpHR5sgx5BAlK/+fYhuP1D196o8e7lFBaKqv5YIMnFQpd0FGVR35RJCnCDaABaXBtgbiSwtICMtalKC+1JQ6bx/PLcDPQL91QFodQNKpwOgF/9eqcBxBBqRcKAAVk+ArQOMx1RYGgB6naDhlK+uQQwJYx4meQbxtNnYQwMjt/d4f3M9ZE4UOld1LAh99fbfzOxiEkKFCkTJIUIMUeVnJ/9sDt8/e1NEJOi9oVHDGYhgnSLss9DX2IAqw1zALUncKcDr0FB5NP+0cBQNrEezDiyiADPkt9qGpwoPdL0AGPx/NOKeyf3b9WJNdfcFv6bKd2cLMJVfJ6Y3B6wB9WFUfWWEwKMfGiQL+3bz9XGQz2EHKhF41GCtZyDi/gUCsNhYoAr3UNJ58YidHKqnMb/6AB5J4N73/4L+t7mAkeeP3P+1LNSB/l0SkMEd8DcEuUlguEw6t2AU/PCE/q++Akw6QFf1u6SBrj1ZnnhG50AfkoGIdf7gJv1KcSfgzWWkQ9U33Z3tHXYASKJ9e/YhU90rvD+q9Ej69/wxYJVs506Eg/r3DkMDzEdDBRGgcZay49XihLA30P+l8N+hf1f57/0AoxbQbwYaan/rBMirE9Dk+sBzTkC8JNDEUlv5McB8PP19Y01Gayep+hC/2zvQ/2HGLAurowsNGlA1cnqGGzeH5weiYLZm7h3QQC4O2tXdhvMMk1ZS5ebpgI8eMrPvPGkwaxayk8Yc6PMOBPEdC1XZ+2UfbfOPtxLMQQAG9BcZFoF0gp/RKjxe7+oAw9T7ZPWhgedodgz0gf5KBtrtIZhQAZpAV1Bi36w6t98qVfH7hqGI318lLCjLCUFlxRHwqYEH9a2qb4XjWvDT7kBwfbZA5P0+PNuRuW1yf4yNQH3zzwv6b70QOJ0G9OT/dhoYRUGT15uQH/71MjQLtQlxfDuiCXrtM+SkA+icQdH6sU/xz7Ze7FlubV4TpoTQ2osdpaEjtqADmEU7OkBEFoLeC3IWFFeswJXKXzkboNL+wzcFHU8hTGKIboO7CLi1/P+5F+gydQhuvRbwEgxvtACmANikhLTbj0gCYk8KdlYgmj+4Ymaod7TwahwadICuX0Cm2fE5iNHPK0x/CDV66Kyg1MnqjNFBnhBoLQCgUULfaVe5nq/6EQWY67bXCszUb+7232fVPz51iGB12owK9peyP1T4raMFF/OEYJP792mgXYfZ04GHMAhBkCSmSj+dKqRPgVFGHbpLEGMiGFeQWfSgrY52VxaeDUPSNJI0P7NoisG729HHl78z6hxfs9rV3m4JjgM/lsui2qmThjCfDFSb+I9vwUqG5wwL55U7C+6ot8B+7N2o6r3q37T9trfpjgmTvv7PSQATLLeRAOZhIJHBQfDQQJPBdUwEbVW3+L08EcEE/9G4ANrCeWcnPKRHDupbNynMx5AA9IRYLmrc/YLSiD5EaEBS/s/TgnU9ILcH19n+CpHwegLejx7Mn/d25fdN+e9U/1vgb7bqf08MOtf8EXxaoh+GY8L6gDfhvs4i6HQ7seYI2sv1GchdMsBIG3xlvxcCRzdgCPTn+6q/TW00VE8Q9FaFv+R2VlOM1vm/hhjhDCdgNflVKME5B47I9xT8z0YgPAJ8myb/LqHy36j/Mwqw9AALxuO1JVjiuQAYLcFzIhiEPe05fk8tRjGw7yWQbsfuLAT2VqOId1osnr0F49VM8INACPHDoBz4B5mqqSnUgyh3ArjXxfQH5BbgUS8gP7aU+w0zHD9GGD0CGHf+P1p/DeivlhU4BbxR9a2kYFR58YaDZCUR2P0DMmgED2eg77puegy6PgDphEB0CwlG/i9d+/Hs34pBEQrBn0W51mqGnJAk3ACCHeiqkQ1XFQA5AlKH7Lk8yJKWY3/nym14h2C3JvxeMwD9ZVMz0BPMi1n1RbKl1cYhIVblF3G0ATsRiCMUvoK9//OgcwYMoe+ZKOLlC6/Xk50br9NFz9fanqA8UIYSpCwlBO4kHc4WLLBfBHVaKwKgLQjmP4Un61Vq+3s7Bsyi0WztmLjJwJwFeE0I2vD/1Q6MVwefxfUf32skCPbCnxQqf+QMPEUDHZ7vGeyj020JgkPXXwsldA7SYR1RE3h94NvNtugswcgxXEkIcBPCGZ1rmrgDC0A4K88nm2fn/eTnpQtWyZfybRoK8Dro4zYDIMGsf7saTBzvX0SMbkAD6o9CYbsfMK38cJKD9l2FJt9/VGs0h5Gib33pxMKWNsigFUh3G2un+/N1WUglI/EEx8fq27vUNnwsiOoKecL7kQS8VnWAGCFUgn6dBtQhv40CmIYggwK0uwDHRGAuBXVdfwzHUjZzATLMAoyJ4FmBhzaWBlrHld9CCWpPHRqofBqMReMGTJ78q9rDes1Tv7/0m0v0AFHXNR6P6g30SHivin7V1BOhh3iWPwvps/yE836L2XiwnUT8x2iHgfqhnwn667QHEE8oLQjEvtEW7GYBZDrDVkwNIO4G5GiBDf9fGoFM6n+vbEtzXwP6u9AduaWnGYSLAlVdl/AU+ikrSeEIKgwdaZ4AACAASURBVKj4/wtgHcHtdO2nWKcBkPfxcvnNQvsj2Me9f02r76T8q0IBn9OLKfz1HX8yVXQYGoAB/2UeBQ5/5kCL6+H/OGGoRnLSwdd3oH8r7KkGTbgIxEwVWvnF8KOpHnyzfF9Jod5Px+IF1h8owyitDw/XEgRb5bPqbt1uvn7qBIQ16vtS/u+DP3cR7CH0WWJgd5mTJKYgNzoGjQrfvu99NDBC+bnyW1x/qhTatv2OaMKgJWPvv5kwnMgxHYGFRtJW8VMl3uP+MgoqSZyWFKr7+KIDw1d6+IiOgZI4+d5iYL3imzbgyO+tph9t2oSBxOM3ugHtPoFZ1LM0hF4kXNEBssvVgPdjdXZWK7uKvyS3q1Xb1WQwtVDqSUggq+Vw3t56JA2cz7PXOwGNW1ecwxPhfe3QEUsDsFaAz8jg0nf+iZMAHNg/XSazDuC18Iq1HBRrOsAQ8NLB+16g614jmuSgs3bROxE55D+WDDQNA4ivdMJ9M1b309UqknaDU8ObV9/PwmMPATvTMAxpABLBzugUtV9bLdhNDQA+7B9tQJ06/7QNDHGSwtgZOCIA47InIoDdROQGtt0U1HI3GaoUnCnC/rzBMQJteN17+VaAzYNA7e+PFqHQUyXPUYB7iQYa5ZFjq1Zqpx8Uqu/XT7+6BWC1Xaj0GlBIwMoHu7UzcI/6/Acb8KIq+hzmGWmAYnADrIpvKP7TZeLaf0LAeQkGgebbq9FToI44p654F47tekKkI0L5PQNZPsDwPBpy/ni+wKMN76Vav4+2cFZFf8+JwAraMt0DFB7beA/u4Zz/a+RXx0M/ct4/jwaNAS8G17eSwmta0Fhx0VRxJkHMivso+onMXr+YwdWKbgioy1jp4x4AzIKg5lEA7wvHEYCRmdx11TAuT6lDLVl4KvXkAET9P4RT8H2u+lg9EPQIpw+/NpJ7RwE8HaDv/Mu4f3OdNkq/EfAiEiOANjEALvcWL9gfFV4NZbgbQc6qPky4Pm35QZxtH1f4j+P/jXuaYPcWwIEH/fmEPBoAO4m4LGxV3txOQqDU+dXgey+UwSzuqP++uImO/u/6ogCb7wTc1n61sL+vZi87rxnrNas+giTg6QLzaUCjIp6JfhwtGI7AjBBB9JjDY4ePYVR6ZPgN4owVv6Q2N5hhVHwNeYrM+w6dN6K1sMHZm/Ce7bHe3dzKr1xw1w4JrSQMZtgnoQHlr18fzunAszD4qurNUg/TDqzx/lfCaO6t4tACMUQ6P6htWjDPC1hCoZ8kpODzJ70MUR9AODcgwyqyPhmE+wfHYB/hvSqt6qeXUShhXH+d9SR8DzrDaZZdpSp/HxqLMQuATgDU/qDPRgOIeT8cvz/h/XC6BtE7ACLOWPE0KIS4UUjmZaJ2grBphiWgT41BUVWZfP3AnEIT6OrfoF122l2rMycBoU5i/OXoUZ4/aglsXwLzHNU++FVF3qikOj5HXm2PBitT1WuvJRAB+6O//W0/PY8vQH5IrAsMs/WuVmAdHBrQgrbOxJShXwRSsu08h8JMBpo0+aDTALwV4tbswgzHrftG/dJKIAQb5h9KCssWIMeto+GYqG12/HWGjx8kzqNJaa0noMWOr2KwW01AMwJoNvhMQda2/RKQP/3ecABM3g9uD6BY68Ntz9+nDOMb5iV+hIE+dP/Zs/wwJhJ9mgBnohBuStABUXjugF3hkXF9ZZJAjefKdHZCc389LoStKvIl7QIEb1d9RyciQgFDI9Cjyccc/23Aam7/PZJBhgDgin5CtQvbCzX8ip9YgIFtOAt+w0owp/hOiCWgEGbVHuYjRigPGR/YOnEoqPDoV5z5YqB3mRq2ox5ICmSSgAP1Ne+XV2NE+/vuFbCTRADxtS70VRBCjgBk2OyDUQiUgfl77b7DwaHm2rAZ7osRSOOUoHgKfNBSLI767+oDYrfwZvqChSpGfj3pFwZFsCJg2jeIQQBUiyI4WgD68ww4qO8khuWkkIuDrxWv2nv+UTBpJYiPd0KemTA8qqFiuUF1jWS3BoG6pADJq751JqBI0wvAVPyMQvjcX1zbELltKK+zBiXRFiRxG+b7q3M9xuLdzR8g0gCGNzSM5gNYfqGO9CBT8OHct6oB3KsSDBisUnwsFuISQaRHxDSv0vptt2oeLHMERfRn/FG/Cx01EpgIQG8LP+/i37PKw53xn6sYCM4/JwSRrCnIeB1ZkLsawDhaPKv/njU3wnZ/dBdGE8+YTHSG8+ofGgIjsC19YnwdM/KAnTSsqj6ig7uGgIPw3nYFzhhIIvriAxFP9CQd4HSlnzgxONIdrE7A8ZDPx9fjib8ifgegNIliRgdx95+E1T7+3nQVNNhEzDgGA3T2rEDLduwtPpuuouPcs8swwXFjdTaMKt+jA5gUAQPcf95KJQxYU0cYxEDvsBSmYuukp7AwnqniC9Afa5z8vboI68ImT0t26CvwBzSggkj447r9IojvCn7U92J/Hw0QSdwZKNNjxPCfSxRqnATkdwpOwh88oc4J8KTSm/wdbZjrc+4iFP8YO0/5JJDCfaijK5xVXevqfg6zGRrQf83chvX4aRfAE//6vv5+6490U4ADdO7QgM/5bcHP/n4OtCQhBEFeDWSvos8DPq8/IwzLzjpa8/U6MMSkBklDm8e0mn3QIY7XG1Om8wzN48y7HwhOK3P0/ZwUQHHv4psbdoVeb9VlAjChBCdtDDpOKTh9ZfcagOYq31RFjN4/gwBYzp8lAwYNwBELhZoxECeZxMlAzWGdCRV0fQWGHo8+8Kx+AAxnCIzowAxy9KvNepWfsfp4RR9kUrD88CPVTuXRybhqqTHcnxEGndsgub1Gdug8yz9fHt3Hpl57x/mfCOC29FOSQ7/noAZR5W3Ob24UMpuPYAYiQrQgk1gnFoUIKr4vKFpV15pHUJO3Y5rfH3UFHU4bGkU+NKJ9f2hJyOMxDBDpjAgwiYqvk5TqNl9EH2Arb6fA3yaA4cBtPWewhkEcIQJBlGzYp6zRmr1v+e3Fv27xpzvyI44NGDkCIi7CGNV9Dw0M8NtHC2vUwHINumCGNG8erxOwtQINsW88Tlwdoc+F85nI559ngEDpt2F/Uu3hiXYrkN/pBFS26hYDAkFgErMK67y9mGBA3L5ore5izf8b3n805MOq/t7XU4WHv1DUF/5gugCSOAIW/59uMwl6CHWAib8bvfxWl9/rBGEMTTwDfG+ezEYG4yk6FvRPuPwE+wvc39IRjENWM+/cm5b0W4Pf4WuKUnw/vD6eDbB1ETs5vl77Dhnm/51g6wPWwQAqxnivgQaeS3gy/u/1H4hpTPrIgHAN0mSgXUX13YP5PMIuQAfBr/f70cdeE+QoCX3i8nFMLcAjInBoAIYqt1LhC1WdtvmSab28AYffaeivCB+ohdYQgfUa/WS4ToMsNLHLc9nnvPZLwn1/EefPVf+U/xvnCVSEQEkEQEnEQJO7S7RvYDxNeNYKrG7DKMhtsQ8cMmhgPKKKj+F7CiHYFR5KIIPxOmg5IVAtu3ACQSPh7CzUQOgAej5CWEkIe3vgxz0ROGO//qYfz/dnLT+ZxDr4QW0eNCJBorCFOVC312Ec2TiY5Bk0cAaQmiA1VH1MOwDHQ0kHdEDDf+2UTWhS4Z8diQMicLx8MLBfverLcP/jQzF0P8EJj5+NGK9RCz755S6F/f1+X/gxeP+Wsedv+vF8/54aSPJYFjIQd624MDz/UDLQnr8HU3ztKHRf8Qeno1vyAQJBaLcMtTV3cvgP56COCqd/QP9xLgBkH4BxO13n4hNUDtACC6G1S3zqooZ6Ba4lp/zcAFb7iERKQwQcF39IFJjdXECGADw0IE4gg674pYAnk4HoHPx54tD5daO5vxrugSkMjgiiqc7TVKAT6AT8R4ckbHEQCYR/IZBxJgA+XZjsR7vaoRpIxWqeqfXuGC2CxwudicwePEB1kNkaZCuwyF0DuKv/4sz9mzP/Qxdg3BDkBTMC8Q+loD6UGBzx0Kz6eAX/KArOQTlPHFoI4vVtf4rNuLrca9edRn4xBP7k8w+9AgZCgBfEUZWfEs8iFNZ3UO7TqmkjCO/rWdgco/yIqHcQWaC2EGTzgz5y/iXQAvyx3riyxxV/JeBriaGB9OrTA5g9/eokM+37GszqfA/UZk9iW5UnCtBqBl3XoNN6Ag/+zy6A5evPAp+TIFDn15gQw9rjrOzFX0s2JBVAxa/nP1a6AsNWYGjPNGPLTQgBsNUFvOA3Ht9o/rGDN0tWOCcxJGp+f7++kkP7PxcGv1+GjkaLt/fawpwwerQxBJNW4b+PJsYEgiAYYdEAGIlDNaAbRkIgK3ut0jKByp+8yz23X6GttmBmjwDvChgiYLP5V/zhH6/110sGcKo5CkggCngxnIPoPja0j2B+1BRkiYJiviaLJqghDI63G2nAgAxMCuDdnoD0wIQm+urMB3VuAwbBrFGgGgnhAFqg9+ujKsLxB3qGCQNEEtPinIQlAj4WgIw7/iXc9V/x/yUWFs2KH504bAh4aYWf4TrTLGTy9YbftyLeVOWNfYNyt/ji29mQnqMAltU3ioTtbX343yv/1u0YPUBz6zB702tQucnX0gWaFh6DgPdmhXaapGotw0SFz1qDiTMdd8h45HfcqCPRUhA3+NmKz1l9teCPaMd4urGaewRitNBDdahR5c3AfQmDCFT9vmtQEwqAYXX4XI2n23Z9B/Yb1FL+LWox6wHGbZSo6FR1LzyG+3hriSZvWT6jfXhl2cmQZJDrAbuYAqAHo1GA/EOgD8eGcU7A8eDvH4fQBuAhBL/Zp/vamPTrRENDGLTV/7E1WEPLDlP/PwzU4YhusIMUgfIPAr6Dhv5R4y2r8ldFwiFoYHnmr8TAHbhRQSZOctH598ZYhqt6wP7q/ouqe77RJxvzFYaji/z4vna4v5cUMDXqDAJ5ytktqtBDckyjvJg04hl16LB0xFfyMfD77PZjErGQRRjYIfSvoAXntks0ok8MsUC4KARWnYPlJBeIgLeFrUgDOHYCag0/XNAbWgRwQuLAsaQwIhC1g7+jCNKuT38JfnYSyTi+QQEwwHeT4/dWHYxJPxfOj5oAnRQqgU3YgGZSOaDyK3n/qkDYBKptzR3oD6B4fyRKjp2AzSl80YR/3P+/1vBjX18Jbu+YsrMRgbqPP8zrDLTAaupphfeZtyPs9BPztpLSBZjowF3woYRwBwOWaqbev15b7X4RWsiqYiY6ZkFEIoUwUA2OrkeEQE8HYNyD/rl3m88jCGgO/nPW3xy8x4Q/HBcM1dYg5q8N+B/SBSYhtD0EY1PRGLDoKIBHF3yLz4H/gSYQJRETgqeB2d4vC8L2NVnQn4PoVJJAcP0inahAfdXVI8CFszjRagCTtRdV7Sr895NBpRKXIT64RMFw/iw5eChhEvmmyUIH+k+Qu3cLzOAN6ILlFvgWnx3YWFDz0f38ze9GlfP6UQ3ojEY0gtqRIEbA5/WgQFhsEuIeL75uTzvqHktAWfj/OD6sQXssROcGiRgFn0QVkld7OznMDT7CJKzhMIqxW9B+LCOQdH4uyxIcE49VTSeLj0wKjzcp2oDXQA8YoDEGBLMW0BJw+eAxXejPV/IXd59/tp5rVyYXDw5BlRetSpQAcvgfOwVM8ObzBq/AQ2wX4lwkQV3vNhYFfn2LFgaoDU1ogqsfqGkJYmrj9Tr22KQwBLzbLuzDeA9yzyJjVRfwegWq0H+FThDPA6ZhZwX2M2Kh4waovCzAWJTzD/qY00c+6PM8coz08VNqglzx54LfHuTJK7z2rwX35ABLg1DzsZ7Qv7l/f2yXDlbf4C/irg0MJ0aCuD0wP74MrxfdFlX7tq+vtRdCpvt599EG9Yz3V+P+Oj/n4zLruZHcJ7oMt/MNp9eD6HEeFb6/TMfbWo85Pb79HJo8t3371/PuIAZqMvjPC34nVV6ZB4hEuA7AzA5cfU0y2n6ux89D/35/n2/vWY5Bf0qwf3tPLISO1Tap9qzFB6eap/beqI94NCCbGwgqOItY3CGl446CaQ8i2Q9g0AvmgJOnBoAA0gu17tsKtKS7D4udgCYERy2QIceCX/P7mBW+g/7D9S6Mn50CS0eAoQPDcBjopIA5+EcxEjLweRjXq0UbLIjcBxsGx2IZvlf0ATjz/6qypAmY7bhrk4ahsIis6ccXKHdueAfUgk+RWPCLh42c6zEeKyJpRTdRAOqBbl/Wq/uT+q+Fx3FoTIuCzc6+hN8j4veGjuAnhSE5gKnco3A3XwYlq2sq+lmP4yEOpqEoG0M+mGDYuYT0pKCFHgLHKt3T7T9p8GcWH+n1UwGa8X6kQt2x4CeqPexegT6o/Z4Cr313PHdgrsS2ZReLfpKIf+IMFnmVmwxQ9AhithYT73+p2s+JIVfrjwiHnpAZrSsr9CMstQXP1+1+510N/q8E/YoekMN9OMFvi5LvkRDsy9rgFCOoPdpgaQIWBZjf5KCSQszZJ1ivTvLokpen6tsJAVND0NFqb6GUGg2Im4Dyx9Pn7/0dm4pADAslJzTv+dKNrAPQ0wyySm7bj1RQgbAXsRa4R+mBJzpaQmHLmy0BLoL+Nh2ZRca8uUc6P37k97n451fvTieAE8BdZ2ItqFEK6oOJIYPsiU4woo140Oh+H/UC++gatHYcOFT+2y3AYvD1rM/fpxdUcsAi70c0OxAEP45X/hymE9XeoC0zfYhbcqfbhs09HpwnKMDR6g0mmYyKth/UcLl9ITGQ8N1S6s+gA1HvQCc2pluPvN2Br8SyZyfyxPP/VhCi1L1HWX2CQCuAE8TIq/sBYdANZmTIwqq0sb0HIzhhugBeUpBZLFyA8y+EErsBUYDZHYN9QAAooQwOws+uQlhdESSSqk5Qsh8LSYI6LDS1AbmOvLlRBqQIeITvM36+TP63VfE5hFClCTr9zEyVFwS3STQBy66DMHB+PJWIrfgGnYBx2dTboPa2X49GaBVlePA7CFx4iaGi4ns0aLVjMGvtPTDtmO4XEE8E5Kb/8qYai+NHl60LgAICcUCoJPVeiYG6Pxw/X9VFNVbFn9FNPzXoIRDTyzcpREYB5Fm1EQQn3KRi9wKApR8Tz48SwxnV3qM0q7ZhpdKvr0zfY+gO4oQf+EGPFYW/Xf5hwWsUgxiBbShGoGIx+D2eH1h2EeR3UQMH4zMaUKr4033nzkSkfQADelFbLOQCalxdxvN8mInhPas9bxtGJw29Fx3Y8429MAS0fL33Oeo7qFZeiToCC3B/VSNYuU0fgDnkhxGgMFdxiYEY7MYel+OHPH30IMeVFK1C79l+QdXVpFqHlMAXEf3EYDyfkkGdNvJ8f3RAXU0jpgM7jMNA5yCrtfzOicKG/M9bgEkEjqqPPDEcDfqVwGZv6zcO9avDfOhf4OmLFd9OLBHHdxp51HvOBlnAoQksYjASA1xnIhPsapTCPjbsGB2YevpPpgM73EYeSYIftgPgte6CWesVBB9QEgfnWYMgoeC8ql69bWoRIqYHvSIv/u26bj/jdqZ9KSGk74JRo6QS9PuTiSHm6Z62kLUGH0UO4rwWrhtRETkR4iKRdI8giJ2D2nUCMjsA0TXiVDb98NAf/rCMlajA9wesWHZrAe1dlwRyVI2jx4KkyUHSx7YDe6YD4tOC6XW01puEdAJwaEJzf1uATHi6ZlSCpBQscsh6C1xRcWEG4bCFeKcAVhVlDu54JQIkTT21hptIT/Afk0kMcS9BKfjBJozcDXCrtgbWXxbMAw3INQIxtQJPAGwXmYaBbYh4SCsuKwLOAQ5awKskCMmRg8P3xwlBfbosQaDqyZqBkyQe1CLQACoTgN4qbyHsPwkTiF2pYaj6MAXBmUosQHnUEYCsBL3MW39SNKMJ5PfoBsT33DVJCEbFnBCMOkHfvj6Xq8uw+dgRIhGgAiUqf5QgKDFyhe8nnYrlqn9sG1GoAfirubygX4H+8IM1CmQrMFAJ5ExzKIp54nPoVU2Auh6eBShDlTV4u5c4HE/fVvjFrsII0Ik6QX+Iq68jB19ziLoKC27FYe0gC+j1RSS+BgB7AvAM3m8HLdy5fV60C8RMVuhD1ieQB32MCCq0QPJuvuw5IHF/geMKwOPdpmsxBwVEfGEOgeincJqNmuSFIPhPq/xM81CWIIi+gCFBqDX3QPYd2OcCRo6GZBoA3AM+00aesAOQ7/2Pe/vBCXoguD4OBD1WfPwClzcui12AuH+gC0gEwW72KfjBCQRBr05D0IQc7N8PzOCMehPWK384MPVDJQim7yDdoiRTItzzFV/ZOX9sYFetP0fsQzb6O7wOoFjxk89YoQXv+BmSN+yYHYO+BsDRAXHhuJXsEFbdIEGZQWUkNVNzGA9NZUVBIQL7jASR0AclE4Pb7JN3BO72mG92+o8UG3nybj+mASh0FsLKn9GPxDrEcS2Au35BzHO1BksriIJdpqWjKR1wlpR4fN977rZqI+XbYjYDgVDpcYQalOYKMiuQbB3G6Pu/HlMbi9a0EMkksXtjvvXTfgMKAEZRN/i/O7yD8Da2S2Bdh3ICWfp8yuMkYl5a4df4vVWt4UF0yyqEnaT6swYyWB8/j111Y1ERS9oB0SLMtBGDEBD1PEHwtdjUEAHnqmoHU4wCDAoAS+lHwtu9eQLUAgmxVvAuMB9cELMV3m8EUtcBYYI9nkNIEEJYrQeUHfnzzRyC39j8CgSkir/E0P2odnAmAqDnDIhqrtV9BDNS2POjv/0pwKr6z1h/PMz3uf9ykFYq9TtoAXSwpz0HljdvBCVAPY6t7osv6gFhMpkX13rcfXQMIpuTsfTibkfOPRAC2meLRipI4mDPwMD5x+v3+Ey+qEfACwoUEkKQSMZxYJDz9R68PyP43yvo2aYf881rNQbZgRU/jp80QnW/hdXqJxMvCFxXQSNHpE8QiF4XI+wFfQcw7VL2Md7RRajsKgh2D+6SLAKPF356+/7yXYBTUgFy/38StUjFHweD+iiHh8/LV/i/TSvGk4L5x7F6AsIKbgb4C0YjgdGRIToGUx7cgS3JKP8pRcgak95BJGQbjaJdBYQ1qHYnYHL8F45QgHx2gLMQ2cDxBD/4SeR0LSDi5XzPQNjM4ySE/HGG6g+ugltLNSARn281BPtNO72eJLjdX4ITSEgpQvJYFEUg24f1qAYQNQdxx6Q/RcB85j9f+03zf2QV33IDPHegNgPABTfqFR8cZK9TA7/ll0EQbUUHW8Gr1d+MSadia+LRHwhunv87yWoJ3h/pRDwJAbDNQQFd2P2mH4kP/wDT/ZeN3CK3+ZjvgVpw4r20AMafb58j4N1UMknuj6iCx883PU9g2VHVH5JX2eEcPghSgRBCKPzK0Q3fknwPN0Hk0CyC0zBkz//7duEetgFjVtypASDI4CsknYJgYDhqsBxxy29+eyxrAZX75EEf8f+CkOcijMDDHx4ASYGGu8WHgPwpHJc0qOG8FgFTuVk0cRZVePFwHEIUEu8xSHoL5qWg4I7/HgOKXe2dcnu2SSdCGIDTA+AcxY1zYL6Q6AAFu+/1GvjKPSe"+"EoJV3NiM4Dz9C6oWkEav+NWjPWXNOIkKgNTi2I8LeBgaZHJxqrC4oNXoB9pzzMws/OW3ghSyQJgjbygOVEDhoj4nHLld8HPD6UUMFVLIgKrTL7cFoBRLQgEdXIseZ2/HhFPKbk4d5tYWwwR0nIFQSD2P5gQhs6meVfB+Bkyz2fOIvX/zxqsSODuAGIOLtPNnmIPCrv6Kqvgz3q4tCwNl9lWYfnsdHj2HTgQw5IBHwULmfSu1jEV3gDFSxTBmqSEVqiYK2IkWcRiAkwV/cyW9YhqHXDw9dkNQAcO6HFNJT7oChfrPUYc3KY17zAd+evAwF2w5SCKLV4EuCEKsKfjBVWHu9Q9Arh4CoBqEMWYBsNX7YgKP/69uC3M7/mOOz232QT+ox4iCyJGEFP4oBHd+GVvXBwX35nqp7qeIbV6L6tdZub3ueJ+gBIKgC6S5gOQFxDoGr+Bv2nzqbknd7ph/EmXzO0o+kZdc/wqvQkAOUffVMzKtYgx5Vob1/+HAfCdzHSiXHenX35/2JTr3KZ9Ruj2lYiMhLIFoNyMq9hFroeYMTE0bSLbhb4l3YlFPa6hMd2jk8dmrDgdQCnC4/+ANFlYTB6ATlx2GDGXP1rvL+SnWHw+cJes5/rRWt4H2pw9GklD4uSMpwasIQiaYR92gIyFX5S8dtRZt/nCAH48VXW3hRE/HKOsGquj8EM85Q9cfeAV4XwNGAlmIFIwPYrfLKuxV476RRetzcdeAsRSZhiHizCKEIOHn3EMOWy5X4uIJnXX6sFiBFLaBm/THOQAkVJK9j6TKwiSDTBWpwHkSPQJX7U959uAkoaTUuug6oQCBz1Zlxm0OJSIoIw04M+7zCGuYiznCfHww9AN6Ir+HXA7lfn2oBSJ2FOOh8SzINfmcAyITq8JX/sOMPx6A9LeYtVfwgCBZhdu25OB9/XmWWNPUEPD5dUuJ68wd1AqD2+w1PI9KxE9BW5t3z/igdYGWiL7L+wPv9jgVY8f0ZcbCKCuLAHN+c5wa69Zpr0J9t2KnpAGzyiAIPiFalJ8/xXrrA6Y+/8NoDnWCPNwFJzf5DpVkHte8hx76P+HU1+HEytEeSEIzAsu5r6wPJGu6oLz8VrKofXLce+ywIHhNa/Dmw8LrptWXZ4NKZm4pr/QQ7Qk8ehMrPtAF7PQCD309QgRgRZMKgAbFREAfBBXNalbHA9cEHMo4IgIUuPjjBWEUFEQpYTkhVO43eRiynJw9Jjj8TOUIlJExK+0wA4gWgQvcFBHAc7P4/u78/Ff4CC5ATB3P3oUwFClYgcALcxzp/B9Ez4DUV8RjBbsCBrMH4dLNwIDaCGhA6o3pXksdBvYBsktrXDgNJKAFy1Z+ZGIy5NXgXoBT8a3ZgVSPIUAMV6DjLxhsV8wX4n4ibbONObHNyCr8Z4FinNFjg8ziiF5zSV8A99u7Zdf5OisvVaAAAG3VJREFU/kIPAJLWX3hUIFD6o7MD4WkHIMXBk4IftSrPNBJVk0OoC7ice8HGS8XBKDoz/YFBLaQi392lGpCMJfhD9xVkx5Xbj73P9V4m1j0v73x9FjDDPlYvATkgFAVWcdNvJBamliOjAwRV0EpeRymAe717kMYRyy/j5FwFBX0fP7Dyx8gq8wn2ZXi8GfGYR+lFcGJSxa3Y84WgzBHetlU4cvKY44Ps4iP9fsgsPGEhQTAcHqwwGCj61SoPexKwasXFqtxq8qhD9SixoBBYcJEDNzmIoi3J7QkoJActVHocTVpPBCDhElAvMDK1PT/Sq3DwB/ygmyB9GNhYDH4so4Foy48kkPtZfZEv1PQTxYpyX0EI3Bu+/5krcN8fgwVdwWu2JNVNWAk+PcOOPMNdGFyAZ5Aj6gicgzNfwuHZg0HrLxBWfjSRl88fVCo/apX/IBrIvf65ZxtEoK9Bec4KZIPLe76osQns46NwW0pUPCPAyMc4A/KXOwZzFLGbAqD5xhhbgBcWfoJBAlarcCSQgdQJ+Movnih4gjZQTw51rz588y/ZgxVUEAQ8soCfX8OR26JwujCLGFAMsOjnwGrlPuQw9D/PPv8BYVR7pG/eeFtQpsLzR2KFI8SwKj9KlX++HeLOPuSBKrKeHBi7L4b+Kx184+ptAp4Trcscv69oARVYzWgaK01H1X0K3zNSmARKtxXYHvwJuT+8gLGGWgpHcWOmBeljFB2Ckg6wiAYOqfxEK3GMCAj6kIiTWdCBCXhkjUKMgJcLk271N9uLSbtvvK0S69OXAvoA5z94VsFubbmZvx4QAnXgBnJxENyQjy38wef81uPhxMpPJIQzr5ckuUTKe0wZyN57iFTWga8GvCwlh5UqvYgmaNV9XSxEVWs40kkosFwA70RgNOu8mLZfR6wDiwRa35y7j08NksqPQhcfkRBK/J8R75Iz+9C8gJpqzwiIeZII3QnYOkJWbVEI5jNuA+o2BwK82ifwnpSgHwaC+GNAdmW2VXfC+vPu6wR6lBj84C9WfvivZyUhZMJlJhjSukDlFJ3g4AvGJfC1iEpQJ/CaEd7G9wds7p71+odruKrHip/C7RdsxeVjzIxhoNkFGOW/+sk/YVAGtltfzZAIfzix8gcHhZCXpcGN2u69qWqD9OlRFAy7x2fQBhHUiETB+DocqvArYt98f+AEAXApsEmEcNLC0t2uPHCqPQIXwHYDfI4/9+8LMpchqr5HK39MJSrBXwnutNqjovjHFdq+fcHLp7YLR4mGgduW5hFpAXUoL4cTTuW5HJSkB5PC0S7A+8c+837DyoM1J9iv/po/o3BunlDqPjOSO/YbLFd+FGy9sxKFeT8b+nLNPrkAyD53FtT27yUS32yqUaEGTMBiASGcZ0FmK8nWxbvjC1q6WQC4VdWdAcBY8eFoAzIrC0b7Wt8wlPcIdE1FhUWeKU1Igv8Q/0dl4k/NnYSxdlDon8diUDeuQB4c8XVzcahRgyyZmNC+LAgeCfSVALde8/t1DCYawNoePGT83wlOpFUdOZKwxn89OsMEf0X8CxJCBN/dwKbFwkSMgx0ACJJDJD4iC1JEYh6XcEqVHpx4+J4I4UiAl26r5x64sttvSlAn3LBuQCz6edU8C+J5epBrC4YP52EFDgHrCw1B0eU9bOaTgh3wmYvQV3Oqqcf53XnVNXUBELX1xtSgFrirlII5d3HFulxBCNEfZx0h7K2f34XwdHpuYQcguN189Ow/nPXclaUcqMH5leCXjKOjbv3F0a7i2ZaRHmBe5zwnhA9S736ZC8AH8LHkg/T5znYgmES1dtuzGo92qwHIquiWX+4KgVLd8utv9Ml1BQNhEJW/FOgweiTguCUoQHkEwYhjfQIgm8eAzPKzHqAG5xGiiPyxeGRRaYetUpDVpHVC1T9bHGyaknb/TQTnuG7rDYwYCUT7/cMjtILzA+Go/FPw581F/mWeTkDuBsBCAK8ki+A29nMzPn4Rzjv6QV7xWW4fzQFUxb9jQQ1qc28kMi4mDl1NBr4usIsz5ltZqNm7AeJXfuTHd7nioLEyPBISU+8/tP1AC4Il/n+YGmjg2NiBRdl6yCw//zG5ph7bqaBuz8B4VMU/TqSsNPbwCeZA1cdxyG9SgKzRZPL+GXFOiH1/SFZ9wX8M3zUgvH8a4rMBjZj/h1W9MrwTiN6MlsCKiI4gycBzgV/xUaQGjGDHwHiYi0VIzeEAasCpNuL76AC7BIEl7i4AIxnAfoMxk35eJbZ68wWEUChs8IPz/EEE9BkUoNA4RCWSLJkY1h0Y/dG9bVCtUVPe7QRhtStXG4nOECDfUxc4Uw/Ik8JkA9o9+a83IrfHH11EdFUWc4phNgVFWkPsIHBnCvCCYBSgqEN9qtoXuwHhByYoJJA7BxIkkRwpDGgAHo+vQ3ZGOwCFJCJKUAx4MBpFZWvReeLgtBBkDDQu2OJxXa7SE/P4ZiUPHABjY1DsFIhPAaygWewiXK72hHjow/k8gCL6gKES8qcDZ7A+EhYlWCPGCX1wXIwzkQEKt8cP6iqkC0FEhFj/ZYtvXCtwuBLcDT5wXN+9H6ZEIkTwV/x/s78fXFX3siWHEKrC3tw7EFZ31Ll7ttknQyEMGgAqCaVe1bGk8r8nFWCQQR0h7CY0dsU/mIeIuA1AGCo02Q0YVXxub36sG1Qgfo0CBBUXxap+ECFEycQVyViBEBFPt14TK9rZHB9EwMG7DPXOv0OVHkdtx7OSCXfb3av4CFZGTwQBwT7/hKPHE4PzpJ4L4+FM9r1n8B+B+9R9I4Fu9brYUZgCunZWNxdQgIs8mASBQ4F8hJpEiaf4GPihk8FdAxin/kybjZjTj+mAQy6ihZ9whDvHAWB6BKrBXQr+5SBfqPaINwiz12UIwoTmbPACZY/fshBBBKNlW8ZCHwH/cVKSOZMm4Mxk4OwE9JeB+EFkn1IzcPQoiSB4vGgNeJSoik1A7m0TCmE/HrggB+/1M12C1Z18ACGoIeH1pH2IhAqFWgBq+kDFEWAvA3X8tpW0cnSD5WAOriOHhnYraF1eLTkS8P/QsHUBdtMPnOrMaANJE9AZiaKWII5Ue/8PTHn/UcCSTgIF2xN4zdmAQYIAKeBFl6FiO0aKfq5jcImHfPwTxcEdRmD3LcFoAva1Hdjm9UgGggI9YOoPkOBYLsT8HlG3nucMDGkOOJ8CkNOELdSO7D5qqAeJYBb2GpABgRi2gxLITgrOQ9C937HgB+0i7MeRx3gfPWCXLtgbLJAu/gCFBPzRX8eADJqCvA3FViC/BlOQC4LZyrBq8BdQAOUKoKjqR7v7EFfVFMojPgEoSlJesNIePyLHwW9NRgq7E6HvUN8A0yj0wyWDHRZ3J2A1jHdMyu3hCGwSDwdRir7h9VP7AKLgPoMCgKziOFLtrUm8aIFHlgxYfz8WBYUU55iAXauo+evJaIK/NTgRJM9sUcZRzcCnMdNKMJc7usnAyrpxHYkTRHK+n1HxS01LheAHqRWwKIDqLvQC0+PupHZgBawfVGsiniTVHwZHRqbUI/D4Cd+ftgyLAR1ehkIiqaKFw7MJEwUIuK5zsu4svoFYCFKgBJZACBuppOId2RDkPZas8H9kULcA9a0KTCQDGtpnzT+RMJiOGseHl4BQ1C29AWUXIIf/OIwwqoNEK3SCuA7FRiBrE9B4/PcrGJ1OQNj83F4Xbol/TgVHfMiIZLAdcaVkgh8sLrd+liNQH/FqsNTfj15m1J0X+ffZuq/gTY7QnvIfJz6UzBJLs83ItQpt3RfZz5iuGfNPajpngUm0R8DoA5jDlzsOTAwZjzsC3Jjxg7H914PjlcskGdghgx9HG4OOQH34uwQyzz61/0qiYNQjXxECuWYbGM/DrjtPH/Mw/K+gBLLSA+cEfPr4MroArzcDuybbr8Zc72i2UnzeHnTgzD4Ug78SzIvCoARVOQxaFFR3TzWnkkHUVFShEuqKxZnKz4p4YYcf8ZhYhuu8wFgSHcuuwCJagI4bgchJQK/qe9c/RT6nGcg6KGREJpb+MI0EY/b0jcsni3AJBeCQNsBOFVYoApcM2Aom4VFgIRdHpeIG8D3YaxBD+qCiQ+rBOSVnci8hzkAG1t/pgHA4uwDzmu8xFKkkkIqCfkIRs204r/hiDgutoAAcowBMZ9+KS0CcXVBOHCvJw2jMQSJyeoeExF2DuTuRcuWAo9sefyUQ6/oBaIjPtiRH1KvQKvygAHb171d+vc4GRMDPoxN/kL5pwlVh1mBQ1quQJAJ5j0TgOAis+h8d3mnC8xTKE34+8sDNjyVXE6nFMN+H39TQDmocHScENvN74LoGScGU4f7g6IG3n3C3qnG6JBS+Z5tHOOzRYQx+u7MZmAl0OSsRLAS/VIKfRAWU92+12aaVPksGDBWQuCMvgNy2M2Mt8EwqbjosZAec5xLEAmXmcFTHiOWARWglpNpjdEtBQRxJJU5VL5/7F1X86XntXgUK4q+KggsUoIIK8oA+kgy4+zLaACqQGTVOX6MBWdehL6BxHn+tlyBMDGAqufd7WOX5WTJwKYDfXJJP2GXDPk7Tj5Ed7BOG7DMFaBRAJgI/+H2Ngeb2SKb0zkoGlQBHkefDr7xMA5HZeJPtKIzyApI9gmnPgf1c3mulfhe0gFekDCdNFnrOwi4Gs6eTACNjB+Uegcgojog4V25P8bctRYY6RL8AJklE9ACFAGZdBEahd4d4CmghFhbzcwaXYH5qTlS6DY+KfNH5Avzjo2JJ0poDkSCMxLn73H/eB+ifvgvyIFCWAji7BWC8hd0qj0FziMdrS70BlVbgamIgcmotGZDNPwm0L9l5iHv7WRoAFx57ScFS2r2iwot8oKu8l+TOCOg2mZ2nFdjTgOFQENzKkJ8OjEnsE8f6AzyXwT6MNF3RDRnuj0Lwo6wTlBMDIyqaz6G+RiLJMg/KUrQV/rh9uH0tWduwoxmky0kSMQ+rnXxZsGadgnxfgk1pCnsIsGYltvfdzTOBIclIsN8MLAGcz5gBwj94AE8DuC9Molip/JGwB57nRyJiyD3pyk6q5ij+3TzRLohcqyqCEQBTepF15+WVmW8SEr5jMUUkx3oMIsrH3ndwAQganKzyMpOJNxMQooGBYwcByw7axIhgPRGEr6GSGJhkAELoQ1YRg+dPeD5IIRDIqq5PA2Jh0Rq0YcS8XBi0ghGRFpCtWTdum5+yLOsQf2EuYY8AfnbQZDgCjHxBSKwTGpt8QCIDVH3/4H5OwEvldhliINwAFLsEyyIfGKV+vm3eEehVqKTdNxtDiPoLHCRiuwTJxCECxMDqDjTvZ63KaPKvRgV2i/F3ohm88V8LN8hgJcXD5pVGIPPNn9EBqSQC0I4AMxBUcQNCkarkFgSn/oCs9GCVep4eUG5BRAOcQOCWlGSc3If0IFqRfURQGRrKewPKEJ9sLnIowKCcw+f48N6UHjqYtgInaCCkBbPSj8VEkCr2g8U43wY1xX/BNkwreQrzg+oaJghOCGTU8RBxuIp6VFOGoEXgEsBLIgV6gBgxoLSI5CgiYNT+GBHsU01GthrceiMUtv9KgAYktgVNeGrBbtiOQVi9x8WjiAW7UNUnm4Vet7WtsFgDCDYEwQ/EVL1PnQf/xCDLTowTh4c4HPRDoQaiwhKIAae4B7xgCBydI/CDPOrevK0FR4p6w3VfoXgQiB3T1N8Y1PCD0X19JqcHGfzB5WkQE4p/kdeXBcEVUXEIFqSij82lMyrWq/7c+LFHA7z5/dwOHHg8s/Y8C2CmhbmALtare+4UWLfb25BmXABKABTniC8gRAP2yvDAiUAsElnrxFzITQa/sAFecAOY7zPV/8jMQHSbWAiUPGkQNABhw85xrSCv+mMSzFR8+7mjw01A8f4F8S/td4jnDHYxpT8/OEyV3gz2+GTfdAeAszswfJNGlQhEIjB0Bls0BKn4Iw7WKu9f1gmSagmvqleEwJwnZwjO7npz1HdCJ1hS/mlBcRXyF3i/M7NxqJFoeH27z7nnJaBmpUZKHsTbGUc1ALEoIGsGYl9ixS50gjAT/VhB8IzvGTrBVfWEz1MzAkRFTtecW731VdjNQPukVdhdn0Y8d/a7WYH6i/TBPBzUFwAlHwtGHOQISrgb1AMUgDETTA3+THAdeRJhg59V/Ektofa9I8wxVICkC7QQSAd2O3cftzPzdMK6aA4iZI4ILfYRbb9RgqICt2AxVnYZ4kkBvHOBxT/zN9ybHx/f5Ql2fkGCX6ANm6F8WCfqAS+Eq5AGcHJd2IFHagTMHAAj+mWBnDXuc81CjhsAi5dL2K8QCYI1aJ/PJtSSxEFXASv7C2I3ZB9/a0j/7nDn/j1pHsz9Jr8fNpxPBUAUUYD4wz5GBlmyAiORjtAIGDFwzSUwqiNZ1d1tPiB7/Q9VeI9KeJU16/knkEeQJEALjY4rkp74fCZiMDSA/PgvT/aT2gYgp5E/P29AKBQAo6TRth5T4VesQFb0i4K7RA2MZpgyFXCEQHCOixuYMPgy2L7+45ezSSKt2oUkURlpXkEMOLSiXPuDQZjk63N5bmzOSxQdLHX7AhwUEA0BAeQPJIQzkAuFlOK/GtyLdiGDKEBdllQ7YouxV2Xdwza9So4Kp5Z0yAgUhTlJgFzSFrznIHYIwKcCu2/L3LsCg6UI1b1/CA+ApIV5/32HqOIjdQusE4azip5Wc1b0q/QGIAlaWEJbXP3r/L+AEipw/+BtkQVY9fIM2i/ZhgVEgJO6DZ1ksVtlYdoQAPhVO0oKmYBmnAYco4DRCRB3TwCziptaE0auER9/VzRqKNOEYINOQg2m1l9GpGNQAhh1v6UmxNQh2M4+LmlUzll0OTjYQOaGlZAEMCrdhmBphaMBwBADrSQQc3//He8KgFETT7p6BHnjj2X9EXsDjrgBS6ihoAmcSQVYmE4JgYWFpp1waAQRoqDzxDhU+HxSnZHz/9JEY6Y5MJA+cwoWrt99+U3Mc/9g/NQTFaigAEtwB1yBzwzucZSX7RZEILhR1d5GDCsBLVUdIQvsldZfEJt5i/MHx2hGJZFkVVyK242iFeh58oBUFqIQbkfp2DV2X0CkAYgv1sU+P+I/HmBu8nErugdRnUWhfp+A/ddlbEH3uQlBsNobUEMHasK1HOYn8BEEvCUaiuigXRIKj+sGOPA4KAWz9/s7WxcgB4+a6/fI2osEwv4yOENAiPf+wQhbc/5f0gGisWuQaRFmGoIqguARWsBQgTTocDLMT5OJUQnhqdCEig+/EShKSEgTVV0MBMnz04BcshPnLk/+OaV0/dwKzB4QUt1NB6uTDfGOP+cNm9mEsBAFiM7AQh9AKVEU75vy68jeOxrUC4mDEuYO0oLqoSdHaEF2eXYYSm0V+oEOwpLmYFOF3Z4CmAeBTIGueiIw2xoKPzDBJVBXQ5g5O8/twwA+QguIjJt3+g0NQEcDfUXgO5gsqlTBLkQLdl86K3CWneitQ8sg/5oWAUJP2C3V3RoEyji5n4b9lB4t9pz2CA+cAFn1Z9I/uzYsU/ELtEBOCHYQQqGcFejV+yeuRJX31zsKV5IGjway9z6PLDxKwNEPsBuOEiqw57jGgOtZ1Y++T50AuMFl7hPIbhskiOwsATtRoc7rS7dXrpcgrMCGJca6ELJo+Y0be0BW5ZKGcFz4y8W9BduwcDnK9iO5fagsKpp9ANnvDPxeP8THNyIVFo1AMas8Qk5v2Ytm0LCCYAXqn+wQsPTBh/5Bcnne14Os3uCQt28vsK1WUESJFviBgAW//3u9PLxusXchcCR2WsNzv/ImvgZzzkUByDUAIrjTvmSHAowpJBQE4SUlxMxnARlQbIqkArVAJ6pBBvELCCKlkyCDAP45BYfEPfcUpfMch3Vn4bheYK4E66BxAxHSVd5INgEPgU/NBCDfNQ8Ho1CoINAPQAW/QT8OCIZlNFCB84XhoDChFByHGjx35v9BLgyhmojqHYb5QYXnuAecvua0hZe6BV9f7v4ibvgvamrmAc1TmaEir0LQ9h97eYAYVoM/nWA60i8Q3Ifezha9BqaaL3zvqd6IAuwwLSCCuCLuJWch4h30giPtyiAphKEBcCu9BV5wwzkMxID8rhMwdwMhcSFgrBT3RUTQboAUg3+p+Qe1IGarOioVnazmefV3lHpwA0AcLWCahUiXwePHWJsP+GH1gnp/we5KfOhJAbsj0H/BIEb04TbrTPsAyb2LLu93KwfCvn5PLAwrOXAa72eEQRo1CNdw5IprsAZ3hApy9zlcITG2vpCihsRSYxNS+J4vdBZ6B52eqRcQ/QXmSjAWSfa/5GA5qEg4iJFtm624AqXLrSA2gx8p1Mdqcghv41S0lSp/xAYs9gakQc4Ie2RTUYwYgt748mV+FU1Xgp14eW3XYZ6cdqGTNHwHICTwEeTPl0jEZwIgP9gDEaogeg5IHWCF+1eoAhvEKPB/EAeTRsM/pSAP5wjWEUMM1/NJRhwJbpJSgK7S7zF3EOsI5jBQBK9DV80Z8Y0COzvmWzJXgDl40KEC6cqvqgi4OB5cpgLFYK/1CvDiItXqC6/S87wfAUfPtxqfGNzlYaOjlf1IsHPPvffHgDAoEeEST4ZLZUd/RSo91/BjXY5ggWgQ4In3fyj4mUqPrInHOCLKO3wUwRsfyXpt1nEIRLrqcWeTuk7bigsbid1zD4iDRQtnIdQsyIXnFCn1I9D7ADgxEhOvR5AJosoUbu1FkJyYCi9OhQERoIx+4AX/YqUXQhtYEwKN4Cy1HntLMmtaAQpqfrT/UCoLSxeswjA5UWPPi0mjajUWxMTdVusNvt/ChMdmILK5IRMFu90BMEzFYHdg2GAgeYVHMMJIBTA7EFTx/5fpgTFXz9w/en0ZjD8kCDoKPNGwlB01BmoWQbh+AxR689mBponGJOr9OwmMu3dtJ/ylW1Tik4ElUPmR9RqII+pVhD9ychABMQ51gOIZg+/G+5mGIzLB1JJC5WhzYjhJ7IWmLDpA8jzsAafUPkB2WnFBF4iSxkq1ty7f25rv/+EQLOxs2oUdTSA9HIR9swdBlCcFe9owPC3XWDDC0ISVzsEVbSCF/sWdA5Fu4HJqankp2SeQCYYrImNalfmhpVxYrGkUS4LeSUjg8dD7+D7w/ybIfy7vlB9/HJ978zr7/45Qgajzj+4EjIK/ULHPRAOlKr/aG0AFcqCyu0GcW45Igh6JMJmhA49/U+cEssHNJhtXDC1MOya3j/sAiAGcrEtqtgjBD6wEzSDc7D8o6C8rIqAZyPk+NQoNLAZ1hR64Yl1FBY648smUYKnSg1Xwk/0DyRyArByMUobyByhCcPnOaPyoegREFS4jNfYAw+IHCjdC1J2WDZBke/OyN85J24WiXwDYPoJyYuCD238ulvuzwt6KgHf0shWKsqCFFGjB/w8HU8eeTED9wAAAAABJRU5ErkJggg==",$me="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAF9UlEQVR4nGWVy64eVxGF16X27u7/HMcyuZGYAINwmTBigngBXoc34El4B0ZMGDJjFCExQUIKiRKZYBITHdvn/L1rF4P+c+yEUqmH9WmtrrWLkdB4C1/91h/9yn947D8+8CfdlBeGGAMtqwNd6K7VWAJrw9qwLtw2nDaernh6wKuHPD3S1Vs6vaPT97W9r/Wx1seKUWj7Uzz6vX79T//wF/Gbx/7rw/jsFB/39nlrX7q99LKrp5bJZXAtrqW1uJIncbNOXafBU+o0tZW28got0AJ3KACsE4OfYvmzfvDMb/+4//Td9snD9rfr9vHWnyz9361/1fpNLLde0mt5pTZ7a9pCm32SrqQTfZI3aqNXHAwvcAB4BPwnk/oMEcqX8eaz1t9cHjxs7133f5z6p2v/Ylme9eWmLbexjlhnrPBirz3WxWv30rw0L/Yi96PpDrcDcPMEfq+qvQCfsFF1blcv2js3vb2xLNd9O/XT1p8u/Vlfnvd+25bResXC6BFLj2WJpUdv7uEe0exGByPoOAC//BH+cgNqUjfkU4mOEetde+O2vf+y8br71Nva+9q/XpYXvZ97z9ardUXrra3RerQWrUU4myLk4AzYiADwJ+NRQ41i7MSNEBIcM5YR1+f21rnlXcPWtbVYW1/a7dL21mZvbK211lv01lpEtIi0MxTmFGzMAABAN6gF1CTPxI1gkXa5Z5xGPNrbfo6xB/bQubW9nXvkHtXDPfqIJd2bI+1mpZjmNK17QFuxDzhBJued8Fy0KLvcp7fpNzJuM3JE7daIWGKMqAylW0bLiHQ0e1ppTXEK8Qrwkzv8fUIua6oG553wQpRIme7lbfpBxm3GnoEMZ+wZlYGMlu6pNh1pT3nqALCEugCeAB2ohKqYk9hZd4JFS5ThDm/lB9N305nGtKfnNKZiqk23qZhySZOcYhHFewXfI54UMCBDOYlU3TMkSaYWaCtdwXu5yprOKUxrqk9FyUWXNKXiBfCNgucGboGAUBwUJzFYO3G+MCwFtdAn6K6UZZSyXCXBAUVdGCoS5IVxAcQNujAHKCiLLHJqDtWZh1GHV0Et8EYNqOABTUhglKJoyKBBgSwCBC6Ajz7Azz+GiJbwhFTkZCXnEM6EJcuHDmmlztCkBE2IkMGAAhQoSCBBvgYA0G6xN4DgLE5IU5iqZA1hJ8zDqCY2qktJHfEnZSpIk6bE++kEXwHUEBMCmBBBFzE5UzNZuyBRshlSSF0aEg6MaDHIgyFCPAqvA/YdIjTgQ3WBLNZkpWoQPnRIUljdGiIkHd9jumgeO0ESEI97cNTPJj6Z4ISOZh1JUSVLwiAs7pRp02aTypRUhwIzjvhfPCKF1wH/BTqwA5pQlnYyipgs6dDBQVncZatZaZUlsUxZYVq0jyfm8kNeBzz/Gu0ETrjABAURAoTJOVVJpDAoM3ZOc5olfmMK42CYMrRTAr6tIK6QiSA84VtIIEosslSTNYUkUxyS5aEDQ6tMmQ7YDMOmjziYx8E56oPEl8DdDgM2/BLeIJVw9CRSTClZg97ZrDl0BF6m49V0GTIZQL4CvNuxFj47w4ASmqUkAalYU+DBoIbK8hAG506aZTLonWFG0IMa1AAHXlegW9wFGuAJG97hhFkqiuCxUZyqSSWR5GCZHKxB7nSwDcZADHiACQ4eJ/Oot9+BvsaLQD2Hby9RUEEs1cUlcdKpmWKSQ2VyqAY56J0RiEEPOqHxXYv2W4yJuANWxBkBOKEGFcwyjlhMYdLJSjLJpA8FAxqMwXZRQA0wgdQ94Hcf4nqDFnQhBDcY5YJUIqSSpnxpRqone6ol+2Af7Il2MJJxnN/8lgIA8yWQUKItaBMRsGEdDIrQoYNTnGSyBqdZQSY16IEYaANOOKn/A+htXH+OdgLOiB1BBOEGCz5ejmO6JpGEeexVJTmohJNORqIlnVDyO4CvvsT2AGm0BVEHo0IMHeEooeQipzDFY5eSNcigLgwoGYlIKHF/ky9Z+xD/WrCfoQUuRCGAKBhlwIBRQvmSuykkMYHkqx7EAPK+/wdqEbWmfB0bfwAAAABJRU5ErkJggg==",Jme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABGSklEQVR42u3cx4tb6brvcf0DmmpUoxrUoAY1KCgwFAZjME1jjGmMTWNs2tjY2MY2DjjinHPOOeec3dXOOeecU2VlaSksSc/9aq1X0pJKqmD3Dn3upvnCSe197v38nlfS2fscW1x+kbCMloAsFY/skEY5KbVySb7JXfkoT+WtvJGX8ol/67s8lDr+o065KW65Jl7+q/zyF3/nWTpJx+gQ/7H94pPd/Oe38yduEZds4E9dK/Wykj95GX/OYvkq8/kz58h7mcmfP41/hMnyTCbIIxkn9/nv5raMlOsyTK7IELkgg6RKBshp6ScnpI8ckd5yQHrJHvmd/3578I/QjX+E32SNdOEfobMskV9lAf+vmiOdZIZ0lKnSQSZKe/7kSv7kdjKchkoFf2q59Ke+UsafWCY9pZQ/rZQ/rUS6Umcp5k8q5k8p5k8p4k8p4k8o4u928Hc7+Dsd/F1mpWLn7zArVhWpHOlsRvYC/Yf++t8A/j8fQCxrADvTA/j6vwH8/zGAaOzX/w3g/+cBaJEuEkqMMQbg/t8A2jiA8n/+AHzB7qLFx8K2zBhAA5Q16QE8+98A/q8PwOXvLYHYePEllsO666cGcPR/A/jnDaDRN0C80Ynija8QV2K3GsBlywDe5h3AVYAvAv0X4IUH4P7fAP7bB9DgGyau0BRx6yvFGd8j9YlTUp24LF+g/gDKGwbwAqwnwD1o5QD2/VcPYMT/BmD9q94/Thq0GeKMrpbG2B6pi5+S78kBJAoNoDFrAFU/PICP/+UD6PL/xwDqAlOlNjBH6sMQ6XulJnZavsWvyGcG8D7BABJvsgZwxxiAK2sAZ9ID8P/gAF78QwbQ/v/eAGqDc6Tav1BqtA1SE90v1fpp+Rq7Ip/id+UdA3jNAJ4nPsnjRGYAN0C9whe8C+kB+BmAP2sAu/jPNx1AjRrAlzwDeNqKARz/3wD+7r+qtSXy1QdLcJN8Dx+Qb9Ez8kW/Ih9id+Vt/Jm8sgzgfqL5ARwxBuBjAN70ADbznSE5gDWMJzWARekBvGsygLFy738D+Hf+9T20Sj77VsuXwFb5oh2SL5Gz8lG/Ku8ZwJvYM3kZfyPP4h/lUeIbA6iV24lGuZ5IDcALjQ8aP4+zOYCD/Pt70wNwqQE0WAbwLWcAr/MM4FbOAP78Bw+g6L97AN/CG+Sjb6N89O+Qj9oR+Rg+J++jV+Wtfk9eMYAXsTfyhAE8jH+TuwzgVqLBGMDlhFvOJ7zyZyI5AB8D8EHjyxrAtjYN4EnWAEYYA7j8XzCAXwoMoOJvHsB/aARfwtvkvS/ZHnkfOCbvtCp5G74mb6L35KX+TJ4xgMexj/IgOYB4rdyMN8i1hFMuGQPwyDlGcJoRHE+YAzgA/l7jn1VwqwE0WgZQLUuNAXxmAB+MAcyQVxClBvCQAdxtxQD25x1A1x8ewB9tGEAljO3+7wzgU2SPvPPvlje+A/LGf0LeBP+S16Fr8jJyT55Hn8kT/Y080j/K/dhXuROvYQD1cjWeHIBL/lIDOEXH6TAdoD0JcwBbGcAmBrCeL4Br+AWQO4DZ/MQ0B/C8mQGczxnA4YIDaM0LUNmqAfz2LxmA/b9xAB8iB+VN4IC88h2Rl/5T8jJwXl5o1+V56L48jTyTx9HX8kD/IHf1r3IrViPXY/VyJd4oF+IuqYq75SzYJ0E/ZgzAI/tpD6/DDgaylZdiE9efHMBqYwDfGcBXBvBJ5uUMYJIxgAeWAVyzDODcv2gAA35oAEV5BpAZwT9sAO+iR+VV4Ii88B2X576z8tx/QZ4Fb8gT7b48Dj+Vh5HXcj/6Qe7oX+SmXi3XYnVyOdbAAJwMwCVnGMHJuEeOAn/IGICbAbiMAWzhC+NGvjOs49fD6kSNrFADWGgM4L0awEs1gMeWAdxUA7jUxgGs+Le8AP+nBvAmelJeBE/IM99peeqrkif+S/I4cFMeMYAHoadyP/xK7kTey63oF7muf5creq1c4hU4H2uUczGXnGYEJxjBETpE+4DfbQzAqQZQzwBqZVWiWlbwS2JJ4ossTHxUA3ijBvDMGMB4YwB3ZFTeAZz6FwzA+gL0+jcN4L/sl8BL/Yw8004Df04e+87LI98Veei/JQ+CD+Se9lTuhF7JrfB7uRH5JNei3+SyXiMX9Hqp0hvkbMwppxjBcTrCEA7SXtrF67Ad/C1c/wauf60awHJjAJ8ZwAeZm3gnsxJvZHrihUxNpAZwvxUDOKQGsJsBbP+bB/A7df/JAfzD/mcBz3WuXvtTHvmr5IHvotz3XZN7DOBu4IHcCT6VW9oruRF6J9fCn+RK5KtcjFbL+Wid/MkITuuNcpIRHKPDjGA/8HtoJ98RtvFrYTNfGDeAv5bnf2XiOwP4KosTn2SBMYC3DOCVMYApiacyKfFIxifuy5hEcgA3YLrKAC7KYPlLBjKA/nKSARzLM4DNagCr/4UD6PRvGsB/YARPda5eOy8PAhfknu+y3PVdlzu+O3LL/0BuBp7Kde2lXNPeyZXQR7kU/irnI9+lKlojZxnBKV6B44zgCB3iI2E/7aEd4G8Ff1O8Tjbw03FNvFpW8jNyGc//Yp7/BYn3lgE8ZwBPZKIxgHsM4LaMSlyXEYkrMjTBABJVDOCsMYC+lgH0VAPo/hMDqGhxAJ1bOYCyf+4AHuuX+Ky/yMVfAv6q3PLdlJsM4Ib/oVxnANeCL+WK9lYuaR/kQuiLVIW/yblItZyO1spJRnCMl+AwQzhAe2kXXxB38B1hC18WN4K/HvzV8e8M4KssjX+WRfGPMp/nfw7P/8zES5mWHsADGZe4ywBuGQMYbgzggjmAxBnpn2AAiaPSJ5EcwD4GsAuubWoA6/83gB/964F+Re6Grsjt4FW56b8uN3y35LrvrlzzPZQr/qdyOfBSLgbfyHntvVRpn+Rc6KucCX+Xk5EaOR6plSOM4FC0XvYzhD20U6+TbeBvidXKBn42rot9l1Vc/4r4FwbwiQF8kHnxtzI7/lpmxl8wgGcyOfE4awAjE9cYwGXLAE4zgBMM4AgDOCi9E3ulZ4IBJBhAYpN0S6QGsByyxX/bAEqyBtDxJwbwX/xL4J5+TW6Hr8nN4HW57r8B/G254rsnl32P5BIDuOB/IecDb6Qq+F7OaR/ljPZFToW+yXFGcJQRHGYEB3gN9tJufiHsoK18UdzET8YN4K+JfZOVsa+yPPZJlsQ+yML4OwbwhgG8khnx5zI1/lQmxx/JhPh9BnBHRiduqgFcYgDnGcCfWQP4Iz2AndkDSKySLgkGkGAAifnyS2K2GsCUv2UAxQUH8A//HwbdiV2Xm2HwtRtyNXAL/DtyyXdfLjCA876n8hcDqAq8lnOBd3Im+EFO8QqcYATHGMFhRnAwXC37GcIe2sl3g+18SdwC/kZ+Mq7Xv8lq/SsD+CzLYh9lcey9LIi9lbmx1zIr/lKmx58xgCcyKf6QAdyTsfHbMjp+Q0bGrxoDGMIABiXOqQEcVwM4wAD2qAFsVQNYl38ACQaQYAAJBpBgAIm2DKDrDwzg7/gp+G8ewc3YTbkevilXtZs897flov8u+PfBfyRVDOCc74Wc9b+S04G3cpJX4ETwoxzTPssR7ascYgT7+U6whyHs4svhDtoa/S6b+Lm4Afi1+hdZpX+WFfpHWap/kEWxdzI/9kbmxF7JzNgLmR57KlPijxnAAxkfv8sAbjEAvgDGr8iw+EUZEv9LBsX5CZjgJ6AxgMMMgF8AxgB2SA9jABuNAXRt7QASDCDBABIMIMEAEgwgwQAShQbQ+n9VUNP/WcA/4HvA9RhXH7nFl7xbciFwR84zgCrfA/mTAZzzPZEzvudy2v9STvrfyHFegaO8AkcYwSFGsJ+XYC/fCXbTDoawLfJNtvBTcSOtj36RNdFPshL85eAv0d/JQv2tzNNfyWzwZ8aeybTYE5kceyQTY/dlfOyOjInflFHxawzgMgO4wACqGMBZGRDnJ2D8mPSNH8oZwBY1gLUMYCUDWMYAFlkGML1tA0gwgAQDSDCARKEBFP7nA/6RA7jCAC5FbssFDfwg+P57wD8A/pGcZgAnGcAJ30s57n8tR/1v5XDgvRxiBPsZwV4+DvYwhJ38OthOW8JfZBNtiHyWtZFPsir6UVZEP8jS6DtZBP4C/bXM1V/KLP25zNCfylT9MQN4IBNid2Vc7LaMid2QUTGe/xif/3E+/+N/MoDTagD8AkgOIM4A4rulZ5wBxJMD2JBnAPPyDGAs+KPyDKBf4QEkGECCASQYQIIBJP5d/7OAf+MILvH/8Rcid+Sv0B35kwGcC9zn4h/IKQZwkgEc9z2TY3wMHPG9kkO8AgcZwX5GsJcR7GEEO/liuJ0hbAl9ks20IfxR1tHqyAdZGXkvyyPvZEn0rSyMvpZ50ZcyR+f69WcyHfwp+kOZpN+XCfodGcsQR/N9ZGTsCgO4KENjf8ngGJ//DKB//DgD4BdAnC+A8X0MgF8A8e3mAOIb5Lf4GukaTw5gqWUAsywDmNDGAXQrPIAEA0gwgAQDSDCABANIMIBEqZE9UaIqVhVZcqSzJf5LBnCep7cqeoefd3flrHaPz/r7PPcPuPpH4D+RowzgMK/AIV6BA3wX2M8I9vJ9YDcfBzv5TrCdIWzVPshm2hj6IOtpTei9rAy/kxW0NPJWFkVeywLw50ZfyOzoM5kRfSLT9EcyWX8gE/W7Ml6/LWP1GzKaXyQjYjz/sQsMoIoBnJWBsZPSP8bnf+wwA+ALYHwvA+ALYHwbA9icPYA4A4gvlF/jc+WXeGoAk/+GAfzSigGUtXEAagS5/bsHUMUAzkXv8tv+Lt/w78lJBnCcARxlAEd8j4F/KgcZwH5egX2MYA8j2M0IdjCC7bQ1+E4200btnayntbQq9FZW0rLwG1kSfiULIy9lXuSFzIk8k1ngT48+lqnRBzI5es+4/nH6TRmjX5dR+hUZoV+SYfp5GRLj+Y/x/BsD4PM/xvMf2y+9Y3z+x3YwgK0MgF8AcX4CxlczgBUMYEn2AOLTpGOcAcStAxje4gBK/5MDSGfL9K/86xwDOM0ATjGAEwzgePC+HAk8kMP+R+A/lgO8Avt5BfYygj2MYBcj2MEItvOdYEvgjWymjcE3sp7Wam9kNa2k5aFXsoQWhV/K/PBzmRt+JrMjT2RG5LFMizyUKdH7Mol/3PHRWzI2al7/SP2yDNe5fr1KhujnZJDOAHSe/9gRywB2mwOI8fzH+AIY4ydgfBUDWK4GsEANYGb2AOIMIM4A4gwgzgDihb4E9rAMoMvfMIDiHxxAzghy+7v+Os0ATgJxnAEcYwBHGMAhBnDQ/xD4R1z9Y+CfyG5GsJMR7GAE22gLvww2M4SNgVeyntYGX8lqWqm9kuXaS1lKi7UXsiD0XOaFnsmc8BOZGX4s08MPZWrkvkyO3JWJfPkcF+X6o9dkVJTrj15kAOcZwJ8yWD8jA/WT5gB0nn/9gPyh8/zHdjGA7WoAfAGMrZXfYiula4wBxBYbA/glPqd1A4gzgDgDiDOAOAOIM4A4A4gzgDgDiDOAeGoAnZoZQL7vAcXNvgI/PYC21NxfJ+N35Difw0cZwJHQPb7h35cDDGA/HwN7eQX2MIBdDGAHbWcEW2kLQ9jECDb4X8h6Wht4IatpZfCFLKelwefgP5eF2jOZrz2VOaHHMiv0SGaEHsi08H2Zwj/WJPAnRG7KuMh1GRO5ygAuMYALMizK9UfN6x+on5D++lHpqx9iAFy/vkd66Tulp87nf2yzGsAaYwBdYvwCiPEFMMZPwNgc6RSbwQCmMoBJDGA8AxhjGcCQtg0gzgDiDCDOAOK5A/iZL4L/xhEU6hgDOMIADnORB/kiuF+7L/sYwR5GsJtXYCevwA5GsI22MILNfCfYxAg20Hpa638uq2ll4LksDzyTpbQ4+EwWBp+A/0Tmao9ltvZIZoI/PQQ+/xiTwuCHwQ9fl7Hgj45clpGRCzI8wvVHuf7oGRkU5fqjxxkAz79+kOvfxwB2MwCef53Pf32TdNfXSzedz39jAEvVAPgFEJttDKBjjAHEGECMAcSSAxj59wwgzgDiDCBeYfZPHsARBnCIL2IHGcB+cPbyMbCHAeziy+AOXoHtvgdc/SPwH4H/WDbSBoawjtbQKlrpfyLLaWngiSymhYHHMj/4WOYGH4H/QGYyqun8uVO1uzI5dFsmhm7K+BD44WsyOnxFRoUvygjwh0W4/shZGRzh+qMnGMBR6Rfl+qP7jee/t87zr/P861sYAJ//Op//Op//Ol8AdT7/db4A6skB8AUwxi+AGD8BYxNpnDmA2EhpFxtGDCDGAGL9pTzGAGIMINaaAXTMGUBqBAwgXqZiAPF/0AAOxW/LAQawL3JH9jCA3SDtDN7jW/592ea/L1sZwRZGsMn3EPhHXP0jWUtrGMIqWknLaan/sSzmI2MhzQ88lLm8ILMZ0kyaEbwr07Q7MkW7JZO0mzJBuy7jQtdkTAj80CUZGT4vw8NVMjR8jgGclkERrj/C9Ue4/uhBcwBRnv/oDukZ3coAeP51nn+dz3+dz3+dz3+dz3+dL4A6XwB1BqAzAJ0B6AxAZwD6aKnUrQMY2HQAMQYQYwCx/AMoNgaQ7xXIMwCjYktFmbIG4PjPDmA/A9jH7/A9DGBX+I7sAGo7I9gWuMu3/Ht80bvP1d8H/z5X/wD8B7KaVjKIFbSMlvLvL6aFjGU+zeXvmc3fO4s/Y0bwjkwL3pYpwQz+eO2qjNWuyOgkfuiCjAhVybAQ+OEzMjh8UgaGjzOAI9Ivckj6RsCPcP2RXQyA649y/dGN0j3K8x9drQawjAEsYgDzGQBfAHW+AOp8AdT5AqjzBTA9gBHSTmcA+mCp0AeC38wAYgwgxgBi/BSMtXUApc0PIO5IZzOym/0nRrAnfkv26LdkV/S27OCzeXvojmxlBFuA2wTgBv9dvujdBf8eV3+fq78vK733ZQUt499eQotoIc3nv2Yu/7WzaZb/jswI3JZpgVsyJXBTJgevy8TgNRkfTOJfljHaRRmlga/9JcNDf8rQ0BkZEjolg0I8/eGj0j98WPqFuf7wPgawhwFw/ZFt8ntkMwPYwADWMgCe/yjPf5TP/yjPf5TnPzqb+AKo8/mvT1IDGEujmg5AZwA6A9AZgJ4aQPecAfxqDiDGAGIMIMYAYgwg1poBlLRtAAWzFe5nB7ArflN2MoAd/B7fFr4lW/iM3qzd5rf9HdkQuAP+Hb7o3eHq73L1Zsu9d2UpLaFF/PsLaL7vjsyl2b7b4N+SGTTNfxP8GzI5AH4giX9FxgUvyZhgEv+8jNSqZLj2pwzTzsoQ7bQMDnH9oWMyIMT1h7j+8H4GAH6Y6w9vZwBbGABf/iJcf4Rv/xGuP8LzH+H5j/L8R3n+ozz/0enEAKIMIDo+ZwBDCw9AZwA6A9AZgN6KAcQYQIwBxMpVDCBWavT3DqCFEfzMQHYwgO36TdnK7/EtDGBT6JZs4LN6A0/2Oq53DVe8yn8b+Ns8+be5+js8+Xdksfe2LKQFNM93C/xb4N+Smb6bMoOm+a/LFJrsvyYT/VdkQuCyjAuAH7ggo4PgB6tkRPCcgT80ia+dlEEaT792RPqD3y8Efmiv/BHazQC4/jCf/WGuP8z1h9dJtzDPf2QFA1jKAHj+Izz/EZ7/yExjAB2jU2iiOYAoXwCjDCA63DIAfgHo/ahP4QHoDEBnADoD0Ns4gFiJqlhVZCl3AI5/3QBaalv8hmzRb8jm6A3ZyO/yDXxDX89n9VpaHbwpq3i+V3LNy2kZwEtoMS303pT5NI/m0GzvDfCvy3Sa5rsmU2iy74qJ778k4/wXZWwSPwB+APzAORkePCNDg6dlSNDEH5jE18DXDkhfbZ/00bj+0E7pFeL6Q1x/aKP0CK1nAFx/mOsPc/3hJbRQOofnMQCe/wjPf4TP/wif/5EJDIDP/yif/9GR5gCifAGM8gsgah1A79YNQGcAOgPQGYDOAHQGoLd2AHlGoLIZ2bP7dw1gS/y6bNKvy4YoRa7LOn6br9FuyGpaGbwhK3jCl/tv8C3/BvA3ePJv8OTfAP+6zKU5NItmeq/JdJrmuwr+FfAvy0TfJZnguwj+BRnrPy+j/VUyyv+niR8AP3BKhgROyOAg+MEjMiB4iAFk8P/QdklvbYf00rh+jevXuP4Q1x/i+kMMIMSXvxDPf5jnP8zzH55FPP9hnv/IJHMAEZ7/CAOIjGAAw7IHEGUAUQYQZQDRnj8+AL1cxQD0UiO7/pMDyJvN7O8cwMb4NdmgX5P10WuyNnJN1vDbfBW/0VfybX0FX9yW8fm9hBbznC/kqhfQPJpLswGf5b0qM7xXwL8iU2mK95JMoonAj/ddkHG+8zLW95eM9iXxz8kI/1kZ7j8tw/wnTfzAMRkUAD8AfvCg9Avul75B8IMZ/J4a169x/RrXr62RbtpK+U1bzgC4/hDXH+L6Qzz/YZ7/8DTi+Q/z/Id5/iNjaJQxgHYRBhBhABF+Akb6Nx1AlAFEGUCUAUQZQJQBRFszgArLAMoyAzAqtlRklncAjtYPoFA/MoAN8auyLnZV1uhXZXXkqqwMX5UVoauynJ9qS/nGvoQWBa7yE+8qP/Gugn9F5tBsmgn4DO9lmQb4VJrivQj+BZlI473nZZz3L/CrwP9TRvnA952R4T6F7z8ug/3g+4/IwCR+4ID0C4Af2CN9ArsYAPjBbdIzCH4Q/CDXr/HNX1sFPp/9Gp/9Gtevcf2hucTzH+L5D3H9ockMgOsP8/yH+fwP8/yHef7DfP5HBmcGEOlLfP5HGECEAUR6GAMoif6WPYAoA4gygCgDiLZ1ACVNB2DkSGfT/6YBtKXUANbGr8ia2BVZpV+RlZErsiJ8RZaFrshSfqcvpkV8c18QuAL+ZX7iXQb/ksyimTQd9GmgTwV8Mk0CfQKN91aBXyVjvH/KaO85GeU9A/5p8E/KMN8JGeoD33fUxPcfkgF+8P3g+8H3gx/YIb0D26RXYIv0DGyS3wMbGMBa6R5cLd2CyetfxgC4fo3r17h+jevXZhLPf4jrD/H8h8YTz39otGUAQ4jnP8zzH2YAYQYQTg6gV2YAEQYQYQARBhApMIAoA4gygCgDiFaYNRlAaQsDyDMC3d60f+UIkq2OX5KVMdIvyfLoJVkaviRLQpdkkXZJFtJ8frbN49v7XJrNF7lZPO0zeNqn0zTQpwA+mSZy7RNAHw/6ONDH0GjgR3lPywjvKRnuBd97HPxj4B+RQb7DMtAHvu+A9Pftk74+he8H3w++H3y/wg+sk+4B8APgB3n6g1x/kG/+wQUMgOvXuH6N69f48qdx/RrPv8bzr/H8h3j+Q3z+h3j+Qzz/IQYQSg6A5z/M858cQJgBhHn+wwwg3M0ygM5SHGEAEQYQYQARBhApMIAoA4iWqcCP/k0DaJItu58dwMr4RVkRuyjL9IuyNHpRFkcuyqLQRVmgXZD5NDd4Qebw7X02zeSL3Ayaxuf6VD7Xp4A+CfSJNAH48aCP9Z4F/wz4p2Uk8COAH+49YeJ7j8pgL/jeQzLQe1AGePcb+P3A7+sD3we+D3wf+D7w/eD7wfevMfEDK2ipdA0sli4B8INcf5DrD3L9Qa5f4/o1rl/j+dd4/rXRxPVrXL/G86/x/Id4/kNcf4gBhBhAiOc/xC8A6wDCDCDchRhAOM8AIgwgwgAiDCDSzACiJapiS3/zAFpboQEsj1+QZbELskS/IIujF2Rh5IIsCJ+XeaHzMlc7L7P5zT6LZgb+kun+v/h9XwV+Fd/y/5RJNBH0JPw44MeCPoZGeU7JSM9JGeE5IcM9x2WY55gM8RwB/7DCP2Die/dKPy/43l3Sx7tD/vBuk97eLQxgEwPYIL/71ksP3xoGsEq6+cH38/T7efoDPP2B+TRHfg3wzT/A9QenEtcf5PqDPP9Bnn+N69e4fo3r14aYA9AYgMYANJ7/0B9qADz/IQYQ4gtgiAGEcgYQZgBhBhBmAOE8AzBiAJEyVakaQYEBpHOks/07RpCvpfHzsjh2Xhbp52VB9LzMj/wl88J/yZzQXzJbq5KZNCNYJdP57T6Vn3BT+CY/mS90k2iC7yz4Z8A/beCP5tpHAT8S+BHADwd+GPBDPIdlsOeQDPIclIGe/TLAs0/6e/ZIP89u6evZKX08Fnwv+F7wvQrfB76P6/cpfP8iAt/P0++fbeD/EuCbf4DrD0wirj/I9Qd5/oMMIMgAguYAKjSef43nX+tnDkBjABrPv8YAtB6WAfD8hxhAiAGEGEAoZwBhBhBmAGEGEC4wALJHSlTFZs0NIJ29af/KASyOV8nCWJUs0KtkXrRK5kaqZE64SmaF/gT/T5mhnZNpwXMyld/uUwJnZZL/DD/xzoB/mp95SfhTXP1J8E+Afxz84+Cb8EMN/EPgHwT/gMLfq/B3gb8D/O3yh2er9PaA7wHfo/C94HvB9ybxl9MS6eoD38fT75tn4P/q5+n38/T7uX4/1+/n+gPjCPwA+AGe/wDPf5DnP8j1B7n+INcfTA6A51/rrQbwuzkAjQFoXL/GALScAYQ6SVGIAYQYQChnAEYMIFymKjAAoyJLjjwjsLciW3Y/M4CF8T9lfuxPmaefkznRczI7ck5mhc/JjNA5ma6dlWk0JXhGJgdOyySayG/48f5T/L4/yU+8k+CfAP84X/aOAX+Uqz+i8A8p/AMyyL1fBrr3yQD3Hunv3i393Dulrxt8N/hu8N0WfM866eEB32Pid/OC7+Vz3wu+18Tv7OPp9/H0+7h+H9fvM/E7+nn6/Tz9fj77/Ul8rj/A9Qd4/gNcf2CAGgDXH2QAQQYQtA6A67cOQGMAGvga15/GVwMIMYAQAwhVmOUOgOzhElWxWZMBqBGobEb27FozgNZUaADz4udkbuyszNHPyqzoWZkZOSMzwmdkeui0TNVOyxSaHDwlEwOnZELgJPgnZZz/BPjHZYzPhB/Jl7sRfLkbzlM/DHQT/4AMBn4Q8AOBN/F3gb9D4W8Dfwv4m6WXe6P0dIPvBt9t4nf3gO8B3wO+hy99ngUMAHwv+F7wveB7k/g8/T6efh9Pv4/r93H9fq7fD76f6/dz/X6uPzDQGEB5gOsPMIDAH2oAPP9BBhDk+oMMIJgaQBL/18wANAagga+1V+UMIMQAQmWqUqMmAzAqyslhlh5AnhHkzWYW/cnmxk/L7NhpmaWflpnR0zI9clqmhU/J1NAp8E/KJJoYPCkTgidkfOA4+MD7j8lofseP4ufcSOBH8OVuOOjDeOqHAj+Ep34w8IPcexX+bvB3Sj8X+K7t0se1Vf5wge/aJL1cG8BfD/5aA7+HG3w3+G7w3SZ+V89CBsDnvofPfQ9Pv4en38vT7+Xp93L9Xp5+L9fv4/p9XL+P6/cNJ67fz/X7uX4/A/Bz/f4kPtcfAD/A9QcYQKCHZQDgB7n+IAMIMoBgMwPQGIBWoWIAWs4AQiWqYksFBkC2dPbsmhtAS7U0gNnxUzIzdkpm6KdkevSkTIuclCnhkzI5dEIm0UTtuIwPAh88JmMDx8A/KqP9R0x8fseP4Fv9MK8F3pMfvh/wfV3bwN8C/mbwN5r4LvBd4LtW00rp7loB/jLw+cx3g+8G3w2+ey4pfM90At8DvoenP4nvHUtcv5fr944w8X1cv4/r94Hv4/n39zMH4Of6/QzA35N+NwcQYAABrj/AAAI5AwgygCADCDKAYAq/wACMSo3sWolZ1giKcnKks4UKDCBvNrPITzYzflJmxIDXT8jU6AmZEjkuk8PHZSJNCB2T8doxGacdlbHBIzImALz/sIz0Aw/+cN9B8A/w+34/+PvA38uXvT3g7wZ/F/g71NVvM67exN9kwV8H/ppsfBf4riW0SLq6ePZdFnw3+G7w3eC7JzMAnn4PT7+Hp98DvmcUA+D6vVy/F3wv1+8dpAbA9fsYgK8PMQBfL2MApckB+MH3c/1+BuBXAwgwgAADCDCAAAMIWAYQrFQxgGCFWXMDMCpWFWWXOwAje/7yDaClWhrA9PhxmRY7LlN14PVjMil6TCZGjsqE8FEZHzoiYzXgtcMyOnhIRgUOgX9QRvgPgL9fhtFQ7z4Zwu/5wcAP4mfdQOAHAG/ibwN/a/rq/wC+N/C9uPqeXL2Jv0rhL8+DP4/Ad4Hvmkngu5L4Uwh89wQC383T7+Hp94Dv4fo9XL8HfA/X7wXfy/V7wfdy/d4kfm9zAD7wfVy/jwH4UgMA3w++H3w/+H4T3xhAgAEEGEAA/EA7I3MA5aoyVamRPZhvALkjcKSzpbMXHkE6W3bhH2xq/JhMiR0F/6hM0o/IxOgRGR85IuPCh2Vs6BD4h2Q0jQoelJGBA+Dvl+H+JP4+GerbA/4eGezdDf4ufubtUPjbwd8K/hbwN6ur36Dw10lPJ/hOrt650qi7M4m/FPjFOfhzmuK7wHeB7wLfNd7A7+AG3831u8F3D6OhBn47D9fvAd/D9XuS+H3MAXjB9/L8exmAt4eBX+oD38f1+xiAjwH4LAPwg+/voMoZQIABBMpVZWbWAaQrttSKARSquRE0V6EBTIkfkUkx4MGfoB+W8dFDMi5ySMaGwQ8dBP+AjNT2y4gg8IF9Msy/V4b6gQd/sA94r4I38LeDv5Vv+lsU/qb01fd2rpdewPd0rgF/lcJfAf4y6eYE3wm+c6F0dYLvBN8JvhN8Zwb/l1x8F/gunn4X+C7wXcNNfDfX7wbfzfW7+zOAfuYAPOB7uH4PA/AofC/X7+X6vQzAywC8DMCrBuBjAD4G4GMAPvB97c0B+BmAH3wjBuAvN0sNIFBqZA+UWMoZQDpHOluwFQPIyta0UBubFD8kE2OHwD8k42ls9KCMiRyQ0eH9Miq038TX9snw4F4ZFthj4vt3g79TBvl2yEBvEh94zzYD3sTfDP5G8JNXn4RfR2vAXw3+SoW/XOHz5DsXKfz5FvxZJr4TfCf4TvCd4Dsn5sEfaeK7ePpd4Lu4flcSf4AxgHI3+G6u380A3En8nuYAPAzAwwA84HvA9yh8L/he8L2dVJYB+CpV4PsqzFID8JepwDcqMUsNIF2RJUfTERjZm9aaAbQm6wAmxA/K+NhBGacfkLH6fhkT3S+jI+CH98nI0F7w98hwGhbcLUMDu8DfKYP9OxT+dhng3QY+8NSX3/R9+U3fB3gTf526+tW0SuGbV9+dq+/WyNU3gt+4QLo2gt84l8BvBL9xBmXjd0riO8F3gu8E3wm+cyQDMPErXUMVPtfvAt/F9bu4fhf4riR+b3MAbvDd4LvBd3P9bssAPAzAwwA8DMCj8I0YgJcBeCtVDMCrBuArV5WpwPdZBmBUbKnILDUAS7Z0drNgc9my+5ExjI/vl3Gx/Sa+vk9GR/fKqAjwYeBDwGvAa8AHd8qQwA4T379dBvq2gb9F+nuT+En4TdLHvUHhrwd/bfrqewL/u+XquzcuUfgLFf48hT87G78R/EbwG8FvBL9xPPGlr3EMAxht4jt5+p3gO8F3gu9M4g+04PdVAwDfBb6L63cxABcDcCUHAL4bfDf47s5GxW4G4FYD8IDv6aBiAB7wPe0yAzAqV5Wp1AB8Jari7FIDMHJkZUuVGkCz2ZqOoLnyDWBcfJ+Mie2V0Trw+h4ZGd0jIyK7ZXh4twwL7QIfeA34IPAB4P1bZYB/iwzwJfE3Sz/vJunr2Wjg/+FeD/468NfwZS9z9b9z9T0M+KUKf5HCn6/w5yj8mQp/msKfrPAnZOM3gt8IfiP4jeA3JvGHGPjtnOA7uX4n+E7wneA7uX5nHnwX1+9iAC4G4GIALvBdCt/dScUA3OC726vMATiMwPeUq8pUpeYAjEpUxZl8RTk5skoPwG8vnHUALdXSKMbE98jo2B4TX98tI6K7ZHhkpwwL75ChoR3gb5fB2jYZFNwqAwNbDPz+/s3S37cJ/I3gc/Ue4N3rjKvvDXwvftr1VPC/c/U9LFffTV29ic/VN4DfMEs6N4DfMJ3AbwC/AfwG8BvAbwC/gWe/AfwGK/5wE78R/EauvxH8RvAbuf5G8BtT+L3NATgZgJMBOMF38s3facW3DMDFAFzguzoaFbkYgEvhG4HvrlCVqywDILtRicoyAG9RTg6z1ADS2ZuWdxC2pgXa0Oj4bhkV2wX+Lhmh75Th0R0yLAJ+eLsMCW0Df6sM0rbIwCD4AeD9wPuA922Qvt714K+TPzzAu9cY8L34Td/Tlbn6Hs7k1S82rr6b5eq7NiTxZyv8GRb8KQp/Yn78BvAbwG8Av2Eogd8AfgP4DeA3JPG5fmMAfxD4jeA3gt8IfiPX32gOoCQ5ACcDcILvBN8JvvMXMzWANL5RpYoBuCpU5WbJARiVGtndJZmSA0hXlJMjMwKypbNn8jWXLZO/DaUGMDK+U0bEdshwHXgaGgU+Anx4qwwObTHxtc0yILhJ+gc2Sj//BgO/j2+d9PGuBX8N+Fy9e6XC5+pdyw34HnzD7+40r76b5eq7GlefxJ9pwZ+ajV8Pfj349eDXg18Pfj349SMYQC7+oAx+A/gN4Ddw/Q3gN4DfAH6DBb+R628EvxH8RvAbOxsVN6YGAL6zo1GRkwE426vAd7bLPwBXmarUyO6yDMBdbKkou+QALNnS2c28LWXLHkFL5Q5hRBz82Hbwt8lQGhIFPgJ8GPjQZvA3yQBto/QPbpB+AfD9wPuA966h1dLbs8rAT8L3BP531zKFvxj8RQp/PvjzFL559Sa+efW/1oNfD349T359Cn+cBX9UBr8e/Hrw68GvB7+ez/168OvBrwe/Hvx68Ot5+uutAwDfiAE0cP0NDKCBATQwgAaF3/iLigE0gt/YQQV+Y6UZA3AYge8sV5VlDcCeGkC6YktFZukROLKypbNnRtBcyQG0pkKDGB7fJsNiW8HfIkNocBT8CPBh4EPAaxtM/OB66RtYK338wPtWg78KfK6eerqXg78MfOBdSwz47vyu7+Y0r/63JDxf9LpannwDvz6Jn4SfbMEf3zJ+Hfh14Ncl8Qem8Sss+OVJ/Hrw68Gv5/rrwa8Hv57rrwe/Hvx6E98YQAMDaAC/AfyGjkZFDeA3tDczBtDOyNFYoSo3Sw7AqNTIblSSKd8A0jmysqVKDqCljBHYWq65YQyLb5GhsST+ZhlMg6KbZGBkowwIAx8CXlsP/joTPwC8H3jfSuntTeKvMPB/dy8Ffwn4XL0rib8AfPPqM/iz0k++iT/Vgm9evYFfB34d+HWjCfw68OvAr+Pbfl0Ofh34deDXgV8Hfh34deDXgV8Hfh34deDXgV8Hfp0VXw2gHvx68Ot/UTGAevDrO5gZA6hUtTNyNFSo1AAay1SlRnajkkzOYktFORUYgMvefOkh2JqvpXEMjW+WIbFN4G+SQfpGGRjdIAMi4IeBDwGvrZW+wTXgrwIfeOrlWyG9vFy9Z5nCXww+8K6FGXznXPCB5+ediW/Cd1ZP/q/qyU/j14034DvWjcnBH94Uvxb8WvBrwa8Fvxb8WvBrwa8FvzaDX2bFp5I6BlAHfh34dVx/HfhG4NeBX9fRqKguOYD2qkoV+PUVqnJzAA1llkqN7A0lmRqLcyrKLjkAS7Z09kzNjsFWOHcrGhLfKINjG8HfIANpQHS99I+sk35h4EPAa6ulTxD8QBIfeN9yWiY9vcB7uHp3Eh94F/Cu+eDPU/jANwLPb/sMvgn/q3ryDfy6JP64PPhcfS34teDXgl8Lfm0r8WvBrwW/FnwjBlDLAGrBrwW/FvzazkbFteDXgl/bySyFbwR+XaWqnZGjzjIAozJVqZHdqMTMGEFxTkXZNTrS2bKyZ3I2l83M9YMNjm+QQbEk/noZoK+T/tG14K8BH3htFa2UP4LgB8D3A+9bCv4S8IH3LGIAKfx5BLxzDqXwZ4BvXn02/kQyrz4bf5R0qOXqa5viV6bwa/jCVwN+Dfg14NeAXwN+TW8Cv6aniqe/Bvwa8GvArwG/BvyaLioGUAN+zS9mxgA6GhXVgl/bXlWpAr9WDcCoXFWmKjWyG5WYGUMotlTUtAZHOltW9kyNzWUzc7ay3AEMiq+XgbF14K+V/voa6RdZLX3DwIeAT+JrK6R3kKsPgO8H37dYfvcC71kI/gLw51vwgXfOAn9mDr4J/6u6+mz8McTV1xbArwG/Bvyaga3A79UCftcc/NQAOqnAr+mgAr+mUtXOyFFboSpXlVkqNbIblWRGUFdsqahp9Y50tqzsmRqay2bW2MpyBzEwvlYGxNaAv1r6RVdJ38hK6RMGPrQC/OXSW1smvYLAB5YwAPB94HsXMID50t1twndzcfUuhe8EvnE6mVffFN+E76SuvmNtHvyaYWn4yppB2fjV4Ff3JfCrwa/ubVRWDX41+NU8/dXgV4NfDX71b0Yl1eBXg1/d2ai4Gvxq8Ks7qbj+auCN2qsqzZL4RhWqclWZqtTIblRilhxBbXFORU2rc6SzZWXPVN9ctkwNrcw6iAHx1dI/tkr66SulbxT8CPDh5QxgGfhLpZcGfHAxA1gkv/u5eh9X7wXfA77bhP/NlYSfmQcf+IZJ4JtX3zy+Cd++ZmhT/Grwq1vA/w7+d/C/g/8d/O/dVOB/B/87+N87q8D//osK/O8djYq+d1BZ8KvbGTmqK1TllspUpUZ2o5LMCGqKcyrKCfjaTLas7NnVFcqWXX0rS42hfxz8GPgMoE8U/AhXHwY/lMH/PbAQfK7eB7x3HvhzTXy3wnfNAB945zTwgW/k6hX+L03wzSe/o4LvYLn6LPxq8KtN/HZW/O/gfwf/e2+jsu/N4H8D/xv437qowP8G/rdfVJ1UOfhGlSrwjSpU5aoyS6VG9u8lZtWpii0V5clhjkBlS2dvWm2hbE2ra2XJIfSLgx9bIX10rj4KfGQpA1givUJcvcbVB8EPgO8H3we+d4508wDvngX+TBPfZeJ3dqbwufoG4BsUfL159Xnxa3Lwq/Pgfwf/ewH8b+B/A/8b+N/A/9ZNVQj/1yb4xd+AN2qvqlS1M3J8q1CVWypTlRrZjUrMjCEU51SUJ4c5ApUtnT1/+YZRY8tfbSvrG18ufWLL5A8d+OgSBrBYeoUXSc8Q8NoCBjBfegSA989lAOB7wfeA755pwHd1cfVJeOcU8Ln6xjz49T+I/z0P/jfwvyXh8+HTV/C/gv+1qwr8r+B/Bd4I/K+dVB2Nir52UIH/tVLVzsjxtcJSuarMUqmR3agkM4JvxTkV5clhxhBsWdmbL2sYtsLVtKI+cfBj4OvgR8GPgB8GPwS+Bn4Q/MAcBjBbuvmA985kAFy9W+G7FL5T4Tcq/AYFX6/g+YnXUcF3sDz57S3wlQY8fc/B/wb+tzz4X8H/Cv7X7ioTvzSF/wX8L51V4H/5RQX+l45GRV86qNqrKlXtjBxfKlTllspUpUZ2oxJzAOmKcyrKyZGV7Zs1e8ulB2FrueZG8kcc+NhiBrBIekUXSs8I8OH5DGCe9NC4+iD4AfD9VnwTvosLeNdk8E34XxuT8OPz49e1Al/Bp/G/5cH/miwP/hfwv4D/JQnfEr4awGfgjdqrKlXtjByfKyyVq8oslRrZjUrMERgV51SUJ0dWtmRfU9lb3zdb68s3jj/i4MfA18GPgh8BP6zwNfCDs8AH3jeDAXD1HvDdOfhOhd+Yg1//I/hJ+Bz8r+Cn4RX+F/C/dFdZ8D8nA/9zZxX4n4H/lKyTqqNR0SfwP7VXVaraGTmMKlTlqjJLpUZ2o5KcinMqyu5zMkdWNmtf7G3IZva1jaVG0Tu+UHrFFkhPHfjoPAYwV3qEgddmE/gB8P3g+8D3gu8B353En0TAOycQ8I3jwAe+YQz4wNeb8B3rTPgOtcNaid83g/81g1+ewv9i4pel8D+D/xn8JPynZOB/6qwC36gA/sdk7VWVqnZGjo8VqnJLZZZKjexGJZaK81TUtE+OrGzp7K3rcypb0760oV5x8GPzGQD4UfAj4IcUfhD8wHQGME26+oD3TgGfq3crfJcFv7EAfp3CrzXh2xs/8fLgW66+Cf6XJHwO/meF/wn8T3nwPwJvBP7HTqqORia8Bf9DpaqdkeNDhaVyVZmlUiO7UUlOxTkV5cmR6SPoWdnbGIiffrDkWHrGwY+Br4MfBT4yiwHMlG4aVx8EPwC+H3wf+J48+E4LfoPCr28O34QviG/A5+L/bvYZ/CT8p2Q5+B+7qEz8kjS+GsCHjirgjdqrcvDfJ6tQlVsqs1RqZDcqyak4p6I8ObKypfqQzN7GbE372IZ6xufK77E50kMHPwp+GPwQ+Br4QfAD4PvB94LvmcgAgHeNJ+CdY8EHvnE0+MA3jGwVfuonXrP4Xyz4nxX+pxz8j0n4HPwPvxoVf/hFlYP/Pll7VaWldkZp/HfllsoslRrZjUpyKs6pqECOrGxZ2TO9b022lvvQTL/HwY/NZgDgR8EPgx8CXwM/OIUBTOb6uXov+B7w3QrfBb5T4Tem8EcQ8HXDaKiJX6vwa3Lx++XB750f/1MKv5vZxxz8D8ny4L/vpAL/fQ7+u2SVqnZGjncVlhT+2zJLpensRiWWivNUlCdHVrYm2Qv3Ll+2Hys1jh5x8GPg6+BHpzOAaQxgqnTVwA+C7wffB743D77Tgt+Qiw987eBm8NWXva8W/C8WfAM+B/9jBr/0Q1cFb8F/D/77X1QW/Hd87r/roLLgv03WzsjxtsJSuSXg36QqNbIbleRUnFNRgRxZ2bKy/0A2s7c/WI/4TOkemyHddPAj4IfBD4GvgR8A3w++D3wP+G6F77LgN1rw63PxB6XxK1vE75WD3yOD/9GC/yEH/31nAz4L/10nVUcV8G+TtVdl4xe9YQBvKlTllpriO16Db1Riqbhpr4oK5MjKlpW9cK8LZWu5N83UPT6DAYCvgx8BPwx+CHxtEgMA3w++F3wP8O4x4APvGsUARmbwGyz4dQq/NolvwjfF75Mf/3MO/kcL/gcL/vsuKgv+u19UCv9tR5UF/02ySlW7dAb861TlZq/Kcio1shuV5FSc3ctkRXlyZGVrkr2N2bJ79QN1j4MfA1+fygDADyv8IPgB4P3jGAD4HvDdFnwn8I3DwR9m4tfnwa9J4vc3/gkdA/975vO+IufLnoH/KQ/+Bwv++xz8d78apfHfdlJZ8N90UPAK/3WqdkaOVxWWyi0p+JfJSo3sRiU5FWf3IllRgRxZ2bKy/0C2H8s6mm5x8GPg6+BHwA+Dr02QzsHxDAB8H/heC77Lgt8IfMPQDH5dK/C/tYD/sRX473Lw31rw33RUWfBftzfRX6VqZ5SGf5ms3FKZJfBfmNmNSnIqzu55sqI8OZpky8r+A9l+vm5x8GPg65MZAPgh8DXwg+AHxjIA8L2jGYCJ38kFvtOKD3z94Ax+rcKvSeL3y4Pfuxn87k3x31vw31nw3/6q4BX+mxz81x1M+FftLfD0sp2RiW7Bf5GqzJIF/3mykpyKm/asqECOrGxNsv9Atp/vtzj4MfCjE6VLBPwQ+Br4QfD94PvA94DvVvgu8J3gN4LfkMIfZNQEv7pvC/i/N8VPX70FPw3f2YA3U/hvLPivkwH/qoOCV72sVJn4RS8YwIsKlQX/eVlOpUYG/rOSPBVn97SoQKA/yc6Wlf0Hs/18v8XB17n86AQGAH4IfA38IPh+8L3ge8B358FvAL/egl+bB//7D+C/z4P/Ngf/jQU/Cf8qmQX/ZSqF/6JdujT+82TllkB/lqo0nf2ZGsBTa4A/ya0of48dWdmaZG97j5LZfr6u8UkMAPwo+JFxDAB8DfwA+H7wveB7FL4LfCf4jUMYgMKvB77Ogl+Twu+Tg9+rbfjvCuC/seC/7qTgTfzilx0s8PSiUqXwn7dT6Kpn5ZYs+E9L09mfJCvJSYE/tlaUv0eOJtmaZM/fw+aytb0Heeoa5+nXwY+CHwE/NIYBgB8A3w++F3y3wneB7wS/EfyGHPxaC361Bf/bT+C/teC/seAb8Bb8lxb8F6kU/vN26Uz0VBb8p2VmT5KVpjPwH5fkSaE/slaUv4eOrGzJHlizt637qWx/T13iE9QAwA+DHwJfG8UAwPeNYADgu4cxgBz8BuDrga+z4NdY8L9b8L/+BP4bC/7rXxS8wn9pwX9hwX9eqVL4z9pZ4OlpudmTcoVu6XFpOvtjNYBH1izoD1MVmT3IzdEk2/3c7M13r1C27O7+YF3i4OtcfxT8MPgh8IPgB8D3ge8B3w2+C3wn+I0mfvsUfh34tRb86gx+hRX/S/Zv/Dbhv87Bf2nBf5HEVwN4bsF/VmnAmyXR6UmFQrfgP7YG/CMzu5FCf5gK7Ae5WcDv5+bI7h7gWQF5t43dSWX7e+oSB1/n+o0BgK+BHwTfD74PfI/Cd4HvBL8R/IYB6vot+DU5+N9y8D9n45dZ8d8p/LcK/00O/qs8+C8s+M8t+M8s+E+TpeAV/mNrCv5RWRrewH9YaoI/yA3w+7lZwO9Zuutoks3aHYcFs4Vu58tmdusn6xwHXwc/yvUbAwA/CL4ffC/4HhO/gwt8J/iNwBsD6M8AwK818c3rB/+7Bf+riV+ehd8tD34XKW0J/6XCf2HBf67wn7XPwD+tNOGfJFPwj1Mp+EflCl0FuNED4I0U+H1rFvR7qZLQBQI4N1uq26ksoLda2c1kth/vRk6d4+Dr4EfBD3P9xgDA9w9lAOC7W8Cv7aOu34L/LQ/+pzz47wvgv6ZXzeA/z4P/VPWkXboMfIVCt+A/VD0oM+CN7oNvZIG/V2Ji381XEjpfgN+2dAvsJllBW9ENawrv+k90TfVrfDQDAD8Kfhh8jetXA+igBtBeDaDSGAD49eDX5eBXg/89B//LT+K/VPgv8uA/U/hpeAv+Ywv+Iwv+w3ILuup+aToD/55Cv5vKAn7HmsK+rbplzZHpJth5y0Wl663omj2D15quttCvcfD1kQwA/PBwBgB+AHwf+F7w3eC7uH4n+I3gN4BfD35dH2MAFTU5+N/A/6rwP1vwP7YevyQf/nMTv/hZDv4TC/5jhf+oItNDBf+g3IKeSuHfA/5uqQWd7qSyoN9W3Spq2s1UjuxugJ3qeqpCsM10NZUF70obulwgcwDgR8APga/x9AfA9/H0exS+C3yniV+ZD7+6lxpAHvxP/wL8p+0t8JVp+KJHyVLwFRb48hz4MgPdcdcsjX8npzR4blZw1Y0iA9voeiabtWupCuGqrjRXHsRLbehiTr/ER6YH0DEEvgZ+AHwf+B4LfiP4DX0t1w9+TR78rz3Mf+Wugd89g/8h81Ov9F0L+C8U/vOOaXgD/2kO/uNKC7zCT8I/qMjA3y+3oKvuZvAdd0ot4KpbJdngN61Zwem6NQV/LVMa/WqqFoAvW7qUr2YwL7Sh86pf4uDrXH9kmGUAgxgA+J4BDAB8Zz9jAO2MAYBfB34t+DW9jAGUfwf/2++W6+9uefpbif8yH37HbPwn7S3wOfhp+AoLvMpAT2Wip7LfLrWgW/Bv5nSjOA84XUtlgb9qZruSpxaBVRctXbDWDGZz/ZWnKmMA4OvgR8APgR/k+v1cv5cBuLl+NYB2jbn4vbPxv6Wuv7vl6c/+Z/XMp/9n8Ntn8NPw9MCCnwVfboEvy4J3JOFvlWbQb1pLgdP1VLngqqsqcHOzXVZdStVaZEvnrbWAWtWK/sypkzEA8CNDGAD4QfD94HvBd4Pv4vqd4DeAXw9+XW/L9YP/PQf/cw7+hxz8t23Af9rBAq/wHxXAv1+RA2/Bv6O6bcI7blnwrfA3SnLQ6VqqXHBrgF9WXTKzWbuYqjXIlv6yVGVvPeq5FjprqVN8WHoAHYwBgO/n6feC7wbfBX4j+A1/WAYAfg346QGA/7W7un6F/zEXv0vr8J+1At+AV/j3LaXhyzPoBnyZgZ7KfrM0B52ul+RBVzUBp8uqS47sLlrAL1hrBXRVgf5M1QbYZGdyOp2nTnHwda4/An6I61cDqPRYrl8NoKI+P37m+rsZA8jCf9/F8rmf/YWvJI3fqQl+cSvwi9LwFRl4K74Bb8G/aZaGv24pC1x1pbgp+iVrJrjRhUwG+HlrhS66APS5fP0AbqpTOZ20ZA4A/Ahf/DTwg1y/D3yPun4n+I3J6we/rpcxgHJjAOB/72G5/m6W6++qBtCl6Ze+tuI/UvgPKxU83W9n4hvwFvw75TnwZVnwjhvgJ8uCT2VFV13Og35RdaEoC91+3iyN/pelghddAPus6oyl1uCebKYTOR1XdYwPSQ+gfXIAAfB94HvAd4HvBL+ht3n9xgDAr8mDb1x/U/yCn/vN4T9uI/4dVRZ8WRa843oSvjQHna6WZMNfVl0qLoBuwT9v6S8zW1VOzWGfzYN9Ok+tQc6Hm69jOXWMg69z/WHwtQF5B1BhDAD8OoWvrr/sW3fL9Vs+9z90UQNoBf7zVuLfV6XhKzLwufg3y7Lg0/i58FdKsuEvWcqHfj5VNrq9yswEV51L1VZs1UlrbUC24h7N6UiesgcAfgB8H/hu8F1cfyP4DeDX98xcfzXX/727GkDy+n+zXH8e/Dd5vvQ1we/QFP9BK/Bv061yC3xZFryBf63Ucu0p+JKca0/BFxdAp79UVY7sssBVZx0/iK06oTpubz3ykQIdtnQop45x8HXwwwMyA/BmBlCRGkDy+mvBr+lhuX7wv/xmDCD99BsDsPwrePN97reE/7AZ/DsVGfi8+GUZ/GtmTeFLsuEvpuCLm0FPZYIbncuURj+j+mHsnFoL3RxyqoOWDqg6pAfQnwGAH+jLAMB3c/1O8BvN6y+v+90cQPr6u6UHkPzf0W96/Zl/Tj/7S19T/OKW8IEvysW/pcqCL8uCd1wtbQp/qSTn2i2dL86Gr7L0Z1ETdPtZswy6pULgzWKrjqqO2NsOnQ852f4CdYgPZAADjAFUJgfg5/q94LvAd4Lf2DMzgOT1V4OfGoBx/V3VALpYrj/zr+BN47/M81v/ieVzPx/+vVbgp+HLMvAp/CbwqrzwxXmuXcGfS5VBtwNuP52LrmoNeF7snA7b2wZdCHmfpb2W9qgBtI9y/WHwNa7f3yd7AA3g1yevv4cxgLLq1PX/Zrn+LvmffuP6O2U//Xnx27eMf7vCAt8MPvCOK0n80jzwJU3RDfjiZtDpbFEWujUTPKd86C2BH1YdspaD3dJFF0LO125Vh/gAYwCVagDt/OB7wHeB7+T6G35Xz39yAMnr75YeQPL/KldmAJ0LX39z3/gftbd84au04LdrHf61six4A/9yDr4BX1IAvrh5+DNFTeFBt2eBq447mqK3CZwOqg7YC2Pnu+jmkJPtsrTTUodYcgDgh7n+YJ/sAfD8lxsDAL+2u3n9xgCS19/V+L/MVfDpV9ef/fRn8ItbgV+UDz/r6pviO5L4TeBLCsAXq8/23GtX8KeLmqCnykZXNXflrQKn/al+EDsf9I4Cbaf2sf7mAEJqAL7eDAB8F9ffCH59D3MAyeuvBv/7b5br75K+fuN/T/+d+b+2ZV5/HvxnzXzps+LfycG/mcIvz8a/WpYF77hU2hTeip8Fr2py7Sl4OlXUBN7eBF111NE69ILgqn2qtmDvbAF7u6Vtqq2qzADAD/5hDKDCbQ6gPDWA5PXXdDMHkLz+r10tA8jz9L9Ofe7n/LN7hb70tQX/Whvwz6vywhdnw5/OgT9ZlIVuP54pG52OOLLRm7vyguCqPfafu+xcaCv2ljy1j4Ef7WsZAPhurt8JfmOP7AEkr/+bwv+s8Ft7/blP/8NWPPst4St4Az8vfEkB+OIW4IvywtuboKsKoee78rzglnbb8193a7C3toC9WbXJUmYA4Ae5fusAGpLPP/i13SzPf3IAXTLX/yEH/3Whpz/P5376d34ufkUG/3oO/pV8+KUt46fhi5uHP1GUDX9M1QRddcjxc+i7VbtUhcCbe8Zbi71RtcFS+xj4Ua4/OYAAA/AmBwC+s0fOANT1pwfQ2RhA9vV3Utdv+RdzNvnWn/Ol767l6W8rPvCOC6V54EsKwNPp4mbg6XhRBv6o6ohZNrqqNeh7WkKnHal+4Lpbi51qvaXKrAGA7+X6XakBgF8Hfs1vlgF0ST//qf/TbCXvLNf/Kv/T3+LnfnP4V/9m/ILwRRn4I5aaoKvaim4Fz0JXWdHbct2twV5naa1qjU3+HwuefjlXE4+yAAAAAElFTkSuQmCC",epe=0,oN=(n,e,t,i)=>{if(!n[t]){let r=n.useDelayedTextureLoading;n.useDelayedTextureLoading=!1;let s=n._blockEntityCollection;n._blockEntityCollection=!1;let a=_e.CreateFromBase64String(e,i+epe++,n,!0,!1,_e.BILINEAR_SAMPLINGMODE);n._blockEntityCollection=s;let o=n.getEngine().getLoadedTexturesCache(),l=o.indexOf(a.getInternalTexture());l!==-1&&o.splice(l,1),a.isRGBD=!0,a.wrapU=_e.CLAMP_ADDRESSMODE,a.wrapV=_e.CLAMP_ADDRESSMODE,n[t]=a,n.useDelayedTextureLoading=r,zm.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),zm.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},Yb=n=>oN(n,Qme,"environmentBRDFTexture","EnvironmentBRDFTexture"),lN=n=>oN(n,$me,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),v6=n=>oN(n,Jme,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function E6(n){return class extends n{constructor(){super(...arguments),this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1}}}var S6=I(()=>{});var cN=I(()=>{Ws();Lt();vs();bt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};bt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};bt.prototype.buildTextureLayout=function(n,e=!1){let t=this._gl,i=[];if(e)i.push(t.BACK);else for(let r=0;r1&&(e.depthTextureFormat===13||e.depthTextureFormat===17||e.depthTextureFormat===16||e.depthTextureFormat===14||e.depthTextureFormat===18)&&(o=e.depthTextureFormat)),o===void 0&&(o=s?13:14);let C=this._gl,D=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let G=(z=n.width)!=null?z:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);y.label=(de=e==null?void 0:e.label)!=null?de:"MultiRenderTargetWrapper",y._framebuffer=w,y._generateDepthBuffer=a||r,y._generateStencilBuffer=a?V:s,y._depthStencilBuffer=this._setupFramebufferDepthAttachments(y._generateStencilBuffer,y._generateDepthBuffer,G,O,1,o),y._attachments=B;for(let oe=0;oe1||this.isWebGPU);let ut=this.webGLVersion>1,Ye=C[ut?"COLOR_ATTACHMENT"+oe:"COLOR_ATTACHMENT"+oe+"_WEBGL"];if(B.push(Ye),me===-1||M)continue;let je=new Vi(this,6);N[oe]=je,C.activeTexture(C["TEXTURE"+oe]),C.bindTexture(me,je._hardwareTexture.underlyingResource),C.texParameteri(me,C.TEXTURE_MAG_FILTER,De.mag),C.texParameteri(me,C.TEXTURE_MIN_FILTER,De.min),C.texParameteri(me,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(me,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Qt=this._getRGBABufferInternalSizedFormat(ie,Pe,ue),Pt=this._getInternalFormat(Pe),Ti=this._getWebGLTextureType(ie);if(ut&&(me===35866||me===32879))me===35866?je.is2DArray=!0:je.is3D=!0,je.baseDepth=je.depth=be,C.texImage3D(me,0,Qt,G,O,be,0,Pt,Ti,null);else if(me===34067){for(let se=0;se<6;se++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+se,0,Qt,G,O,0,Pt,Ti,null);je.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Qt,G,O,0,Pt,Ti,null);i&&C.generateMipmap(me),this._bindTextureDirectly(me,null),je.baseWidth=G,je.baseHeight=O,je.width=G,je.height=O,je.isReady=!0,je.samples=1,je.generateMipMaps=i,je.samplingMode=ve,je.type=ie,je._useSRGBBuffer=ue,je.format=Pe,je.label=(Ue=R[oe])!=null?Ue:y.label+"-Texture"+oe,this._internalTexturesCache.push(je)}if(a&&this._caps.depthTextureExtension&&!M){let oe=new Vi(this,14),ve=5,ie=C.DEPTH_COMPONENT16,ue=C.DEPTH_COMPONENT,Pe=C.UNSIGNED_SHORT,me=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ie=C.DEPTH_COMPONENT:o===14?(ve=1,Pe=C.FLOAT,ie=C.DEPTH_COMPONENT32F):o===18?(ve=0,Pe=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ie=C.DEPTH32F_STENCIL8,ue=C.DEPTH_STENCIL,me=C.DEPTH_STENCIL_ATTACHMENT):o===16?(ve=0,Pe=C.UNSIGNED_INT,ie=C.DEPTH_COMPONENT24,me=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(ve=12,Pe=C.UNSIGNED_INT_24_8,ie=C.DEPTH24_STENCIL8,ue=C.DEPTH_STENCIL,me=C.DEPTH_STENCIL_ATTACHMENT),this._bindTextureDirectly(C.TEXTURE_2D,oe,!0),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),C.texImage2D(C.TEXTURE_2D,0,ie,G,O,0,ue,Pe,null),C.framebufferTexture2D(C.FRAMEBUFFER,me,C.TEXTURE_2D,oe._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),y._depthStencilTexture=oe,y._depthStencilTextureWithStencil=V,oe.baseWidth=G,oe.baseHeight=O,oe.width=G,oe.height=O,oe.isReady=!0,oe.samples=1,oe.generateMipMaps=i,oe.samplingMode=1,oe.format=o,oe.type=ve,oe.label=y.label+"-DepthStencil",N[l]=oe,this._internalTexturesCache.push(oe)}if(y.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(D),y.setLayerAndFaceIndices(E,S),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(y,c,t);else if(c>1){let oe=C.createFramebuffer();if(!oe)throw new Error("Unable to create multi sampled framebuffer");y._samples=c,y._MSAAFramebuffer=oe,l>0&&t&&(this._bindUnboundFramebuffer(oe),C.drawBuffers(B),this._bindUnboundFramebuffer(D))}return y};bt.prototype.updateMultipleRenderTargetTextureSampleCount=function(n,e,t=!0){if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let i=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(i.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(i.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let r=n._attachments.length;for(let a=0;a1&&typeof i.renderbufferStorageMultisample=="function"){let a=i.createFramebuffer();if(!a)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=a,this._bindUnboundFramebuffer(a);let o=[];for(let l=0;l1?"COLOR_ATTACHMENT"+l:"COLOR_ATTACHMENT"+l+"_WEBGL"],h=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!h)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(h),c.samples=e,o.push(d)}t&&i.drawBuffers(o)}else this._bindUnboundFramebuffer(n._framebuffer);let s=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,s),this._bindUnboundFramebuffer(null),n._samples=e,e};bt.prototype.generateMipMapsMultiFramebuffer=function(n){let e=n,t=this._gl;if(e.isMulti)for(let i=0;i1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"],t.readBuffer(r[a]),t.drawBuffers(r),t.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i,t.NEAREST)}for(let a=0;a1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"];t.drawBuffers(r),t.bindFramebuffer(this._gl.FRAMEBUFFER,e._MSAAFramebuffer)}});var jb,T6=I(()=>{Xr();wf();cN();jb=class extends Yr{get isSupported(){var e,t;return(t=(e=this._engine)==null?void 0:e.getCaps().drawBuffersExtension)!=null?t:!1}get textures(){return this._textures}get count(){return this._count}get depthTexture(){return this._textures[this._textures.length-1]}set wrapU(e){if(this._textures)for(let t=0;t0&&(this._createInternalTextures(),this._createTextures(a))}_initTypes(e,t,i,r,s,a,o,l,c,f){for(let d=0;d{this.onAfterRenderObservable.notifyObservers(t)})}dispose(e=!1){this._releaseTextures(),e?this._texture=null:this.releaseInternalTextures(),super.dispose()}releaseInternalTextures(){var t,i;let e=(t=this._renderTarget)==null?void 0:t.textures;if(e){for(let r=e.length-1;r>=0;r--)this._textures[r]._texture=null;(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null}}}});var A6,tpe,x6=I(()=>{k();A6="mrtFragmentDeclaration",tpe=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) +#define VIEW_DEPTH`:""));r.textureWidth=t,r.textureHeight=i,this.reductionSteps.push(r);let s=1;for(;t>1||i>1;){t=Math.max(Math.round(t/2),1),i=Math.max(Math.round(i/2),1);let a=new dd("Reduction phase "+s,e.getEngine(),"#define "+(t==1&&i==1?"LAST":t==1||i==1?"ONEBEFORELAST":"MAIN"));a.textureWidth=t,a.textureHeight=i,this.reductionSteps.push(a),s++}}}});var Db,C8=I(()=>{hc();xx();y8();BO();wO();Db=class{get onAfterReductionPerformed(){return this._thinMinMaxReducer.onAfterReductionPerformed}constructor(e){this._onAfterUnbindObserver=null,this._forceFullscreenViewport=!0,this._activated=!1,this._camera=e,this._postProcessManager=new dc(e.getScene()),this._thinMinMaxReducer=new Pb(e.getScene()),this._reductionSteps=[],this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{this._postProcessManager._rebuild()})}get sourceTexture(){return this._sourceTexture}setSourceTexture(e,t,i=2,r=!0){if(e!==this._sourceTexture&&(this._thinMinMaxReducer.depthRedux=t,this.deactivate(),this._sourceTexture=e,this._forceFullscreenViewport=r,this._thinMinMaxReducer.setTextureDimensions(e.getRenderWidth(),e.getRenderHeight()))){this._disposePostProcesses();let s=this._thinMinMaxReducer.reductionSteps;for(let a=0;a{c.setTexture("textureSampler",this._sourceTexture)})),a===s.length-1&&this._reductionSteps[a-1].onAfterRenderObservable.add(()=>{this._thinMinMaxReducer.readMinMax(l.inputTexture.texture)})}}}get refreshRate(){return this._sourceTexture?this._sourceTexture.refreshRate:-1}set refreshRate(e){this._sourceTexture&&(this._sourceTexture.refreshRate=e)}get activated(){return this._activated}activate(){this._onAfterUnbindObserver||!this._sourceTexture||(this._onAfterUnbindObserver=this._sourceTexture.onAfterUnbindObservable.add(()=>{var t,i;let e=this._camera.getScene().getEngine();(t=e._debugPushGroup)==null||t.call(e,"min max reduction"),this._reductionSteps[0].activate(this._camera),this._postProcessManager.directRender(this._reductionSteps,this._reductionSteps[0].inputTexture,this._forceFullscreenViewport,0,0,!0,this._reductionSteps.length-1),e.unBindFramebuffer(this._reductionSteps[this._reductionSteps.length-1].inputTexture,!1),(i=e._debugPopGroup)==null||i.call(e)}),this._activated=!0)}deactivate(){!this._onAfterUnbindObserver||!this._sourceTexture||(this._sourceTexture.onAfterUnbindObservable.remove(this._onAfterUnbindObserver),this._onAfterUnbindObserver=null,this._activated=!1)}dispose(e=!0){e&&(this.onAfterReductionPerformed.clear(),this._camera.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=void 0,this._disposePostProcesses(),this._postProcessManager.dispose(),this._postProcessManager=void 0,this._thinMinMaxReducer.dispose(),this._thinMinMaxReducer=void 0,this._sourceTexture=null)}_disposePostProcesses(){for(let e=0;e{A8();C8();Lb=class extends Db{get depthRenderer(){return this._depthRenderer}constructor(e){super(e)}setDepthRenderer(e=null,t=2,i=!0){let r=this._camera.getScene();this._depthRenderer&&(delete r._depthRenderer[this._depthRendererId],this._depthRenderer.dispose(),this._depthRenderer=null),e===null&&(r._depthRenderer||(r._depthRenderer={}),this._depthRendererId="minmax_"+this._camera.uniqueId,e=this._depthRenderer=new Lp(r,t,this._camera,!1,1,!1,`DepthRenderer ${this._depthRendererId}`),e.enabled=!1,r._depthRenderer[this._depthRendererId]=e),super.setSourceTexture(e.getDepthMap(),!0,t,i)}setSourceTexture(e,t,i=2,r=!0){super.setSourceTexture(e,t,i,r)}activate(){this._depthRenderer&&(this._depthRenderer.enabled=!0),super.activate()}deactivate(){super.deactivate(),this._depthRenderer&&(this._depthRenderer.enabled=!1)}dispose(e=!0){super.dispose(e),this._depthRenderer&&e&&(this._depthRenderer.dispose(),this._depthRenderer=null)}}});var D8,Mme,Or,Op,Ob,Go,L8=I(()=>{ke();wf();Sn();Cb();qm();P8();Lt();Gi();Qg();D8=b.Up(),Mme=b.Zero(),Or=new b,Op=new b,Ob=new Z,Go=class n extends Bi{_validateFilter(e){return e===Bi.FILTER_NONE||e===Bi.FILTER_PCF||e===Bi.FILTER_PCSS?e:(ee.Error('Unsupported filter "'+e+'"!'),Bi.FILTER_NONE)}get numCascades(){return this._numCascades}set numCascades(e){e=Math.min(Math.max(e,n.MIN_CASCADES_COUNT),n.MAX_CASCADES_COUNT),e!==this._numCascades&&(this._numCascades=e,this.recreateShadowMap(),this._recreateSceneUBOs())}get freezeShadowCastersBoundingInfo(){return this._freezeShadowCastersBoundingInfo}set freezeShadowCastersBoundingInfo(e){this._freezeShadowCastersBoundingInfoObservable&&e&&(this._scene.onBeforeRenderObservable.remove(this._freezeShadowCastersBoundingInfoObservable),this._freezeShadowCastersBoundingInfoObservable=null),!this._freezeShadowCastersBoundingInfoObservable&&!e&&(this._freezeShadowCastersBoundingInfoObservable=this._scene.onBeforeRenderObservable.add(()=>this._computeShadowCastersBoundingInfo())),this._freezeShadowCastersBoundingInfo=e,e&&this._computeShadowCastersBoundingInfo()}_computeShadowCastersBoundingInfo(){if(this._scbiMin.copyFromFloats(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),this._scbiMax.copyFromFloats(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),this._shadowMap&&this._shadowMap.renderList){let e=this._shadowMap.renderList;for(let t=0;tt&&(e=0,t=1),e<0&&(e=0),t>1&&(t=1),this._minDistance=e,this._maxDistance=t,this._breaksAreDirty=!0)}get minDistance(){return this._minDistance}get maxDistance(){return this._maxDistance}getClassName(){return n.CLASSNAME}getCascadeMinExtents(e){return e>=0&&e=0&&et.maxZ&&t.maxZ!==0||(this._shadowMaxZ=e,this._light._markMeshesAsLightDirty(),this._breaksAreDirty=!0)}get debug(){return this._debug}set debug(e){this._debug=e,this._light._markMeshesAsLightDirty()}get depthClamp(){return this._depthClamp}set depthClamp(e){this._depthClamp=e}get cascadeBlendPercentage(){return this._cascadeBlendPercentage}set cascadeBlendPercentage(e){this._cascadeBlendPercentage=e,this._light._markMeshesAsLightDirty()}get lambda(){return this._lambda}set lambda(e){let t=Math.min(Math.max(e,0),1);this._lambda!=t&&(this._lambda=t,this._breaksAreDirty=!0)}getCascadeViewMatrix(e){return e>=0&&e=0&&e=0&&e{let r=i.min,s=i.max;r>=s&&(r=0,s=1),(r!=this._minDistance||s!=this._maxDistance)&&this.setMinMaxDistance(r,s)}),this._depthReducer.setDepthRenderer(this._depthRenderer)),this._depthReducer.activate()}}get autoCalcDepthBoundsRefreshRate(){var e,t,i;return(i=(t=(e=this._depthReducer)==null?void 0:e.depthRenderer)==null?void 0:t.getDepthMap().refreshRate)!=null?i:-1}set autoCalcDepthBoundsRefreshRate(e){var t;(t=this._depthReducer)!=null&&t.depthRenderer&&(this._depthReducer.depthRenderer.getDepthMap().refreshRate=e)}splitFrustum(){this._breaksAreDirty=!0}_splitFrustum(){let e=this._getCamera();if(!e)return;let t=e.minZ,i=e.maxZ||this._shadowMaxZ,r=i-t,s=this._minDistance,a=this._shadowMaxZ=t?Math.min((this._shadowMaxZ-t)/(i-t),this._maxDistance):this._maxDistance,o=t+s*r,l=t+a*r,c=l-o,f=l/o;for(let d=0;da||(!this._depthClamp||this.filter===Bi.FILTER_PCSS?(s=Math.min(s,l),this.filter!==Bi.FILTER_PCSS&&(a=Math.min(a,c))):(a=Math.min(a,c),s=Math.max(s,l),a=Math.max(s+1,a))),Z.OrthoOffCenterLHToRef(this._cascadeMinExtents[r].x,this._cascadeMaxExtents[r].x,this._cascadeMinExtents[r].y,this._cascadeMaxExtents[r].y,i?a:s,i?s:a,this._projectionMatrices[r],e.getEngine().isNDCHalfZRange),this._cascadeMinExtents[r].z=s,this._cascadeMaxExtents[r].z=a,this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),b.TransformCoordinatesToRef(Mme,this._transformMatrices[r],Or),Or.scaleInPlace(this._mapSize/2),Op.copyFromFloats(Math.round(Or.x),Math.round(Or.y),Math.round(Or.z)),Op.subtractInPlace(Or).scaleInPlace(2/this._mapSize),Z.TranslationToRef(Op.x,Op.y,0,Ob),this._projectionMatrices[r].multiplyToRef(Ob,this._projectionMatrices[r]),this._viewMatrices[r].multiplyToRef(this._projectionMatrices[r],this._transformMatrices[r]),this._transformMatrices[r].copyToArray(this._transformMatricesAsArray,r*16)}}_computeFrustumInWorldSpace(e){let t=this._getCamera();if(!t)return;let i=this._cascades[e].prevBreakDistance,r=this._cascades[e].breakDistance,s=this._scene.getEngine().isNDCHalfZRange;t.getViewMatrix();let a=t.maxZ===0,o=t.maxZ;a&&(t.maxZ=this._shadowMaxZ,t.getProjectionMatrix(!0));let l=Z.Invert(t.getTransformationMatrix());a&&(t.maxZ=o,t.getProjectionMatrix(!0));let c=this._scene.getEngine().useReverseDepthBuffer?4:0;for(let f=0;f{this._sceneUBOs&&this._scene.setSceneUniformBuffer(this._sceneUBOs[t]),this._currentLayer=t,this._filter===Bi.FILTER_PCF&&e.setColorWrite(!1),ka.eyeAtCamera=!1,this._scene.setTransformMatrix(this.getCascadeViewMatrix(t),this.getCascadeProjectionMatrix(t)),this._useUBO&&(this._scene.getSceneUniformBuffer().unbindEffect(),this._scene.finalizeSceneUbo())}),this._shadowMap.onBeforeBindObservable.add(()=>{var t;this._currentSceneUBO=this._scene.getSceneUniformBuffer(),e._enableGPUDebugMarkers&&((t=e._debugPushGroup)==null||t.call(e,`Cascaded shadow map generation for pass id ${e.currentRenderPassId}`)),this._breaksAreDirty&&this._splitFrustum(),this._computeMatrices()}),this._splitFrustum()}_bindCustomEffectForRenderSubMeshForShadowMap(e,t){t.setMatrix("viewProjection",this.getCascadeTransformMatrix(this._currentLayer))}_isReadyCustomDefines(e){e.push("#define SM_DEPTHCLAMP "+(this._depthClamp&&this._filter!==Bi.FILTER_PCSS?"1":"0"))}prepareDefines(e,t){super.prepareDefines(e,t);let i=this._scene,r=this._light;if(!i.shadowsEnabled||!r.shadowEnabled)return;e["SHADOWCSM"+t]=!0,e["SHADOWCSMDEBUG"+t]=this.debug,e["SHADOWCSMNUM_CASCADES"+t]=this.numCascades,e["SHADOWCSM_RIGHTHANDED"+t]=i.useRightHandedSystem;let s=this._getCamera();s&&this._shadowMaxZ<=(s.maxZ||this._shadowMaxZ)&&(e["SHADOWCSMUSESHADOWMAXZ"+t]=!0),this.cascadeBlendPercentage===0&&(e["SHADOWCSMNOBLEND"+t]=!0)}bindShadowLight(e,t){let i=this._light,r=this._scene;if(!r.shadowsEnabled||!i.shadowEnabled)return;let s=this._getCamera();if(!s)return;let a=this.getShadowMap();if(!a)return;let o=a.getSize().width,l=this._transformMatricesAsArray,c=r.floatingOriginMode?kG(this._scene.floatingOriginOffset,this._viewMatrices,this._projectionMatrices,this._numCascades,this._tempTransformMatricesAsArray):l;if(t.setMatrices("lightMatrix"+e,c),t.setArray("viewFrustumZ"+e,this._viewSpaceFrustumsZ),t.setFloat("cascadeBlendFactor"+e,this.cascadeBlendPercentage===0?1e4:1/this.cascadeBlendPercentage),t.setArray("frustumLengths"+e,this._frustumLengths),this._filter===Bi.FILTER_PCF)t.setDepthStencilTexture("shadowTexture"+e,a),i._uniformBuffer.updateFloat4("shadowsInfo",this.getDarkness(),o,1/o,this.frustumEdgeFalloff,e);else if(this._filter===Bi.FILTER_PCSS){for(let f=0;fnew n(r,s,void 0,a));return e.numCascades!==void 0&&(i.numCascades=e.numCascades),e.debug!==void 0&&(i.debug=e.debug),e.stabilizeCascades!==void 0&&(i.stabilizeCascades=e.stabilizeCascades),e.lambda!==void 0&&(i.lambda=e.lambda),e.cascadeBlendPercentage!==void 0&&(i.cascadeBlendPercentage=e.cascadeBlendPercentage),e.depthClamp!==void 0&&(i.depthClamp=e.depthClamp),e.autoCalcDepthBounds!==void 0&&(i.autoCalcDepthBounds=e.autoCalcDepthBounds),e.shadowMaxZ!==void 0&&(i.shadowMaxZ=e.shadowMaxZ),e.penumbraDarkness!==void 0&&(i.penumbraDarkness=e.penumbraDarkness),e.freezeShadowCastersBoundingInfo!==void 0&&(i.freezeShadowCastersBoundingInfo=e.freezeShadowCastersBoundingInfo),e.minDistance!==void 0&&e.maxDistance!==void 0&&i.setMinMaxDistance(e.minDistance,e.maxDistance),i}};Go._FrustumCornersNdcSpace=[new b(-1,1,-1),new b(1,1,-1),new b(1,-1,-1),new b(-1,-1,-1),new b(-1,1,1),new b(1,1,1),new b(1,-1,1),new b(-1,-1,1)];Go.CLASSNAME="CascadedShadowGenerator";Go.DEFAULT_CASCADES_COUNT=4;Go.MIN_CASCADES_COUNT=2;Go.MAX_CASCADES_COUNT=4;Go._SceneComponentInitialization=n=>{throw Qe("ShadowGeneratorSceneComponent")}});function Nb(n,e){Ime[n]=e}var Ime,UO=I(()=>{Ime={}});var VO,O8=I(()=>{Cb();L8();Wm();UO();Nb(it.NAME_SHADOWGENERATOR,(n,e)=>{if(n.shadowGenerators!==void 0&&n.shadowGenerators!==null)for(let t=0,i=n.shadowGenerators.length;t{let e=n._getComponent(it.NAME_SHADOWGENERATOR);e||(e=new VO(n),n._addComponent(e))}});async function N8(n,e){let t=e.method||"GET";return await new Promise((i,r)=>{let s=new wr;s.addEventListener("readystatechange",()=>{if(s.readyState==4)if(s.status==200){let a={};if(e.responseHeaders)for(let o of e.responseHeaders)a[o]=s.getResponseHeader(o)||"";i({response:s.response,headerValues:a})}else r(`Unable to fetch data from ${n}. Error code: ${s.status}`)}),s.open(t,n),s.send()})}var w8=I(()=>{_h()});function yme(n){return!!n.createPlugin}function Cme(n){return!!n.name}function wb(){return Dl[".babylon"]}function Pme(n){for(let e in Dl){let t=Dl[e];if(t.mimeType===n)return t}}function kO(n,e){let t=Dl[n];return t||(ee.Warn("Unable to find a plugin to load "+n+" files. Trying to use .babylon default plugin. To load from a specific filetype (eg. gltf) see: https://doc.babylonjs.com/features/featuresDeepDive/importers/loadingFileTypes"),e?wb():void 0)}function Dme(n){return!!Dl[n]}function Lme(n){for(let e in Dl){let t=Dl[e].plugin;if(t.canDirectLoad&&t.canDirectLoad(n))return Dl[e]}return wb()}function Ome(n){let e=n.indexOf("?");e!==-1&&(n=n.substring(0,e));let t=n.lastIndexOf(".");return n.substring(t,n.length).toLowerCase()}function Nme(n){return n.substring(0,5)==="data:"?n.substring(5):null}function WO(n,e,t){let r="Unable to load from "+(n.rawData?"binary data":n.url);return e?r+=`: ${e}`:t&&(r+=`: ${t}`),r}async function HO(n,e,t,i,r,s,a,o,l){var u;let c=Nme(n.url);if(n.rawData&&!a)throw"When using ArrayBufferView to load data the file extension must be provided.";let f=!c&&!a?Ome(n.url):"",d=a?kO(a,!0):c?Lme(n.url):kO(f,!1);if(!d&&f){if(n.url&&!n.url.startsWith("blob:")){let m=await N8(n.url,{method:"HEAD",responseHeaders:["Content-Type"]}),_=m.headerValues?m.headerValues["Content-Type"]:"";_&&(d=Pme(_))}d||(d=wb())}if(!d)throw new Error(`No plugin or fallback for ${a!=null?a:n.url}`);if(((u=l==null?void 0:l[d.plugin.name])==null?void 0:u.enabled)===!1)throw new Error(`The '${d.plugin.name}' plugin is disabled via the loader options passed to the loading operation.`);if(n.rawData&&!d.isBinary)throw"Loading from ArrayBufferView can not be used with plugins that don't support binary loading.";return(m=>{if(yme(d.plugin)){let p=d.plugin.createPlugin(l!=null?l:{});return p instanceof Promise?(p.then(m).catch(g=>{r("Error instantiating plugin.",g)}),null):(m(p),p)}else return m(d.plugin),d.plugin})(m=>{var A;if(!m)throw`The loader plugin corresponding to the '${a}' file type has not been found. If using es6, please import the plugin you wish to use before.`;if(B8.notifyObservers(m),c&&(m.canDirectLoad&&m.canDirectLoad(n.url)||!Cf(n.url))){if(m.directLoad){let R=m.directLoad(e,c);R instanceof Promise?R.then(M=>{t(m,M)}).catch(M=>{r("Error in directLoad of _loadData: "+M,M)}):t(m,R)}else t(m,c);return}let _=d.isBinary,p=(R,M)=>{if(e.isDisposed){r("Scene has been disposed");return}t(m,R,M)},g=null,v=!1;(A=m.onDisposeObservable)==null||A.add(()=>{v=!0,g&&(g.abort(),g=null),s()});let T=()=>{if(v)return;let R=(M,y)=>{r(M==null?void 0:M.statusText,y)};if(!m.loadFile&&n.rawData)throw"Plugin does not support loading ArrayBufferView.";g=m.loadFile?m.loadFile(e,n.rawData||n.file||n.url,n.rootUrl,p,i,_,R,o):e._loadFile(n.file||n.url,p,i,!0,_,R)},S=e.getEngine(),E=S.enableOfflineSupport;if(E){let R=!1;for(let M of e.disableOfflineSupportExceptionRules)if(M.test(n.url)){R=!0;break}E=!R}E&&Re.OfflineProviderFactory?e.offlineProvider=Re.OfflineProviderFactory(n.url,T,S.disableManifestCheck):T()})}function zO(n,e){let t,i,r=null,s=null;if(!e)t=n,i=pe.GetFilename(n),n=pe.GetFolderPath(n);else if(Cme(e))t=`file:${e.name}`,i=e.name,r=e;else if(ArrayBuffer.isView(e))t="",i=If(),s=e;else if(e.startsWith("data:"))t=e,i="";else if(n){let a=e;if(a.substring(0,1)==="/")return pe.Error("Wrong sceneFilename parameter"),null;t=n+a,i=a}else t=e,i=pe.GetFilename(e),n=pe.GetFolderPath(e);return{url:t,rootUrl:n,name:i,file:r,rawData:s}}function hd(n){if(typeof n.extensions=="string"){let e=n.extensions;Dl[e.toLowerCase()]={plugin:n,isBinary:!1}}else{let e=n.extensions,t=Object.keys(e);for(let i of t)Dl[i.toLowerCase()]={plugin:n,isBinary:e[i].isBinary,mimeType:e[i].mimeType}}}async function wv(n,e,t){let{meshNames:i,rootUrl:r="",onProgress:s,pluginExtension:a,name:o,pluginOptions:l}=t!=null?t:{};return await V8(i,r,n,e,s,a,o,l)}async function U8(n,e,t="",i=Oe.LastCreatedScene,r=null,s=null,a=null,o=null,l="",c={}){if(!i)return ee.Error("No scene available to import mesh to"),null;let f=zO(e,t);if(!f)return null;let d={};i.addPendingData(d);let h=()=>{i.removePendingData(d)},u=(p,g)=>{let v=WO(f,p,g);a?a(i,v,new Xs(v,wa.SceneLoaderError,g)):ee.Error(v),h()},m=s?p=>{try{s(p)}catch(g){u("Error in onProgress callback: "+g,g)}}:void 0,_=(p,g,v,T,S,E,A,R)=>{if(i.importedMeshesFiles.push(f.url),r)try{r(p,g,v,T,S,E,A,R)}catch(M){u("Error in onSuccess callback: "+M,M)}i.removePendingData(d)};return await HO(f,i,(p,g,v)=>{if(p.rewriteRootURL&&(f.rootUrl=p.rewriteRootURL(f.rootUrl,v)),p.importMesh){let T=p,S=[],E=[],A=[];if(!T.importMesh(n,i,g,f.rootUrl,S,E,A,u))return;i.loadingPluginName=p.name,_(S,E,A,[],[],[],[],[])}else p.importMeshAsync(n,i,g,f.rootUrl,m,f.name).then(S=>{i.loadingPluginName=p.name,_(S.meshes,S.particleSystems,S.skeletons,S.animationGroups,S.transformNodes,S.geometries,S.lights,S.spriteManagers)}).catch(S=>{u(S.message,S)})},m,u,h,o,l,c)}async function V8(n,e,t,i,r,s,a,o){return await new Promise((l,c)=>{try{U8(n,e,t,i,(f,d,h,u,m,_,p,g)=>{l({meshes:f,particleSystems:d,skeletons:h,animationGroups:u,transformNodes:m,geometries:_,lights:p,spriteManagers:g})},r,(f,d,h)=>{c(h||new Error(d))},s,a,o).catch(c)}catch(f){c(f)}})}async function G8(n,e="",t=Oe.LastCreatedEngine,i=null,r=null,s=null,a=null,o="",l={}){if(!t){pe.Error("No engine available");return}await XO(n,e,new ti(t),i,r,s,a,o,l)}async function wme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{G8(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a)})}async function XO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to append to"),null;let c=zO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)};Jr.ShowLoadingScreen&&!GO&&(GO=!0,t.getEngine().displayLoadingUI(),t.executeWhenReady(()=>{t.getEngine().hideLoadingUI(),GO=!1}));let h=(_,p)=>{let g=WO(c,_,p);s?s(t,g,new Xs(g,wa.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=()=>{if(i)try{i(t)}catch(_){h("Error in onSuccess callback",_)}t.removePendingData(f)};return await HO(c,t,(_,p)=>{if(_.load){if(!_.load(t,p,c.rootUrl,h))return;t.loadingPluginName=_.name,m()}else _.loadAsync(t,p,c.rootUrl,u,c.name).then(()=>{t.loadingPluginName=_.name,m()}).catch(v=>{h(v.message,v)})},u,h,d,a,o,l)}async function Fme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{XO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function YO(n,e="",t=Oe.LastCreatedScene,i=null,r=null,s=null,a=null,o="",l={}){if(!t)return ee.Error("No scene available to load asset container to"),null;let c=zO(n,e);if(!c)return null;let f={};t.addPendingData(f);let d=()=>{t.removePendingData(f)},h=(_,p)=>{let g=WO(c,_,p);s?s(t,g,new Xs(g,wa.SceneLoaderError,p)):ee.Error(g),d()},u=r?_=>{try{r(_)}catch(p){h("Error in onProgress callback",p)}}:void 0,m=_=>{if(i)try{i(_)}catch(p){h("Error in onSuccess callback",p)}t.removePendingData(f)};return await HO(c,t,(_,p)=>{if(_.loadAssetContainer){let v=_.loadAssetContainer(t,p,c.rootUrl,h);if(!v)return;v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}else _.loadAssetContainerAsync?_.loadAssetContainerAsync(t,p,c.rootUrl,u,c.name).then(v=>{v.populateRootNodes(),t.loadingPluginName=_.name,m(v)}).catch(v=>{h(v.message,v)}):h("LoadAssetContainer is not supported by this plugin. Plugin did not provide a loadAssetContainer or loadAssetContainerAsync method.")},u,h,d,a,o,l)}async function Bme(n,e,t,i,r,s,a){return await new Promise((o,l)=>{try{YO(n,e,t,c=>{o(c)},i,(c,f,d)=>{l(d||new Error(f))},r,s,a).catch(l)}catch(c){l(c)}})}async function k8(n,e="",t=Oe.LastCreatedScene,i=!0,r=0,s=null,a=null,o=null,l=null,c=null,f="",d={}){if(!t){ee.Error("No scene available to load animations to");return}if(i){for(let p of t.animatables)p.reset();t.stopAllAnimations();let m=t.animationGroups.slice();for(let p of m)p.dispose();let _=t.getNodes();for(let p of _)p.animations&&(p.animations=[])}else switch(r){case 0:let m=t.animationGroups.slice();for(let _ of m)_.dispose();break;case 1:for(let _ of t.animationGroups)_.stop();break;case 2:for(let _ of t.animationGroups)_.reset(),_.restart();break;case 3:break;default:ee.Error("Unknown animation group loading mode value '"+r+"'");return}let h=t.animatables.length;await YO(n,e,t,m=>{m.mergeAnimationsTo(t,t.animatables.slice(h),s),m.dispose(),t.onAnimationFileImportedObservable.notifyObservers(t),a&&a(t)},o,l,c,f,d)}async function Ume(n,e,t,i,r,s,a,o,l,c){return await new Promise((f,d)=>{try{k8(n,e,t,i,r,s,h=>{f(h)},a,(h,u,m)=>{d(m||new Error(u))},o,l,c).catch(d)}catch(h){d(h)}})}var F8,B8,Dl,GO,Uh,Np=I(()=>{wi();mi();Ys();Gi();Lt();iR();lc();Fg();wg();zr();w8();(function(n){n[n.Clean=0]="Clean",n[n.Stop=1]="Stop",n[n.Sync=2]="Sync",n[n.NoSync=3]="NoSync"})(F8||(F8={}));B8=new te,Dl={},GO=!1;Uh=class{static get ForceFullSceneLoadingForIncremental(){return Jr.ForceFullSceneLoadingForIncremental}static set ForceFullSceneLoadingForIncremental(e){Jr.ForceFullSceneLoadingForIncremental=e}static get ShowLoadingScreen(){return Jr.ShowLoadingScreen}static set ShowLoadingScreen(e){Jr.ShowLoadingScreen=e}static get loggingLevel(){return Jr.loggingLevel}static set loggingLevel(e){Jr.loggingLevel=e}static get CleanBoneMatrixWeights(){return Jr.CleanBoneMatrixWeights}static set CleanBoneMatrixWeights(e){Jr.CleanBoneMatrixWeights=e}static GetDefaultPlugin(){return wb()}static GetPluginForExtension(e){var t;return(t=kO(e,!0))==null?void 0:t.plugin}static IsPluginForExtensionAvailable(e){return Dme(e)}static RegisterPlugin(e){hd(e)}static ImportMesh(e,t,i,r,s,a,o,l,c,f){U8(e,t,i,r,s,a,o,l,c,f).catch(d=>o==null?void 0:o(Oe.LastCreatedScene,d==null?void 0:d.message,d))}static async ImportMeshAsync(e,t,i,r,s,a,o){return await V8(e,t,i,r,s,a,o)}static Load(e,t,i,r,s,a,o,l){G8(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAsync(e,t,i,r,s,a){return await wme(e,t,i,r,s,a)}static Append(e,t,i,r,s,a,o,l){XO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async AppendAsync(e,t,i,r,s,a){return await Fme(e,t,i,r,s,a)}static LoadAssetContainer(e,t,i,r,s,a,o,l){YO(e,t,i,r,s,a,o,l).catch(c=>a==null?void 0:a(i!=null?i:Oe.LastCreatedScene,c==null?void 0:c.message,c))}static async LoadAssetContainerAsync(e,t,i,r,s,a){return await Bme(e,t,i,r,s,a)}static ImportAnimations(e,t,i,r,s,a,o,l,c,f,d){k8(e,t,i,r,s,a,o,l,c,f,d).catch(h=>c==null?void 0:c(i!=null?i:Oe.LastCreatedScene,h==null?void 0:h.message,h))}static async ImportAnimationsAsync(e,t,i,r,s,a,o,l,c,f,d){return await Ume(e,t,i,r,s,a,l,f,d)}};Uh.NO_LOGGING=0;Uh.MINIMAL_LOGGING=1;Uh.SUMMARY_LOGGING=2;Uh.DETAILED_LOGGING=3;Uh.OnPluginActivatedObservable=B8});var Fb,KO,jO,Ll,Fv=I(()=>{Fi();Vf();$m();Lt();Gi();hL();Zf();Rl();wi();Df();Fb=class{constructor(){this.rootNodes=[],this.cameras=[],this.lights=[],this.meshes=[],this.skeletons=[],this.particleSystems=[],this.animations=[],this.animationGroups=[],this.multiMaterials=[],this.materials=[],this.morphTargetManagers=[],this.geometries=[],this.transformNodes=[],this.actionManagers=[],this.textures=[],this._environmentTexture=null,this.postProcesses=[],this.sounds=null,this.effectLayers=[],this.layers=[],this.reflectionProbes=[],this.spriteManagers=[]}get environmentTexture(){return this._environmentTexture}set environmentTexture(e){this._environmentTexture=e}getNodes(){let e=[];e=e.concat(this.meshes),e=e.concat(this.lights),e=e.concat(this.cameras),e=e.concat(this.transformNodes);for(let t of this.skeletons)e=e.concat(t.bones);return e}},KO=class extends Fb{},jO=class{constructor(){this.rootNodes=[],this.skeletons=[],this.animationGroups=[]}dispose(){let e=this.rootNodes;for(let r of e)r.dispose();e.length=0;let t=this.skeletons;for(let r of t)r.dispose();t.length=0;let i=this.animationGroups;for(let r of i)r.dispose();i.length=0}},Ll=class extends Fb{constructor(e){super(),this._wasAddedToScene=!1,e=e||Oe.LastCreatedScene,e&&(this.scene=e,this.proceduralTextures=[],e.onDisposeObservable.add(()=>{this._wasAddedToScene||this.dispose()}),this._onContextRestoredObserver=e.getEngine().onContextRestoredObservable.add(()=>{for(let t of this.geometries)t._rebuild();for(let t of this.meshes)t._rebuild();for(let t of this.particleSystems)t.rebuild();for(let t of this.textures)t._rebuild();for(let t of this.spriteManagers)t.rebuild()}))}_topologicalSort(e){let t=new Map;for(let o of e)t.set(o.uniqueId,o);let i={dependsOn:new Map,dependedBy:new Map};for(let o of e){let l=o.uniqueId;i.dependsOn.set(l,new Set),i.dependedBy.set(l,new Set)}for(let o of e){let l=o.uniqueId,c=i.dependsOn.get(l);if(o instanceof Tc){let d=o.sourceMesh;t.has(d.uniqueId)&&(c.add(d.uniqueId),i.dependedBy.get(d.uniqueId).add(l))}let f=i.dependedBy.get(l);for(let d of o.getDescendants()){let h=d.uniqueId;t.has(h)&&(f.add(h),i.dependsOn.get(h).add(l))}}let r=[],s=[];for(let o of e){let l=o.uniqueId;i.dependsOn.get(l).size===0&&(s.push(o),t.delete(l))}let a=s;for(;a.length>0;){let o=a.shift();r.push(o);let l=i.dependedBy.get(o.uniqueId);for(let c of Array.from(l.values())){let f=i.dependsOn.get(c);f.delete(o.uniqueId),f.size===0&&t.get(c)&&(a.push(t.get(c)),t.delete(c))}}return t.size>0&&(ee.Error("SceneSerializer._topologicalSort: There were unvisited nodes:"),t.forEach(o=>{ee.Error(o.name)})),r}_addNodeAndDescendantsToList(e,t,i,r){if(!(!i||r&&!r(i)||t.has(i.uniqueId))){e.push(i),t.add(i.uniqueId);for(let s of i.getDescendants(!0))this._addNodeAndDescendantsToList(e,t,s,r)}}_isNodeInContainer(e){return e instanceof yr&&this.meshes.indexOf(e)!==-1||e instanceof Zt&&this.transformNodes.indexOf(e)!==-1||e instanceof Kt&&this.lights.indexOf(e)!==-1||e instanceof gt&&this.cameras.indexOf(e)!==-1}_isValidHierarchy(){for(let e of this.meshes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.transformNodes)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.lights)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;for(let e of this.cameras)if(e.parent&&!this._isNodeInContainer(e.parent))return ee.Warn(`Node ${e.name} has a parent that is not in the container.`),!1;return!0}instantiateModelsToScene(e,t=!1,i){this._isValidHierarchy()||pe.Warn("SceneSerializer.InstantiateModelsToScene: The Asset Container hierarchy is not valid.");let r={},s={},a=new jO,o=[],l=[],c={doNotInstantiate:!0,...i},f=(_,p)=>{if(r[_.uniqueId]=p.uniqueId,s[p.uniqueId]=p,e&&(p.name=e(_.name)),p instanceof q){let g=p;if(g.morphTargetManager){let v=_.morphTargetManager;g.morphTargetManager=v.clone();for(let T=0;T{if(f(_,p),_.parent){let g=r[_.parent.uniqueId],v=s[g];v?p.parent=v:p.parent=_.parent}if(p.position&&_.position&&p.position.copyFrom(_.position),p.rotationQuaternion&&_.rotationQuaternion&&p.rotationQuaternion.copyFrom(_.rotationQuaternion),p.rotation&&_.rotation&&p.rotation.copyFrom(_.rotation),p.scaling&&_.scaling&&p.scaling.copyFrom(_.scaling),p.material){let g=p;if(g.material)if(t){let v=_.material;if(l.indexOf(v)===-1){let T=v.clone(e?e(v.name):"Clone of "+v.name);if(l.push(v),r[v.uniqueId]=T.uniqueId,s[T.uniqueId]=T,v.getClassName()==="MultiMaterial"){let S=v;for(let E of S.subMaterials)E&&(T=E.clone(e?e(E.name):"Clone of "+E.name),l.push(E),r[E.uniqueId]=T.uniqueId,s[T.uniqueId]=T);S.subMaterials=S.subMaterials.map(E=>E&&s[r[E.uniqueId]])}}g.getClassName()!=="InstancedMesh"&&(g.material=s[r[v.uniqueId]])}else g.material.getClassName()==="MultiMaterial"?this.scene.multiMaterials.indexOf(g.material)===-1&&this.scene.addMultiMaterial(g.material):this.scene.materials.indexOf(g.material)===-1&&this.scene.addMaterial(g.material)}p.parent===null&&a.rootNodes.push(p)};for(let _ of u)if(_.getClassName()==="InstancedMesh"){let p=_,g=p.sourceMesh,v=r[g.uniqueId],S=(typeof v=="number"?s[v]:g).createInstance(p.name);m(p,S)}else{let p=!0;_.getClassName()==="TransformNode"||_.getClassName()==="Node"||_.skeleton||!_.getTotalVertices||_.getTotalVertices()===0?p=!1:c.doNotInstantiate&&(typeof c.doNotInstantiate=="function"?p=!c.doNotInstantiate(_):p=!c.doNotInstantiate);let g=p?_.createInstance(`instance of ${_.name}`):_.clone(`Clone of ${_.name}`,null,!0);if(!g)throw new Error(`Could not clone or instantiate node on Asset Container ${_.name}`);m(_,g)}for(let _ of this.skeletons){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name);for(let g of this.meshes)if(g.skeleton===_&&!g.isAnInstance){let v=s[r[g.uniqueId]];if(!v||v.isAnInstance||(v.skeleton=p,o.indexOf(p)!==-1))continue;o.push(p);for(let T of p.bones)T._linkedTransformNode&&(T._linkedTransformNode=s[r[T._linkedTransformNode.uniqueId]])}a.skeletons.push(p)}for(let _ of this.animationGroups){if(c.predicate&&!c.predicate(_))continue;let p=_.clone(e?e(_.name):"Clone of "+_.name,g=>s[r[g.uniqueId]]||g);a.animationGroups.push(p)}return a}addAllToScene(){if(!this._wasAddedToScene){this._isValidHierarchy()||pe.Warn("SceneSerializer.addAllToScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!0,this.addToScene(null),this.environmentTexture&&(this.scene.environmentTexture=this.environmentTexture);for(let e of this.scene._serializableComponents)e.addFromContainer(this);this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null}}addToScene(e=null){let t=[];for(let i of this.cameras)e&&!e(i)||(this.scene.addCamera(i),t.push(i));for(let i of this.lights)e&&!e(i)||(this.scene.addLight(i),t.push(i));for(let i of this.meshes)e&&!e(i)||(this.scene.addMesh(i),t.push(i));for(let i of this.skeletons)e&&!e(i)||this.scene.addSkeleton(i);for(let i of this.animations)e&&!e(i)||this.scene.addAnimation(i);for(let i of this.animationGroups)e&&!e(i)||this.scene.addAnimationGroup(i);for(let i of this.multiMaterials)e&&!e(i)||this.scene.addMultiMaterial(i);for(let i of this.materials)e&&!e(i)||this.scene.addMaterial(i);for(let i of this.morphTargetManagers)e&&!e(i)||this.scene.addMorphTargetManager(i);for(let i of this.geometries)e&&!e(i)||this.scene.addGeometry(i);for(let i of this.transformNodes)e&&!e(i)||(this.scene.addTransformNode(i),t.push(i));for(let i of this.actionManagers)e&&!e(i)||this.scene.addActionManager(i);for(let i of this.textures)e&&!e(i)||this.scene.addTexture(i);for(let i of this.reflectionProbes)e&&!e(i)||this.scene.addReflectionProbe(i);for(let i of this.spriteManagers)e&&!e(i)||(this.scene.spriteManagers||(this.scene.spriteManagers=[]),this.scene.spriteManagers.push(i));if(t.length){let i=new Set(this.scene.meshes);for(let r of this.scene.lights)i.add(r);for(let r of this.scene.cameras)i.add(r);for(let r of this.scene.transformNodes)i.add(r);for(let r of this.skeletons)for(let s of r.bones)i.add(s);for(let r of t)r.parent&&!i.has(r.parent)&&(r.setParent?r.setParent(null):r.parent=null)}}removeAllFromScene(){this._isValidHierarchy()||pe.Warn("SceneSerializer.removeAllFromScene: The Asset Container hierarchy is not valid."),this._wasAddedToScene=!1,this.removeFromScene(null),this.environmentTexture===this.scene.environmentTexture&&(this.scene.environmentTexture=null);for(let e of this.scene._serializableComponents)e.removeFromContainer(this)}removeFromScene(e=null){for(let t of this.cameras)e&&!e(t)||this.scene.removeCamera(t);for(let t of this.lights)e&&!e(t)||this.scene.removeLight(t);for(let t of this.meshes)e&&!e(t)||this.scene.removeMesh(t,!0);for(let t of this.skeletons)e&&!e(t)||this.scene.removeSkeleton(t);for(let t of this.animations)e&&!e(t)||this.scene.removeAnimation(t);for(let t of this.animationGroups)e&&!e(t)||this.scene.removeAnimationGroup(t);for(let t of this.multiMaterials)e&&!e(t)||this.scene.removeMultiMaterial(t);for(let t of this.materials)e&&!e(t)||this.scene.removeMaterial(t);for(let t of this.morphTargetManagers)e&&!e(t)||this.scene.removeMorphTargetManager(t);for(let t of this.geometries)e&&!e(t)||this.scene.removeGeometry(t);for(let t of this.transformNodes)e&&!e(t)||this.scene.removeTransformNode(t);for(let t of this.actionManagers)e&&!e(t)||this.scene.removeActionManager(t);for(let t of this.textures)e&&!e(t)||this.scene.removeTexture(t);for(let t of this.reflectionProbes)e&&!e(t)||this.scene.removeReflectionProbe(t);for(let t of this.spriteManagers)if(!(e&&!e(t))&&this.scene.spriteManagers){let i=this.scene.spriteManagers.indexOf(t);i!==-1&&this.scene.spriteManagers.splice(i,1)}}dispose(){let e=this.cameras.slice(0);for(let _ of e)_.dispose();this.cameras.length=0;let t=this.lights.slice(0);for(let _ of t)_.dispose();this.lights.length=0;let i=this.meshes.slice(0);for(let _ of i)_.dispose();this.meshes.length=0;let r=this.skeletons.slice(0);for(let _ of r)_.dispose();this.skeletons.length=0;let s=this.animationGroups.slice(0);for(let _ of s)_.dispose();this.animationGroups.length=0;let a=this.multiMaterials.slice(0);for(let _ of a)_.dispose();this.multiMaterials.length=0;let o=this.materials.slice(0);for(let _ of o)_.dispose();this.materials.length=0;let l=this.geometries.slice(0);for(let _ of l)_.dispose();this.geometries.length=0;let c=this.transformNodes.slice(0);for(let _ of c)_.dispose();this.transformNodes.length=0;let f=this.actionManagers.slice(0);for(let _ of f)_.dispose();this.actionManagers.length=0;let d=this.textures.slice(0);for(let _ of d)_.dispose();this.textures.length=0;let h=this.reflectionProbes.slice(0);for(let _ of h)_.dispose();this.reflectionProbes.length=0;let u=this.morphTargetManagers.slice(0);for(let _ of u)_.dispose();this.morphTargetManagers.length=0;let m=this.spriteManagers.slice(0);for(let _ of m)_.dispose();this.spriteManagers.length=0,this.environmentTexture&&(this.environmentTexture.dispose(),this.environmentTexture=null);for(let _ of this.scene._serializableComponents)_.removeFromContainer(this,!0);this._onContextRestoredObserver&&(this.scene.getEngine().onContextRestoredObservable.remove(this._onContextRestoredObserver),this._onContextRestoredObserver=null)}_moveAssets(e,t,i){if(!(!e||!t))for(let r of e){let s=!0;if(i){for(let a of i)if(r===a){s=!1;break}}s&&(t.push(r),r._parentContainer=this)}}moveAllFromScene(e){this._wasAddedToScene=!1,e===void 0&&(e=new KO);for(let t in this)Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=this[t]||(t==="_environmentTexture"?null:[]),this._moveAssets(this.scene[t],this[t],e[t]));this.environmentTexture=this.scene.environmentTexture,this.removeAllFromScene()}createRootMesh(){let e=new q("assetContainerRootMesh",this.scene);for(let t of this.meshes)t.parent||e.addChild(t);return this.meshes.unshift(e),e}mergeAnimationsTo(e=Oe.LastCreatedScene,t,i=null){if(!e)return ee.Error("No scene available to merge animations to"),[];let r=i||(l=>{let c,f=l.animations.length?l.animations[0].targetProperty:"",d=l.name.split(".").join("").split("_primitive")[0];switch(f){case"position":case"rotationQuaternion":c=e.getTransformNodeByName(l.name)||e.getTransformNodeByName(d);break;case"influence":c=e.getMorphTargetByName(l.name)||e.getMorphTargetByName(d);break;default:c=e.getNodeByName(l.name)||e.getNodeByName(d)}return c}),s=this.getNodes();for(let l of s){let c=r(l);if(c!==null){for(let f of l.animations){let d=c.animations.filter(h=>h.targetProperty===f.targetProperty);for(let h of d){let u=c.animations.indexOf(h,0);u>-1&&c.animations.splice(u,1)}}c.animations=c.animations.concat(l.animations)}}let a=[],o=this.animationGroups.slice();for(let l of o){a.push(l.clone(l.name,r));for(let c of l.animatables)c.stop()}for(let l of t){let c=r(l.target);c&&(e.beginAnimation(c,l.fromFrame,l.toFrame,l.loopAnimation,l.speedRatio,l.onAnimationEnd?l.onAnimationEnd:void 0,void 0,!0,void 0,l.onAnimationLoop?l.onAnimationLoop:void 0),e.stopAnimation(l.target))}return a}populateRootNodes(){this.rootNodes.length=0;for(let e of this.meshes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.transformNodes)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.lights)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e);for(let e of this.cameras)!e.parent&&this.rootNodes.indexOf(e)===-1&&this.rootNodes.push(e)}addAllAssetsToContainer(e){if(!e)return;let t=[],i=new Set;for(t.push(e);t.length>0;){let r=t.pop();if(r instanceof q?(r.geometry&&this.geometries.indexOf(r.geometry)===-1&&this.geometries.push(r.geometry),this.meshes.push(r)):r instanceof Tc?this.meshes.push(r):r instanceof Zt?this.transformNodes.push(r):r instanceof Kt?this.lights.push(r):r instanceof gt&&this.cameras.push(r),r instanceof yr){if(r.material&&this.materials.indexOf(r.material)===-1){this.materials.push(r.material);for(let s of r.material.getActiveTextures())this.textures.indexOf(s)===-1&&this.textures.push(s)}r.skeleton&&this.skeletons.indexOf(r.skeleton)===-1&&this.skeletons.push(r.skeleton),r.morphTargetManager&&this.morphTargetManagers.indexOf(r.morphTargetManager)===-1&&this.morphTargetManagers.push(r.morphTargetManager)}for(let s of r.getChildren())i.has(s)||t.push(s);i.add(r)}this.populateRootNodes()}_getByTags(e,t,i){if(t===void 0)return e;let r=[];for(let s in e){let a=e[s];ei&&ei.MatchesQuery(a,t)&&(!i||i(a))&&r.push(a)}return r}getMeshesByTags(e,t){return this._getByTags(this.meshes,e,t)}getCamerasByTags(e,t){return this._getByTags(this.cameras,e,t)}getLightsByTags(e,t){return this._getByTags(this.lights,e,t)}getMaterialsByTags(e,t){return this._getByTags(this.materials,e,t).concat(this._getByTags(this.multiMaterials,e,t))}getTransformNodesByTags(e,t){return this._getByTags(this.transformNodes,e,t)}}});var Vh,W8=I(()=>{Bg();Vh=class{constructor(e){this.byteOffset=0,this.buffer=e}async loadAsync(e){let t=await this.buffer.readAsync(this.byteOffset,e);this._dataView=new DataView(t.buffer,t.byteOffset,t.byteLength),this._dataByteOffset=0}readUint32(){let e=this._dataView.getUint32(this._dataByteOffset,!0);return this._dataByteOffset+=4,this.byteOffset+=4,e}readUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._dataByteOffset,e);return this._dataByteOffset+=e,this.byteOffset+=e,t}readString(e){return UV(this.readUint8Array(e))}skipBytes(e){this._dataByteOffset+=e,this.byteOffset+=e}}});function ZO(n,e,t,i){let r={externalResourceFunction:i};return t&&(r.uri=e==="file:"?t:e+t),ArrayBuffer.isView(n)?GLTFValidator.validateBytes(n,r):GLTFValidator.validateString(n,r)}function Vme(){let n=[];onmessage=e=>{let t=e.data;switch(t.id){case"init":{importScripts(t.url);break}case"validate":{ZO(t.data,t.rootUrl,t.fileName,i=>new Promise((r,s)=>{let a=n.length;n.push({resolve:r,reject:s}),postMessage({id:"getExternalResource",index:a,uri:i})})).then(i=>{postMessage({id:"validate.resolve",value:i})},i=>{postMessage({id:"validate.reject",reason:i})});break}case"getExternalResource.resolve":{n[t.index].resolve(t.value);break}case"getExternalResource.reject":{n[t.index].reject(t.reason);break}}}}var wp,H8=I(()=>{wi();wp=class n{static ValidateAsync(e,t,i,r){return typeof Worker=="function"?new Promise((s,a)=>{let o=`${ZO}(${Vme})()`,l=URL.createObjectURL(new Blob([o],{type:"application/javascript"})),c=new Worker(l),f=h=>{c.removeEventListener("error",f),c.removeEventListener("message",d),a(h)},d=h=>{let u=h.data;switch(u.id){case"getExternalResource":{r(u.uri).then(m=>{c.postMessage({id:"getExternalResource.resolve",index:u.index,value:m},[m.buffer])},m=>{c.postMessage({id:"getExternalResource.reject",index:u.index,reason:m})});break}case"validate.resolve":{c.removeEventListener("error",f),c.removeEventListener("message",d),n._LastResults=u.value,s(u.value),c.terminate();break}case"validate.reject":c.removeEventListener("error",f),c.removeEventListener("message",d),a(u.reason),c.terminate()}};if(c.addEventListener("error",f),c.addEventListener("message",d),c.postMessage({id:"init",url:pe.GetBabylonScriptURL(this.Configuration.url)}),ArrayBuffer.isView(e)){let h=e.slice();c.postMessage({id:"validate",data:h,rootUrl:t,fileName:i},[h.buffer])}else c.postMessage({id:"validate",data:e,rootUrl:t,fileName:i})}):(this._LoadScriptPromise||(this._LoadScriptPromise=pe.LoadBabylonScriptAsync(this.Configuration.url)),this._LoadScriptPromise.then(()=>ZO(e,t,i,r)))}};wp.Configuration={url:`${pe._DefaultCdnUrl}/gltf_validator.js`};wp._LastResults=null});var kc,Bv,z8=I(()=>{kc="Z2xURg",Bv={name:"gltf",extensions:{".gltf":{isBinary:!1,mimeType:"model/gltf+json"},".glb":{isBinary:!0,mimeType:"model/gltf-binary"}},canDirectLoad(n){return n.indexOf("asset")!==-1&&n.indexOf("version")!==-1||n.startsWith("data:base64,"+kc)||n.startsWith("data:;base64,"+kc)||n.startsWith("data:application/octet-stream;base64,"+kc)||n.startsWith("data:model/gltf-binary;base64,"+kc)}}});function X8(n,e,t){try{return Promise.resolve(new Uint8Array(n,e,t))}catch(i){return Promise.reject(i)}}function Gme(n,e,t){try{if(e<0||e>=n.byteLength)throw new RangeError("Offset is out of range.");if(e+t>n.byteLength)throw new RangeError("Length is out of range.");return Promise.resolve(new Uint8Array(n.buffer,n.byteOffset+e,t))}catch(i){return Promise.reject(i)}}var Fp,Gh,bs,Bb,kme,qO,ud,QO=I(()=>{mi();wi();Np();Fv();Lt();W8();H8();z8();lc();Fg();(function(n){n[n.AUTO=0]="AUTO",n[n.FORCE_RIGHT_HANDED=1]="FORCE_RIGHT_HANDED"})(Fp||(Fp={}));(function(n){n[n.NONE=0]="NONE",n[n.FIRST=1]="FIRST",n[n.ALL=2]="ALL"})(Gh||(Gh={}));(function(n){n[n.LOADING=0]="LOADING",n[n.READY=1]="READY",n[n.COMPLETE=2]="COMPLETE"})(bs||(bs={}));Bb=class{constructor(){this.alwaysComputeBoundingBox=!1,this.alwaysComputeSkeletonRootNode=!1,this.animationStartMode=Gh.FIRST,this.compileMaterials=!1,this.compileShadowGenerators=!1,this.coordinateSystemMode=Fp.AUTO,this.createInstances=!0,this.loadAllMaterials=!1,this.loadMorphTargets=!0,this.loadNodeAnimations=!0,this.loadOnlyMaterials=!1,this.loadSkins=!0,this.skipMaterials=!1,this.targetFps=60,this.transparencyAsCoverage=!1,this.useClipPlane=!1,this.useGltfTextureNames=!1,this.useRangeRequests=!1,this.useSRGBBuffers=!0,this.validate=!1,this.useOpenPBR=!1,this.dontUseTransmissionHelper=!1}},kme=new Bb,qO=class extends Bb{constructor(){super(...arguments),this.extensionOptions={},this.preprocessUrlAsync=e=>Promise.resolve(e)}copyFrom(e){var t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A,R,M,y,C,D;e&&(this.alwaysComputeBoundingBox=(t=e.alwaysComputeBoundingBox)!=null?t:this.alwaysComputeBoundingBox,this.alwaysComputeSkeletonRootNode=(i=e.alwaysComputeSkeletonRootNode)!=null?i:this.alwaysComputeSkeletonRootNode,this.animationStartMode=(r=e.animationStartMode)!=null?r:this.animationStartMode,this.capturePerformanceCounters=(s=e.capturePerformanceCounters)!=null?s:this.capturePerformanceCounters,this.compileMaterials=(a=e.compileMaterials)!=null?a:this.compileMaterials,this.compileShadowGenerators=(o=e.compileShadowGenerators)!=null?o:this.compileShadowGenerators,this.coordinateSystemMode=(l=e.coordinateSystemMode)!=null?l:this.coordinateSystemMode,this.createInstances=(c=e.createInstances)!=null?c:this.createInstances,this.customRootNode=e.customRootNode,this.extensionOptions=(f=e.extensionOptions)!=null?f:this.extensionOptions,this.loadAllMaterials=(d=e.loadAllMaterials)!=null?d:this.loadAllMaterials,this.loadMorphTargets=(h=e.loadMorphTargets)!=null?h:this.loadMorphTargets,this.loadNodeAnimations=(u=e.loadNodeAnimations)!=null?u:this.loadNodeAnimations,this.loadOnlyMaterials=(m=e.loadOnlyMaterials)!=null?m:this.loadOnlyMaterials,this.loadSkins=(_=e.loadSkins)!=null?_:this.loadSkins,this.loggingEnabled=(p=e.loggingEnabled)!=null?p:this.loggingEnabled,this.onCameraLoaded=e.onCameraLoaded,this.onMaterialLoaded=e.onMaterialLoaded,this.onMeshLoaded=e.onMeshLoaded,this.onParsed=e.onParsed,this.onSkinLoaded=e.onSkinLoaded,this.onTextureLoaded=e.onTextureLoaded,this.onValidated=e.onValidated,this.preprocessUrlAsync=(g=e.preprocessUrlAsync)!=null?g:this.preprocessUrlAsync,this.skipMaterials=(v=e.skipMaterials)!=null?v:this.skipMaterials,this.targetFps=(T=e.targetFps)!=null?T:this.targetFps,this.transparencyAsCoverage=(S=e.transparencyAsCoverage)!=null?S:this.transparencyAsCoverage,this.useClipPlane=(E=e.useClipPlane)!=null?E:this.useClipPlane,this.useGltfTextureNames=(A=e.useGltfTextureNames)!=null?A:this.useGltfTextureNames,this.useOpenPBR=(R=e.useOpenPBR)!=null?R:this.useOpenPBR,this.useRangeRequests=(M=e.useRangeRequests)!=null?M:this.useRangeRequests,this.useSRGBBuffers=(y=e.useSRGBBuffers)!=null?y:this.useSRGBBuffers,this.validate=(C=e.validate)!=null?C:this.validate,this.dontUseTransmissionHelper=(D=e.dontUseTransmissionHelper)!=null?D:this.dontUseTransmissionHelper)}},ud=class n extends qO{constructor(e){super(),this.onParsedObservable=new te,this.onMeshLoadedObservable=new te,this.onSkinLoadedObservable=new te,this.onTextureLoadedObservable=new te,this.onMaterialLoadedObservable=new te,this.onCameraLoadedObservable=new te,this.onCompleteObservable=new te,this.onErrorObservable=new te,this.onDisposeObservable=new te,this.onExtensionLoadedObservable=new te,this.onValidatedObservable=new te,this._loader=null,this._state=null,this._requests=new Array,this.name=Bv.name,this.extensions=Bv.extensions,this.onLoaderStateChangedObservable=new te,this._logIndentLevel=0,this._loggingEnabled=!1,this._log=this._logDisabled,this._capturePerformanceCounters=!1,this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled,this.copyFrom(Object.assign({...kme},e))}set onParsed(e){this._onParsedObserver&&this.onParsedObservable.remove(this._onParsedObserver),e&&(this._onParsedObserver=this.onParsedObservable.add(e))}set onMeshLoaded(e){this._onMeshLoadedObserver&&this.onMeshLoadedObservable.remove(this._onMeshLoadedObserver),e&&(this._onMeshLoadedObserver=this.onMeshLoadedObservable.add(e))}set onSkinLoaded(e){this._onSkinLoadedObserver&&this.onSkinLoadedObservable.remove(this._onSkinLoadedObserver),e&&(this._onSkinLoadedObserver=this.onSkinLoadedObservable.add(t=>e(t.node,t.skinnedNode)))}set onTextureLoaded(e){this._onTextureLoadedObserver&&this.onTextureLoadedObservable.remove(this._onTextureLoadedObserver),e&&(this._onTextureLoadedObserver=this.onTextureLoadedObservable.add(e))}set onMaterialLoaded(e){this._onMaterialLoadedObserver&&this.onMaterialLoadedObservable.remove(this._onMaterialLoadedObserver),e&&(this._onMaterialLoadedObserver=this.onMaterialLoadedObservable.add(e))}set onCameraLoaded(e){this._onCameraLoadedObserver&&this.onCameraLoadedObservable.remove(this._onCameraLoadedObserver),e&&(this._onCameraLoadedObserver=this.onCameraLoadedObservable.add(e))}set onComplete(e){this._onCompleteObserver&&this.onCompleteObservable.remove(this._onCompleteObserver),this._onCompleteObserver=this.onCompleteObservable.add(e)}set onError(e){this._onErrorObserver&&this.onErrorObservable.remove(this._onErrorObserver),this._onErrorObserver=this.onErrorObservable.add(e)}set onDispose(e){this._onDisposeObserver&&this.onDisposeObservable.remove(this._onDisposeObserver),this._onDisposeObserver=this.onDisposeObservable.add(e)}set onExtensionLoaded(e){this._onExtensionLoadedObserver&&this.onExtensionLoadedObservable.remove(this._onExtensionLoadedObserver),this._onExtensionLoadedObserver=this.onExtensionLoadedObservable.add(e)}get loggingEnabled(){return this._loggingEnabled}set loggingEnabled(e){this._loggingEnabled!==e&&(this._loggingEnabled=e,this._loggingEnabled?this._log=this._logEnabled:this._log=this._logDisabled)}get capturePerformanceCounters(){return this._capturePerformanceCounters}set capturePerformanceCounters(e){this._capturePerformanceCounters!==e&&(this._capturePerformanceCounters=e,this._capturePerformanceCounters?(this._startPerformanceCounter=this._startPerformanceCounterEnabled,this._endPerformanceCounter=this._endPerformanceCounterEnabled):(this._startPerformanceCounter=this._startPerformanceCounterDisabled,this._endPerformanceCounter=this._endPerformanceCounterDisabled))}set onValidated(e){this._onValidatedObserver&&this.onValidatedObservable.remove(this._onValidatedObserver),this._onValidatedObserver=this.onValidatedObservable.add(e)}dispose(){this._loader&&(this._loader.dispose(),this._loader=null);for(let e of this._requests)e.abort();this._requests.length=0,delete this._progressCallback,this.preprocessUrlAsync=e=>Promise.resolve(e),this.onMeshLoadedObservable.clear(),this.onSkinLoadedObservable.clear(),this.onTextureLoadedObservable.clear(),this.onMaterialLoadedObservable.clear(),this.onCameraLoadedObservable.clear(),this.onCompleteObservable.clear(),this.onExtensionLoadedObservable.clear(),this.onDisposeObservable.notifyObservers(void 0),this.onDisposeObservable.clear()}loadFile(e,t,i,r,s,a,o,l){if(ArrayBuffer.isView(t))return this._loadBinary(e,t,i,r,o,l),null;this._progressCallback=s;let c=t.name||pe.GetFilename(t);if(a){if(this.useRangeRequests){this.validate&&ee.Warn("glTF validation is not supported when range requests are enabled");let f={abort:()=>{},onCompleteObservable:new te},d={readAsync:(h,u)=>new Promise((m,_)=>{this._loadFile(e,t,p=>{m(new Uint8Array(p))},!0,p=>{_(p)},p=>{p.setRequestHeader("Range",`bytes=${h}-${h+u-1}`)})}),byteLength:0};return this._unpackBinaryAsync(new Vh(d)).then(h=>{f.onCompleteObservable.notifyObservers(f),r(h)},o?h=>o(void 0,h):void 0),f}return this._loadFile(e,t,f=>{this._validate(e,new Uint8Array(f,0,f.byteLength),i,c),this._unpackBinaryAsync(new Vh({readAsync:(d,h)=>X8(f,d,h),byteLength:f.byteLength})).then(d=>{r(d)},o?d=>o(void 0,d):void 0)},!0,o)}else return this._loadFile(e,t,f=>{try{this._validate(e,f,i,c),r({json:this._parseJson(f)})}catch(d){o&&o()}},!1,o)}_loadBinary(e,t,i,r,s,a){this._validate(e,new Uint8Array(t.buffer,t.byteOffset,t.byteLength),i,a),this._unpackBinaryAsync(new Vh({readAsync:(o,l)=>Gme(t,o,l),byteLength:t.byteLength})).then(o=>{r(o)},s?o=>s(void 0,o):void 0)}importMeshAsync(e,t,i,r,s,a){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(i),this.onParsedObservable.clear(),this._log(`Loading ${a||""}`),this._loader=this._getLoader(i),this._loader.importMeshAsync(e,t,null,i,r,s,a)))}loadAsync(e,t,i,r,s){return Promise.resolve().then(()=>(this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t),this._loader.loadAsync(e,t,i,r,s)))}loadAssetContainerAsync(e,t,i,r,s){return Promise.resolve().then(()=>{this.onParsedObservable.notifyObservers(t),this.onParsedObservable.clear(),this._log(`Loading ${s||""}`),this._loader=this._getLoader(t);let a=new Ll(e),o=[];this.onMaterialLoadedObservable.add(d=>{o.push(d)});let l=[];this.onTextureLoadedObservable.add(d=>{l.push(d)});let c=[];this.onCameraLoadedObservable.add(d=>{c.push(d)});let f=[];return this.onMeshLoadedObservable.add(d=>{d.morphTargetManager&&f.push(d.morphTargetManager)}),this._loader.importMeshAsync(null,e,a,t,i,r,s).then(d=>(Array.prototype.push.apply(a.geometries,d.geometries),Array.prototype.push.apply(a.meshes,d.meshes),Array.prototype.push.apply(a.particleSystems,d.particleSystems),Array.prototype.push.apply(a.skeletons,d.skeletons),Array.prototype.push.apply(a.animationGroups,d.animationGroups),Array.prototype.push.apply(a.materials,o),Array.prototype.push.apply(a.textures,l),Array.prototype.push.apply(a.lights,d.lights),Array.prototype.push.apply(a.transformNodes,d.transformNodes),Array.prototype.push.apply(a.cameras,c),Array.prototype.push.apply(a.morphTargetManagers,f),a))})}canDirectLoad(e){return Bv.canDirectLoad(e)}directLoad(e,t){if(t.startsWith("base64,"+kc)||t.startsWith(";base64,"+kc)||t.startsWith("application/octet-stream;base64,"+kc)||t.startsWith("model/gltf-binary;base64,"+kc)){let i=Pf(t);return this._validate(e,new Uint8Array(i,0,i.byteLength)),this._unpackBinaryAsync(new Vh({readAsync:(r,s)=>X8(i,r,s),byteLength:i.byteLength}))}return this._validate(e,t),Promise.resolve({json:this._parseJson(t)})}createPlugin(e){return new n(e[Bv.name])}get loaderState(){return this._state}whenCompleteAsync(){return new Promise((e,t)=>{this.onCompleteObservable.addOnce(()=>{e()}),this.onErrorObservable.addOnce(i=>{t(i)})})}_setState(e){this._state!==e&&(this._state=e,this.onLoaderStateChangedObservable.notifyObservers(this._state),this._log(bs[this._state]))}_loadFile(e,t,i,r,s,a){let o=e._loadFile(t,i,l=>{this._onProgress(l,o)},!0,r,s,a);return o.onCompleteObservable.add(()=>{o._lengthComputable=!0,o._total=o._loaded}),this._requests.push(o),o}_onProgress(e,t){if(!this._progressCallback)return;t._lengthComputable=e.lengthComputable,t._loaded=e.loaded,t._total=e.total;let i=!0,r=0,s=0;for(let a of this._requests){if(a._lengthComputable===void 0||a._loaded===void 0||a._total===void 0)return;i=i&&a._lengthComputable,r+=a._loaded,s+=a._total}this._progressCallback({lengthComputable:i,loaded:r,total:i?s:0})}_validate(e,t,i="",r=""){this.validate&&(this._startPerformanceCounter("Validate JSON"),wp.ValidateAsync(t,i,r,s=>this.preprocessUrlAsync(i+s).then(a=>e._loadFileAsync(a,void 0,!0,!0).then(o=>new Uint8Array(o,0,o.byteLength)))).then(s=>{this._endPerformanceCounter("Validate JSON"),this.onValidatedObservable.notifyObservers(s),this.onValidatedObservable.clear()},s=>{this._endPerformanceCounter("Validate JSON"),pe.Warn(`Failed to validate: ${s.message}`),this.onValidatedObservable.clear()}))}_getLoader(e){let t=e.json.asset||{};this._log(`Asset version: ${t.version}`),t.minVersion&&this._log(`Asset minimum version: ${t.minVersion}`),t.generator&&this._log(`Asset generator: ${t.generator}`);let i=n._parseVersion(t.version);if(!i)throw new Error("Invalid version: "+t.version);if(t.minVersion!==void 0){let a=n._parseVersion(t.minVersion);if(!a)throw new Error("Invalid minimum version: "+t.minVersion);if(n._compareVersion(a,{major:2,minor:0})>0)throw new Error("Incompatible minimum version: "+t.minVersion)}let s={1:n._CreateGLTF1Loader,2:n._CreateGLTF2Loader}[i.major];if(!s)throw new Error("Unsupported version: "+t.version);return s(this)}_parseJson(e){this._startPerformanceCounter("Parse JSON"),this._log(`JSON length: ${e.length}`);let t=JSON.parse(e);return this._endPerformanceCounter("Parse JSON"),t}_unpackBinaryAsync(e){return this._startPerformanceCounter("Unpack Binary"),e.loadAsync(20).then(()=>{let t={Magic:1179937895},i=e.readUint32();if(i!==t.Magic)throw new Xs("Unexpected magic: "+i,wa.GLTFLoaderUnexpectedMagicError);let r=e.readUint32();this.loggingEnabled&&this._log(`Binary version: ${r}`);let s=e.readUint32();!this.useRangeRequests&&s!==e.buffer.byteLength&&ee.Warn(`Length in header does not match actual data length: ${s} != ${e.buffer.byteLength}`);let a;switch(r){case 1:{a=this._unpackBinaryV1Async(e,s);break}case 2:{a=this._unpackBinaryV2Async(e,s);break}default:throw new Error("Unsupported version: "+r)}return this._endPerformanceCounter("Unpack Binary"),a})}_unpackBinaryV1Async(e,t){let i={JSON:0},r=e.readUint32(),s=e.readUint32();if(s!==i.JSON)throw new Error(`Unexpected content format: ${s}`);let a=t-e.byteOffset,o={json:this._parseJson(e.readString(r)),bin:null};if(a!==0){let l=e.byteOffset;o.bin={readAsync:(c,f)=>e.buffer.readAsync(l+c,f),byteLength:a}}return Promise.resolve(o)}_unpackBinaryV2Async(e,t){let i={JSON:1313821514,BIN:5130562},r=e.readUint32();if(e.readUint32()!==i.JSON)throw new Error("First chunk format is not JSON");return e.byteOffset+r===t?e.loadAsync(r).then(()=>({json:this._parseJson(e.readString(r)),bin:null})):e.loadAsync(r+8).then(()=>{let a={json:this._parseJson(e.readString(r)),bin:null},o=()=>{let l=e.readUint32();switch(e.readUint32()){case i.JSON:throw new Error("Unexpected JSON chunk");case i.BIN:{let f=e.byteOffset;a.bin={readAsync:(d,h)=>e.buffer.readAsync(f+d,h),byteLength:l},e.skipBytes(l);break}default:{e.skipBytes(l);break}}return e.byteOffset!==t?e.loadAsync(8).then(o):Promise.resolve(a)};return o()})}static _parseVersion(e){if(e==="1.0"||e==="1.0.1")return{major:1,minor:0};let t=(e+"").match(/^(\d+)\.(\d+)/);return t?{major:parseInt(t[1]),minor:parseInt(t[2])}:null}static _compareVersion(e,t){return e.major>t.major?1:e.majort.minor?1:e.minor{Ub=class{get resolve(){return this._resolve}get reject(){return this._reject}constructor(){this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}}});var as,K8=I(()=>{Wt();kt();Cl();Fx();ke();wi();as=class{constructor(){this.keysUp=[38],this.keysUpward=[33],this.keysDown=[40],this.keysDownward=[34],this.keysLeft=[37],this.keysRight=[39],this.rotationSpeed=.5,this.keysRotateLeft=[],this.keysRotateRight=[],this.keysRotateUp=[],this.keysRotateDown=[],this._keys=new Array}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),!this._onCanvasBlurObserver&&(this._scene=this.camera.getScene(),this._engine=this._scene.getEngine(),this._onCanvasBlurObserver=this._engine.onCanvasBlurObservable.add(()=>{this._keys.length=0}),this._onKeyboardObserver=this._scene.onKeyboardObservable.add(t=>{let i=t.event;if(!i.metaKey){if(t.type===Co.KEYDOWN)(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1)&&(this._keys.indexOf(i.keyCode)===-1&&this._keys.push(i.keyCode),e||i.preventDefault());else if(this.keysUp.indexOf(i.keyCode)!==-1||this.keysDown.indexOf(i.keyCode)!==-1||this.keysLeft.indexOf(i.keyCode)!==-1||this.keysRight.indexOf(i.keyCode)!==-1||this.keysUpward.indexOf(i.keyCode)!==-1||this.keysDownward.indexOf(i.keyCode)!==-1||this.keysRotateLeft.indexOf(i.keyCode)!==-1||this.keysRotateRight.indexOf(i.keyCode)!==-1||this.keysRotateUp.indexOf(i.keyCode)!==-1||this.keysRotateDown.indexOf(i.keyCode)!==-1){let r=this._keys.indexOf(i.keyCode);r>=0&&this._keys.splice(r,1),e||i.preventDefault()}}}))}detachControl(){this._scene&&(this._onKeyboardObserver&&this._scene.onKeyboardObservable.remove(this._onKeyboardObserver),this._onCanvasBlurObserver&&this._engine.onCanvasBlurObservable.remove(this._onCanvasBlurObserver),this._onKeyboardObserver=null,this._onCanvasBlurObserver=null),this._keys.length=0}checkInputs(){if(this._onKeyboardObserver){let e=this.camera;for(let t=0;t{Wt();mi();kt();Cl();yo();wi();kh=class{constructor(e=!0){this.touchEnabled=e,this.buttons=[0,1,2],this.angularSensibility=2e3,this._previousPosition=null,this.onPointerMovedObservable=new te,this._allowCameraRotation=!0,this._currentActiveButton=-1,this._activePointerId=-1}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=this.camera.getEngine(),i=t.getInputElement();this._pointerInput||(this._pointerInput=r=>{let s=r.event,a=s.pointerType==="touch";if(!this.touchEnabled&&a||r.type!==at.POINTERMOVE&&this.buttons.indexOf(s.button)===-1)return;let o=s.target;if(r.type===at.POINTERDOWN){if(a&&this._activePointerId!==-1||!a&&this._currentActiveButton!==-1)return;this._activePointerId=s.pointerId;try{o==null||o.setPointerCapture(s.pointerId)}catch(l){}this._currentActiveButton===-1&&(this._currentActiveButton=s.button),this._previousPosition={x:s.clientX,y:s.clientY},e||(s.preventDefault(),i&&i.focus()),t.isPointerLock&&this._onMouseMove&&this._onMouseMove(r.event)}else if(r.type===at.POINTERUP){if(a&&this._activePointerId!==s.pointerId||!a&&this._currentActiveButton!==s.button)return;try{o==null||o.releasePointerCapture(s.pointerId)}catch(l){}this._currentActiveButton=-1,this._previousPosition=null,e||s.preventDefault(),this._activePointerId=-1}else if(r.type===at.POINTERMOVE&&(this._activePointerId===s.pointerId||!a)){if(t.isPointerLock&&this._onMouseMove)this._onMouseMove(r.event);else if(this._previousPosition){let l=this.camera._calculateHandednessMultiplier(),c=(s.clientX-this._previousPosition.x)*l,f=(s.clientY-this._previousPosition.y)*l;this._allowCameraRotation&&(this.camera.cameraRotation.y+=c/this.angularSensibility,this.camera.cameraRotation.x+=f/this.angularSensibility),this.onPointerMovedObservable.notifyObservers({offsetX:c,offsetY:f}),this._previousPosition={x:s.clientX,y:s.clientY},e||s.preventDefault()}}}),this._onMouseMove=r=>{if(!t.isPointerLock)return;let s=this.camera._calculateHandednessMultiplier();this.camera.cameraRotation.y+=r.movementX*s/this.angularSensibility,this.camera.cameraRotation.x+=r.movementY*s/this.angularSensibility,this._previousPosition=null,e||r.preventDefault()},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE),i&&(this._contextMenuBind=r=>this.onContextMenu(r),i.addEventListener("contextmenu",this._contextMenuBind,!1))}onContextMenu(e){e.preventDefault()}detachControl(){if(this._observer){if(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._contextMenuBind){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("contextmenu",this._contextMenuBind)}this.onPointerMovedObservable&&this.onPointerMovedObservable.clear(),this._observer=null,this._onMouseMove=null,this._previousPosition=null}this._activePointerId=-1,this._currentActiveButton=-1}getClassName(){return"FreeCameraMouseInput"}getSimpleName(){return"mouse"}};P([F()],kh.prototype,"buttons",void 0);P([F()],kh.prototype,"angularSensibility",void 0);is.FreeCameraMouseInput=kh});var Wh,Z8=I(()=>{Wt();kt();mi();yo();Bx();wi();Wh=class{constructor(){this.wheelPrecisionX=3,this.wheelPrecisionY=3,this.wheelPrecisionZ=3,this.onChangedObservable=new te,this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0,this._ffMultiplier=12,this._normalize=120}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments),this._wheel=t=>{if(t.type!==at.POINTERWHEEL)return;let i=t.event,r=i.deltaMode===Po.DOM_DELTA_LINE?this._ffMultiplier:1;this._wheelDeltaX+=this.wheelPrecisionX*r*i.deltaX/this._normalize,this._wheelDeltaY-=this.wheelPrecisionY*r*i.deltaY/this._normalize,this._wheelDeltaZ+=this.wheelPrecisionZ*r*i.deltaZ/this._normalize,i.preventDefault&&(e||i.preventDefault())},this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._wheel,at.POINTERWHEEL)}detachControl(){this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null,this._wheel=null),this.onChangedObservable&&this.onChangedObservable.clear()}checkInputs(){this.onChangedObservable.notifyObservers({wheelDeltaX:this._wheelDeltaX,wheelDeltaY:this._wheelDeltaY,wheelDeltaZ:this._wheelDeltaZ}),this._wheelDeltaX=0,this._wheelDeltaY=0,this._wheelDeltaZ=0}getClassName(){return"BaseCameraMouseWheelInput"}getSimpleName(){return"mousewheel"}};P([F()],Wh.prototype,"wheelPrecisionX",void 0);P([F()],Wh.prototype,"wheelPrecisionY",void 0);P([F()],Wh.prototype,"wheelPrecisionZ",void 0)});var ki,Js,q8=I(()=>{Wt();kt();Cl();Z8();ke();(function(n){n[n.MoveRelative=0]="MoveRelative",n[n.RotateRelative=1]="RotateRelative",n[n.MoveScene=2]="MoveScene"})(ki||(ki={}));Js=class extends Wh{constructor(){super(...arguments),this._moveRelative=b.Zero(),this._rotateRelative=b.Zero(),this._moveScene=b.Zero(),this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=0,this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=2,this._wheelZAction=null,this._wheelZActionCoordinate=null}getClassName(){return"FreeCameraMouseWheelInput"}set wheelXMoveRelative(e){e===null&&this._wheelXAction!==ki.MoveRelative||(this._wheelXAction=ki.MoveRelative,this._wheelXActionCoordinate=e)}get wheelXMoveRelative(){return this._wheelXAction!==ki.MoveRelative?null:this._wheelXActionCoordinate}set wheelYMoveRelative(e){e===null&&this._wheelYAction!==ki.MoveRelative||(this._wheelYAction=ki.MoveRelative,this._wheelYActionCoordinate=e)}get wheelYMoveRelative(){return this._wheelYAction!==ki.MoveRelative?null:this._wheelYActionCoordinate}set wheelZMoveRelative(e){e===null&&this._wheelZAction!==ki.MoveRelative||(this._wheelZAction=ki.MoveRelative,this._wheelZActionCoordinate=e)}get wheelZMoveRelative(){return this._wheelZAction!==ki.MoveRelative?null:this._wheelZActionCoordinate}set wheelXRotateRelative(e){e===null&&this._wheelXAction!==ki.RotateRelative||(this._wheelXAction=ki.RotateRelative,this._wheelXActionCoordinate=e)}get wheelXRotateRelative(){return this._wheelXAction!==ki.RotateRelative?null:this._wheelXActionCoordinate}set wheelYRotateRelative(e){e===null&&this._wheelYAction!==ki.RotateRelative||(this._wheelYAction=ki.RotateRelative,this._wheelYActionCoordinate=e)}get wheelYRotateRelative(){return this._wheelYAction!==ki.RotateRelative?null:this._wheelYActionCoordinate}set wheelZRotateRelative(e){e===null&&this._wheelZAction!==ki.RotateRelative||(this._wheelZAction=ki.RotateRelative,this._wheelZActionCoordinate=e)}get wheelZRotateRelative(){return this._wheelZAction!==ki.RotateRelative?null:this._wheelZActionCoordinate}set wheelXMoveScene(e){e===null&&this._wheelXAction!==ki.MoveScene||(this._wheelXAction=ki.MoveScene,this._wheelXActionCoordinate=e)}get wheelXMoveScene(){return this._wheelXAction!==ki.MoveScene?null:this._wheelXActionCoordinate}set wheelYMoveScene(e){e===null&&this._wheelYAction!==ki.MoveScene||(this._wheelYAction=ki.MoveScene,this._wheelYActionCoordinate=e)}get wheelYMoveScene(){return this._wheelYAction!==ki.MoveScene?null:this._wheelYActionCoordinate}set wheelZMoveScene(e){e===null&&this._wheelZAction!==ki.MoveScene||(this._wheelZAction=ki.MoveScene,this._wheelZActionCoordinate=e)}get wheelZMoveScene(){return this._wheelZAction!==ki.MoveScene?null:this._wheelZActionCoordinate}checkInputs(){if(this._wheelDeltaX===0&&this._wheelDeltaY===0&&this._wheelDeltaZ==0)return;this._moveRelative.setAll(0),this._rotateRelative.setAll(0),this._moveScene.setAll(0),this._updateCamera(),this.camera.getScene().useRightHandedSystem&&(this._moveRelative.z*=-1);let e=Z.Zero();this.camera.getViewMatrix().invertToRef(e);let t=b.Zero();b.TransformNormalToRef(this._moveRelative,e,t),this.camera.cameraRotation.x+=this._rotateRelative.x/200,this.camera.cameraRotation.y+=this._rotateRelative.y/200,this.camera.cameraDirection.addInPlace(t),this.camera.cameraDirection.addInPlace(this._moveScene),super.checkInputs()}_updateCamera(){this._updateCameraProperty(this._wheelDeltaX,this._wheelXAction,this._wheelXActionCoordinate),this._updateCameraProperty(this._wheelDeltaY,this._wheelYAction,this._wheelYActionCoordinate),this._updateCameraProperty(this._wheelDeltaZ,this._wheelZAction,this._wheelZActionCoordinate)}_updateCameraProperty(e,t,i){if(e===0||t===null||i===null)return;let r=null;switch(t){case ki.MoveRelative:r=this._moveRelative;break;case ki.RotateRelative:r=this._rotateRelative;break;case ki.MoveScene:r=this._moveScene;break}switch(i){case 0:r.set(e,0,0);break;case 1:r.set(0,e,0);break;case 2:r.set(0,0,e);break}}};P([F()],Js.prototype,"wheelXMoveRelative",null);P([F()],Js.prototype,"wheelYMoveRelative",null);P([F()],Js.prototype,"wheelZMoveRelative",null);P([F()],Js.prototype,"wheelXRotateRelative",null);P([F()],Js.prototype,"wheelYRotateRelative",null);P([F()],Js.prototype,"wheelZRotateRelative",null);P([F()],Js.prototype,"wheelXMoveScene",null);P([F()],Js.prototype,"wheelYMoveScene",null);P([F()],Js.prototype,"wheelZMoveScene",null);is.FreeCameraMouseWheelInput=Js});var Hh,Q8=I(()=>{Wt();kt();Cl();yo();ke();wi();Hh=class{constructor(e=!1){this.allowMouse=e,this.touchAngularSensibility=2e5,this.touchMoveSensibility=250,this.singleFingerRotate=!1,this._offsetX=null,this._offsetY=null,this._pointerPressed=new Array,this._isSafari=pe.IsSafari()}attachControl(e){e=pe.BackCompatCameraNoPreventDefault(arguments);let t=null;if(this._pointerInput===void 0&&(this._onLostFocus=()=>{this._offsetX=null,this._offsetY=null},this._pointerInput=i=>{let r=i.event,s=r.pointerType==="mouse"||this._isSafari&&typeof r.pointerType=="undefined";if(!(!this.allowMouse&&s)){if(i.type===at.POINTERDOWN){if(e||r.preventDefault(),this._pointerPressed.push(r.pointerId),this._pointerPressed.length!==1)return;t={x:r.clientX,y:r.clientY}}else if(i.type===at.POINTERUP){e||r.preventDefault();let a=this._pointerPressed.indexOf(r.pointerId);if(a===-1||(this._pointerPressed.splice(a,1),a!=0))return;t=null,this._offsetX=null,this._offsetY=null}else if(i.type===at.POINTERMOVE){if(e||r.preventDefault(),!t||this._pointerPressed.indexOf(r.pointerId)!=0)return;this._offsetX=r.clientX-t.x,this._offsetY=-(r.clientY-t.y)}}}),this._observer=this.camera.getScene()._inputManager._addCameraPointerObserver(this._pointerInput,at.POINTERDOWN|at.POINTERUP|at.POINTERMOVE),this._onLostFocus){let r=this.camera.getEngine().getInputElement();r&&r.addEventListener("blur",this._onLostFocus)}}detachControl(){if(this._pointerInput){if(this._observer&&(this.camera.getScene()._inputManager._removeCameraPointerObserver(this._observer),this._observer=null),this._onLostFocus){let t=this.camera.getEngine().getInputElement();t&&t.removeEventListener("blur",this._onLostFocus),this._onLostFocus=null}this._pointerPressed.length=0,this._offsetX=null,this._offsetY=null}}checkInputs(){if(this._offsetX===null||this._offsetY===null||this._offsetX===0&&this._offsetY===0)return;let e=this.camera,t=e._calculateHandednessMultiplier();if(e.cameraRotation.y=this._offsetX*t/this.touchAngularSensibility,this.singleFingerRotate&&this._pointerPressed.length===1||!this.singleFingerRotate&&this._pointerPressed.length>1)e.cameraRotation.x=-(this._offsetY*t)/this.touchAngularSensibility;else{let r=e._computeLocalCameraSpeed(),s=$.Vector3[0];s.copyFromFloats(0,0,this.touchMoveSensibility!==0?r*this._offsetY/this.touchMoveSensibility:0),Z.RotationYawPitchRollToRef(e.rotation.y,e.rotation.x,0,e._cameraRotationMatrix),b.TransformCoordinatesToRef(s,e._cameraRotationMatrix,s),e.cameraDirection.addInPlace(s)}}getClassName(){return"FreeCameraTouchInput"}getSimpleName(){return"touch"}};P([F()],Hh.prototype,"touchAngularSensibility",void 0);P([F()],Hh.prototype,"touchMoveSensibility",void 0);is.FreeCameraTouchInput=Hh});var Vb,$8=I(()=>{Cl();K8();j8();q8();Q8();Vb=class extends Sp{constructor(e){super(e),this._mouseInput=null,this._mouseWheelInput=null}addKeyboard(){return this.add(new as),this}addMouse(e=!0){return this._mouseInput||(this._mouseInput=new kh(e),this.add(this._mouseInput)),this}removeMouse(){return this._mouseInput&&this.remove(this._mouseInput),this}addMouseWheel(){return this._mouseWheelInput||(this._mouseWheelInput=new Js,this.add(this._mouseWheelInput)),this}removeMouseWheel(){return this._mouseWheelInput&&this.remove(this._mouseWheelInput),this}addTouch(){return this.add(new Hh),this}clear(){super.clear(),this._mouseInput=null}}});var Wc,J8=I(()=>{Wt();kt();ke();qD();$8();wi();$i();zr();Wc=class extends Zs{get angularSensibility(){let e=this.inputs.attached.mouse;return e?e.angularSensibility:0}set angularSensibility(e){let t=this.inputs.attached.mouse;t&&(t.angularSensibility=e)}get keysUp(){let e=this.inputs.attached.keyboard;return e?e.keysUp:[]}set keysUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysUp=e)}get keysUpward(){let e=this.inputs.attached.keyboard;return e?e.keysUpward:[]}set keysUpward(e){let t=this.inputs.attached.keyboard;t&&(t.keysUpward=e)}get keysDown(){let e=this.inputs.attached.keyboard;return e?e.keysDown:[]}set keysDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysDown=e)}get keysDownward(){let e=this.inputs.attached.keyboard;return e?e.keysDownward:[]}set keysDownward(e){let t=this.inputs.attached.keyboard;t&&(t.keysDownward=e)}get keysLeft(){let e=this.inputs.attached.keyboard;return e?e.keysLeft:[]}set keysLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysLeft=e)}get keysRight(){let e=this.inputs.attached.keyboard;return e?e.keysRight:[]}set keysRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRight=e)}get keysRotateLeft(){let e=this.inputs.attached.keyboard;return e?e.keysRotateLeft:[]}set keysRotateLeft(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateLeft=e)}get keysRotateRight(){let e=this.inputs.attached.keyboard;return e?e.keysRotateRight:[]}set keysRotateRight(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateRight=e)}get keysRotateUp(){let e=this.inputs.attached.keyboard;return e?e.keysRotateUp:[]}set keysRotateUp(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateUp=e)}get keysRotateDown(){let e=this.inputs.attached.keyboard;return e?e.keysRotateDown:[]}set keysRotateDown(e){let t=this.inputs.attached.keyboard;t&&(t.keysRotateDown=e)}constructor(e,t,i,r=!0){super(e,t,i,r),this.ellipsoid=new b(.5,1,.5),this.ellipsoidOffset=new b(0,0,0),this.checkCollisions=!1,this.applyGravity=!1,this._needMoveForGravity=!1,this._oldPosition=b.Zero(),this._diffPosition=b.Zero(),this._newPosition=b.Zero(),this._collisionMask=-1,this._onCollisionPositionChange=(s,a,o=null)=>{this._newPosition.copyFrom(a),this._newPosition.subtractToRef(this._oldPosition,this._diffPosition),this._diffPosition.length()>Re.CollisionsEpsilon&&(this.position.addToRef(this._diffPosition,this._deferredPositionUpdate),this._deferOnly?this._deferredUpdated=!0:this.position.copyFrom(this._deferredPositionUpdate),this.onCollide&&o&&this.onCollide(o))},this.inputs=new Vb(this),this.inputs.addKeyboard().addMouse()}attachControl(e,t){t=pe.BackCompatCameraNoPreventDefault(arguments),this.inputs.attachElement(t)}detachControl(){this.inputs.detachElement(),this.cameraDirection=new b(0,0,0),this.cameraRotation=new we(0,0)}get collisionMask(){return this._collisionMask}set collisionMask(e){this._collisionMask=isNaN(e)?-1:e}_collideWithWorld(e){let t;this.parent?t=b.TransformCoordinates(this.position,this.parent.getWorldMatrix()):t=this.position,t.subtractFromFloatsToRef(0,this.ellipsoid.y,0,this._oldPosition),this._oldPosition.addInPlace(this.ellipsoidOffset);let i=this.getScene().collisionCoordinator;this._collider||(this._collider=i.createCollider()),this._collider._radius=this.ellipsoid,this._collider.collisionMask=this._collisionMask;let r=e;this.applyGravity&&(r=e.add(this.getScene().gravity)),i.getNewPosition(this._oldPosition,r,this._collider,3,null,this._onCollisionPositionChange,this.uniqueId)}_checkInputs(){this._localDirection||(this._localDirection=b.Zero(),this._transformedDirection=b.Zero()),this.inputs.checkInputs(),super._checkInputs()}set needMoveForGravity(e){this._needMoveForGravity=e}get needMoveForGravity(){return this._needMoveForGravity}_decideIfNeedsToMove(){return this._needMoveForGravity||Math.abs(this.cameraDirection.x)>0||Math.abs(this.cameraDirection.y)>0||Math.abs(this.cameraDirection.z)>0}_updatePosition(){this.checkCollisions&&this.getScene().collisionsEnabled?this._collideWithWorld(this.cameraDirection):super._updatePosition()}dispose(){this.inputs.clear(),super.dispose()}getClassName(){return"FreeCamera"}};P([Qr()],Wc.prototype,"ellipsoid",void 0);P([Qr()],Wc.prototype,"ellipsoidOffset",void 0);P([F()],Wc.prototype,"checkCollisions",void 0);P([F()],Wc.prototype,"applyGravity",void 0);Ut("BABYLON.FreeCamera",Wc)});var Qa,Gb=I(()=>{ke();pl();_a();Qa=class n extends Ei{get _matrix(){return this._compose(),this._localMatrix}set _matrix(e){e.updateFlag===this._localMatrix.updateFlag&&!this._needToCompose||(this._needToCompose=!1,this._localMatrix.copyFrom(e),this._markAsDirtyAndDecompose())}constructor(e,t,i=null,r=null,s=null,a=null,o=null){var l;super(e,t.getScene(),!1),this.name=e,this.children=[],this.animations=[],this._index=null,this._scalingDeterminant=1,this._needToDecompose=!0,this._needToCompose=!1,this._linkedTransformNode=null,this._waitingTransformNodeId=null,this._waitingTransformNodeUniqueId=null,this._skeleton=t,this._localMatrix=(l=r==null?void 0:r.clone())!=null?l:Z.Identity(),this._restMatrix=s!=null?s:this._localMatrix.clone(),this._bindMatrix=a!=null?a:this._localMatrix.clone(),this._index=o,this._absoluteMatrix=new Z,this._absoluteBindMatrix=new Z,this._absoluteInverseBindMatrix=new Z,this._finalMatrix=new Z,t.bones.push(this),this.setParent(i,!1),this._updateAbsoluteBindMatrices()}getClassName(){return"Bone"}getSkeleton(){return this._skeleton}get parent(){return this._parentNode}getParent(){return this.parent}getChildren(){return this.children}getIndex(){return this._index===null?this.getSkeleton().bones.indexOf(this):this._index}set parent(e){this.setParent(e)}setParent(e,t=!0){if(this.parent!==e){if(this.parent){let i=this.parent.children.indexOf(this);i!==-1&&this.parent.children.splice(i,1)}this._parentNode=e,this.parent&&this.parent.children.push(this),t&&this._updateAbsoluteBindMatrices(),this.markAsDirty()}}getLocalMatrix(){return this._compose(),this._localMatrix}getBindMatrix(){return this._bindMatrix}getBaseMatrix(){return this.getBindMatrix()}getRestMatrix(){return this._restMatrix}getRestPose(){return this.getRestMatrix()}setRestMatrix(e){this._restMatrix.copyFrom(e)}setRestPose(e){this.setRestMatrix(e)}getBindPose(){return this.getBindMatrix()}setBindMatrix(e){this.updateMatrix(e)}setBindPose(e){this.setBindMatrix(e)}getFinalMatrix(){return this._finalMatrix}getWorldMatrix(){return this.getFinalMatrix()}returnToRest(){var e;if(this._linkedTransformNode){let t=$.Vector3[0],i=$.Quaternion[0],r=$.Vector3[1];this.getRestMatrix().decompose(t,i,r),this._linkedTransformNode.position.copyFrom(r),this._linkedTransformNode.rotationQuaternion=(e=this._linkedTransformNode.rotationQuaternion)!=null?e:Ke.Identity(),this._linkedTransformNode.rotationQuaternion.copyFrom(i),this._linkedTransformNode.scaling.copyFrom(t)}else this._matrix=this._restMatrix}getAbsoluteInverseBindMatrix(){return this._absoluteInverseBindMatrix}getInvertedAbsoluteTransform(){return this.getAbsoluteInverseBindMatrix()}getAbsoluteMatrix(){return this._skeleton.computeAbsoluteMatrices(),this._absoluteMatrix}getAbsoluteTransform(){return this.getAbsoluteMatrix()}linkTransformNode(e){this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode--,this._linkedTransformNode=e,this._linkedTransformNode&&this._skeleton._numBonesWithLinkedTransformNode++}getTransformNode(){return this._linkedTransformNode}get position(){return this._decompose(),this._localPosition}set position(e){this._decompose(),this._localPosition.copyFrom(e),this._markAsDirtyAndCompose()}get rotation(){return this.getRotation()}set rotation(e){this.setRotation(e)}get rotationQuaternion(){return this._decompose(),this._localRotation}set rotationQuaternion(e){this.setRotationQuaternion(e)}get scaling(){return this.getScale()}set scaling(e){this.setScale(e)}get animationPropertiesOverride(){return this._skeleton.animationPropertiesOverride}_decompose(){this._needToDecompose&&(this._needToDecompose=!1,this._localScaling||(this._localScaling=b.Zero(),this._localRotation=Ke.Zero(),this._localPosition=b.Zero()),this._localMatrix.decompose(this._localScaling,this._localRotation,this._localPosition))}_compose(){if(this._needToCompose){if(!this._localScaling){this._needToCompose=!1;return}this._needToCompose=!1,Z.ComposeToRef(this._localScaling,this._localRotation,this._localPosition,this._localMatrix)}}updateMatrix(e,t=!0,i=!0){this._bindMatrix.copyFrom(e),t&&this._updateAbsoluteBindMatrices(),i?this._matrix=e:this.markAsDirty()}_updateAbsoluteBindMatrices(e,t=!0){if(e||(e=this._bindMatrix),this.parent?e.multiplyToRef(this.parent._absoluteBindMatrix,this._absoluteBindMatrix):this._absoluteBindMatrix.copyFrom(e),this._absoluteBindMatrix.invertToRef(this._absoluteInverseBindMatrix),t)for(let i=0;i{Xr();Uv=class n extends _e{constructor(e,t,i,r,s,a=!0,o=!1,l=3,c=0,f,d,h,u){super(null,s,!a,o,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0,f),this.format=r,this._engine&&(!this._engine._caps.textureFloatLinearFiltering&&c===1&&(l=1),!this._engine._caps.textureHalfFloatLinearFiltering&&c===2&&(l=1),this._texture=this._engine.createRawTexture(e,t,i,r,a,o,l,null,c,f!=null?f:0,d!=null?d:!1,u),this.wrapU=_e.CLAMP_ADDRESSMODE,this.wrapV=_e.CLAMP_ADDRESSMODE,this._waitingForData=!!h&&!e)}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._getEngine().updateRawTexture(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,this._texture._useSRGBBuffer,t),this._waitingForData=!1}clone(){if(!this._texture)return super.clone();let e=new n(null,this.getSize().width,this.getSize().height,this.format,this.getScene(),this._texture.generateMipMaps,this._invertY,this.samplingMode,this._texture.type,this._texture._creationFlags,this._useSRGBBuffer);return e._texture=this._texture,this._texture.incrementReferences(),e}isReady(){return super.isReady()&&!this._waitingForData}static CreateLuminanceTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,1,r,s,a,o)}static CreateLuminanceAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,2,r,s,a,o)}static CreateAlphaTexture(e,t,i,r,s=!0,a=!1,o=3){return new n(e,t,i,0,r,s,a,o)}static CreateRGBTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1){return new n(e,t,i,4,r,s,a,o,l,c,f)}static CreateRGBATexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=0,f=!1,d=!1){return new n(e,t,i,5,r,s,a,o,l,c,f,d)}static CreateRGBAStorageTexture(e,t,i,r,s=!0,a=!1,o=3,l=0,c=!1){return new n(e,t,i,5,r,s,a,o,l,1,c)}static CreateRTexture(e,t,i,r,s=!0,a=!1,o=_e.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l)}static CreateRStorageTexture(e,t,i,r,s=!0,a=!1,o=_e.TRILINEAR_SAMPLINGMODE,l=1){return new n(e,t,i,6,r,s,a,o,l,1)}}});var kb,t6=I(()=>{Gb();mi();ke();e6();Yf();WD();Gi();Lt();Gg();kb=class n{get useTextureToStoreBoneMatrices(){return this._useTextureToStoreBoneMatrices}set useTextureToStoreBoneMatrices(e){this._useTextureToStoreBoneMatrices=e,this._markAsDirty()}get animationPropertiesOverride(){return this._animationPropertiesOverride?this._animationPropertiesOverride:this._scene.animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}get isUsingTextureForMatrices(){return this.useTextureToStoreBoneMatrices&&this._canUseTextureForBones}get uniqueId(){return this._uniqueId}constructor(e,t,i){this.name=e,this.id=t,this.bones=[],this.needInitialSkinMatrix=!1,this._isDirty=!0,this._meshesWithPoseMatrix=new Array,this._identity=Z.Identity(),this._currentRenderId=-1,this._textureWidth=0,this._textureHeight=1,this._ranges={},this._absoluteTransformIsDirty=!0,this._canUseTextureForBones=!1,this._uniqueId=0,this._numBonesWithLinkedTransformNode=0,this._hasWaitingData=null,this._parentContainer=null,this.doNotSerialize=!1,this._useTextureToStoreBoneMatrices=!0,this._animationPropertiesOverride=null,this.onBeforeComputeObservable=new te,this.metadata=null,this.bones=[],this._scene=i||Oe.LastCreatedScene,this._uniqueId=this._scene.getUniqueId(),this._scene.addSkeleton(this),this._isDirty=!0;let r=this._scene.getEngine().getCaps();this._canUseTextureForBones=r.textureFloat&&r.maxVertexTextureImageUnits>0}getClassName(){return"Skeleton"}getChildren(){return this.bones.filter(e=>!e.getParent())}getTransformMatrices(e){if(this.needInitialSkinMatrix){if(!e)throw new Error("getTransformMatrices: When using the needInitialSkinMatrix flag, a mesh must be provided");return e._bonesTransformMatrices||this.prepare(!0),e._bonesTransformMatrices}return(!this._transformMatrices||this._isDirty)&&this.prepare(!this._transformMatrices),this._transformMatrices}getTransformMatrixTexture(e){return this.needInitialSkinMatrix&&e._transformMatrixTexture?e._transformMatrixTexture:this._transformMatrixTexture}getScene(){return this._scene}toString(e){let t=`Name: ${this.name}, nBones: ${this.bones.length}`;if(t+=`, nAnimationRanges: ${this._ranges?Object.keys(this._ranges).length:"none"}`,e){t+=", Ranges: {";let i=!0;for(let r in this._ranges)i&&(t+=", ",i=!1),t+=r;t+="}"}return t}getBoneIndexByName(e){for(let t=0,i=this.bones.length;t-1&&this._meshesWithPoseMatrix.splice(t,1)}_computeTransformMatrices(e,t){this.onBeforeComputeObservable.notifyObservers(this);for(let i=0;i0){for(let r of this.bones)if(r._linkedTransformNode){let s=r._linkedTransformNode;r.position=s.position,s.rotationQuaternion?r.rotationQuaternion=s.rotationQuaternion:r.rotation=s.rotation,r.scaling=s.scaling}}let t=null;if(this.needInitialSkinMatrix)for(let r of this._meshesWithPoseMatrix){let s=r.getPoseMatrix(),a=this._isDirty;if(t===null&&(t=this._computeTextureSize()),(!r._bonesTransformMatrices||r._bonesTransformMatrices.length!==t)&&(r._bonesTransformMatrices=new Float32Array(t),a=!0),!!a){if(this._synchronizedWithMesh!==r){this._synchronizedWithMesh=r;for(let o of this.bones)o.getParent()||(o.getBindMatrix().multiplyToRef(s,$.Matrix[1]),o._updateAbsoluteBindMatrices($.Matrix[1]));if(this.isUsingTextureForMatrices){let o=(i=r._transformMatrixTexture)==null?void 0:i.getSize(),l=o?o.width*o.height*4:0;(!r._transformMatrixTexture||l!==t)&&(r._transformMatrixTexture&&r._transformMatrixTexture.dispose(),r._transformMatrixTexture=Uv.CreateRGBATexture(r._bonesTransformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))}}this._computeTransformMatrices(r._bonesTransformMatrices,s),this.isUsingTextureForMatrices&&r._transformMatrixTexture&&r._transformMatrixTexture.update(r._bonesTransformMatrices)}}else{if(!this._isDirty)return;t===null&&(t=this._computeTextureSize()),(!this._transformMatrices||this._transformMatrices.length!==t)&&(this._transformMatrices=new Float32Array(t),this.isUsingTextureForMatrices&&(this._transformMatrixTexture&&this._transformMatrixTexture.dispose(),this._transformMatrixTexture=Uv.CreateRGBATexture(this._transformMatrices,this._textureWidth,this._textureHeight,this._scene,!1,!1,1,1))),this._computeTransformMatrices(this._transformMatrices,null),this.isUsingTextureForMatrices&&this._transformMatrixTexture&&this._transformMatrixTexture.update(this._transformMatrices)}this._isDirty=!1}getAnimatables(){if(!this._animatables||this._animatables.length!==this.bones.length){this._animatables=[];for(let e=0;e-1&&this._parentContainer.skeletons.splice(e,1),this._parentContainer=null}this._transformMatrixTexture&&(this._transformMatrixTexture.dispose(),this._transformMatrixTexture=null)}serialize(){var t,i;let e={};e.name=this.name,e.id=this.id,e.uniqueId=this.uniqueId,this.dimensionsAtRest&&(e.dimensionsAtRest=this.dimensionsAtRest.asArray()),e.bones=[],e.needInitialSkinMatrix=this.needInitialSkinMatrix,this.metadata&&(e.metadata=this.metadata);for(let r=0;r0&&(o.animation=s.animations[0].serialize()),e.ranges=[];for(let l in this._ranges){let c=this._ranges[l];if(!c)continue;let f={};f.name=l,f.from=c.from,f.to=c.to,e.ranges.push(f)}}return e}static Parse(e,t){let i=new n(e.name,e.id,t);e.dimensionsAtRest&&(i.dimensionsAtRest=b.FromArray(e.dimensionsAtRest)),i.needInitialSkinMatrix=e.needInitialSkinMatrix,e.metadata&&(i.metadata=e.metadata);let r;for(r=0;r-1&&(o=i.bones[s.parentBoneIndex]);let l=s.rest?Z.FromArray(s.rest):null,c=new Qa(s.name,i,o,Z.FromArray(s.matrix),l,null,a);s.id!==void 0&&s.id!==null&&(c.id=s.id),s.length&&(c.length=s.length),s.metadata&&(c.metadata=s.metadata),s.animation&&c.animations.push(mt.Parse(s.animation)),s.linkedTransformNodeId!==void 0&&s.linkedTransformNodeId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeId=s.linkedTransformNodeId),s.linkedTransformNodeUniqueId!==void 0&&s.linkedTransformNodeUniqueId!==null&&(i._hasWaitingData=!0,c._waitingTransformNodeUniqueId=s.linkedTransformNodeUniqueId)}if(e.ranges)for(r=0;r0&&(e=this._meshesWithPoseMatrix[0].getPoseMatrix()),e}sortBones(){let e=[],t=new Array(this.bones.length);for(let i=0;i{Wt();mi();Gi();Zi();kt();Dr();$i();md=class n{get influence(){return this._influence}set influence(e){if(this._influence===e)return;let t=this._influence;this._influence=e,this.onInfluenceChanged.hasObservers()&&this.onInfluenceChanged.notifyObservers(t===0||e===0)}get animationPropertiesOverride(){return!this._animationPropertiesOverride&&this._scene?this._scene.animationPropertiesOverride:this._animationPropertiesOverride}set animationPropertiesOverride(e){this._animationPropertiesOverride=e}constructor(e,t=0,i=null,r=null){this.name=e,this.animations=[],this._positions=null,this._normals=null,this._tangents=null,this._uvs=null,this._uv2s=null,this._colors=null,this._uniqueId=0,this.onInfluenceChanged=new te,this._onDataLayoutChanged=new te,this.morphTargetManager=null,this._animationPropertiesOverride=null,this.id=e,this.morphTargetManager=r,this._scene=i||Oe.LastCreatedScene,this.influence=t,this._scene&&(this._uniqueId=this._scene.getUniqueId())}get uniqueId(){return this._uniqueId}get hasPositions(){return!!this._positions}get hasNormals(){return!!this._normals}get hasTangents(){return!!this._tangents}get hasUVs(){return!!this._uvs}get hasUV2s(){return!!this._uv2s}get hasColors(){return!!this._colors}get vertexCount(){return this._positions?this._positions.length/3:this._normals?this._normals.length/3:this._tangents?this._tangents.length/3:this._uvs?this._uvs.length/2:this._uv2s?this._uv2s.length/2:this._colors?this._colors.length/4:0}setPositions(e){let t=this.hasPositions;this._positions=e,t!==this.hasPositions&&this._onDataLayoutChanged.notifyObservers(void 0)}getPositions(){return this._positions}setNormals(e){let t=this.hasNormals;this._normals=e,t!==this.hasNormals&&this._onDataLayoutChanged.notifyObservers(void 0)}getNormals(){return this._normals}setTangents(e){let t=this.hasTangents;this._tangents=e,t!==this.hasTangents&&this._onDataLayoutChanged.notifyObservers(void 0)}getTangents(){return this._tangents}setUVs(e){let t=this.hasUVs;this._uvs=e,t!==this.hasUVs&&this._onDataLayoutChanged.notifyObservers(void 0)}getUVs(){return this._uvs}setUV2s(e){let t=this.hasUV2s;this._uv2s=e,t!==this.hasUV2s&&this._onDataLayoutChanged.notifyObservers(void 0)}getUV2s(){return this._uv2s}setColors(e){let t=this.hasColors;this._colors=e,t!==this.hasColors&&this._onDataLayoutChanged.notifyObservers(void 0)}getColors(){return this._colors}clone(){let e=nt.Clone(()=>new n(this.name,this.influence,this._scene,this.morphTargetManager),this);return e._positions=this._positions,e._normals=this._normals,e._tangents=this._tangents,e._uvs=this._uvs,e._uv2s=this._uv2s,e._colors=this._colors,e}serialize(){let e={};return e.name=this.name,e.influence=this.influence,this.id!=null&&(e.id=this.id),e.uniqueId=this.uniqueId,e.positions=Array.prototype.slice.call(this.getPositions()),this.hasNormals&&(e.normals=Array.prototype.slice.call(this.getNormals())),this.hasTangents&&(e.tangents=Array.prototype.slice.call(this.getTangents())),this.hasUVs&&(e.uvs=Array.prototype.slice.call(this.getUVs())),this.hasUV2s&&(e.uv2s=Array.prototype.slice.call(this.getUV2s())),this.hasColors&&(e.colors=Array.prototype.slice.call(this.getColors())),nt.AppendSerializedAnimations(this,e),e}getClassName(){return"MorphTarget"}static Parse(e,t,i=null){let r=new n(e.name,e.influence,t,i);if(r.setPositions(e.positions),e.id!=null&&(r.id=e.id),e.normals&&r.setNormals(e.normals),e.tangents&&r.setTangents(e.tangents),e.uvs&&r.setUVs(e.uvs),e.uv2s&&r.setUV2s(e.uv2s),e.colors&&r.setColors(e.colors),e.animations){for(let s=0;s{Xr();Wb=class n extends _e{get depth(){return this._depth}constructor(e,t,i,r,s,a,o=!0,l=!1,c=_e.TRILINEAR_SAMPLINGMODE,f=0,d,h){super(null,a,!o,l),this.format=s,this._texture=a.getEngine().createRawTexture2DArray(e,t,i,r,s,o,l,c,null,f,d!=null?d:0,h),this._depth=r,this.is2DArray=!0}update(e){this.updateMipLevel(e,0)}updateMipLevel(e,t){this._texture&&this._getEngine().updateRawTexture2DArray(this._texture,e,this._texture.format,this._texture.invertY,null,this._texture.type,t)}static CreateRGBATexture(e,t,i,r,s,a=!0,o=!1,l=3,c=0){return new n(e,t,i,r,5,s,a,o,l,c)}}});var zh,r6=I(()=>{Mo();Lt();Gi();$O();i6();zh=class n{set areUpdatesFrozen(e){e?this._blockCounter++:(this._blockCounter--,this._blockCounter<=0&&(this._blockCounter=0,this._syncActiveTargets(this._forceUpdateWhenUnfrozen),this._forceUpdateWhenUnfrozen=!1))}get areUpdatesFrozen(){return this._blockCounter>0}constructor(e=null,t){if(this.meshName=t,this._targets=new Array,this._targetInfluenceChangedObservers=new Array,this._targetDataLayoutChangedObservers=new Array,this._activeTargets=new Xi(16),this._supportsPositions=!1,this._supportsNormals=!1,this._supportsTangents=!1,this._supportsUVs=!1,this._supportsUV2s=!1,this._supportsColors=!1,this._vertexCount=0,this._uniqueId=0,this._tempInfluences=new Array,this._canUseTextureForTargets=!1,this._blockCounter=0,this._mustSynchronize=!0,this._forceUpdateWhenUnfrozen=!1,this._textureVertexStride=0,this._textureWidth=0,this._textureHeight=1,this._parentContainer=null,this.optimizeInfluencers=!0,this.enablePositionMorphing=!0,this.enableNormalMorphing=!0,this.enableTangentMorphing=!0,this.enableUVMorphing=!0,this.enableUV2Morphing=!0,this.enableColorMorphing=!0,this._numMaxInfluencers=0,this._useTextureToStoreTargets=!0,this.metadata=null,this._influencesAreDirty=!1,this._needUpdateInfluences=!1,e||(e=Oe.LastCreatedScene),this._scene=e,this._scene){this._scene.addMorphTargetManager(this),this._uniqueId=this._scene.getUniqueId();let i=this._scene.getEngine().getCaps();this._canUseTextureForTargets=i.canUseGLVertexID&&i.textureFloat&&i.maxVertexTextureImageUnits>0&&i.texture2DArrayMaxLayerCount>1}}get numMaxInfluencers(){return n.ConstantTargetCountForTextureMode>0&&this.isUsingTextureForTargets?n.ConstantTargetCountForTextureMode:this._numMaxInfluencers}set numMaxInfluencers(e){this._numMaxInfluencers!==e&&(this._numMaxInfluencers=e,this._mustSynchronize=!0,this._syncActiveTargets())}get uniqueId(){return this._uniqueId}get vertexCount(){return this._vertexCount}get supportsPositions(){return this._supportsPositions&&this.enablePositionMorphing}get supportsNormals(){return this._supportsNormals&&this.enableNormalMorphing}get supportsTangents(){return this._supportsTangents&&this.enableTangentMorphing}get supportsUVs(){return this._supportsUVs&&this.enableUVMorphing}get supportsUV2s(){return this._supportsUV2s&&this.enableUV2Morphing}get supportsColors(){return this._supportsColors&&this.enableColorMorphing}get hasPositions(){return this._supportsPositions}get hasNormals(){return this._supportsNormals}get hasTangents(){return this._supportsTangents}get hasUVs(){return this._supportsUVs}get hasUV2s(){return this._supportsUV2s}get hasColors(){return this._supportsColors}get numTargets(){return this._targets.length}get numInfluencers(){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.length}get influences(){return this._influencesAreDirty&&this._syncActiveTargets(),this._influences}get useTextureToStoreTargets(){return this._useTextureToStoreTargets}set useTextureToStoreTargets(e){this._useTextureToStoreTargets!==e&&(this._useTextureToStoreTargets=e,this._mustSynchronize=!0,this._syncActiveTargets())}get isUsingTextureForTargets(){var e;return n.EnableTextureStorage&&this.useTextureToStoreTargets&&this._canUseTextureForTargets&&!((e=this._scene)!=null&&e.getEngine().getCaps().disableMorphTargetTexture)}getActiveTarget(e){return this._influencesAreDirty&&this._syncActiveTargets(),this._activeTargets.data[e]}getTarget(e){return this._targets[e]}getTargetByName(e){for(let t of this._targets)if(t.name===e)return t;return null}addTarget(e){this._targets.push(e),this._targetInfluenceChangedObservers.push(e.onInfluenceChanged.add(t=>{this.areUpdatesFrozen&&t&&(this._forceUpdateWhenUnfrozen=!0),this._influencesAreDirty=!0,this._needUpdateInfluences=this._needUpdateInfluences||t})),this._targetDataLayoutChangedObservers.push(e._onDataLayoutChanged.add(()=>{this._mustSynchronize=!0,this._syncActiveTargets()})),this._mustSynchronize=!0,this._syncActiveTargets()}removeTarget(e){let t=this._targets.indexOf(e);t>=0&&(this._targets.splice(t,1),e.onInfluenceChanged.remove(this._targetInfluenceChangedObservers.splice(t,1)[0]),e._onDataLayoutChanged.remove(this._targetDataLayoutChangedObservers.splice(t,1)[0]),this._mustSynchronize=!0,this._syncActiveTargets()),this._scene&&this._scene.stopAnimation(e)}_bind(e){this._influencesAreDirty&&this._syncActiveTargets(),e.setFloat3("morphTargetTextureInfo",this._textureVertexStride,this._textureWidth,this._textureHeight),e.setFloatArray("morphTargetTextureIndices",this._morphTargetTextureIndices),e.setTexture("morphTargets",this._targetStoreTexture),e.setFloat("morphTargetCount",this.numInfluencers)}clone(){let e=new n(this._scene);e.areUpdatesFrozen=!0;for(let t of this._targets)e.addTarget(t.clone());return e.areUpdatesFrozen=!1,e.enablePositionMorphing=this.enablePositionMorphing,e.enableNormalMorphing=this.enableNormalMorphing,e.enableTangentMorphing=this.enableTangentMorphing,e.enableUVMorphing=this.enableUVMorphing,e.enableUV2Morphing=this.enableUV2Morphing,e.enableColorMorphing=this.enableColorMorphing,e.metadata=this.metadata,e}serialize(){let e={};e.id=this.uniqueId,e.meshName=this.meshName,e.targets=[];for(let t of this._targets)e.targets.push(t.serialize());return this.metadata&&(e.metadata=this.metadata),e}_syncActiveTargets(e=!1){if(this.areUpdatesFrozen)return;e=e||this._needUpdateInfluences,this._needUpdateInfluences=!1,this._influencesAreDirty=!1;let t=!!this._targetStoreTexture,i=this.isUsingTextureForTargets;(this._mustSynchronize||t!==i)&&(this._mustSynchronize=!1,this.synchronize());let r=0;this._activeTargets.reset(),(!this._morphTargetTextureIndices||this._morphTargetTextureIndices.length!==this._targets.length)&&(this._morphTargetTextureIndices=new Float32Array(this._targets.length));let s=-1;for(let a of this._targets)if(s++,!(a.influence===0&&this.optimizeInfluencers)){if(this._activeTargets.length>=n.MaxActiveMorphTargetsInVertexAttributeMode&&!this.isUsingTextureForTargets)break;this._activeTargets.push(a),this._morphTargetTextureIndices[r]=s,this._tempInfluences[r++]=a.influence}this._morphTargetTextureIndices.length!==r&&(this._morphTargetTextureIndices=this._morphTargetTextureIndices.slice(0,r)),(!this._influences||this._influences.length!==r)&&(this._influences=new Float32Array(r));for(let a=0;ae.getCaps().texture2DArrayMaxLayerCount&&(this.useTextureToStoreTargets=!1);for(let i of this._targets){this._supportsPositions=this._supportsPositions&&i.hasPositions,this._supportsNormals=this._supportsNormals&&i.hasNormals,this._supportsTangents=this._supportsTangents&&i.hasTangents,this._supportsUVs=this._supportsUVs&&i.hasUVs,this._supportsUV2s=this._supportsUV2s&&i.hasUV2s,this._supportsColors=this._supportsColors&&i.hasColors;let r=i.vertexCount;if(this._vertexCount===0)this._vertexCount=r;else if(this._vertexCount!==r){ee.Error(`Incompatible target. Targets must all have the same vertices count. Current vertex count: ${this._vertexCount}, vertex count for target "${i.name}": ${r}`);return}}if(this.isUsingTextureForTargets){this._textureVertexStride=0,this._supportsPositions&&this._textureVertexStride++,this._supportsNormals&&this._textureVertexStride++,this._supportsTangents&&this._textureVertexStride++,this._supportsUVs&&this._textureVertexStride++,this._supportsUV2s&&this._textureVertexStride++,this._supportsColors&&this._textureVertexStride++,this._textureWidth=this._vertexCount*this._textureVertexStride||1,this._textureHeight=1;let i=e.getCaps().maxTextureSize;this._textureWidth>i&&(this._textureHeight=Math.ceil(this._textureWidth/i),this._textureWidth=i);let r=this._targets.length,s=new Float32Array(r*this._textureWidth*this._textureHeight*4),a;for(let o=0;o-1&&this._parentContainer.morphTargetManagers.splice(e,1),this._parentContainer=null}for(let e of this._targets)this._scene.stopAnimation(e)}}static Parse(e,t){let i=new n(t);for(let r of e.targets)i.addTarget(md.Parse(r,t,i));return e.metadata&&(i.metadata=e.metadata),i}};zh.EnableTextureStorage=!0;zh.MaxActiveMorphTargetsInVertexAttributeMode=8;zh.ConstantTargetCountForTextureMode=0});function Hb(n,e,t){Vv(n)&&ee.Warn(`Extension with the name '${n}' already exists`),JO.set(n,{isGLTFExtension:e,factory:t})}function Vv(n){return JO.delete(n)}var JO,n6,eN=I(()=>{Lt();JO=new Map,n6=JO});var W,tN=I(()=>{W=class{};W.AUTOSAMPLERSUFFIX="Sampler";W.DISABLEUA="#define DISABLE_UNIFORMITY_ANALYSIS";W.ALPHA_DISABLE=0;W.ALPHA_ADD=1;W.ALPHA_COMBINE=2;W.ALPHA_SUBTRACT=3;W.ALPHA_MULTIPLY=4;W.ALPHA_MAXIMIZED=5;W.ALPHA_ONEONE=6;W.ALPHA_PREMULTIPLIED=7;W.ALPHA_PREMULTIPLIED_PORTERDUFF=8;W.ALPHA_INTERPOLATE=9;W.ALPHA_SCREENMODE=10;W.ALPHA_ONEONE_ONEONE=11;W.ALPHA_ALPHATOCOLOR=12;W.ALPHA_REVERSEONEMINUS=13;W.ALPHA_SRC_DSTONEMINUSSRCALPHA=14;W.ALPHA_ONEONE_ONEZERO=15;W.ALPHA_EXCLUSION=16;W.ALPHA_LAYER_ACCUMULATE=17;W.ALPHA_MIN=18;W.ALPHA_MAX=19;W.ALPHA_DUAL_SRC0_ADD_SRC1xDST=20;W.ALPHA_EQUATION_ADD=0;W.ALPHA_EQUATION_SUBSTRACT=1;W.ALPHA_EQUATION_REVERSE_SUBTRACT=2;W.ALPHA_EQUATION_MAX=3;W.ALPHA_EQUATION_MIN=4;W.ALPHA_EQUATION_DARKEN=5;W.DELAYLOADSTATE_NONE=0;W.DELAYLOADSTATE_LOADED=1;W.DELAYLOADSTATE_LOADING=2;W.DELAYLOADSTATE_NOTLOADED=4;W.NEVER=512;W.ALWAYS=519;W.LESS=513;W.EQUAL=514;W.LEQUAL=515;W.GREATER=516;W.GEQUAL=518;W.NOTEQUAL=517;W.KEEP=7680;W.ZERO=0;W.REPLACE=7681;W.INCR=7682;W.DECR=7683;W.INVERT=5386;W.INCR_WRAP=34055;W.DECR_WRAP=34056;W.TEXTURE_CLAMP_ADDRESSMODE=0;W.TEXTURE_WRAP_ADDRESSMODE=1;W.TEXTURE_MIRROR_ADDRESSMODE=2;W.TEXTURE_CREATIONFLAG_STORAGE=1;W.TEXTUREFORMAT_ALPHA=0;W.TEXTUREFORMAT_LUMINANCE=1;W.TEXTUREFORMAT_LUMINANCE_ALPHA=2;W.TEXTUREFORMAT_RGB=4;W.TEXTUREFORMAT_RGBA=5;W.TEXTUREFORMAT_RED=6;W.TEXTUREFORMAT_R=6;W.TEXTUREFORMAT_R16_UNORM=33322;W.TEXTUREFORMAT_RG16_UNORM=33324;W.TEXTUREFORMAT_RGB16_UNORM=32852;W.TEXTUREFORMAT_RGBA16_UNORM=32859;W.TEXTUREFORMAT_R16_SNORM=36760;W.TEXTUREFORMAT_RG16_SNORM=36761;W.TEXTUREFORMAT_RGB16_SNORM=36762;W.TEXTUREFORMAT_RGBA16_SNORM=36763;W.TEXTUREFORMAT_RG=7;W.TEXTUREFORMAT_RED_INTEGER=8;W.TEXTUREFORMAT_R_INTEGER=8;W.TEXTUREFORMAT_RG_INTEGER=9;W.TEXTUREFORMAT_RGB_INTEGER=10;W.TEXTUREFORMAT_RGBA_INTEGER=11;W.TEXTUREFORMAT_BGRA=12;W.TEXTUREFORMAT_DEPTH24_STENCIL8=13;W.TEXTUREFORMAT_DEPTH32_FLOAT=14;W.TEXTUREFORMAT_DEPTH16=15;W.TEXTUREFORMAT_DEPTH24=16;W.TEXTUREFORMAT_DEPTH24UNORM_STENCIL8=17;W.TEXTUREFORMAT_DEPTH32FLOAT_STENCIL8=18;W.TEXTUREFORMAT_STENCIL8=19;W.TEXTUREFORMAT_UNDEFINED=4294967295;W.TEXTUREFORMAT_COMPRESSED_RGBA_BPTC_UNORM=36492;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_BPTC_UNORM=36493;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT=36495;W.TEXTUREFORMAT_COMPRESSED_RGB_BPTC_SIGNED_FLOAT=36494;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT5=33779;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT=35919;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT3=33778;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT=35918;W.TEXTUREFORMAT_COMPRESSED_RGBA_S3TC_DXT1=33777;W.TEXTUREFORMAT_COMPRESSED_RGB_S3TC_DXT1=33776;W.TEXTUREFORMAT_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT=35917;W.TEXTUREFORMAT_COMPRESSED_SRGB_S3TC_DXT1_EXT=35916;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_4x4=37808;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x4=37809;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_5x5=37810;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x5=37811;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_6x6=37812;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x5=37813;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x6=37814;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_8x8=37815;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x5=37816;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x6=37817;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x8=37818;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_10x10=37819;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x10=37820;W.TEXTUREFORMAT_COMPRESSED_RGBA_ASTC_12x12=37821;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR=37840;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR=37841;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR=37842;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR=37843;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR=37844;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR=37845;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR=37846;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR=37847;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR=37848;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR=37849;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR=37850;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR=37851;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR=37852;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR=37853;W.TEXTUREFORMAT_COMPRESSED_RGB_ETC1_WEBGL=36196;W.TEXTUREFORMAT_COMPRESSED_RGB8_ETC2=37492;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ETC2=37493;W.TEXTUREFORMAT_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2=37494;W.TEXTUREFORMAT_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2=37495;W.TEXTUREFORMAT_COMPRESSED_RGBA8_ETC2_EAC=37496;W.TEXTUREFORMAT_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC=37497;W.TEXTURETYPE_UNSIGNED_BYTE=0;W.TEXTURETYPE_UNSIGNED_INT=0;W.TEXTURETYPE_FLOAT=1;W.TEXTURETYPE_HALF_FLOAT=2;W.TEXTURETYPE_BYTE=3;W.TEXTURETYPE_SHORT=4;W.TEXTURETYPE_UNSIGNED_SHORT=5;W.TEXTURETYPE_INT=6;W.TEXTURETYPE_UNSIGNED_INTEGER=7;W.TEXTURETYPE_UNSIGNED_SHORT_4_4_4_4=8;W.TEXTURETYPE_UNSIGNED_SHORT_5_5_5_1=9;W.TEXTURETYPE_UNSIGNED_SHORT_5_6_5=10;W.TEXTURETYPE_UNSIGNED_INT_2_10_10_10_REV=11;W.TEXTURETYPE_UNSIGNED_INT_24_8=12;W.TEXTURETYPE_UNSIGNED_INT_10F_11F_11F_REV=13;W.TEXTURETYPE_UNSIGNED_INT_5_9_9_9_REV=14;W.TEXTURETYPE_FLOAT_32_UNSIGNED_INT_24_8_REV=15;W.TEXTURETYPE_UNDEFINED=16;W.TEXTURE_2D=3553;W.TEXTURE_2D_ARRAY=35866;W.TEXTURE_CUBE_MAP=34067;W.TEXTURE_CUBE_MAP_ARRAY=3735928559;W.TEXTURE_3D=32879;W.TEXTURE_NEAREST_SAMPLINGMODE=1;W.TEXTURE_NEAREST_NEAREST=1;W.TEXTURE_BILINEAR_SAMPLINGMODE=2;W.TEXTURE_LINEAR_LINEAR=2;W.TEXTURE_TRILINEAR_SAMPLINGMODE=3;W.TEXTURE_LINEAR_LINEAR_MIPLINEAR=3;W.TEXTURE_NEAREST_NEAREST_MIPNEAREST=4;W.TEXTURE_NEAREST_LINEAR_MIPNEAREST=5;W.TEXTURE_NEAREST_LINEAR_MIPLINEAR=6;W.TEXTURE_NEAREST_LINEAR=7;W.TEXTURE_NEAREST_NEAREST_MIPLINEAR=8;W.TEXTURE_LINEAR_NEAREST_MIPNEAREST=9;W.TEXTURE_LINEAR_NEAREST_MIPLINEAR=10;W.TEXTURE_LINEAR_LINEAR_MIPNEAREST=11;W.TEXTURE_LINEAR_NEAREST=12;W.TEXTURE_EXPLICIT_MODE=0;W.TEXTURE_SPHERICAL_MODE=1;W.TEXTURE_PLANAR_MODE=2;W.TEXTURE_CUBIC_MODE=3;W.TEXTURE_PROJECTION_MODE=4;W.TEXTURE_SKYBOX_MODE=5;W.TEXTURE_INVCUBIC_MODE=6;W.TEXTURE_EQUIRECTANGULAR_MODE=7;W.TEXTURE_FIXED_EQUIRECTANGULAR_MODE=8;W.TEXTURE_FIXED_EQUIRECTANGULAR_MIRRORED_MODE=9;W.TEXTURE_FILTERING_QUALITY_OFFLINE=4096;W.TEXTURE_FILTERING_QUALITY_HIGH=64;W.TEXTURE_FILTERING_QUALITY_MEDIUM=16;W.TEXTURE_FILTERING_QUALITY_LOW=8;W.SCALEMODE_FLOOR=1;W.SCALEMODE_NEAREST=2;W.SCALEMODE_CEILING=3;W.MATERIAL_TextureDirtyFlag=1;W.MATERIAL_LightDirtyFlag=2;W.MATERIAL_FresnelDirtyFlag=4;W.MATERIAL_AttributesDirtyFlag=8;W.MATERIAL_MiscDirtyFlag=16;W.MATERIAL_PrePassDirtyFlag=32;W.MATERIAL_ImageProcessingDirtyFlag=64;W.MATERIAL_AllDirtyFlag=127;W.MATERIAL_TriangleFillMode=0;W.MATERIAL_WireFrameFillMode=1;W.MATERIAL_PointFillMode=2;W.MATERIAL_PointListDrawMode=3;W.MATERIAL_LineListDrawMode=4;W.MATERIAL_LineLoopDrawMode=5;W.MATERIAL_LineStripDrawMode=6;W.MATERIAL_TriangleStripDrawMode=7;W.MATERIAL_TriangleFanDrawMode=8;W.MATERIAL_ClockWiseSideOrientation=0;W.MATERIAL_CounterClockWiseSideOrientation=1;W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR=0;W.MATERIAL_DIFFUSE_MODEL_BURLEY=1;W.MATERIAL_DIFFUSE_MODEL_LAMBERT=2;W.MATERIAL_DIFFUSE_MODEL_LEGACY=3;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_GLTF=0;W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR=1;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_GLTF=0;W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR=1;W.ACTION_NothingTrigger=0;W.ACTION_OnPickTrigger=1;W.ACTION_OnLeftPickTrigger=2;W.ACTION_OnRightPickTrigger=3;W.ACTION_OnCenterPickTrigger=4;W.ACTION_OnPickDownTrigger=5;W.ACTION_OnDoublePickTrigger=6;W.ACTION_OnPickUpTrigger=7;W.ACTION_OnPickOutTrigger=16;W.ACTION_OnLongPressTrigger=8;W.ACTION_OnPointerOverTrigger=9;W.ACTION_OnPointerOutTrigger=10;W.ACTION_OnEveryFrameTrigger=11;W.ACTION_OnIntersectionEnterTrigger=12;W.ACTION_OnIntersectionExitTrigger=13;W.ACTION_OnKeyDownTrigger=14;W.ACTION_OnKeyUpTrigger=15;W.PARTICLES_BILLBOARDMODE_Y=2;W.PARTICLES_BILLBOARDMODE_ALL=7;W.PARTICLES_BILLBOARDMODE_STRETCHED=8;W.PARTICLES_BILLBOARDMODE_STRETCHED_LOCAL=9;W.MESHES_CULLINGSTRATEGY_STANDARD=0;W.MESHES_CULLINGSTRATEGY_BOUNDINGSPHERE_ONLY=1;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION=2;W.MESHES_CULLINGSTRATEGY_OPTIMISTIC_INCLUSION_THEN_BSPHERE_ONLY=3;W.SCENELOADER_NO_LOGGING=0;W.SCENELOADER_MINIMAL_LOGGING=1;W.SCENELOADER_SUMMARY_LOGGING=2;W.SCENELOADER_DETAILED_LOGGING=3;W.PREPASS_IRRADIANCE_LEGACY_TEXTURE_TYPE=0;W.PREPASS_POSITION_TEXTURE_TYPE=1;W.PREPASS_VELOCITY_TEXTURE_TYPE=2;W.PREPASS_REFLECTIVITY_TEXTURE_TYPE=3;W.PREPASS_COLOR_TEXTURE_TYPE=4;W.PREPASS_DEPTH_TEXTURE_TYPE=5;W.PREPASS_NORMAL_TEXTURE_TYPE=6;W.PREPASS_ALBEDO_SQRT_TEXTURE_TYPE=7;W.PREPASS_WORLD_NORMAL_TEXTURE_TYPE=8;W.PREPASS_LOCAL_POSITION_TEXTURE_TYPE=9;W.PREPASS_SCREENSPACE_DEPTH_TEXTURE_TYPE=10;W.PREPASS_VELOCITY_LINEAR_TEXTURE_TYPE=11;W.PREPASS_ALBEDO_TEXTURE_TYPE=12;W.PREPASS_NORMALIZED_VIEW_DEPTH_TEXTURE_TYPE=13;W.PREPASS_IRRADIANCE_TEXTURE_TYPE=14;W.BUFFER_CREATIONFLAG_READ=1;W.BUFFER_CREATIONFLAG_WRITE=2;W.BUFFER_CREATIONFLAG_READWRITE=3;W.BUFFER_CREATIONFLAG_UNIFORM=4;W.BUFFER_CREATIONFLAG_VERTEX=8;W.BUFFER_CREATIONFLAG_INDEX=16;W.BUFFER_CREATIONFLAG_STORAGE=32;W.BUFFER_CREATIONFLAG_INDIRECT=64;W.RENDERPASS_MAIN=0;W.INPUT_ALT_KEY=18;W.INPUT_CTRL_KEY=17;W.INPUT_META_KEY1=91;W.INPUT_META_KEY2=92;W.INPUT_META_KEY3=93;W.INPUT_SHIFT_KEY=16;W.SNAPSHOTRENDERING_STANDARD=0;W.SNAPSHOTRENDERING_FAST=1;W.PERSPECTIVE_CAMERA=0;W.ORTHOGRAPHIC_CAMERA=1;W.FOVMODE_VERTICAL_FIXED=0;W.FOVMODE_HORIZONTAL_FIXED=1;W.RIG_MODE_NONE=0;W.RIG_MODE_STEREOSCOPIC_ANAGLYPH=10;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_PARALLEL=11;W.RIG_MODE_STEREOSCOPIC_SIDEBYSIDE_CROSSEYED=12;W.RIG_MODE_STEREOSCOPIC_OVERUNDER=13;W.RIG_MODE_STEREOSCOPIC_INTERLACED=14;W.RIG_MODE_VR=20;W.RIG_MODE_CUSTOM=22;W.MAX_SUPPORTED_UV_SETS=6;W.GL_ALPHA_EQUATION_ADD=32774;W.GL_ALPHA_EQUATION_MIN=32775;W.GL_ALPHA_EQUATION_MAX=32776;W.GL_ALPHA_EQUATION_SUBTRACT=32778;W.GL_ALPHA_EQUATION_REVERSE_SUBTRACT=32779;W.GL_ALPHA_FUNCTION_SRC=768;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_COLOR=769;W.GL_ALPHA_FUNCTION_SRC_ALPHA=770;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC_ALPHA=771;W.GL_ALPHA_FUNCTION_DST_ALPHA=772;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_ALPHA=773;W.GL_ALPHA_FUNCTION_DST_COLOR=774;W.GL_ALPHA_FUNCTION_ONE_MINUS_DST_COLOR=775;W.GL_ALPHA_FUNCTION_SRC_ALPHA_SATURATED=776;W.GL_ALPHA_FUNCTION_CONSTANT_COLOR=32769;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_COLOR=32770;W.GL_ALPHA_FUNCTION_CONSTANT_ALPHA=32771;W.GL_ALPHA_FUNCTION_ONE_MINUS_CONSTANT_ALPHA=32772;W.GL_ALPHA_FUNCTION_SRC1_COLOR=35065;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_COLOR=35066;W.GL_ALPHA_FUNCTION_SRC1_ALPHA=34185;W.GL_ALPHA_FUNCTION_ONE_MINUS_SRC1_ALPHA=35067;W.SnippetUrl="https://snippet.babylonjs.com";W.FOGMODE_NONE=0;W.FOGMODE_EXP=1;W.FOGMODE_EXP2=2;W.FOGMODE_LINEAR=3;W.BYTE=5120;W.UNSIGNED_BYTE=5121;W.SHORT=5122;W.UNSIGNED_SHORT=5123;W.INT=5124;W.UNSIGNED_INT=5125;W.FLOAT=5126;W.PositionKind="position";W.NormalKind="normal";W.TangentKind="tangent";W.UVKind="uv";W.UV2Kind="uv2";W.UV3Kind="uv3";W.UV4Kind="uv4";W.UV5Kind="uv5";W.UV6Kind="uv6";W.ColorKind="color";W.ColorInstanceKind="instanceColor";W.MatricesIndicesKind="matricesIndices";W.MatricesWeightsKind="matricesWeights";W.MatricesIndicesExtraKind="matricesIndicesExtra";W.MatricesWeightsExtraKind="matricesWeightsExtra";W.ANIMATIONTYPE_FLOAT=0;W.ANIMATIONTYPE_VECTOR3=1;W.ANIMATIONTYPE_QUATERNION=2;W.ANIMATIONTYPE_MATRIX=3;W.ANIMATIONTYPE_COLOR3=4;W.ANIMATIONTYPE_COLOR4=7;W.ANIMATIONTYPE_VECTOR2=5;W.ANIMATIONTYPE_SIZE=6;W.ShadowMinZ=0;W.ShadowMaxZ=1e4;W.OUTLINELAYER_SAMPLING_TRIDIRECTIONAL=0;W.OUTLINELAYER_SAMPLING_OCTADIRECTIONAL=1});var ptt,s6=I(()=>{ptt=[{regex:new RegExp("^/nodes/\\d+/extensions/")}]});function pd(n,e,t,i){let r=ot(n,e);return i?r[t][i]:r[t]}function ot(n,e,t){var i,r,s;return(s=(r=n._data)==null?void 0:r[(i=t==null?void 0:t.fillMode)!=null?i:W.MATERIAL_TriangleFillMode])==null?void 0:s.babylonMaterial}function un(n,e){return{offset:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=pd(t,r,n,e);return new we(s==null?void 0:s.uOffset,s==null?void 0:s.vOffset)},getTarget:ot,set:(t,i,r,s)=>{let a=pd(i,s,n,e);a.uOffset=t.x,a.vOffset=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uOffset`,()=>`${n}${e?"."+e:""}.vOffset`]},rotation:{type:"number",get:(t,i,r)=>{var s;return(s=pd(t,r,n,e))==null?void 0:s.wAng},getTarget:ot,set:(t,i,r,s)=>pd(i,s,n,e).wAng=t,getPropertyName:[()=>`${n}${e?"."+e:""}.wAng`]},scale:{componentsCount:2,type:"Vector2",get:(t,i,r)=>{let s=pd(t,r,n,e);return new we(s==null?void 0:s.uScale,s==null?void 0:s.vScale)},getTarget:ot,set:(t,i,r,s)=>{let a=pd(i,s,n,e);a.uScale=t.x,a.vScale=t.y},getPropertyName:[()=>`${n}${e?"."+e:""}.uScale`,()=>`${n}${e?"."+e:""}.vScale`]}}}function Gv(n){let e=n.split("/").map(i=>i.replace(/{}/g,"__array__")),t=a6;for(let i of e)i&&(t=t[i]);if(t&&t.type&&t.get)return t}function kv(n,e){let t=n.split("/").map(r=>r.replace(/{}/g,"__array__")),i=a6;for(let r of t)r&&(i=i[r]);i&&i.type&&i.get&&(i.interpolation=e)}var Wme,Hme,zme,Xme,Yme,Kme,a6,iN=I(()=>{ke();tN();zt();QD();s6();Wme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTransformNode),getPropertyName:[()=>"length"]},__array__:{__target__:!0,translation:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.position},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.position.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"position"]},rotation:{type:"Quaternion",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.rotationQuaternion},set:(n,e)=>{var t,i;return(i=(t=e._babylonTransformNode)==null?void 0:t.rotationQuaternion)==null?void 0:i.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"rotationQuaternion"]},scale:{type:"Vector3",get:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.scaling},set:(n,e)=>{var t;return(t=e._babylonTransformNode)==null?void 0:t.scaling.copyFrom(n)},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"scaling"]},weights:{length:{type:"number",get:n=>n._numMorphTargets,getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},__array__:{__target__:!0,type:"number",get:(n,e)=>{var t,i;return e!==void 0?(i=(t=n._primitiveBabylonMeshes)==null?void 0:t[0].morphTargetManager)==null?void 0:i.getTarget(e).influence:void 0},getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},type:"number[]",get:(n,e)=>[0],getTarget:n=>n._babylonTransformNode,getPropertyName:[()=>"influence"]},matrix:{type:"Matrix",get:n=>{var e,t,i;return Z.Compose((e=n._babylonTransformNode)==null?void 0:e.scaling,(t=n._babylonTransformNode)==null?void 0:t.rotationQuaternion,(i=n._babylonTransformNode)==null?void 0:i.position)},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},globalMatrix:{type:"Matrix",get:n=>{var r,s,a,o,l,c,f;let e=Z.Identity(),t=n.parent;for(;t&&t.parent;)t=t.parent;let i=((r=n._babylonTransformNode)==null?void 0:r.position._isDirty)||((a=(s=n._babylonTransformNode)==null?void 0:s.rotationQuaternion)==null?void 0:a._isDirty)||((o=n._babylonTransformNode)==null?void 0:o.scaling._isDirty);if(t){let d=(l=t._babylonTransformNode)==null?void 0:l.computeWorldMatrix(!0).invert();d&&((f=(c=n._babylonTransformNode)==null?void 0:c.computeWorldMatrix(i))==null||f.multiplyToRef(d,e))}else n._babylonTransformNode&&e.copyFrom(n._babylonTransformNode.computeWorldMatrix(i));return e},getTarget:n=>n._babylonTransformNode,isReadOnly:!0},extensions:{EXT_lights_ies:{multiplier:{type:"number",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Kr,!0)[0])==null?void 0:t.intensity},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!0)[0];t&&(t.intensity=n)}}},color:{type:"Color3",get:n=>{var e,t;return(t=(e=n._babylonTransformNode)==null?void 0:e.getChildren(i=>i instanceof Kr,!0)[0])==null?void 0:t.diffuse},getTarget:n=>{var e;return(e=n._babylonTransformNode)==null?void 0:e.getChildren(t=>t instanceof Kr,!0)[0]},set:(n,e)=>{if(e._babylonTransformNode){let t=e._babylonTransformNode.getChildren(i=>i instanceof Kr,!0)[0];t&&(t.diffuse=n)}}}},KHR_node_visibility:{visible:{type:"boolean",get:n=>n._primitiveBabylonMeshes?n._primitiveBabylonMeshes[0].isVisible:!1,getTarget:()=>{},set:(n,e)=>{e._primitiveBabylonMeshes&&e._primitiveBabylonMeshes.forEach(t=>t.isVisible=n)}}}}}},Hme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonAnimationGroup),getPropertyName:[()=>"length"]},__array__:{}},zme={length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>{var t;return(t=e.primitives[0]._instanceData)==null?void 0:t.babylonSourceMesh}),getPropertyName:[()=>"length"]},__array__:{}},Xme={__array__:{__target__:!0,orthographic:{xmag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new we((t=(e=n._babylonCamera)==null?void 0:e.orthoLeft)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoRight)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoLeft=n.x,e._babylonCamera.orthoRight=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoLeft",()=>"orthoRight"]},ymag:{componentsCount:2,type:"Vector2",get:n=>{var e,t,i,r;return new we((t=(e=n._babylonCamera)==null?void 0:e.orthoBottom)!=null?t:0,(r=(i=n._babylonCamera)==null?void 0:i.orthoTop)!=null?r:0)},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.orthoBottom=n.x,e._babylonCamera.orthoTop=n.y)},getTarget:n=>n,getPropertyName:[()=>"orthoBottom",()=>"orthoTop"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}},perspective:{aspectRatio:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.getEngine().getAspectRatio(n._babylonCamera)},getTarget:n=>n,getPropertyName:[()=>"aspectRatio"],isReadOnly:!0},yfov:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.fov},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.fov=n)},getTarget:n=>n,getPropertyName:[()=>"fov"]},zfar:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.maxZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.maxZ=n)},getTarget:n=>n,getPropertyName:[()=>"maxZ"]},znear:{type:"number",get:n=>{var e;return(e=n._babylonCamera)==null?void 0:e.minZ},set:(n,e)=>{e._babylonCamera&&(e._babylonCamera.minZ=n)},getTarget:n=>n,getPropertyName:[()=>"minZ"]}}}},Yme={__array__:{__target__:!0,emissiveFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).emissiveColor,set:(n,e,t,i)=>ot(e,t,i).emissiveColor.copyFrom(n),getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"emissiveColor"]},emissiveTexture:{extensions:{KHR_texture_transform:un("emissiveTexture")}},normalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=pd(n,t,"bumpTexture"))==null?void 0:i.level},set:(n,e,t,i)=>{let r=pd(e,i,"bumpTexture");r&&(r.level=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"level"]},extensions:{KHR_texture_transform:un("bumpTexture")}},occlusionTexture:{strength:{type:"number",get:(n,e,t)=>ot(n,e,t).ambientTextureStrength,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.ambientTextureStrength=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"ambientTextureStrength"]},extensions:{KHR_texture_transform:un("ambientTexture")}},pbrMetallicRoughness:{baseColorFactor:{type:"Color4",get:(n,e,t)=>{let i=ot(n,e,t);return ft.FromColor3(i.albedoColor,i.alpha)},set:(n,e,t,i)=>{let r=ot(e,t,i);r.albedoColor.set(n.r,n.g,n.b),r.alpha=n.a},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"albedoColor",()=>"alpha"]},baseColorTexture:{extensions:{KHR_texture_transform:un("albedoTexture")}},metallicFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).metallic,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.metallic=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"metallic"]},roughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).roughness,set:(n,e,t,i)=>{let r=ot(e,t,i);r&&(r.roughness=n)},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"roughness"]},metallicRoughnessTexture:{extensions:{KHR_texture_transform:un("metallicTexture")}}},extensions:{KHR_materials_anisotropy:{anisotropyStrength:{type:"number",get:(n,e,t)=>ot(n,e,t).anisotropy.intensity,set:(n,e,t,i)=>{ot(e,t,i).anisotropy.intensity=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"anisotropy.intensity"]},anisotropyRotation:{type:"number",get:(n,e,t)=>ot(n,e,t).anisotropy.angle,set:(n,e,t,i)=>{ot(e,t,i).anisotropy.angle=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"anisotropy.angle"]},anisotropyTexture:{extensions:{KHR_texture_transform:un("anisotropy","texture")}}},KHR_materials_clearcoat:{clearcoatFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).clearCoat.intensity,set:(n,e,t,i)=>{ot(e,t,i).clearCoat.intensity=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"clearCoat.intensity"]},clearcoatRoughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).clearCoat.roughness,set:(n,e,t,i)=>{ot(e,t,i).clearCoat.roughness=n},getTarget:(n,e,t)=>ot(n,e,t),getPropertyName:[()=>"clearCoat.roughness"]},clearcoatTexture:{extensions:{KHR_texture_transform:un("clearCoat","texture")}},clearcoatNormalTexture:{scale:{type:"number",get:(n,e,t)=>{var i;return(i=ot(n,e,t).clearCoat.bumpTexture)==null?void 0:i.level},getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).clearCoat.bumpTexture.level=n},extensions:{KHR_texture_transform:un("clearCoat","bumpTexture")}},clearcoatRoughnessTexture:{extensions:{KHR_texture_transform:un("clearCoat","textureRoughness")}}},KHR_materials_dispersion:{dispersion:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.dispersion,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.dispersion=n}},KHR_materials_emissive_strength:{emissiveStrength:{type:"number",get:(n,e,t)=>ot(n,e,t).emissiveIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).emissiveIntensity=n}},KHR_materials_ior:{ior:{type:"number",get:(n,e,t)=>ot(n,e,t).indexOfRefraction,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).indexOfRefraction=n}},KHR_materials_iridescence:{iridescenceFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.intensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.intensity=n},iridescenceIor:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.indexOfRefraction,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.indexOfRefraction=n},iridescenceTexture:{extensions:{KHR_texture_transform:un("iridescence","texture")}},iridescenceThicknessMaximum:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.maximumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.maximumThickness=n},iridescenceThicknessMinimum:{type:"number",get:(n,e,t)=>ot(n,e,t).iridescence.minimumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).iridescence.minimumThickness=n},iridescenceThicknessTexture:{extensions:{KHR_texture_transform:un("iridescence","thicknessTexture")}}},KHR_materials_sheen:{sheenColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).sheen.color,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).sheen.color.copyFrom(n)},sheenColorTexture:{extensions:{KHR_texture_transform:un("sheen","texture")}},sheenRoughnessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).sheen.intensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).sheen.intensity=n},sheenRoughnessTexture:{extensions:{KHR_texture_transform:un("sheen","thicknessTexture")}}},KHR_materials_specular:{specularFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).metallicF0Factor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).metallicF0Factor=n,getPropertyName:[()=>"metallicF0Factor"]},specularColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).metallicReflectanceColor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).metallicReflectanceColor.copyFrom(n),getPropertyName:[()=>"metallicReflectanceColor"]},specularTexture:{extensions:{KHR_texture_transform:un("metallicReflectanceTexture")}},specularColorTexture:{extensions:{KHR_texture_transform:un("reflectanceTexture")}}},KHR_materials_transmission:{transmissionFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.refractionIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.refractionIntensity=n,getPropertyName:[()=>"subSurface.refractionIntensity"]},transmissionTexture:{extensions:{KHR_texture_transform:un("subSurface","refractionIntensityTexture")}}},KHR_materials_diffuse_transmission:{diffuseTransmissionFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.translucencyIntensity,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.translucencyIntensity=n},diffuseTransmissionTexture:{extensions:{KHR_texture_transform:un("subSurface","translucencyIntensityTexture")}},diffuseTransmissionColorFactor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).subSurface.translucencyColor,getTarget:ot,set:(n,e,t,i)=>{var r;return n&&((r=ot(e,t,i).subSurface.translucencyColor)==null?void 0:r.copyFrom(n))}},diffuseTransmissionColorTexture:{extensions:{KHR_texture_transform:un("subSurface","translucencyColorTexture")}}},KHR_materials_volume:{attenuationColor:{type:"Color3",get:(n,e,t)=>ot(n,e,t).subSurface.tintColor,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.tintColor.copyFrom(n)},attenuationDistance:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.tintColorAtDistance,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.tintColorAtDistance=n},thicknessFactor:{type:"number",get:(n,e,t)=>ot(n,e,t).subSurface.maximumThickness,getTarget:ot,set:(n,e,t,i)=>ot(e,t,i).subSurface.maximumThickness=n},thicknessTexture:{extensions:{KHR_texture_transform:un("subSurface","thicknessTexture")}}}}}},Kme={KHR_lights_punctual:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},range:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.range},set:(n,e)=>e._babylonLight?e._babylonLight.range=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"range"]},spot:{innerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.innerAngle},set:(n,e)=>e._babylonLight?e._babylonLight.innerAngle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"innerConeAngle"]},outerConeAngle:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.angle},set:(n,e)=>e._babylonLight?e._babylonLight.angle=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"outerConeAngle"]}}}}},EXT_lights_area:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]},__array__:{__target__:!0,color:{type:"Color3",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.diffuse},set:(n,e)=>{var t;return(t=e._babylonLight)==null?void 0:t.diffuse.copyFrom(n)},getTarget:n=>n._babylonLight,getPropertyName:[n=>"diffuse"]},intensity:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.intensity},set:(n,e)=>e._babylonLight?e._babylonLight.intensity=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"intensity"]},size:{type:"number",get:n=>{var e;return(e=n._babylonLight)==null?void 0:e.height},set:(n,e)=>e._babylonLight?e._babylonLight.height=n:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"size"]},rect:{aspect:{type:"number",get:n=>{var e,t;return((e=n._babylonLight)==null?void 0:e.width)/((t=n._babylonLight)==null?void 0:t.height)},set:(n,e)=>e._babylonLight?e._babylonLight.width=n*e._babylonLight.height:void 0,getTarget:n=>n._babylonLight,getPropertyName:[n=>"aspect"]}}}}},EXT_lights_ies:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonLight),getPropertyName:[n=>"length"]}}},EXT_lights_image_based:{lights:{length:{type:"number",get:n=>n.length,getTarget:n=>n.map(e=>e._babylonTexture),getPropertyName:[n=>"length"]},__array__:{__target__:!0,intensity:{type:"number",get:n=>{var e;return(e=n._babylonTexture)==null?void 0:e.level},set:(n,e)=>{e._babylonTexture&&(e._babylonTexture.level=n)},getTarget:n=>n._babylonTexture},rotation:{type:"Quaternion",get:n=>{var e;return n._babylonTexture&&Ke.FromRotationMatrix((e=n._babylonTexture)==null?void 0:e.getReflectionTextureMatrix())},set:(n,e)=>{var t;e._babylonTexture&&((t=e._babylonTexture.getScene())!=null&&t.useRightHandedSystem||(n=Ke.Inverse(n)),Z.FromQuaternionToRef(n,e._babylonTexture.getReflectionTextureMatrix()))},getTarget:n=>n._babylonTexture}}}}};a6={cameras:Xme,nodes:Wme,materials:Yme,extensions:Kme,animations:Hme,meshes:zme}});function rN(...n){let e=t=>!!t&&typeof t=="object";return n.reduce((t,i)=>{let r=Object.keys(i);for(let s of r){let a=t[s],o=i[s];Array.isArray(a)&&Array.isArray(o)?t[s]=a.concat(...o):e(a)&&e(o)?t[s]=rN(a,o):t[s]=o}return t},{})}var o6=I(()=>{});var Wv,l6=I(()=>{Wv=class{constructor(e){this._factory=e}get value(){return this._factory&&(this._value=this._factory(),this._factory=void 0),this._value}}});var zb,c6=I(()=>{ke();Yf();zb=class{get currentFrame(){return this._currentFrame}get weight(){return this._weight}get currentValue(){return this._currentValue}get targetPath(){return this._targetPath}get target(){return this._currentActiveTarget}get isAdditive(){return this._host&&this._host.isAdditive}constructor(e,t,i,r){if(this._events=new Array,this._currentFrame=0,this._originalValue=new Array,this._originalBlendValue=null,this._offsetsCache={},this._highLimitsCache={},this._stopped=!1,this._blendingFactor=0,this._currentValue=null,this._currentActiveTarget=null,this._directTarget=null,this._targetPath="",this._weight=1,this._absoluteFrameOffset=0,this._previousElapsedTime=0,this._yoyoDirection=1,this._previousAbsoluteFrame=0,this._targetIsArray=!1,this._coreRuntimeAnimation=null,this._animation=t,this._target=e,this._scene=i,this._host=r,this._activeTargets=[],t._runtimeAnimations.push(this),this._animationState={key:0,repeatCount:0,loopMode:this._getCorrectLoopMode()},this._animation.dataType===mt.ANIMATIONTYPE_MATRIX&&(this._animationState.workValue=Z.Zero()),this._keys=this._animation.getKeys(),this._minFrame=this._keys[0].frame,this._maxFrame=this._keys[this._keys.length-1].frame,this._minFrame!==0){let a={frame:0,value:this._keys[0].value};this._keys.splice(0,0,a)}if(this._target instanceof Array){let a=0;for(let o of this._target)this._preparePath(o,a),this._getOriginalValues(a),a++;this._targetIsArray=!0}else this._preparePath(this._target),this._getOriginalValues(),this._targetIsArray=!1,this._directTarget=this._activeTargets[0];let s=t.getEvents();if(s&&s.length>0)for(let a of s)this._events.push(a._clone());this._enableBlending=e&&e.animationPropertiesOverride?e.animationPropertiesOverride.enableBlending:this._animation.enableBlending}_preparePath(e,t=0){let i=this._animation.targetPropertyPath;if(i.length>1){let r=e;for(let s=0;s-1&&this._animation.runtimeAnimations.splice(e,1)}setValue(e,t){if(this._targetIsArray){for(let i=0;ii[i.length-1].frame&&(e=i[i.length-1].frame);let r=this._events;if(r.length)for(let a=0;athis._maxFrame)&&(t=this._minFrame),(ithis._maxFrame)&&(i=this._maxFrame),h=i-t;let m,_=e*(o.framePerSecond*s)/1e3+this._absoluteFrameOffset,p=0,g=!1,v=r&&this._animationState.loopMode===mt.ANIMATIONLOOPMODE_YOYO;if(v){let T=(_-t)/h,S=Math.sin(T*Math.PI);_=Math.abs(S)*h+t;let A=S>=0?1:-1;this._yoyoDirection!==A&&(g=!0),this._yoyoDirection=A}if(this._previousElapsedTime=e,this._previousAbsoluteFrame=_,!r&&i>=t&&(_>=h&&s>0||_<=0&&s<0))c=!1,p=o.evaluate(i);else if(!r&&t>=i&&(_<=h&&s<0||_>=0&&s>0))c=!1,p=o.evaluate(t);else if(this._animationState.loopMode!==mt.ANIMATIONLOOPMODE_CYCLE){let T=i.toString()+t.toString();if(!this._offsetsCache[T]){this._animationState.repeatCount=0,this._animationState.loopMode=mt.ANIMATIONLOOPMODE_CYCLE;let S=o._interpolate(t,this._animationState),E=o._interpolate(i,this._animationState);switch(this._animationState.loopMode=this._getCorrectLoopMode(),o.dataType){case mt.ANIMATIONTYPE_FLOAT:this._offsetsCache[T]=E-S;break;case mt.ANIMATIONTYPE_QUATERNION:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_VECTOR3:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_VECTOR2:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_SIZE:this._offsetsCache[T]=E.subtract(S);break;case mt.ANIMATIONTYPE_COLOR3:this._offsetsCache[T]=E.subtract(S);break;default:break}this._highLimitsCache[T]=E}p=this._highLimitsCache[T],m=this._offsetsCache[T]}if(m===void 0)switch(o.dataType){case mt.ANIMATIONTYPE_FLOAT:m=0;break;case mt.ANIMATIONTYPE_QUATERNION:m=HD;break;case mt.ANIMATIONTYPE_VECTOR3:m=zD;break;case mt.ANIMATIONTYPE_VECTOR2:m=XD;break;case mt.ANIMATIONTYPE_SIZE:m=YD;break;case mt.ANIMATIONTYPE_COLOR3:m=KD;break;case mt.ANIMATIONTYPE_COLOR4:m=jD;break}if(this._host&&this._host.syncRoot){let T=this._host.syncRoot,S=(T.masterFrame-T.fromFrame)/(T.toFrame-T.fromFrame);f=t+h*S}else _>0&&t>i||_<0&&t0&&this.currentFrame>f||s<0&&this.currentFrame0?0:o.getKeys().length-1}this._currentFrame=f,this._animationState.repeatCount=h===0?0:_/h>>0,this._animationState.highLimitValue=p,this._animationState.offsetValue=m}let u=o._interpolate(f,this._animationState);if(this.setValue(u,a),d.length){for(let m=0;m=0&&f>=d[m].frame&&d[m].frame>=t||h<0&&f<=d[m].frame&&d[m].frame<=t){let _=d[m];_.isDone||(_.onlyOnce&&(d.splice(m,1),m--),_.isDone=!0,_.action(f))}}return c||(this._stopped=!0),c}}});function jme(n){if(n.totalWeight===0&&n.totalAdditiveWeight===0)return n.originalValue;let e=1,t=$.Vector3[0],i=$.Vector3[1],r=$.Quaternion[0],s=0,a=n.animations[0],o=n.originalValue,l,c=!1;if(n.totalWeight<1)l=1-n.totalWeight,o.decompose(i,r,t);else{if(s=1,e=n.totalWeight,l=a.weight/e,l==1)if(n.totalAdditiveWeight)c=!0;else return a.currentValue;a.currentValue.decompose(i,r,t)}if(!c){i.scaleInPlace(l),t.scaleInPlace(l),r.scaleInPlace(l);for(let d=s;d0?l:-l,r),u.scaleAndAddToRef(l,t)}r.normalize()}for(let d=0;d0)r.copyFrom(i);else if(n.animations.length===1){if(Ke.SlerpToRef(i,t.currentValue,Math.min(1,n.totalWeight),r),n.totalAdditiveWeight===0)return r}else if(n.animations.length>1){let s=1,a,o;if(n.totalWeight<1){let c=1-n.totalWeight;a=[],o=[],a.push(i),o.push(c)}else{if(n.animations.length===2&&(Ke.SlerpToRef(n.animations[0].currentValue,n.animations[1].currentValue,n.animations[1].weight/n.totalWeight,e),n.totalAdditiveWeight===0))return e;a=[],o=[],s=n.totalWeight}for(let c=0;c=l&&v.frame<=c&&(s?(S=v.value.clone(),m?(T=S.getTranslation(),S.setTranslation(T.scaleInPlace(_))):p&&a?(T=S.getTranslation(),S.setTranslation(T.multiplyInPlace(a))):S=v.value):S=v.value,g.push({frame:v.frame+r,value:S}));return this.animations[0].createRange(i,l+r,c+r),!0}),n&&(n.prototype._animate=function(t){if(!this.animationsEnabled)return;let i=br.Now;if(!this._animationTimeLast){if(this._pendingData.length>0)return;this._animationTimeLast=i}this.deltaTime=t!==void 0?t:this.useConstantAnimationDeltaTime?16:(i-this._animationTimeLast)*this.animationTimeScale,this._animationTimeLast=i;let r=this._activeAnimatables;if(r.length===0)return;this._animationTime+=this.deltaTime;let s=this._animationTime;for(let a=0;at.playOrder-i.playOrder)},n.prototype.beginWeightedAnimation=function(t,i,r,s=1,a,o=1,l,c,f,d,h=!1){let u=this.beginAnimation(t,i,r,a,o,l,c,!1,f,d,h);return u.weight=s,u},n.prototype.beginAnimation=function(t,i,r,s,a=1,o,l,c=!0,f,d,h=!1){if(a<0){let m=i;i=r,r=m,a=-a}i>r&&(a=-a),c&&this.stopAnimation(t,void 0,f),l||(l=new Hv(this,t,i,r,s,a,o,void 0,d,h));let u=f?f(t):!0;if(t.animations&&u&&l.appendAnimations(t,t.animations),t.getAnimatables){let m=t.getAnimatables();for(let _=0;_s&&(o=-o),new Hv(this,t,r,s,a,o,l,i,c,f)},n.prototype.beginDirectHierarchyAnimation=function(t,i,r,s,a,o,l,c,f,d=!1){let h=t.getDescendants(i),u=[];u.push(this.beginDirectAnimation(t,r,s,a,o,l,c,f,d));for(let m of h)u.push(this.beginDirectAnimation(m,r,s,a,o,l,c,f,d));return u},n.prototype.getAnimatableByTarget=function(t){for(let i=0;i{mi();c6();Yf();tc();ke();Hv=class n{get syncRoot(){return this._syncRoot}get masterFrame(){return this._runtimeAnimations.length===0?0:this._runtimeAnimations[0].currentFrame}get weight(){return this._weight}set weight(e){if(e===-1){this._weight=-1;return}this._weight=Math.min(Math.max(e,0),1)}get speedRatio(){return this._speedRatio}set speedRatio(e){for(let t=0;t-1&&(this._scene._activeAnimatables.splice(t,1),this._scene._activeAnimatables.push(this))}return this}getAnimations(){return this._runtimeAnimations}appendAnimations(e,t){for(let i=0;i{this.onAnimationLoopObservable.notifyObservers(this),this.onAnimationLoop&&this.onAnimationLoop()},this._runtimeAnimations.push(s)}}getAnimationByTargetProperty(e){let t=this._runtimeAnimations;for(let i=0;i-1){let a=this._runtimeAnimations;for(let o=a.length-1;o>=0;o--){let l=a[o];e&&l.animation.name!=e||t&&!t(l.target)||(l.dispose(),a.splice(o,1))}a.length==0&&(i||this._scene._activeAnimatables.splice(s,1),r||this._raiseOnAnimationEnd())}}else{let s=this._scene._activeAnimatables.indexOf(this);if(s>-1){i||this._scene._activeAnimatables.splice(s,1);let a=this._runtimeAnimations;for(let o=0;o{this.onAnimationEndObservable.add(()=>{e(this)},void 0,void 0,this,!0)})}_animate(e){if(this._paused)return this.animationStarted=!1,this._pausedDelay===null&&(this._pausedDelay=e),!0;if(this._localDelayOffset===null?(this._localDelayOffset=e,this._pausedDelay=null):this._pausedDelay!==null&&(this._localDelayOffset+=e-this._pausedDelay,this._pausedDelay=null),this._manualJumpDelay!==null&&(this._localDelayOffset+=this.speedRatio<0?-this._manualJumpDelay:this._manualJumpDelay,this._manualJumpDelay=null,this._frameToSyncFromJump=null),this._goToFrame=null,!n.ProcessPausedAnimatables&&this._weight===0&&this._previousWeight===0)return!0;this._previousWeight=this._weight;let t=!1,i=this._runtimeAnimations,r;for(r=0;r{Gb();nN();Ys();nN();f6(ti,Qa)});var h6={};Fe(h6,{AnimationGroup:()=>sN,TargetedAnimation:()=>Xb});var Xb,sN,u6=I(()=>{Yf();mi();Gi();Df();d6();Hx();Xb=class{getClassName(){return"TargetedAnimation"}constructor(e){this.parent=e,this.uniqueId=gc.UniqueId}serialize(){let e={};return e.animation=this.animation.serialize(),e.targetId=this.target.id,e.targetUniqueId=this.target.uniqueId,e}},sN=class n{get mask(){return this._mask}set mask(e){this._mask!==e&&(this._mask=e,this.syncWithMask(!0))}syncWithMask(e=!1){if(!this.mask&&!e){this._numActiveAnimatables=this._targetedAnimations.length;return}this._numActiveAnimatables=0;for(let t=0;t0)){for(let t=0;ta&&(a=l.to);let o=new n(e[0].name+"_merged",e[0]._scene,r);for(let l of e){i&&l.normalize(s,a);for(let c of l.targetedAnimations)o.addTargetedAnimation(c.animation,c.target);t&&l.dispose()}return o}getScene(){return this._scene}constructor(e,t=null,i=-1,r=0){this.name=e,this._targetedAnimations=new Array,this._animatables=new Array,this._from=Number.MAX_VALUE,this._to=-Number.MAX_VALUE,this._speedRatio=1,this._loopAnimation=!1,this._isAdditive=!1,this._weight=-1,this._playOrder=0,this._enableBlending=null,this._blendingSpeed=null,this._numActiveAnimatables=0,this._shouldStart=!0,this._parentContainer=null,this.onAnimationEndObservable=new te,this.onAnimationLoopObservable=new te,this.onAnimationGroupLoopObservable=new te,this.onAnimationGroupEndObservable=new te,this.onAnimationGroupPauseObservable=new te,this.onAnimationGroupPlayObservable=new te,this.metadata=null,this._mask=null,this._animationLoopFlags=[],this._scene=t||Oe.LastCreatedScene,this._weight=i,this._playOrder=r,this.uniqueId=this._scene.getUniqueId(),this._scene.addAnimationGroup(this)}addTargetedAnimation(e,t){let i=new Xb(this);i.animation=e,i.target=t;let r=e.getKeys();return this._from>r[0].frame&&(this._from=r[0].frame),this._to-1;t--)this._targetedAnimations[t].animation===e&&this._targetedAnimations.splice(t,1)}normalize(e=null,t=null){e==null&&(e=this._from),t==null&&(t=this._to);for(let i=0;ie){let l={frame:e,value:a.value,inTangent:a.inTangent,outTangent:a.outTangent,interpolation:a.interpolation};s.splice(0,0,l)}if(o.frame{this.onAnimationLoopObservable.notifyObservers(t),!this._animationLoopFlags[i]&&(this._animationLoopFlags[i]=!0,this._animationLoopCount++,this._animationLoopCount===this._numActiveAnimatables&&(this.onAnimationGroupLoopObservable.notifyObservers(this),this._animationLoopCount=0,this._animationLoopFlags.length=0))}}start(e=!1,t=1,i,r,s){if(this._isStarted||this._targetedAnimations.length===0)return this;this._loopAnimation=e,this._shouldStart=!1,this._animationLoopCount=0,this._animationLoopFlags.length=0;for(let a=0;a{this.onAnimationEndObservable.notifyObservers(o),this._checkAnimationGroupEnded(l)},this._processLoop(l,o,a),this._animatables.push(l)}return this.syncWithMask(),this._scene.sortActiveAnimatables(),this._speedRatio=t,this._isStarted=!0,this._isPaused=!1,this.onAnimationGroupPlayObservable.notifyObservers(this),this}pause(){if(!this._isStarted)return this;this._isPaused=!0;for(let e=0;e0?this._scene._activeAnimatables[i++]=s:e&&this._checkAnimationGroupEnded(s,e)}return this._scene._activeAnimatables.length=i,this._isStarted=!1,this}setWeightForAllAnimatables(e){for(let t=0;t-1&&this._parentContainer.animationGroups.splice(e,1),this._parentContainer=null}this.onAnimationEndObservable.clear(),this.onAnimationGroupEndObservable.clear(),this.onAnimationGroupPauseObservable.clear(),this.onAnimationGroupPlayObservable.clear(),this.onAnimationLoopObservable.clear(),this.onAnimationGroupLoopObservable.clear()}_checkAnimationGroupEnded(e,t=!1){let i=this._animatables.indexOf(e);i>-1&&this._animatables.splice(i,1),this._animatables.length===this._targetedAnimations.length-this._numActiveAnimatables&&(this._isStarted=!1,t||this.onAnimationGroupEndObservable.notifyObservers(this),this._animatables.length=0)}clone(e,t,i=!1,r=!1){let s=new n(e||this.name,this._scene,this._weight,this._playOrder);s._from=this.from,s._to=this.to,s._speedRatio=this.speedRatio,s._loopAnimation=this.loopAnimation,s._isAdditive=this.isAdditive,s._enableBlending=this.enableBlending,s._blendingSpeed=this.blendingSpeed,s.metadata=this.metadata,s.mask=this.mask;for(let a of this._targetedAnimations)s.addTargetedAnimation(i?a.animation.clone(r):a.animation,t?t(a.target):a.target);return s}serialize(){let e={};e.name=this.name,e.from=this.from,e.to=this.to,e.speedRatio=this.speedRatio,e.loopAnimation=this.loopAnimation,e.isAdditive=this.isAdditive,e.weight=this.weight,e.playOrder=this.playOrder,e.enableBlending=this.enableBlending,e.blendingSpeed=this.blendingSpeed,e.targetedAnimations=[];for(let t=0;t_[0].frame&&(c=_[0].frame),f<_[_.length-1].frame&&(f=_[_.length-1].frame)}o._from=c,o._to=f}return o}static ClipKeys(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipKeysInPlace(a,t,i,s)}static ClipKeysInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!1)}static ClipFrames(e,t,i,r,s){let a=e.clone(r||e.name);return n.ClipFramesInPlace(a,t,i,s)}static ClipFramesInPlace(e,t,i,r){return n.ClipInPlace(e,t,i,r,!0)}static ClipInPlace(e,t,i,r,s=!1){let a=Number.MAX_VALUE,o=-Number.MAX_VALUE,l=e.targetedAnimations;for(let c=0;c=t&&_<=i||s&&p.frame>=t&&p.frame<=i){let g={frame:p.frame,value:p.value.clone?p.value.clone():p.value,inTangent:p.inTangent,outTangent:p.outTangent,interpolation:p.interpolation,lockedTangent:p.lockedTangent};m===Number.MAX_VALUE&&(m=g.frame),g.frame-=m,u.push(g)}}if(u.length===0){l.splice(c,1),c--;continue}a>u[0].frame&&(a=u[0].frame),ozv,TransformNodeAnimationPropertyInfo:()=>Bp,WeightAnimationPropertyInfo:()=>Yb,getQuaternion:()=>m6,getVector3:()=>aN,getWeights:()=>p6});function aN(n,e,t,i){return b.FromArray(e,t).scaleInPlace(i)}function m6(n,e,t,i){return Ke.FromArray(e,t).scaleInPlace(i)}function p6(n,e,t,i){let r=new Array(n._numMorphTargets);for(let s=0;s{Yf();ke();iN();zv=class{constructor(e,t,i,r){this.type=e,this.name=t,this.getValue=i,this.getStride=r}_buildAnimation(e,t,i){let r=new mt(e,this.name,t,this.type);return r.setKeys(i,!0),r}},Bp=class extends zv{buildAnimations(e,t,i,r){let s=[];return s.push({babylonAnimatable:e._babylonTransformNode,babylonAnimation:this._buildAnimation(t,i,r)}),s}},Yb=class extends zv{buildAnimations(e,t,i,r){let s=[];if(e._numMorphTargets)for(let a=0;a({frame:l.frame,inTangent:l.inTangent?l.inTangent[a]:void 0,value:l.value[a],outTangent:l.outTangent?l.outTangent[a]:void 0,interpolation:l.interpolation})),!0),e._primitiveBabylonMeshes){for(let l of e._primitiveBabylonMeshes)if(l.morphTargetManager){let c=l.morphTargetManager.getTarget(a),f=o.clone();c.animations.push(f),s.push({babylonAnimatable:c,babylonAnimation:f})}}}return s}};kv("/nodes/{}/translation",[new Bp(mt.ANIMATIONTYPE_VECTOR3,"position",aN,()=>3)]);kv("/nodes/{}/rotation",[new Bp(mt.ANIMATIONTYPE_QUATERNION,"rotationQuaternion",m6,()=>4)]);kv("/nodes/{}/scale",[new Bp(mt.ANIMATIONTYPE_VECTOR3,"scaling",aN,()=>3)]);kv("/nodes/{}/weights",[new Yb(mt.ANIMATIONTYPE_FLOAT,"influence",p6,n=>n._numMorphTargets)])});var Qme,$me,Jme,epe,oN,Kb,lN,v6,jb=I(()=>{Xr();jP();Qme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAgAElEQVR42u29yY5tWXIlZnbuiSaTbZFUkZRKrCKhElASQA0EoQABgn6hJvoXzfUP+gP9hWb6Bg00IgRoQJaKqUxmZmTEe8/v0uB2u7Fm2T7HIyIrnz88uPvt3f2a2WrMbOvf/u3PvvzP/sUf/N6//i8vf/lv/3v5H//d//Sb//Uq/5u8yf8hV/m/5Cp/L1f5hVzlG7nKJ7mKyJuIXN/hPwqXI/g++zq6rPI5u8z+WqfLre+zy7PrVv9L8brsMiGvk8XLmM/sdfHXal4e3ad6GXPdyu2ij8u/+uv/5cuf/OSLfdtEfvUr+dnf/d0X//t3H/7bf/hP//N/928h/0Yg/4VA/kogfyGQP5Wr/IFAvhbIlwK5CGQTPP+9z5uPeePJSW+yo2+s/GtN30Rnv1E+f5zxof9R/lSXv/nr//mrr3+i+5dfyX7ZZQP07Tffys//8R/l/9TtX7790T/7r/8G8pdy+/8XAvnnAvkzgfwzgfyxQP5AIL8vkJ8K5KsmMVzu1U7p5PA5AXxOAJ8TwPf7sX/51ZeXfcemqnp9w/W77/S7X/6T/vzf/7383RWCX3/z05/9i3/13/0PX//eX/2FyP8tIv+PiPy9iPy/IvIzEfm5iPxCRH4lIt/c/393//9BRD6KyKf7f488fP74/PH544dJAF9cLl98IZfLBZtuqterXr/7Dt9982v95S9+Lv+gF/3i7Spv/8lf/vnf/vGf/dF/JfKnIvLnIvLvReQ/NEngn0TklyLy6/v/34jIt00iGJOBlxAsdvv54/PH5493SQCXy9t2ueh2ueimKorrFbjq9eNH+fDtb+TXv/ol/vHyhX4Fxfbx7euPf/Lnf/PfiPyeiPyhiPxxkwB+fk8AvxzQgJcIrGTwFsiAEXH4/PH54/PHUgLY7whgu2C7bLqpQgHB2xvePn6SDx8+6G9+84384vKF/IPu8iVU9Y/+7C/+jWxffiHytYj8VER+X0T+oEEBvxqQwCMJeIngo5EI3goIwVMIPn98/vj8ESaAbbtu2ybbvl8u2ybbdtluSECA65u8ffqIDx8+6G++/VZ/efkV/sO261dQXP7wT/7kX8vl8qXIFyLylbySwe/dE0CLAr65B/9vGn0gQwRMMqgmhM/J4fPH548eAezbZd/lsm3YtssNAYiqiogAAkCvb5/k46cP8u2HD/rrb7+R/2/b9Wu9yJe//8d/9Ney6S5yEZFdRL68/38khG/uKOCnAwoYkcCoEXwkEgGDDq7CeQfyOTl8/vhd1QCum26ybZtu2yabbrKpQvXue1yvuF6v+vbpTT5+/CDffviAX1++1V9sO77WXb/66R/+4V/dgkbllQi+aBLBV/dE8LWRALwkYCWCNyMZXElkwLTMeMkga/P4/PH547ccAVwuctkvdxSw6bbdtYDbTfSZBN7e8PHTR/3u4wf55vKd/nL7DX6mu3791U9//5+/gkNFZGuSgZUQvnKowKgLWLTAQgRtEniTuEfwaELw0MJvf3LQzynud+53uG+X6y3gN9kul+2y6XVT1U27JCDAFVc8ksAn/e7jR/nN5YP+avtWfq6Xy9f7Vz/9w1dgRYngiyYhfNkkgzYBWHTg44AEMmqQUYQKOmDaiCIa8TmsfmzB+DnZDQjgcpGLbti2y3bZHjRAdRMVvb/dcYU8kcDbPQlsH/CrbddfbF98+RPZfvLFnAQeieCRDC5DMvju/vmD4JkEvjRQgKULeGggowdHkAHTYxihg89vu88I5UeGAPSOAFTlrgPopiqbKPSmCKreUoAAkCcSePukHz590m8vH+WbD9/JP335k6/+tA86KxFchv8jMvhiogE4JQm8XhfKqOAqx5qRPyeGzx8/cgSwbXcUoLJtim27C4Oi93+4v6VxQwKAvl2v+Hj9pB8+fZJvt4/yzfbF9lPdv/wJnsE2BogmyeCRED40tGFvksIXiSbgiYSRRpDNDZ6BDI6ghM+J4fPHeyKAO+zX7cb9t4tedMMNAQju5V+f1uAtBSiu1zsduMrHy5t8ePsk3376KN98sX/xE5FPAnm7/782o0DiUINXMkCXCB7/P94/e87AWUmARQWVvgMuKej9t1RLBp+Tw+ePgwngsutFFdu26WXbbl+rSvdfbnqAiuA23QcBgCugV1zl7e1NPm5v+LC96XfbJ/1W9y++fgXjA3bDYXV+MuhRwSPwL3JLMFYC+HS/LU8HYrGwIhwyNOF12SvgM4SgztdifP85MXz+KGsA2C6X7aJ6bXSAOwrY5OYIqGy3d5uq4P5GhABXuV6veLvRAf10fZMPb2/y3b7vX7+g+9v98/WOBq7GG7RNAlYy+Dgkhhb+Xxp0sE8IAC4SGAP/TbgVJK/PoJPBnAiwPKxsXfbbnRg+i3s/JAK4Q/4b9NfLtomBAqCickMBjy7BuywAUVyv8na94tMjCVzf9KNcLl/0SeA6oAEYb1i9g+FtSALb/bKL8/+t+wxXFMyswqiHoK4ToIgKqslgpg1qUC0QoYbvJZg/B/q5v4szHmPX7YEAsD0CX25OwEUVm9xag1+agKg+nxQArnKjAtDr9U0+Xd/k4/UqH7bL5YsewrcBBiMJZPRAp6TwQgWfjM9vgRbgUYGL8AvLWH2gqhesCokeUmCSwPsnhs8fP2YNYMO2XeSmAWxy2VQaXeDmDIhApf33rD4PTUCuV+DtCn27XuXT5ir8VmCJ2G5BpBM8/r/dEcJb8/0lEQMtJHA5TAlqNuLRhJChhEpSqFabH3di+G1AGj+W1/dyAR4IYJNNnuLf6+tWC9CHHiAtFhAIFLjK2/Uqn65X+SS67aK+3QeTDoy/IG2ogQ7fb/dAtz5vBgrYGqrwNtCHsVfgIvwK07OTQBURVNCBFpKCOjqCHn5L/67TgTN+fpySAC56nwSUi256kXsSuFGAVyLoUIDo8/Pz7fdoErr/v17lk162HbgHvFpIYDfoAJJfW4sGPjkU4VNAF8ZEcLmLhdc7kljdY1y1Dq9yLiI4IiRqcLujb138KIPn80ejATwRwIbtBvn1cqv+2J78/5EI5N4cJA8qIPcmwRsKAHDF9WYP6mV7VmrgLuTpxYTcMEW0LAmoQxFsuvAI8tv/a/C5fV2ZMMiKg++FCM7RDPRu8ebWY7VG6VJi+Bzk35MI2LsAckMAgwvQ0gC5DQjd3ABg2HQLAPpEAlZ1Bu7VV7MGHDFRAbo3VKsTbAY9sPWC/uvx86gBbDK3D1eEQS8pbAeSgSwmhepnJb6uBv/o/PzHLzxWA/X7TH77De5j6AGQi6o0CUGfCOD2X7cXAlCFQABtEsGLDtxuOyQB2UTQBKZe5GUPXgkUYCUAbZJRhBDeuq8xBf+bgwbehDm+BFQi2IJksOocvA8ysIMfxluVcRsY/eB3JzH8GFDAXQO48X/dcIf9jyDHptIigDsFkEe066tBSETQUYF7ElDdYEBytN4+rk9UcBPfrKaZqFHWcw3i4J8/X4ev2//bSXqAhwTay6OEIPLD2Ipt8OtAGzxkwLw9WVFRjTc/qC6H3+YK/b1oAA0KuOizHfieCLaHHiAb5NYTIC9EMEbZrVEQt1xwhVy1UfBh8PUOquMizwaap3tQXfY5B//tea/NZdfhsvbz+PURQTDSGWB87VX/7WSd4KxjUqrIgE0IUkoKGnhIvwvawpGf6eECXJ7tv4qbA7DJgwpsKthEmmYgfaAAffYF3HLxo0vwNjJ0SwRWMG4db4eh1gPNm18vQ+us/0eGmxDemu/fnM/X4evq/8342ksGHgLY5LyT/zg0wM8lcMjgGFXwqIOVFJBQw99eCvF9oZL9Mfl3QwAvIXDsBRC9R+fz8x0FPBLB0xJEpwUobrfAkARgIAF41h3wQgP6QAmX5E/7eI43IxGwwf/moIkRyWRJQIPgt9CA9b39nzt4bYUWjAlCjWDPgv8IEjgLJfzuaAsrv9VdVG4OwOXW/fdoA35qAdL0BDwvf6AAUVHd8LIEu94A3K+Q+2YxaB84MOH62P//qoo38fCRDERE2zf0JfmDa+MieElAjcDPKz+mRKCOtdgGtXaBjgNJ4H2owSpNeAW/rRH4CaHSpMwnBYYycjgSJwfie9CR6mPu20Uv8kABF206AvXlBMiIBPSlB9wjBW1fwEuSb94296VCqgMaGCt/G1BbExi3IG+r3a3J6P48Gv/J0YmEYoiGY7V/SxwFCwGoE/xa0AJ0CEiV9QPCJb1OJ5F1VTjEY2/MO9AEJvj1BJTQpqLfTlGwjABuzT962e4IoKnyrdh3+/6mzDVJ4PHOxj0JqGKoy20+wBMN6D1gLWi9NQHfVP5MEEPzjGYy8BMAOnTAJgEr8HUIejRo5xrA5xkR5AngmiSHs+zDDAmMgWzTg55GSJEmHE8IvWPAoYTfhWak/Wn/bQ0CGLSAjv83SUEfKp5q24LXuQICpzrjrgWoza8xVE00CQCORdhMJuTUT/rjuls0gO4Iby8BIEgK6gS7BsGuTtDrScH/fR68biUHNVGBnxjeNyHEvQe/ve3LZQqgG3rof6cEclsNflG9J4KtaQ8WHcVBHS1BtHE4QP9OBMS98mpbKTeDW7dJwRsnHpMBTFJpV4I+b0kY/NqInVFSyBLANbnMSgBM8F+Fqfxq/h657/Up+GaBnwV9hRqc9bZ/vA6vu+T9E8KPJWns94UfTeCj2QXwCHS9dNL8Xf3Ho/rfewSeFODGDV69AU0y6NFAE1DP3qK++rdB7/1HRxf86gT376zOr99T/h/ioBiXWQkgQgVeIrCC/WomhDmQK+hASI2ARQZKooHMLdCJwGEBBXC3+uERwg+VOHZ9ioAt9H80AI06wGgJ3nQA3BoCut6AhxYwgcPOFnxuFnrphk+NIKIGrWPQtgz3b0i7Y6D5rs1GKqTop0nQX52vmQC4BkjA+r4a7Kx9WLENGeegkhSETBCrNXIMdi/444Rw1n6E96ry7OPuj8UfLxtQ78NA2iSBbg7gIiIbdDLsb5agPhLC3RkYKv8NDbS2YGsatNRAG2oQwf9ZIOydgy1MAzBkAw8UwEEIDzSAqdPQ6za0PkeJAMH3Z0wXniUSZoHvBXU2mcjQgv56TedIKglCpIoQfgwCIjOytd8WgN0bfxoR8Fn9Gx0Aj5Zgq0lIZbsH/ibSJoFnS+C98g9ooHEELI3gliy25yONIiE6pb0NfBlyNEYyENoodkKwgl6I6s8kARgJ4ZoEfuYWHLEJa0LhSBXm7kImGeSfVdoJ1DO2G7WXsehAptupSOoyrCSF904k+6vt98X/ZcM98Hsd4JYIXhQAIg3/f9AAUYhsLQKAtkHVBnzjCKhOoYl2ym+iBtvzDzQ2DLXJ4PUmbJHAVnBQX4jkxfvHhNDqAdHXGQJgv0aSDGItgOseHIU+K9hXnIJzkoGlEKzNHagTdJ6VWEUH4iCKH4fd2AwDPaYBm4Wgng4gQ9V/CoGiuNmD04AQtNGMGzSAAQ2I2pzfogY9LRh7BrbOh4+D30sAencljFu2CUFrwY8UAWRfWwGvVOVfbx2uIILM0pwDv082dUTw8hYs8L+uIWiHGpWgClnAa1lMPJogovvvbePPs/q3Xr++kgCsfgB5oQF9WYKPJqEn6G+OE3i5AqouF59FQOmahQC8rlPLj38kg1c2f30vw+XaoIX24/pMGIgSBoZqoH3wo0sIIGlA9PWcCPrAtpPB8eBf6x1o6cHra+2+tpIFP4PgBfxZtZUJfo4qxELT948D9ucK8Mt9+ccjIQw6QJcEbrD/1g340ATuDgDkFfx6twSf1f9xvuBECYxq/7ythQQGm+5JDx6Brw4CkMGT3wgscCUoQ4sU2t6DR2ciBjTgtcpenQoZVX9NuL4Owc+dVaDursYVkVALX+shjSBKBuvCYDUZjE5BdNkxdHAUBexyHwB6NP7Iyw7sxUDViwge1t+mz8B/LAvVx/c3PeBBCToB8IUGOgqA3iV4yUg6UAOxaUFHDx6CYS8SorMOue0CCJGAf5YfRhoAI+A1CvwxqNkAY5yAIx2EQmkFfeWOXi+nEdSQQA0ZHMEItiagJArQxDXIrj8nCfQi4HZPAttrIahso9oPQ/2/JwV5JQU8zw+7I4D7/sBn4EO6rjw0FR+i3Z9fHtahzsFvJgM0X+tmVH5vaYiNDGAigewAz+gyNLThnjCURQFR1b9d3lZvnVqmj9mEPDKIUIC4KCCjBXywS4N+otp/Hk3QVthOkwEKlV9PQwXjT7s/zwF4Qf9toAAzFdjuaEB6S7D1//U5FIQu2MevO0rQQH8ZmoXE6B/IkgE60XCjVoq8gt2iCG0S8L5GdxkM1cGsfsCMArSCAnrr7dzAZxCEEpepvB8tqHJ/q+bmJGGts/AcAXFOMMeTwC7Pw0B6CtCtA2vWgonqBQJFSwH0JQK29OB2kvgj2HHXAoyeAIsCQO0kMNECAhFMqCBf8mElAkyBbX1tJQP2RJ/ha0gpAfS9l+/5n00CkrQpq0MZbOdAuxmMvHswog62jZj7BnYQe19b14kxNq2D/ehX/p68HEcF+x3yP7z/V/A/q/5DA3i5A/dzA5pdgbKp3v3/wQF4Bb70WkCTHGRAA6+KL0bFl6FJaFw0ImZwm6igSwbbwPn9RMBWf3sN2JgA/BVh/Rg0kQBgePf6HglAHLFQwqQQOwDjbdVxNZjR4iM6Qa3WxwvNxh0JFb3g/WzFQQS8b/ttKcDWoABtUMAd8j9hf0MB2uDXhzX4CHj03L9DBU3Qjz0C0l4mLSLQPicOOwZoVCB6P6dA7nDbGkVuxcNr8PU2JQO4wX5trEqmccZaHU4q8oCDFOpzAnOwqyMIMktNNNAHouDGxO37DgArQZzlmp/14W1QlqHTMaIIx7SCx0+5yza7AKJ3IXBrNAHVDcMZAU/BT/vgv/ULPOA+XiLggAREDF2g0ci6xNDRglegd7P7TWWH5oJfayliEg7bScQRBVgI4Ookg/F6rvpLWP29swREqA3CaG8/FpKqS8DTAV4TiBqIqtxfzaQRLys5I0XEFIFrPbZRQb+16Fgi2LvJv8EFUPW1gGfQv1T/F/d/HBnccP7rAwnIIyHI4ArgWeGbU4eHy6Tx/EeTZIb5bo/BsMBjmjBE08f/RB0PHYBd9eVRAGY7cHRwiBf8WeCPHY1bgBTa9xKTELzEkQX9CPtl0gJiqsAmCT7I8xbjivh3JGFI+D2nBcSJQJ8agDX+O9iBL7UfG4bzAkcaICrbtYHz1ycSmGmAjJfL3CMgT3tQpmrfB7gxSzC1DnvdhQMieG47u75+kTouKNkM8c/+vq/Q7ZYjO/hhVvRq8F/9gGfhP8aqE9EIdR6LTwJ1h0BItyDqB8iFwuNqASscRnYioxOg9ApvnYA35f8e9Ohbfe8J4rknoFkO0lmA2gmAG0YK0DkB4ieEjiLoMD8wBzom27ANZkzIoU8EMHk/uo1mzeVoEoRWKn8L/62EYAX/lsB7D/LXg74uAMr9oGivJ0CNJCGD6i9DhZdQF+gtOp4S+NODRzsDVbhdgv4BqTMNyIL9SCKwL9/FGPp5oQKxIf8A/UX6r231H7YIqLML0Ae2GtrADOvRQH5b/MPE9dt9BGLNG8jVTAQvIaK5TtvvvWQgDvyXIClUA78S9Nfg7VtIBlO7cbsEYkQDMot+ygQ7QwmOawTHnAM2XUSnJvPIYRYMmYPS+sv3J+cfP3d04JYIXsF/EwMbBKB9Q9AY+BiSwFj9mzrSXmcJhFPVHySTbgHJCPvRQ/z7G/SVUETsg0ZF+i3CRoCjhf7y1A9mOiDD7TwdwEoEXjLwAv+avLE2B7Jnb+OqDpBoAchoQJskxKnss0vu7Q2YhcDv4ySeLOg9GsCKiUIihP7yfW7zbTsBh0TQfN0iAWn9f72Z56/Ax9P7j5OAH/Qvv3/QxKfk0DgDuP+R3USg3bzBC7bO/QT9Eeh9QvDPG7glBQzJwK740lAFFgFk8P88CqDGAa223YckWYhr+c0BPdwetl2ocnsfzePAWcVnnAIp6gDVhDLyfV4nqFEDPxHsbWD3k4BDkN+pARqKMLYBPzYEvxp9xmCHQQdgWH/9EtH2TIFpu3AH/cdGydv1j0TQbRrq+D/mLcX3ZACZ15bF378CG0My6Kq/zoGOQwhASDFwFbxyNGBuSxbCEhQ/uEPe/6gAERWQObCVVfjPpQX+rexxYhYFxIkgpgX7Y/vPs+Pvxf9vwt8kAs7i32t3QCP+3SPaTwIytQXP38u0PESm+YER+o9B3vr8mETAUfDrEkPI80ck0FZ0dXh9U+HRbhey0cAc2H7A4y4egoD6y8JfkBiigLdFP8v2W00E8deT2IeAKujZ/QAVKpAtKI20gLWksHedfgPcb+0+NEHefd9vB9rayi8h7J91gBbaw20MsnWAF5xHkyDUCOoXp+yrOwwxcKj0aL6fFppaaKDv6OpHR5sgx5BAlK/+fYhuP1D196o8e7lFBaKqv5YIMnFQpd0FGVR35RJCnCDaABaXBtgbiSwtICMtalKC+1JQ6bx/PLcDPQL91QFodQNKpwOgF/9eqcBxBBqRcKAAVk+ArQOMx1RYGgB6naDhlK+uQQwJYx4meQbxtNnYQwMjt/d4f3M9ZE4UOld1LAh99fbfzOxiEkKFCkTJIUIMUeVnJ/9sDt8/e1NEJOi9oVHDGYhgnSLss9DX2IAqw1zALUncKcDr0FB5NP+0cBQNrEezDiyiADPkt9qGpwoPdL0AGPx/NOKeyf3b9WJNdfcFv6bKd2cLMJVfJ6Y3B6wB9WFUfWWEwKMfGiQL+3bz9XGQz2EHKhF41GCtZyDi/gUCsNhYoAr3UNJ58YidHKqnMb/6AB5J4N73/4L+t7mAkeeP3P+1LNSB/l0SkMEd8DcEuUlguEw6t2AU/PCE/q++Akw6QFf1u6SBrj1ZnnhG50AfkoGIdf7gJv1KcSfgzWWkQ9U33Z3tHXYASKJ9e/YhU90rvD+q9Ej69/wxYJVs506Eg/r3DkMDzEdDBRGgcZay49XihLA30P+l8N+hf1f57/0AoxbQbwYaan/rBMirE9Dk+sBzTkC8JNDEUlv5McB8PP19Y01Gayep+hC/2zvQ/2HGLAurowsNGlA1cnqGGzeH5weiYLZm7h3QQC4O2tXdhvMMk1ZS5ebpgI8eMrPvPGkwaxayk8Yc6PMOBPEdC1XZ+2UfbfOPtxLMQQAG9BcZFoF0gp/RKjxe7+oAw9T7ZPWhgedodgz0gf5KBtrtIZhQAZpAV1Bi36w6t98qVfH7hqGI318lLCjLCUFlxRHwqYEH9a2qb4XjWvDT7kBwfbZA5P0+PNuRuW1yf4yNQH3zzwv6b70QOJ0G9OT/dhoYRUGT15uQH/71MjQLtQlxfDuiCXrtM+SkA+icQdH6sU/xz7Ze7FlubV4TpoTQ2osdpaEjtqADmEU7OkBEFoLeC3IWFFeswJXKXzkboNL+wzcFHU8hTGKIboO7CLi1/P+5F+gydQhuvRbwEgxvtACmANikhLTbj0gCYk8KdlYgmj+4Ymaod7TwahwadICuX0Cm2fE5iNHPK0x/CDV66Kyg1MnqjNFBnhBoLQCgUULfaVe5nq/6EQWY67bXCszUb+7232fVPz51iGB12owK9peyP1T4raMFF/OEYJP792mgXYfZ04GHMAhBkCSmSj+dKqRPgVFGHbpLEGMiGFeQWfSgrY52VxaeDUPSNJI0P7NoisG729HHl78z6hxfs9rV3m4JjgM/lsui2qmThjCfDFSb+I9vwUqG5wwL55U7C+6ot8B+7N2o6r3q37T9trfpjgmTvv7PSQATLLeRAOZhIJHBQfDQQJPBdUwEbVW3+L08EcEE/9G4ANrCeWcnPKRHDupbNynMx5AA9IRYLmrc/YLSiD5EaEBS/s/TgnU9ILcH19n+CpHwegLejx7Mn/d25fdN+e9U/1vgb7bqf08MOtf8EXxaoh+GY8L6gDfhvs4i6HQ7seYI2sv1GchdMsBIG3xlvxcCRzdgCPTn+6q/TW00VE8Q9FaFv+R2VlOM1vm/hhjhDCdgNflVKME5B47I9xT8z0YgPAJ8myb/LqHy36j/Mwqw9AALxuO1JVjiuQAYLcFzIhiEPe05fk8tRjGw7yWQbsfuLAT2VqOId1osnr0F49VM8INACPHDoBz4B5mqqSnUgyh3ArjXxfQH5BbgUS8gP7aU+w0zHD9GGD0CGHf+P1p/DeivlhU4BbxR9a2kYFR58YaDZCUR2P0DMmgED2eg77puegy6PgDphEB0CwlG/i9d+/Hs34pBEQrBn0W51mqGnJAk3ACCHeiqkQ1XFQA5AlKH7Lk8yJKWY3/nym14h2C3JvxeMwD9ZVMz0BPMi1n1RbKl1cYhIVblF3G0ATsRiCMUvoK9//OgcwYMoe+ZKOLlC6/Xk50br9NFz9fanqA8UIYSpCwlBO4kHc4WLLBfBHVaKwKgLQjmP4Un61Vq+3s7Bsyi0WztmLjJwJwFeE0I2vD/1Q6MVwefxfUf32skCPbCnxQqf+QMPEUDHZ7vGeyj020JgkPXXwsldA7SYR1RE3h94NvNtugswcgxXEkIcBPCGZ1rmrgDC0A4K88nm2fn/eTnpQtWyZfybRoK8Dro4zYDIMGsf7saTBzvX0SMbkAD6o9CYbsfMK38cJKD9l2FJt9/VGs0h5Gib33pxMKWNsigFUh3G2un+/N1WUglI/EEx8fq27vUNnwsiOoKecL7kQS8VnWAGCFUgn6dBtQhv40CmIYggwK0uwDHRGAuBXVdfwzHUjZzATLMAoyJ4FmBhzaWBlrHld9CCWpPHRqofBqMReMGTJ78q9rDes1Tv7/0m0v0AFHXNR6P6g30SHivin7V1BOhh3iWPwvps/yE836L2XiwnUT8x2iHgfqhnwn667QHEE8oLQjEvtEW7GYBZDrDVkwNIO4G5GiBDf9fGoFM6n+vbEtzXwP6u9AduaWnGYSLAlVdl/AU+ikrSeEIKgwdaZ4AACAASURBVKj4/wtgHcHtdO2nWKcBkPfxcvnNQvsj2Me9f02r76T8q0IBn9OLKfz1HX8yVXQYGoAB/2UeBQ5/5kCL6+H/OGGoRnLSwdd3oH8r7KkGTbgIxEwVWvnF8KOpHnyzfF9Jod5Px+IF1h8owyitDw/XEgRb5bPqbt1uvn7qBIQ16vtS/u+DP3cR7CH0WWJgd5mTJKYgNzoGjQrfvu99NDBC+bnyW1x/qhTatv2OaMKgJWPvv5kwnMgxHYGFRtJW8VMl3uP+MgoqSZyWFKr7+KIDw1d6+IiOgZI4+d5iYL3imzbgyO+tph9t2oSBxOM3ugHtPoFZ1LM0hF4kXNEBssvVgPdjdXZWK7uKvyS3q1Xb1WQwtVDqSUggq+Vw3t56JA2cz7PXOwGNW1ecwxPhfe3QEUsDsFaAz8jg0nf+iZMAHNg/XSazDuC18Iq1HBRrOsAQ8NLB+16g614jmuSgs3bROxE55D+WDDQNA4ivdMJ9M1b309UqknaDU8ObV9/PwmMPATvTMAxpABLBzugUtV9bLdhNDQA+7B9tQJ06/7QNDHGSwtgZOCIA47InIoDdROQGtt0U1HI3GaoUnCnC/rzBMQJteN17+VaAzYNA7e+PFqHQUyXPUYB7iQYa5ZFjq1Zqpx8Uqu/XT7+6BWC1Xaj0GlBIwMoHu7UzcI/6/Acb8KIq+hzmGWmAYnADrIpvKP7TZeLaf0LAeQkGgebbq9FToI44p654F47tekKkI0L5PQNZPsDwPBpy/ni+wKMN76Vav4+2cFZFf8+JwAraMt0DFB7beA/u4Zz/a+RXx0M/ct4/jwaNAS8G17eSwmta0Fhx0VRxJkHMivso+onMXr+YwdWKbgioy1jp4x4AzIKg5lEA7wvHEYCRmdx11TAuT6lDLVl4KvXkAET9P4RT8H2u+lg9EPQIpw+/NpJ7RwE8HaDv/Mu4f3OdNkq/EfAiEiOANjEALvcWL9gfFV4NZbgbQc6qPky4Pm35QZxtH1f4j+P/jXuaYPcWwIEH/fmEPBoAO4m4LGxV3txOQqDU+dXgey+UwSzuqP++uImO/u/6ogCb7wTc1n61sL+vZi87rxnrNas+giTg6QLzaUCjIp6JfhwtGI7AjBBB9JjDY4ePYVR6ZPgN4owVv6Q2N5hhVHwNeYrM+w6dN6K1sMHZm/Ce7bHe3dzKr1xw1w4JrSQMZtgnoQHlr18fzunAszD4qurNUg/TDqzx/lfCaO6t4tACMUQ6P6htWjDPC1hCoZ8kpODzJ70MUR9AODcgwyqyPhmE+wfHYB/hvSqt6qeXUShhXH+d9SR8DzrDaZZdpSp/HxqLMQuATgDU/qDPRgOIeT8cvz/h/XC6BtE7ACLOWPE0KIS4UUjmZaJ2grBphiWgT41BUVWZfP3AnEIT6OrfoF122l2rMycBoU5i/OXoUZ4/aglsXwLzHNU++FVF3qikOj5HXm2PBitT1WuvJRAB+6O//W0/PY8vQH5IrAsMs/WuVmAdHBrQgrbOxJShXwRSsu08h8JMBpo0+aDTALwV4tbswgzHrftG/dJKIAQb5h9KCssWIMeto+GYqG12/HWGjx8kzqNJaa0noMWOr2KwW01AMwJoNvhMQda2/RKQP/3ecABM3g9uD6BY68Ntz9+nDOMb5iV+hIE+dP/Zs/wwJhJ9mgBnohBuStABUXjugF3hkXF9ZZJAjefKdHZCc389LoStKvIl7QIEb1d9RyciQgFDI9Cjyccc/23Aam7/PZJBhgDgin5CtQvbCzX8ip9YgIFtOAt+w0owp/hOiCWgEGbVHuYjRigPGR/YOnEoqPDoV5z5YqB3mRq2ox5ICmSSgAP1Ne+XV2NE+/vuFbCTRADxtS70VRBCjgBk2OyDUQiUgfl77b7DwaHm2rAZ7osRSOOUoHgKfNBSLI767+oDYrfwZvqChSpGfj3pFwZFsCJg2jeIQQBUiyI4WgD68ww4qO8khuWkkIuDrxWv2nv+UTBpJYiPd0KemTA8qqFiuUF1jWS3BoG6pADJq751JqBI0wvAVPyMQvjcX1zbELltKK+zBiXRFiRxG+b7q3M9xuLdzR8g0gCGNzSM5gNYfqGO9CBT8OHct6oB3KsSDBisUnwsFuISQaRHxDSv0vptt2oeLHMERfRn/FG/Cx01EpgIQG8LP+/i37PKw53xn6sYCM4/JwSRrCnIeB1ZkLsawDhaPKv/njU3wnZ/dBdGE8+YTHSG8+ofGgIjsC19YnwdM/KAnTSsqj6ig7uGgIPw3nYFzhhIIvriAxFP9CQd4HSlnzgxONIdrE7A8ZDPx9fjib8ifgegNIliRgdx95+E1T7+3nQVNNhEzDgGA3T2rEDLduwtPpuuouPcs8swwXFjdTaMKt+jA5gUAQPcf95KJQxYU0cYxEDvsBSmYuukp7AwnqniC9Afa5z8vboI68ImT0t26CvwBzSggkj447r9IojvCn7U92J/Hw0QSdwZKNNjxPCfSxRqnATkdwpOwh88oc4J8KTSm/wdbZjrc+4iFP8YO0/5JJDCfaijK5xVXevqfg6zGRrQf83chvX4aRfAE//6vv5+6490U4ADdO7QgM/5bcHP/n4OtCQhBEFeDWSvos8DPq8/IwzLzjpa8/U6MMSkBklDm8e0mn3QIY7XG1Om8wzN48y7HwhOK3P0/ZwUQHHv4psbdoVeb9VlAjChBCdtDDpOKTh9ZfcagOYq31RFjN4/gwBYzp8lAwYNwBELhZoxECeZxMlAzWGdCRV0fQWGHo8+8Kx+AAxnCIzowAxy9KvNepWfsfp4RR9kUrD88CPVTuXRybhqqTHcnxEGndsgub1Gdug8yz9fHt3Hpl57x/mfCOC29FOSQ7/noAZR5W3Ob24UMpuPYAYiQrQgk1gnFoUIKr4vKFpV15pHUJO3Y5rfH3UFHU4bGkU+NKJ9f2hJyOMxDBDpjAgwiYqvk5TqNl9EH2Arb6fA3yaA4cBtPWewhkEcIQJBlGzYp6zRmr1v+e3Fv27xpzvyI44NGDkCIi7CGNV9Dw0M8NtHC2vUwHINumCGNG8erxOwtQINsW88Tlwdoc+F85nI559ngEDpt2F/Uu3hiXYrkN/pBFS26hYDAkFgErMK67y9mGBA3L5ore5izf8b3n805MOq/t7XU4WHv1DUF/5gugCSOAIW/59uMwl6CHWAib8bvfxWl9/rBGEMTTwDfG+ezEYG4yk6FvRPuPwE+wvc39IRjENWM+/cm5b0W4Pf4WuKUnw/vD6eDbB1ETs5vl77Dhnm/51g6wPWwQAqxnivgQaeS3gy/u/1H4hpTPrIgHAN0mSgXUX13YP5PMIuQAfBr/f70cdeE+QoCX3i8nFMLcAjInBoAIYqt1LhC1WdtvmSab28AYffaeivCB+ohdYQgfUa/WS4ToMsNLHLc9nnvPZLwn1/EefPVf+U/xvnCVSEQEkEQEnEQJO7S7RvYDxNeNYKrG7DKMhtsQ8cMmhgPKKKj+F7CiHYFR5KIIPxOmg5IVAtu3ACQSPh7CzUQOgAej5CWEkIe3vgxz0ROGO//qYfz/dnLT+ZxDr4QW0eNCJBorCFOVC312Ec2TiY5Bk0cAaQmiA1VH1MOwDHQ0kHdEDDf+2UTWhS4Z8diQMicLx8MLBfverLcP/jQzF0P8EJj5+NGK9RCz755S6F/f1+X/gxeP+Wsedv+vF8/54aSPJYFjIQd624MDz/UDLQnr8HU3ztKHRf8Qeno1vyAQJBaLcMtTV3cvgP56COCqd/QP9xLgBkH4BxO13n4hNUDtACC6G1S3zqooZ6Ba4lp/zcAFb7iERKQwQcF39IFJjdXECGADw0IE4gg674pYAnk4HoHPx54tD5daO5vxrugSkMjgiiqc7TVKAT6AT8R4ckbHEQCYR/IZBxJgA+XZjsR7vaoRpIxWqeqfXuGC2CxwudicwePEB1kNkaZCuwyF0DuKv/4sz9mzP/Qxdg3BDkBTMC8Q+loD6UGBzx0Kz6eAX/KArOQTlPHFoI4vVtf4rNuLrca9edRn4xBP7k8w+9AgZCgBfEUZWfEs8iFNZ3UO7TqmkjCO/rWdgco/yIqHcQWaC2EGTzgz5y/iXQAvyx3riyxxV/JeBriaGB9OrTA5g9/eokM+37GszqfA/UZk9iW5UnCtBqBl3XoNN6Ag/+zy6A5evPAp+TIFDn15gQw9rjrOzFX0s2JBVAxa/nP1a6AsNWYGjPNGPLTQgBsNUFvOA3Ht9o/rGDN0tWOCcxJGp+f7++kkP7PxcGv1+GjkaLt/fawpwwerQxBJNW4b+PJsYEgiAYYdEAGIlDNaAbRkIgK3ut0jKByp+8yz23X6GttmBmjwDvChgiYLP5V/zhH6/110sGcKo5CkggCngxnIPoPja0j2B+1BRkiYJiviaLJqghDI63G2nAgAxMCuDdnoD0wIQm+urMB3VuAwbBrFGgGgnhAFqg9+ujKsLxB3qGCQNEEtPinIQlAj4WgIw7/iXc9V/x/yUWFs2KH504bAh4aYWf4TrTLGTy9YbftyLeVOWNfYNyt/ji29mQnqMAltU3ioTtbX343yv/1u0YPUBz6zB702tQucnX0gWaFh6DgPdmhXaapGotw0SFz1qDiTMdd8h45HfcqCPRUhA3+NmKz1l9teCPaMd4urGaewRitNBDdahR5c3AfQmDCFT9vmtQEwqAYXX4XI2n23Z9B/Yb1FL+LWox6wHGbZSo6FR1LzyG+3hriSZvWT6jfXhl2cmQZJDrAbuYAqAHo1GA/EOgD8eGcU7A8eDvH4fQBuAhBL/Zp/vamPTrRENDGLTV/7E1WEPLDlP/PwzU4YhusIMUgfIPAr6Dhv5R4y2r8ldFwiFoYHnmr8TAHbhRQSZOctH598ZYhqt6wP7q/ouqe77RJxvzFYaji/z4vna4v5cUMDXqDAJ5ytktqtBDckyjvJg04hl16LB0xFfyMfD77PZjErGQRRjYIfSvoAXntks0ok8MsUC4KARWnYPlJBeIgLeFrUgDOHYCag0/XNAbWgRwQuLAsaQwIhC1g7+jCNKuT38JfnYSyTi+QQEwwHeT4/dWHYxJPxfOj5oAnRQqgU3YgGZSOaDyK3n/qkDYBKptzR3oD6B4fyRKjp2AzSl80YR/3P+/1vBjX18Jbu+YsrMRgbqPP8zrDLTAaupphfeZtyPs9BPztpLSBZjowF3woYRwBwOWaqbev15b7X4RWsiqYiY6ZkFEIoUwUA2OrkeEQE8HYNyD/rl3m88jCGgO/nPW3xy8x4Q/HBcM1dYg5q8N+B/SBSYhtD0EY1PRGLDoKIBHF3yLz4H/gSYQJRETgqeB2d4vC8L2NVnQn4PoVJJAcP0inahAfdXVI8CFszjRagCTtRdV7Sr895NBpRKXIT64RMFw/iw5eChhEvmmyUIH+k+Qu3cLzOAN6ILlFvgWnx3YWFDz0f38ze9GlfP6UQ3ojEY0gtqRIEbA5/WgQFhsEuIeL75uTzvqHktAWfj/OD6sQXssROcGiRgFn0QVkld7OznMDT7CJKzhMIqxW9B+LCOQdH4uyxIcE49VTSeLj0wKjzcp2oDXQA8YoDEGBLMW0BJw+eAxXejPV/IXd59/tp5rVyYXDw5BlRetSpQAcvgfOwVM8ObzBq/AQ2wX4lwkQV3vNhYFfn2LFgaoDU1ogqsfqGkJYmrj9Tr22KQwBLzbLuzDeA9yzyJjVRfwegWq0H+FThDPA6ZhZwX2M2Kh4waovCzAWJTzD/qY00c+6PM8coz08VNqglzx54LfHuTJK7z2rwX35ABLg1DzsZ7Qv7l/f2yXDlbf4C/irg0MJ0aCuD0wP74MrxfdFlX7tq+vtRdCpvt599EG9Yz3V+P+Oj/n4zLruZHcJ7oMt/MNp9eD6HEeFb6/TMfbWo85Pb79HJo8t3371/PuIAZqMvjPC34nVV6ZB4hEuA7AzA5cfU0y2n6ux89D/35/n2/vWY5Bf0qwf3tPLISO1Tap9qzFB6eap/beqI94NCCbGwgqOItY3CGl446CaQ8i2Q9g0AvmgJOnBoAA0gu17tsKtKS7D4udgCYERy2QIceCX/P7mBW+g/7D9S6Mn50CS0eAoQPDcBjopIA5+EcxEjLweRjXq0UbLIjcBxsGx2IZvlf0ATjz/6qypAmY7bhrk4ahsIis6ccXKHdueAfUgk+RWPCLh42c6zEeKyJpRTdRAOqBbl/Wq/uT+q+Fx3FoTIuCzc6+hN8j4veGjuAnhSE5gKnco3A3XwYlq2sq+lmP4yEOpqEoG0M+mGDYuYT0pKCFHgLHKt3T7T9p8GcWH+n1UwGa8X6kQt2x4CeqPexegT6o/Z4Cr313PHdgrsS2ZReLfpKIf+IMFnmVmwxQ9AhithYT73+p2s+JIVfrjwiHnpAZrSsr9CMstQXP1+1+510N/q8E/YoekMN9OMFvi5LvkRDsy9rgFCOoPdpgaQIWBZjf5KCSQszZJ1ivTvLokpen6tsJAVND0NFqb6GUGg2Im4Dyx9Pn7/0dm4pADAslJzTv+dKNrAPQ0wyySm7bj1RQgbAXsRa4R+mBJzpaQmHLmy0BLoL+Nh2ZRca8uUc6P37k97n451fvTieAE8BdZ2ItqFEK6oOJIYPsiU4woo140Oh+H/UC++gatHYcOFT+2y3AYvD1rM/fpxdUcsAi70c0OxAEP45X/hymE9XeoC0zfYhbcqfbhs09HpwnKMDR6g0mmYyKth/UcLl9ITGQ8N1S6s+gA1HvQCc2pluPvN2Br8SyZyfyxPP/VhCi1L1HWX2CQCuAE8TIq/sBYdANZmTIwqq0sb0HIzhhugBeUpBZLFyA8y+EErsBUYDZHYN9QAAooQwOws+uQlhdESSSqk5Qsh8LSYI6LDS1AbmOvLlRBqQIeITvM36+TP63VfE5hFClCTr9zEyVFwS3STQBy66DMHB+PJWIrfgGnYBx2dTboPa2X49GaBVlePA7CFx4iaGi4ns0aLVjMGvtPTDtmO4XEE8E5Kb/8qYai+NHl60LgAICcUCoJPVeiYG6Pxw/X9VFNVbFn9FNPzXoIRDTyzcpREYB5Fm1EQQn3KRi9wKApR8Tz48SwxnV3qM0q7ZhpdKvr0zfY+gO4oQf+EGPFYW/Xf5hwWsUgxiBbShGoGIx+D2eH1h2EeR3UQMH4zMaUKr4033nzkSkfQADelFbLOQCalxdxvN8mInhPas9bxtGJw29Fx3Y8429MAS0fL33Oeo7qFZeiToCC3B/VSNYuU0fgDnkhxGgMFdxiYEY7MYel+OHPH30IMeVFK1C79l+QdXVpFqHlMAXEf3EYDyfkkGdNvJ8f3RAXU0jpgM7jMNA5yCrtfzOicKG/M9bgEkEjqqPPDEcDfqVwGZv6zcO9avDfOhf4OmLFd9OLBHHdxp51HvOBlnAoQksYjASA1xnIhPsapTCPjbsGB2YevpPpgM73EYeSYIftgPgte6CWesVBB9QEgfnWYMgoeC8ql69bWoRIqYHvSIv/u26bj/jdqZ9KSGk74JRo6QS9PuTiSHm6Z62kLUGH0UO4rwWrhtRETkR4iKRdI8giJ2D2nUCMjsA0TXiVDb98NAf/rCMlajA9wesWHZrAe1dlwRyVI2jx4KkyUHSx7YDe6YD4tOC6XW01puEdAJwaEJzf1uATHi6ZlSCpBQscsh6C1xRcWEG4bCFeKcAVhVlDu54JQIkTT21hptIT/Afk0kMcS9BKfjBJozcDXCrtgbWXxbMAw3INQIxtQJPAGwXmYaBbYh4SCsuKwLOAQ5awKskCMmRg8P3xwlBfbosQaDqyZqBkyQe1CLQACoTgN4qbyHsPwkTiF2pYaj6MAXBmUosQHnUEYCsBL3MW39SNKMJ5PfoBsT33DVJCEbFnBCMOkHfvj6Xq8uw+dgRIhGgAiUqf5QgKDFyhe8nnYrlqn9sG1GoAfirubygX4H+8IM1CmQrMFAJ5ExzKIp54nPoVU2Auh6eBShDlTV4u5c4HE/fVvjFrsII0Ik6QX+Iq68jB19ziLoKC27FYe0gC+j1RSS+BgB7AvAM3m8HLdy5fV60C8RMVuhD1ieQB32MCCq0QPJuvuw5IHF/geMKwOPdpmsxBwVEfGEOgeincJqNmuSFIPhPq/xM81CWIIi+gCFBqDX3QPYd2OcCRo6GZBoA3AM+00aesAOQ7/2Pe/vBCXoguD4OBD1WfPwClzcui12AuH+gC0gEwW72KfjBCQRBr05D0IQc7N8PzOCMehPWK384MPVDJQim7yDdoiRTItzzFV/ZOX9sYFetP0fsQzb6O7wOoFjxk89YoQXv+BmSN+yYHYO+BsDRAXHhuJXsEFbdIEGZQWUkNVNzGA9NZUVBIQL7jASR0AclE4Pb7JN3BO72mG92+o8UG3nybj+mASh0FsLKn9GPxDrEcS2Au35BzHO1BksriIJdpqWjKR1wlpR4fN977rZqI+XbYjYDgVDpcYQalOYKMiuQbB3G6Pu/HlMbi9a0EMkksXtjvvXTfgMKAEZRN/i/O7yD8Da2S2Bdh3ICWfp8yuMkYl5a4df4vVWt4UF0yyqEnaT6swYyWB8/j111Y1ERS9oB0SLMtBGDEBD1PEHwtdjUEAHnqmoHU4wCDAoAS+lHwtu9eQLUAgmxVvAuMB9cELMV3m8EUtcBYYI9nkNIEEJYrQeUHfnzzRyC39j8CgSkir/E0P2odnAmAqDnDIhqrtV9BDNS2POjv/0pwKr6z1h/PMz3uf9ykFYq9TtoAXSwpz0HljdvBCVAPY6t7osv6gFhMpkX13rcfXQMIpuTsfTibkfOPRAC2meLRipI4mDPwMD5x+v3+Ey+qEfACwoUEkKQSMZxYJDz9R68PyP43yvo2aYf881rNQbZgRU/jp80QnW/hdXqJxMvCFxXQSNHpE8QiF4XI+wFfQcw7VL2Md7RRajsKgh2D+6SLAKPF356+/7yXYBTUgFy/38StUjFHweD+iiHh8/LV/i/TSvGk4L5x7F6AsIKbgb4C0YjgdGRIToGUx7cgS3JKP8pRcgak95BJGQbjaJdBYQ1qHYnYHL8F45QgHx2gLMQ2cDxBD/4SeR0LSDi5XzPQNjM4ySE/HGG6g+ugltLNSARn281BPtNO72eJLjdX4ITSEgpQvJYFEUg24f1qAYQNQdxx6Q/RcB85j9f+03zf2QV33IDPHegNgPABTfqFR8cZK9TA7/ll0EQbUUHW8Gr1d+MSadia+LRHwhunv87yWoJ3h/pRDwJAbDNQQFd2P2mH4kP/wDT/ZeN3CK3+ZjvgVpw4r20AMafb58j4N1UMknuj6iCx883PU9g2VHVH5JX2eEcPghSgRBCKPzK0Q3fknwPN0Hk0CyC0zBkz//7duEetgFjVtypASDI4CsknYJgYDhqsBxxy29+eyxrAZX75EEf8f+CkOcijMDDHx4ASYGGu8WHgPwpHJc0qOG8FgFTuVk0cRZVePFwHEIUEu8xSHoL5qWg4I7/HgOKXe2dcnu2SSdCGIDTA+AcxY1zYL6Q6AAFu+/1GvjKPSe"+"EoJV3NiM4Dz9C6oWkEav+NWjPWXNOIkKgNTi2I8LeBgaZHJxqrC4oNXoB9pzzMws/OW3ghSyQJgjbygOVEDhoj4nHLld8HPD6UUMFVLIgKrTL7cFoBRLQgEdXIseZ2/HhFPKbk4d5tYWwwR0nIFQSD2P5gQhs6meVfB+Bkyz2fOIvX/zxqsSODuAGIOLtPNnmIPCrv6Kqvgz3q4tCwNl9lWYfnsdHj2HTgQw5IBHwULmfSu1jEV3gDFSxTBmqSEVqiYK2IkWcRiAkwV/cyW9YhqHXDw9dkNQAcO6HFNJT7oChfrPUYc3KY17zAd+evAwF2w5SCKLV4EuCEKsKfjBVWHu9Q9Arh4CoBqEMWYBsNX7YgKP/69uC3M7/mOOz232QT+ox4iCyJGEFP4oBHd+GVvXBwX35nqp7qeIbV6L6tdZub3ueJ+gBIKgC6S5gOQFxDoGr+Bv2nzqbknd7ph/EmXzO0o+kZdc/wqvQkAOUffVMzKtYgx5Vob1/+HAfCdzHSiXHenX35/2JTr3KZ9Ruj2lYiMhLIFoNyMq9hFroeYMTE0bSLbhb4l3YlFPa6hMd2jk8dmrDgdQCnC4/+ANFlYTB6ATlx2GDGXP1rvL+SnWHw+cJes5/rRWt4H2pw9GklD4uSMpwasIQiaYR92gIyFX5S8dtRZt/nCAH48VXW3hRE/HKOsGquj8EM85Q9cfeAV4XwNGAlmIFIwPYrfLKuxV476RRetzcdeAsRSZhiHizCKEIOHn3EMOWy5X4uIJnXX6sFiBFLaBm/THOQAkVJK9j6TKwiSDTBWpwHkSPQJX7U959uAkoaTUuug6oQCBz1Zlxm0OJSIoIw04M+7zCGuYiznCfHww9AN6Ir+HXA7lfn2oBSJ2FOOh8SzINfmcAyITq8JX/sOMPx6A9LeYtVfwgCBZhdu25OB9/XmWWNPUEPD5dUuJ68wd1AqD2+w1PI9KxE9BW5t3z/igdYGWiL7L+wPv9jgVY8f0ZcbCKCuLAHN+c5wa69Zpr0J9t2KnpAGzyiAIPiFalJ8/xXrrA6Y+/8NoDnWCPNwFJzf5DpVkHte8hx76P+HU1+HEytEeSEIzAsu5r6wPJGu6oLz8VrKofXLce+ywIHhNa/Dmw8LrptWXZ4NKZm4pr/QQ7Qk8ehMrPtAF7PQCD309QgRgRZMKgAbFREAfBBXNalbHA9cEHMo4IgIUuPjjBWEUFEQpYTkhVO43eRiynJw9Jjj8TOUIlJExK+0wA4gWgQvcFBHAc7P4/u78/Ff4CC5ATB3P3oUwFClYgcALcxzp/B9Ez4DUV8RjBbsCBrMH4dLNwIDaCGhA6o3pXksdBvYBsktrXDgNJKAFy1Z+ZGIy5NXgXoBT8a3ZgVSPIUAMV6DjLxhsV8wX4n4ibbONObHNyCr8Z4FinNFjg8ziiF5zSV8A99u7Zdf5OisvVaAAAG3VJREFU/kIPAJLWX3hUIFD6o7MD4WkHIMXBk4IftSrPNBJVk0OoC7ice8HGS8XBKDoz/YFBLaQi392lGpCMJfhD9xVkx5Xbj73P9V4m1j0v73x9FjDDPlYvATkgFAVWcdNvJBamliOjAwRV0EpeRymAe717kMYRyy/j5FwFBX0fP7Dyx8gq8wn2ZXi8GfGYR+lFcGJSxa3Y84WgzBHetlU4cvKY44Ps4iP9fsgsPGEhQTAcHqwwGCj61SoPexKwasXFqtxq8qhD9SixoBBYcJEDNzmIoi3J7QkoJActVHocTVpPBCDhElAvMDK1PT/Sq3DwB/ygmyB9GNhYDH4so4Foy48kkPtZfZEv1PQTxYpyX0EI3Bu+/5krcN8fgwVdwWu2JNVNWAk+PcOOPMNdGFyAZ5Aj6gicgzNfwuHZg0HrLxBWfjSRl88fVCo/apX/IBrIvf65ZxtEoK9Bec4KZIPLe76osQns46NwW0pUPCPAyMc4A/KXOwZzFLGbAqD5xhhbgBcWfoJBAlarcCSQgdQJ+Movnih4gjZQTw51rz588y/ZgxVUEAQ8soCfX8OR26JwujCLGFAMsOjnwGrlPuQw9D/PPv8BYVR7pG/eeFtQpsLzR2KFI8SwKj9KlX++HeLOPuSBKrKeHBi7L4b+Kx184+ptAp4Trcscv69oARVYzWgaK01H1X0K3zNSmARKtxXYHvwJuT+8gLGGWgpHcWOmBeljFB2Ckg6wiAYOqfxEK3GMCAj6kIiTWdCBCXhkjUKMgJcLk271N9uLSbtvvK0S69OXAvoA5z94VsFubbmZvx4QAnXgBnJxENyQjy38wef81uPhxMpPJIQzr5ckuUTKe0wZyN57iFTWga8GvCwlh5UqvYgmaNV9XSxEVWs40kkosFwA70RgNOu8mLZfR6wDiwRa35y7j08NksqPQhcfkRBK/J8R75Iz+9C8gJpqzwiIeZII3QnYOkJWbVEI5jNuA+o2BwK82ifwnpSgHwaC+GNAdmW2VXfC+vPu6wR6lBj84C9WfvivZyUhZMJlJhjSukDlFJ3g4AvGJfC1iEpQJ/CaEd7G9wds7p71+odruKrHip/C7RdsxeVjzIxhoNkFGOW/+sk/YVAGtltfzZAIfzix8gcHhZCXpcGN2u69qWqD9OlRFAy7x2fQBhHUiETB+DocqvArYt98f+AEAXApsEmEcNLC0t2uPHCqPQIXwHYDfI4/9+8LMpchqr5HK39MJSrBXwnutNqjovjHFdq+fcHLp7YLR4mGgduW5hFpAXUoL4cTTuW5HJSkB5PC0S7A+8c+837DyoM1J9iv/po/o3BunlDqPjOSO/YbLFd+FGy9sxKFeT8b+nLNPrkAyD53FtT27yUS32yqUaEGTMBiASGcZ0FmK8nWxbvjC1q6WQC4VdWdAcBY8eFoAzIrC0b7Wt8wlPcIdE1FhUWeKU1Igv8Q/0dl4k/NnYSxdlDon8diUDeuQB4c8XVzcahRgyyZmNC+LAgeCfSVALde8/t1DCYawNoePGT83wlOpFUdOZKwxn89OsMEf0X8CxJCBN/dwKbFwkSMgx0ACJJDJD4iC1JEYh6XcEqVHpx4+J4I4UiAl26r5x64sttvSlAn3LBuQCz6edU8C+J5epBrC4YP52EFDgHrCw1B0eU9bOaTgh3wmYvQV3Oqqcf53XnVNXUBELX1xtSgFrirlII5d3HFulxBCNEfZx0h7K2f34XwdHpuYQcguN189Ow/nPXclaUcqMH5leCXjKOjbv3F0a7i2ZaRHmBe5zwnhA9S736ZC8AH8LHkg/T5znYgmES1dtuzGo92qwHIquiWX+4KgVLd8utv9Ml1BQNhEJW/FOgweiTguCUoQHkEwYhjfQIgm8eAzPKzHqAG5xGiiPyxeGRRaYetUpDVpHVC1T9bHGyaknb/TQTnuG7rDYwYCUT7/cMjtILzA+Go/FPw581F/mWeTkDuBsBCAK8ki+A29nMzPn4Rzjv6QV7xWW4fzQFUxb9jQQ1qc28kMi4mDl1NBr4usIsz5ltZqNm7AeJXfuTHd7nioLEyPBISU+8/tP1AC4Il/n+YGmjg2NiBRdl6yCw//zG5ph7bqaBuz8B4VMU/TqSsNPbwCeZA1cdxyG9SgKzRZPL+GXFOiH1/SFZ9wX8M3zUgvH8a4rMBjZj/h1W9MrwTiN6MlsCKiI4gycBzgV/xUaQGjGDHwHiYi0VIzeEAasCpNuL76AC7BIEl7i4AIxnAfoMxk35eJbZ68wWEUChs8IPz/EEE9BkUoNA4RCWSLJkY1h0Y/dG9bVCtUVPe7QRhtStXG4nOECDfUxc4Uw/Ik8JkA9o9+a83IrfHH11EdFUWc4phNgVFWkPsIHBnCvCCYBSgqEN9qtoXuwHhByYoJJA7BxIkkRwpDGgAHo+vQ3ZGOwCFJCJKUAx4MBpFZWvReeLgtBBkDDQu2OJxXa7SE/P4ZiUPHABjY1DsFIhPAaygWewiXK72hHjow/k8gCL6gKES8qcDZ7A+EhYlWCPGCX1wXIwzkQEKt8cP6iqkC0FEhFj/ZYtvXCtwuBLcDT5wXN+9H6ZEIkTwV/x/s78fXFX3siWHEKrC3tw7EFZ31Ll7ttknQyEMGgAqCaVe1bGk8r8nFWCQQR0h7CY0dsU/mIeIuA1AGCo02Q0YVXxub36sG1Qgfo0CBBUXxap+ECFEycQVyViBEBFPt14TK9rZHB9EwMG7DPXOv0OVHkdtx7OSCXfb3av4CFZGTwQBwT7/hKPHE4PzpJ4L4+FM9r1n8B+B+9R9I4Fu9brYUZgCunZWNxdQgIs8mASBQ4F8hJpEiaf4GPihk8FdAxin/kybjZjTj+mAQy6ihZ9whDvHAWB6BKrBXQr+5SBfqPaINwiz12UIwoTmbPACZY/fshBBBKNlW8ZCHwH/cVKSOZMm4Mxk4OwE9JeB+EFkn1IzcPQoiSB4vGgNeJSoik1A7m0TCmE/HrggB+/1M12C1Z18ACGoIeH1pH2IhAqFWgBq+kDFEWAvA3X8tpW0cnSD5WAOriOHhnYraF1eLTkS8P/QsHUBdtMPnOrMaANJE9AZiaKWII5Ue/8PTHn/UcCSTgIF2xN4zdmAQYIAKeBFl6FiO0aKfq5jcImHfPwTxcEdRmD3LcFoAva1Hdjm9UgGggI9YOoPkOBYLsT8HlG3nucMDGkOOJ8CkNOELdSO7D5qqAeJYBb2GpABgRi2gxLITgrOQ9C937HgB+0i7MeRx3gfPWCXLtgbLJAu/gCFBPzRX8eADJqCvA3FViC/BlOQC4LZyrBq8BdQAOUKoKjqR7v7EFfVFMojPgEoSlJesNIePyLHwW9NRgq7E6HvUN8A0yj0wyWDHRZ3J2A1jHdMyu3hCGwSDwdRir7h9VP7AKLgPoMCgKziOFLtrUm8aIFHlgxYfz8WBYUU55iAXauo+evJaIK/NTgRJM9sUcZRzcCnMdNKMJc7usnAyrpxHYkTRHK+n1HxS01LheAHqRWwKIDqLvQC0+PupHZgBawfVGsiniTVHwZHRqbUI/D4Cd+ftgyLAR1ehkIiqaKFw7MJEwUIuK5zsu4svoFYCFKgBJZACBuppOId2RDkPZas8H9kULcA9a0KTCQDGtpnzT+RMJiOGseHl4BQ1C29AWUXIIf/OIwwqoNEK3SCuA7FRiBrE9B4/PcrGJ1OQNj83F4Xbol/TgVHfMiIZLAdcaVkgh8sLrd+liNQH/FqsNTfj15m1J0X+ffZuq/gTY7QnvIfJz6UzBJLs83ItQpt3RfZz5iuGfNPajpngUm0R8DoA5jDlzsOTAwZjzsC3Jjxg7H914PjlcskGdghgx9HG4OOQH34uwQyzz61/0qiYNQjXxECuWYbGM/DrjtPH/Mw/K+gBLLSA+cEfPr4MroArzcDuybbr8Zc72i2UnzeHnTgzD4Ug78SzIvCoARVOQxaFFR3TzWnkkHUVFShEuqKxZnKz4p4YYcf8ZhYhuu8wFgSHcuuwCJagI4bgchJQK/qe9c/RT6nGcg6KGREJpb+MI0EY/b0jcsni3AJBeCQNsBOFVYoApcM2Aom4VFgIRdHpeIG8D3YaxBD+qCiQ+rBOSVnci8hzkAG1t/pgHA4uwDzmu8xFKkkkIqCfkIRs204r/hiDgutoAAcowBMZ9+KS0CcXVBOHCvJw2jMQSJyeoeExF2DuTuRcuWAo9sefyUQ6/oBaIjPtiRH1KvQKvygAHb171d+vc4GRMDPoxN/kL5pwlVh1mBQ1quQJAJ5j0TgOAis+h8d3mnC8xTKE34+8sDNjyVXE6nFMN+H39TQDmocHScENvN74LoGScGU4f7g6IG3n3C3qnG6JBS+Z5tHOOzRYQx+u7MZmAl0OSsRLAS/VIKfRAWU92+12aaVPksGDBWQuCMvgNy2M2Mt8EwqbjosZAec5xLEAmXmcFTHiOWARWglpNpjdEtBQRxJJU5VL5/7F1X86XntXgUK4q+KggsUoIIK8oA+kgy4+zLaACqQGTVOX6MBWdehL6BxHn+tlyBMDGAqufd7WOX5WTJwKYDfXJJP2GXDPk7Tj5Ed7BOG7DMFaBRAJgI/+H2Ngeb2SKb0zkoGlQBHkefDr7xMA5HZeJPtKIzyApI9gmnPgf1c3mulfhe0gFekDCdNFnrOwi4Gs6eTACNjB+Uegcgojog4V25P8bctRYY6RL8AJklE9ACFAGZdBEahd4d4CmghFhbzcwaXYH5qTlS6DY+KfNH5Avzjo2JJ0poDkSCMxLn73H/eB+ifvgvyIFCWAji7BWC8hd0qj0FziMdrS70BlVbgamIgcmotGZDNPwm0L9l5iHv7WRoAFx57ScFS2r2iwot8oKu8l+TOCOg2mZ2nFdjTgOFQENzKkJ8OjEnsE8f6AzyXwT6MNF3RDRnuj0Lwo6wTlBMDIyqaz6G+RiLJMg/KUrQV/rh9uH0tWduwoxmky0kSMQ+rnXxZsGadgnxfgk1pCnsIsGYltvfdzTOBIclIsN8MLAGcz5gBwj94AE8DuC9Molip/JGwB57nRyJiyD3pyk6q5ij+3TzRLohcqyqCEQBTepF15+WVmW8SEr5jMUUkx3oMIsrH3ndwAQganKzyMpOJNxMQooGBYwcByw7axIhgPRGEr6GSGJhkAELoQ1YRg+dPeD5IIRDIqq5PA2Jh0Rq0YcS8XBi0ghGRFpCtWTdum5+yLOsQf2EuYY8AfnbQZDgCjHxBSKwTGpt8QCIDVH3/4H5OwEvldhliINwAFLsEyyIfGKV+vm3eEehVqKTdNxtDiPoLHCRiuwTJxCECxMDqDjTvZ63KaPKvRgV2i/F3ohm88V8LN8hgJcXD5pVGIPPNn9EBqSQC0I4AMxBUcQNCkarkFgSn/oCs9GCVep4eUG5BRAOcQOCWlGSc3If0IFqRfURQGRrKewPKEJ9sLnIowKCcw+f48N6UHjqYtgInaCCkBbPSj8VEkCr2g8U43wY1xX/BNkwreQrzg+oaJghOCGTU8RBxuIp6VFOGoEXgEsBLIgV6gBgxoLSI5CgiYNT+GBHsU01GthrceiMUtv9KgAYktgVNeGrBbtiOQVi9x8WjiAW7UNUnm4Vet7WtsFgDCDYEwQ/EVL1PnQf/xCDLTowTh4c4HPRDoQaiwhKIAae4B7xgCBydI/CDPOrevK0FR4p6w3VfoXgQiB3T1N8Y1PCD0X19JqcHGfzB5WkQE4p/kdeXBcEVUXEIFqSij82lMyrWq/7c+LFHA7z5/dwOHHg8s/Y8C2CmhbmALtare+4UWLfb25BmXABKABTniC8gRAP2yvDAiUAsElnrxFzITQa/sAFecAOY7zPV/8jMQHSbWAiUPGkQNABhw85xrSCv+mMSzFR8+7mjw01A8f4F8S/td4jnDHYxpT8/OEyV3gz2+GTfdAeAszswfJNGlQhEIjB0Bls0BKn4Iw7WKu9f1gmSagmvqleEwJwnZwjO7npz1HdCJ1hS/mlBcRXyF3i/M7NxqJFoeH27z7nnJaBmpUZKHsTbGUc1ALEoIGsGYl9ixS50gjAT/VhB8IzvGTrBVfWEz1MzAkRFTtecW731VdjNQPukVdhdn0Y8d/a7WYH6i/TBPBzUFwAlHwtGHOQISrgb1AMUgDETTA3+THAdeRJhg59V/Ektofa9I8wxVICkC7QQSAd2O3cftzPzdMK6aA4iZI4ILfYRbb9RgqICt2AxVnYZ4kkBvHOBxT/zN9ybHx/f5Ql2fkGCX6ANm6F8WCfqAS+Eq5AGcHJd2IFHagTMHAAj+mWBnDXuc81CjhsAi5dL2K8QCYI1aJ/PJtSSxEFXASv7C2I3ZB9/a0j/7nDn/j1pHsz9Jr8fNpxPBUAUUYD4wz5GBlmyAiORjtAIGDFwzSUwqiNZ1d1tPiB7/Q9VeI9KeJU16/knkEeQJEALjY4rkp74fCZiMDSA/PgvT/aT2gYgp5E/P29AKBQAo6TRth5T4VesQFb0i4K7RA2MZpgyFXCEQHCOixuYMPgy2L7+45ezSSKt2oUkURlpXkEMOLSiXPuDQZjk63N5bmzOSxQdLHX7AhwUEA0BAeQPJIQzkAuFlOK/GtyLdiGDKEBdllQ7YouxV2Xdwza9So4Kp5Z0yAgUhTlJgFzSFrznIHYIwKcCu2/L3LsCg6UI1b1/CA+ApIV5/32HqOIjdQusE4azip5Wc1b0q/QGIAlaWEJbXP3r/L+AEipw/+BtkQVY9fIM2i/ZhgVEgJO6DZ1ksVtlYdoQAPhVO0oKmYBmnAYco4DRCRB3TwCziptaE0auER9/VzRqKNOEYINOQg2m1l9GpGNQAhh1v6UmxNQh2M4+LmlUzll0OTjYQOaGlZAEMCrdhmBphaMBwBADrSQQc3//He8KgFETT7p6BHnjj2X9EXsDjrgBS6ihoAmcSQVYmE4JgYWFpp1waAQRoqDzxDhU+HxSnZHz/9JEY6Y5MJA+cwoWrt99+U3Mc/9g/NQTFaigAEtwB1yBzwzucZSX7RZEILhR1d5GDCsBLVUdIQvsldZfEJt5i/MHx2hGJZFkVVyK242iFeh58oBUFqIQbkfp2DV2X0CkAYgv1sU+P+I/HmBu8nErugdRnUWhfp+A/ddlbEH3uQlBsNobUEMHasK1HOYn8BEEvCUaiuigXRIKj+sGOPA4KAWz9/s7WxcgB4+a6/fI2osEwv4yOENAiPf+wQhbc/5f0gGisWuQaRFmGoIqguARWsBQgTTocDLMT5OJUQnhqdCEig+/EShKSEgTVV0MBMnz04BcshPnLk/+OaV0/dwKzB4QUt1NB6uTDfGOP+cNm9mEsBAFiM7AQh9AKVEU75vy68jeOxrUC4mDEuYO0oLqoSdHaEF2eXYYSm0V+oEOwpLmYFOF3Z4CmAeBTIGueiIw2xoKPzDBJVBXQ5g5O8/twwA+QguIjJt3+g0NQEcDfUXgO5gsqlTBLkQLdl86K3CWneitQ8sg/5oWAUJP2C3V3RoEyji5n4b9lB4t9pz2CA+cAFn1Z9I/uzYsU/ELtEBOCHYQQqGcFejV+yeuRJX31zsKV5IGjway9z6PLDxKwNEPsBuOEiqw57jGgOtZ1Y++T50AuMFl7hPIbhskiOwsATtRoc7rS7dXrpcgrMCGJca6ELJo+Y0be0BW5ZKGcFz4y8W9BduwcDnK9iO5fagsKpp9ANnvDPxeP8THNyIVFo1AMas8Qk5v2Ytm0LCCYAXqn+wQsPTBh/5Bcnne14Os3uCQt28vsK1WUESJFviBgAW//3u9PLxusXchcCR2WsNzv/ImvgZzzkUByDUAIrjTvmSHAowpJBQE4SUlxMxnARlQbIqkArVAJ6pBBvELCCKlkyCDAP45BYfEPfcUpfMch3Vn4bheYK4E66BxAxHSVd5INgEPgU/NBCDfNQ8Ho1CoINAPQAW/QT8OCIZlNFCB84XhoDChFByHGjx35v9BLgyhmojqHYb5QYXnuAecvua0hZe6BV9f7v4ibvgvamrmAc1TmaEir0LQ9h97eYAYVoM/nWA60i8Q3Ifezha9BqaaL3zvqd6IAuwwLSCCuCLuJWch4h30giPtyiAphKEBcCu9BV5wwzkMxID8rhMwdwMhcSFgrBT3RUTQboAUg3+p+Qe1IGarOioVnazmefV3lHpwA0AcLWCahUiXwePHWJsP+GH1gnp/we5KfOhJAbsj0H/BIEb04TbrTPsAyb2LLu93KwfCvn5PLAwrOXAa72eEQRo1CNdw5IprsAZ3hApy9zlcITG2vpCihsRSYxNS+J4vdBZ6B52eqRcQ/QXmSjAWSfa/5GA5qEg4iJFtm624AqXLrSA2gx8p1Mdqcghv41S0lSp/xAYs9gakQc4Ie2RTUYwYgt748mV+FU1Xgp14eW3XYZ6cdqGTNHwHICTwEeTPl0jEZwIgP9gDEaogeg5IHWCF+1eoAhvEKPB/EAeTRsM/pSAP5wjWEUMM1/NJRhwJbpJSgK7S7zF3EOsI5jBQBK9DV80Z8Y0COzvmWzJXgDl40KEC6cqvqgi4OB5cpgLFYK/1CvDiItXqC6/S87wfAUfPtxqfGNzlYaOjlf1IsHPPvffHgDAoEeEST4ZLZUd/RSo91/BjXY5ggWgQ4In3fyj4mUqPrInHOCLKO3wUwRsfyXpt1nEIRLrqcWeTuk7bigsbid1zD4iDRQtnIdQsyIXnFCn1I9D7ADgxEhOvR5AJosoUbu1FkJyYCi9OhQERoIx+4AX/YqUXQhtYEwKN4Cy1HntLMmtaAQpqfrT/UCoLSxeswjA5UWPPi0mjajUWxMTdVusNvt/ChMdmILK5IRMFu90BMEzFYHdg2GAgeYVHMMJIBTA7EFTx/5fpgTFXz9w/en0ZjD8kCDoKPNGwlB01BmoWQbh+AxR689mBponGJOr9OwmMu3dtJ/ylW1Tik4ElUPmR9RqII+pVhD9ychABMQ51gOIZg+/G+5mGIzLB1JJC5WhzYjhJ7IWmLDpA8jzsAafUPkB2WnFBF4iSxkq1ty7f25rv/+EQLOxs2oUdTSA9HIR9swdBlCcFe9owPC3XWDDC0ISVzsEVbSCF/sWdA5Fu4HJqankp2SeQCYYrImNalfmhpVxYrGkUS4LeSUjg8dD7+D7w/ybIfy7vlB9/HJ978zr7/45Qgajzj+4EjIK/ULHPRAOlKr/aG0AFcqCyu0GcW45Igh6JMJmhA49/U+cEssHNJhtXDC1MOya3j/sAiAGcrEtqtgjBD6wEzSDc7D8o6C8rIqAZyPk+NQoNLAZ1hR64Yl1FBY648smUYKnSg1Xwk/0DyRyArByMUobyByhCcPnOaPyoegREFS4jNfYAw+IHCjdC1J2WDZBke/OyN85J24WiXwDYPoJyYuCD238ulvuzwt6KgHf0shWKsqCFFGjB/w8HU8eeTED9wAAAAABJRU5ErkJggg==",$me="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAF9UlEQVR4nGWVy64eVxGF16X27u7/HMcyuZGYAINwmTBigngBXoc34El4B0ZMGDJjFCExQUIKiRKZYBITHdvn/L1rF4P+c+yEUqmH9WmtrrWLkdB4C1/91h/9yn947D8+8CfdlBeGGAMtqwNd6K7VWAJrw9qwLtw2nDaernh6wKuHPD3S1Vs6vaPT97W9r/Wx1seKUWj7Uzz6vX79T//wF/Gbx/7rw/jsFB/39nlrX7q99LKrp5bJZXAtrqW1uJIncbNOXafBU+o0tZW28got0AJ3KACsE4OfYvmzfvDMb/+4//Td9snD9rfr9vHWnyz9361/1fpNLLde0mt5pTZ7a9pCm32SrqQTfZI3aqNXHAwvcAB4BPwnk/oMEcqX8eaz1t9cHjxs7133f5z6p2v/Ylme9eWmLbexjlhnrPBirz3WxWv30rw0L/Yi96PpDrcDcPMEfq+qvQCfsFF1blcv2js3vb2xLNd9O/XT1p8u/Vlfnvd+25bResXC6BFLj2WJpUdv7uEe0exGByPoOAC//BH+cgNqUjfkU4mOEetde+O2vf+y8br71Nva+9q/XpYXvZ97z9ardUXrra3RerQWrUU4myLk4AzYiADwJ+NRQ41i7MSNEBIcM5YR1+f21rnlXcPWtbVYW1/a7dL21mZvbK211lv01lpEtIi0MxTmFGzMAABAN6gF1CTPxI1gkXa5Z5xGPNrbfo6xB/bQubW9nXvkHtXDPfqIJd2bI+1mpZjmNK17QFuxDzhBJued8Fy0KLvcp7fpNzJuM3JE7daIWGKMqAylW0bLiHQ0e1ppTXEK8Qrwkzv8fUIua6oG553wQpRIme7lbfpBxm3GnoEMZ+wZlYGMlu6pNh1pT3nqALCEugCeAB2ohKqYk9hZd4JFS5ThDm/lB9N305nGtKfnNKZiqk23qZhySZOcYhHFewXfI54UMCBDOYlU3TMkSaYWaCtdwXu5yprOKUxrqk9FyUWXNKXiBfCNgucGboGAUBwUJzFYO3G+MCwFtdAn6K6UZZSyXCXBAUVdGCoS5IVxAcQNujAHKCiLLHJqDtWZh1GHV0Et8EYNqOABTUhglKJoyKBBgSwCBC6Ajz7Azz+GiJbwhFTkZCXnEM6EJcuHDmmlztCkBE2IkMGAAhQoSCBBvgYA0G6xN4DgLE5IU5iqZA1hJ8zDqCY2qktJHfEnZSpIk6bE++kEXwHUEBMCmBBBFzE5UzNZuyBRshlSSF0aEg6MaDHIgyFCPAqvA/YdIjTgQ3WBLNZkpWoQPnRIUljdGiIkHd9jumgeO0ESEI97cNTPJj6Z4ISOZh1JUSVLwiAs7pRp02aTypRUhwIzjvhfPCKF1wH/BTqwA5pQlnYyipgs6dDBQVncZatZaZUlsUxZYVq0jyfm8kNeBzz/Gu0ETrjABAURAoTJOVVJpDAoM3ZOc5olfmMK42CYMrRTAr6tIK6QiSA84VtIIEosslSTNYUkUxyS5aEDQ6tMmQ7YDMOmjziYx8E56oPEl8DdDgM2/BLeIJVw9CRSTClZg97ZrDl0BF6m49V0GTIZQL4CvNuxFj47w4ASmqUkAalYU+DBoIbK8hAG506aZTLonWFG0IMa1AAHXlegW9wFGuAJG97hhFkqiuCxUZyqSSWR5GCZHKxB7nSwDcZADHiACQ4eJ/Oot9+BvsaLQD2Hby9RUEEs1cUlcdKpmWKSQ2VyqAY56J0RiEEPOqHxXYv2W4yJuANWxBkBOKEGFcwyjlhMYdLJSjLJpA8FAxqMwXZRQA0wgdQ94Hcf4nqDFnQhBDcY5YJUIqSSpnxpRqone6ol+2Af7Il2MJJxnN/8lgIA8yWQUKItaBMRsGEdDIrQoYNTnGSyBqdZQSY16IEYaANOOKn/A+htXH+OdgLOiB1BBOEGCz5ejmO6JpGEeexVJTmohJNORqIlnVDyO4CvvsT2AGm0BVEHo0IMHeEooeQipzDFY5eSNcigLgwoGYlIKHF/ky9Z+xD/WrCfoQUuRCGAKBhlwIBRQvmSuykkMYHkqx7EAPK+/wdqEbWmfB0bfwAAAABJRU5ErkJggg==",Jme="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAABGSklEQVR42u3cx4tb6brvcf0DmmpUoxrUoAY1KCgwFAZjME1jjGmMTWNs2tjY2MY2DjjinHPOOeec3dXOOeecU2VlaSksSc/9aq1X0pJKqmD3Dn3upvnCSe197v38nlfS2fscW1x+kbCMloAsFY/skEY5KbVySb7JXfkoT+WtvJGX8ol/67s8lDr+o065KW65Jl7+q/zyF3/nWTpJx+gQ/7H94pPd/Oe38yduEZds4E9dK/Wykj95GX/OYvkq8/kz58h7mcmfP41/hMnyTCbIIxkn9/nv5raMlOsyTK7IELkgg6RKBshp6ScnpI8ckd5yQHrJHvmd/3578I/QjX+E32SNdOEfobMskV9lAf+vmiOdZIZ0lKnSQSZKe/7kSv7kdjKchkoFf2q59Ke+UsafWCY9pZQ/rZQ/rUS6Umcp5k8q5k8p5k8p4k8p4k8o4u928Hc7+Dsd/F1mpWLn7zArVhWpHOlsRvYC/Yf++t8A/j8fQCxrADvTA/j6vwH8/zGAaOzX/w3g/+cBaJEuEkqMMQbg/t8A2jiA8n/+AHzB7qLFx8K2zBhAA5Q16QE8+98A/q8PwOXvLYHYePEllsO666cGcPR/A/jnDaDRN0C80Ynija8QV2K3GsBlywDe5h3AVYAvAv0X4IUH4P7fAP7bB9DgGyau0BRx6yvFGd8j9YlTUp24LF+g/gDKGwbwAqwnwD1o5QD2/VcPYMT/BmD9q94/Thq0GeKMrpbG2B6pi5+S78kBJAoNoDFrAFU/PICP/+UD6PL/xwDqAlOlNjBH6sMQ6XulJnZavsWvyGcG8D7BABJvsgZwxxiAK2sAZ9ID8P/gAF78QwbQ/v/eAGqDc6Tav1BqtA1SE90v1fpp+Rq7Ip/id+UdA3jNAJ4nPsnjRGYAN0C9whe8C+kB+BmAP2sAu/jPNx1AjRrAlzwDeNqKARz/3wD+7r+qtSXy1QdLcJN8Dx+Qb9Ez8kW/Ih9id+Vt/Jm8sgzgfqL5ARwxBuBjAN70ADbznSE5gDWMJzWARekBvGsygLFy738D+Hf+9T20Sj77VsuXwFb5oh2SL5Gz8lG/Ku8ZwJvYM3kZfyPP4h/lUeIbA6iV24lGuZ5IDcALjQ8aP4+zOYCD/Pt70wNwqQE0WAbwLWcAr/MM4FbOAP78Bw+g6L97AN/CG+Sjb6N89O+Qj9oR+Rg+J++jV+Wtfk9eMYAXsTfyhAE8jH+TuwzgVqLBGMDlhFvOJ7zyZyI5AB8D8EHjyxrAtjYN4EnWAEYYA7j8XzCAXwoMoOJvHsB/aARfwtvkvS/ZHnkfOCbvtCp5G74mb6L35KX+TJ4xgMexj/IgOYB4rdyMN8i1hFMuGQPwyDlGcJoRHE+YAzgA/l7jn1VwqwE0WgZQLUuNAXxmAB+MAcyQVxClBvCQAdxtxQD25x1A1x8ewB9tGEAljO3+7wzgU2SPvPPvlje+A/LGf0LeBP+S16Fr8jJyT55Hn8kT/Y080j/K/dhXuROvYQD1cjWeHIBL/lIDOEXH6TAdoD0JcwBbGcAmBrCeL4Br+AWQO4DZ/MQ0B/C8mQGczxnA4YIDaM0LUNmqAfz2LxmA/b9xAB8iB+VN4IC88h2Rl/5T8jJwXl5o1+V56L48jTyTx9HX8kD/IHf1r3IrViPXY/VyJd4oF+IuqYq75SzYJ0E/ZgzAI/tpD6/DDgaylZdiE9efHMBqYwDfGcBXBvBJ5uUMYJIxgAeWAVyzDODcv2gAA35oAEV5BpAZwT9sAO+iR+VV4Ii88B2X576z8tx/QZ4Fb8gT7b48Dj+Vh5HXcj/6Qe7oX+SmXi3XYnVyOdbAAJwMwCVnGMHJuEeOAn/IGICbAbiMAWzhC+NGvjOs49fD6kSNrFADWGgM4L0awEs1gMeWAdxUA7jUxgGs+Le8AP+nBvAmelJeBE/IM99peeqrkif+S/I4cFMeMYAHoadyP/xK7kTey63oF7muf5creq1c4hU4H2uUczGXnGYEJxjBETpE+4DfbQzAqQZQzwBqZVWiWlbwS2JJ4ossTHxUA3ijBvDMGMB4YwB3ZFTeAZz6FwzA+gL0+jcN4L/sl8BL/Yw8004Df04e+87LI98Veei/JQ+CD+Se9lTuhF7JrfB7uRH5JNei3+SyXiMX9Hqp0hvkbMwppxjBcTrCEA7SXtrF67Ad/C1c/wauf60awHJjAJ8ZwAeZm3gnsxJvZHrihUxNpAZwvxUDOKQGsJsBbP+bB/A7df/JAfzD/mcBz3WuXvtTHvmr5IHvotz3XZN7DOBu4IHcCT6VW9oruRF6J9fCn+RK5KtcjFbL+Wid/MkITuuNcpIRHKPDjGA/8HtoJ98RtvFrYTNfGDeAv5bnf2XiOwP4KosTn2SBMYC3DOCVMYApiacyKfFIxifuy5hEcgA3YLrKAC7KYPlLBjKA/nKSARzLM4DNagCr/4UD6PRvGsB/YARPda5eOy8PAhfknu+y3PVdlzu+O3LL/0BuBp7Kde2lXNPeyZXQR7kU/irnI9+lKlojZxnBKV6B44zgCB3iI2E/7aEd4G8Ff1O8Tjbw03FNvFpW8jNyGc//Yp7/BYn3lgE8ZwBPZKIxgHsM4LaMSlyXEYkrMjTBABJVDOCsMYC+lgH0VAPo/hMDqGhxAJ1bOYCyf+4AHuuX+Ky/yMVfAv6q3PLdlJsM4Ib/oVxnANeCL+WK9lYuaR/kQuiLVIW/yblItZyO1spJRnCMl+AwQzhAe2kXXxB38B1hC18WN4K/HvzV8e8M4KssjX+WRfGPMp/nfw7P/8zES5mWHsADGZe4ywBuGQMYbgzggjmAxBnpn2AAiaPSJ5EcwD4GsAuubWoA6/83gB/964F+Re6Grsjt4FW56b8uN3y35LrvrlzzPZQr/qdyOfBSLgbfyHntvVRpn+Rc6KucCX+Xk5EaOR6plSOM4FC0XvYzhD20U6+TbeBvidXKBn42rot9l1Vc/4r4FwbwiQF8kHnxtzI7/lpmxl8wgGcyOfE4awAjE9cYwGXLAE4zgBMM4AgDOCi9E3ulZ4IBJBhAYpN0S6QGsByyxX/bAEqyBtDxJwbwX/xL4J5+TW6Hr8nN4HW57r8B/G254rsnl32P5BIDuOB/IecDb6Qq+F7OaR/ljPZFToW+yXFGcJQRHGYEB3gN9tJufiHsoK18UdzET8YN4K+JfZOVsa+yPPZJlsQ+yML4OwbwhgG8khnx5zI1/lQmxx/JhPh9BnBHRiduqgFcYgDnGcCfWQP4Iz2AndkDSKySLgkGkGAAifnyS2K2GsCUv2UAxQUH8A//HwbdiV2Xm2HwtRtyNXAL/DtyyXdfLjCA876n8hcDqAq8lnOBd3Im+EFO8QqcYATHGMFhRnAwXC37GcIe2sl3g+18SdwC/kZ+Mq7Xv8lq/SsD+CzLYh9lcey9LIi9lbmx1zIr/lKmx58xgCcyKf6QAdyTsfHbMjp+Q0bGrxoDGMIABiXOqQEcVwM4wAD2qAFsVQNYl38ACQaQYAAJBpBgAIm2DKDrDwzg7/gp+G8ewc3YTbkevilXtZs897flov8u+PfBfyRVDOCc74Wc9b+S04G3cpJX4ETwoxzTPssR7ascYgT7+U6whyHs4svhDtoa/S6b+Lm4Afi1+hdZpX+WFfpHWap/kEWxdzI/9kbmxF7JzNgLmR57KlPijxnAAxkfv8sAbjEAvgDGr8iw+EUZEv9LBsX5CZjgJ6AxgMMMgF8AxgB2SA9jABuNAXRt7QASDCDBABIMIMEAEgwgwQAShQbQ+n9VUNP/WcA/4HvA9RhXH7nFl7xbciFwR84zgCrfA/mTAZzzPZEzvudy2v9STvrfyHFegaO8AkcYwSFGsJ+XYC/fCXbTDoawLfJNtvBTcSOtj36RNdFPshL85eAv0d/JQv2tzNNfyWzwZ8aeybTYE5kceyQTY/dlfOyOjInflFHxawzgMgO4wACqGMBZGRDnJ2D8mPSNH8oZwBY1gLUMYCUDWMYAFlkGML1tA0gwgAQDSDCARKEBFP7nA/6RA7jCAC5FbssFDfwg+P57wD8A/pGcZgAnGcAJ30s57n8tR/1v5XDgvRxiBPsZwV4+DvYwhJ38OthOW8JfZBNtiHyWtZFPsir6UVZEP8jS6DtZBP4C/bXM1V/KLP25zNCfylT9MQN4IBNid2Vc7LaMid2QUTGe/xif/3E+/+N/MoDTagD8AkgOIM4A4rulZ5wBxJMD2JBnAPPyDGAs+KPyDKBf4QEkGECCASQYQIIBJP5d/7OAf+MILvH/8Rcid+Sv0B35kwGcC9zn4h/IKQZwkgEc9z2TY3wMHPG9kkO8AgcZwX5GsJcR7GEEO/liuJ0hbAl9ks20IfxR1tHqyAdZGXkvyyPvZEn0rSyMvpZ50ZcyR+f69WcyHfwp+kOZpN+XCfodGcsQR/N9ZGTsCgO4KENjf8ngGJ//DKB//DgD4BdAnC+A8X0MgF8A8e3mAOIb5Lf4GukaTw5gqWUAsywDmNDGAXQrPIAEA0gwgAQDSDCABANIMIBEqZE9UaIqVhVZcqSzJf5LBnCep7cqeoefd3flrHaPz/r7PPcPuPpH4D+RowzgMK/AIV6BA3wX2M8I9vJ9YDcfBzv5TrCdIWzVPshm2hj6IOtpTei9rAy/kxW0NPJWFkVeywLw50ZfyOzoM5kRfSLT9EcyWX8gE/W7Ml6/LWP1GzKaXyQjYjz/sQsMoIoBnJWBsZPSP8bnf+wwA+ALYHwvA+ALYHwbA9icPYA4A4gvlF/jc+WXeGoAk/+GAfzSigGUtXEAagS5/bsHUMUAzkXv8tv+Lt/w78lJBnCcARxlAEd8j4F/KgcZwH5egX2MYA8j2M0IdjCC7bQ1+E4200btnayntbQq9FZW0rLwG1kSfiULIy9lXuSFzIk8k1ngT48+lqnRBzI5es+4/nH6TRmjX5dR+hUZoV+SYfp5GRLj+Y/x/BsD4PM/xvMf2y+9Y3z+x3YwgK0MgF8AcX4CxlczgBUMYEn2AOLTpGOcAcStAxje4gBK/5MDSGfL9K/86xwDOM0ATjGAEwzgePC+HAk8kMP+R+A/lgO8Avt5BfYygj2MYBcj2MEItvOdYEvgjWymjcE3sp7Wam9kNa2k5aFXsoQWhV/K/PBzmRt+JrMjT2RG5LFMizyUKdH7Mol/3PHRWzI2al7/SP2yDNe5fr1KhujnZJDOAHSe/9gRywB2mwOI8fzH+AIY4ydgfBUDWK4GsEANYGb2AOIMIM4A4gwgzgDihb4E9rAMoMvfMIDiHxxAzghy+7v+Os0ATgJxnAEcYwBHGMAhBnDQ/xD4R1z9Y+CfyG5GsJMR7GAE22gLvww2M4SNgVeyntYGX8lqWqm9kuXaS1lKi7UXsiD0XOaFnsmc8BOZGX4s08MPZWrkvkyO3JWJfPkcF+X6o9dkVJTrj15kAOcZwJ8yWD8jA/WT5gB0nn/9gPyh8/zHdjGA7WoAfAGMrZXfYiula4wBxBYbA/glPqd1A4gzgDgDiDOAOAOIM4A4A4gzgDgDiDOAeGoAnZoZQL7vAcXNvgI/PYC21NxfJ+N35Difw0cZwJHQPb7h35cDDGA/HwN7eQX2MIBdDGAHbWcEW2kLQ9jECDb4X8h6Wht4IatpZfCFLKelwefgP5eF2jOZrz2VOaHHMiv0SGaEHsi08H2Zwj/WJPAnRG7KuMh1GRO5ygAuMYALMizK9UfN6x+on5D++lHpqx9iAFy/vkd66Tulp87nf2yzGsAaYwBdYvwCiPEFMMZPwNgc6RSbwQCmMoBJDGA8AxhjGcCQtg0gzgDiDCDOAOK5A/iZL4L/xhEU6hgDOMIADnORB/kiuF+7L/sYwR5GsJtXYCevwA5GsI22MILNfCfYxAg20Hpa638uq2ll4LksDzyTpbQ4+EwWBp+A/0Tmao9ltvZIZoI/PQQ+/xiTwuCHwQ9fl7Hgj45clpGRCzI8wvVHuf7oGRkU5fqjxxkAz79+kOvfxwB2MwCef53Pf32TdNfXSzedz39jAEvVAPgFEJttDKBjjAHEGECMAcSSAxj59wwgzgDiDCBeYfZPHsARBnCIL2IHGcB+cPbyMbCHAeziy+AOXoHtvgdc/SPwH4H/WDbSBoawjtbQKlrpfyLLaWngiSymhYHHMj/4WOYGH4H/QGYyqun8uVO1uzI5dFsmhm7K+BD44WsyOnxFRoUvygjwh0W4/shZGRzh+qMnGMBR6Rfl+qP7jee/t87zr/P861sYAJ//Op//Op//Ol8AdT7/db4A6skB8AUwxi+AGD8BYxNpnDmA2EhpFxtGDCDGAGL9pTzGAGIMINaaAXTMGUBqBAwgXqZiAPF/0AAOxW/LAQawL3JH9jCA3SDtDN7jW/592ea/L1sZwRZGsMn3EPhHXP0jWUtrGMIqWknLaan/sSzmI2MhzQ88lLm8ILMZ0kyaEbwr07Q7MkW7JZO0mzJBuy7jQtdkTAj80CUZGT4vw8NVMjR8jgGclkERrj/C9Ue4/uhBcwBRnv/oDukZ3coAeP51nn+dz3+dz3+dz3+dz3+dL4A6XwB1BqAzAJ0B6AxAZwD6aKnUrQMY2HQAMQYQYwCx/AMoNgaQ7xXIMwCjYktFmbIG4PjPDmA/A9jH7/A9DGBX+I7sAGo7I9gWuMu3/Ht80bvP1d8H/z5X/wD8B7KaVjKIFbSMlvLvL6aFjGU+zeXvmc3fO4s/Y0bwjkwL3pYpwQz+eO2qjNWuyOgkfuiCjAhVybAQ+OEzMjh8UgaGjzOAI9Ivckj6RsCPcP2RXQyA649y/dGN0j3K8x9drQawjAEsYgDzGQBfAHW+AOp8AdT5AqjzBTA9gBHSTmcA+mCp0AeC38wAYgwgxgBi/BSMtXUApc0PIO5IZzOym/0nRrAnfkv26LdkV/S27OCzeXvojmxlBFuA2wTgBv9dvujdBf8eV3+fq78vK733ZQUt499eQotoIc3nv2Yu/7WzaZb/jswI3JZpgVsyJXBTJgevy8TgNRkfTOJfljHaRRmlga/9JcNDf8rQ0BkZEjolg0I8/eGj0j98WPqFuf7wPgawhwFw/ZFt8ntkMwPYwADWMgCe/yjPf5TP/yjPf5TnPzqb+AKo8/mvT1IDGEujmg5AZwA6A9AZgJ4aQPecAfxqDiDGAGIMIMYAYgwg1poBlLRtAAWzFe5nB7ArflN2MoAd/B7fFr4lW/iM3qzd5rf9HdkQuAP+Hb7o3eHq73L1Zsu9d2UpLaFF/PsLaL7vjsyl2b7b4N+SGTTNfxP8GzI5AH4giX9FxgUvyZhgEv+8jNSqZLj2pwzTzsoQ7bQMDnH9oWMyIMT1h7j+8H4GAH6Y6w9vZwBbGABf/iJcf4Rv/xGuP8LzH+H5j/L8R3n+ozz/0enEAKIMIDo+ZwBDCw9AZwA6A9AZgN6KAcQYQIwBxMpVDCBWavT3DqCFEfzMQHYwgO36TdnK7/EtDGBT6JZs4LN6A0/2Oq53DVe8yn8b+Ns8+be5+js8+Xdksfe2LKQFNM93C/xb4N+Smb6bMoOm+a/LFJrsvyYT/VdkQuCyjAuAH7ggo4PgB6tkRPCcgT80ia+dlEEaT792RPqD3y8Efmiv/BHazQC4/jCf/WGuP8z1h9dJtzDPf2QFA1jKAHj+Izz/EZ7/yExjAB2jU2iiOYAoXwCjDCA63DIAfgHo/ahP4QHoDEBnADoD0Ns4gFiJqlhVZCl3AI5/3QBaalv8hmzRb8jm6A3ZyO/yDXxDX89n9VpaHbwpq3i+V3LNy2kZwEtoMS303pT5NI/m0GzvDfCvy3Sa5rsmU2iy74qJ778k4/wXZWwSPwB+APzAORkePCNDg6dlSNDEH5jE18DXDkhfbZ/00bj+0E7pFeL6Q1x/aKP0CK1nAFx/mOsPc/3hJbRQOofnMQCe/wjPf4TP/wif/5EJDIDP/yif/9GR5gCifAGM8gsgah1A79YNQGcAOgPQGYDOAHQGoLd2AHlGoLIZ2bP7dw1gS/y6bNKvy4YoRa7LOn6br9FuyGpaGbwhK3jCl/tv8C3/BvA3ePJv8OTfAP+6zKU5NItmeq/JdJrmuwr+FfAvy0TfJZnguwj+BRnrPy+j/VUyyv+niR8AP3BKhgROyOAg+MEjMiB4iAFk8P/QdklvbYf00rh+jevXuP4Q1x/i+kMMIMSXvxDPf5jnP8zzH55FPP9hnv/IJHMAEZ7/CAOIjGAAw7IHEGUAUQYQZQDRnj8+AL1cxQD0UiO7/pMDyJvN7O8cwMb4NdmgX5P10WuyNnJN1vDbfBW/0VfybX0FX9yW8fm9hBbznC/kqhfQPJpLswGf5b0qM7xXwL8iU2mK95JMoonAj/ddkHG+8zLW95eM9iXxz8kI/1kZ7j8tw/wnTfzAMRkUAD8AfvCg9Avul75B8IMZ/J4a169x/RrXr62RbtpK+U1bzgC4/hDXH+L6Qzz/YZ7/8DTi+Q/z/Id5/iNjaJQxgHYRBhBhABF+Akb6Nx1AlAFEGUCUAUQZQJQBRFszgArLAMoyAzAqtlRklncAjtYPoFA/MoAN8auyLnZV1uhXZXXkqqwMX5UVoauynJ9qS/nGvoQWBa7yE+8qP/Gugn9F5tBsmgn4DO9lmQb4VJrivQj+BZlI473nZZz3L/CrwP9TRvnA952R4T6F7z8ug/3g+4/IwCR+4ID0C4Af2CN9ArsYAPjBbdIzCH4Q/CDXr/HNX1sFPp/9Gp/9Gtevcf2hucTzH+L5D3H9ockMgOsP8/yH+fwP8/yHef7DfP5HBmcGEOlLfP5HGECEAUR6GAMoif6WPYAoA4gygCgDiLZ1ACVNB2DkSGfT/6YBtKXUANbGr8ia2BVZpV+RlZErsiJ8RZaFrshSfqcvpkV8c18QuAL+ZX7iXQb/ksyimTQd9GmgTwV8Mk0CfQKN91aBXyVjvH/KaO85GeU9A/5p8E/KMN8JGeoD33fUxPcfkgF+8P3g+8H3gx/YIb0D26RXYIv0DGyS3wMbGMBa6R5cLd2CyetfxgC4fo3r17h+jevXZhLPf4jrD/H8h8YTz39otGUAQ4jnP8zzH2YAYQYQTg6gV2YAEQYQYQARBhApMIAoA4gygCgDiFaYNRlAaQsDyDMC3d60f+UIkq2OX5KVMdIvyfLoJVkaviRLQpdkkXZJFtJ8frbN49v7XJrNF7lZPO0zeNqn0zTQpwA+mSZy7RNAHw/6ONDH0GjgR3lPywjvKRnuBd97HPxj4B+RQb7DMtAHvu+A9Pftk74+he8H3w++H3y/wg+sk+4B8APgB3n6g1x/kG/+wQUMgOvXuH6N69f48qdx/RrPv8bzr/H8h3j+Q3z+h3j+Qzz/IQYQSg6A5z/M858cQJgBhHn+wwwg3M0ygM5SHGEAEQYQYQARBhApMIAoA4iWqcCP/k0DaJItu58dwMr4RVkRuyjL9IuyNHpRFkcuyqLQRVmgXZD5NDd4Qebw7X02zeSL3Ayaxuf6VD7Xp4A+CfSJNAH48aCP9Z4F/wz4p2Uk8COAH+49YeJ7j8pgL/jeQzLQe1AGePcb+P3A7+sD3we+D3wf+D7w/eD7wfevMfEDK2ipdA0sli4B8INcf5DrD3L9Qa5f4/o1rl/j+dd4/rXRxPVrXL/G86/x/Id4/kNcf4gBhBhAiOc/xC8A6wDCDCDchRhAOM8AIgwgwgAiDCDSzACiJapiS3/zAFpboQEsj1+QZbELskS/IIujF2Rh5IIsCJ+XeaHzMlc7L7P5zT6LZgb+kun+v/h9XwV+Fd/y/5RJNBH0JPw44MeCPoZGeU7JSM9JGeE5IcM9x2WY55gM8RwB/7DCP2Die/dKPy/43l3Sx7tD/vBuk97eLQxgEwPYIL/71ksP3xoGsEq6+cH38/T7efoDPP2B+TRHfg3wzT/A9QenEtcf5PqDPP9Bnn+N69e4fo3r14aYA9AYgMYANJ7/0B9qADz/IQYQ4gtgiAGEcgYQZgBhBhBmAOE8AzBiAJEyVakaQYEBpHOks/07RpCvpfHzsjh2Xhbp52VB9LzMj/wl88J/yZzQXzJbq5KZNCNYJdP57T6Vn3BT+CY/mS90k2iC7yz4Z8A/beCP5tpHAT8S+BHADwd+GPBDPIdlsOeQDPIclIGe/TLAs0/6e/ZIP89u6evZKX08Fnwv+F7wvQrfB76P6/cpfP8iAt/P0++fbeD/EuCbf4DrD0wirj/I9Qd5/oMMIMgAguYAKjSef43nX+tnDkBjABrPv8YAtB6WAfD8hxhAiAGEGEAoZwBhBhBmAGEGEC4wALJHSlTFZs0NIJ29af/KASyOV8nCWJUs0KtkXrRK5kaqZE64SmaF/gT/T5mhnZNpwXMyld/uUwJnZZL/DD/xzoB/mp95SfhTXP1J8E+Afxz84+Cb8EMN/EPgHwT/gMLfq/B3gb8D/O3yh2er9PaA7wHfo/C94HvB9ybxl9MS6eoD38fT75tn4P/q5+n38/T7uX4/1+/n+gPjCPwA+AGe/wDPf5DnP8j1B7n+INcfTA6A51/rrQbwuzkAjQFoXL/GALScAYQ6SVGIAYQYQChnAEYMIFymKjAAoyJLjjwjsLciW3Y/M4CF8T9lfuxPmaefkznRczI7ck5mhc/JjNA5ma6dlWk0JXhGJgdOyySayG/48f5T/L4/yU+8k+CfAP84X/aOAX+Uqz+i8A8p/AMyyL1fBrr3yQD3Hunv3i393Dulrxt8N/hu8N0WfM866eEB32Pid/OC7+Vz3wu+18Tv7OPp9/H0+7h+H9fvM/E7+nn6/Tz9fj77/Ul8rj/A9Qd4/gNcf2CAGgDXH2QAQQYQtA6A67cOQGMAGvga15/GVwMIMYAQAwhVmOUOgOzhElWxWZMBqBGobEb27FozgNZUaADz4udkbuyszNHPyqzoWZkZOSMzwmdkeui0TNVOyxSaHDwlEwOnZELgJPgnZZz/BPjHZYzPhB/Jl7sRfLkbzlM/DHQT/4AMBn4Q8AOBN/F3gb9D4W8Dfwv4m6WXe6P0dIPvBt9t4nf3gO8B3wO+hy99ngUMAHwv+F7wveB7k/g8/T6efh9Pv4/r93H9fq7fD76f6/dz/X6uPzDQGEB5gOsPMIDAH2oAPP9BBhDk+oMMIJgaQBL/18wANAagga+1V+UMIMQAQmWqUqMmAzAqyslhlh5AnhHkzWYW/cnmxk/L7NhpmaWflpnR0zI9clqmhU/J1NAp8E/KJJoYPCkTgidkfOA4+MD7j8lofseP4ufcSOBH8OVuOOjDeOqHAj+Ep34w8IPcexX+bvB3Sj8X+K7t0se1Vf5wge/aJL1cG8BfD/5aA7+HG3w3+G7w3SZ+V89CBsDnvofPfQ9Pv4en38vT7+Xp93L9Xp5+L9fv4/p9XL+P6/cNJ67fz/X7uX4/A/Bz/f4kPtcfAD/A9QcYQKCHZQDgB7n+IAMIMoBgMwPQGIBWoWIAWs4AQiWqYksFBkC2dPbsmhtAS7U0gNnxUzIzdkpm6KdkevSkTIuclCnhkzI5dEIm0UTtuIwPAh88JmMDx8A/KqP9R0x8fseP4Fv9MK8F3pMfvh/wfV3bwN8C/mbwN5r4LvBd4LtW00rp7loB/jLw+cx3g+8G3w2+ey4pfM90At8DvoenP4nvHUtcv5fr944w8X1cv4/r94Hv4/n39zMH4Of6/QzA35N+NwcQYAABrj/AAAI5AwgygCADCDKAYAq/wACMSo3sWolZ1giKcnKks4UKDCBvNrPITzYzflJmxIDXT8jU6AmZEjkuk8PHZSJNCB2T8doxGacdlbHBIzImALz/sIz0Aw/+cN9B8A/w+34/+PvA38uXvT3g7wZ/F/g71NVvM67exN9kwV8H/ppsfBf4riW0SLq6ePZdFnw3+G7w3eC7JzMAnn4PT7+Hp98DvmcUA+D6vVy/F3wv1+8dpAbA9fsYgK8PMQBfL2MApckB+MH3c/1+BuBXAwgwgAADCDCAAAMIWAYQrFQxgGCFWXMDMCpWFWWXOwAje/7yDaClWhrA9PhxmRY7LlN14PVjMil6TCZGjsqE8FEZHzoiYzXgtcMyOnhIRgUOgX9QRvgPgL9fhtFQ7z4Zwu/5wcAP4mfdQOAHAG/ibwN/a/rq/wC+N/C9uPqeXL2Jv0rhL8+DP4/Ad4Hvmkngu5L4Uwh89wQC383T7+Hp94Dv4fo9XL8HfA/X7wXfy/V7wfdy/d4kfm9zAD7wfVy/jwH4UgMA3w++H3w/+H4T3xhAgAEEGEAA/EA7I3MA5aoyVamRPZhvALkjcKSzpbMXHkE6W3bhH2xq/JhMiR0F/6hM0o/IxOgRGR85IuPCh2Vs6BD4h2Q0jQoelJGBA+Dvl+H+JP4+GerbA/4eGezdDf4ufubtUPjbwd8K/hbwN6ur36Dw10lPJ/hOrt650qi7M4m/FPjFOfhzmuK7wHeB7wLfNd7A7+AG3831u8F3D6OhBn47D9fvAd/D9XuS+H3MAXjB9/L8exmAt4eBX+oD38f1+xiAjwH4LAPwg+/voMoZQIABBMpVZWbWAaQrttSKARSquRE0V6EBTIkfkUkx4MGfoB+W8dFDMi5ySMaGwQ8dBP+AjNT2y4gg8IF9Msy/V4b6gQd/sA94r4I38LeDv5Vv+lsU/qb01fd2rpdewPd0rgF/lcJfAf4y6eYE3wm+c6F0dYLvBN8JvhN8Zwb/l1x8F/gunn4X+C7wXcNNfDfX7wbfzfW7+zOAfuYAPOB7uH4PA/AofC/X7+X6vQzAywC8DMCrBuBjAD4G4GMAPvB97c0B+BmAH3wjBuAvN0sNIFBqZA+UWMoZQDpHOluwFQPIyta0UBubFD8kE2OHwD8k42ls9KCMiRyQ0eH9Miq038TX9snw4F4ZFthj4vt3g79TBvl2yEBvEh94zzYD3sTfDP5G8JNXn4RfR2vAXw3+SoW/XOHz5DsXKfz5FvxZJr4TfCf4TvCd4Dsn5sEfaeK7ePpd4Lu4flcSf4AxgHI3+G6u380A3En8nuYAPAzAwwA84HvA9yh8L/he8L2dVJYB+CpV4PsqzFID8JepwDcqMUsNIF2RJUfTERjZm9aaAbQm6wAmxA/K+NhBGacfkLH6fhkT3S+jI+CH98nI0F7w98hwGhbcLUMDu8DfKYP9OxT+dhng3QY+8NSX3/R9+U3fB3gTf526+tW0SuGbV9+dq+/WyNU3gt+4QLo2gt84l8BvBL9xBmXjd0riO8F3gu8E3wm+cyQDMPErXUMVPtfvAt/F9bu4fhf4riR+b3MAbvDd4LvBd3P9bssAPAzAwwA8DMCj8I0YgJcBeCtVDMCrBuArV5WpwPdZBmBUbKnILDUAS7Z0drNgc9my+5ExjI/vl3Gx/Sa+vk9GR/fKqAjwYeBDwGvAa8AHd8qQwA4T379dBvq2gb9F+nuT+En4TdLHvUHhrwd/bfrqewL/u+XquzcuUfgLFf48hT87G78R/EbwG8FvBL9xPPGlr3EMAxht4jt5+p3gO8F3gu9M4g+04PdVAwDfBb6L63cxABcDcCUHAL4bfDf47s5GxW4G4FYD8IDv6aBiAB7wPe0yAzAqV5Wp1AB8Jari7FIDMHJkZUuVGkCz2ZqOoLnyDWBcfJ+Mie2V0Trw+h4ZGd0jIyK7ZXh4twwL7QIfeA34IPAB4P1bZYB/iwzwJfE3Sz/vJunr2Wjg/+FeD/468NfwZS9z9b9z9T0M+KUKf5HCn6/w5yj8mQp/msKfrPAnZOM3gt8IfiP4jeA3JvGHGPjtnOA7uX4n+E7wneA7uX5nHnwX1+9iAC4G4GIALvBdCt/dScUA3OC726vMATiMwPeUq8pUpeYAjEpUxZl8RTk5skoPwG8vnHUALdXSKMbE98jo2B4TX98tI6K7ZHhkpwwL75ChoR3gb5fB2jYZFNwqAwNbDPz+/s3S37cJ/I3gc/Ue4N3rjKvvDXwvftr1VPC/c/U9LFffTV29ic/VN4DfMEs6N4DfMJ3AbwC/AfwG8BvAbwC/gWe/AfwGK/5wE78R/EauvxH8RvAbuf5G8BtT+L3NATgZgJMBOMF38s3facW3DMDFAFzguzoaFbkYgEvhG4HvrlCVqywDILtRicoyAG9RTg6z1ADS2ZuWdxC2pgXa0Oj4bhkV2wX+Lhmh75Th0R0yLAJ+eLsMCW0Df6sM0rbIwCD4AeD9wPuA922Qvt714K+TPzzAu9cY8L34Td/Tlbn6Hs7k1S82rr6b5eq7NiTxZyv8GRb8KQp/Yn78BvAbwG8Av2Eogd8AfgP4DeA3JPG5fmMAfxD4jeA3gt8IfiPX32gOoCQ5ACcDcILvBN8JvvMXMzWANL5RpYoBuCpU5WbJARiVGtndJZmSA0hXlJMjMwKypbNn8jWXLZO/DaUGMDK+U0bEdshwHXgaGgU+Anx4qwwObTHxtc0yILhJ+gc2Sj//BgO/j2+d9PGuBX8N+Fy9e6XC5+pdyw34HnzD7+40r76b5eq7GlefxJ9pwZ+ajV8Pfj349eDXg18Pfj349SMYQC7+oAx+A/gN4Ddw/Q3gN4DfAH6DBb+R628EvxH8RvAbOxsVN6YGAL6zo1GRkwE426vAd7bLPwBXmarUyO6yDMBdbKkou+QALNnS2c28LWXLHkFL5Q5hRBz82Hbwt8lQGhIFPgJ8GPjQZvA3yQBto/QPbpB+AfD9wPuA966h1dLbs8rAT8L3BP531zKFvxj8RQp/PvjzFL559Sa+efW/1oNfD349T359Cn+cBX9UBr8e/Hrw68GvB7+ez/168OvBrwe/Hvx68Ot5+uutAwDfiAE0cP0NDKCBATQwgAaF3/iLigE0gt/YQQV+Y6UZA3AYge8sV5VlDcCeGkC6YktFZukROLKypbNnRtBcyQG0pkKDGB7fJsNiW8HfIkNocBT8CPBh4EPAaxtM/OB66RtYK338wPtWg78KfK6eerqXg78MfOBdSwz47vyu7+Y0r/63JDxf9LpannwDvz6Jn4SfbMEf3zJ+Hfh14Ncl8Qem8Sss+OVJ/Hrw68Gv5/rrwa8Hv57rrwe/Hvx6E98YQAMDaAC/AfyGjkZFDeA3tDczBtDOyNFYoSo3Sw7AqNTIblSSKd8A0jmysqVKDqCljBHYWq65YQyLb5GhsST+ZhlMg6KbZGBkowwIAx8CXlsP/joTPwC8H3jfSuntTeKvMPB/dy8Ffwn4XL0rib8AfPPqM/iz0k++iT/Vgm9evYFfB34d+HWjCfw68OvAr+Pbfl0Ofh34deDXgV8Hfh34deDXgV8Hfh34deDXgV8Hfp0VXw2gHvx68Ot/UTGAevDrO5gZA6hUtTNyNFSo1AAay1SlRnajkkzOYktFORUYgMvefOkh2JqvpXEMjW+WIbFN4G+SQfpGGRjdIAMi4IeBDwGvrZW+wTXgrwIfeOrlWyG9vFy9Z5nCXww+8K6FGXznXPCB5+ediW/Cd1ZP/q/qyU/j14034DvWjcnBH94Uvxb8WvBrwa8Fvxb8WvBrwa8FvzaDX2bFp5I6BlAHfh34dVx/HfhG4NeBX9fRqKguOYD2qkoV+PUVqnJzAA1llkqN7A0lmRqLcyrKLjkAS7Z09kzNjsFWOHcrGhLfKINjG8HfIANpQHS99I+sk35h4EPAa6ulTxD8QBIfeN9yWiY9vcB7uHp3Eh94F/Cu+eDPU/jANwLPb/sMvgn/q3ryDfy6JP64PPhcfS34teDXgl8Lfm0r8WvBrwW/FnwjBlDLAGrBrwW/FvzazkbFteDXgl/bySyFbwR+XaWqnZGjzjIAozJVqZHdqMTMGEFxTkXZNTrS2bKyZ3I2l83M9YMNjm+QQbEk/noZoK+T/tG14K8BH3htFa2UP4LgB8D3A+9bCv4S8IH3LGIAKfx5BLxzDqXwZ4BvXn02/kQyrz4bf5R0qOXqa5viV6bwa/jCVwN+Dfg14NeAXwN+TW8Cv6aniqe/Bvwa8GvArwG/BvyaLioGUAN+zS9mxgA6GhXVgl/bXlWpAr9WDcCoXFWmKjWyG5WYGUMotlTUtAZHOltW9kyNzWUzc7ay3AEMiq+XgbF14K+V/voa6RdZLX3DwIeAT+JrK6R3kKsPgO8H37dYfvcC71kI/gLw51vwgXfOAn9mDr4J/6u6+mz8McTV1xbArwG/Bvyaga3A79UCftcc/NQAOqnAr+mgAr+mUtXOyFFboSpXlVkqNbIblWRGUFdsqahp9Y50tqzsmRqay2bW2MpyBzEwvlYGxNaAv1r6RVdJ38hK6RMGPrQC/OXSW1smvYLAB5YwAPB94HsXMID50t1twndzcfUuhe8EvnE6mVffFN+E76SuvmNtHvyaYWn4yppB2fjV4Ff3JfCrwa/ubVRWDX41+NU8/dXgV4NfDX71b0Yl1eBXg1/d2ai4Gvxq8Ks7qbj+auCN2qsqzZL4RhWqclWZqtTIblRilhxBbXFORU2rc6SzZWXPVN9ctkwNrcw6iAHx1dI/tkr66SulbxT8CPDh5QxgGfhLpZcGfHAxA1gkv/u5eh9X7wXfA77bhP/NlYSfmQcf+IZJ4JtX3zy+Cd++ZmhT/Grwq1vA/w7+d/C/g/8d/O/dVOB/B/87+N87q8D//osK/O8djYq+d1BZ8KvbGTmqK1TllspUpUZ2o5LMCGqKcyrKCfjaTLas7NnVFcqWXX0rS42hfxz8GPgMoE8U/AhXHwY/lMH/PbAQfK7eB7x3HvhzTXy3wnfNAB945zTwgW/k6hX+L03wzSe/o4LvYLn6LPxq8KtN/HZW/O/gfwf/e2+jsu/N4H8D/xv437qowP8G/rdfVJ1UOfhGlSrwjSpU5aoyS6VG9u8lZtWpii0V5clhjkBlS2dvWm2hbE2ra2XJIfSLgx9bIX10rj4KfGQpA1givUJcvcbVB8EPgO8H3we+d4508wDvngX+TBPfZeJ3dqbwufoG4BsUfL159Xnxa3Lwq/Pgfwf/ewH8b+B/A/8b+N/A/9ZNVQj/1yb4xd+AN2qvqlS1M3J8q1CVWypTlRrZjUrMjCEU51SUJ4c5ApUtnT1/+YZRY8tfbSvrG18ufWLL5A8d+OgSBrBYeoUXSc8Q8NoCBjBfegSA989lAOB7wfeA755pwHd1cfVJeOcU8Ln6xjz49T+I/z0P/jfwvyXh8+HTV/C/gv+1qwr8r+B/Bd4I/K+dVB2Nir52UIH/tVLVzsjxtcJSuarMUqmR3agkM4JvxTkV5clhxhBsWdmbL2sYtsLVtKI+cfBj4OvgR8GPgB8GPwS+Bn4Q/MAcBjBbuvmA985kAFy9W+G7FL5T4Tcq/AYFX6/g+YnXUcF3sDz57S3wlQY8fc/B/wb+tzz4X8H/Cv7X7ioTvzSF/wX8L51V4H/5RQX+l45GRV86qNqrKlXtjBxfKlTllspUpUZ2oxJzAOmKcyrKyZGV7Zs1e8ulB2FrueZG8kcc+NhiBrBIekUXSs8I8OH5DGCe9NC4+iD4AfD9VnwTvosLeNdk8E34XxuT8OPz49e1Al/Bp/G/5cH/miwP/hfwv4D/JQnfEr4awGfgjdqrKlXtjByfKyyVq8oslRrZjUrMERgV51SUJ0dWtmRfU9lb3zdb68s3jj/i4MfA18GPgh8BP6zwNfCDs8AH3jeDAXD1HvDdOfhOhd+Yg1//I/hJ+Bz8r+Cn4RX+F/C/dFdZ8D8nA/9zZxX4n4H/lKyTqqNR0SfwP7VXVaraGTmMKlTlqjJLpUZ2o5KcinMqyu5zMkdWNmtf7G3IZva1jaVG0Tu+UHrFFkhPHfjoPAYwV3qEgddmE/gB8P3g+8D3gu8B353En0TAOycQ8I3jwAe+YQz4wNeb8B3rTPgOtcNaid83g/81g1+ewv9i4pel8D+D/xn8JPynZOB/6qwC36gA/sdk7VWVqnZGjo8VqnJLZZZKjexGJZaK81TUtE+OrGzp7K3rcypb0760oV5x8GPzGQD4UfAj4IcUfhD8wHQGME26+oD3TgGfq3crfJcFv7EAfp3CrzXh2xs/8fLgW66+Cf6XJHwO/meF/wn8T3nwPwJvBP7HTqqORia8Bf9DpaqdkeNDhaVyVZmlUiO7UUlOxTkV5cmR6SPoWdnbGIiffrDkWHrGwY+Br4MfBT4yiwHMlG4aVx8EPwC+H3wf+J48+E4LfoPCr28O34QviG/A5+L/bvYZ/CT8p2Q5+B+7qEz8kjS+GsCHjirgjdqrcvDfJ6tQlVsqs1RqZDcqyak4p6I8ObKypfqQzN7GbE372IZ6xufK77E50kMHPwp+GPwQ+Br4QfAD4PvB94LvmcgAgHeNJ+CdY8EHvnE0+MA3jGwVfuonXrP4Xyz4nxX+pxz8j0n4HPwPvxoVf/hFlYP/Pll7VaWldkZp/HfllsoslRrZjUpyKs6pqECOrGxZ2TO9b022lvvQTL/HwY/NZgDgR8EPgx8CXwM/OIUBTOb6uXov+B7w3QrfBb5T4Tem8EcQ8HXDaKiJX6vwa3Lx++XB750f/1MKv5vZxxz8D8ny4L/vpAL/fQ7+u2SVqnZGjncVlhT+2zJLpensRiWWivNUlCdHVrYm2Qv3Ll+2Hys1jh5x8GPg6+BHpzOAaQxgqnTVwA+C7wffB743D77Tgt+Qiw987eBm8NWXva8W/C8WfAM+B/9jBr/0Q1cFb8F/D/77X1QW/Hd87r/roLLgv03WzsjxtsJSuSXg36QqNbIbleRUnFNRgRxZ2bKy/0A2s7c/WI/4TOkemyHddPAj4IfBD4GvgR8A3w++D3wP+G6F77LgN1rw63PxB6XxK1vE75WD3yOD/9GC/yEH/31nAz4L/10nVUcV8G+TtVdl4xe9YQBvKlTllpriO16Db1Riqbhpr4oK5MjKlpW9cK8LZWu5N83UPT6DAYCvgx8BPwx+CHxtEgMA3w++F3wP8O4x4APvGsUARmbwGyz4dQq/NolvwjfF75Mf/3MO/kcL/gcL/vsuKgv+u19UCv9tR5UF/02ySlW7dAb861TlZq/Kcio1shuV5FSc3ctkRXlyZGVrkr2N2bJ79QN1j4MfA1+fygDADyv8IPgB4P3jGAD4HvDdFnwn8I3DwR9m4tfnwa9J4vc3/gkdA/975vO+IufLnoH/KQ/+Bwv++xz8d78apfHfdlJZ8N90UPAK/3WqdkaOVxWWyi0p+JfJSo3sRiU5FWf3IllRgRxZ2bKy/0C2H8s6mm5x8GPg6+BHwA+Dr02QzsHxDAB8H/heC77Lgt8IfMPQDH5dK/C/tYD/sRX473Lw31rw33RUWfBftzfRX6VqZ5SGf5ms3FKZJfBfmNmNSnIqzu55sqI8OZpky8r+A9l+vm5x8GPg65MZAPgh8DXwg+AHxjIA8L2jGYCJ38kFvtOKD3z94Ax+rcKvSeL3y4Pfuxn87k3x31vw31nw3/6q4BX+mxz81x1M+FftLfD0sp2RiW7Bf5GqzJIF/3mykpyKm/asqECOrGxNsv9Atp/vtzj4MfCjE6VLBPwQ+Br4QfD94PvA94DvVvgu8J3gN4LfkMIfZNQEv7pvC/i/N8VPX70FPw3f2YA3U/hvLPivkwH/qoOCV72sVJn4RS8YwIsKlQX/eVlOpUYG/rOSPBVn97SoQKA/yc6Wlf0Hs/18v8XB17n86AQGAH4IfA38IPh+8L3ge8B358FvAL/egl+bB//7D+C/z4P/Ngf/jQU/Cf8qmQX/ZSqF/6JdujT+82TllkB/lqo0nf2ZGsBTa4A/ya0of48dWdmaZG97j5LZfr6u8UkMAPwo+JFxDAB8DfwA+H7wveB7FL4LfCf4jUMYgMKvB77Ogl+Twu+Tg9+rbfjvCuC/seC/7qTgTfzilx0s8PSiUqXwn7dT6Kpn5ZYs+E9L09mfJCvJSYE/tlaUv0eOJtmaZM/fw+aytb0Heeoa5+nXwY+CHwE/NIYBgB8A3w++F3y3wneB7wS/EfyGHPxaC361Bf/bT+C/teC/seAb8Bb8lxb8F6kU/vN26Uz0VBb8p2VmT5KVpjPwH5fkSaE/slaUv4eOrGzJHlizt637qWx/T13iE9QAwA+DHwJfG8UAwPeNYADgu4cxgBz8BuDrga+z4NdY8L9b8L/+BP4bC/7rXxS8wn9pwX9hwX9eqVL4z9pZ4OlpudmTcoVu6XFpOvtjNYBH1izoD1MVmT3IzdEk2/3c7M13r1C27O7+YF3i4OtcfxT8MPgh8IPgB8D3ge8B3w2+C3wn+I0mfvsUfh34tRb86gx+hRX/S/Zv/Dbhv87Bf2nBf5HEVwN4bsF/VmnAmyXR6UmFQrfgP7YG/CMzu5FCf5gK7Ae5WcDv5+bI7h7gWQF5t43dSWX7e+oSB1/n+o0BgK+BHwTfD74PfI/Cd4HvBL8R/IYB6vot+DU5+N9y8D9n45dZ8d8p/LcK/00O/qs8+C8s+M8t+M8s+E+TpeAV/mNrCv5RWRrewH9YaoI/yA3w+7lZwO9Zuutoks3aHYcFs4Vu58tmdusn6xwHXwc/yvUbAwA/CL4ffC/4HhO/gwt8J/iNwBsD6M8AwK818c3rB/+7Bf+riV+ehd8tD34XKW0J/6XCf2HBf67wn7XPwD+tNOGfJFPwj1Mp+EflCl0FuNED4I0U+H1rFvR7qZLQBQI4N1uq26ksoLda2c1kth/vRk6d4+Dr4EfBD3P9xgDA9w9lAOC7W8Cv7aOu34L/LQ/+pzz47wvgv6ZXzeA/z4P/VPWkXboMfIVCt+A/VD0oM+CN7oNvZIG/V2Ji381XEjpfgN+2dAvsJllBW9ENawrv+k90TfVrfDQDAD8Kfhh8jetXA+igBtBeDaDSGAD49eDX5eBXg/89B//LT+K/VPgv8uA/U/hpeAv+Ywv+Iwv+w3ILuup+aToD/55Cv5vKAn7HmsK+rbplzZHpJth5y0Wl663omj2D15quttCvcfD1kQwA/PBwBgB+AHwf+F7w3eC7uH4n+I3gN4BfD35dH2MAFTU5+N/A/6rwP1vwP7YevyQf/nMTv/hZDv4TC/5jhf+oItNDBf+g3IKeSuHfA/5uqQWd7qSyoN9W3Spq2s1UjuxugJ3qeqpCsM10NZUF70obulwgcwDgR8APga/x9AfA9/H0exS+C3yniV+ZD7+6lxpAHvxP/wL8p+0t8JVp+KJHyVLwFRb48hz4MgPdcdcsjX8npzR4blZw1Y0iA9voeiabtWupCuGqrjRXHsRLbehiTr/ER6YH0DEEvgZ+AHwf+B4LfiP4DX0t1w9+TR78rz3Mf+Wugd89g/8h81Ov9F0L+C8U/vOOaXgD/2kO/uNKC7zCT8I/qMjA3y+3oKvuZvAdd0ot4KpbJdngN61Zwem6NQV/LVMa/WqqFoAvW7qUr2YwL7Sh86pf4uDrXH9kmGUAgxgA+J4BDAB8Zz9jAO2MAYBfB34t+DW9jAGUfwf/2++W6+9uefpbif8yH37HbPwn7S3wOfhp+AoLvMpAT2Wip7LfLrWgW/Bv5nSjOA84XUtlgb9qZruSpxaBVRctXbDWDGZz/ZWnKmMA4OvgR8APgR/k+v1cv5cBuLl+NYB2jbn4vbPxv6Wuv7vl6c/+Z/XMp/9n8Ntn8NPw9MCCnwVfboEvy4J3JOFvlWbQb1pLgdP1VLngqqsqcHOzXVZdStVaZEvnrbWAWtWK/sypkzEA8CNDGAD4QfD94HvBd4Pv4vqd4DeAXw9+XW/L9YP/PQf/cw7+hxz8t23Af9rBAq/wHxXAv1+RA2/Bv6O6bcI7blnwrfA3SnLQ6VqqXHBrgF9WXTKzWbuYqjXIlv6yVGVvPeq5FjprqVN8WHoAHYwBgO/n6feC7wbfBX4j+A1/WAYAfg346QGA/7W7un6F/zEXv0vr8J+1At+AV/j3LaXhyzPoBnyZgZ7KfrM0B52ul+RBVzUBp8uqS47sLlrAL1hrBXRVgf5M1QbYZGdyOp2nTnHwda4/An6I61cDqPRYrl8NoKI+P37m+rsZA8jCf9/F8rmf/YWvJI3fqQl+cSvwi9LwFRl4K74Bb8G/aZaGv24pC1x1pbgp+iVrJrjRhUwG+HlrhS66APS5fP0AbqpTOZ20ZA4A/Ahf/DTwg1y/D3yPun4n+I3J6we/rpcxgHJjAOB/72G5/m6W6++qBtCl6Ze+tuI/UvgPKxU83W9n4hvwFvw75TnwZVnwjhvgJ8uCT2VFV13Og35RdaEoC91+3iyN/pelghddAPus6oyl1uCebKYTOR1XdYwPSQ+gfXIAAfB94HvAd4HvBL+ht3n9xgDAr8mDb1x/U/yCn/vN4T9uI/4dVRZ8WRa843oSvjQHna6WZMNfVl0qLoBuwT9v6S8zW1VOzWGfzYN9Ok+tQc6Hm69jOXWMg69z/WHwtQF5B1BhDAD8OoWvrr/sW3fL9Vs+9z90UQNoBf7zVuLfV6XhKzLwufg3y7Lg0/i58FdKsuEvWcqHfj5VNrq9yswEV51L1VZs1UlrbUC24h7N6UiesgcAfgB8H/hu8F1cfyP4DeDX98xcfzXX/727GkDy+n+zXH8e/Dd5vvQ1we/QFP9BK/Bv061yC3xZFryBf63Ucu0p+JKca0/BFxdAp79UVY7sssBVZx0/iK06oTpubz3ykQIdtnQop45x8HXwwwMyA/BmBlCRGkDy+mvBr+lhuX7wv/xmDCD99BsDsPwrePN97reE/7AZ/DsVGfi8+GUZ/GtmTeFLsuEvpuCLm0FPZYIbncuURj+j+mHsnFoL3RxyqoOWDqg6pAfQnwGAH+jLAMB3c/1O8BvN6y+v+90cQPr6u6UHkPzf0W96/Zl/Tj/7S19T/OKW8IEvysW/pcqCL8uCd1wtbQp/qSTn2i2dL86Gr7L0Z1ETdPtZswy6pULgzWKrjqqO2NsOnQ852f4CdYgPZAADjAFUJgfg5/q94LvAd4Lf2DMzgOT1V4OfGoBx/V3VALpYrj/zr+BN47/M81v/ieVzPx/+vVbgp+HLMvAp/CbwqrzwxXmuXcGfS5VBtwNuP52LrmoNeF7snA7b2wZdCHmfpb2W9qgBtI9y/WHwNa7f3yd7AA3g1yevv4cxgLLq1PX/Zrn+LvmffuP6O2U//Xnx27eMf7vCAt8MPvCOK0n80jzwJU3RDfjiZtDpbFEWujUTPKd86C2BH1YdspaD3dJFF0LO125Vh/gAYwCVagDt/OB7wHeB7+T6G35Xz39yAMnr75YeQPL/KldmAJ0LX39z3/gftbd84au04LdrHf61six4A/9yDr4BX1IAvrh5+DNFTeFBt2eBq447mqK3CZwOqg7YC2Pnu+jmkJPtsrTTUodYcgDgh7n+YJ/sAfD8lxsDAL+2u3n9xgCS19/V+L/MVfDpV9ef/fRn8ItbgV+UDz/r6pviO5L4TeBLCsAXq8/23GtX8KeLmqCnykZXNXflrQKn/al+EDsf9I4Cbaf2sf7mAEJqAL7eDAB8F9ffCH59D3MAyeuvBv/7b5br75K+fuN/T/+d+b+2ZV5/HvxnzXzps+LfycG/mcIvz8a/WpYF77hU2hTeip8Fr2py7Sl4OlXUBN7eBF111NE69ILgqn2qtmDvbAF7u6Vtqq2qzADAD/5hDKDCbQ6gPDWA5PXXdDMHkLz+r10tA8jz9L9Ofe7n/LN7hb70tQX/Whvwz6vywhdnw5/OgT9ZlIVuP54pG52OOLLRm7vyguCqPfafu+xcaCv2ljy1j4Ef7WsZAPhurt8JfmOP7AEkr/+bwv+s8Ft7/blP/8NWPPst4St4Az8vfEkB+OIW4IvywtuboKsKoee78rzglnbb8193a7C3toC9WbXJUmYA4Ae5fusAGpLPP/i13SzPf3IAXTLX/yEH/3Whpz/P5376d34ufkUG/3oO/pV8+KUt46fhi5uHP1GUDX9M1QRddcjxc+i7VbtUhcCbe8Zbi71RtcFS+xj4Ua4/OYAAA/AmBwC+s0fOANT1pwfQ2RhA9vV3Utdv+RdzNvnWn/Ol767l6W8rPvCOC6V54EsKwNPp4mbg6XhRBv6o6ohZNrqqNeh7WkKnHal+4Lpbi51qvaXKrAGA7+X6XakBgF8Hfs1vlgF0ST//qf/TbCXvLNf/Kv/T3+LnfnP4V/9m/ILwRRn4I5aaoKvaim4Fz0JXWdHbct2twV5naa1qjU3+HwuefjlXE4+yAAAAAElFTkSuQmCC",epe=0,oN=(n,e,t,i)=>{if(!n[t]){let r=n.useDelayedTextureLoading;n.useDelayedTextureLoading=!1;let s=n._blockEntityCollection;n._blockEntityCollection=!1;let a=_e.CreateFromBase64String(e,i+epe++,n,!0,!1,_e.BILINEAR_SAMPLINGMODE);n._blockEntityCollection=s;let o=n.getEngine().getLoadedTexturesCache(),l=o.indexOf(a.getInternalTexture());l!==-1&&o.splice(l,1),a.isRGBD=!0,a.wrapU=_e.CLAMP_ADDRESSMODE,a.wrapV=_e.CLAMP_ADDRESSMODE,n[t]=a,n.useDelayedTextureLoading=r,zm.ExpandRGBDTexture(a);let c=n.getEngine().onContextRestoredObservable.add(()=>{a.isRGBD=!0;let f=n.onBeforeRenderObservable.add(()=>{a.isReady()&&(n.onBeforeRenderObservable.remove(f),zm.ExpandRGBDTexture(a))})});n.onDisposeObservable.add(()=>{n.getEngine().onContextRestoredObservable.remove(c)})}return n[t]},Kb=n=>oN(n,Qme,"environmentBRDFTexture","EnvironmentBRDFTexture"),lN=n=>oN(n,$me,"environmentFuzzBRDFTexture","EnvironmentFuzzBRDFTexture"),v6=n=>oN(n,Jme,"openPBREnvironmentBRDFTexture","OpenPBREnvironmentBRDFTexture")});function E6(n){return class extends n{constructor(){super(...arguments),this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1}}}var S6=I(()=>{});var cN=I(()=>{Ws();Lt();vs();bt.prototype.restoreSingleAttachment=function(){let n=this._gl;this.bindAttachments([n.BACK])};bt.prototype.restoreSingleAttachmentForRenderTarget=function(){let n=this._gl;this.bindAttachments([n.COLOR_ATTACHMENT0])};bt.prototype.buildTextureLayout=function(n,e=!1){let t=this._gl,i=[];if(e)i.push(t.BACK);else for(let r=0;r1&&(e.depthTextureFormat===13||e.depthTextureFormat===17||e.depthTextureFormat===16||e.depthTextureFormat===14||e.depthTextureFormat===18)&&(o=e.depthTextureFormat)),o===void 0&&(o=s?13:14);let C=this._gl,D=this._currentFramebuffer,w=C.createFramebuffer();this._bindUnboundFramebuffer(w);let G=(z=n.width)!=null?z:n,O=(Y=n.height)!=null?Y:n,N=[],B=[],V=this.webGLVersion>1&&(o===13||o===17||o===18);y.label=(de=e==null?void 0:e.label)!=null?de:"MultiRenderTargetWrapper",y._framebuffer=w,y._generateDepthBuffer=a||r,y._generateStencilBuffer=a?V:s,y._depthStencilBuffer=this._setupFramebufferDepthAttachments(y._generateStencilBuffer,y._generateDepthBuffer,G,O,1,o),y._attachments=B;for(let oe=0;oe1||this.isWebGPU);let ut=this.webGLVersion>1,Ye=C[ut?"COLOR_ATTACHMENT"+oe:"COLOR_ATTACHMENT"+oe+"_WEBGL"];if(B.push(Ye),me===-1||M)continue;let je=new Vi(this,6);N[oe]=je,C.activeTexture(C["TEXTURE"+oe]),C.bindTexture(me,je._hardwareTexture.underlyingResource),C.texParameteri(me,C.TEXTURE_MAG_FILTER,De.mag),C.texParameteri(me,C.TEXTURE_MIN_FILTER,De.min),C.texParameteri(me,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(me,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE);let Qt=this._getRGBABufferInternalSizedFormat(ie,Pe,ue),Pt=this._getInternalFormat(Pe),Ti=this._getWebGLTextureType(ie);if(ut&&(me===35866||me===32879))me===35866?je.is2DArray=!0:je.is3D=!0,je.baseDepth=je.depth=be,C.texImage3D(me,0,Qt,G,O,be,0,Pt,Ti,null);else if(me===34067){for(let se=0;se<6;se++)C.texImage2D(C.TEXTURE_CUBE_MAP_POSITIVE_X+se,0,Qt,G,O,0,Pt,Ti,null);je.isCube=!0}else C.texImage2D(C.TEXTURE_2D,0,Qt,G,O,0,Pt,Ti,null);i&&C.generateMipmap(me),this._bindTextureDirectly(me,null),je.baseWidth=G,je.baseHeight=O,je.width=G,je.height=O,je.isReady=!0,je.samples=1,je.generateMipMaps=i,je.samplingMode=ve,je.type=ie,je._useSRGBBuffer=ue,je.format=Pe,je.label=(Ue=R[oe])!=null?Ue:y.label+"-Texture"+oe,this._internalTexturesCache.push(je)}if(a&&this._caps.depthTextureExtension&&!M){let oe=new Vi(this,14),ve=5,ie=C.DEPTH_COMPONENT16,ue=C.DEPTH_COMPONENT,Pe=C.UNSIGNED_SHORT,me=C.DEPTH_ATTACHMENT;this.webGLVersion<2?ie=C.DEPTH_COMPONENT:o===14?(ve=1,Pe=C.FLOAT,ie=C.DEPTH_COMPONENT32F):o===18?(ve=0,Pe=C.FLOAT_32_UNSIGNED_INT_24_8_REV,ie=C.DEPTH32F_STENCIL8,ue=C.DEPTH_STENCIL,me=C.DEPTH_STENCIL_ATTACHMENT):o===16?(ve=0,Pe=C.UNSIGNED_INT,ie=C.DEPTH_COMPONENT24,me=C.DEPTH_ATTACHMENT):(o===13||o===17)&&(ve=12,Pe=C.UNSIGNED_INT_24_8,ie=C.DEPTH24_STENCIL8,ue=C.DEPTH_STENCIL,me=C.DEPTH_STENCIL_ATTACHMENT),this._bindTextureDirectly(C.TEXTURE_2D,oe,!0),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MAG_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_MIN_FILTER,C.NEAREST),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_S,C.CLAMP_TO_EDGE),C.texParameteri(C.TEXTURE_2D,C.TEXTURE_WRAP_T,C.CLAMP_TO_EDGE),C.texImage2D(C.TEXTURE_2D,0,ie,G,O,0,ue,Pe,null),C.framebufferTexture2D(C.FRAMEBUFFER,me,C.TEXTURE_2D,oe._hardwareTexture.underlyingResource,0),this._bindTextureDirectly(C.TEXTURE_2D,null),y._depthStencilTexture=oe,y._depthStencilTextureWithStencil=V,oe.baseWidth=G,oe.baseHeight=O,oe.width=G,oe.height=O,oe.isReady=!0,oe.samples=1,oe.generateMipMaps=i,oe.samplingMode=1,oe.format=o,oe.type=ve,oe.label=y.label+"-DepthStencil",N[l]=oe,this._internalTexturesCache.push(oe)}if(y.setTextures(N),t&&C.drawBuffers(B),this._bindUnboundFramebuffer(D),y.setLayerAndFaceIndices(E,S),this.resetTextureCache(),!M)this.updateMultipleRenderTargetTextureSampleCount(y,c,t);else if(c>1){let oe=C.createFramebuffer();if(!oe)throw new Error("Unable to create multi sampled framebuffer");y._samples=c,y._MSAAFramebuffer=oe,l>0&&t&&(this._bindUnboundFramebuffer(oe),C.drawBuffers(B),this._bindUnboundFramebuffer(D))}return y};bt.prototype.updateMultipleRenderTargetTextureSampleCount=function(n,e,t=!0){if(this.webGLVersion<2||!n)return 1;if(n.samples===e)return e;let i=this._gl;e=Math.min(e,this.getCaps().maxMSAASamples),n._depthStencilBuffer&&(i.deleteRenderbuffer(n._depthStencilBuffer),n._depthStencilBuffer=null),n._MSAAFramebuffer&&(i.deleteFramebuffer(n._MSAAFramebuffer),n._MSAAFramebuffer=null);let r=n._attachments.length;for(let a=0;a1&&typeof i.renderbufferStorageMultisample=="function"){let a=i.createFramebuffer();if(!a)throw new Error("Unable to create multi sampled framebuffer");n._MSAAFramebuffer=a,this._bindUnboundFramebuffer(a);let o=[];for(let l=0;l1?"COLOR_ATTACHMENT"+l:"COLOR_ATTACHMENT"+l+"_WEBGL"],h=this._createRenderBuffer(c.width,c.height,e,-1,this._getRGBABufferInternalSizedFormat(c.type,c.format,c._useSRGBBuffer),d);if(!h)throw new Error("Unable to create multi sampled framebuffer");f.addMSAARenderBuffer(h),c.samples=e,o.push(d)}t&&i.drawBuffers(o)}else this._bindUnboundFramebuffer(n._framebuffer);let s=n._depthStencilTexture?n._depthStencilTexture.format:void 0;return n._depthStencilBuffer=this._setupFramebufferDepthAttachments(n._generateStencilBuffer,n._generateDepthBuffer,n.width,n.height,e,s),this._bindUnboundFramebuffer(null),n._samples=e,e};bt.prototype.generateMipMapsMultiFramebuffer=function(n){let e=n,t=this._gl;if(e.isMulti)for(let i=0;i1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"],t.readBuffer(r[a]),t.drawBuffers(r),t.blitFramebuffer(0,0,o.width,o.height,0,0,o.width,o.height,i,t.NEAREST)}for(let a=0;a1?"COLOR_ATTACHMENT"+a:"COLOR_ATTACHMENT"+a+"_WEBGL"];t.drawBuffers(r),t.bindFramebuffer(this._gl.FRAMEBUFFER,e._MSAAFramebuffer)}});var Zb,T6=I(()=>{Xr();wf();cN();Zb=class extends Yr{get isSupported(){var e,t;return(t=(e=this._engine)==null?void 0:e.getCaps().drawBuffersExtension)!=null?t:!1}get textures(){return this._textures}get count(){return this._count}get depthTexture(){return this._textures[this._textures.length-1]}set wrapU(e){if(this._textures)for(let t=0;t0&&(this._createInternalTextures(),this._createTextures(a))}_initTypes(e,t,i,r,s,a,o,l,c,f){for(let d=0;d{this.onAfterRenderObservable.notifyObservers(t)})}dispose(e=!1){this._releaseTextures(),e?this._texture=null:this.releaseInternalTextures(),super.dispose()}releaseInternalTextures(){var t,i;let e=(t=this._renderTarget)==null?void 0:t.textures;if(e){for(let r=e.length-1;r>=0;r--)this._textures[r]._texture=null;(i=this._renderTarget)==null||i.dispose(),this._renderTarget=null}}}});var A6,tpe,x6=I(()=>{k();A6="mrtFragmentDeclaration",tpe=`#if defined(WEBGL2) || defined(WEBGPU) || defined(NATIVE) layout(location=0) out vec4 glFragData[{X}]; #endif -`;x.IncludesShadersStore[A6]||(x.IncludesShadersStore[A6]=tpe)});var R6,ipe,Zb=I(()=>{k();R6="pbrFragmentReflectionDeclaration",ipe=`#ifdef REFLECTION +`;x.IncludesShadersStore[A6]||(x.IncludesShadersStore[A6]=tpe)});var R6,ipe,qb=I(()=>{k();R6="pbrFragmentReflectionDeclaration",ipe=`#ifdef REFLECTION #ifdef REFLECTIONMAP_3D #define sampleReflection(s,c) textureCube(s,c) uniform samplerCube reflectionSampler; @@ -10950,7 +10950,7 @@ float maxF0=max(specularColor.r,max(specularColor.g,specularColor.b));outParams. outParams.F0=mix(dielectricF0_NoSpec,dielectricF0,specularWeight); #endif outParams.F90=mix(f90Scale_NoSpec,f90Scale,specularWeight);outParams.coloredF0=mix(vec3(dielectricF0_NoSpec),vec3(dielectricF0),specularWeight)*specularColor.rgb;outParams.coloredF90=mix(dielectricColorF90_NoSpec,dielectricColorF90,specularWeight);return outParams;} -`;x.IncludesShadersStore[I6]||(x.IncludesShadersStore[I6]=spe)});var y6,ape,qb=I(()=>{k();y6="pbrIBLFunctions",ape=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;x.IncludesShadersStore[I6]||(x.IncludesShadersStore[I6]=spe)});var y6,ape,Qb=I(()=>{k();y6="pbrIBLFunctions",ape=`#if defined(REFLECTION) || defined(SS_REFRACTION) float getLodFromAlphaG(float cubeMapDimensionPixels,float microsurfaceAverageSlope) {float microsurfaceAverageSlopeTexels=cubeMapDimensionPixels*microsurfaceAverageSlope;float lod=log2(microsurfaceAverageSlopeTexels);return lod;} float getLinearLodFromRoughness(float cubeMapDimensionPixels,float roughness) {float lod=log2(cubeMapDimensionPixels)*roughness;return lod;} #endif @@ -11275,7 +11275,7 @@ transmission_scatter*=transmissionScatterFromTexture.rgb; #ifdef TRANSMISSION_DISPERSION_SCALE transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r; #endif -`;x.IncludesShadersStore[L6]||(x.IncludesShadersStore[L6]=fpe)});var N6={};Fe(N6,{geometryPixelShader:()=>dpe});var _N,O6,dpe,gN=I(()=>{k();Uc();x6();gb();vb();za();Zb();fN();wh();Up();dN();qb();Ov();hN();uN();Bh();Vc();Eb();mN();pN();_N="geometryPixelShader",O6=`#extension GL_EXT_draw_buffers : require +`;x.IncludesShadersStore[L6]||(x.IncludesShadersStore[L6]=fpe)});var N6={};Fe(N6,{geometryPixelShader:()=>dpe});var _N,O6,dpe,gN=I(()=>{k();Uc();x6();vb();Eb();za();qb();fN();wh();Up();dN();Qb();Ov();hN();uN();Bh();Vc();Sb();mN();pN();_N="geometryPixelShader",O6=`#extension GL_EXT_draw_buffers : require #if defined(BUMP) || !defined(NORMAL) #extension GL_OES_standard_derivatives : enable #endif @@ -11529,7 +11529,7 @@ vec3 computeEnvironmentIrradiance(vec3 normal) {return vSphericalL00 vec3 computeEnvironmentIrradiance(vec3 normal) {float Nx=normal.x;float Ny=normal.y;float Nz=normal.z;vec3 C1=vSphericalZZ.rgb;vec3 Cx=vSphericalX.rgb;vec3 Cy=vSphericalY.rgb;vec3 Cz=vSphericalZ.rgb;vec3 Cxx_zz=vSphericalXX_ZZ.rgb;vec3 Cyy_zz=vSphericalYY_ZZ.rgb;vec3 Cxy=vSphericalXY.rgb;vec3 Cyz=vSphericalYZ.rgb;vec3 Czx=vSphericalZX.rgb;vec3 a1=Cyy_zz*Ny+Cy;vec3 a2=Cyz*Nz+a1;vec3 b1=Czx*Nz+Cx;vec3 b2=Cxy*Ny+b1;vec3 b3=Cxx_zz*Nx+b2;vec3 t1=Cz *Nz+C1;vec3 t2=a2 *Ny+t1;vec3 t3=b3 *Nx+t2;return t3;} #endif #endif -`;x.IncludesShadersStore[V6]||(x.IncludesShadersStore[V6]=mpe)});var k6={};Fe(k6,{geometryVertexShader:()=>ppe});var vN,G6,ppe,EN=I(()=>{k();Dc();Lc();od();ld();td();F6();U6();Oc();Vp();cd();fd();Nc();wc();Fc();Bc();ab();vN="geometryVertexShader",G6=`precision highp float; +`;x.IncludesShadersStore[V6]||(x.IncludesShadersStore[V6]=mpe)});var k6={};Fe(k6,{geometryVertexShader:()=>ppe});var vN,G6,ppe,EN=I(()=>{k();Dc();Lc();od();ld();td();F6();U6();Oc();Vp();cd();fd();Nc();wc();Fc();Bc();ob();vN="geometryVertexShader",G6=`precision highp float; #include #include #include @@ -11756,7 +11756,7 @@ fn computeEnvironmentIrradiance(normal: vec3f)->vec3f {return uniforms.vSpherica fn computeEnvironmentIrradiance(normal: vec3f)->vec3f {var Nx: f32=normal.x;var Ny: f32=normal.y;var Nz: f32=normal.z;var C1: vec3f=uniforms.vSphericalZZ.rgb;var Cx: vec3f=uniforms.vSphericalX.rgb;var Cy: vec3f=uniforms.vSphericalY.rgb;var Cz: vec3f=uniforms.vSphericalZ.rgb;var Cxx_zz: vec3f=uniforms.vSphericalXX_ZZ.rgb;var Cyy_zz: vec3f=uniforms.vSphericalYY_ZZ.rgb;var Cxy: vec3f=uniforms.vSphericalXY.rgb;var Cyz: vec3f=uniforms.vSphericalYZ.rgb;var Czx: vec3f=uniforms.vSphericalZX.rgb;var a1: vec3f=Cyy_zz*Ny+Cy;var a2: vec3f=Cyz*Nz+a1;var b1: vec3f=Czx*Nz+Cx;var b2: vec3f=Cxy*Ny+b1;var b3: vec3f=Cxx_zz*Nx+b2;var t1: vec3f=Cz *Nz+C1;var t2: vec3f=a2 *Ny+t1;var t3: vec3f=b3 *Nx+t2;return t3;} #endif #endif -`;x.IncludesShadersStoreWGSL[W6]||(x.IncludesShadersStoreWGSL[W6]=_pe)});var z6={};Fe(z6,{geometryVertexShaderWGSL:()=>gpe});var SN,H6,gpe,X6=I(()=>{k();Ac();xc();rd();nd();ed();Lh();Rc();Gp();sd();ad();bc();Mc();Ic();yc();FR();SN="geometryVertexShader",H6=`#include +`;x.IncludesShadersStoreWGSL[W6]||(x.IncludesShadersStoreWGSL[W6]=_pe)});var z6={};Fe(z6,{geometryVertexShaderWGSL:()=>gpe});var SN,H6,gpe,X6=I(()=>{k();Ac();xc();rd();nd();ed();Lh();Rc();Gp();sd();ad();bc();Mc();Ic();yc();BR();SN="geometryVertexShader",H6=`#include #include #include #include[0..maxSimultaneousMorphTargets] @@ -11967,7 +11967,7 @@ vertexOutputs.vEnvironmentIrradiance=computeEnvironmentIrradiance(reflectionVect #endif #endif } -`;x.ShadersStoreWGSL[SN]||(x.ShadersStoreWGSL[SN]=H6);gpe={name:SN,shader:H6}});var Y6,vpe,Qb=I(()=>{k();Y6="pbrFragmentReflectionDeclaration",vpe=`#ifdef REFLECTION +`;x.ShadersStoreWGSL[SN]||(x.ShadersStoreWGSL[SN]=H6);gpe={name:SN,shader:H6}});var Y6,vpe,$b=I(()=>{k();Y6="pbrFragmentReflectionDeclaration",vpe=`#ifdef REFLECTION #ifdef REFLECTIONMAP_3D var reflectionSamplerSampler: sampler;var reflectionSampler: texture_cube; #ifdef LODBASEDMICROSFURACE @@ -12189,7 +12189,7 @@ let dielectricColorF90: vec3f=specularColor.rgb*vec3f(f90Scale)*specularWeight; let dielectricColorF90: vec3f=vec3f(f90Scale)*specularWeight; #endif outParams.coloredF90=dielectricColorF90;return outParams;} -`;x.IncludesShadersStoreWGSL[j6]||(x.IncludesShadersStoreWGSL[j6]=Spe)});var Z6,Tpe,$b=I(()=>{k();Z6="pbrIBLFunctions",Tpe=`#if defined(REFLECTION) || defined(SS_REFRACTION) +`;x.IncludesShadersStoreWGSL[j6]||(x.IncludesShadersStoreWGSL[j6]=Spe)});var Z6,Tpe,Jb=I(()=>{k();Z6="pbrIBLFunctions",Tpe=`#if defined(REFLECTION) || defined(SS_REFRACTION) fn getLodFromAlphaG(cubeMapDimensionPixels: f32,microsurfaceAverageSlope: f32)->f32 {var microsurfaceAverageSlopeTexels: f32=cubeMapDimensionPixels*microsurfaceAverageSlope;var lod: f32=log2(microsurfaceAverageSlopeTexels);return lod;} fn getLinearLodFromRoughness(cubeMapDimensionPixels: f32,roughness: f32)->f32 {var lod: f32=log2(cubeMapDimensionPixels)*roughness;return lod;} #endif @@ -12518,7 +12518,7 @@ transmission_scatter*=transmissionScatterFromTexture.rgb; #ifdef TRANSMISSION_DISPERSION_SCALE transmission_dispersion_scale*=transmissionDispersionScaleFromTexture.r; #endif -`;x.IncludesShadersStoreWGSL[J6]||(x.IncludesShadersStoreWGSL[J6]=bpe)});var t7={};Fe(t7,{geometryPixelShaderWGSL:()=>Mpe});var MN,e7,Mpe,i7=I(()=>{k();Cc();XR();YR();Ha();Qb();Lh();kp();TN();$b();Dv();AN();xN();Nh();Pc();KR();RN();bN();MN="geometryPixelShader",e7=`#ifdef BUMP +`;x.IncludesShadersStoreWGSL[J6]||(x.IncludesShadersStoreWGSL[J6]=bpe)});var t7={};Fe(t7,{geometryPixelShaderWGSL:()=>Mpe});var MN,e7,Mpe,i7=I(()=>{k();Cc();YR();KR();Ha();$b();Lh();kp();TN();Jb();Dv();AN();xN();Nh();Pc();jR();RN();bN();MN="geometryPixelShader",e7=`#ifdef BUMP varying vWorldView0: vec4f;varying vWorldView1: vec4f;varying vWorldView2: vec4f;varying vWorldView3: vec4f;varying vNormalW: vec3f; #else varying vNormalV: vec3f; @@ -12780,7 +12780,7 @@ fragmentOutputs.fragData7=fragData[7]; #endif } `;x.ShadersStoreWGSL[MN]||(x.ShadersStoreWGSL[MN]=e7);Mpe={name:MN,shader:e7}});var r7,IN,Ms,n7=I(()=>{ke();Zi();Xr();T6();zt();Sn();ts();gN();EN();Ya();Ml();es();cN();r7=["diffuseSampler","bumpSampler","reflectivitySampler","albedoSampler","morphTargets","boneSampler","transmissionWeightSampler","subsurfaceWeightSampler","iblShadowSampler"],IN=["world","mBones","viewProjection","diffuseMatrix","view","previousWorld","previousViewProjection","mPreviousBones","bumpMatrix","reflectivityMatrix","albedoMatrix","reflectivityColor","albedoColor","reflectionMatrix","vTransmissionWeight","vSubsurfaceWeight","vEyePosition","vTransmissionScatterAnisotropy","vSubsurfaceScatterAnisotropy","shadowTextureSize","metallic","glossiness","vTangentSpaceParams","vBumpInfos","morphTargetInfluences","morphTargetCount","morphTargetTextureInfo","morphTargetTextureIndices","boneTextureInfo"];zf(IN,r7,!0);Qn(IN);Ms=class n{get normalsAreUnsigned(){return this._normalsAreUnsigned}_linkPrePassRenderer(e){this._linkedWithPrePass=!0,this._prePassRenderer=e,this._multiRenderTarget&&(this._multiRenderTarget.onClearObservable.clear(),this._multiRenderTarget.onClearObservable.add(()=>{}))}_unlinkPrePassRenderer(){this._linkedWithPrePass=!1,this._createRenderTargets()}_resetLayout(){this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableReflectivity=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._attachmentsFromPrePass=[]}_forceTextureType(e,t){e===n.POSITION_TEXTURE_TYPE?(this._positionIndex=t,this._enablePosition=!0):e===n.VELOCITY_TEXTURE_TYPE?(this._velocityIndex=t,this._enableVelocity=!0):e===n.VELOCITY_LINEAR_TEXTURE_TYPE?(this._velocityLinearIndex=t,this._enableVelocityLinear=!0):e===n.REFLECTIVITY_TEXTURE_TYPE?(this._reflectivityIndex=t,this._enableReflectivity=!0):e===n.DEPTH_TEXTURE_TYPE?(this._depthIndex=t,this._enableDepth=!0):e===n.NORMAL_TEXTURE_TYPE?(this._normalIndex=t,this._enableNormal=!0):e===n.SCREENSPACE_DEPTH_TEXTURE_TYPE?(this._screenspaceDepthIndex=t,this._enableScreenspaceDepth=!0):e===n.IRRADIANCE_TEXTURE_TYPE&&(this._irradianceIndex=t,this._enableIrradiance=!0)}_setAttachments(e){this._attachmentsFromPrePass=e}_linkInternalTexture(e){this._multiRenderTarget.setInternalTexture(e,0,!1)}get renderList(){return this._multiRenderTarget.renderList}set renderList(e){this._multiRenderTarget.renderList=e}get isSupported(){return this._multiRenderTarget.isSupported}getTextureIndex(e){switch(e){case n.POSITION_TEXTURE_TYPE:return this._positionIndex;case n.VELOCITY_TEXTURE_TYPE:return this._velocityIndex;case n.VELOCITY_LINEAR_TEXTURE_TYPE:return this._velocityLinearIndex;case n.REFLECTIVITY_TEXTURE_TYPE:return this._reflectivityIndex;case n.DEPTH_TEXTURE_TYPE:return this._depthIndex;case n.NORMAL_TEXTURE_TYPE:return this._normalIndex;case n.SCREENSPACE_DEPTH_TEXTURE_TYPE:return this._screenspaceDepthIndex;case n.IRRADIANCE_TEXTURE_TYPE:return this._irradianceIndex;default:return-1}}get enableDepth(){return this._enableDepth}set enableDepth(e){this._enableDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableNormal(){return this._enableNormal}set enableNormal(e){this._enableNormal=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enablePosition(){return this._enablePosition}set enablePosition(e){this._enablePosition=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableVelocity(){return this._enableVelocity}set enableVelocity(e){this._enableVelocity=e,e||(this._previousTransformationMatrices={}),this._linkedWithPrePass||(this.dispose(),this._createRenderTargets()),this._scene.needsPreviousWorldMatrices=e}get enableVelocityLinear(){return this._enableVelocityLinear}set enableVelocityLinear(e){this._enableVelocityLinear=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableReflectivity(){return this._enableReflectivity}set enableReflectivity(e){this._enableReflectivity=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableScreenspaceDepth(){return this._enableScreenspaceDepth}set enableScreenspaceDepth(e){this._enableScreenspaceDepth=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get enableIrradiance(){return this._enableIrradiance}set enableIrradiance(e){this._enableIrradiance=e,this._linkedWithPrePass||(this.dispose(),this._createRenderTargets())}get scene(){return this._scene}get ratio(){return typeof this._ratioOrDimensions=="object"?1:this._ratioOrDimensions}get shaderLanguage(){return this._shaderLanguage}constructor(e,t=1,i=15,r){this._previousTransformationMatrices={},this._previousBonesTransformationMatrices={},this.excludedSkinnedMeshesFromVelocity=[],this.renderTransparentMeshes=!0,this.generateNormalsInWorldSpace=!1,this._normalsAreUnsigned=!1,this._resizeObserver=null,this._enableDepth=!0,this._enableNormal=!0,this._enablePosition=!1,this._enableVelocity=!1,this._enableVelocityLinear=!1,this._enableReflectivity=!1,this._enableScreenspaceDepth=!1,this._enableIrradiance=!1,this._clearColor=new ft(0,0,0,0),this._clearDepthColor=new ft(0,0,0,1),this._positionIndex=-1,this._velocityIndex=-1,this._velocityLinearIndex=-1,this._reflectivityIndex=-1,this._depthIndex=-1,this._normalIndex=-1,this._screenspaceDepthIndex=-1,this._irradianceIndex=-1,this._linkedWithPrePass=!1,this.generateIrradianceWithScatterMask=!1,this.useSpecificClearForDepthTexture=!1,this._shaderLanguage=0,this._shadersLoaded=!1,this._scene=e,this._ratioOrDimensions=t,this._useUbo=e.getEngine().supportsUniformBuffers,this._depthFormat=i,this._textureTypesAndFormats=r||{},this._initShaderSourceAsync(),n._SceneComponentInitialization(this._scene),this._createRenderTargets()}async _initShaderSourceAsync(){this._scene.getEngine().isWebGPU&&!n.ForceGLSL?(this._shaderLanguage=1,await Promise.all([Promise.resolve().then(()=>(X6(),z6)),Promise.resolve().then(()=>(i7(),t7))])):await Promise.all([Promise.resolve().then(()=>(EN(),k6)),Promise.resolve().then(()=>(gN(),N6))]),this._shadersLoaded=!0}isReady(e,t){if(!this._shadersLoaded)return!1;let i=e.getMaterial();if(i&&i.disableDepthWrite)return!1;let r=[],s=[L.PositionKind],a=e.getMesh();a.isVerticesDataPresent(L.NormalKind)&&(r.push("#define HAS_NORMAL_ATTRIBUTE"),s.push(L.NormalKind));let l=!1,c=!1,f=!1;if(i){let p=!1;if(i.needAlphaTestingForMesh(a)&&i.getAlphaTestTexture()&&(r.push("#define ALPHATEST"),r.push(`#define ALPHATEST_UV${i.getAlphaTestTexture().coordinatesIndex+1}`),p=!0),(i.bumpTexture||i.normalTexture||i.geometryNormalTexture)&&ce.BumpTextureEnabled){let g=i.bumpTexture||i.normalTexture||i.geometryNormalTexture;r.push("#define BUMP"),r.push(`#define BUMP_UV${g.coordinatesIndex+1}`),p=!0}if(this._enableReflectivity){let g=!1;if(i.getClassName()==="PBRMetallicRoughnessMaterial")i.metallicRoughnessTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicRoughnessTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g&&(i.baseTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.baseTexture.coordinatesIndex+1}`),i.baseTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.baseColor&&r.push("#define ALBEDOCOLOR"));else if(i.getClassName()==="PBRSpecularGlossinessMaterial")i.specularGlossinessTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularGlossinessTexture.coordinatesIndex+1}`),p=!0,i.specularGlossinessTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE")):i.specularColor&&r.push("#define REFLECTIVITYCOLOR"),i.glossiness!=null&&r.push("#define GLOSSINESS");else if(i.getClassName()==="PBRMaterial")i.metallicTexture&&(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.metallicTexture.coordinatesIndex+1}`),r.push("#define METALLICWORKFLOW"),p=!0,g=!0),i.metallic!=null&&(r.push("#define METALLIC"),r.push("#define METALLICWORKFLOW"),g=!0),i.roughness!=null&&(r.push("#define ROUGHNESS"),r.push("#define METALLICWORKFLOW"),g=!0),g?(i.albedoTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${i.albedoTexture.coordinatesIndex+1}`),i.albedoTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),i.albedoColor&&r.push("#define ALBEDOCOLOR")):(i.reflectivityTexture?(r.push("#define SPECULARGLOSSINESSTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.reflectivityTexture.coordinatesIndex+1}`),i.reflectivityTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0):i.reflectivityColor&&r.push("#define REFLECTIVITYCOLOR"),i.microSurface!=null&&r.push("#define GLOSSINESS"));else if(i.getClassName()==="StandardMaterial")i.specularTexture&&(r.push("#define REFLECTIVITYTEXTURE"),r.push(`#define REFLECTIVITY_UV${i.specularTexture.coordinatesIndex+1}`),i.specularTexture.gammaSpace&&r.push("#define GAMMAREFLECTIVITYTEXTURE"),p=!0),i.specularColor&&r.push("#define REFLECTIVITYCOLOR");else if(i.getClassName()==="OpenPBRMaterial"){let v=i;r.push("#define METALLIC"),r.push("#define ROUGHNESS"),v._useRoughnessFromMetallicTextureGreen&&v.baseMetalnessTexture?(r.push("#define ORMTEXTURE"),r.push(`#define REFLECTIVITY_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.baseMetalnessTexture?(r.push("#define METALLIC_TEXTURE"),r.push(`#define METALLIC_UV${v.baseMetalnessTexture.coordinatesIndex+1}`),p=!0):v.specularRoughnessTexture&&(r.push("#define ROUGHNESS_TEXTURE"),r.push(`#define ROUGHNESS_UV${v.specularRoughnessTexture.coordinatesIndex+1}`),p=!0),v.baseColorTexture&&(r.push("#define ALBEDOTEXTURE"),r.push(`#define ALBEDO_UV${v.baseColorTexture.coordinatesIndex+1}`),v.baseColorTexture.gammaSpace&&r.push("#define GAMMAALBEDO"),p=!0),v.baseColor&&r.push("#define ALBEDOCOLOR")}}if(this._enableIrradiance&&this.generateIrradianceWithScatterMask&&(r.push("#define IRRADIANCE_SCATTER_MASK"),i.getClassName()==="OpenPBRMaterial")){let g=i;g.subsurfaceWeight>0&&g.subsurfaceWeightTexture&&(r.push("#define SUBSURFACE_WEIGHT"),r.push(`#define SUBSURFACEWEIGHT_UV${g.subsurfaceWeightTexture.coordinatesIndex+1}`),p=!0),g.transmissionWeight>0&&g.transmissionWeightTexture&&(r.push("#define TRANSMISSION_WEIGHT"),r.push(`#define TRANSMISSIONWEIGHT_UV${g.transmissionWeightTexture.coordinatesIndex+1}`),p=!0)}p&&(r.push("#define NEED_UV"),a.isVerticesDataPresent(L.UVKind)&&(s.push(L.UVKind),r.push("#define UV1"),l=!0),a.isVerticesDataPresent(L.UV2Kind)&&(s.push(L.UV2Kind),r.push("#define UV2"),c=!0))}if(this._enableDepth&&(r.push("#define DEPTH"),r.push("#define DEPTH_INDEX "+this._depthIndex)),this._enableNormal&&(r.push("#define NORMAL"),r.push("#define NORMAL_INDEX "+this._normalIndex)),this._enablePosition&&(r.push("#define POSITION"),r.push("#define POSITION_INDEX "+this._positionIndex)),this._enableVelocity&&(r.push("#define VELOCITY"),r.push("#define VELOCITY_INDEX "+this._velocityIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableVelocityLinear&&(r.push("#define VELOCITY_LINEAR"),r.push("#define VELOCITY_LINEAR_INDEX "+this._velocityLinearIndex),this.excludedSkinnedMeshesFromVelocity.indexOf(a)===-1&&r.push("#define BONES_VELOCITY_ENABLED")),this._enableReflectivity&&(r.push("#define REFLECTIVITY"),r.push("#define REFLECTIVITY_INDEX "+this._reflectivityIndex)),this._enableScreenspaceDepth&&this._screenspaceDepthIndex!==-1&&(r.push("#define SCREENSPACE_DEPTH_INDEX "+this._screenspaceDepthIndex),r.push("#define SCREENSPACE_DEPTH")),this._enableIrradiance&&this._irradianceIndex!==-1){r.push("#define IRRADIANCE_INDEX "+this._irradianceIndex),r.push("#define IRRADIANCE");let p=this._scene;if(p.environmentTexture){let g={},v=!1,T=0;(i.getClassName()==="OpenPBRMaterial"||i.getClassName()==="StandardMaterial"||i.getClassName()==="PBRMetallicRoughnessMaterial"||i.getClassName()==="PBRSpecularGlossinessMaterial"||i.getClassName()==="PBRMaterial")&&(v=!!i.realtimeFiltering,T=i.realtimeFilteringQuality||0),Hf(p,p.environmentTexture,g,v,T,!0);for(let E in g)g[E]&&r.push("#define "+E);g.USEIRRADIANCEMAP||r.push("#define SPHERICAL_HARMONICS");let S=p.postProcessRenderPipelineManager.supportedPipelines.find(E=>E.getClassName()==="IBLShadowsRenderPipeline");if(S){let E=S;E._getAccumulatedTexture()&&(r.push("#define IBL_SHADOW_TEXTURE"),E.coloredShadows&&r.push("#define COLORED_IBL_SHADOWS"))}}}this.generateNormalsInWorldSpace&&r.push("#define NORMAL_WORLDSPACE"),this._normalsAreUnsigned&&r.push("#define ENCODE_NORMAL"),a.useBones&&a.computeBonesUsingShaders&&a.skeleton?(s.push(L.MatricesIndicesKind),s.push(L.MatricesWeightsKind),a.numBoneInfluencers>4&&(s.push(L.MatricesIndicesExtraKind),s.push(L.MatricesWeightsExtraKind)),r.push("#define NUM_BONE_INFLUENCERS "+a.numBoneInfluencers),r.push("#define BONETEXTURE "+a.skeleton.isUsingTextureForMatrices),r.push("#define BonesPerMesh "+(a.skeleton.bones.length+1))):(r.push("#define NUM_BONE_INFLUENCERS 0"),r.push("#define BONETEXTURE false"),r.push("#define BonesPerMesh 0"));let d=a.morphTargetManager?Il(a.morphTargetManager,r,s,a,!0,!0,!1,l,c,f):0;t&&(r.push("#define INSTANCES"),No(s,this._enableVelocity||this._enableVelocityLinear),e.getRenderingMesh().hasThinInstances&&r.push("#define THIN_INSTANCES")),this._linkedWithPrePass?r.push("#define SCENE_MRT_COUNT "+this._attachmentsFromPrePass.length):r.push("#define SCENE_MRT_COUNT "+this._multiRenderTarget.textures.length),bl(i,this._scene,r);let h=this._scene.getEngine(),u=e._getDrawWrapper(void 0,!0),m=u.defines,_=r.join(` -`);return m!==_&&u.setEffect(h.createEffect("geometry",{attributes:s,uniformsNames:IN,samplers:r7,defines:_,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},h),_),u.effect.isReady()}getGBuffer(){return this._multiRenderTarget}get samples(){return this._multiRenderTarget.samples}set samples(e){this._multiRenderTarget.samples=e}dispose(){var e,t;this._resizeObserver&&(this._scene.getEngine().onResizeObservable.remove(this._resizeObserver),this._resizeObserver=null),(e=this._multiRenderTarget)!=null&&e.renderTarget&&this.scene.getEngine()._currentRenderTarget===this._multiRenderTarget.renderTarget&&this.scene.getEngine().unBindFramebuffer((t=this._multiRenderTarget)==null?void 0:t.renderTarget),this.getGBuffer().dispose()}_assignRenderTargetIndices(){let e=[],t=[],i=0;return this._enableDepth&&(this._depthIndex=i,i++,e.push("gBuffer_Depth"),t.push(this._textureTypesAndFormats[n.DEPTH_TEXTURE_TYPE])),this._enableNormal&&(this._normalIndex=i,i++,e.push("gBuffer_Normal"),t.push(this._textureTypesAndFormats[n.NORMAL_TEXTURE_TYPE])),this._enablePosition&&(this._positionIndex=i,i++,e.push("gBuffer_Position"),t.push(this._textureTypesAndFormats[n.POSITION_TEXTURE_TYPE])),this._enableVelocity&&(this._velocityIndex=i,i++,e.push("gBuffer_Velocity"),t.push(this._textureTypesAndFormats[n.VELOCITY_TEXTURE_TYPE])),this._enableVelocityLinear&&(this._velocityLinearIndex=i,i++,e.push("gBuffer_VelocityLinear"),t.push(this._textureTypesAndFormats[n.VELOCITY_LINEAR_TEXTURE_TYPE])),this._enableReflectivity&&(this._reflectivityIndex=i,i++,e.push("gBuffer_Reflectivity"),t.push(this._textureTypesAndFormats[n.REFLECTIVITY_TEXTURE_TYPE])),this._enableScreenspaceDepth&&(this._screenspaceDepthIndex=i,i++,e.push("gBuffer_ScreenspaceDepth"),t.push(this._textureTypesAndFormats[n.SCREENSPACE_DEPTH_TEXTURE_TYPE])),this._enableIrradiance&&(this._irradianceIndex=i,i++,e.push("gBuffer_Irradiance"),t.push(this._textureTypesAndFormats[n.IRRADIANCE_TEXTURE_TYPE])),[i,e,t]}_createRenderTargets(){var g;let e=this._scene.getEngine(),[t,i,r]=this._assignRenderTargetIndices(),s=0;e._caps.textureFloat&&e._caps.textureFloatLinearFiltering?s=1:e._caps.textureHalfFloat&&e._caps.textureHalfFloatLinearFiltering&&(s=2);let a=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions},o=[],l=[],c=[];for(let v of r)v?(o.push(v.textureType),l.push(v.textureFormat),c.push((g=v.samplingMode)!=null?g:2)):(o.push(s),l.push(5),c.push(2));if(this._normalsAreUnsigned=o[n.NORMAL_TEXTURE_TYPE]===11||o[n.NORMAL_TEXTURE_TYPE]===13,this._multiRenderTarget=new jb("gBuffer",a,t,this._scene,{generateMipMaps:!1,generateDepthTexture:!0,types:o,formats:l,samplingModes:c,depthTextureFormat:this._depthFormat},i.concat("gBuffer_DepthBuffer")),!this.isSupported)return;this._multiRenderTarget.wrapU=_e.CLAMP_ADDRESSMODE,this._multiRenderTarget.wrapV=_e.CLAMP_ADDRESSMODE,this._multiRenderTarget.refreshRate=1,this._multiRenderTarget.renderParticles=!1,this._multiRenderTarget.renderList=null;let f=[!0],d=[!1],h=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:u),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(_),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(u)}),this._resizeObserver=e.onResizeObservable.add(()=>{if(this._multiRenderTarget){let v=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions};this._multiRenderTarget.resize(v)}});let p=v=>{let T=v.getRenderingMesh(),S=v.getEffectiveMesh(),E=this._scene,A=E.getEngine(),R=v.getMaterial();if(!R)return;if(S._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[S.uniqueId]&&(this._previousTransformationMatrices[S.uniqueId]={world:Z.Identity(),viewProjection:E.getTransformMatrix()},T.skeleton)){let D=T.skeleton.getTransformMatrices(T);this._previousBonesTransformationMatrices[T.uniqueId]=this._copyBonesTransformationMatrices(D,new Float32Array(D.length))}let M=T._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let y=A.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||T.hasThinInstances),C=S.getWorldMatrix();if(this.isReady(v,y)){let D=v._getDrawWrapper();if(!D)return;let w=D.effect;A.enableEffect(D),y||T._bind(v,w,R.fillMode),this._useUbo?(Wf(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",E.getTransformMatrix()),w.setMatrix("view",E.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let G;if(!T._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=S._getWorldMatrixDeterminant();G=R._getEffectiveOrientation(T),N<0&&(G=G===Se.ClockWiseSideOrientation?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation)}else G=T._effectiveSideOrientation;if(R._preBind(D,G),R.needAlphaTestingForMesh(S)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&E.getEngine().getCaps().standardDerivatives&&ce.BumpTextureEnabled){let N=R.bumpTexture||R.normalTexture||R.geometryNormalTexture;w.setFloat3("vBumpInfos",N.coordinatesIndex,1/N.level,R.parallaxScaleBias),w.setMatrix("bumpMatrix",N.getTextureMatrix()),w.setTexture("bumpSampler",N),w.setFloat2("vTangentSpaceParams",R.invertNormalMapX?-1:1,R.invertNormalMapY?-1:1)}if(this._enableReflectivity){if(R.getClassName()==="PBRMetallicRoughnessMaterial")R.metallicRoughnessTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicRoughnessTexture),w.setMatrix("reflectivityMatrix",R.metallicRoughnessTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.baseTexture!==null&&(w.setTexture("albedoSampler",R.baseTexture),w.setMatrix("albedoMatrix",R.baseTexture.getTextureMatrix())),R.baseColor!==null&&w.setColor3("albedoColor",R.baseColor);else if(R.getClassName()==="PBRSpecularGlossinessMaterial")R.specularGlossinessTexture!==null?(w.setTexture("reflectivitySampler",R.specularGlossinessTexture),w.setMatrix("reflectivityMatrix",R.specularGlossinessTexture.getTextureMatrix())):R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor),R.glossiness!==null&&w.setFloat("glossiness",R.glossiness);else if(R.getClassName()==="PBRMaterial")R.metallicTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicTexture),w.setMatrix("reflectivityMatrix",R.metallicTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.roughness!==null||R.metallic!==null||R.metallicTexture!==null?(R.albedoTexture!==null&&(w.setTexture("albedoSampler",R.albedoTexture),w.setMatrix("albedoMatrix",R.albedoTexture.getTextureMatrix())),R.albedoColor!==null&&w.setColor3("albedoColor",R.albedoColor)):(R.reflectivityTexture!==null?(w.setTexture("reflectivitySampler",R.reflectivityTexture),w.setMatrix("reflectivityMatrix",R.reflectivityTexture.getTextureMatrix())):R.reflectivityColor!==null&&w.setColor3("reflectivityColor",R.reflectivityColor),R.microSurface!==null&&w.setFloat("glossiness",R.microSurface));else if(R.getClassName()==="StandardMaterial")R.specularTexture!==null&&(w.setTexture("reflectivitySampler",R.specularTexture),w.setMatrix("reflectivityMatrix",R.specularTexture.getTextureMatrix())),R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor);else if(R.getClassName()==="OpenPBRMaterial"){let N=R;N._useRoughnessFromMetallicTextureGreen&&N.baseMetalnessTexture?(w.setTexture("reflectivitySampler",N.baseMetalnessTexture),w.setMatrix("reflectivityMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.baseMetalnessTexture?(w.setTexture("metallicSampler",N.baseMetalnessTexture),w.setMatrix("metallicMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.specularRoughnessTexture&&(w.setTexture("roughnessSampler",N.specularRoughnessTexture),w.setMatrix("roughnessMatrix",N.specularRoughnessTexture.getTextureMatrix())),w.setFloat("metallic",N.baseMetalness),w.setFloat("glossiness",1-N.specularRoughness),N.baseColorTexture!==null&&(w.setTexture("albedoSampler",N.baseColorTexture),w.setMatrix("albedoMatrix",N.baseColorTexture.getTextureMatrix())),N.baseColor!==null&&w.setColor3("albedoColor",N.baseColor)}}if(this._enableIrradiance&&E.environmentTexture){let N=E.environmentTexture,B=E.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let Q=B._getAccumulatedTexture();Q&&(w.setTexture("iblShadowSampler",Q),w.setFloat2("shadowTextureSize",Q.getSize().width,Q.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*E.iblIntensity,0),w.setTexture("reflectionSampler",N),N.irradianceTexture&&(w.setTexture("irradianceSampler",N.irradianceTexture),N.irradianceTexture._dominantDirection&&w.setVector3("vReflectionDominantDirection",N.irradianceTexture._dominantDirection)),N.sphericalPolynomial){let V=N.sphericalPolynomial;if(V.preScaledHarmonics){let Q=V.preScaledHarmonics;w.setVector3("vSphericalL00",Q.l00),w.setVector3("vSphericalL1_1",Q.l1_1),w.setVector3("vSphericalL10",Q.l10),w.setVector3("vSphericalL11",Q.l11),w.setVector3("vSphericalL2_2",Q.l2_2),w.setVector3("vSphericalL2_1",Q.l2_1),w.setVector3("vSphericalL20",Q.l20),w.setVector3("vSphericalL21",Q.l21),w.setVector3("vSphericalL22",Q.l22)}else w.setFloat3("vSphericalX",V.x.x,V.x.y,V.x.z),w.setFloat3("vSphericalY",V.y.x,V.y.y,V.y.z),w.setFloat3("vSphericalZ",V.z.x,V.z.y,V.z.z),w.setFloat3("vSphericalXX_ZZ",V.xx.x-V.zz.x,V.xx.y-V.zz.y,V.xx.z-V.zz.z),w.setFloat3("vSphericalYY_ZZ",V.yy.x-V.zz.x,V.yy.y-V.zz.y,V.yy.z-V.zz.z),w.setFloat3("vSphericalZZ",V.zz.x,V.zz.y,V.zz.z),w.setFloat3("vSphericalXY",V.xy.x,V.xy.y,V.xy.z),w.setFloat3("vSphericalYZ",V.yz.x,V.yz.y,V.yz.z),w.setFloat3("vSphericalZX",V.zx.x,V.zx.y,V.zx.z)}if(this.generateIrradianceWithScatterMask&&R.getClassName()==="OpenPBRMaterial"){let V=R;w.setFloat("vSubsurfaceWeight",V.subsurfaceWeight),V.subsurfaceWeightTexture&&(w.setTexture("subsurfaceWeightSampler",V.subsurfaceWeightTexture),w.setMatrix("subsurfaceWeightMatrix",V.subsurfaceWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionWeight",V.transmissionWeight),V.transmissionWeightTexture&&(w.setTexture("transmissionWeightSampler",V.transmissionWeightTexture),w.setMatrix("transmissionWeightMatrix",V.transmissionWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionScatterAnisotropy",V.transmissionScatterAnisotropy),w.setFloat("vSubsurfaceScatterAnisotropy",V.subsurfaceScatterAnisotropy)}}if($n(w,R,this._scene),T.useBones&&T.computeBonesUsingShaders&&T.skeleton){let N=T.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(T);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",T.skeleton.getTransformMatrices(T));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[T.uniqueId])}Jn(T,w),T.morphTargetManager&&T.morphTargetManager.isUsingTextureForTargets&&T.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[S.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[S.uniqueId].viewProjection)),y&&T.hasThinInstances&&w.setMatrix("world",C),T._processRendering(S,v,w,R.fillMode,M,y,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[S.uniqueId].world=C.clone(),this._previousTransformationMatrices[S.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),T.skeleton&&this._copyBonesTransformationMatrices(T.skeleton.getTransformMatrices(T),this._previousBonesTransformationMatrices[S.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,T,S)=>{if((S||T===0)&&v.subMeshes)for(let E=0;E{let A;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(E.length){for(e.setColorWrite(!1),A=0;A{throw Qe("GeometryBufferRendererSceneComponent")}});var s7,Ipe,yN=I(()=>{k();Lh();Pv();s7="openpbrUboDeclaration",Ipe=`uniform vTangentSpaceParams: vec2f;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vDebugMode: vec2f;uniform renderTargetSize: vec2f;uniform cameraInfo: vec4f;uniform backgroundRefractionMatrix: mat4x4f;uniform vBackgroundRefractionInfos: vec3f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f;uniform vBaseWeight: f32;uniform vBaseColor: vec4f;uniform vBaseDiffuseRoughness: f32;uniform vReflectanceInfo: vec4f;uniform vSpecularColor: vec4f;uniform vSpecularAnisotropy: vec3f;uniform vTransmissionWeight : f32;uniform vTransmissionColor : vec3f;uniform vTransmissionDepth : f32;uniform vTransmissionScatter : vec3f;uniform vTransmissionScatterAnisotropy : f32;uniform vTransmissionDispersionScale : f32;uniform vTransmissionDispersionAbbeNumber : f32;uniform vSubsurfaceWeight: f32;uniform vSubsurfaceColor: vec3f;uniform vSubsurfaceRadius: f32;uniform vSubsurfaceRadiusScale: vec3f;uniform vSubsurfaceScatterAnisotropy: f32;uniform vCoatWeight: f32;uniform vCoatColor: vec3f;uniform vCoatRoughness: f32;uniform vCoatRoughnessAnisotropy: f32;uniform vCoatIor: f32;uniform vCoatDarkening : f32;uniform vFuzzWeight: f32;uniform vFuzzColor: vec3f;uniform vFuzzRoughness: f32;uniform vGeometryThinWalled: f32;uniform vGeometryCoatTangent: vec2f;uniform vGeometryThickness: f32;uniform vEmissionColor: vec3f;uniform vThinFilmWeight: f32;uniform vThinFilmThickness: vec2f;uniform vThinFilmIor: f32;uniform vBaseWeightInfos: vec2f;uniform baseWeightMatrix: mat4x4f;uniform vBaseColorInfos: vec2f;uniform baseColorMatrix: mat4x4f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform vBaseMetalnessInfos: vec2f;uniform baseMetalnessMatrix: mat4x4f;uniform vSpecularWeightInfos: vec2f;uniform specularWeightMatrix: mat4x4f;uniform vSpecularColorInfos: vec2f;uniform specularColorMatrix: mat4x4f;uniform vSpecularRoughnessInfos: vec2f;uniform specularRoughnessMatrix: mat4x4f;uniform vSpecularRoughnessAnisotropyInfos: vec2f;uniform specularRoughnessAnisotropyMatrix: mat4x4f;uniform vTransmissionWeightInfos : vec2f;uniform transmissionWeightMatrix : mat4x4f;uniform vTransmissionColorInfos : vec2f;uniform transmissionColorMatrix : mat4x4f;uniform vTransmissionDepthInfos : vec2f;uniform transmissionDepthMatrix : mat4x4f;uniform vTransmissionScatterInfos : vec2f;uniform transmissionScatterMatrix : mat4x4f;uniform vTransmissionDispersionScaleInfos : vec2f;uniform transmissionDispersionScaleMatrix : mat4x4f;uniform vSubsurfaceWeightInfos: vec2f;uniform subsurfaceWeightMatrix: mat4x4f;uniform vSubsurfaceColorInfos: vec2f;uniform subsurfaceColorMatrix: mat4x4f;uniform vSubsurfaceRadiusScaleInfos: vec2f;uniform subsurfaceRadiusScaleMatrix: mat4x4f;uniform vCoatWeightInfos: vec2f;uniform coatWeightMatrix: mat4x4f;uniform vCoatColorInfos: vec2f;uniform coatColorMatrix: mat4x4f;uniform vCoatRoughnessInfos: vec2f;uniform coatRoughnessMatrix: mat4x4f;uniform vCoatRoughnessAnisotropyInfos: vec2f;uniform coatRoughnessAnisotropyMatrix: mat4x4f;uniform vCoatDarkeningInfos : vec2f;uniform coatDarkeningMatrix : mat4x4f;uniform vFuzzWeightInfos: vec2f;uniform fuzzWeightMatrix: mat4x4f;uniform vFuzzColorInfos: vec2f;uniform fuzzColorMatrix: mat4x4f;uniform vFuzzRoughnessInfos: vec2f;uniform fuzzRoughnessMatrix: mat4x4f;uniform vGeometryNormalInfos: vec2f;uniform geometryNormalMatrix: mat4x4f;uniform vGeometryTangentInfos: vec2f;uniform geometryTangentMatrix: mat4x4f;uniform vGeometryCoatNormalInfos: vec2f;uniform geometryCoatNormalMatrix: mat4x4f;uniform vGeometryCoatTangentInfos: vec2f;uniform geometryCoatTangentMatrix: mat4x4f;uniform vGeometryOpacityInfos: vec2f;uniform geometryOpacityMatrix: mat4x4f;uniform vGeometryThicknessInfos: vec2f;uniform geometryThicknessMatrix: mat4x4f;uniform vEmissionInfos: vec2f;uniform emissionMatrix: mat4x4f;uniform vThinFilmWeightInfos: vec2f;uniform thinFilmWeightMatrix: mat4x4f;uniform vThinFilmThicknessInfos: vec2f;uniform thinFilmThicknessMatrix: mat4x4f;uniform vAmbientOcclusionInfos: vec2f;uniform ambientOcclusionMatrix: mat4x4f; +`);return m!==_&&u.setEffect(h.createEffect("geometry",{attributes:s,uniformsNames:IN,samplers:r7,defines:_,onCompiled:null,fallbacks:null,onError:null,uniformBuffersNames:["Scene"],indexParameters:{buffersCount:this._multiRenderTarget.textures.length-1,maxSimultaneousMorphTargets:d},shaderLanguage:this.shaderLanguage},h),_),u.effect.isReady()}getGBuffer(){return this._multiRenderTarget}get samples(){return this._multiRenderTarget.samples}set samples(e){this._multiRenderTarget.samples=e}dispose(){var e,t;this._resizeObserver&&(this._scene.getEngine().onResizeObservable.remove(this._resizeObserver),this._resizeObserver=null),(e=this._multiRenderTarget)!=null&&e.renderTarget&&this.scene.getEngine()._currentRenderTarget===this._multiRenderTarget.renderTarget&&this.scene.getEngine().unBindFramebuffer((t=this._multiRenderTarget)==null?void 0:t.renderTarget),this.getGBuffer().dispose()}_assignRenderTargetIndices(){let e=[],t=[],i=0;return this._enableDepth&&(this._depthIndex=i,i++,e.push("gBuffer_Depth"),t.push(this._textureTypesAndFormats[n.DEPTH_TEXTURE_TYPE])),this._enableNormal&&(this._normalIndex=i,i++,e.push("gBuffer_Normal"),t.push(this._textureTypesAndFormats[n.NORMAL_TEXTURE_TYPE])),this._enablePosition&&(this._positionIndex=i,i++,e.push("gBuffer_Position"),t.push(this._textureTypesAndFormats[n.POSITION_TEXTURE_TYPE])),this._enableVelocity&&(this._velocityIndex=i,i++,e.push("gBuffer_Velocity"),t.push(this._textureTypesAndFormats[n.VELOCITY_TEXTURE_TYPE])),this._enableVelocityLinear&&(this._velocityLinearIndex=i,i++,e.push("gBuffer_VelocityLinear"),t.push(this._textureTypesAndFormats[n.VELOCITY_LINEAR_TEXTURE_TYPE])),this._enableReflectivity&&(this._reflectivityIndex=i,i++,e.push("gBuffer_Reflectivity"),t.push(this._textureTypesAndFormats[n.REFLECTIVITY_TEXTURE_TYPE])),this._enableScreenspaceDepth&&(this._screenspaceDepthIndex=i,i++,e.push("gBuffer_ScreenspaceDepth"),t.push(this._textureTypesAndFormats[n.SCREENSPACE_DEPTH_TEXTURE_TYPE])),this._enableIrradiance&&(this._irradianceIndex=i,i++,e.push("gBuffer_Irradiance"),t.push(this._textureTypesAndFormats[n.IRRADIANCE_TEXTURE_TYPE])),[i,e,t]}_createRenderTargets(){var g;let e=this._scene.getEngine(),[t,i,r]=this._assignRenderTargetIndices(),s=0;e._caps.textureFloat&&e._caps.textureFloatLinearFiltering?s=1:e._caps.textureHalfFloat&&e._caps.textureHalfFloatLinearFiltering&&(s=2);let a=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions},o=[],l=[],c=[];for(let v of r)v?(o.push(v.textureType),l.push(v.textureFormat),c.push((g=v.samplingMode)!=null?g:2)):(o.push(s),l.push(5),c.push(2));if(this._normalsAreUnsigned=o[n.NORMAL_TEXTURE_TYPE]===11||o[n.NORMAL_TEXTURE_TYPE]===13,this._multiRenderTarget=new Zb("gBuffer",a,t,this._scene,{generateMipMaps:!1,generateDepthTexture:!0,types:o,formats:l,samplingModes:c,depthTextureFormat:this._depthFormat},i.concat("gBuffer_DepthBuffer")),!this.isSupported)return;this._multiRenderTarget.wrapU=_e.CLAMP_ADDRESSMODE,this._multiRenderTarget.wrapV=_e.CLAMP_ADDRESSMODE,this._multiRenderTarget.refreshRate=1,this._multiRenderTarget.renderParticles=!1,this._multiRenderTarget.renderList=null;let f=[!0],d=[!1],h=[!0];for(let v=1;v{v.bindAttachments(this.useSpecificClearForDepthTexture?m:u),v.clear(this._clearColor,!0,!0,!0),this.useSpecificClearForDepthTexture&&(v.bindAttachments(_),v.clear(this._clearDepthColor,!0,!0,!0)),v.bindAttachments(u)}),this._resizeObserver=e.onResizeObservable.add(()=>{if(this._multiRenderTarget){let v=this._ratioOrDimensions.width!==void 0?this._ratioOrDimensions:{width:e.getRenderWidth()*this._ratioOrDimensions,height:e.getRenderHeight()*this._ratioOrDimensions};this._multiRenderTarget.resize(v)}});let p=v=>{let T=v.getRenderingMesh(),S=v.getEffectiveMesh(),E=this._scene,A=E.getEngine(),R=v.getMaterial();if(!R)return;if(S._internalAbstractMeshDataInfo._isActiveIntermediate=!1,(this._enableVelocity||this._enableVelocityLinear)&&!this._previousTransformationMatrices[S.uniqueId]&&(this._previousTransformationMatrices[S.uniqueId]={world:Z.Identity(),viewProjection:E.getTransformMatrix()},T.skeleton)){let D=T.skeleton.getTransformMatrices(T);this._previousBonesTransformationMatrices[T.uniqueId]=this._copyBonesTransformationMatrices(D,new Float32Array(D.length))}let M=T._getInstancesRenderList(v._id,!!v.getReplacementMesh());if(M.mustReturn)return;let y=A.getCaps().instancedArrays&&(M.visibleInstances[v._id]!==null||T.hasThinInstances),C=S.getWorldMatrix();if(this.isReady(v,y)){let D=v._getDrawWrapper();if(!D)return;let w=D.effect;A.enableEffect(D),y||T._bind(v,w,R.fillMode),this._useUbo?(Wf(w,this._scene.getSceneUniformBuffer()),this._scene.finalizeSceneUbo()):(w.setMatrix("viewProjection",E.getTransformMatrix()),w.setMatrix("view",E.getViewMatrix()),this._scene.bindEyePosition(w,"vEyePosition"));let G;if(!T._instanceDataStorage.isFrozen&&(R.backFaceCulling||R.sideOrientation!==null)){let N=S._getWorldMatrixDeterminant();G=R._getEffectiveOrientation(T),N<0&&(G=G===Se.ClockWiseSideOrientation?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation)}else G=T._effectiveSideOrientation;if(R._preBind(D,G),R.needAlphaTestingForMesh(S)){let N=R.getAlphaTestTexture();N&&(w.setTexture("diffuseSampler",N),w.setMatrix("diffuseMatrix",N.getTextureMatrix()))}if((R.bumpTexture||R.normalTexture||R.geometryNormalTexture)&&E.getEngine().getCaps().standardDerivatives&&ce.BumpTextureEnabled){let N=R.bumpTexture||R.normalTexture||R.geometryNormalTexture;w.setFloat3("vBumpInfos",N.coordinatesIndex,1/N.level,R.parallaxScaleBias),w.setMatrix("bumpMatrix",N.getTextureMatrix()),w.setTexture("bumpSampler",N),w.setFloat2("vTangentSpaceParams",R.invertNormalMapX?-1:1,R.invertNormalMapY?-1:1)}if(this._enableReflectivity){if(R.getClassName()==="PBRMetallicRoughnessMaterial")R.metallicRoughnessTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicRoughnessTexture),w.setMatrix("reflectivityMatrix",R.metallicRoughnessTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.baseTexture!==null&&(w.setTexture("albedoSampler",R.baseTexture),w.setMatrix("albedoMatrix",R.baseTexture.getTextureMatrix())),R.baseColor!==null&&w.setColor3("albedoColor",R.baseColor);else if(R.getClassName()==="PBRSpecularGlossinessMaterial")R.specularGlossinessTexture!==null?(w.setTexture("reflectivitySampler",R.specularGlossinessTexture),w.setMatrix("reflectivityMatrix",R.specularGlossinessTexture.getTextureMatrix())):R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor),R.glossiness!==null&&w.setFloat("glossiness",R.glossiness);else if(R.getClassName()==="PBRMaterial")R.metallicTexture!==null&&(w.setTexture("reflectivitySampler",R.metallicTexture),w.setMatrix("reflectivityMatrix",R.metallicTexture.getTextureMatrix())),R.metallic!==null&&w.setFloat("metallic",R.metallic),R.roughness!==null&&w.setFloat("glossiness",1-R.roughness),R.roughness!==null||R.metallic!==null||R.metallicTexture!==null?(R.albedoTexture!==null&&(w.setTexture("albedoSampler",R.albedoTexture),w.setMatrix("albedoMatrix",R.albedoTexture.getTextureMatrix())),R.albedoColor!==null&&w.setColor3("albedoColor",R.albedoColor)):(R.reflectivityTexture!==null?(w.setTexture("reflectivitySampler",R.reflectivityTexture),w.setMatrix("reflectivityMatrix",R.reflectivityTexture.getTextureMatrix())):R.reflectivityColor!==null&&w.setColor3("reflectivityColor",R.reflectivityColor),R.microSurface!==null&&w.setFloat("glossiness",R.microSurface));else if(R.getClassName()==="StandardMaterial")R.specularTexture!==null&&(w.setTexture("reflectivitySampler",R.specularTexture),w.setMatrix("reflectivityMatrix",R.specularTexture.getTextureMatrix())),R.specularColor!==null&&w.setColor3("reflectivityColor",R.specularColor);else if(R.getClassName()==="OpenPBRMaterial"){let N=R;N._useRoughnessFromMetallicTextureGreen&&N.baseMetalnessTexture?(w.setTexture("reflectivitySampler",N.baseMetalnessTexture),w.setMatrix("reflectivityMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.baseMetalnessTexture?(w.setTexture("metallicSampler",N.baseMetalnessTexture),w.setMatrix("metallicMatrix",N.baseMetalnessTexture.getTextureMatrix())):N.specularRoughnessTexture&&(w.setTexture("roughnessSampler",N.specularRoughnessTexture),w.setMatrix("roughnessMatrix",N.specularRoughnessTexture.getTextureMatrix())),w.setFloat("metallic",N.baseMetalness),w.setFloat("glossiness",1-N.specularRoughness),N.baseColorTexture!==null&&(w.setTexture("albedoSampler",N.baseColorTexture),w.setMatrix("albedoMatrix",N.baseColorTexture.getTextureMatrix())),N.baseColor!==null&&w.setColor3("albedoColor",N.baseColor)}}if(this._enableIrradiance&&E.environmentTexture){let N=E.environmentTexture,B=E.postProcessRenderPipelineManager.supportedPipelines.find(V=>V.getClassName()==="IBLShadowsRenderPipeline");if(B){let Q=B._getAccumulatedTexture();Q&&(w.setTexture("iblShadowSampler",Q),w.setFloat2("shadowTextureSize",Q.getSize().width,Q.getSize().height))}if(w.setMatrix("reflectionMatrix",N.getReflectionTextureMatrix()),w.setFloat2("vReflectionInfos",N.level*E.iblIntensity,0),w.setTexture("reflectionSampler",N),N.irradianceTexture&&(w.setTexture("irradianceSampler",N.irradianceTexture),N.irradianceTexture._dominantDirection&&w.setVector3("vReflectionDominantDirection",N.irradianceTexture._dominantDirection)),N.sphericalPolynomial){let V=N.sphericalPolynomial;if(V.preScaledHarmonics){let Q=V.preScaledHarmonics;w.setVector3("vSphericalL00",Q.l00),w.setVector3("vSphericalL1_1",Q.l1_1),w.setVector3("vSphericalL10",Q.l10),w.setVector3("vSphericalL11",Q.l11),w.setVector3("vSphericalL2_2",Q.l2_2),w.setVector3("vSphericalL2_1",Q.l2_1),w.setVector3("vSphericalL20",Q.l20),w.setVector3("vSphericalL21",Q.l21),w.setVector3("vSphericalL22",Q.l22)}else w.setFloat3("vSphericalX",V.x.x,V.x.y,V.x.z),w.setFloat3("vSphericalY",V.y.x,V.y.y,V.y.z),w.setFloat3("vSphericalZ",V.z.x,V.z.y,V.z.z),w.setFloat3("vSphericalXX_ZZ",V.xx.x-V.zz.x,V.xx.y-V.zz.y,V.xx.z-V.zz.z),w.setFloat3("vSphericalYY_ZZ",V.yy.x-V.zz.x,V.yy.y-V.zz.y,V.yy.z-V.zz.z),w.setFloat3("vSphericalZZ",V.zz.x,V.zz.y,V.zz.z),w.setFloat3("vSphericalXY",V.xy.x,V.xy.y,V.xy.z),w.setFloat3("vSphericalYZ",V.yz.x,V.yz.y,V.yz.z),w.setFloat3("vSphericalZX",V.zx.x,V.zx.y,V.zx.z)}if(this.generateIrradianceWithScatterMask&&R.getClassName()==="OpenPBRMaterial"){let V=R;w.setFloat("vSubsurfaceWeight",V.subsurfaceWeight),V.subsurfaceWeightTexture&&(w.setTexture("subsurfaceWeightSampler",V.subsurfaceWeightTexture),w.setMatrix("subsurfaceWeightMatrix",V.subsurfaceWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionWeight",V.transmissionWeight),V.transmissionWeightTexture&&(w.setTexture("transmissionWeightSampler",V.transmissionWeightTexture),w.setMatrix("transmissionWeightMatrix",V.transmissionWeightTexture.getTextureMatrix())),w.setFloat("vTransmissionScatterAnisotropy",V.transmissionScatterAnisotropy),w.setFloat("vSubsurfaceScatterAnisotropy",V.subsurfaceScatterAnisotropy)}}if($n(w,R,this._scene),T.useBones&&T.computeBonesUsingShaders&&T.skeleton){let N=T.skeleton;if(N.isUsingTextureForMatrices&&w.getUniformIndex("boneTextureInfo")>-1){let B=N.getTransformMatrixTexture(T);w.setTexture("boneSampler",B),w.setFloat2("boneTextureInfo",N._textureWidth,N._textureHeight)}else w.setMatrices("mBones",T.skeleton.getTransformMatrices(T));(this._enableVelocity||this._enableVelocityLinear)&&w.setMatrices("mPreviousBones",this._previousBonesTransformationMatrices[T.uniqueId])}Jn(T,w),T.morphTargetManager&&T.morphTargetManager.isUsingTextureForTargets&&T.morphTargetManager._bind(w),(this._enableVelocity||this._enableVelocityLinear)&&(w.setMatrix("previousWorld",this._previousTransformationMatrices[S.uniqueId].world),w.setMatrix("previousViewProjection",this._previousTransformationMatrices[S.uniqueId].viewProjection)),y&&T.hasThinInstances&&w.setMatrix("world",C),T._processRendering(S,v,w,R.fillMode,M,y,(N,B)=>{N||w.setMatrix("world",B)})}(this._enableVelocity||this._enableVelocityLinear)&&(this._previousTransformationMatrices[S.uniqueId].world=C.clone(),this._previousTransformationMatrices[S.uniqueId].viewProjection=this._scene.getTransformMatrix().clone(),T.skeleton&&this._copyBonesTransformationMatrices(T.skeleton.getTransformMatrices(T),this._previousBonesTransformationMatrices[S.uniqueId]))};this._multiRenderTarget.customIsReadyFunction=(v,T,S)=>{if((S||T===0)&&v.subMeshes)for(let E=0;E{let A;if(this._linkedWithPrePass){if(!this._prePassRenderer.enabled)return;this._scene.getEngine().bindAttachments(this._attachmentsFromPrePass)}if(E.length){for(e.setColorWrite(!1),A=0;A{throw Qe("GeometryBufferRendererSceneComponent")}});var s7,Ipe,yN=I(()=>{k();Lh();Pv();s7="openpbrUboDeclaration",Ipe=`uniform vTangentSpaceParams: vec2f;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vDebugMode: vec2f;uniform renderTargetSize: vec2f;uniform cameraInfo: vec4f;uniform backgroundRefractionMatrix: mat4x4f;uniform vBackgroundRefractionInfos: vec3f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f;uniform vBaseWeight: f32;uniform vBaseColor: vec4f;uniform vBaseDiffuseRoughness: f32;uniform vReflectanceInfo: vec4f;uniform vSpecularColor: vec4f;uniform vSpecularAnisotropy: vec3f;uniform vTransmissionWeight : f32;uniform vTransmissionColor : vec3f;uniform vTransmissionDepth : f32;uniform vTransmissionScatter : vec3f;uniform vTransmissionScatterAnisotropy : f32;uniform vTransmissionDispersionScale : f32;uniform vTransmissionDispersionAbbeNumber : f32;uniform vSubsurfaceWeight: f32;uniform vSubsurfaceColor: vec3f;uniform vSubsurfaceRadius: f32;uniform vSubsurfaceRadiusScale: vec3f;uniform vSubsurfaceScatterAnisotropy: f32;uniform vCoatWeight: f32;uniform vCoatColor: vec3f;uniform vCoatRoughness: f32;uniform vCoatRoughnessAnisotropy: f32;uniform vCoatIor: f32;uniform vCoatDarkening : f32;uniform vFuzzWeight: f32;uniform vFuzzColor: vec3f;uniform vFuzzRoughness: f32;uniform vGeometryThinWalled: f32;uniform vGeometryCoatTangent: vec2f;uniform vGeometryThickness: f32;uniform vEmissionColor: vec3f;uniform vThinFilmWeight: f32;uniform vThinFilmThickness: vec2f;uniform vThinFilmIor: f32;uniform vBaseWeightInfos: vec2f;uniform baseWeightMatrix: mat4x4f;uniform vBaseColorInfos: vec2f;uniform baseColorMatrix: mat4x4f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform vBaseMetalnessInfos: vec2f;uniform baseMetalnessMatrix: mat4x4f;uniform vSpecularWeightInfos: vec2f;uniform specularWeightMatrix: mat4x4f;uniform vSpecularColorInfos: vec2f;uniform specularColorMatrix: mat4x4f;uniform vSpecularRoughnessInfos: vec2f;uniform specularRoughnessMatrix: mat4x4f;uniform vSpecularRoughnessAnisotropyInfos: vec2f;uniform specularRoughnessAnisotropyMatrix: mat4x4f;uniform vTransmissionWeightInfos : vec2f;uniform transmissionWeightMatrix : mat4x4f;uniform vTransmissionColorInfos : vec2f;uniform transmissionColorMatrix : mat4x4f;uniform vTransmissionDepthInfos : vec2f;uniform transmissionDepthMatrix : mat4x4f;uniform vTransmissionScatterInfos : vec2f;uniform transmissionScatterMatrix : mat4x4f;uniform vTransmissionDispersionScaleInfos : vec2f;uniform transmissionDispersionScaleMatrix : mat4x4f;uniform vSubsurfaceWeightInfos: vec2f;uniform subsurfaceWeightMatrix: mat4x4f;uniform vSubsurfaceColorInfos: vec2f;uniform subsurfaceColorMatrix: mat4x4f;uniform vSubsurfaceRadiusScaleInfos: vec2f;uniform subsurfaceRadiusScaleMatrix: mat4x4f;uniform vCoatWeightInfos: vec2f;uniform coatWeightMatrix: mat4x4f;uniform vCoatColorInfos: vec2f;uniform coatColorMatrix: mat4x4f;uniform vCoatRoughnessInfos: vec2f;uniform coatRoughnessMatrix: mat4x4f;uniform vCoatRoughnessAnisotropyInfos: vec2f;uniform coatRoughnessAnisotropyMatrix: mat4x4f;uniform vCoatDarkeningInfos : vec2f;uniform coatDarkeningMatrix : mat4x4f;uniform vFuzzWeightInfos: vec2f;uniform fuzzWeightMatrix: mat4x4f;uniform vFuzzColorInfos: vec2f;uniform fuzzColorMatrix: mat4x4f;uniform vFuzzRoughnessInfos: vec2f;uniform fuzzRoughnessMatrix: mat4x4f;uniform vGeometryNormalInfos: vec2f;uniform geometryNormalMatrix: mat4x4f;uniform vGeometryTangentInfos: vec2f;uniform geometryTangentMatrix: mat4x4f;uniform vGeometryCoatNormalInfos: vec2f;uniform geometryCoatNormalMatrix: mat4x4f;uniform vGeometryCoatTangentInfos: vec2f;uniform geometryCoatTangentMatrix: mat4x4f;uniform vGeometryOpacityInfos: vec2f;uniform geometryOpacityMatrix: mat4x4f;uniform vGeometryThicknessInfos: vec2f;uniform geometryThicknessMatrix: mat4x4f;uniform vEmissionInfos: vec2f;uniform emissionMatrix: mat4x4f;uniform vThinFilmWeightInfos: vec2f;uniform thinFilmWeightMatrix: mat4x4f;uniform vThinFilmThicknessInfos: vec2f;uniform thinFilmThicknessMatrix: mat4x4f;uniform vAmbientOcclusionInfos: vec2f;uniform ambientOcclusionMatrix: mat4x4f; #define ADDITIONAL_UBO_DECLARATION #include #include @@ -12794,7 +12794,7 @@ varying vTBN0: vec3f;varying vTBN1: vec3f;varying vTBN2: vec3f; var tbnNormal: vec3f=normalize(normalUpdated);var tbnTangent: vec3f=normalize(tangentUpdated.xyz);var tbnBitangent: vec3f=cross(tbnNormal,tbnTangent)*tangentUpdated.w;var matTemp= mat3x3f(finalWorld[0].xyz,finalWorld[1].xyz,finalWorld[2].xyz)* mat3x3f(tbnTangent,tbnBitangent,tbnNormal);vertexOutputs.vTBN0=matTemp[0];vertexOutputs.vTBN1=matTemp[1];vertexOutputs.vTBN2=matTemp[2]; #endif #endif -`;x.IncludesShadersStoreWGSL[l7]||(x.IncludesShadersStoreWGSL[l7]=Cpe)});var d7={};Fe(d7,{openpbrVertexShaderWGSL:()=>Ppe});var CN,f7,Ppe,h7=I(()=>{k();yN();IR();Pp();Ha();kp();Ac();xc();ed();yR();CR();Gp();o7();Rc();pv();PR();rd();nd();Oh();DR();LR();sd();ad();bc();Mc();Ic();OR();NR();wR();c7();yc();_v();BR();gv();UR();CN="openpbrVertexShader",f7=`#define OPENPBR_VERTEX_SHADER +`;x.IncludesShadersStoreWGSL[l7]||(x.IncludesShadersStoreWGSL[l7]=Cpe)});var d7={};Fe(d7,{openpbrVertexShaderWGSL:()=>Ppe});var CN,f7,Ppe,h7=I(()=>{k();yN();yR();Pp();Ha();kp();Ac();xc();ed();CR();PR();Gp();o7();Rc();pv();DR();rd();nd();Oh();LR();OR();sd();ad();bc();Mc();Ic();NR();wR();FR();c7();yc();_v();UR();gv();VR();CN="openpbrVertexShader",f7=`#define OPENPBR_VERTEX_SHADER #include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING @@ -13051,7 +13051,7 @@ varying vColor: vec4f; #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 varying vViewDepth: f32; #endif -`;x.IncludesShadersStoreWGSL[u7]||(x.IncludesShadersStoreWGSL[u7]=Dpe)});var m7,Lpe,p7=I(()=>{k();Nh();Qb();m7="openpbrFragmentSamplersDeclaration",Lpe=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;x.IncludesShadersStoreWGSL[u7]||(x.IncludesShadersStoreWGSL[u7]=Dpe)});var m7,Lpe,p7=I(()=>{k();Nh();$b();m7="openpbrFragmentSamplersDeclaration",Lpe=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness) @@ -14849,7 +14849,7 @@ return fragmentOutputs; #endif } #endif -`;x.IncludesShadersStoreWGSL[a9]||(x.IncludesShadersStoreWGSL[a9]=a_e)});var l9={};Fe(l9,{openpbrPixelShaderWGSL:()=>o_e});var WN,o9,o_e,c9=I(()=>{k();VR();GR();yN();PN();kR();p7();HR();Cc();Oh();vv();Ha();DN();LN();ON();zR();WR();Gp();NN();wN();kp();FN();UN();$b();b7();I7();Dv();TN();C7();D7();AN();xN();O7();Pc();VN();F7();U7();G7();bN();RN();W7();z7();Y7();j7();jR();q7();$7();e9();i9();ZR();Ev();GN();s9();qR();kN();WN="openpbrPixelShader",o9=`#define OPENPBR_FRAGMENT_SHADER +`;x.IncludesShadersStoreWGSL[a9]||(x.IncludesShadersStoreWGSL[a9]=a_e)});var l9={};Fe(l9,{openpbrPixelShaderWGSL:()=>o_e});var WN,o9,o_e,c9=I(()=>{k();GR();kR();yN();PN();WR();p7();zR();Cc();Oh();vv();Ha();DN();LN();ON();XR();HR();Gp();NN();wN();kp();FN();UN();Jb();b7();I7();Dv();TN();C7();D7();AN();xN();O7();Pc();VN();F7();U7();G7();bN();RN();W7();z7();Y7();j7();ZR();q7();$7();e9();i9();qR();Ev();GN();s9();QR();kN();WN="openpbrPixelShader",o9=`#define OPENPBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_BEGIN #include[SCENE_MRT_COUNT] #include @@ -15073,7 +15073,7 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #include #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStoreWGSL[WN]||(x.ShadersStoreWGSL[WN]=o9);o_e={name:WN,shader:o9}});var f9,l_e,d9=I(()=>{k();RO();QR();f9="openpbrVertexDeclaration",l_e=`#include +`;x.ShadersStoreWGSL[WN]||(x.ShadersStoreWGSL[WN]=o9);o_e={name:WN,shader:o9}});var f9,l_e,d9=I(()=>{k();RO();$R();f9="openpbrVertexDeclaration",l_e=`#include #ifdef BASE_COLOR uniform vec2 vBaseColorInfos;uniform mat4 baseColorMatrix; #endif @@ -15215,7 +15215,7 @@ varying mat3 vTBN; vec3 tbnNormal=normalize(normalUpdated);vec3 tbnTangent=normalize(tangentUpdated.xyz);vec3 tbnBitangent=cross(tbnNormal,tbnTangent)*tangentUpdated.w;vTBN=mat3(finalWorld)*mat3(tbnTangent,tbnBitangent,tbnNormal); #endif #endif -`;x.IncludesShadersStore[p9]||(x.IncludesShadersStore[p9]=d_e)});var v9={};Fe(v9,{openpbrVertexShader:()=>h_e});var zN,g9,h_e,E9=I(()=>{k();d9();HN();$R();Dp();za();Up();Dc();Lc();td();JR();eb();Vp();m9();Oc();Sv();tb();ib();od();ld();Fh();cd();fd();Nc();wc();Fc();rb();nb();sb();_9();Bc();Tv();ob();Av();lb();zN="openpbrVertexShader",g9=`#define OPENPBR_VERTEX_SHADER +`;x.IncludesShadersStore[p9]||(x.IncludesShadersStore[p9]=d_e)});var v9={};Fe(v9,{openpbrVertexShader:()=>h_e});var zN,g9,h_e,E9=I(()=>{k();d9();HN();JR();Dp();za();Up();Dc();Lc();td();eb();tb();Vp();m9();Oc();Sv();ib();rb();od();ld();Fh();cd();fd();Nc();wc();Fc();nb();sb();ab();_9();Bc();Tv();lb();Av();cb();zN="openpbrVertexShader",g9=`#define OPENPBR_VERTEX_SHADER #define CUSTOM_VERTEX_EXTENSION precision highp float; #include<__decl__openpbrVertex> @@ -15436,7 +15436,7 @@ gl_PointSize=pointSize; #include #define CUSTOM_VERTEX_MAIN_END } -`;x.ShadersStore[zN]||(x.ShadersStore[zN]=g9);h_e={name:zN,shader:g9}});var S9,u_e,T9=I(()=>{k();fN();cb();S9="openpbrFragmentDeclaration",u_e=`uniform float vBaseWeight;uniform vec4 vBaseColor;uniform float vBaseDiffuseRoughness;uniform vec4 vReflectanceInfo;uniform vec4 vSpecularColor;uniform vec3 vSpecularAnisotropy;uniform float vTransmissionWeight;uniform vec3 vTransmissionColor;uniform float vTransmissionDepth;uniform vec3 vTransmissionScatter;uniform float vTransmissionScatterAnisotropy;uniform float vTransmissionDispersionScale;uniform float vTransmissionDispersionAbbeNumber;uniform float vSubsurfaceWeight;uniform vec3 vSubsurfaceColor;uniform float vSubsurfaceRadius;uniform vec3 vSubsurfaceRadiusScale;uniform float vSubsurfaceScatterAnisotropy;uniform float vCoatWeight;uniform vec3 vCoatColor;uniform float vCoatRoughness;uniform float vCoatRoughnessAnisotropy;uniform float vCoatIor;uniform float vCoatDarkening;uniform float vFuzzWeight;uniform vec3 vFuzzColor;uniform float vFuzzRoughness;uniform vec2 vGeometryCoatTangent;uniform float vGeometryThickness;uniform vec3 vEmissionColor;uniform float vThinFilmWeight;uniform vec2 vThinFilmThickness;uniform float vThinFilmIor;uniform float vGeometryThinWalled;uniform vec4 vLightingIntensity;uniform float visibility;uniform vec2 renderTargetSize; +`;x.ShadersStore[zN]||(x.ShadersStore[zN]=g9);h_e={name:zN,shader:g9}});var S9,u_e,T9=I(()=>{k();fN();fb();S9="openpbrFragmentDeclaration",u_e=`uniform float vBaseWeight;uniform vec4 vBaseColor;uniform float vBaseDiffuseRoughness;uniform vec4 vReflectanceInfo;uniform vec4 vSpecularColor;uniform vec3 vSpecularAnisotropy;uniform float vTransmissionWeight;uniform vec3 vTransmissionColor;uniform float vTransmissionDepth;uniform vec3 vTransmissionScatter;uniform float vTransmissionScatterAnisotropy;uniform float vTransmissionDispersionScale;uniform float vTransmissionDispersionAbbeNumber;uniform float vSubsurfaceWeight;uniform vec3 vSubsurfaceColor;uniform float vSubsurfaceRadius;uniform vec3 vSubsurfaceRadiusScale;uniform float vSubsurfaceScatterAnisotropy;uniform float vCoatWeight;uniform vec3 vCoatColor;uniform float vCoatRoughness;uniform float vCoatRoughnessAnisotropy;uniform float vCoatIor;uniform float vCoatDarkening;uniform float vFuzzWeight;uniform vec3 vFuzzColor;uniform float vFuzzRoughness;uniform vec2 vGeometryCoatTangent;uniform float vGeometryThickness;uniform vec3 vEmissionColor;uniform float vThinFilmWeight;uniform vec2 vThinFilmThickness;uniform float vThinFilmIor;uniform float vGeometryThinWalled;uniform vec4 vLightingIntensity;uniform float visibility;uniform vec2 renderTargetSize; #ifdef BASE_COLOR uniform vec2 vBaseColorInfos; #endif @@ -15602,7 +15602,7 @@ varying vec4 vColor; #if defined(CLUSTLIGHT_BATCH) && CLUSTLIGHT_BATCH>0 varying float vViewDepth; #endif -`;x.IncludesShadersStore[A9]||(x.IncludesShadersStore[A9]=m_e)});var x9,p_e,R9=I(()=>{k();Bh();Zb();x9="openpbrFragmentSamplersDeclaration",p_e=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) +`;x.IncludesShadersStore[A9]||(x.IncludesShadersStore[A9]=m_e)});var x9,p_e,R9=I(()=>{k();Bh();qb();x9="openpbrFragmentSamplersDeclaration",p_e=`#include(_DEFINENAME_,BASE_COLOR,_VARYINGNAME_,BaseColor,_SAMPLERNAME_,baseColor) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,BASE_METALNESS,_VARYINGNAME_,BaseMetalness,_SAMPLERNAME_,baseMetalness) @@ -17281,7 +17281,7 @@ return; #endif } #endif -`;x.IncludesShadersStore[mK]||(x.IncludesShadersStore[mK]=W_e)});var _K={};Fe(_K,{openpbrPixelShader:()=>H_e});var iw,pK,H_e,gK=I(()=>{k();fb();db();T9();HN();XN();hb();ub();R9();pb();Uc();Fh();xv();za();YN();KN();jN();_b();mb();Vp();ZN();qN();Up();QN();$N();qb();O9();w9();Ov();dN();B9();V9();hN();uN();k9();Vc();JN();z9();Y9();j9();pN();mN();q9();$9();eK();iK();Sb();nK();aK();lK();fK();Tb();Rv();ew();uK();Ab();tw();iw="openpbrPixelShader",pK=`#define OPENPBR_FRAGMENT_SHADER +`;x.IncludesShadersStore[mK]||(x.IncludesShadersStore[mK]=W_e)});var _K={};Fe(_K,{openpbrPixelShader:()=>H_e});var iw,pK,H_e,gK=I(()=>{k();db();hb();T9();HN();XN();ub();mb();R9();_b();Uc();Fh();xv();za();YN();KN();jN();gb();pb();Vp();ZN();qN();Up();QN();$N();Qb();O9();w9();Ov();dN();B9();V9();hN();uN();k9();Vc();JN();z9();Y9();j9();pN();mN();q9();$9();eK();iK();Tb();nK();aK();lK();fK();Ab();Rv();ew();uK();xb();tw();iw="openpbrPixelShader",pK=`#define OPENPBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_EXTENSION #if defined(GEOMETRY_NORMAL) || defined(GEOMETRY_COAT_NORMAL) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) #extension GL_OES_standard_derivatives : enable @@ -17516,11 +17516,11 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaM #include #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStore[iw]||(x.ShadersStore[iw]=pK);H_e={name:iw,shader:pK}});var vK={};Fe(vK,{OpenPBRMaterial:()=>Ne,OpenPBRMaterialDefines:()=>Xv});var Wp,Jb,ai,Mi,rw,nw,Xv,sw,Ne,EK=I(()=>{Wt();kt();Kb();zt();Kg();Xr();$i();ts();Dr();ja();AR();Qf();Ml();mv();es();Zi();xR();TR();Ya();Lt();RR();bR();S6();ke();MR();uv();Mo();wi();n7();Wp={effect:null,subMesh:null},Jb=class n{populateVectorFromLinkedProperties(e){let t=e.dimension[0];for(let i in this.linkedProperties){let r=this.linkedProperties[i],s=r.numComponents;if(tt-s){s==1?ee.Error(`Float property ${r.name} has an offset that is too large.`):ee.Error(`Vector${s} property ${r.name} won't fit in Vector${t} or has an offset that is too large.`);return}typeof r.value=="number"?n._tmpArray[r.targetUniformComponentOffset]=r.value:r.value.toArray(n._tmpArray,r.targetUniformComponentOffset)}e.fromArray(n._tmpArray)}constructor(e,t){this.linkedProperties={},this.firstLinkedKey="",this.name=e,this.numComponents=t}};Jb._tmpArray=[0,0,0,0];ai=class{constructor(e,t,i,r,s=0,a){this.targetUniformComponentNum=4,this.targetUniformComponentOffset=0,this.name=e,this.targetUniformName=i,this.defaultValue=t,this.value=t,this.targetUniformComponentNum=r,this.targetUniformComponentOffset=s,this.requiredDefine=a}get numComponents(){return typeof this.defaultValue=="number"?1:this.defaultValue.dimension[0]}},Mi=class{get samplerName(){return this.samplerPrefix+"Sampler"}get samplerInfoName(){return"v"+this.samplerPrefix.charAt(0).toUpperCase()+this.samplerPrefix.slice(1)+"Infos"}get samplerMatrixName(){return this.samplerPrefix+"Matrix"}constructor(e,t,i){this.value=null,this.samplerPrefix="",this.textureDefine="",this.name=e,this.samplerPrefix=t,this.textureDefine=i}},rw=class extends yp(Ip(Lr)){},nw=class extends E6(rw){},Xv=class extends bp(nw){constructor(e){super(e),this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.LIGHTCOUNT=0,this.VERTEXCOLOR=!1,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.VERTEXALPHA=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHA_FROM_BASE_COLOR_TEXTURE=!1,this.ALPHATESTVALUE="0.5",this.PREMULTIPLYALPHA=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.LODBASEDMICROSFURACE=!0,this.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=!1,this.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.SPECULAR_WEIGHT_IN_ALPHA=!1,this.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=!1,this.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=!1,this.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.USE_GLTF_STYLE_ANISOTROPY=!1,this.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=!1,this.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=!1,this.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=!1,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.FUZZENVIRONMENTBRDF=!1,this.NORMAL=!1,this.TANGENT=!1,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.ANISOTROPIC=!1,this.ANISOTROPIC_OPENPBR=!0,this.ANISOTROPIC_BASE=!1,this.ANISOTROPIC_COAT=!1,this.FUZZ_IBL_SAMPLES=6,this.REFRACTION_HIGH_QUALITY_BLUR=!1,this.FUZZ=!1,this.THIN_FILM=!1,this.IRIDESCENCE=!1,this.DISPERSION=!1,this.SCATTERING=!1,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!1,this.SSS_SAMPLE_COUNT=16,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!1,this.TRANSMISSION_SLAB=!1,this.TRANSMISSION_SLAB_VOLUME=!1,this.SUBSURFACE_SLAB=!1,this.GEOMETRY_THIN_WALLED=!1,this.REFRACTED_BACKGROUND=!1,this.REFRACTED_LIGHTS=!1,this.REFRACTED_ENVIRONMENT=!1,this.REFRACTED_ENVIRONMENT_OPPOSITEZ=!1,this.REFRACTED_ENVIRONMENT_LOCAL_CUBE=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.BRDF_V_HEIGHT_CORRELATED=!0,this.MS_BRDF_ENERGY_CONSERVATION=!0,this.SPHERICAL_HARMONICS=!0,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!0,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=1,this.CONDUCTOR_SPECULAR_MODEL=1,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.NORMALXYSCALE=!0}},sw=class extends Cp(Pl){},Ne=class n extends sw{get geometryTangentAngle(){return Math.atan2(this.geometryTangent.y,this.geometryTangent.x)}set geometryTangentAngle(e){this.geometryTangent=new we(Math.cos(e),Math.sin(e))}get geometryCoatTangentAngle(){return Math.atan2(this.geometryCoatTangent.y,this.geometryCoatTangent.x)}set geometryCoatTangentAngle(e){this.geometryCoatTangent=new we(Math.cos(e),Math.sin(e))}get sssQuality(){return this._sssQuality}set sssQuality(e){this._sssQuality!==e&&(this._sssQuality=e,this.markAsDirty(1))}get sssIrradianceTexture(){return this._sssIrradianceTexture}set sssIrradianceTexture(e){this._sssIrradianceTexture!==e&&(this._sssIrradianceTexture=e,this._markAllSubMeshesAsTexturesDirty())}get sssDepthTexture(){return this._sssDepthTexture}set sssDepthTexture(e){this._sssDepthTexture!==e&&(this._sssDepthTexture=e,this._markAllSubMeshesAsTexturesDirty())}get hasTransparency(){return this.subsurfaceWeight>0||this.transmissionWeight>0}get hasScattering(){return this.transmissionWeight>0&&this.transmissionDepth>0&&!this.transmissionScatter.equals(Ee.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_GLTF:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get backgroundRefractionTexture(){return this._backgroundRefractionTexture}set backgroundRefractionTexture(e){this._backgroundRefractionTexture=e,this._markAllSubMeshesAsTexturesDirty()}get refractionHighQualityBlur(){return this._refractionHighQualityBlur}set refractionHighQualityBlur(e){this._refractionHighQualityBlur!==e&&(this._refractionHighQualityBlur=e,this.markAsDirty(1))}get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get fuzzSampleNumber(){return this._fuzzSampleNumber}set fuzzSampleNumber(e){this._fuzzSampleNumber=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){var s;super(e,t,void 0,i||n.ForceGLSL),this._baseWeight=new ai("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Mi("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new ai("base_color",Ee.White(),"vBaseColor",4),this._baseColorTexture=new Mi("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new ai("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Mi("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new ai("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Mi("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new ai("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Mi("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new ai("specular_color",Ee.White(),"vSpecularColor",4),this._specularColorTexture=new Mi("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new ai("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Mi("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new ai("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Mi("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new ai("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new ai("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Mi("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new ai("transmission_color",Ee.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Mi("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new ai("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Mi("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new ai("transmission_scatter",Ee.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Mi("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new ai("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new ai("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Mi("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new ai("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new ai("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Mi("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new ai("subsurface_color",new Ee(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Mi("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new ai("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new ai("subsurface_radius_scale",new Ee(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Mi("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new ai("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new ai("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Mi("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new ai("coat_color",Ee.White(),"vCoatColor",3,0),this._coatColorTexture=new Mi("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new ai("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Mi("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new ai("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Mi("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new ai("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new ai("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Mi("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new ai("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Mi("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new ai("fuzz_color",Ee.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Mi("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new ai("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Mi("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new ai("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Mi("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new ai("geometry_tangent",new we(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Mi("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Mi("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new ai("geometry_coat_tangent",new we(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Mi("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new ai("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Mi("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new ai("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Mi("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new ai("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new ai("emission_color",Ee.Black(),"vEmissionColor",3),this._emissionColorTexture=new Mi("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new ai("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Mi("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new ai("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new ai("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Mi("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new ai("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Mi("ambient_occlusion","ambientOcclusion","AMBIENT_OCCLUSION"),this._sssQuality=n.SSS_QUALITY_MEDIUM,this._sssIrradianceTexture=null,this._sssDepthTexture=null,this._uniformsList={},this._uniformsArray=[],this._samplersList={},this._samplerDefines={},this.directIntensity=1,this.environmentIntensity=1,this.useSpecularWeightFromTextureAlpha=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._lightingInfos=new Ni(this.directIntensity,1,this.environmentIntensity,1),this._radianceTexture=null,this._useSpecularWeightFromAlpha=!1,this._useSpecularWeightFromSpecularColorTexture=!1,this._useSpecularRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessFromGreenChannel=!1,this._useGltfStyleAnisotropy=!1,this._useFuzzRoughnessFromTextureAlpha=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromBaseColorTexture=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallicFromMetallicTextureBlue=!1,this._useThinFilmThicknessFromTextureGreen=!1,this._useGeometryThicknessFromGreenChannel=!1,this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._environmentFuzzBRDFTexture=null,this._backgroundRefractionTexture=null,this._refractionHighQualityBlur=!0,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._fuzzSampleNumber=4,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Xi(16),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this._transparencyMode=Se.MATERIAL_OPAQUE,this.getScene()&&!((s=this.getScene())!=null&&s.getEngine().isWebGPU)&&this.getScene().getEngine().webGLVersion<2&&ee.Error("OpenPBRMaterial: WebGL 2.0 or above is required for this material."),n._noiseTextures[this.getScene().uniqueId]||(n._noiseTextures[this.getScene().uniqueId]=new _e(pe.GetAssetUrl("https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png"),this.getScene(),!1,!0,1),this.getScene().onDisposeObservable.addOnce(()=>{var a;(a=n._noiseTextures[this.getScene().uniqueId])==null||a.dispose(),delete n._noiseTextures[this.getScene().uniqueId]})),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=v6(this.getScene()),this._environmentFuzzBRDFTexture=lN(this.getScene()),this.prePassConfiguration=new $s,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof ai&&(this._propertyList[a]=o)}Object.keys(this._propertyList).forEach(a=>{let o=this._propertyList[a],l=this._uniformsList[o.targetUniformName];l?l.numComponents!==o.targetUniformComponentNum?ee.Error(`Uniform ${o.targetUniformName} already exists of size ${l.numComponents}, but trying to set it to ${o.targetUniformComponentNum}.`):l.requiredDefine!==o.requiredDefine&&(l.requiredDefine=void 0):(l=new Jb(o.targetUniformName,o.targetUniformComponentNum),l.requiredDefine=o.requiredDefine,this._uniformsList[o.targetUniformName]=l),l.firstLinkedKey===""&&(l.firstLinkedKey=o.name),l.linkedProperties[o.name]=o}),this._uniformsArray=Object.values(this._uniformsList),this._samplersList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof Mi&&(this._samplersList[a]=o)}for(let a in this._samplersList){let l=this._samplersList[a].textureDefine;this._samplerDefines[l]={type:"boolean",default:!1},this._samplerDefines[l+"DIRECTUV"]={type:"number",default:0},this._samplerDefines[l+"_GAMMA"]={type:"boolean",default:!1}}this._baseWeight,this._baseWeightTexture,this._baseColor,this._baseColorTexture,this._baseDiffuseRoughness,this._baseDiffuseRoughnessTexture,this._baseMetalness,this._baseMetalnessTexture,this._specularWeight,this._specularWeightTexture,this._specularColor,this._specularColorTexture,this._specularRoughness,this._specularIor,this._specularRoughnessTexture,this._specularRoughnessAnisotropy,this._specularRoughnessAnisotropyTexture,this._transmissionWeight,this._transmissionWeightTexture,this._transmissionColor,this._transmissionColorTexture,this._transmissionDepth,this._transmissionDepthTexture,this._transmissionScatter,this._transmissionScatterTexture,this._transmissionScatterAnisotropy,this._transmissionDispersionScale,this._transmissionDispersionScaleTexture,this._transmissionDispersionAbbeNumber,this._subsurfaceWeight,this._subsurfaceWeightTexture,this._subsurfaceColor,this._subsurfaceColorTexture,this._subsurfaceRadius,this._subsurfaceRadiusScale,this._subsurfaceRadiusScaleTexture,this._subsurfaceScatterAnisotropy,this._coatWeight,this._coatWeightTexture,this._coatColor,this._coatColorTexture,this._coatRoughness,this._coatRoughnessTexture,this._coatRoughnessAnisotropy,this._coatRoughnessAnisotropyTexture,this._coatIor,this._coatDarkening,this._coatDarkeningTexture,this._fuzzWeight,this._fuzzWeightTexture,this._fuzzColor,this._fuzzColorTexture,this._fuzzRoughness,this._fuzzRoughnessTexture,this._geometryThinWalled,this._geometryNormalTexture,this._geometryTangent,this._geometryTangentTexture,this._geometryCoatNormalTexture,this._geometryCoatTangent,this._geometryCoatTangentTexture,this._geometryOpacity,this._geometryOpacityTexture,this._geometryThickness,this._geometryThicknessTexture,this._thinFilmWeight,this._thinFilmWeightTexture,this._thinFilmThickness,this._thinFilmThicknessMin,this._thinFilmThicknessTexture,this._thinFilmIor,this._emissionLuminance,this._emissionColor,this._emissionColorTexture,this._ambientOcclusionTexture}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"OpenPBRMaterial"}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}_shouldUseAlphaFromBaseColorTexture(){return this._hasAlphaChannel()&&this._transparencyMode!==Se.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.OpenPBRMaterial",e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new Xv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Wp.effect=o,Wp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Wp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new Xv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){for(let m in this._samplersList){let _=this._samplersList[m];if(_.value&&!_.value.isReadyOrNotBlocking())return!1}let u=this._getRadianceTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&ce.RefractionTextureEnabled&&!this._backgroundRefractionTexture.isReadyOrNotBlocking()||n._noiseTextures[a.uniqueId]&&!n._noiseTextures[a.uniqueId].isReady()||this._sssIrradianceTexture&&this._sssDepthTexture&&(!this._sssIrradianceTexture.isReady()||!this._sssDepthTexture.isReady()))return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED){for(let u=0;u{e.addUniform(t.name,t.numComponents)}),Object.values(this._samplersList).forEach(t=>{e.addUniform(t.samplerInfoName,2),e.addUniform(t.samplerMatrixName,16)}),super.buildUniformLayout()}bindPropertiesForSubMesh(e,t,i,r){if(this.geometryThickness===0)e.updateFloat("vGeometryThickness",0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat("vGeometryThickness",this.geometryThickness*s)}}bindForSubMesh(e,t,i){var d;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);js(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Jf(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let h=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value&&(f.updateFloat2(_.samplerInfoName,_.value.coordinatesIndex,_.value.level),si(_.value,f,_.samplerPrefix))}(this.geometryNormalTexture||this.geometryCoatNormalTexture)&&(r._mirroredCameraPosition?f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),ep(r,s,f,Ee.White(),h,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let u=this._uniformsArray;for(let m=0,_=u.length;m<_;m++){let p=u[m];p.requiredDefine!==void 0&&!s[p.requiredDefine]||(p.numComponents===4?(p.populateVectorFromLinkedProperties($.Vector4[0]),f.updateVector4(p.name,$.Vector4[0])):p.numComponents===3?(p.populateVectorFromLinkedProperties($.Vector3[0]),f.updateVector3(p.name,$.Vector3[0])):p.numComponents===2?(p.populateVectorFromLinkedProperties($.Vector2[0]),f.updateFloat2(p.name,$.Vector2[0].x,$.Vector2[0].y)):p.numComponents===1&&f.updateFloat(p.name,p.linkedProperties[p.firstLinkedKey].value))}this._lightingInfos.x=this.directIntensity,this._lightingInfos.y=this.emissionLuminance,this._lightingInfos.z=this.environmentIntensity*r.environmentIntensity,this._lightingInfos.w=1,f.updateVector4("vLightingIntensity",this._lightingInfos),f.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}if(r.texturesEnabled){for(let u in this._samplersList){let m=this._samplersList[u];m.value&&f.setTexture(m.samplerName,m.value)}if(sR(r,s,f,h,this.realTimeFiltering),s.ENVIRONMENTBRDF&&f.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),s.FUZZENVIRONMENTBRDF&&f.setTexture("environmentFuzzBrdfSampler",this._environmentFuzzBRDFTexture),s.REFRACTED_BACKGROUND&&(f.setTexture("backgroundRefractionSampler",this._backgroundRefractionTexture),f.updateMatrix("backgroundRefractionMatrix",this._backgroundRefractionTexture.getReflectionTextureMatrix()),$.Vector3[1].set(Math.log2(this._backgroundRefractionTexture.getSize().width),0,0),f.updateVector3("vBackgroundRefractionInfos",$.Vector3[1])),(s.ANISOTROPIC||s.FUZZ||s.REFRACTED_BACKGROUND||s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&f.setTexture("blueNoiseSampler",n._noiseTextures[this.getScene().uniqueId]),s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&this.sssIrradianceTexture&&this.sssDepthTexture){let u=this.sssIrradianceTexture.getSize().width,m=this.sssIrradianceTexture.getSize().height;f.setTexture("sceneIrradianceSampler",this.sssIrradianceTexture),f.setTexture("sceneDepthSampler",this.sssDepthTexture),f.updateFloat2("renderTargetSize",u,m)}}this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);this.bindPropertiesForSubMesh(this._uniformBuffer,r,r.getEngine(),i),(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,this._activeEffect,s,this._maxSimultaneousLights),this.bindView(a),kf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((d=t.bakedVertexAnimationManager)==null||d.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Gf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),f.update()}getAnimatables(){let e=super.getAnimatables();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&i.value.animations&&i.value.animations.length>0&&e.push(i.value)}return this._radianceTexture&&this._radianceTexture.animations&&this._radianceTexture.animations.length>0&&e.push(this._radianceTexture),e}getActiveTextures(){let e=super.getActiveTextures();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&e.push(i.value)}return this._radianceTexture&&e.push(this._radianceTexture),e}hasTexture(e){if(super.hasTexture(e))return!0;for(let t in this._samplersList)if(this._samplersList[t].value===e)return!0;return this._radianceTexture===e}setPrePassRenderer(){return!1}dispose(e,t){var i,r;if(this._breakShaderLoadedCheck=!0,t){this._environmentBRDFTexture&&this.getScene().openPBREnvironmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),this._environmentFuzzBRDFTexture&&this.getScene().environmentFuzzBRDFTexture!==this._environmentFuzzBRDFTexture&&this._environmentFuzzBRDFTexture.dispose(),this._backgroundRefractionTexture=null;for(let s in this._samplersList)(i=this._samplersList[s].value)==null||i.dispose();(r=this._radianceTexture)==null||r.dispose()}this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}_getRadianceTexture(){return this._radianceTexture?this._radianceTexture:this.getScene().environmentTexture}_prepareEffect(e,t,i,r=null,s=null,a=null,o=null){if(this._prepareDefines(e,t,i,a,o),!i.isDirty)return null;i.markAsProcessed();let c=this.getScene().getEngine(),f=new ns,d=0;i.USESPHERICALINVERTEX&&f.addFallback(d++,"USESPHERICALINVERTEX"),i.FOG&&f.addFallback(d,"FOG"),i.SPECULARAA&&f.addFallback(d,"SPECULARAA"),i.POINTSIZE&&f.addFallback(d,"POINTSIZE"),i.LOGARITHMICDEPTH&&f.addFallback(d,"LOGARITHMICDEPTH"),i.PARALLAX&&f.addFallback(d,"PARALLAX"),i.PARALLAX_RHS&&f.addFallback(d,"PARALLAX_RHS"),i.PARALLAXOCCLUSION&&f.addFallback(d++,"PARALLAXOCCLUSION"),i.ENVIRONMENTBRDF&&f.addFallback(d++,"ENVIRONMENTBRDF"),i.TANGENT&&f.addFallback(d++,"TANGENT"),d=sp(i,f,this._maxSimultaneousLights,d),i.SPECULARTERM&&f.addFallback(d++,"SPECULARTERM"),i.USESPHERICALFROMREFLECTIONMAP&&f.addFallback(d++,"USESPHERICALFROMREFLECTIONMAP"),i.USEIRRADIANCEMAP&&f.addFallback(d++,"USEIRRADIANCEMAP"),i.NORMAL&&f.addFallback(d++,"NORMAL"),i.VERTEXCOLOR&&f.addFallback(d++,"VERTEXCOLOR"),i.MORPHTARGETS&&f.addFallback(d++,"MORPHTARGETS"),i.MULTIVIEW&&f.addFallback(0,"MULTIVIEW");let h=[L.PositionKind];i.NORMAL&&h.push(L.NormalKind),i.TANGENT&&h.push(L.TangentKind);for(let E=1;E<=6;++E)i["UV"+E]&&h.push(`uv${E===1?"":E}`);i.VERTEXCOLOR&&h.push(L.ColorKind),rp(h,e,i,f),np(h,i),Ch(h,e,i),tp(h,e,i);let u="openpbr",m=["world","view","viewProjection","projection","vEyePosition","inverseProjection","renderTargetSize","vLightsType","visibility","vFogInfos","vFogColor","pointSize","mBones","normalMatrix","vLightingIntensity","logarithmicDepthConstant","vTangentSpaceParams","boneTextureInfo","vDebugMode","morphTargetTextureInfo","morphTargetTextureIndices","cameraInfo","backgroundRefractionMatrix","vBackgroundRefractionInfos"];for(let E in this._uniformsList)m.push(E);let _=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&_.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&_.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&_.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(_.push("sceneIrradianceSampler"),_.push("sceneDepthSampler"));for(let E in this._samplersList){let A=this._samplersList[E];_.push(A.samplerName),m.push(A.samplerInfoName),m.push(A.samplerMatrixName)}zf(m,_,!0);let p=["Material","Scene","Mesh"],g={maxSimultaneousLights:this._maxSimultaneousLights,maxSimultaneousMorphTargets:i.NUM_MORPH_INFLUENCERS};if(this._eventInfo.fallbacks=f,this._eventInfo.fallbackRank=d,this._eventInfo.defines=i,this._eventInfo.uniforms=m,this._eventInfo.attributes=h,this._eventInfo.samplers=_,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=g,this._callbackPluginEventGeneric(128,this._eventInfo),ss.AddUniformsAndSamplers(m,_),$s.AddUniforms(m),$s.AddSamplers(_),Qn(m),this._useVertexPulling){let E=t==null?void 0:t.geometry;E&&(this._vertexPullingMetadata=$f(E),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((A,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Ht&&(Ht.PrepareUniforms(m,i),Ht.PrepareSamplers(_,i)),mp({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let T=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(h7(),d7)),Promise.resolve().then(()=>(c9(),l9))]):await Promise.all([Promise.resolve().then(()=>(E9(),v9)),Promise.resolve().then(()=>(gK(),_K))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();lp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,dp(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(o,i,this.canRenderToMRT&&!c),hp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let h=1;h<=6;++h)i["MAINUV"+h]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value?(ni(_.value,i,_.textureDefine),i[_.textureDefine+"_GAMMA"]=_.value.gammaSpace):i[_.textureDefine]=!1}let h=this._getRadianceTexture(),u=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(Hf(o,h,i,this.realTimeFiltering,this.realTimeFilteringQuality,!u),this._baseMetalnessTexture&&(i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed),i.SPECULAR_WEIGHT_IN_ALPHA=this._useSpecularWeightFromAlpha,i.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=this._useSpecularWeightFromSpecularColorTexture,i.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useSpecularRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useCoatRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=this._useCoatRoughnessFromGreenChannel,i.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=this._useRoughnessFromMetallicTextureGreen,i.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=this._useFuzzRoughnessFromTextureAlpha,i.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=this._useMetallicFromMetallicTextureBlue,i.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=this._useThinFilmThicknessFromTextureGreen,i.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=this._useGeometryThicknessFromGreenChannel,this.geometryNormalTexture?(this._useParallax&&this.baseColorTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._environmentFuzzBRDFTexture?i.FUZZENVIRONMENTBRDF=!0:i.FUZZENVIRONMENTBRDF=!1,this.hasTransparency){i.REFRACTED_BACKGROUND=!!this._backgroundRefractionTexture&&ce.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=ce.RefractionTextureEnabled,i.REFRACTED_ENVIRONMENT_OPPOSITEZ=this.getScene().useRightHandedSystem?!m.invertZ:m.invertZ,i.REFRACTED_ENVIRONMENT_LOCAL_CUBE=m.isCube&&m.boundingBoxSize):i.REFRACTED_ENVIRONMENT=!1}else i.REFRACTED_BACKGROUND=!1,i.REFRACTED_LIGHTS=!1,i.REFRACTED_ENVIRONMENT=!1;this._shouldUseAlphaFromBaseColorTexture()?i.ALPHA_FROM_BASE_COLOR_TEXTURE=!0:i.ALPHA_FROM_BASE_COLOR_TEXTURE=!1}this._lightFalloff===Se.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Se.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e)),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,(this.specularRoughnessAnisotropy>0||this.coatRoughnessAnisotropy>0)&&n._noiseTextures[o.uniqueId]&&ce.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._useGltfStyleAnisotropy&&(i.USE_GLTF_STYLE_ANISOTROPY=!0),i.ANISOTROPIC_BASE=this.specularRoughnessAnisotropy>0,i.ANISOTROPIC_COAT=this.coatRoughnessAnisotropy>0):(i.ANISOTROPIC=!1,i.USE_GLTF_STYLE_ANISOTROPY=!1,i.ANISOTROPIC_BASE=!1,i.ANISOTROPIC_COAT=!1),i.THIN_FILM=this.thinFilmWeight>0,i.IRIDESCENCE=this.thinFilmWeight>0,i.DISPERSION=this.transmissionDispersionScale>0,i.SCATTERING=this.hasScattering;let f=[8,16,32];if(i.SSS_SAMPLE_COUNT=(d=f[this._sssQuality])!=null?d:16,i.TRANSMISSION_SLAB=this.transmissionWeight>0,i.TRANSMISSION_SLAB_VOLUME=this.transmissionWeight>0&&this.transmissionDepth>0,i.SUBSURFACE_SLAB=this.subsurfaceWeight>0,!i.PREPASS&&(i.SUBSURFACE_SLAB||i.TRANSMISSION_SLAB_VOLUME)){let h=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(Ms.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(Ms.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,h&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&ce.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=lN(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(ap(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(L.NormalKind),i.DEBUGMODE=this._debugMode),cp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),fp(e,i,!0,!0,!0,this._transparencyMode!==Se.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};Ne.SSS_QUALITY_LOW=0;Ne.SSS_QUALITY_MEDIUM=1;Ne.SSS_QUALITY_HIGH=2;Ne._noiseTextures={};Ne.ForceGLSL=!1;P([_t("_markAllSubMeshesAsTexturesDirty","baseWeight")],Ne.prototype,"_baseWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],Ne.prototype,"_baseWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseColor")],Ne.prototype,"_baseColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],Ne.prototype,"_baseColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],Ne.prototype,"_baseDiffuseRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],Ne.prototype,"_baseDiffuseRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseMetalness")],Ne.prototype,"_baseMetalness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],Ne.prototype,"_baseMetalnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularWeight")],Ne.prototype,"_specularWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],Ne.prototype,"_specularWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularColor")],Ne.prototype,"_specularColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],Ne.prototype,"_specularColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughness")],Ne.prototype,"_specularRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],Ne.prototype,"_specularRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],Ne.prototype,"_specularRoughnessAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],Ne.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularIor")],Ne.prototype,"_specularIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],Ne.prototype,"_transmissionWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],Ne.prototype,"_transmissionWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionColor")],Ne.prototype,"_transmissionColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],Ne.prototype,"_transmissionColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],Ne.prototype,"_transmissionDepth",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],Ne.prototype,"_transmissionDepthTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],Ne.prototype,"_transmissionScatter",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],Ne.prototype,"_transmissionScatterTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],Ne.prototype,"_transmissionScatterAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],Ne.prototype,"_transmissionDispersionScale",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],Ne.prototype,"_transmissionDispersionScaleTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],Ne.prototype,"_transmissionDispersionAbbeNumber",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],Ne.prototype,"_subsurfaceWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],Ne.prototype,"_subsurfaceWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],Ne.prototype,"_subsurfaceColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],Ne.prototype,"_subsurfaceColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],Ne.prototype,"_subsurfaceRadius",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],Ne.prototype,"_subsurfaceRadiusScale",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],Ne.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],Ne.prototype,"_subsurfaceScatterAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatWeight")],Ne.prototype,"_coatWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],Ne.prototype,"_coatWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatColor")],Ne.prototype,"_coatColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],Ne.prototype,"_coatColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughness")],Ne.prototype,"_coatRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],Ne.prototype,"_coatRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],Ne.prototype,"_coatRoughnessAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],Ne.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatIor")],Ne.prototype,"_coatIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatDarkening")],Ne.prototype,"_coatDarkening",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],Ne.prototype,"_coatDarkeningTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],Ne.prototype,"_fuzzWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],Ne.prototype,"_fuzzWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzColor")],Ne.prototype,"_fuzzColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],Ne.prototype,"_fuzzColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],Ne.prototype,"_fuzzRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],Ne.prototype,"_fuzzRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],Ne.prototype,"_geometryThinWalled",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],Ne.prototype,"_geometryNormalTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryTangent")],Ne.prototype,"_geometryTangent",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],Ne.prototype,"_geometryTangentTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],Ne.prototype,"_geometryCoatNormalTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],Ne.prototype,"_geometryCoatTangent",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],Ne.prototype,"_geometryCoatTangentTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],Ne.prototype,"_geometryOpacity",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],Ne.prototype,"_geometryOpacityTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThickness")],Ne.prototype,"_geometryThickness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],Ne.prototype,"_geometryThicknessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],Ne.prototype,"_emissionLuminance",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionColor")],Ne.prototype,"_emissionColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],Ne.prototype,"_emissionColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],Ne.prototype,"_thinFilmWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],Ne.prototype,"_thinFilmWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],Ne.prototype,"_thinFilmThickness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],Ne.prototype,"_thinFilmThicknessMin",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],Ne.prototype,"_thinFilmThicknessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],Ne.prototype,"_thinFilmIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],Ne.prototype,"_ambientOcclusionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientInGrayScale",void 0);P([F()],Ne.prototype,"usePhysicalLightFalloff",null);P([F()],Ne.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"debugMode",void 0);P([F()],Ne.prototype,"transparencyMode",null);Ut("BABYLON.OpenPBRMaterial",Ne)});var SK={};Fe(SK,{OpenPBRMaterialLoadingAdapter:()=>aw});var aw,TK=I(()=>{zt();aw=class{constructor(e){this._diffuseTransmissionTint=Ee.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){}get alphaCutOff(){return .5}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return!1}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){let t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var t;let e=this._material.ambientOcclusionTexture;return(t=e==null?void 0:e.level)!=null?t:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}set coatDarkening(e){this._material.coatDarkening=e}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||this._material.transmissionDepth!==0?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(Ee.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalize(){(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(Ee.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.White())||this.baseColorTexture)&&(this._material.coatWeight=this.subsurfaceWeight,this._material.coatWeightTexture=this.subsurfaceWeightTexture,this._material.coatColor=this._diffuseTransmissionTint,this._material.coatColorTexture=this._diffuseTransmissionTintTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture,this._material.specularRoughness=1,this._material.specularRoughnessTexture=null)),this.transmissionWeight>0&&(this._material.geometryThinWalled||this._material.transmissionDepth===0?(this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.White())||this.baseColorTexture!==null)&&(this._material.coatWeight=this.transmissionWeight,this._material.coatWeightTexture=this.transmissionWeightTexture,this._material.coatColor=this.baseColor,this._material.coatColorTexture=this.baseColorTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture))}}});var ow,Fr,AK=I(()=>{Wt();kt();ja();id();ow=class extends Lr{constructor(){super(...arguments),this.BRDF_V_HEIGHT_CORRELATED=!1,this.MS_BRDF_ENERGY_CONSERVATION=!1,this.SPHERICAL_HARMONICS=!1,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!1,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=0,this.CONDUCTOR_SPECULAR_MODEL=0}},Fr=class n extends jr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new ow,t),this._useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this.useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this._useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this.useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this._useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this.useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this._useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this.useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this._mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this.mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this._useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this.useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this._baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this.baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this._dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this.dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this._conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this.conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16],this._enable(!0)}prepareDefines(e){e.BRDF_V_HEIGHT_CORRELATED=this._useSmithVisibilityHeightCorrelated,e.MS_BRDF_ENERGY_CONSERVATION=this._useEnergyConservation&&this._useSmithVisibilityHeightCorrelated,e.SPHERICAL_HARMONICS=this._useSphericalHarmonics,e.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=this._useSpecularGlossinessInputEnergyConservation,e.MIX_IBL_RADIANCE_WITH_IRRADIANCE=this._mixIblRadianceWithIrradiance&&!this._material._disableLighting,e.LEGACY_SPECULAR_ENERGY_CONSERVATION=this._useLegacySpecularEnergyConservation,e.BASE_DIFFUSE_MODEL=this._baseDiffuseModel,e.DIELECTRIC_SPECULAR_MODEL=this._dielectricSpecularModel,e.CONDUCTOR_SPECULAR_MODEL=this._conductorSpecularModel}getClassName(){return"PBRBRDFConfiguration"}};Fr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Fr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Fr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Fr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Fr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Fr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Fr.DEFAULT_DIFFUSE_MODEL=0;Fr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Fr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSphericalHarmonics",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"conductorSpecularModel",void 0)});var lw,mn,xK=I(()=>{Wt();kt();zt();Ya();id();ja();es();lw=class extends Lr{constructor(){super(...arguments),this.CLEARCOAT=!1,this.CLEARCOAT_DEFAULTIOR=!1,this.CLEARCOAT_TEXTURE=!1,this.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this.CLEARCOAT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,this.CLEARCOAT_BUMP=!1,this.CLEARCOAT_BUMPDIRECTUV=0,this.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,this.CLEARCOAT_REMAP_F0=!1,this.CLEARCOAT_TINT=!1,this.CLEARCOAT_TINT_TEXTURE=!1,this.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TINT_GAMMATEXTURE=!1}},mn=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new lw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.roughness=0,this._indexOfRefraction=n._DefaultIndexOfRefraction,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._textureRoughness=null,this.textureRoughness=null,this._remapF0OnInterfaceChange=!0,this.remapF0OnInterfaceChange=!0,this._bumpTexture=null,this.bumpTexture=null,this._isTintEnabled=!1,this.isTintEnabled=!1,this.tintColor=Ee.White(),this.tintColorAtDistance=1,this.tintThickness=1,this._tintTexture=null,this.tintTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){if(!this._isEnabled)return!0;let r=this._material._disableBumpMap;return!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&ce.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&!this._tintTexture.isReadyOrNotBlocking()))}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.CLEARCOAT=!0,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e.CLEARCOAT_REMAP_F0=this._remapF0OnInterfaceChange,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled?ni(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&ce.ClearCoatTextureEnabled?ni(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&ce.ClearCoatBumpTextureEnabled?ni(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&ce.ClearCoatTintTextureEnabled?(ni(this._tintTexture,e,"CLEARCOAT_TINT_TEXTURE"),e.CLEARCOAT_TINT_GAMMATEXTURE=this._tintTexture.gammaSpace):e.CLEARCOAT_TINT_TEXTURE=!1):(e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1))):(e.CLEARCOAT=!1,e.CLEARCOAT_TEXTURE=!1,e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.CLEARCOAT_DEFAULTIOR=!1,e.CLEARCOAT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,e.CLEARCOAT_BUMPDIRECTUV=0,e.CLEARCOAT_REMAP_F0=!1,e.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TINT_GAMMATEXTURE=!1)}bindForSubMesh(e,t,i,r){var f,d,h,u,m,_,p,g;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material._disableBumpMap,l=this._material._invertNormalMapX,c=this._material._invertNormalMapY;if(!e.useUbo||!a||!e.isSync){(this._texture||this._textureRoughness)&&ce.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(u=(h=this._texture)==null?void 0:h.level)!=null?u:0,(_=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?_:0,(g=(p=this._textureRoughness)==null?void 0:p.level)!=null?g:0),this._texture&&si(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&si(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),si(this._bumpTexture,e,"clearCoatBump"),t._mirroredCameraPosition?e.updateFloat2("vClearCoatTangentSpaceParams",l?1:-1,c?1:-1):e.updateFloat2("vClearCoatTangentSpaceParams",l?-1:1,c?-1:1)),this._tintTexture&&ce.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),si(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,T=1+this._indexOfRefraction,S=Math.pow(-v/T,2),E=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",S,E,v,T),this._isTintEnabled&&(e.updateFloat4("vClearCoatTintParams",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintThickness)),e.updateFloat("clearCoatColorAtDistance",Math.max(1e-5,this.tintColorAtDistance)))}t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&e.setTexture("clearCoatTintSampler",this._tintTexture))}hasTexture(e){return this._texture===e||this._textureRoughness===e||this._bumpTexture===e||this._tintTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness),this._bumpTexture&&e.push(this._bumpTexture),this._tintTexture&&e.push(this._tintTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._tintTexture&&this._tintTexture.animations&&this._tintTexture.animations.length>0&&e.push(this._tintTexture)}dispose(e){var t,i,r,s;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose(),(r=this._bumpTexture)==null||r.dispose(),(s=this._tintTexture)==null||s.dispose())}getClassName(){return"PBRClearCoatConfiguration"}addFallbacks(e,t,i){return e.CLEARCOAT_BUMP&&t.addFallback(i++,"CLEARCOAT_BUMP"),e.CLEARCOAT_TINT&&t.addFallback(i++,"CLEARCOAT_TINT"),e.CLEARCOAT&&t.addFallback(i++,"CLEARCOAT"),i}getSamplers(e){e.push("clearCoatSampler","clearCoatRoughnessSampler","clearCoatBumpSampler","clearCoatTintSampler")}getUniforms(){return{ubo:[{name:"vClearCoatParams",size:2,type:"vec2"},{name:"vClearCoatRefractionParams",size:4,type:"vec4"},{name:"vClearCoatInfos",size:4,type:"vec4"},{name:"clearCoatMatrix",size:16,type:"mat4"},{name:"clearCoatRoughnessMatrix",size:16,type:"mat4"},{name:"vClearCoatBumpInfos",size:2,type:"vec2"},{name:"vClearCoatTangentSpaceParams",size:2,type:"vec2"},{name:"clearCoatBumpMatrix",size:16,type:"mat4"},{name:"vClearCoatTintParams",size:4,type:"vec4"},{name:"clearCoatColorAtDistance",size:1,type:"float"},{name:"vClearCoatTintInfos",size:2,type:"vec2"},{name:"clearCoatTintMatrix",size:16,type:"mat4"}]}}};mn._DefaultIndexOfRefraction=1.5;P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"isEnabled",void 0);P([F()],mn.prototype,"intensity",void 0);P([F()],mn.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"indexOfRefraction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"useRoughnessFromMainTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"remapF0OnInterfaceChange",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"bumpTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"isTintEnabled",void 0);P([Ir()],mn.prototype,"tintColor",void 0);P([F()],mn.prototype,"tintColorAtDistance",void 0);P([F()],mn.prototype,"tintThickness",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"tintTexture",void 0)});var cw,ea,RK=I(()=>{Wt();kt();Ya();id();ja();es();cw=class extends Lr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},ea=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new cw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.minimumThickness=n._DefaultMinimumThickness,this.maximumThickness=n._DefaultMaximumThickness,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._thicknessTexture=null,this.thicknessTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&ce.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled?ni(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&ce.IridescenceTextureEnabled?ni(this._thicknessTexture,e,"IRIDESCENCE_THICKNESS_TEXTURE"):e.IRIDESCENCE_THICKNESS_TEXTURE=!1)):(e.IRIDESCENCE=!1,e.IRIDESCENCE_TEXTURE=!1,e.IRIDESCENCE_THICKNESS_TEXTURE=!1,e.IRIDESCENCE_TEXTUREDIRECTUV=0,e.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0)}bindForSubMesh(e,t){var r,s,a,o,l,c,f,d;if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&((this._texture||this._thicknessTexture)&&ce.IridescenceTextureEnabled&&(e.updateFloat4("vIridescenceInfos",(s=(r=this._texture)==null?void 0:r.coordinatesIndex)!=null?s:0,(o=(a=this._texture)==null?void 0:a.level)!=null?o:0,(c=(l=this._thicknessTexture)==null?void 0:l.coordinatesIndex)!=null?c:0,(d=(f=this._thicknessTexture)==null?void 0:f.level)!=null?d:0),this._texture&&si(this._texture,e,"iridescence"),this._thicknessTexture&&si(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceThicknessSampler",this._thicknessTexture))}hasTexture(e){return this._texture===e||this._thicknessTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._thicknessTexture&&e.push(this._thicknessTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._thicknessTexture)==null||i.dispose())}getClassName(){return"PBRIridescenceConfiguration"}addFallbacks(e,t,i){return e.IRIDESCENCE&&t.addFallback(i++,"IRIDESCENCE"),i}getSamplers(e){e.push("iridescenceSampler","iridescenceThicknessSampler")}getUniforms(){return{ubo:[{name:"vIridescenceParams",size:4,type:"vec4"},{name:"vIridescenceInfos",size:4,type:"vec4"},{name:"iridescenceMatrix",size:16,type:"mat4"},{name:"iridescenceThicknessMatrix",size:16,type:"mat4"}]}}};ea._DefaultMinimumThickness=100;ea._DefaultMaximumThickness=400;ea._DefaultIndexOfRefraction=1.3;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"isEnabled",void 0);P([F()],ea.prototype,"intensity",void 0);P([F()],ea.prototype,"minimumThickness",void 0);P([F()],ea.prototype,"maximumThickness",void 0);P([F()],ea.prototype,"indexOfRefraction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"texture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"thicknessTexture",void 0)});var fw,Hc,bK=I(()=>{Wt();kt();Zi();ke();Ya();id();ja();es();fw=class extends Lr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Hc=class extends jr{set angle(e){this.direction.x=Math.cos(e),this.direction.y=Math.sin(e)}get angle(){return Math.atan2(this.direction.y,this.direction.x)}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markAllSubMeshesAsMiscDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRAnisotropic",110,new fw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.direction=new we(1,0),this._texture=null,this.texture=null,this._legacy=!1,this.legacy=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(L.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.AnisotropicTextureEnabled?ni(this._texture,e,"ANISOTROPIC_TEXTURE"):e.ANISOTROPIC_TEXTURE=!1),e._areMiscDirty&&(e.ANISOTROPIC_LEGACY=this._legacy)):(e.ANISOTROPIC=!1,e.ANISOTROPIC_TEXTURE=!1,e.ANISOTROPIC_TEXTUREDIRECTUV=0,e.ANISOTROPIC_LEGACY=!1)}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&(this._texture&&ce.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),si(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&e.setTexture("anisotropySampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){e&&this._texture&&this._texture.dispose()}getClassName(){return"PBRAnisotropicConfiguration"}addFallbacks(e,t,i){return e.ANISOTROPIC&&t.addFallback(i++,"ANISOTROPIC"),i}getSamplers(e){e.push("anisotropySampler")}getUniforms(){return{ubo:[{name:"vAnisotropy",size:3,type:"vec3"},{name:"vAnisotropyInfos",size:2,type:"vec2"},{name:"anisotropyMatrix",size:16,type:"mat4"}]}}parse(e,t,i){super.parse(e,t,i),e.legacy===void 0&&(this.legacy=!0)}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Hc.prototype,"isEnabled",void 0);P([F()],Hc.prototype,"intensity",void 0);P([Fm()],Hc.prototype,"direction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Hc.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Hc.prototype,"legacy",void 0)});var dw,Ea,MK=I(()=>{Wt();kt();zt();Ya();id();ja();es();dw=class extends Lr{constructor(){super(...arguments),this.SHEEN=!1,this.SHEEN_TEXTURE=!1,this.SHEEN_GAMMATEXTURE=!1,this.SHEEN_TEXTURE_ROUGHNESS=!1,this.SHEEN_TEXTUREDIRECTUV=0,this.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0,this.SHEEN_LINKWITHALBEDO=!1,this.SHEEN_ROUGHNESS=!1,this.SHEEN_ALBEDOSCALING=!1,this.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1}},Ea=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new dw,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=Ee.White(),this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._roughness=null,this.roughness=null,this._textureRoughness=null,this.textureRoughness=null,this._albedoScaling=!1,this.albedoScaling=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.SheenTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.SHEEN=!0,e.SHEEN_LINKWITHALBEDO=this._linkSheenWithAlbedo,e.SHEEN_ROUGHNESS=this._roughness!==null,e.SHEEN_ALBEDOSCALING=this._albedoScaling,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled?(ni(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&ce.SheenTextureEnabled?ni(this._textureRoughness,e,"SHEEN_TEXTURE_ROUGHNESS"):e.SHEEN_TEXTURE_ROUGHNESS=!1)):(e.SHEEN=!1,e.SHEEN_TEXTURE=!1,e.SHEEN_TEXTURE_ROUGHNESS=!1,e.SHEEN_LINKWITHALBEDO=!1,e.SHEEN_ROUGHNESS=!1,e.SHEEN_ALBEDOSCALING=!1,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.SHEEN_GAMMATEXTURE=!1,e.SHEEN_TEXTUREDIRECTUV=0,e.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0)}bindForSubMesh(e,t,i,r){var o,l,c,f,d,h,u,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&ce.SheenTextureEnabled&&(e.updateFloat4("vSheenInfos",(l=(o=this._texture)==null?void 0:o.coordinatesIndex)!=null?l:0,(f=(c=this._texture)==null?void 0:c.level)!=null?f:0,(h=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?h:0,(m=(u=this._textureRoughness)==null?void 0:u.level)!=null?m:0),this._texture&&si(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&si(this._textureRoughness,e,"sheenRoughness")),e.updateFloat4("vSheenColor",this.color.r,this.color.g,this.color.b,this.intensity),this._roughness!==null&&e.updateFloat("vSheenRoughness",this._roughness)),t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.SheenTextureEnabled&&e.setTexture("sheenRoughnessSampler",this._textureRoughness))}hasTexture(e){return this._texture===e||this._textureRoughness===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose())}getClassName(){return"PBRSheenConfiguration"}addFallbacks(e,t,i){return e.SHEEN&&t.addFallback(i++,"SHEEN"),i}getSamplers(e){e.push("sheenSampler","sheenRoughnessSampler")}getUniforms(){return{ubo:[{name:"vSheenColor",size:4,type:"vec4"},{name:"vSheenRoughness",size:1,type:"float"},{name:"vSheenInfos",size:4,type:"vec4"},{name:"sheenMatrix",size:16,type:"mat4"},{name:"sheenRoughnessMatrix",size:16,type:"mat4"}]}}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"isEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"linkSheenWithAlbedo",void 0);P([F()],Ea.prototype,"intensity",void 0);P([Ir()],Ea.prototype,"color",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"useRoughnessFromMainTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"roughness",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"albedoScaling",void 0)});var hw,Ii,IK=I(()=>{Wt();kt();zt();Ya();ke();id();ja();es();hw=class extends Lr{constructor(){super(...arguments),this.SUBSURFACE=!1,this.SS_REFRACTION=!1,this.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_TRANSLUCENCY=!1,this.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_SCATTERING=!1,this.SS_DISPERSION=!1,this.SS_THICKNESSANDMASK_TEXTURE=!1,this.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,this.SS_HAS_THICKNESS=!1,this.SS_REFRACTIONINTENSITY_TEXTURE=!1,this.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,this.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,this.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,this.SS_REFRACTIONMAP_3D=!1,this.SS_REFRACTIONMAP_OPPOSITEZ=!1,this.SS_LODINREFRACTIONALPHA=!1,this.SS_GAMMAREFRACTION=!1,this.SS_RGBDREFRACTION=!1,this.SS_LINEARSPECULARREFRACTION=!1,this.SS_LINKREFRACTIONTOTRANSPARENCY=!1,this.SS_ALBEDOFORREFRACTIONTINT=!1,this.SS_ALBEDOFORTRANSLUCENCYTINT=!1,this.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.SS_USE_THICKNESS_AS_DEPTH=!1,this.SS_USE_GLTF_TEXTURES=!1,this.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1,this.SS_TRANSLUCENCY_LEGACY=!1}},Ii=class n extends jr{get scatteringDiffusionProfile(){return this._scene.subSurfaceConfiguration?this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex]:null}set scatteringDiffusionProfile(e){this._scene.enableSubSurfaceForPrePass()&&e&&(this._scatteringDiffusionProfileIndex=this._scene.subSurfaceConfiguration.addDiffusionProfile(e))}get volumeIndexOfRefraction(){return this._volumeIndexOfRefraction>=1?this._volumeIndexOfRefraction:this._indexOfRefraction}set volumeIndexOfRefraction(e){e>=1?this._volumeIndexOfRefraction=e:this._volumeIndexOfRefraction=-1}get legacyTransluceny(){return this.legacyTranslucency}set legacyTransluceny(e){this.legacyTranslucency=e}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markScenePrePassDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty(),this._internalMarkScenePrePassDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRSubSurface",130,new hw,t),this._isRefractionEnabled=!1,this.isRefractionEnabled=!1,this._isTranslucencyEnabled=!1,this.isTranslucencyEnabled=!1,this._isDispersionEnabled=!1,this.isDispersionEnabled=!1,this._isScatteringEnabled=!1,this.isScatteringEnabled=!1,this._scatteringDiffusionProfileIndex=0,this.refractionIntensity=1,this.translucencyIntensity=1,this._useAlbedoToTintRefraction=!1,this.useAlbedoToTintRefraction=!1,this._useAlbedoToTintTranslucency=!1,this.useAlbedoToTintTranslucency=!1,this._thicknessTexture=null,this.thicknessTexture=null,this._refractionTexture=null,this.refractionTexture=null,this._indexOfRefraction=1.5,this.indexOfRefraction=1.5,this._volumeIndexOfRefraction=-1,this._invertRefractionY=!1,this.invertRefractionY=!1,this._linkRefractionWithTransparency=!1,this.linkRefractionWithTransparency=!1,this.minimumThickness=0,this.maximumThickness=1,this.useThicknessAsDepth=!1,this.tintColor=Ee.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=Ee.White(),this._useMaskFromThicknessTexture=!1,this.useMaskFromThicknessTexture=!1,this._refractionIntensityTexture=null,this.refractionIntensityTexture=null,this._translucencyIntensityTexture=null,this.translucencyIntensityTexture=null,this.translucencyColor=null,this._translucencyColorTexture=null,this.translucencyColorTexture=null,this._useGltfStyleTextures=!0,this.useGltfStyleTextures=!0,this.applyAlbedoAfterSubSurface=n.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE,this.legacyTranslucency=n.DEFAULT_LEGACY_TRANSLUCENCY,this._scene=e.getScene(),this.registerForExtraEvents=!0,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkScenePrePassDirty=e._dirtyCallbacks[32]}isReadyForSubMesh(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&ce.RefractionTextureEnabled&&!i.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled){e.SUBSURFACE=!1,e.SS_DISPERSION=!1,e.SS_TRANSLUCENCY=!1,e.SS_SCATTERING=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,e.SS_HAS_THICKNESS=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,e.SS_REFRACTIONMAP_3D=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1;return}if(e._areTexturesDirty){if(e.SUBSURFACE=!0,e.SS_DISPERSION=this._isDispersionEnabled,e.SS_TRANSLUCENCY=this._isTranslucencyEnabled,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_LEGACY=this.legacyTranslucency,e.SS_SCATTERING=this._isScatteringEnabled,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_HAS_THICKNESS=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_REFRACTIONMAP_3D=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=this.applyAlbedoAfterSubSurface,e._areTexturesDirty&&t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&ni(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&ni(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&ni(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&(ni(this._translucencyColorTexture,e,"SS_TRANSLUCENCYCOLOR_TEXTURE"),e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=this._translucencyColorTexture.gammaSpace)),e.SS_HAS_THICKNESS=this.maximumThickness-this.minimumThickness!==0,e.SS_USE_GLTF_TEXTURES=this._useGltfStyleTextures,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._refractionIntensityTexture,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._translucencyIntensityTexture,this._isRefractionEnabled&&t.texturesEnabled){let i=this._getRefractionTexture(t);i&&ce.RefractionTextureEnabled&&(e.SS_REFRACTION=!0,e.SS_REFRACTIONMAP_3D=i.isCube,e.SS_GAMMAREFRACTION=i.gammaSpace,e.SS_RGBDREFRACTION=i.isRGBD,e.SS_LINEARSPECULARREFRACTION=i.linearSpecularLOD,e.SS_REFRACTIONMAP_OPPOSITEZ=this._scene.useRightHandedSystem&&i.isCube?!i.invertZ:i.invertZ,e.SS_LODINREFRACTIONALPHA=i.lodLevelInAlpha,e.SS_LINKREFRACTIONTOTRANSPARENCY=this._linkRefractionWithTransparency,e.SS_ALBEDOFORREFRACTIONTINT=this._useAlbedoToTintRefraction,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=i.isCube&&i.boundingBoxSize,e.SS_USE_THICKNESS_AS_DEPTH=this.useThicknessAsDepth)}this._isTranslucencyEnabled&&(e.SS_ALBEDOFORTRANSLUCENCYTINT=this._useAlbedoToTintTranslucency)}}hardBindForSubMesh(e,t,i,r){if(!(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled))if(this.maximumThickness===0&&this.minimumThickness===0)e.updateFloat2("vThicknessParam",0,0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat2("vThicknessParam",this.minimumThickness*s,(this.maximumThickness-this.minimumThickness)*s)}}bindForSubMesh(e,t,i,r){var f;if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material.realTimeFiltering,l=s.LODBASEDMICROSFURACE,c=this._getRefractionTexture(t);if(!e.useUbo||!a||!e.isSync){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),si(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),si(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),si(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),si(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&ce.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let h=c.getSize().width,u=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/u,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",h,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",h,Math.log2(h)),c.boundingBoxSize){let m=c;e.updateVector3("vRefractionPosition",m.boundingBoxPosition),e.updateVector3("vRefractionSize",m.boundingBoxSize)}}this._isScatteringEnabled&&e.updateFloat("scatteringDiffusionProfile",this._scatteringDiffusionProfileIndex),e.updateColor3("vDiffusionDistance",this.diffusionDistance),e.updateFloat4("vTintColor",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintColorAtDistance)),e.updateColor4("vTranslucencyColor",(f=this.translucencyColor)!=null?f:this.tintColor,0),e.updateFloat3("vSubSurfaceIntensity",this.refractionIntensity,this.translucencyIntensity,0),e.updateFloat("dispersion",this.dispersion)}t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&ce.RefractionTextureEnabled&&(l?e.setTexture("refractionSampler",c):(e.setTexture("refractionSampler",c._lodTextureMid||c),e.setTexture("refractionSamplerLow",c._lodTextureLow||c),e.setTexture("refractionSamplerHigh",c._lodTextureHigh||c))))}_getRefractionTexture(e){return this._refractionTexture?this._refractionTexture:this._isRefractionEnabled?e.environmentTexture:null}get disableAlphaBlending(){return this._isRefractionEnabled&&this._linkRefractionWithTransparency}fillRenderTargetTextures(e){ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&e.push(this._refractionTexture)}hasTexture(e){return this._thicknessTexture===e||this._refractionTexture===e||this._refractionIntensityTexture===e||this._translucencyIntensityTexture===e||this._translucencyColorTexture===e}hasRenderTargetTextures(){return!!(ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget)}getActiveTextures(e){this._thicknessTexture&&e.push(this._thicknessTexture),this._refractionTexture&&e.push(this._refractionTexture),this._refractionIntensityTexture&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&e.push(this._translucencyIntensityTexture)}getAnimatables(e){this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),this._refractionIntensityTexture&&this._refractionIntensityTexture.animations&&this._refractionIntensityTexture.animations.length>0&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&this._translucencyColorTexture.animations&&this._translucencyColorTexture.animations.length>0&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.animations&&this._translucencyIntensityTexture.animations.length>0&&e.push(this._translucencyIntensityTexture)}dispose(e){e&&(this._thicknessTexture&&this._thicknessTexture.dispose(),this._refractionTexture&&this._refractionTexture.dispose(),this._refractionIntensityTexture&&this._refractionIntensityTexture.dispose(),this._translucencyColorTexture&&this._translucencyColorTexture.dispose(),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.dispose())}getClassName(){return"PBRSubSurfaceConfiguration"}addFallbacks(e,t,i){return e.SS_SCATTERING&&t.addFallback(i++,"SS_SCATTERING"),e.SS_TRANSLUCENCY&&t.addFallback(i++,"SS_TRANSLUCENCY"),i}getSamplers(e){e.push("thicknessSampler","refractionIntensitySampler","translucencyIntensitySampler","refractionSampler","refractionSamplerLow","refractionSamplerHigh","translucencyColorSampler")}getUniforms(){return{ubo:[{name:"vRefractionMicrosurfaceInfos",size:4,type:"vec4"},{name:"vRefractionFilteringInfo",size:2,type:"vec2"},{name:"vTranslucencyIntensityInfos",size:2,type:"vec2"},{name:"vRefractionInfos",size:4,type:"vec4"},{name:"refractionMatrix",size:16,type:"mat4"},{name:"vThicknessInfos",size:2,type:"vec2"},{name:"vRefractionIntensityInfos",size:2,type:"vec2"},{name:"thicknessMatrix",size:16,type:"mat4"},{name:"refractionIntensityMatrix",size:16,type:"mat4"},{name:"translucencyIntensityMatrix",size:16,type:"mat4"},{name:"vThicknessParam",size:2,type:"vec2"},{name:"vDiffusionDistance",size:3,type:"vec3"},{name:"vTintColor",size:4,type:"vec4"},{name:"vSubSurfaceIntensity",size:3,type:"vec3"},{name:"vRefractionPosition",size:3,type:"vec3"},{name:"vRefractionSize",size:3,type:"vec3"},{name:"scatteringDiffusionProfile",size:1,type:"float"},{name:"dispersion",size:1,type:"float"},{name:"vTranslucencyColor",size:4,type:"vec4"},{name:"vTranslucencyColorInfos",size:2,type:"vec2"},{name:"translucencyColorMatrix",size:16,type:"mat4"}]}}};Ii.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ii.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isRefractionEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isTranslucencyEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isDispersionEnabled",void 0);P([F(),le("_markScenePrePassDirty")],Ii.prototype,"isScatteringEnabled",void 0);P([F()],Ii.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ii.prototype,"refractionIntensity",void 0);P([F()],Ii.prototype,"translucencyIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useAlbedoToTintRefraction",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useAlbedoToTintTranslucency",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"thicknessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"refractionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"indexOfRefraction",void 0);P([F()],Ii.prototype,"_volumeIndexOfRefraction",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"volumeIndexOfRefraction",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"invertRefractionY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ii.prototype,"minimumThickness",void 0);P([F()],Ii.prototype,"maximumThickness",void 0);P([F()],Ii.prototype,"useThicknessAsDepth",void 0);P([Ir()],Ii.prototype,"tintColor",void 0);P([F()],Ii.prototype,"tintColorAtDistance",void 0);P([F()],Ii.prototype,"dispersion",void 0);P([Ir()],Ii.prototype,"diffusionDistance",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useMaskFromThicknessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"refractionIntensityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"translucencyIntensityTexture",void 0);P([Ir()],Ii.prototype,"translucencyColor",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"translucencyColorTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useGltfStyleTextures",void 0);P([F()],Ii.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ii.prototype,"legacyTranslucency",void 0)});var yK,z_e,uw=I(()=>{k();Lh();Pv();yK="pbrUboDeclaration",z_e=`uniform vAlbedoInfos: vec2f;uniform vBaseWeightInfos: vec2f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform vAmbientInfos: vec4f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vReflectivityInfos: vec3f;uniform vMicroSurfaceSamplerInfos: vec2f;uniform vBumpInfos: vec3f;uniform albedoMatrix: mat4x4f;uniform baseWeightMatrix: mat4x4f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform reflectivityMatrix: mat4x4f;uniform microSurfaceSamplerMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform vAlbedoColor: vec4f;uniform baseWeight: f32;uniform baseDiffuseRoughness: f32;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vReflectivityColor: vec4f;uniform vEmissiveColor: vec3f;uniform vAmbientColor: vec3f;uniform vDebugMode: vec2f;uniform vMetallicReflectanceFactors: vec4f;uniform vMetallicReflectanceInfos: vec2f;uniform metallicReflectanceMatrix: mat4x4f;uniform vReflectanceInfos: vec2f;uniform reflectanceMatrix: mat4x4f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f; +`;x.ShadersStore[iw]||(x.ShadersStore[iw]=pK);H_e={name:iw,shader:pK}});var vK={};Fe(vK,{OpenPBRMaterial:()=>Ne,OpenPBRMaterialDefines:()=>Xv});var Wp,eM,ai,Mi,rw,nw,Xv,sw,Ne,EK=I(()=>{Wt();kt();jb();zt();Kg();Xr();$i();ts();Dr();ja();xR();Qf();Ml();mv();es();Zi();RR();AR();Ya();Lt();bR();MR();S6();ke();IR();uv();Mo();wi();n7();Wp={effect:null,subMesh:null},eM=class n{populateVectorFromLinkedProperties(e){let t=e.dimension[0];for(let i in this.linkedProperties){let r=this.linkedProperties[i],s=r.numComponents;if(tt-s){s==1?ee.Error(`Float property ${r.name} has an offset that is too large.`):ee.Error(`Vector${s} property ${r.name} won't fit in Vector${t} or has an offset that is too large.`);return}typeof r.value=="number"?n._tmpArray[r.targetUniformComponentOffset]=r.value:r.value.toArray(n._tmpArray,r.targetUniformComponentOffset)}e.fromArray(n._tmpArray)}constructor(e,t){this.linkedProperties={},this.firstLinkedKey="",this.name=e,this.numComponents=t}};eM._tmpArray=[0,0,0,0];ai=class{constructor(e,t,i,r,s=0,a){this.targetUniformComponentNum=4,this.targetUniformComponentOffset=0,this.name=e,this.targetUniformName=i,this.defaultValue=t,this.value=t,this.targetUniformComponentNum=r,this.targetUniformComponentOffset=s,this.requiredDefine=a}get numComponents(){return typeof this.defaultValue=="number"?1:this.defaultValue.dimension[0]}},Mi=class{get samplerName(){return this.samplerPrefix+"Sampler"}get samplerInfoName(){return"v"+this.samplerPrefix.charAt(0).toUpperCase()+this.samplerPrefix.slice(1)+"Infos"}get samplerMatrixName(){return this.samplerPrefix+"Matrix"}constructor(e,t,i){this.value=null,this.samplerPrefix="",this.textureDefine="",this.name=e,this.samplerPrefix=t,this.textureDefine=i}},rw=class extends yp(Ip(Lr)){},nw=class extends E6(rw){},Xv=class extends bp(nw){constructor(e){super(e),this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.LIGHTCOUNT=0,this.VERTEXCOLOR=!1,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.VERTEXALPHA=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHA_FROM_BASE_COLOR_TEXTURE=!1,this.ALPHATESTVALUE="0.5",this.PREMULTIPLYALPHA=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.LODBASEDMICROSFURACE=!0,this.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=!1,this.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.SPECULAR_WEIGHT_IN_ALPHA=!1,this.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=!1,this.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=!1,this.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=!1,this.USE_GLTF_STYLE_ANISOTROPY=!1,this.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=!1,this.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=!1,this.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=!1,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.FUZZENVIRONMENTBRDF=!1,this.NORMAL=!1,this.TANGENT=!1,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.ANISOTROPIC=!1,this.ANISOTROPIC_OPENPBR=!0,this.ANISOTROPIC_BASE=!1,this.ANISOTROPIC_COAT=!1,this.FUZZ_IBL_SAMPLES=6,this.REFRACTION_HIGH_QUALITY_BLUR=!1,this.FUZZ=!1,this.THIN_FILM=!1,this.IRIDESCENCE=!1,this.DISPERSION=!1,this.SCATTERING=!1,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!1,this.SSS_SAMPLE_COUNT=16,this.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!1,this.TRANSMISSION_SLAB=!1,this.TRANSMISSION_SLAB_VOLUME=!1,this.SUBSURFACE_SLAB=!1,this.GEOMETRY_THIN_WALLED=!1,this.REFRACTED_BACKGROUND=!1,this.REFRACTED_LIGHTS=!1,this.REFRACTED_ENVIRONMENT=!1,this.REFRACTED_ENVIRONMENT_OPPOSITEZ=!1,this.REFRACTED_ENVIRONMENT_LOCAL_CUBE=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.BRDF_V_HEIGHT_CORRELATED=!0,this.MS_BRDF_ENERGY_CONSERVATION=!0,this.SPHERICAL_HARMONICS=!0,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!0,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=1,this.CONDUCTOR_SPECULAR_MODEL=1,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.NORMALXYSCALE=!0}},sw=class extends Cp(Pl){},Ne=class n extends sw{get geometryTangentAngle(){return Math.atan2(this.geometryTangent.y,this.geometryTangent.x)}set geometryTangentAngle(e){this.geometryTangent=new we(Math.cos(e),Math.sin(e))}get geometryCoatTangentAngle(){return Math.atan2(this.geometryCoatTangent.y,this.geometryCoatTangent.x)}set geometryCoatTangentAngle(e){this.geometryCoatTangent=new we(Math.cos(e),Math.sin(e))}get sssQuality(){return this._sssQuality}set sssQuality(e){this._sssQuality!==e&&(this._sssQuality=e,this.markAsDirty(1))}get sssIrradianceTexture(){return this._sssIrradianceTexture}set sssIrradianceTexture(e){this._sssIrradianceTexture!==e&&(this._sssIrradianceTexture=e,this._markAllSubMeshesAsTexturesDirty())}get sssDepthTexture(){return this._sssDepthTexture}set sssDepthTexture(e){this._sssDepthTexture!==e&&(this._sssDepthTexture=e,this._markAllSubMeshesAsTexturesDirty())}get hasTransparency(){return this.subsurfaceWeight>0||this.transmissionWeight>0}get hasScattering(){return this.transmissionWeight>0&&this.transmissionDepth>0&&!this.transmissionScatter.equals(Ee.BlackReadOnly)||this.subsurfaceWeight>0}get usePhysicalLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Se.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Se.LIGHTFALLOFF_GLTF:this._lightFalloff=Se.LIGHTFALLOFF_STANDARD)}get backgroundRefractionTexture(){return this._backgroundRefractionTexture}set backgroundRefractionTexture(e){this._backgroundRefractionTexture=e,this._markAllSubMeshesAsTexturesDirty()}get refractionHighQualityBlur(){return this._refractionHighQualityBlur}set refractionHighQualityBlur(e){this._refractionHighQualityBlur!==e&&(this._refractionHighQualityBlur=e,this.markAsDirty(1))}get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get fuzzSampleNumber(){return this._fuzzSampleNumber}set fuzzSampleNumber(e){this._fuzzSampleNumber=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){var s;super(e,t,void 0,i||n.ForceGLSL),this._baseWeight=new ai("base_weight",1,"vBaseWeight",1),this._baseWeightTexture=new Mi("base_weight","baseWeight","BASE_WEIGHT"),this._baseColor=new ai("base_color",Ee.White(),"vBaseColor",4),this._baseColorTexture=new Mi("base_color","baseColor","BASE_COLOR"),this._baseDiffuseRoughness=new ai("base_diffuse_roughness",0,"vBaseDiffuseRoughness",1),this._baseDiffuseRoughnessTexture=new Mi("base_diffuse_roughness","baseDiffuseRoughness","BASE_DIFFUSE_ROUGHNESS"),this._baseMetalness=new ai("base_metalness",0,"vReflectanceInfo",4,0),this._baseMetalnessTexture=new Mi("base_metalness","baseMetalness","BASE_METALNESS"),this._specularWeight=new ai("specular_weight",1,"vReflectanceInfo",4,3),this._specularWeightTexture=new Mi("specular_weight","specularWeight","SPECULAR_WEIGHT"),this._specularColor=new ai("specular_color",Ee.White(),"vSpecularColor",4),this._specularColorTexture=new Mi("specular_color","specularColor","SPECULAR_COLOR"),this._specularRoughness=new ai("specular_roughness",.3,"vReflectanceInfo",4,1),this._specularRoughnessTexture=new Mi("specular_roughness","specularRoughness","SPECULAR_ROUGHNESS"),this._specularRoughnessAnisotropy=new ai("specular_roughness_anisotropy",0,"vSpecularAnisotropy",3,2),this._specularRoughnessAnisotropyTexture=new Mi("specular_roughness_anisotropy","specularRoughnessAnisotropy","SPECULAR_ROUGHNESS_ANISOTROPY"),this._specularIor=new ai("specular_ior",1.5,"vReflectanceInfo",4,2),this._transmissionWeight=new ai("transmission_weight",0,"vTransmissionWeight",1),this._transmissionWeightTexture=new Mi("transmission_weight","transmissionWeight","TRANSMISSION_WEIGHT"),this._transmissionColor=new ai("transmission_color",Ee.White(),"vTransmissionColor",3,0),this._transmissionColorTexture=new Mi("transmission_color","transmissionColor","TRANSMISSION_COLOR"),this._transmissionDepth=new ai("transmission_depth",0,"vTransmissionDepth",1,0),this._transmissionDepthTexture=new Mi("transmission_depth","transmissionDepth","TRANSMISSION_DEPTH"),this._transmissionScatter=new ai("transmission_scatter",Ee.Black(),"vTransmissionScatter",3,0),this._transmissionScatterTexture=new Mi("transmission_scatter","transmissionScatter","TRANSMISSION_SCATTER"),this._transmissionScatterAnisotropy=new ai("transmission_scatter_anisotropy",0,"vTransmissionScatterAnisotropy",1,0),this._transmissionDispersionScale=new ai("transmission_dispersion_scale",0,"vTransmissionDispersionScale",1,0),this._transmissionDispersionScaleTexture=new Mi("transmission_dispersion_scale","transmissionDispersionScale","TRANSMISSION_DISPERSION_SCALE"),this._transmissionDispersionAbbeNumber=new ai("transmission_dispersion_abbe_number",20,"vTransmissionDispersionAbbeNumber",1,0),this._subsurfaceWeight=new ai("subsurface_weight",0,"vSubsurfaceWeight",1,0,"SUBSURFACE_SLAB"),this._subsurfaceWeightTexture=new Mi("subsurface_weight","subsurfaceWeight","SUBSURFACE_WEIGHT"),this._subsurfaceColor=new ai("subsurface_color",new Ee(.8,.8,.8),"vSubsurfaceColor",3,0,"SUBSURFACE_SLAB"),this._subsurfaceColorTexture=new Mi("subsurface_color","subsurfaceColor","SUBSURFACE_COLOR"),this._subsurfaceRadius=new ai("subsurface_radius",.1,"vSubsurfaceRadius",1,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScale=new ai("subsurface_radius_scale",new Ee(1,.5,.25),"vSubsurfaceRadiusScale",3,0,"SUBSURFACE_SLAB"),this._subsurfaceRadiusScaleTexture=new Mi("subsurface_radius_scale","subsurfaceRadiusScale","SUBSURFACE_RADIUS_SCALE"),this._subsurfaceScatterAnisotropy=new ai("subsurface_scatter_anisotropy",0,"vSubsurfaceScatterAnisotropy",1,0,"SUBSURFACE_SLAB"),this._coatWeight=new ai("coat_weight",0,"vCoatWeight",1,0),this._coatWeightTexture=new Mi("coat_weight","coatWeight","COAT_WEIGHT"),this._coatColor=new ai("coat_color",Ee.White(),"vCoatColor",3,0),this._coatColorTexture=new Mi("coat_color","coatColor","COAT_COLOR"),this._coatRoughness=new ai("coat_roughness",0,"vCoatRoughness",1,0),this._coatRoughnessTexture=new Mi("coat_roughness","coatRoughness","COAT_ROUGHNESS"),this._coatRoughnessAnisotropy=new ai("coat_roughness_anisotropy",0,"vCoatRoughnessAnisotropy",1),this._coatRoughnessAnisotropyTexture=new Mi("coat_roughness_anisotropy","coatRoughnessAnisotropy","COAT_ROUGHNESS_ANISOTROPY"),this._coatIor=new ai("coat_ior",1.5,"vCoatIor",1,0),this._coatDarkening=new ai("coat_darkening",1,"vCoatDarkening",1,0),this._coatDarkeningTexture=new Mi("coat_darkening","coatDarkening","COAT_DARKENING"),this.useCoatRoughnessFromWeightTexture=!1,this._fuzzWeight=new ai("fuzz_weight",0,"vFuzzWeight",1,0),this._fuzzWeightTexture=new Mi("fuzz_weight","fuzzWeight","FUZZ_WEIGHT"),this._fuzzColor=new ai("fuzz_color",Ee.White(),"vFuzzColor",3,0),this._fuzzColorTexture=new Mi("fuzz_color","fuzzColor","FUZZ_COLOR"),this._fuzzRoughness=new ai("fuzz_roughness",.5,"vFuzzRoughness",1,0),this._fuzzRoughnessTexture=new Mi("fuzz_roughness","fuzzRoughness","FUZZ_ROUGHNESS"),this._geometryThinWalled=new ai("geometry_thin_walled",0,"vGeometryThinWalled",1,0),this._geometryNormalTexture=new Mi("geometry_normal","geometryNormal","GEOMETRY_NORMAL"),this._geometryTangent=new ai("geometry_tangent",new we(1,0),"vSpecularAnisotropy",3,0),this._geometryTangentTexture=new Mi("geometry_tangent","geometryTangent","GEOMETRY_TANGENT"),this._geometryCoatNormalTexture=new Mi("geometry_coat_normal","geometryCoatNormal","GEOMETRY_COAT_NORMAL"),this._geometryCoatTangent=new ai("geometry_coat_tangent",new we(1,0),"vGeometryCoatTangent",2,0),this._geometryCoatTangentTexture=new Mi("geometry_coat_tangent","geometryCoatTangent","GEOMETRY_COAT_TANGENT"),this._geometryOpacity=new ai("geometry_opacity",1,"vBaseColor",4,3),this._geometryOpacityTexture=new Mi("geometry_opacity","geometryOpacity","GEOMETRY_OPACITY"),this._geometryThickness=new ai("geometry_thickness",0,"vGeometryThickness",1,0),this._geometryThicknessTexture=new Mi("geometry_thickness","geometryThickness","GEOMETRY_THICKNESS"),this._emissionLuminance=new ai("emission_luminance",1,"vLightingIntensity",4,1),this._emissionColor=new ai("emission_color",Ee.Black(),"vEmissionColor",3),this._emissionColorTexture=new Mi("emission_color","emissionColor","EMISSION_COLOR"),this._thinFilmWeight=new ai("thin_film_weight",0,"vThinFilmWeight",1,0),this._thinFilmWeightTexture=new Mi("thin_film_weight","thinFilmWeight","THIN_FILM_WEIGHT"),this._thinFilmThickness=new ai("thin_film_thickness",.5,"vThinFilmThickness",2,0),this._thinFilmThicknessMin=new ai("thin_film_thickness_min",0,"vThinFilmThickness",2,1),this._thinFilmThicknessTexture=new Mi("thin_film_thickness","thinFilmThickness","THIN_FILM_THICKNESS"),this._thinFilmIor=new ai("thin_film_ior",1.4,"vThinFilmIor",1,0),this._ambientOcclusionTexture=new Mi("ambient_occlusion","ambientOcclusion","AMBIENT_OCCLUSION"),this._sssQuality=n.SSS_QUALITY_MEDIUM,this._sssIrradianceTexture=null,this._sssDepthTexture=null,this._uniformsList={},this._uniformsArray=[],this._samplersList={},this._samplerDefines={},this.directIntensity=1,this.environmentIntensity=1,this.useSpecularWeightFromTextureAlpha=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._lightingInfos=new Ni(this.directIntensity,1,this.environmentIntensity,1),this._radianceTexture=null,this._useSpecularWeightFromAlpha=!1,this._useSpecularWeightFromSpecularColorTexture=!1,this._useSpecularRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessAnisotropyFromTangentTexture=!1,this._useCoatRoughnessFromGreenChannel=!1,this._useGltfStyleAnisotropy=!1,this._useFuzzRoughnessFromTextureAlpha=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromBaseColorTexture=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallicFromMetallicTextureBlue=!1,this._useThinFilmThicknessFromTextureGreen=!1,this._useGeometryThicknessFromGreenChannel=!1,this._lightFalloff=Se.LIGHTFALLOFF_PHYSICAL,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._environmentFuzzBRDFTexture=null,this._backgroundRefractionTexture=null,this._refractionHighQualityBlur=!0,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._fuzzSampleNumber=4,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Xi(16),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this._transparencyMode=Se.MATERIAL_OPAQUE,this.getScene()&&!((s=this.getScene())!=null&&s.getEngine().isWebGPU)&&this.getScene().getEngine().webGLVersion<2&&ee.Error("OpenPBRMaterial: WebGL 2.0 or above is required for this material."),n._noiseTextures[this.getScene().uniqueId]||(n._noiseTextures[this.getScene().uniqueId]=new _e(pe.GetAssetUrl("https://assets.babylonjs.com/core/blue_noise/blue_noise_rgb.png"),this.getScene(),!1,!0,1),this.getScene().onDisposeObservable.addOnce(()=>{var a;(a=n._noiseTextures[this.getScene().uniqueId])==null||a.dispose(),delete n._noiseTextures[this.getScene().uniqueId]})),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget&&this._renderTargets.push(this._radianceTexture),ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget&&this._renderTargets.push(this._backgroundRefractionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=v6(this.getScene()),this._environmentFuzzBRDFTexture=lN(this.getScene()),this.prePassConfiguration=new $s,this._propertyList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof ai&&(this._propertyList[a]=o)}Object.keys(this._propertyList).forEach(a=>{let o=this._propertyList[a],l=this._uniformsList[o.targetUniformName];l?l.numComponents!==o.targetUniformComponentNum?ee.Error(`Uniform ${o.targetUniformName} already exists of size ${l.numComponents}, but trying to set it to ${o.targetUniformComponentNum}.`):l.requiredDefine!==o.requiredDefine&&(l.requiredDefine=void 0):(l=new eM(o.targetUniformName,o.targetUniformComponentNum),l.requiredDefine=o.requiredDefine,this._uniformsList[o.targetUniformName]=l),l.firstLinkedKey===""&&(l.firstLinkedKey=o.name),l.linkedProperties[o.name]=o}),this._uniformsArray=Object.values(this._uniformsList),this._samplersList={};for(let a of Object.getOwnPropertyNames(this)){let o=this[a];o instanceof Mi&&(this._samplersList[a]=o)}for(let a in this._samplersList){let l=this._samplersList[a].textureDefine;this._samplerDefines[l]={type:"boolean",default:!1},this._samplerDefines[l+"DIRECTUV"]={type:"number",default:0},this._samplerDefines[l+"_GAMMA"]={type:"boolean",default:!1}}this._baseWeight,this._baseWeightTexture,this._baseColor,this._baseColorTexture,this._baseDiffuseRoughness,this._baseDiffuseRoughnessTexture,this._baseMetalness,this._baseMetalnessTexture,this._specularWeight,this._specularWeightTexture,this._specularColor,this._specularColorTexture,this._specularRoughness,this._specularIor,this._specularRoughnessTexture,this._specularRoughnessAnisotropy,this._specularRoughnessAnisotropyTexture,this._transmissionWeight,this._transmissionWeightTexture,this._transmissionColor,this._transmissionColorTexture,this._transmissionDepth,this._transmissionDepthTexture,this._transmissionScatter,this._transmissionScatterTexture,this._transmissionScatterAnisotropy,this._transmissionDispersionScale,this._transmissionDispersionScaleTexture,this._transmissionDispersionAbbeNumber,this._subsurfaceWeight,this._subsurfaceWeightTexture,this._subsurfaceColor,this._subsurfaceColorTexture,this._subsurfaceRadius,this._subsurfaceRadiusScale,this._subsurfaceRadiusScaleTexture,this._subsurfaceScatterAnisotropy,this._coatWeight,this._coatWeightTexture,this._coatColor,this._coatColorTexture,this._coatRoughness,this._coatRoughnessTexture,this._coatRoughnessAnisotropy,this._coatRoughnessAnisotropyTexture,this._coatIor,this._coatDarkening,this._coatDarkeningTexture,this._fuzzWeight,this._fuzzWeightTexture,this._fuzzColor,this._fuzzColorTexture,this._fuzzRoughness,this._fuzzRoughnessTexture,this._geometryThinWalled,this._geometryNormalTexture,this._geometryTangent,this._geometryTangentTexture,this._geometryCoatNormalTexture,this._geometryCoatTangent,this._geometryCoatTangentTexture,this._geometryOpacity,this._geometryOpacityTexture,this._geometryThickness,this._geometryThicknessTexture,this._thinFilmWeight,this._thinFilmWeightTexture,this._thinFilmThickness,this._thinFilmThicknessMin,this._thinFilmThicknessTexture,this._thinFilmIor,this._emissionLuminance,this._emissionColor,this._emissionColorTexture,this._ambientOcclusionTexture}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._radianceTexture&&this._radianceTexture.isRenderTarget||ce.RefractionTextureEnabled&&this._backgroundRefractionTexture&&this._backgroundRefractionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"OpenPBRMaterial"}get transparencyMode(){return this._transparencyMode}set transparencyMode(e){this._transparencyMode!==e&&(this._transparencyMode=e,this._markAllSubMeshesAsTexturesAndMiscDirty())}_shouldUseAlphaFromBaseColorTexture(){return this._hasAlphaChannel()&&this._transparencyMode!==Se.MATERIAL_OPAQUE&&!this.geometryOpacityTexture}_hasAlphaChannel(){return this.baseColorTexture!=null&&this.baseColorTexture.hasAlpha&&this._useAlphaFromBaseColorTexture||this.geometryOpacityTexture!=null}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.OpenPBRMaterial",e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),r}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new Xv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Wp.effect=o,Wp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Wp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new Xv({...this._eventInfo.defineNames||{},...this._samplerDefines||{}}));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){for(let m in this._samplersList){let _=this._samplersList[m];if(_.value&&!_.value.isReadyOrNotBlocking())return!1}let u=this._getRadianceTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady()||this._environmentFuzzBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentFuzzBRDFTexture.isReady()||this._backgroundRefractionTexture&&ce.RefractionTextureEnabled&&!this._backgroundRefractionTexture.isReadyOrNotBlocking()||n._noiseTextures[a.uniqueId]&&!n._noiseTextures[a.uniqueId].isReady()||this._sssIrradianceTexture&&this._sssDepthTexture&&(!this._sssIrradianceTexture.isReady()||!this._sssDepthTexture.isReady()))return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED){for(let u=0;u{e.addUniform(t.name,t.numComponents)}),Object.values(this._samplersList).forEach(t=>{e.addUniform(t.samplerInfoName,2),e.addUniform(t.samplerMatrixName,16)}),super.buildUniformLayout()}bindPropertiesForSubMesh(e,t,i,r){if(this.geometryThickness===0)e.updateFloat("vGeometryThickness",0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat("vGeometryThickness",this.geometryThickness*s)}}bindForSubMesh(e,t,i){var d;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);js(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Jf(this._activeEffect,this._vertexPullingMetadata);let f=this._uniformBuffer;if(c){this.bindViewProjection(a);let h=this._getRadianceTexture();if(!f.useUbo||!this.isFrozen||!f.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value&&(f.updateFloat2(_.samplerInfoName,_.value.coordinatesIndex,_.value.level),si(_.value,f,_.samplerPrefix))}(this.geometryNormalTexture||this.geometryCoatNormalTexture)&&(r._mirroredCameraPosition?f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):f.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),ep(r,s,f,Ee.White(),h,this.realTimeFiltering,!0,!0,!0,!0,!0)}this.pointsCloud&&f.updateFloat("pointSize",this.pointSize);let u=this._uniformsArray;for(let m=0,_=u.length;m<_;m++){let p=u[m];p.requiredDefine!==void 0&&!s[p.requiredDefine]||(p.numComponents===4?(p.populateVectorFromLinkedProperties($.Vector4[0]),f.updateVector4(p.name,$.Vector4[0])):p.numComponents===3?(p.populateVectorFromLinkedProperties($.Vector3[0]),f.updateVector3(p.name,$.Vector3[0])):p.numComponents===2?(p.populateVectorFromLinkedProperties($.Vector2[0]),f.updateFloat2(p.name,$.Vector2[0].x,$.Vector2[0].y)):p.numComponents===1&&f.updateFloat(p.name,p.linkedProperties[p.firstLinkedKey].value))}this._lightingInfos.x=this.directIntensity,this._lightingInfos.y=this.emissionLuminance,this._lightingInfos.z=this.environmentIntensity*r.environmentIntensity,this._lightingInfos.w=1,f.updateVector4("vLightingIntensity",this._lightingInfos),f.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}if(r.texturesEnabled){for(let u in this._samplersList){let m=this._samplersList[u];m.value&&f.setTexture(m.samplerName,m.value)}if(aR(r,s,f,h,this.realTimeFiltering),s.ENVIRONMENTBRDF&&f.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),s.FUZZENVIRONMENTBRDF&&f.setTexture("environmentFuzzBrdfSampler",this._environmentFuzzBRDFTexture),s.REFRACTED_BACKGROUND&&(f.setTexture("backgroundRefractionSampler",this._backgroundRefractionTexture),f.updateMatrix("backgroundRefractionMatrix",this._backgroundRefractionTexture.getReflectionTextureMatrix()),$.Vector3[1].set(Math.log2(this._backgroundRefractionTexture.getSize().width),0,0),f.updateVector3("vBackgroundRefractionInfos",$.Vector3[1])),(s.ANISOTROPIC||s.FUZZ||s.REFRACTED_BACKGROUND||s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&f.setTexture("blueNoiseSampler",n._noiseTextures[this.getScene().uniqueId]),s.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&this.sssIrradianceTexture&&this.sssDepthTexture){let u=this.sssIrradianceTexture.getSize().width,m=this.sssIrradianceTexture.getSize().height;f.setTexture("sceneIrradianceSampler",this.sssIrradianceTexture),f.setTexture("sceneDepthSampler",this.sssDepthTexture),f.updateFloat2("renderTargetSize",u,m)}}this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);this.bindPropertiesForSubMesh(this._uniformBuffer,r,r.getEngine(),i),(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,this._activeEffect,s,this._maxSimultaneousLights),this.bindView(a),kf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((d=t.bakedVertexAnimationManager)==null||d.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Gf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),f.update()}getAnimatables(){let e=super.getAnimatables();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&i.value.animations&&i.value.animations.length>0&&e.push(i.value)}return this._radianceTexture&&this._radianceTexture.animations&&this._radianceTexture.animations.length>0&&e.push(this._radianceTexture),e}getActiveTextures(){let e=super.getActiveTextures();for(let t in this._samplersList){let i=this._samplersList[t];i.value&&e.push(i.value)}return this._radianceTexture&&e.push(this._radianceTexture),e}hasTexture(e){if(super.hasTexture(e))return!0;for(let t in this._samplersList)if(this._samplersList[t].value===e)return!0;return this._radianceTexture===e}setPrePassRenderer(){return!1}dispose(e,t){var i,r;if(this._breakShaderLoadedCheck=!0,t){this._environmentBRDFTexture&&this.getScene().openPBREnvironmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),this._environmentFuzzBRDFTexture&&this.getScene().environmentFuzzBRDFTexture!==this._environmentFuzzBRDFTexture&&this._environmentFuzzBRDFTexture.dispose(),this._backgroundRefractionTexture=null;for(let s in this._samplersList)(i=this._samplersList[s].value)==null||i.dispose();(r=this._radianceTexture)==null||r.dispose()}this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}_getRadianceTexture(){return this._radianceTexture?this._radianceTexture:this.getScene().environmentTexture}_prepareEffect(e,t,i,r=null,s=null,a=null,o=null){if(this._prepareDefines(e,t,i,a,o),!i.isDirty)return null;i.markAsProcessed();let c=this.getScene().getEngine(),f=new ns,d=0;i.USESPHERICALINVERTEX&&f.addFallback(d++,"USESPHERICALINVERTEX"),i.FOG&&f.addFallback(d,"FOG"),i.SPECULARAA&&f.addFallback(d,"SPECULARAA"),i.POINTSIZE&&f.addFallback(d,"POINTSIZE"),i.LOGARITHMICDEPTH&&f.addFallback(d,"LOGARITHMICDEPTH"),i.PARALLAX&&f.addFallback(d,"PARALLAX"),i.PARALLAX_RHS&&f.addFallback(d,"PARALLAX_RHS"),i.PARALLAXOCCLUSION&&f.addFallback(d++,"PARALLAXOCCLUSION"),i.ENVIRONMENTBRDF&&f.addFallback(d++,"ENVIRONMENTBRDF"),i.TANGENT&&f.addFallback(d++,"TANGENT"),d=sp(i,f,this._maxSimultaneousLights,d),i.SPECULARTERM&&f.addFallback(d++,"SPECULARTERM"),i.USESPHERICALFROMREFLECTIONMAP&&f.addFallback(d++,"USESPHERICALFROMREFLECTIONMAP"),i.USEIRRADIANCEMAP&&f.addFallback(d++,"USEIRRADIANCEMAP"),i.NORMAL&&f.addFallback(d++,"NORMAL"),i.VERTEXCOLOR&&f.addFallback(d++,"VERTEXCOLOR"),i.MORPHTARGETS&&f.addFallback(d++,"MORPHTARGETS"),i.MULTIVIEW&&f.addFallback(0,"MULTIVIEW");let h=[L.PositionKind];i.NORMAL&&h.push(L.NormalKind),i.TANGENT&&h.push(L.TangentKind);for(let E=1;E<=6;++E)i["UV"+E]&&h.push(`uv${E===1?"":E}`);i.VERTEXCOLOR&&h.push(L.ColorKind),rp(h,e,i,f),np(h,i),Ch(h,e,i),tp(h,e,i);let u="openpbr",m=["world","view","viewProjection","projection","vEyePosition","inverseProjection","renderTargetSize","vLightsType","visibility","vFogInfos","vFogColor","pointSize","mBones","normalMatrix","vLightingIntensity","logarithmicDepthConstant","vTangentSpaceParams","boneTextureInfo","vDebugMode","morphTargetTextureInfo","morphTargetTextureIndices","cameraInfo","backgroundRefractionMatrix","vBackgroundRefractionInfos"];for(let E in this._uniformsList)m.push(E);let _=["environmentBrdfSampler","boneSampler","morphTargets","oitDepthSampler","oitFrontColorSampler","areaLightsLTC1Sampler","areaLightsLTC2Sampler"];i.FUZZENVIRONMENTBRDF&&_.push("environmentFuzzBrdfSampler"),i.REFRACTED_BACKGROUND&&_.push("backgroundRefractionSampler"),(i.ANISOTROPIC||i.FUZZ||i.REFRACTED_BACKGROUND||i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING)&&_.push("blueNoiseSampler"),i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING&&(_.push("sceneIrradianceSampler"),_.push("sceneDepthSampler"));for(let E in this._samplersList){let A=this._samplersList[E];_.push(A.samplerName),m.push(A.samplerInfoName),m.push(A.samplerMatrixName)}zf(m,_,!0);let p=["Material","Scene","Mesh"],g={maxSimultaneousLights:this._maxSimultaneousLights,maxSimultaneousMorphTargets:i.NUM_MORPH_INFLUENCERS};if(this._eventInfo.fallbacks=f,this._eventInfo.fallbackRank=d,this._eventInfo.defines=i,this._eventInfo.uniforms=m,this._eventInfo.attributes=h,this._eventInfo.samplers=_,this._eventInfo.uniformBuffersNames=p,this._eventInfo.customCode=void 0,this._eventInfo.mesh=e,this._eventInfo.indexParameters=g,this._callbackPluginEventGeneric(128,this._eventInfo),ss.AddUniformsAndSamplers(m,_),$s.AddUniforms(m),$s.AddSamplers(_),Qn(m),this._useVertexPulling){let E=t==null?void 0:t.geometry;E&&(this._vertexPullingMetadata=$f(E),this._vertexPullingMetadata&&this._vertexPullingMetadata.forEach((A,R)=>{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Ht&&(Ht.PrepareUniforms(m,i),Ht.PrepareSamplers(_,i)),mp({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let T=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(h7(),d7)),Promise.resolve().then(()=>(c9(),l9))]):await Promise.all([Promise.resolve().then(()=>(E9(),v9)),Promise.resolve().then(()=>(gK(),_K))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){var d;let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();lp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,dp(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(o,i,this.canRenderToMRT&&!c),hp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i._areTexturesDirty){i._needUVs=!1;for(let h=1;h<=6;++h)i["MAINUV"+h]=!1;if(o.texturesEnabled){for(let m in this._samplersList){let _=this._samplersList[m];_.value?(ni(_.value,i,_.textureDefine),i[_.textureDefine+"_GAMMA"]=_.value.gammaSpace):i[_.textureDefine]=!1}let h=this._getRadianceTexture(),u=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;if(Hf(o,h,i,this.realTimeFiltering,this.realTimeFilteringQuality,!u),this._baseMetalnessTexture&&(i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed),i.SPECULAR_WEIGHT_IN_ALPHA=this._useSpecularWeightFromAlpha,i.SPECULAR_WEIGHT_FROM_SPECULAR_COLOR_TEXTURE=this._useSpecularWeightFromSpecularColorTexture,i.SPECULAR_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useSpecularRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_ANISOTROPY_FROM_TANGENT_TEXTURE=this._useCoatRoughnessAnisotropyFromTangentTexture,i.COAT_ROUGHNESS_FROM_GREEN_CHANNEL=this._useCoatRoughnessFromGreenChannel,i.SPECULAR_ROUGHNESS_FROM_METALNESS_TEXTURE_GREEN=this._useRoughnessFromMetallicTextureGreen,i.FUZZ_ROUGHNESS_FROM_TEXTURE_ALPHA=this._useFuzzRoughnessFromTextureAlpha,i.BASE_METALNESS_FROM_METALNESS_TEXTURE_BLUE=this._useMetallicFromMetallicTextureBlue,i.THIN_FILM_THICKNESS_FROM_THIN_FILM_TEXTURE=this._useThinFilmThicknessFromTextureGreen,i.GEOMETRY_THICKNESS_FROM_GREEN_CHANNEL=this._useGeometryThicknessFromGreenChannel,this.geometryNormalTexture?(this._useParallax&&this.baseColorTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._environmentFuzzBRDFTexture?i.FUZZENVIRONMENTBRDF=!0:i.FUZZENVIRONMENTBRDF=!1,this.hasTransparency){i.REFRACTED_BACKGROUND=!!this._backgroundRefractionTexture&&ce.RefractionTextureEnabled,i.REFRACTION_HIGH_QUALITY_BLUR=this._refractionHighQualityBlur,i.REFRACTED_LIGHTS=!0;let m=this._getRadianceTexture();m?(i.REFRACTED_ENVIRONMENT=ce.RefractionTextureEnabled,i.REFRACTED_ENVIRONMENT_OPPOSITEZ=this.getScene().useRightHandedSystem?!m.invertZ:m.invertZ,i.REFRACTED_ENVIRONMENT_LOCAL_CUBE=m.isCube&&m.boundingBoxSize):i.REFRACTED_ENVIRONMENT=!1}else i.REFRACTED_BACKGROUND=!1,i.REFRACTED_LIGHTS=!1,i.REFRACTED_ENVIRONMENT=!1;this._shouldUseAlphaFromBaseColorTexture()?i.ALPHA_FROM_BASE_COLOR_TEXTURE=!0:i.ALPHA_FROM_BASE_COLOR_TEXTURE=!1}this._lightFalloff===Se.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===Se.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e)),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,(this.specularRoughnessAnisotropy>0||this.coatRoughnessAnisotropy>0)&&n._noiseTextures[o.uniqueId]&&ce.ReflectionTextureEnabled?(i.ANISOTROPIC=!0,e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._useGltfStyleAnisotropy&&(i.USE_GLTF_STYLE_ANISOTROPY=!0),i.ANISOTROPIC_BASE=this.specularRoughnessAnisotropy>0,i.ANISOTROPIC_COAT=this.coatRoughnessAnisotropy>0):(i.ANISOTROPIC=!1,i.USE_GLTF_STYLE_ANISOTROPY=!1,i.ANISOTROPIC_BASE=!1,i.ANISOTROPIC_COAT=!1),i.THIN_FILM=this.thinFilmWeight>0,i.IRIDESCENCE=this.thinFilmWeight>0,i.DISPERSION=this.transmissionDispersionScale>0,i.SCATTERING=this.hasScattering;let f=[8,16,32];if(i.SSS_SAMPLE_COUNT=(d=f[this._sssQuality])!=null?d:16,i.TRANSMISSION_SLAB=this.transmissionWeight>0,i.TRANSMISSION_SLAB_VOLUME=this.transmissionWeight>0&&this.transmissionDepth>0,i.SUBSURFACE_SLAB=this.subsurfaceWeight>0,!i.PREPASS&&(i.SUBSURFACE_SLAB||i.TRANSMISSION_SLAB_VOLUME)){let h=!1;if(!this.sssIrradianceTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(Ms.IRRADIANCE_TEXTURE_TYPE);this.sssIrradianceTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}if(!this.sssDepthTexture&&o.geometryBufferRenderer){let u=o.geometryBufferRenderer.getTextureIndex(Ms.SCREENSPACE_DEPTH_TEXTURE_TYPE);this.sssDepthTexture=o.geometryBufferRenderer.getGBuffer().textures[u],h=!0}this.sssIrradianceTexture&&this.sssDepthTexture&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING=!0,h&&(i.USE_IRRADIANCE_TEXTURE_FOR_SCATTERING_GBUFFER=!0))}i.FUZZ=this.fuzzWeight>0&&ce.ReflectionTextureEnabled,i.GEOMETRY_THIN_WALLED=this.geometryThinWalled!=0,i.FUZZ?(e.isVerticesDataPresent(L.TangentKind)||(i._needUVs=!0,i.MAINUV1=!0),this._environmentFuzzBRDFTexture=lN(this.getScene()),i.FUZZ_IBL_SAMPLES=this.fuzzSampleNumber):(this._environmentFuzzBRDFTexture=null,i.FUZZENVIRONMENTBRDF=!1,i.FUZZ_IBL_SAMPLES=0),i._areMiscDirty&&(ap(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(L.NormalKind),i.DEBUGMODE=this._debugMode),cp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),fp(e,i,!0,!0,!0,this._transparencyMode!==Se.MATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}};Ne.SSS_QUALITY_LOW=0;Ne.SSS_QUALITY_MEDIUM=1;Ne.SSS_QUALITY_HIGH=2;Ne._noiseTextures={};Ne.ForceGLSL=!1;P([_t("_markAllSubMeshesAsTexturesDirty","baseWeight")],Ne.prototype,"_baseWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseWeightTexture")],Ne.prototype,"_baseWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseColor")],Ne.prototype,"_baseColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseColorTexture")],Ne.prototype,"_baseColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughness")],Ne.prototype,"_baseDiffuseRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseDiffuseRoughnessTexture")],Ne.prototype,"_baseDiffuseRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseMetalness")],Ne.prototype,"_baseMetalness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","baseMetalnessTexture")],Ne.prototype,"_baseMetalnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularWeight")],Ne.prototype,"_specularWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularWeightTexture")],Ne.prototype,"_specularWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularColor")],Ne.prototype,"_specularColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularColorTexture")],Ne.prototype,"_specularColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughness")],Ne.prototype,"_specularRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessTexture")],Ne.prototype,"_specularRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropy")],Ne.prototype,"_specularRoughnessAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularRoughnessAnisotropyTexture")],Ne.prototype,"_specularRoughnessAnisotropyTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","specularIor")],Ne.prototype,"_specularIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionWeight")],Ne.prototype,"_transmissionWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionWeightTexture")],Ne.prototype,"_transmissionWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionColor")],Ne.prototype,"_transmissionColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionColorTexture")],Ne.prototype,"_transmissionColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDepth")],Ne.prototype,"_transmissionDepth",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDepthTexture")],Ne.prototype,"_transmissionDepthTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatter")],Ne.prototype,"_transmissionScatter",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatterTexture")],Ne.prototype,"_transmissionScatterTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionScatterAnisotropy")],Ne.prototype,"_transmissionScatterAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScale")],Ne.prototype,"_transmissionDispersionScale",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionScaleTexture")],Ne.prototype,"_transmissionDispersionScaleTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","transmissionDispersionAbbeNumber")],Ne.prototype,"_transmissionDispersionAbbeNumber",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceWeight")],Ne.prototype,"_subsurfaceWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceWeightTexture")],Ne.prototype,"_subsurfaceWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceColor")],Ne.prototype,"_subsurfaceColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceColorTexture")],Ne.prototype,"_subsurfaceColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadius")],Ne.prototype,"_subsurfaceRadius",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScale")],Ne.prototype,"_subsurfaceRadiusScale",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceRadiusScaleTexture")],Ne.prototype,"_subsurfaceRadiusScaleTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","subsurfaceScatterAnisotropy")],Ne.prototype,"_subsurfaceScatterAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatWeight")],Ne.prototype,"_coatWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatWeightTexture")],Ne.prototype,"_coatWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatColor")],Ne.prototype,"_coatColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatColorTexture")],Ne.prototype,"_coatColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughness")],Ne.prototype,"_coatRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessTexture")],Ne.prototype,"_coatRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropy")],Ne.prototype,"_coatRoughnessAnisotropy",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatRoughnessAnisotropyTexture")],Ne.prototype,"_coatRoughnessAnisotropyTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatIor")],Ne.prototype,"_coatIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatDarkening")],Ne.prototype,"_coatDarkening",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","coatDarkeningTexture")],Ne.prototype,"_coatDarkeningTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzWeight")],Ne.prototype,"_fuzzWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzWeightTexture")],Ne.prototype,"_fuzzWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzColor")],Ne.prototype,"_fuzzColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzColorTexture")],Ne.prototype,"_fuzzColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzRoughness")],Ne.prototype,"_fuzzRoughness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","fuzzRoughnessTexture")],Ne.prototype,"_fuzzRoughnessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThinWalled")],Ne.prototype,"_geometryThinWalled",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryNormalTexture")],Ne.prototype,"_geometryNormalTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryTangent")],Ne.prototype,"_geometryTangent",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryTangentTexture")],Ne.prototype,"_geometryTangentTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatNormalTexture")],Ne.prototype,"_geometryCoatNormalTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatTangent")],Ne.prototype,"_geometryCoatTangent",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryCoatTangentTexture")],Ne.prototype,"_geometryCoatTangentTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryOpacity")],Ne.prototype,"_geometryOpacity",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryOpacityTexture")],Ne.prototype,"_geometryOpacityTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThickness")],Ne.prototype,"_geometryThickness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","geometryThicknessTexture")],Ne.prototype,"_geometryThicknessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionLuminance")],Ne.prototype,"_emissionLuminance",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionColor")],Ne.prototype,"_emissionColor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","emissionColorTexture")],Ne.prototype,"_emissionColorTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmWeight")],Ne.prototype,"_thinFilmWeight",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmWeightTexture")],Ne.prototype,"_thinFilmWeightTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThickness")],Ne.prototype,"_thinFilmThickness",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessMin")],Ne.prototype,"_thinFilmThicknessMin",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmThicknessTexture")],Ne.prototype,"_thinFilmThicknessTexture",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","thinFilmIor")],Ne.prototype,"_thinFilmIor",void 0);P([_t("_markAllSubMeshesAsTexturesDirty","ambientOcclusionTexture")],Ne.prototype,"_ambientOcclusionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useSpecularWeightFromTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],Ne.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAmbientInGrayScale",void 0);P([F()],Ne.prototype,"usePhysicalLightFalloff",null);P([F()],Ne.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],Ne.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ne.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"applyDecalMapAfterDetailMap",void 0);P([le("_markAllSubMeshesAsMiscDirty")],Ne.prototype,"debugMode",void 0);P([F()],Ne.prototype,"transparencyMode",null);Ut("BABYLON.OpenPBRMaterial",Ne)});var SK={};Fe(SK,{OpenPBRMaterialLoadingAdapter:()=>aw});var aw,TK=I(()=>{zt();aw=class{constructor(e){this._diffuseTransmissionTint=Ee.White(),this._diffuseTransmissionTintTexture=null,this._material=e}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){}get alphaCutOff(){return .5}set useAlphaFromBaseColorTexture(e){this._material._useAlphaFromBaseColorTexture=e}get useAlphaFromBaseColorTexture(){return!1}get transparencyAsAlphaCoverage(){return!1}set transparencyAsAlphaCoverage(e){}set baseColor(e){this._material.baseColor=e}get baseColor(){return this._material.baseColor}set baseColorTexture(e){this._material.baseColorTexture=e}get baseColorTexture(){return this._material.baseColorTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e}get baseDiffuseRoughness(){return this._material.baseDiffuseRoughness}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.baseMetalness=e}get baseMetalness(){return this._material.baseMetalness}set baseMetalnessTexture(e){this._material.baseMetalnessTexture=e}get baseMetalnessTexture(){return this._material.baseMetalnessTexture}set useRoughnessFromMetallicTextureGreen(e){this._material._useRoughnessFromMetallicTextureGreen=e}set useMetallicFromMetallicTextureBlue(e){this._material._useMetallicFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){}set specularWeight(e){this._material.specularWeight=e}get specularWeight(){return this._material.specularWeight}set specularWeightTexture(e){this._material.specularColorTexture===e?(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0):this._material.specularWeightTexture=e}get specularWeightTexture(){return this._material.specularWeightTexture}set specularColor(e){this._material.specularColor=e}get specularColor(){return this._material.specularColor}set specularColorTexture(e){this._material.specularColorTexture=e,this._material.specularWeightTexture===this._material.specularColorTexture&&(this._material.specularWeightTexture=null,this._material._useSpecularWeightFromSpecularColorTexture=!0,this._material._useSpecularWeightFromAlpha=!0)}get specularColorTexture(){return this._material.specularColorTexture}set specularRoughness(e){this._material.specularRoughness=e}get specularRoughness(){return this._material.specularRoughness}set specularRoughnessTexture(e){this._material.specularRoughnessTexture=e}get specularRoughnessTexture(){return this._material.specularRoughnessTexture}set specularIor(e){this._material.specularIor=e}get specularIor(){return this._material.specularIor}set emissionColor(e){this._material.emissionColor=e}get emissionColor(){return this._material.emissionColor}set emissionLuminance(e){this._material.emissionLuminance=e}get emissionLuminance(){return this._material.emissionLuminance}set emissionColorTexture(e){this._material.emissionColorTexture=e}get emissionColorTexture(){return this._material.emissionColorTexture}set ambientOcclusionTexture(e){this._material.ambientOcclusionTexture=e}get ambientOcclusionTexture(){return this._material.ambientOcclusionTexture}set ambientOcclusionTextureStrength(e){let t=this._material.ambientOcclusionTexture;t&&(t.level=e)}get ambientOcclusionTextureStrength(){var t;let e=this._material.ambientOcclusionTexture;return(t=e==null?void 0:e.level)!=null?t:1}configureCoat(){}set coatWeight(e){this._material.coatWeight=e}get coatWeight(){return this._material.coatWeight}set coatWeightTexture(e){this._material.coatWeightTexture=e}get coatWeightTexture(){return this._material.coatWeightTexture}set coatColor(e){this._material.coatColor=e}set coatColorTexture(e){this._material.coatColorTexture=e}set coatRoughness(e){this._material.coatRoughness=e}get coatRoughness(){return this._material.coatRoughness}set coatRoughnessTexture(e){this._material.coatRoughnessTexture=e,e&&(this._material._useCoatRoughnessFromGreenChannel=!0)}get coatRoughnessTexture(){return this._material.coatRoughnessTexture}set coatIor(e){this._material.coatIor=e}set coatDarkening(e){this._material.coatDarkening=e}set coatDarkeningTexture(e){this._material.coatDarkeningTexture=e}set coatRoughnessAnisotropy(e){this._material.coatRoughnessAnisotropy=e}get coatRoughnessAnisotropy(){return this._material.coatRoughnessAnisotropy}set geometryCoatTangentAngle(e){this._material.geometryCoatTangentAngle=e}set geometryCoatTangentTexture(e){this._material.geometryCoatTangentTexture=e,e&&(this._material._useCoatRoughnessAnisotropyFromTangentTexture=!0)}get geometryCoatTangentTexture(){return this._material.geometryCoatTangentTexture}configureTransmission(){this._material.geometryThinWalled=1,this._material.transmissionDepth=0}set transmissionWeight(e){this._material.transmissionWeight=e}set transmissionWeightTexture(e){this._material.transmissionWeightTexture=e}get transmissionWeight(){return this._material.transmissionWeight}set transmissionScatter(e){this._material.transmissionScatter=e}get transmissionScatter(){return this._material.transmissionScatter}set transmissionScatterTexture(e){this._material.transmissionScatterTexture=e}get transmissionScatterTexture(){return this._material.transmissionScatterTexture}set transmissionScatterAnisotropy(e){this._material.transmissionScatterAnisotropy=e}set transmissionDispersionAbbeNumber(e){this._material.transmissionDispersionAbbeNumber=e}set transmissionDispersionScale(e){this._material.transmissionDispersionScale=e}set transmissionDepth(e){e!==Number.MAX_VALUE||this._material.transmissionDepth!==0?this._material.transmissionDepth=e:this._material.transmissionDepth=0}get transmissionDepth(){return this._material.transmissionDepth}set transmissionColor(e){e.equals(Ee.White())||(this._material.transmissionColor=e)}get transmissionColor(){return this._material.transmissionColor}get refractionBackgroundTexture(){return this._material.backgroundRefractionTexture}set refractionBackgroundTexture(e){this._material.backgroundRefractionTexture=e}configureVolume(){this._material.geometryThinWalled=0}set geometryThinWalled(e){this._material.geometryThinWalled=e?1:0}get geometryThinWalled(){return!!this._material.geometryThinWalled}set volumeThicknessTexture(e){this._material.geometryThicknessTexture=e,this._material._useGeometryThicknessFromGreenChannel=!0}set volumeThickness(e){this._material.geometryThickness=e}configureSubsurface(){this._material.geometryThinWalled=1,this._material.subsurfaceScatterAnisotropy=1}set subsurfaceWeight(e){this._material.subsurfaceWeight=e}get subsurfaceWeight(){return this._material.subsurfaceWeight}set subsurfaceWeightTexture(e){this._material.subsurfaceWeightTexture=e}set subsurfaceColor(e){this._material.subsurfaceColor=e}set subsurfaceColorTexture(e){this._material.subsurfaceColorTexture=e}set diffuseTransmissionTint(e){this._diffuseTransmissionTint=e}get diffuseTransmissionTint(){return this._diffuseTransmissionTint}set diffuseTransmissionTintTexture(e){this._diffuseTransmissionTintTexture=e}get subsurfaceRadius(){return this._material.subsurfaceRadius}set subsurfaceRadius(e){this._material.subsurfaceRadius=e}get subsurfaceRadiusScale(){return this._material.subsurfaceRadiusScale}set subsurfaceRadiusScale(e){this._material.subsurfaceRadiusScale=e}set subsurfaceScatterAnisotropy(e){this._material.subsurfaceScatterAnisotropy=e}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){}set fuzzWeight(e){this._material.fuzzWeight=e}set fuzzWeightTexture(e){this._material.fuzzWeightTexture=e}set fuzzColor(e){this._material.fuzzColor=e}set fuzzColorTexture(e){this._material.fuzzColorTexture=e}set fuzzRoughness(e){this._material.fuzzRoughness=e}set fuzzRoughnessTexture(e){this._material.fuzzRoughnessTexture=e,this._material._useFuzzRoughnessFromTextureAlpha=!0}set specularRoughnessAnisotropy(e){this._material.specularRoughnessAnisotropy=e}get specularRoughnessAnisotropy(){return this._material.specularRoughnessAnisotropy}set geometryTangentAngle(e){this._material.geometryTangentAngle=e}set geometryTangentTexture(e){this._material.geometryTangentTexture=e,this._material._useSpecularRoughnessAnisotropyFromTangentTexture=!0}get geometryTangentTexture(){return this._material.geometryTangentTexture}configureGltfStyleAnisotropy(e=!0){this._material._useGltfStyleAnisotropy=e}set thinFilmWeight(e){this._material.thinFilmWeight=e}set thinFilmIor(e){this._material.thinFilmIor=e}set thinFilmThicknessMinimum(e){this._material.thinFilmThicknessMin=e/1e3}set thinFilmThicknessMaximum(e){this._material.thinFilmThickness=e/1e3}set thinFilmWeightTexture(e){this._material.thinFilmWeightTexture=e}set thinFilmThicknessTexture(e){this._material.thinFilmThicknessTexture=e,this._material._useThinFilmThicknessFromTextureGreen=!0}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.geometryOpacity=e}get geometryOpacity(){return this._material.geometryOpacity}set geometryNormalTexture(e){this._material.geometryNormalTexture=e}get geometryNormalTexture(){return this._material.geometryNormalTexture}setNormalMapInversions(e,t){}set geometryCoatNormalTexture(e){this._material.geometryCoatNormalTexture=e}get geometryCoatNormalTexture(){return this._material.geometryCoatNormalTexture}set geometryCoatNormalTextureScale(e){this._material.geometryCoatNormalTexture&&(this._material.geometryCoatNormalTexture.level=e)}finalize(){(this._diffuseTransmissionTint&&!this._diffuseTransmissionTint.equals(Ee.White())||this._diffuseTransmissionTintTexture)&&(this._material.geometryThinWalled?(this.subsurfaceColor=this._diffuseTransmissionTint,this.subsurfaceColorTexture=this._diffuseTransmissionTintTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.White())||this.baseColorTexture)&&(this._material.coatWeight=this.subsurfaceWeight,this._material.coatWeightTexture=this.subsurfaceWeightTexture,this._material.coatColor=this._diffuseTransmissionTint,this._material.coatColorTexture=this._diffuseTransmissionTintTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture,this._material.specularRoughness=1,this._material.specularRoughnessTexture=null)),this.transmissionWeight>0&&(this._material.geometryThinWalled||this._material.transmissionDepth===0?(this._material.transmissionColor=this._material.baseColor,this._material.transmissionColorTexture=this._material.baseColorTexture):this._material.coatWeight==0&&(!this.baseColor.equals(Ee.White())||this.baseColorTexture!==null)&&(this._material.coatWeight=this.transmissionWeight,this._material.coatWeightTexture=this.transmissionWeightTexture,this._material.coatColor=this.baseColor,this._material.coatColorTexture=this.baseColorTexture,this._material.coatIor=this._material.specularIor,this._material.coatDarkening=0,this._material.coatRoughness=this._material.specularRoughness,this._material.coatRoughnessTexture=this._material.specularRoughnessTexture))}}});var ow,Fr,AK=I(()=>{Wt();kt();ja();id();ow=class extends Lr{constructor(){super(...arguments),this.BRDF_V_HEIGHT_CORRELATED=!1,this.MS_BRDF_ENERGY_CONSERVATION=!1,this.SPHERICAL_HARMONICS=!1,this.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=!1,this.MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0,this.LEGACY_SPECULAR_ENERGY_CONSERVATION=!1,this.BASE_DIFFUSE_MODEL=0,this.DIELECTRIC_SPECULAR_MODEL=0,this.CONDUCTOR_SPECULAR_MODEL=0}},Fr=class n extends jr{_markAllSubMeshesAsMiscDirty(){this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRBRDF",90,new ow,t),this._useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this.useEnergyConservation=n.DEFAULT_USE_ENERGY_CONSERVATION,this._useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this.useSmithVisibilityHeightCorrelated=n.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED,this._useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this.useSphericalHarmonics=n.DEFAULT_USE_SPHERICAL_HARMONICS,this._useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this.useSpecularGlossinessInputEnergyConservation=n.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION,this._mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this.mixIblRadianceWithIrradiance=n.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE,this._useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this.useLegacySpecularEnergyConservation=n.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION,this._baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this.baseDiffuseModel=n.DEFAULT_DIFFUSE_MODEL,this._dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this.dielectricSpecularModel=n.DEFAULT_DIELECTRIC_SPECULAR_MODEL,this._conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this.conductorSpecularModel=n.DEFAULT_CONDUCTOR_SPECULAR_MODEL,this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16],this._enable(!0)}prepareDefines(e){e.BRDF_V_HEIGHT_CORRELATED=this._useSmithVisibilityHeightCorrelated,e.MS_BRDF_ENERGY_CONSERVATION=this._useEnergyConservation&&this._useSmithVisibilityHeightCorrelated,e.SPHERICAL_HARMONICS=this._useSphericalHarmonics,e.SPECULAR_GLOSSINESS_ENERGY_CONSERVATION=this._useSpecularGlossinessInputEnergyConservation,e.MIX_IBL_RADIANCE_WITH_IRRADIANCE=this._mixIblRadianceWithIrradiance&&!this._material._disableLighting,e.LEGACY_SPECULAR_ENERGY_CONSERVATION=this._useLegacySpecularEnergyConservation,e.BASE_DIFFUSE_MODEL=this._baseDiffuseModel,e.DIELECTRIC_SPECULAR_MODEL=this._dielectricSpecularModel,e.CONDUCTOR_SPECULAR_MODEL=this._conductorSpecularModel}getClassName(){return"PBRBRDFConfiguration"}};Fr.DEFAULT_USE_ENERGY_CONSERVATION=!0;Fr.DEFAULT_USE_SMITH_VISIBILITY_HEIGHT_CORRELATED=!0;Fr.DEFAULT_USE_SPHERICAL_HARMONICS=!0;Fr.DEFAULT_USE_SPECULAR_GLOSSINESS_INPUT_ENERGY_CONSERVATION=!0;Fr.DEFAULT_MIX_IBL_RADIANCE_WITH_IRRADIANCE=!0;Fr.DEFAULT_USE_LEGACY_SPECULAR_ENERGY_CONSERVATION=!0;Fr.DEFAULT_DIFFUSE_MODEL=0;Fr.DEFAULT_DIELECTRIC_SPECULAR_MODEL=0;Fr.DEFAULT_CONDUCTOR_SPECULAR_MODEL=0;P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSmithVisibilityHeightCorrelated",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSphericalHarmonics",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useSpecularGlossinessInputEnergyConservation",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"mixIblRadianceWithIrradiance",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"useLegacySpecularEnergyConservation",void 0);P([F("baseDiffuseModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"baseDiffuseModel",void 0);P([F("dielectricSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"dielectricSpecularModel",void 0);P([F("conductorSpecularModel"),le("_markAllSubMeshesAsMiscDirty")],Fr.prototype,"conductorSpecularModel",void 0)});var lw,mn,xK=I(()=>{Wt();kt();zt();Ya();id();ja();es();lw=class extends Lr{constructor(){super(...arguments),this.CLEARCOAT=!1,this.CLEARCOAT_DEFAULTIOR=!1,this.CLEARCOAT_TEXTURE=!1,this.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this.CLEARCOAT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,this.CLEARCOAT_BUMP=!1,this.CLEARCOAT_BUMPDIRECTUV=0,this.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,this.CLEARCOAT_REMAP_F0=!1,this.CLEARCOAT_TINT=!1,this.CLEARCOAT_TINT_TEXTURE=!1,this.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,this.CLEARCOAT_TINT_GAMMATEXTURE=!1}},mn=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRClearCoat",100,new lw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.roughness=0,this._indexOfRefraction=n._DefaultIndexOfRefraction,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._textureRoughness=null,this.textureRoughness=null,this._remapF0OnInterfaceChange=!0,this.remapF0OnInterfaceChange=!0,this._bumpTexture=null,this.bumpTexture=null,this._isTintEnabled=!1,this.isTintEnabled=!1,this.tintColor=Ee.White(),this.tintColorAtDistance=1,this.tintThickness=1,this._tintTexture=null,this.tintTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t,i){if(!this._isEnabled)return!0;let r=this._material._disableBumpMap;return!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.ClearCoatTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking()||i.getCaps().standardDerivatives&&this._bumpTexture&&ce.ClearCoatBumpTextureEnabled&&!r&&!this._bumpTexture.isReady()||this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&!this._tintTexture.isReadyOrNotBlocking()))}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.CLEARCOAT=!0,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e.CLEARCOAT_REMAP_F0=this._remapF0OnInterfaceChange,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled?ni(this._texture,e,"CLEARCOAT_TEXTURE"):e.CLEARCOAT_TEXTURE=!1,this._textureRoughness&&ce.ClearCoatTextureEnabled?ni(this._textureRoughness,e,"CLEARCOAT_TEXTURE_ROUGHNESS"):e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,this._bumpTexture&&ce.ClearCoatBumpTextureEnabled?ni(this._bumpTexture,e,"CLEARCOAT_BUMP"):e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_DEFAULTIOR=this._indexOfRefraction===n._DefaultIndexOfRefraction,this._isTintEnabled?(e.CLEARCOAT_TINT=!0,this._tintTexture&&ce.ClearCoatTintTextureEnabled?(ni(this._tintTexture,e,"CLEARCOAT_TINT_TEXTURE"),e.CLEARCOAT_TINT_GAMMATEXTURE=this._tintTexture.gammaSpace):e.CLEARCOAT_TINT_TEXTURE=!1):(e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1))):(e.CLEARCOAT=!1,e.CLEARCOAT_TEXTURE=!1,e.CLEARCOAT_TEXTURE_ROUGHNESS=!1,e.CLEARCOAT_BUMP=!1,e.CLEARCOAT_TINT=!1,e.CLEARCOAT_TINT_TEXTURE=!1,e.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.CLEARCOAT_DEFAULTIOR=!1,e.CLEARCOAT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TEXTURE_ROUGHNESSDIRECTUV=0,e.CLEARCOAT_BUMPDIRECTUV=0,e.CLEARCOAT_REMAP_F0=!1,e.CLEARCOAT_TINT_TEXTUREDIRECTUV=0,e.CLEARCOAT_TINT_GAMMATEXTURE=!1)}bindForSubMesh(e,t,i,r){var f,d,h,u,m,_,p,g;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material._disableBumpMap,l=this._material._invertNormalMapX,c=this._material._invertNormalMapY;if(!e.useUbo||!a||!e.isSync){(this._texture||this._textureRoughness)&&ce.ClearCoatTextureEnabled&&(e.updateFloat4("vClearCoatInfos",(d=(f=this._texture)==null?void 0:f.coordinatesIndex)!=null?d:0,(u=(h=this._texture)==null?void 0:h.level)!=null?u:0,(_=(m=this._textureRoughness)==null?void 0:m.coordinatesIndex)!=null?_:0,(g=(p=this._textureRoughness)==null?void 0:p.level)!=null?g:0),this._texture&&si(this._texture,e,"clearCoat"),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&si(this._textureRoughness,e,"clearCoatRoughness")),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatTextureEnabled&&!o&&(e.updateFloat2("vClearCoatBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level),si(this._bumpTexture,e,"clearCoatBump"),t._mirroredCameraPosition?e.updateFloat2("vClearCoatTangentSpaceParams",l?1:-1,c?1:-1):e.updateFloat2("vClearCoatTangentSpaceParams",l?-1:1,c?-1:1)),this._tintTexture&&ce.ClearCoatTintTextureEnabled&&(e.updateFloat2("vClearCoatTintInfos",this._tintTexture.coordinatesIndex,this._tintTexture.level),si(this._tintTexture,e,"clearCoatTint")),e.updateFloat2("vClearCoatParams",this.intensity,this.roughness);let v=1-this._indexOfRefraction,T=1+this._indexOfRefraction,S=Math.pow(-v/T,2),E=1/this._indexOfRefraction;e.updateFloat4("vClearCoatRefractionParams",S,E,v,T),this._isTintEnabled&&(e.updateFloat4("vClearCoatTintParams",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintThickness)),e.updateFloat("clearCoatColorAtDistance",Math.max(1e-5,this.tintColorAtDistance)))}t.texturesEnabled&&(this._texture&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatSampler",this._texture),this._textureRoughness&&!s.CLEARCOAT_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.ClearCoatTextureEnabled&&e.setTexture("clearCoatRoughnessSampler",this._textureRoughness),this._bumpTexture&&i.getCaps().standardDerivatives&&ce.ClearCoatBumpTextureEnabled&&!o&&e.setTexture("clearCoatBumpSampler",this._bumpTexture),this._isTintEnabled&&this._tintTexture&&ce.ClearCoatTintTextureEnabled&&e.setTexture("clearCoatTintSampler",this._tintTexture))}hasTexture(e){return this._texture===e||this._textureRoughness===e||this._bumpTexture===e||this._tintTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness),this._bumpTexture&&e.push(this._bumpTexture),this._tintTexture&&e.push(this._tintTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._tintTexture&&this._tintTexture.animations&&this._tintTexture.animations.length>0&&e.push(this._tintTexture)}dispose(e){var t,i,r,s;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose(),(r=this._bumpTexture)==null||r.dispose(),(s=this._tintTexture)==null||s.dispose())}getClassName(){return"PBRClearCoatConfiguration"}addFallbacks(e,t,i){return e.CLEARCOAT_BUMP&&t.addFallback(i++,"CLEARCOAT_BUMP"),e.CLEARCOAT_TINT&&t.addFallback(i++,"CLEARCOAT_TINT"),e.CLEARCOAT&&t.addFallback(i++,"CLEARCOAT"),i}getSamplers(e){e.push("clearCoatSampler","clearCoatRoughnessSampler","clearCoatBumpSampler","clearCoatTintSampler")}getUniforms(){return{ubo:[{name:"vClearCoatParams",size:2,type:"vec2"},{name:"vClearCoatRefractionParams",size:4,type:"vec4"},{name:"vClearCoatInfos",size:4,type:"vec4"},{name:"clearCoatMatrix",size:16,type:"mat4"},{name:"clearCoatRoughnessMatrix",size:16,type:"mat4"},{name:"vClearCoatBumpInfos",size:2,type:"vec2"},{name:"vClearCoatTangentSpaceParams",size:2,type:"vec2"},{name:"clearCoatBumpMatrix",size:16,type:"mat4"},{name:"vClearCoatTintParams",size:4,type:"vec4"},{name:"clearCoatColorAtDistance",size:1,type:"float"},{name:"vClearCoatTintInfos",size:2,type:"vec2"},{name:"clearCoatTintMatrix",size:16,type:"mat4"}]}}};mn._DefaultIndexOfRefraction=1.5;P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"isEnabled",void 0);P([F()],mn.prototype,"intensity",void 0);P([F()],mn.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"indexOfRefraction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"useRoughnessFromMainTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"remapF0OnInterfaceChange",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"bumpTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"isTintEnabled",void 0);P([Ir()],mn.prototype,"tintColor",void 0);P([F()],mn.prototype,"tintColorAtDistance",void 0);P([F()],mn.prototype,"tintThickness",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],mn.prototype,"tintTexture",void 0)});var cw,ea,RK=I(()=>{Wt();kt();Ya();id();ja();es();cw=class extends Lr{constructor(){super(...arguments),this.IRIDESCENCE=!1,this.IRIDESCENCE_TEXTURE=!1,this.IRIDESCENCE_TEXTUREDIRECTUV=0,this.IRIDESCENCE_THICKNESS_TEXTURE=!1,this.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0}},ea=class n extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRIridescence",110,new cw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.minimumThickness=n._DefaultMinimumThickness,this.maximumThickness=n._DefaultMaximumThickness,this.indexOfRefraction=n._DefaultIndexOfRefraction,this._texture=null,this.texture=null,this._thicknessTexture=null,this.thicknessTexture=null,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._thicknessTexture&&ce.IridescenceTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.IRIDESCENCE=!0,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled?ni(this._texture,e,"IRIDESCENCE_TEXTURE"):e.IRIDESCENCE_TEXTURE=!1,this._thicknessTexture&&ce.IridescenceTextureEnabled?ni(this._thicknessTexture,e,"IRIDESCENCE_THICKNESS_TEXTURE"):e.IRIDESCENCE_THICKNESS_TEXTURE=!1)):(e.IRIDESCENCE=!1,e.IRIDESCENCE_TEXTURE=!1,e.IRIDESCENCE_THICKNESS_TEXTURE=!1,e.IRIDESCENCE_TEXTUREDIRECTUV=0,e.IRIDESCENCE_THICKNESS_TEXTUREDIRECTUV=0)}bindForSubMesh(e,t){var r,s,a,o,l,c,f,d;if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&((this._texture||this._thicknessTexture)&&ce.IridescenceTextureEnabled&&(e.updateFloat4("vIridescenceInfos",(s=(r=this._texture)==null?void 0:r.coordinatesIndex)!=null?s:0,(o=(a=this._texture)==null?void 0:a.level)!=null?o:0,(c=(l=this._thicknessTexture)==null?void 0:l.coordinatesIndex)!=null?c:0,(d=(f=this._thicknessTexture)==null?void 0:f.level)!=null?d:0),this._texture&&si(this._texture,e,"iridescence"),this._thicknessTexture&&si(this._thicknessTexture,e,"iridescenceThickness")),e.updateFloat4("vIridescenceParams",this.intensity,this.indexOfRefraction,this.minimumThickness,this.maximumThickness)),t.texturesEnabled&&(this._texture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceSampler",this._texture),this._thicknessTexture&&ce.IridescenceTextureEnabled&&e.setTexture("iridescenceThicknessSampler",this._thicknessTexture))}hasTexture(e){return this._texture===e||this._thicknessTexture===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._thicknessTexture&&e.push(this._thicknessTexture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._thicknessTexture)==null||i.dispose())}getClassName(){return"PBRIridescenceConfiguration"}addFallbacks(e,t,i){return e.IRIDESCENCE&&t.addFallback(i++,"IRIDESCENCE"),i}getSamplers(e){e.push("iridescenceSampler","iridescenceThicknessSampler")}getUniforms(){return{ubo:[{name:"vIridescenceParams",size:4,type:"vec4"},{name:"vIridescenceInfos",size:4,type:"vec4"},{name:"iridescenceMatrix",size:16,type:"mat4"},{name:"iridescenceThicknessMatrix",size:16,type:"mat4"}]}}};ea._DefaultMinimumThickness=100;ea._DefaultMaximumThickness=400;ea._DefaultIndexOfRefraction=1.3;P([F(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"isEnabled",void 0);P([F()],ea.prototype,"intensity",void 0);P([F()],ea.prototype,"minimumThickness",void 0);P([F()],ea.prototype,"maximumThickness",void 0);P([F()],ea.prototype,"indexOfRefraction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"texture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],ea.prototype,"thicknessTexture",void 0)});var fw,Hc,bK=I(()=>{Wt();kt();Zi();ke();Ya();id();ja();es();fw=class extends Lr{constructor(){super(...arguments),this.ANISOTROPIC=!1,this.ANISOTROPIC_TEXTURE=!1,this.ANISOTROPIC_TEXTUREDIRECTUV=0,this.ANISOTROPIC_LEGACY=!1,this.MAINUV1=!1}},Hc=class extends jr{set angle(e){this.direction.x=Math.cos(e),this.direction.y=Math.sin(e)}get angle(){return Math.atan2(this.direction.y,this.direction.x)}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markAllSubMeshesAsMiscDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsMiscDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRAnisotropic",110,new fw,t),this._isEnabled=!1,this.isEnabled=!1,this.intensity=1,this.direction=new we(1,0),this._texture=null,this.texture=null,this._legacy=!1,this.legacy=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkAllSubMeshesAsMiscDirty=e._dirtyCallbacks[16]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&!this._texture.isReadyOrNotBlocking()):!0}prepareDefinesBeforeAttributes(e,t,i){this._isEnabled?(e.ANISOTROPIC=this._isEnabled,this._isEnabled&&!i.isVerticesDataPresent(L.TangentKind)&&(e._needUVs=!0,e.MAINUV1=!0),e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.AnisotropicTextureEnabled?ni(this._texture,e,"ANISOTROPIC_TEXTURE"):e.ANISOTROPIC_TEXTURE=!1),e._areMiscDirty&&(e.ANISOTROPIC_LEGACY=this._legacy)):(e.ANISOTROPIC=!1,e.ANISOTROPIC_TEXTURE=!1,e.ANISOTROPIC_TEXTUREDIRECTUV=0,e.ANISOTROPIC_LEGACY=!1)}bindForSubMesh(e,t){if(!this._isEnabled)return;let i=this._material.isFrozen;(!e.useUbo||!i||!e.isSync)&&(this._texture&&ce.AnisotropicTextureEnabled&&(e.updateFloat2("vAnisotropyInfos",this._texture.coordinatesIndex,this._texture.level),si(this._texture,e,"anisotropy")),e.updateFloat3("vAnisotropy",this.direction.x,this.direction.y,this.intensity)),t.texturesEnabled&&this._texture&&ce.AnisotropicTextureEnabled&&e.setTexture("anisotropySampler",this._texture)}hasTexture(e){return this._texture===e}getActiveTextures(e){this._texture&&e.push(this._texture)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture)}dispose(e){e&&this._texture&&this._texture.dispose()}getClassName(){return"PBRAnisotropicConfiguration"}addFallbacks(e,t,i){return e.ANISOTROPIC&&t.addFallback(i++,"ANISOTROPIC"),i}getSamplers(e){e.push("anisotropySampler")}getUniforms(){return{ubo:[{name:"vAnisotropy",size:3,type:"vec3"},{name:"vAnisotropyInfos",size:2,type:"vec2"},{name:"anisotropyMatrix",size:16,type:"mat4"}]}}parse(e,t,i){super.parse(e,t,i),e.legacy===void 0&&(this.legacy=!0)}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Hc.prototype,"isEnabled",void 0);P([F()],Hc.prototype,"intensity",void 0);P([Fm()],Hc.prototype,"direction",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Hc.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],Hc.prototype,"legacy",void 0)});var dw,Ea,MK=I(()=>{Wt();kt();zt();Ya();id();ja();es();dw=class extends Lr{constructor(){super(...arguments),this.SHEEN=!1,this.SHEEN_TEXTURE=!1,this.SHEEN_GAMMATEXTURE=!1,this.SHEEN_TEXTURE_ROUGHNESS=!1,this.SHEEN_TEXTUREDIRECTUV=0,this.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0,this.SHEEN_LINKWITHALBEDO=!1,this.SHEEN_ROUGHNESS=!1,this.SHEEN_ALBEDOSCALING=!1,this.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1}},Ea=class extends jr{_markAllSubMeshesAsTexturesDirty(){this._enable(this._isEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"Sheen",120,new dw,t),this._isEnabled=!1,this.isEnabled=!1,this._linkSheenWithAlbedo=!1,this.linkSheenWithAlbedo=!1,this.intensity=1,this.color=Ee.White(),this._texture=null,this.texture=null,this._useRoughnessFromMainTexture=!0,this.useRoughnessFromMainTexture=!0,this._roughness=null,this.roughness=null,this._textureRoughness=null,this.textureRoughness=null,this._albedoScaling=!1,this.albedoScaling=!1,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1]}isReadyForSubMesh(e,t){return this._isEnabled?!(e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&!this._texture.isReadyOrNotBlocking()||this._textureRoughness&&ce.SheenTextureEnabled&&!this._textureRoughness.isReadyOrNotBlocking())):!0}prepareDefinesBeforeAttributes(e,t){this._isEnabled?(e.SHEEN=!0,e.SHEEN_LINKWITHALBEDO=this._linkSheenWithAlbedo,e.SHEEN_ROUGHNESS=this._roughness!==null,e.SHEEN_ALBEDOSCALING=this._albedoScaling,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=this._useRoughnessFromMainTexture,e._areTexturesDirty&&t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled?(ni(this._texture,e,"SHEEN_TEXTURE"),e.SHEEN_GAMMATEXTURE=this._texture.gammaSpace):e.SHEEN_TEXTURE=!1,this._textureRoughness&&ce.SheenTextureEnabled?ni(this._textureRoughness,e,"SHEEN_TEXTURE_ROUGHNESS"):e.SHEEN_TEXTURE_ROUGHNESS=!1)):(e.SHEEN=!1,e.SHEEN_TEXTURE=!1,e.SHEEN_TEXTURE_ROUGHNESS=!1,e.SHEEN_LINKWITHALBEDO=!1,e.SHEEN_ROUGHNESS=!1,e.SHEEN_ALBEDOSCALING=!1,e.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE=!1,e.SHEEN_GAMMATEXTURE=!1,e.SHEEN_TEXTUREDIRECTUV=0,e.SHEEN_TEXTURE_ROUGHNESSDIRECTUV=0)}bindForSubMesh(e,t,i,r){var o,l,c,f,d,h,u,m;if(!this._isEnabled)return;let s=r.materialDefines,a=this._material.isFrozen;(!e.useUbo||!a||!e.isSync)&&((this._texture||this._textureRoughness)&&ce.SheenTextureEnabled&&(e.updateFloat4("vSheenInfos",(l=(o=this._texture)==null?void 0:o.coordinatesIndex)!=null?l:0,(f=(c=this._texture)==null?void 0:c.level)!=null?f:0,(h=(d=this._textureRoughness)==null?void 0:d.coordinatesIndex)!=null?h:0,(m=(u=this._textureRoughness)==null?void 0:u.level)!=null?m:0),this._texture&&si(this._texture,e,"sheen"),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&si(this._textureRoughness,e,"sheenRoughness")),e.updateFloat4("vSheenColor",this.color.r,this.color.g,this.color.b,this.intensity),this._roughness!==null&&e.updateFloat("vSheenRoughness",this._roughness)),t.texturesEnabled&&(this._texture&&ce.SheenTextureEnabled&&e.setTexture("sheenSampler",this._texture),this._textureRoughness&&!s.SHEEN_USE_ROUGHNESS_FROM_MAINTEXTURE&&ce.SheenTextureEnabled&&e.setTexture("sheenRoughnessSampler",this._textureRoughness))}hasTexture(e){return this._texture===e||this._textureRoughness===e}getActiveTextures(e){this._texture&&e.push(this._texture),this._textureRoughness&&e.push(this._textureRoughness)}getAnimatables(e){this._texture&&this._texture.animations&&this._texture.animations.length>0&&e.push(this._texture),this._textureRoughness&&this._textureRoughness.animations&&this._textureRoughness.animations.length>0&&e.push(this._textureRoughness)}dispose(e){var t,i;e&&((t=this._texture)==null||t.dispose(),(i=this._textureRoughness)==null||i.dispose())}getClassName(){return"PBRSheenConfiguration"}addFallbacks(e,t,i){return e.SHEEN&&t.addFallback(i++,"SHEEN"),i}getSamplers(e){e.push("sheenSampler","sheenRoughnessSampler")}getUniforms(){return{ubo:[{name:"vSheenColor",size:4,type:"vec4"},{name:"vSheenRoughness",size:1,type:"float"},{name:"vSheenInfos",size:4,type:"vec4"},{name:"sheenMatrix",size:16,type:"mat4"},{name:"sheenRoughnessMatrix",size:16,type:"mat4"}]}}};P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"isEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"linkSheenWithAlbedo",void 0);P([F()],Ea.prototype,"intensity",void 0);P([Ir()],Ea.prototype,"color",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"texture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"useRoughnessFromMainTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"roughness",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"textureRoughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ea.prototype,"albedoScaling",void 0)});var hw,Ii,IK=I(()=>{Wt();kt();zt();Ya();ke();id();ja();es();hw=class extends Lr{constructor(){super(...arguments),this.SUBSURFACE=!1,this.SS_REFRACTION=!1,this.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_TRANSLUCENCY=!1,this.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,this.SS_SCATTERING=!1,this.SS_DISPERSION=!1,this.SS_THICKNESSANDMASK_TEXTURE=!1,this.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,this.SS_HAS_THICKNESS=!1,this.SS_REFRACTIONINTENSITY_TEXTURE=!1,this.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,this.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,this.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,this.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,this.SS_REFRACTIONMAP_3D=!1,this.SS_REFRACTIONMAP_OPPOSITEZ=!1,this.SS_LODINREFRACTIONALPHA=!1,this.SS_GAMMAREFRACTION=!1,this.SS_RGBDREFRACTION=!1,this.SS_LINEARSPECULARREFRACTION=!1,this.SS_LINKREFRACTIONTOTRANSPARENCY=!1,this.SS_ALBEDOFORREFRACTIONTINT=!1,this.SS_ALBEDOFORTRANSLUCENCYTINT=!1,this.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,this.SS_USE_THICKNESS_AS_DEPTH=!1,this.SS_USE_GLTF_TEXTURES=!1,this.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1,this.SS_TRANSLUCENCY_LEGACY=!1}},Ii=class n extends jr{get scatteringDiffusionProfile(){return this._scene.subSurfaceConfiguration?this._scene.subSurfaceConfiguration.ssDiffusionProfileColors[this._scatteringDiffusionProfileIndex]:null}set scatteringDiffusionProfile(e){this._scene.enableSubSurfaceForPrePass()&&e&&(this._scatteringDiffusionProfileIndex=this._scene.subSurfaceConfiguration.addDiffusionProfile(e))}get volumeIndexOfRefraction(){return this._volumeIndexOfRefraction>=1?this._volumeIndexOfRefraction:this._indexOfRefraction}set volumeIndexOfRefraction(e){e>=1?this._volumeIndexOfRefraction=e:this._volumeIndexOfRefraction=-1}get legacyTransluceny(){return this.legacyTranslucency}set legacyTransluceny(e){this.legacyTranslucency=e}_markAllSubMeshesAsTexturesDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty()}_markScenePrePassDirty(){this._enable(this._isRefractionEnabled||this._isTranslucencyEnabled||this._isScatteringEnabled),this._internalMarkAllSubMeshesAsTexturesDirty(),this._internalMarkScenePrePassDirty()}isCompatible(){return!0}constructor(e,t=!0){super(e,"PBRSubSurface",130,new hw,t),this._isRefractionEnabled=!1,this.isRefractionEnabled=!1,this._isTranslucencyEnabled=!1,this.isTranslucencyEnabled=!1,this._isDispersionEnabled=!1,this.isDispersionEnabled=!1,this._isScatteringEnabled=!1,this.isScatteringEnabled=!1,this._scatteringDiffusionProfileIndex=0,this.refractionIntensity=1,this.translucencyIntensity=1,this._useAlbedoToTintRefraction=!1,this.useAlbedoToTintRefraction=!1,this._useAlbedoToTintTranslucency=!1,this.useAlbedoToTintTranslucency=!1,this._thicknessTexture=null,this.thicknessTexture=null,this._refractionTexture=null,this.refractionTexture=null,this._indexOfRefraction=1.5,this.indexOfRefraction=1.5,this._volumeIndexOfRefraction=-1,this._invertRefractionY=!1,this.invertRefractionY=!1,this._linkRefractionWithTransparency=!1,this.linkRefractionWithTransparency=!1,this.minimumThickness=0,this.maximumThickness=1,this.useThicknessAsDepth=!1,this.tintColor=Ee.White(),this.tintColorAtDistance=1,this.dispersion=0,this.diffusionDistance=Ee.White(),this._useMaskFromThicknessTexture=!1,this.useMaskFromThicknessTexture=!1,this._refractionIntensityTexture=null,this.refractionIntensityTexture=null,this._translucencyIntensityTexture=null,this.translucencyIntensityTexture=null,this.translucencyColor=null,this._translucencyColorTexture=null,this.translucencyColorTexture=null,this._useGltfStyleTextures=!0,this.useGltfStyleTextures=!0,this.applyAlbedoAfterSubSurface=n.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE,this.legacyTranslucency=n.DEFAULT_LEGACY_TRANSLUCENCY,this._scene=e.getScene(),this.registerForExtraEvents=!0,this._internalMarkAllSubMeshesAsTexturesDirty=e._dirtyCallbacks[1],this._internalMarkScenePrePassDirty=e._dirtyCallbacks[32]}isReadyForSubMesh(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return!0;if(e._areTexturesDirty&&t.texturesEnabled){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&!this._thicknessTexture.isReadyOrNotBlocking()||this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&!this._refractionIntensityTexture.isReadyOrNotBlocking()||this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&!this._translucencyColorTexture.isReadyOrNotBlocking()||this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&!this._translucencyIntensityTexture.isReadyOrNotBlocking())return!1;let i=this._getRefractionTexture(t);if(i&&ce.RefractionTextureEnabled&&!i.isReadyOrNotBlocking())return!1}return!0}prepareDefinesBeforeAttributes(e,t){if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled){e.SUBSURFACE=!1,e.SS_DISPERSION=!1,e.SS_TRANSLUCENCY=!1,e.SS_SCATTERING=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_THICKNESSANDMASK_TEXTUREDIRECTUV=0,e.SS_HAS_THICKNESS=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTUREDIRECTUV=0,e.SS_REFRACTIONMAP_3D=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_TRANSLUCENCYCOLOR_TEXTUREDIRECTUV=0,e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=!1;return}if(e._areTexturesDirty){if(e.SUBSURFACE=!0,e.SS_DISPERSION=this._isDispersionEnabled,e.SS_TRANSLUCENCY=this._isTranslucencyEnabled,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_TRANSLUCENCY_LEGACY=this.legacyTranslucency,e.SS_SCATTERING=this._isScatteringEnabled,e.SS_THICKNESSANDMASK_TEXTURE=!1,e.SS_REFRACTIONINTENSITY_TEXTURE=!1,e.SS_TRANSLUCENCYINTENSITY_TEXTURE=!1,e.SS_HAS_THICKNESS=!1,e.SS_USE_GLTF_TEXTURES=!1,e.SS_REFRACTION=!1,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=!1,e.SS_REFRACTIONMAP_3D=!1,e.SS_GAMMAREFRACTION=!1,e.SS_RGBDREFRACTION=!1,e.SS_LINEARSPECULARREFRACTION=!1,e.SS_REFRACTIONMAP_OPPOSITEZ=!1,e.SS_LODINREFRACTIONALPHA=!1,e.SS_LINKREFRACTIONTOTRANSPARENCY=!1,e.SS_ALBEDOFORREFRACTIONTINT=!1,e.SS_ALBEDOFORTRANSLUCENCYTINT=!1,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=!1,e.SS_USE_THICKNESS_AS_DEPTH=!1,e.SS_TRANSLUCENCYCOLOR_TEXTURE=!1,e.SS_APPLY_ALBEDO_AFTER_SUBSURFACE=this.applyAlbedoAfterSubSurface,e._areTexturesDirty&&t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&ni(this._thicknessTexture,e,"SS_THICKNESSANDMASK_TEXTURE"),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&ni(this._refractionIntensityTexture,e,"SS_REFRACTIONINTENSITY_TEXTURE"),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&ni(this._translucencyIntensityTexture,e,"SS_TRANSLUCENCYINTENSITY_TEXTURE"),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&(ni(this._translucencyColorTexture,e,"SS_TRANSLUCENCYCOLOR_TEXTURE"),e.SS_TRANSLUCENCYCOLOR_TEXTURE_GAMMA=this._translucencyColorTexture.gammaSpace)),e.SS_HAS_THICKNESS=this.maximumThickness-this.minimumThickness!==0,e.SS_USE_GLTF_TEXTURES=this._useGltfStyleTextures,e.SS_REFRACTION_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._refractionIntensityTexture,e.SS_TRANSLUCENCY_USE_INTENSITY_FROM_THICKNESS=this._useMaskFromThicknessTexture&&!this._translucencyIntensityTexture,this._isRefractionEnabled&&t.texturesEnabled){let i=this._getRefractionTexture(t);i&&ce.RefractionTextureEnabled&&(e.SS_REFRACTION=!0,e.SS_REFRACTIONMAP_3D=i.isCube,e.SS_GAMMAREFRACTION=i.gammaSpace,e.SS_RGBDREFRACTION=i.isRGBD,e.SS_LINEARSPECULARREFRACTION=i.linearSpecularLOD,e.SS_REFRACTIONMAP_OPPOSITEZ=this._scene.useRightHandedSystem&&i.isCube?!i.invertZ:i.invertZ,e.SS_LODINREFRACTIONALPHA=i.lodLevelInAlpha,e.SS_LINKREFRACTIONTOTRANSPARENCY=this._linkRefractionWithTransparency,e.SS_ALBEDOFORREFRACTIONTINT=this._useAlbedoToTintRefraction,e.SS_USE_LOCAL_REFRACTIONMAP_CUBIC=i.isCube&&i.boundingBoxSize,e.SS_USE_THICKNESS_AS_DEPTH=this.useThicknessAsDepth)}this._isTranslucencyEnabled&&(e.SS_ALBEDOFORTRANSLUCENCYTINT=this._useAlbedoToTintTranslucency)}}hardBindForSubMesh(e,t,i,r){if(!(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled))if(this.maximumThickness===0&&this.minimumThickness===0)e.updateFloat2("vThicknessParam",0,0);else{r.getRenderingMesh().getWorldMatrix().decompose($.Vector3[0]);let s=Math.max(Math.abs($.Vector3[0].x),Math.abs($.Vector3[0].y),Math.abs($.Vector3[0].z));e.updateFloat2("vThicknessParam",this.minimumThickness*s,(this.maximumThickness-this.minimumThickness)*s)}}bindForSubMesh(e,t,i,r){var f;if(!this._isRefractionEnabled&&!this._isTranslucencyEnabled&&!this._isScatteringEnabled)return;let s=r.materialDefines,a=this._material.isFrozen,o=this._material.realTimeFiltering,l=s.LODBASEDMICROSFURACE,c=this._getRefractionTexture(t);if(!e.useUbo||!a||!e.isSync){if(this._thicknessTexture&&ce.ThicknessTextureEnabled&&(e.updateFloat2("vThicknessInfos",this._thicknessTexture.coordinatesIndex,this._thicknessTexture.level),si(this._thicknessTexture,e,"thickness")),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&(e.updateFloat2("vRefractionIntensityInfos",this._refractionIntensityTexture.coordinatesIndex,this._refractionIntensityTexture.level),si(this._refractionIntensityTexture,e,"refractionIntensity")),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&(e.updateFloat2("vTranslucencyColorInfos",this._translucencyColorTexture.coordinatesIndex,this._translucencyColorTexture.level),si(this._translucencyColorTexture,e,"translucencyColor")),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&(e.updateFloat2("vTranslucencyIntensityInfos",this._translucencyIntensityTexture.coordinatesIndex,this._translucencyIntensityTexture.level),si(this._translucencyIntensityTexture,e,"translucencyIntensity")),c&&ce.RefractionTextureEnabled){e.updateMatrix("refractionMatrix",c.getRefractionTextureMatrix());let d=1;c.isCube||c.depth&&(d=c.depth);let h=c.getSize().width,u=this.volumeIndexOfRefraction;if(e.updateFloat4("vRefractionInfos",c.level,1/u,d,this._invertRefractionY?-1:1),e.updateFloat4("vRefractionMicrosurfaceInfos",h,c.lodGenerationScale,c.lodGenerationOffset,1/this.indexOfRefraction),o&&e.updateFloat2("vRefractionFilteringInfo",h,Math.log2(h)),c.boundingBoxSize){let m=c;e.updateVector3("vRefractionPosition",m.boundingBoxPosition),e.updateVector3("vRefractionSize",m.boundingBoxSize)}}this._isScatteringEnabled&&e.updateFloat("scatteringDiffusionProfile",this._scatteringDiffusionProfileIndex),e.updateColor3("vDiffusionDistance",this.diffusionDistance),e.updateFloat4("vTintColor",this.tintColor.r,this.tintColor.g,this.tintColor.b,Math.max(1e-5,this.tintColorAtDistance)),e.updateColor4("vTranslucencyColor",(f=this.translucencyColor)!=null?f:this.tintColor,0),e.updateFloat3("vSubSurfaceIntensity",this.refractionIntensity,this.translucencyIntensity,0),e.updateFloat("dispersion",this.dispersion)}t.texturesEnabled&&(this._thicknessTexture&&ce.ThicknessTextureEnabled&&e.setTexture("thicknessSampler",this._thicknessTexture),this._refractionIntensityTexture&&ce.RefractionIntensityTextureEnabled&&s.SS_REFRACTIONINTENSITY_TEXTURE&&e.setTexture("refractionIntensitySampler",this._refractionIntensityTexture),this._translucencyIntensityTexture&&ce.TranslucencyIntensityTextureEnabled&&s.SS_TRANSLUCENCYINTENSITY_TEXTURE&&e.setTexture("translucencyIntensitySampler",this._translucencyIntensityTexture),this._translucencyColorTexture&&ce.TranslucencyColorTextureEnabled&&s.SS_TRANSLUCENCYCOLOR_TEXTURE&&e.setTexture("translucencyColorSampler",this._translucencyColorTexture),c&&ce.RefractionTextureEnabled&&(l?e.setTexture("refractionSampler",c):(e.setTexture("refractionSampler",c._lodTextureMid||c),e.setTexture("refractionSamplerLow",c._lodTextureLow||c),e.setTexture("refractionSamplerHigh",c._lodTextureHigh||c))))}_getRefractionTexture(e){return this._refractionTexture?this._refractionTexture:this._isRefractionEnabled?e.environmentTexture:null}get disableAlphaBlending(){return this._isRefractionEnabled&&this._linkRefractionWithTransparency}fillRenderTargetTextures(e){ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget&&e.push(this._refractionTexture)}hasTexture(e){return this._thicknessTexture===e||this._refractionTexture===e||this._refractionIntensityTexture===e||this._translucencyIntensityTexture===e||this._translucencyColorTexture===e}hasRenderTargetTextures(){return!!(ce.RefractionTextureEnabled&&this._refractionTexture&&this._refractionTexture.isRenderTarget)}getActiveTextures(e){this._thicknessTexture&&e.push(this._thicknessTexture),this._refractionTexture&&e.push(this._refractionTexture),this._refractionIntensityTexture&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&e.push(this._translucencyIntensityTexture)}getAnimatables(e){this._thicknessTexture&&this._thicknessTexture.animations&&this._thicknessTexture.animations.length>0&&e.push(this._thicknessTexture),this._refractionTexture&&this._refractionTexture.animations&&this._refractionTexture.animations.length>0&&e.push(this._refractionTexture),this._refractionIntensityTexture&&this._refractionIntensityTexture.animations&&this._refractionIntensityTexture.animations.length>0&&e.push(this._refractionIntensityTexture),this._translucencyColorTexture&&this._translucencyColorTexture.animations&&this._translucencyColorTexture.animations.length>0&&e.push(this._translucencyColorTexture),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.animations&&this._translucencyIntensityTexture.animations.length>0&&e.push(this._translucencyIntensityTexture)}dispose(e){e&&(this._thicknessTexture&&this._thicknessTexture.dispose(),this._refractionTexture&&this._refractionTexture.dispose(),this._refractionIntensityTexture&&this._refractionIntensityTexture.dispose(),this._translucencyColorTexture&&this._translucencyColorTexture.dispose(),this._translucencyIntensityTexture&&this._translucencyIntensityTexture.dispose())}getClassName(){return"PBRSubSurfaceConfiguration"}addFallbacks(e,t,i){return e.SS_SCATTERING&&t.addFallback(i++,"SS_SCATTERING"),e.SS_TRANSLUCENCY&&t.addFallback(i++,"SS_TRANSLUCENCY"),i}getSamplers(e){e.push("thicknessSampler","refractionIntensitySampler","translucencyIntensitySampler","refractionSampler","refractionSamplerLow","refractionSamplerHigh","translucencyColorSampler")}getUniforms(){return{ubo:[{name:"vRefractionMicrosurfaceInfos",size:4,type:"vec4"},{name:"vRefractionFilteringInfo",size:2,type:"vec2"},{name:"vTranslucencyIntensityInfos",size:2,type:"vec2"},{name:"vRefractionInfos",size:4,type:"vec4"},{name:"refractionMatrix",size:16,type:"mat4"},{name:"vThicknessInfos",size:2,type:"vec2"},{name:"vRefractionIntensityInfos",size:2,type:"vec2"},{name:"thicknessMatrix",size:16,type:"mat4"},{name:"refractionIntensityMatrix",size:16,type:"mat4"},{name:"translucencyIntensityMatrix",size:16,type:"mat4"},{name:"vThicknessParam",size:2,type:"vec2"},{name:"vDiffusionDistance",size:3,type:"vec3"},{name:"vTintColor",size:4,type:"vec4"},{name:"vSubSurfaceIntensity",size:3,type:"vec3"},{name:"vRefractionPosition",size:3,type:"vec3"},{name:"vRefractionSize",size:3,type:"vec3"},{name:"scatteringDiffusionProfile",size:1,type:"float"},{name:"dispersion",size:1,type:"float"},{name:"vTranslucencyColor",size:4,type:"vec4"},{name:"vTranslucencyColorInfos",size:2,type:"vec2"},{name:"translucencyColorMatrix",size:16,type:"mat4"}]}}};Ii.DEFAULT_APPLY_ALBEDO_AFTERSUBSURFACE=!1;Ii.DEFAULT_LEGACY_TRANSLUCENCY=!1;P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isRefractionEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isTranslucencyEnabled",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"isDispersionEnabled",void 0);P([F(),le("_markScenePrePassDirty")],Ii.prototype,"isScatteringEnabled",void 0);P([F()],Ii.prototype,"_scatteringDiffusionProfileIndex",void 0);P([F()],Ii.prototype,"refractionIntensity",void 0);P([F()],Ii.prototype,"translucencyIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useAlbedoToTintRefraction",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useAlbedoToTintTranslucency",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"thicknessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"refractionTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"indexOfRefraction",void 0);P([F()],Ii.prototype,"_volumeIndexOfRefraction",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"volumeIndexOfRefraction",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"invertRefractionY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"linkRefractionWithTransparency",void 0);P([F()],Ii.prototype,"minimumThickness",void 0);P([F()],Ii.prototype,"maximumThickness",void 0);P([F()],Ii.prototype,"useThicknessAsDepth",void 0);P([Ir()],Ii.prototype,"tintColor",void 0);P([F()],Ii.prototype,"tintColorAtDistance",void 0);P([F()],Ii.prototype,"dispersion",void 0);P([Ir()],Ii.prototype,"diffusionDistance",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useMaskFromThicknessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"refractionIntensityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"translucencyIntensityTexture",void 0);P([Ir()],Ii.prototype,"translucencyColor",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"translucencyColorTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],Ii.prototype,"useGltfStyleTextures",void 0);P([F()],Ii.prototype,"applyAlbedoAfterSubSurface",void 0);P([F()],Ii.prototype,"legacyTranslucency",void 0)});var yK,z_e,uw=I(()=>{k();Lh();Pv();yK="pbrUboDeclaration",z_e=`uniform vAlbedoInfos: vec2f;uniform vBaseWeightInfos: vec2f;uniform vBaseDiffuseRoughnessInfos: vec2f;uniform vAmbientInfos: vec4f;uniform vOpacityInfos: vec2f;uniform vEmissiveInfos: vec2f;uniform vLightmapInfos: vec2f;uniform vReflectivityInfos: vec3f;uniform vMicroSurfaceSamplerInfos: vec2f;uniform vBumpInfos: vec3f;uniform albedoMatrix: mat4x4f;uniform baseWeightMatrix: mat4x4f;uniform baseDiffuseRoughnessMatrix: mat4x4f;uniform ambientMatrix: mat4x4f;uniform opacityMatrix: mat4x4f;uniform emissiveMatrix: mat4x4f;uniform lightmapMatrix: mat4x4f;uniform reflectivityMatrix: mat4x4f;uniform microSurfaceSamplerMatrix: mat4x4f;uniform bumpMatrix: mat4x4f;uniform vTangentSpaceParams: vec2f;uniform vAlbedoColor: vec4f;uniform baseWeight: f32;uniform baseDiffuseRoughness: f32;uniform vLightingIntensity: vec4f;uniform pointSize: f32;uniform vReflectivityColor: vec4f;uniform vEmissiveColor: vec3f;uniform vAmbientColor: vec3f;uniform vDebugMode: vec2f;uniform vMetallicReflectanceFactors: vec4f;uniform vMetallicReflectanceInfos: vec2f;uniform metallicReflectanceMatrix: mat4x4f;uniform vReflectanceInfos: vec2f;uniform reflectanceMatrix: mat4x4f;uniform cameraInfo: vec4f;uniform vReflectionInfos: vec2f;uniform reflectionMatrix: mat4x4f;uniform vReflectionMicrosurfaceInfos: vec3f;uniform vReflectionPosition: vec3f;uniform vReflectionSize: vec3f;uniform vReflectionFilteringInfo: vec2f;uniform vReflectionDominantDirection: vec3f;uniform vReflectionColor: vec3f;uniform vSphericalL00: vec3f;uniform vSphericalL1_1: vec3f;uniform vSphericalL10: vec3f;uniform vSphericalL11: vec3f;uniform vSphericalL2_2: vec3f;uniform vSphericalL2_1: vec3f;uniform vSphericalL20: vec3f;uniform vSphericalL21: vec3f;uniform vSphericalL22: vec3f;uniform vSphericalX: vec3f;uniform vSphericalY: vec3f;uniform vSphericalZ: vec3f;uniform vSphericalXX_ZZ: vec3f;uniform vSphericalYY_ZZ: vec3f;uniform vSphericalZZ: vec3f;uniform vSphericalXY: vec3f;uniform vSphericalYZ: vec3f;uniform vSphericalZX: vec3f; #define ADDITIONAL_UBO_DECLARATION #include #include -`;x.IncludesShadersStoreWGSL[yK]||(x.IncludesShadersStoreWGSL[yK]=z_e)});var PK={};Fe(PK,{pbrVertexShaderWGSL:()=>X_e});var mw,CK,X_e,DK=I(()=>{k();uw();IR();Pp();Ha();kp();Ac();xc();ed();yR();CR();Gp();GL();Rc();pv();PR();rd();nd();Oh();DR();LR();sd();ad();bc();Mc();Ic();OR();NR();wR();FR();yc();_v();BR();gv();UR();mw="pbrVertexShader",CK=`#define PBR_VERTEX_SHADER +`;x.IncludesShadersStoreWGSL[yK]||(x.IncludesShadersStoreWGSL[yK]=z_e)});var PK={};Fe(PK,{pbrVertexShaderWGSL:()=>X_e});var mw,CK,X_e,DK=I(()=>{k();uw();yR();Pp();Ha();kp();Ac();xc();ed();CR();PR();Gp();GL();Rc();pv();DR();rd();nd();Oh();LR();OR();sd();ad();bc();Mc();Ic();NR();wR();FR();BR();yc();_v();UR();gv();VR();mw="pbrVertexShader",CK=`#define PBR_VERTEX_SHADER #include #define CUSTOM_VERTEX_BEGIN #ifndef USE_VERTEX_PULLING @@ -17791,7 +17791,7 @@ vertexOutputs.vMainUV2=uv2Updated; varying v_VARYINGNAME_UV: vec2f; #endif #endif -`;x.IncludesShadersStoreWGSL[LK]||(x.IncludesShadersStoreWGSL[LK]=Y_e)});var NK,K_e,wK=I(()=>{k();Nh();OK();Qb();NK="pbrFragmentSamplersDeclaration",K_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;x.IncludesShadersStoreWGSL[LK]||(x.IncludesShadersStoreWGSL[LK]=Y_e)});var NK,K_e,wK=I(()=>{k();Nh();OK();$b();NK="pbrFragmentSamplersDeclaration",K_e=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient) @@ -19768,7 +19768,7 @@ fragmentOutputs.fragData6=fragData[6]; fragmentOutputs.fragData7=fragData[7]; #endif #endif -`;x.IncludesShadersStoreWGSL[vj]||(x.IncludesShadersStoreWGSL[vj]=hge)});var Tj={};Fe(Tj,{pbrPixelShaderWGSL:()=>uge});var pw,Sj,uge,Aj=I(()=>{k();VR();GR();uw();PN();kR();wK();HR();Cc();Oh();vv();Ha();DN();LN();ON();zR();WR();Gp();NN();wN();kp();FN();UN();$b();XR();YR();Dv();BK();VK();kK();HK();XK();KK();ZK();QK();JK();tj();Pc();VN();KR();rj();jR();sj();oj();BN();cj();dj();XL();uj();pj();gj();ZR();Ev();GN();Ej();qR();kN();pw="pbrPixelShader",Sj=`#define PBR_FRAGMENT_SHADER +`;x.IncludesShadersStoreWGSL[vj]||(x.IncludesShadersStoreWGSL[vj]=hge)});var Tj={};Fe(Tj,{pbrPixelShaderWGSL:()=>uge});var pw,Sj,uge,Aj=I(()=>{k();GR();kR();uw();PN();WR();wK();zR();Cc();Oh();vv();Ha();DN();LN();ON();XR();HR();Gp();NN();wN();kp();FN();UN();Jb();YR();KR();Dv();BK();VK();kK();HK();XK();KK();ZK();QK();JK();tj();Pc();VN();jR();rj();ZR();sj();oj();BN();cj();dj();XL();uj();pj();gj();qR();Ev();GN();Ej();QR();kN();pw="pbrPixelShader",Sj=`#define PBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_BEGIN #include[SCENE_MRT_COUNT] #include @@ -20332,7 +20332,7 @@ if (fragDepth==nearestDepth) {fragmentOutputs.frontColor=vec4f(fragmentOutputs.f #include #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStoreWGSL[pw]||(x.ShadersStoreWGSL[pw]=Sj);uge={name:pw,shader:Sj}});var xj,mge,Rj=I(()=>{k();QR();xj="pbrVertexDeclaration",mge=`uniform mat4 view;uniform mat4 viewProjection;uniform vec4 vEyePosition; +`;x.ShadersStoreWGSL[pw]||(x.ShadersStoreWGSL[pw]=Sj);uge={name:pw,shader:Sj}});var xj,mge,Rj=I(()=>{k();$R();xj="pbrVertexDeclaration",mge=`uniform mat4 view;uniform mat4 viewProjection;uniform vec4 vEyePosition; #ifdef MULTIVIEW mat4 viewProjectionR; #endif @@ -20462,7 +20462,7 @@ uniform vec4 vDetailInfos;uniform mat4 detailMatrix; }; #include #include -`;x.IncludesShadersStore[bj]||(x.IncludesShadersStore[bj]=pge)});var Ij={};Fe(Ij,{pbrVertexShader:()=>_ge});var gw,Mj,_ge,yj=I(()=>{k();Rj();_w();$R();Dp();za();Up();Dc();Lc();td();JR();eb();Vp();jL();Oc();Sv();tb();ib();od();ld();Fh();cd();fd();Nc();wc();Fc();rb();nb();sb();ab();Bc();Tv();ob();Av();lb();gw="pbrVertexShader",Mj=`#define PBR_VERTEX_SHADER +`;x.IncludesShadersStore[bj]||(x.IncludesShadersStore[bj]=pge)});var Ij={};Fe(Ij,{pbrVertexShader:()=>_ge});var gw,Mj,_ge,yj=I(()=>{k();Rj();_w();JR();Dp();za();Up();Dc();Lc();td();eb();tb();Vp();jL();Oc();Sv();ib();rb();od();ld();Fh();cd();fd();Nc();wc();Fc();nb();sb();ab();ob();Bc();Tv();lb();Av();cb();gw="pbrVertexShader",Mj=`#define PBR_VERTEX_SHADER #define CUSTOM_VERTEX_EXTENSION precision highp float; #include<__decl__pbrVertex> @@ -20693,7 +20693,7 @@ gl_PointSize=pointSize; #include #define CUSTOM_VERTEX_MAIN_END } -`;x.ShadersStore[gw]||(x.ShadersStore[gw]=Mj);_ge={name:gw,shader:Mj}});var Cj,gge,Pj=I(()=>{k();cb();Cj="pbrFragmentDeclaration",gge=`uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform float baseWeight;uniform float baseDiffuseRoughness;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor; +`;x.ShadersStore[gw]||(x.ShadersStore[gw]=Mj);_ge={name:gw,shader:Mj}});var Cj,gge,Pj=I(()=>{k();fb();Cj="pbrFragmentDeclaration",gge=`uniform vec4 vEyePosition;uniform vec3 vReflectionColor;uniform vec4 vAlbedoColor;uniform float baseWeight;uniform float baseDiffuseRoughness;uniform vec4 vLightingIntensity;uniform vec4 vReflectivityColor;uniform vec4 vMetallicReflectanceFactors;uniform vec3 vEmissiveColor;uniform float visibility;uniform vec3 vAmbientColor; #ifdef ALBEDO uniform vec2 vAlbedoInfos; #endif @@ -20858,7 +20858,7 @@ uniform vec3 vSphericalX;uniform vec3 vSphericalY;uniform vec3 vSphericalZ;unifo varying vec2 v_VARYINGNAME_UV; #endif #endif -`;x.IncludesShadersStore[Dj]||(x.IncludesShadersStore[Dj]=vge)});var Oj,Ege,Nj=I(()=>{k();Bh();Lj();Zb();Oj="pbrFragmentSamplersDeclaration",Ege=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) +`;x.IncludesShadersStore[Dj]||(x.IncludesShadersStore[Dj]=vge)});var Oj,Ege,Nj=I(()=>{k();Bh();Lj();qb();Oj="pbrFragmentSamplersDeclaration",Ege=`#include(_DEFINENAME_,ALBEDO,_VARYINGNAME_,Albedo,_SAMPLERNAME_,albedo) #include(_DEFINENAME_,BASE_WEIGHT,_VARYINGNAME_,BaseWeight,_SAMPLERNAME_,baseWeight) #include(_DEFINENAME_,BASE_DIFFUSE_ROUGHNESS,_VARYINGNAME_,BaseDiffuseRoughness,_SAMPLERNAME_,baseDiffuseRoughness) #include(_DEFINENAME_,AMBIENT,_VARYINGNAME_,Ambient,_SAMPLERNAME_,ambient) @@ -22837,7 +22837,7 @@ gl_FragData[PREPASS_REFLECTIVITY_INDEX]=vec4( 0.0,0.0,0.0,1.0 )*writeGeometryInf #endif #endif #endif -`;x.IncludesShadersStore[SZ]||(x.IncludesShadersStore[SZ]=Gge)});var xZ={};Fe(xZ,{pbrPixelShader:()=>kge});var Ew,AZ,kge,RZ=I(()=>{k();fb();db();Pj();_w();XN();hb();ub();Nj();pb();Uc();Fh();xv();za();YN();KN();jN();_b();mb();Vp();ZN();qN();Up();QN();$N();qb();gb();vb();Ov();Fj();Uj();Gj();Wj();zj();Yj();jj();qj();$j();eZ();rZ();Vc();JN();Eb();sZ();Sb();oZ();cZ();vw();dZ();uZ();eO();pZ();gZ();EZ();Tb();Rv();ew();TZ();Ab();tw();Ew="pbrPixelShader",AZ=`#define PBR_FRAGMENT_SHADER +`;x.IncludesShadersStore[SZ]||(x.IncludesShadersStore[SZ]=Gge)});var xZ={};Fe(xZ,{pbrPixelShader:()=>kge});var Ew,AZ,kge,RZ=I(()=>{k();db();hb();Pj();_w();XN();ub();mb();Nj();_b();Uc();Fh();xv();za();YN();KN();jN();gb();pb();Vp();ZN();qN();Up();QN();$N();Qb();vb();Eb();Ov();Fj();Uj();Gj();Wj();zj();Yj();jj();qj();$j();eZ();rZ();Vc();JN();Sb();sZ();Tb();oZ();cZ();vw();dZ();uZ();eO();pZ();gZ();EZ();Ab();Rv();ew();TZ();xb();tw();Ew="pbrPixelShader",AZ=`#define PBR_FRAGMENT_SHADER #define CUSTOM_FRAGMENT_EXTENSION #if defined(BUMP) || !defined(NORMAL) || defined(FORCENORMALFORWARD) || defined(SPECULARAA) || defined(CLEARCOAT_BUMP) || defined(ANISOTROPIC) #extension GL_OES_standard_derivatives : enable @@ -23400,17 +23400,17 @@ if (fragDepth==nearestDepth) {frontColor.rgb+=finalColor.rgb*finalColor.a*alphaM #include #define CUSTOM_FRAGMENT_MAIN_END } -`;x.ShadersStore[Ew]||(x.ShadersStore[Ew]=AZ);kge={name:Ew,shader:AZ}});var Hp,Sw,eM,Tw,Cr,bZ=I(()=>{Wt();kt();Lt();Mo();Kb();Ys();ke();Zi();AK();TR();zt();AR();Kg();ts();ja();uv();Ya();ZP();Qf();xK();RK();bK();MK();IK();UL();Ml();mv();es();xR();RR();bR();MR();Hp={effect:null,subMesh:null},Sw=class extends yp(Ip(Lr)){},eM=class extends bp(Sw){constructor(e){super(e),this.PBR=!0,this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.ALBEDO=!1,this.GAMMAALBEDO=!1,this.ALBEDODIRECTUV=0,this.VERTEXCOLOR=!1,this.BASE_WEIGHT=!1,this.BASE_WEIGHTDIRECTUV=0,this.BASE_DIFFUSE_ROUGHNESS=!1,this.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.AMBIENTINGRAYSCALE=!1,this.OPACITY=!1,this.VERTEXALPHA=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHAFROMALBEDO=!1,this.ALPHATESTVALUE="0.5",this.SPECULAROVERALPHA=!1,this.RADIANCEOVERALPHA=!1,this.ALPHAFRESNEL=!1,this.LINEARALPHAFRESNEL=!1,this.PREMULTIPLYALPHA=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.GAMMAEMISSIVE=!1,this.REFLECTIVITY=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.MICROSURFACEFROMREFLECTIVITYMAP=!1,this.MICROSURFACEAUTOMATIC=!1,this.LODBASEDMICROSFURACE=!1,this.MICROSURFACEMAP=!1,this.MICROSURFACEMAPDIRECTUV=0,this.METALLICWORKFLOW=!1,this.ROUGHNESSSTOREINMETALMAPALPHA=!1,this.ROUGHNESSSTOREINMETALMAPGREEN=!1,this.METALLNESSSTOREINMETALMAPBLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.METALLIC_REFLECTANCE=!1,this.METALLIC_REFLECTANCE_GAMMA=!1,this.METALLIC_REFLECTANCEDIRECTUV=0,this.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=!1,this.REFLECTANCE=!1,this.REFLECTANCE_GAMMA=!1,this.REFLECTANCEDIRECTUV=0,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.NORMAL=!1,this.TANGENT=!1,this.BUMP=!1,this.BUMPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.USELIGHTMAPASSHADOWMAP=!1,this.GAMMALIGHTMAP=!1,this.RGBDLIGHTMAP=!1,this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1,this.LINEARSPECULARREFLECTION=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.PBR=!0,this.NORMALXYSCALE=!0}},Tw=class extends Cp(Pl){},Cr=class n extends Tw{get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._directIntensity=1,this._emissiveIntensity=1,this._environmentIntensity=1,this._specularIntensity=1,this._lightingInfos=new Ni(this._directIntensity,this._emissiveIntensity,this._environmentIntensity,this._specularIntensity),this._disableBumpMap=!1,this._albedoTexture=null,this._baseWeightTexture=null,this._baseDiffuseRoughnessTexture=null,this._ambientTexture=null,this._ambientTextureStrength=1,this._ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._reflectivityTexture=null,this._metallicTexture=null,this._metallic=null,this._roughness=null,this._metallicF0Factor=1,this._metallicReflectanceColor=Ee.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new Ee(0,0,0),this._albedoColor=new Ee(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new Ee(1,1,1),this._reflectionColor=new Ee(1,1,1),this._emissiveColor=new Ee(0,0,0),this._microSurface=.9,this._useLightmapAsShadowmap=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromAlbedoTexture=!1,this._useSpecularOverAlpha=!0,this._useMicroSurfaceFromReflectivityMapAlpha=!1,this._useRoughnessFromMetallicTextureAlpha=!0,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallnessFromMetallicTextureBlue=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useAmbientInGrayScale=!1,this._useAutoMicroSurfaceFromReflectivityMap=!1,this._lightFalloff=n.LIGHTFALLOFF_PHYSICAL,this._useRadianceOverAlpha=!0,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Xi(16),this._globalAmbientColor=new Ee(0,0,0),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this.brdf=new Fr(this),this.clearCoat=new mn(this),this.iridescence=new ea(this),this.anisotropy=new Hc(this),this.sheen=new Ea(this),this.subSurface=new Ii(this),this.detailMap=new Za(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=Yb(this.getScene()),this.prePassConfiguration=new $s}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"PBRBaseMaterial"}get _disableAlphaBlending(){var e;return this._transparencyMode===n.PBRMATERIAL_OPAQUE||this._transparencyMode===n.PBRMATERIAL_ALPHATEST||((e=this.subSurface)==null?void 0:e.disableAlphaBlending)}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromAlbedoTexture()}needAlphaTesting(){var e;return this._hasTransparencyMode?this._transparencyModeIsTest:(e=this.subSurface)!=null&&e.disableAlphaBlending?!1:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===n.PBRMATERIAL_ALPHATEST)}_shouldUseAlphaFromAlbedoTexture(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha&&this._useAlphaFromAlbedoTexture&&this._transparencyMode!==n.PBRMATERIAL_OPAQUE}_hasAlphaChannel(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._albedoTexture}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new eM(this._eventInfo.defineNames));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){if(this._albedoTexture&&ce.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&ce.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&ce.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let u=this._getReflectionTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&ce.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&ce.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(ce.SpecularTextureEnabled){if(this._metallicTexture){if(!this._metallicTexture.isReadyOrNotBlocking())return!1}else if(this._reflectivityTexture&&!this._reflectivityTexture.isReadyOrNotBlocking())return!1;if(this._metallicReflectanceTexture&&!this._metallicReflectanceTexture.isReadyOrNotBlocking()||this._reflectanceTexture&&!this._reflectanceTexture.isReadyOrNotBlocking()||this._microSurfaceTexture&&!this._microSurfaceTexture.isReadyOrNotBlocking())return!1}if(o.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady())return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED||s.CLUSTLIGHT_BATCH){for(let u=0;u{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Ht&&(Ht.PrepareUniforms(m,i),Ht.PrepareSamplers(_,i)),mp({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let T=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(DK(),PK)),Promise.resolve().then(()=>(Aj(),Tj))]):await Promise.all([Promise.resolve().then(()=>(yj(),Ij)),Promise.resolve().then(()=>(RZ(),xZ))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();lp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,dp(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(o,i,this.canRenderToMRT&&!c),hp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i.METALLICWORKFLOW=this.isMetallicWorkflow(),i._areTexturesDirty){i._needUVs=!1;for(let f=1;f<=6;++f)i["MAINUV"+f]=!1;if(o.texturesEnabled){i.ALBEDODIRECTUV=0,i.BASE_WEIGHTDIRECTUV=0,i.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,i.AMBIENTDIRECTUV=0,i.OPACITYDIRECTUV=0,i.EMISSIVEDIRECTUV=0,i.REFLECTIVITYDIRECTUV=0,i.MICROSURFACEMAPDIRECTUV=0,i.METALLIC_REFLECTANCEDIRECTUV=0,i.REFLECTANCEDIRECTUV=0,i.BUMPDIRECTUV=0,i.LIGHTMAPDIRECTUV=0,l.getCaps().textureLOD&&(i.LODBASEDMICROSFURACE=!0),this._albedoTexture&&ce.DiffuseTextureEnabled?(ni(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&ce.BaseWeightTextureEnabled?ni(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled?ni(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&ce.AmbientTextureEnabled?(ni(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&ce.OpacityTextureEnabled?(ni(this._opacityTexture,i,"OPACITY"),i.OPACITYRGB=this._opacityTexture.getAlphaFromRGB):i.OPACITY=!1;let f=this._getReflectionTexture(),d=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;Hf(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&ce.LightmapTextureEnabled?(ni(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&ce.EmissiveTextureEnabled?(ni(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,ce.SpecularTextureEnabled?(this._metallicTexture?(ni(this._metallicTexture,i,"REFLECTIVITY"),i.ROUGHNESSSTOREINMETALMAPALPHA=this._useRoughnessFromMetallicTextureAlpha,i.ROUGHNESSSTOREINMETALMAPGREEN=!this._useRoughnessFromMetallicTextureAlpha&&this._useRoughnessFromMetallicTextureGreen,i.METALLNESSSTOREINMETALMAPBLUE=this._useMetallnessFromMetallicTextureBlue,i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed,i.REFLECTIVITY_GAMMA=!1):this._reflectivityTexture?(ni(this._reflectivityTexture,i,"REFLECTIVITY"),i.MICROSURFACEFROMREFLECTIVITYMAP=this._useMicroSurfaceFromReflectivityMapAlpha,i.MICROSURFACEAUTOMATIC=this._useAutoMicroSurfaceFromReflectivityMap,i.REFLECTIVITY_GAMMA=this._reflectivityTexture.gammaSpace):i.REFLECTIVITY=!1,this._metallicReflectanceTexture||this._reflectanceTexture?(i.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=this._useOnlyMetallicFromMetallicReflectanceTexture,this._metallicReflectanceTexture?(ni(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(ni(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?ni(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap?(ni(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.BUMP=!1,i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._shouldUseAlphaFromAlbedoTexture()?i.ALPHAFROMALBEDO=!0:i.ALPHAFROMALBEDO=!1}i.SPECULAROVERALPHA=this._useSpecularOverAlpha,this._lightFalloff===n.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===n.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),i.RADIANCEOVERALPHA=this._useRadianceOverAlpha,!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e),i.ALPHAFRESNEL=this._useAlphaFresnel||this._useLinearAlphaFresnel,i.LINEARALPHAFRESNEL=this._useLinearAlphaFresnel),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,i._areMiscDirty&&(ap(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(L.NormalKind),i.DEBUGMODE=this._debugMode),cp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),fp(e,i,!0,!0,!0,this._transparencyMode!==n.PBRMATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new eM(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Hp.effect=o,Hp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Hp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("vAlbedoInfos",2),e.addUniform("vBaseWeightInfos",2),e.addUniform("vBaseDiffuseRoughnessInfos",2),e.addUniform("vAmbientInfos",4),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vReflectivityInfos",3),e.addUniform("vMicroSurfaceSamplerInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("albedoMatrix",16),e.addUniform("baseWeightMatrix",16),e.addUniform("baseDiffuseRoughnessMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("reflectivityMatrix",16),e.addUniform("microSurfaceSamplerMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("vAlbedoColor",4),e.addUniform("baseWeight",1),e.addUniform("baseDiffuseRoughness",1),e.addUniform("vLightingIntensity",4),e.addUniform("pointSize",1),e.addUniform("vReflectivityColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vAmbientColor",3),e.addUniform("vDebugMode",2),e.addUniform("vMetallicReflectanceFactors",4),e.addUniform("vMetallicReflectanceInfos",2),e.addUniform("metallicReflectanceMatrix",16),e.addUniform("vReflectanceInfos",2),e.addUniform("reflectanceMatrix",16),e.addUniform("cameraInfo",4),pp(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var h,u,m,_;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);js(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Jf(this._activeEffect,this._vertexPullingMetadata);let f=null,d=this._uniformBuffer;if(c){if(this.bindViewProjection(a),f=this._getReflectionTexture(),!d.useUbo||!this.isFrozen||!d.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),si(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),si(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),si(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&ce.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),si(this._ambientTexture,d,"ambient")),this._opacityTexture&&ce.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),si(this._opacityTexture,d,"opacity")),this._emissiveTexture&&ce.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),si(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&ce.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),si(this._lightmapTexture,d,"lightmap")),ce.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),si(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),si(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),si(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),si(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),si(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),si(this._bumpTexture,d,"bump"),r._mirroredCameraPosition?d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),ep(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Dn.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Dn.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(u=(h=this.subSurface)==null?void 0:h._indexOfRefraction)!=null?u:1.5,g=1;Dn.Color4[0].b=p;let v=Math.pow((p-g)/(p+g),2);Dn.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Dn.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",ce.EmissiveTextureEnabled?this._emissiveColor:Ee.BlackReadOnly),!s.SS_REFRACTION&&((m=this.subSurface)!=null&&m._linkRefractionWithTransparency)?d.updateColor4("vAlbedoColor",this._albedoColor,1):d.updateColor4("vAlbedoColor",this._albedoColor,this.alpha),d.updateFloat("baseWeight",this._baseWeight),d.updateFloat("baseDiffuseRoughness",this._baseDiffuseRoughness||0),this._lightingInfos.x=this._directIntensity,this._lightingInfos.y=this._emissiveIntensity,this._lightingInfos.z=this._environmentIntensity*r.environmentIntensity,this._lightingInfos.w=this._specularIntensity,d.updateVector4("vLightingIntensity",this._lightingInfos),r.ambientColor.multiplyToRef(this._ambientColor,this._globalAmbientColor),d.updateColor3("vAmbientColor",this._globalAmbientColor),d.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&ce.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&ce.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),sR(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&ce.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&ce.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),ce.SpecularTextureEnabled&&(this._metallicTexture?d.setTexture("reflectivitySampler",this._metallicTexture):this._reflectivityTexture&&d.setTexture("reflectivitySampler",this._reflectivityTexture),this._metallicReflectanceTexture&&d.setTexture("metallicReflectanceSampler",this._metallicReflectanceTexture),this._reflectanceTexture&&s.REFLECTANCE&&d.setTexture("reflectanceSampler",this._reflectanceTexture),this._microSurfaceTexture&&d.setTexture("microSurfaceSampler",this._microSurfaceTexture)),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&d.setTexture("bumpSampler",this._bumpTexture)),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ti.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),kf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((_=t.bakedVertexAnimationManager)==null||_.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Gf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),d.update()}getAnimatables(){let e=super.getAnimatables();return this._albedoTexture&&this._albedoTexture.animations&&this._albedoTexture.animations.length>0&&e.push(this._albedoTexture),this._baseWeightTexture&&this._baseWeightTexture.animations&&this._baseWeightTexture.animations.length>0&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&this._baseDiffuseRoughnessTexture.animations&&this._baseDiffuseRoughnessTexture.animations.length>0&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._metallicTexture&&this._metallicTexture.animations&&this._metallicTexture.animations.length>0?e.push(this._metallicTexture):this._reflectivityTexture&&this._reflectivityTexture.animations&&this._reflectivityTexture.animations.length>0&&e.push(this._reflectivityTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._metallicReflectanceTexture&&this._metallicReflectanceTexture.animations&&this._metallicReflectanceTexture.animations.length>0&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&this._reflectanceTexture.animations&&this._reflectanceTexture.animations.length>0&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&this._microSurfaceTexture.animations&&this._microSurfaceTexture.animations.length>0&&e.push(this._microSurfaceTexture),e}_getReflectionTexture(){return this._reflectionTexture?this._reflectionTexture:this.getScene().environmentTexture}getActiveTextures(){let e=super.getActiveTextures();return this._albedoTexture&&e.push(this._albedoTexture),this._baseWeightTexture&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._reflectivityTexture&&e.push(this._reflectivityTexture),this._metallicTexture&&e.push(this._metallicTexture),this._metallicReflectanceTexture&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&e.push(this._microSurfaceTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._albedoTexture===e||this._baseWeightTexture===e||this._baseDiffuseRoughnessTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._reflectivityTexture===e||this._metallicTexture===e||this._metallicReflectanceTexture===e||this._reflectanceTexture===e||this._microSurfaceTexture===e||this._bumpTexture===e||this._lightmapTexture===e)}setPrePassRenderer(){var t;if(!((t=this.subSurface)!=null&&t.isScatteringEnabled))return!1;let e=this.getScene().enableSubSurfaceForPrePass();return e&&(e.enabled=!0),!0}dispose(e,t){var i,r,s,a,o,l,c,f,d,h,u,m,_,p;this._breakShaderLoadedCheck=!0,t&&(this._environmentBRDFTexture&&this.getScene().environmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),(i=this._albedoTexture)==null||i.dispose(),(r=this._baseWeightTexture)==null||r.dispose(),(s=this._baseDiffuseRoughnessTexture)==null||s.dispose(),(a=this._ambientTexture)==null||a.dispose(),(o=this._opacityTexture)==null||o.dispose(),(l=this._reflectionTexture)==null||l.dispose(),(c=this._emissiveTexture)==null||c.dispose(),(f=this._metallicTexture)==null||f.dispose(),(d=this._reflectivityTexture)==null||d.dispose(),(h=this._bumpTexture)==null||h.dispose(),(u=this._lightmapTexture)==null||u.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(_=this._reflectanceTexture)==null||_.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};Cr.PBRMATERIAL_OPAQUE=Se.MATERIAL_OPAQUE;Cr.PBRMATERIAL_ALPHATEST=Se.MATERIAL_ALPHATEST;Cr.PBRMATERIAL_ALPHABLEND=Se.MATERIAL_ALPHABLEND;Cr.PBRMATERIAL_ALPHATESTANDBLEND=Se.MATERIAL_ALPHATESTANDBLEND;Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;Cr.LIGHTFALLOFF_PHYSICAL=0;Cr.LIGHTFALLOFF_GLTF=1;Cr.LIGHTFALLOFF_STANDARD=2;Cr.ForceGLSL=!1;P([le("_markAllSubMeshesAsMiscDirty")],Cr.prototype,"debugMode",void 0)});var MZ={};Fe(MZ,{PBRMaterial:()=>pt});var pt,IZ=I(()=>{Wt();kt();Kb();zt();bZ();$i();ts();Dr();pt=class n extends Cr{get refractionTexture(){return this.subSurface.refractionTexture}set refractionTexture(e){this.subSurface.refractionTexture=e,e?this.subSurface.isRefractionEnabled=!0:this.subSurface.linkRefractionWithTransparency||(this.subSurface.isRefractionEnabled=!1)}get indexOfRefraction(){return this.subSurface.indexOfRefraction}set indexOfRefraction(e){this.subSurface.indexOfRefraction=e}get invertRefractionY(){return this.subSurface.invertRefractionY}set invertRefractionY(e){this.subSurface.invertRefractionY=e}get linkRefractionWithTransparency(){return this.subSurface.linkRefractionWithTransparency}set linkRefractionWithTransparency(e){this.subSurface.linkRefractionWithTransparency=e,e&&(this.subSurface.isRefractionEnabled=!0)}get usePhysicalLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_GLTF:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}constructor(e,t,i=!1){super(e,t,i),this.directIntensity=1,this.emissiveIntensity=1,this.environmentIntensity=1,this.specularIntensity=1,this.disableBumpMap=!1,this.ambientTextureStrength=1,this.ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this.metallicF0Factor=1,this.metallicReflectanceColor=Ee.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new Ee(0,0,0),this.albedoColor=new Ee(1,1,1),this.baseWeight=1,this.reflectivityColor=new Ee(1,1,1),this.reflectionColor=new Ee(1,1,1),this.emissiveColor=new Ee(0,0,0),this.microSurface=1,this.useLightmapAsShadowmap=!1,this.useAlphaFromAlbedoTexture=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useSpecularOverAlpha=!0,this.useMicroSurfaceFromReflectivityMapAlpha=!1,this.useRoughnessFromMetallicTextureAlpha=!0,this.useRoughnessFromMetallicTextureGreen=!1,this.useMetallnessFromMetallicTextureBlue=!1,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useAutoMicroSurfaceFromReflectivityMap=!1,this.useRadianceOverAlpha=!0,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._environmentBRDFTexture=Yb(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.PBRMaterial",e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),e.clearCoat&&r.clearCoat.parse(e.clearCoat,t,i),e.anisotropy&&r.anisotropy.parse(e.anisotropy,t,i),e.brdf&&r.brdf.parse(e.brdf,t,i),e.sheen&&r.sheen.parse(e.sheen,t,i),e.subSurface&&r.subSurface.parse(e.subSurface,t,i),e.iridescence&&r.iridescence.parse(e.iridescence,t,i),r}};pt.PBRMATERIAL_OPAQUE=Cr.PBRMATERIAL_OPAQUE;pt.PBRMATERIAL_ALPHATEST=Cr.PBRMATERIAL_ALPHATEST;pt.PBRMATERIAL_ALPHABLEND=Cr.PBRMATERIAL_ALPHABLEND;pt.PBRMATERIAL_ALPHATESTANDBLEND=Cr.PBRMATERIAL_ALPHATESTANDBLEND;pt.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"specularIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"disableBumpMap",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeightTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughnessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureStrength",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"opacityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallic",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicF0Factor",void 0);P([Ir(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurfaceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"bumpTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty",null)],pt.prototype,"lightmapTexture",void 0);P([Ir("ambient"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientColor",void 0);P([Ir("albedo"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoColor",void 0);P([F("baseWeight"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughness",void 0);P([Ir("reflectivity"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityColor",void 0);P([Ir("reflection"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionColor",void 0);P([Ir("emissive"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurface",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLightmapAsShadowmap",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useSpecularOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientInGrayScale",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],pt.prototype,"usePhysicalLightFalloff",null);P([F()],pt.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],pt.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],pt.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],pt.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],pt.prototype,"applyDecalMapAfterDetailMap",void 0);Ut("BABYLON.PBRMaterial",pt)});var yZ={};Fe(yZ,{PBRMaterialLoadingAdapter:()=>Aw});var Aw,CZ=I(()=>{zt();tN();ke();Aw=class{constructor(e){this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return(e=this._material.baseDiffuseRoughness)!=null?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return(e=this._material.metallic)!=null?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return(e=this._material.metallicF0Factor)!=null?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._material.metallicReflectanceColor=e}get specularColor(){return this._material.metallicReflectanceColor}set specularColorTexture(e){this._material.reflectanceTexture=e}get specularColorTexture(){return this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return(e=this._material.roughness)!=null?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return(e=this._material.ambientTextureStrength)!=null?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=Ee.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return(e=this._material.clearCoat.roughness)!=null?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new Ee(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new Ee(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return!0}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){let t=new b(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));t.scaleInPlace(1/Math.max(this.transmissionDepth,.001));let i=t,r=Math.max(i.x,Math.max(i.y,i.z)),s=r>0?1/r:1;this._material.subSurface.diffusionDistance=new Ee(Math.exp(-i.x*s),Math.exp(-i.y*s),Math.exp(-i.z*s))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return(e=this._material.subSurface.scatteringDiffusionProfile)!=null?e:Ee.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}});function zge(n){if(n.min&&n.max){let e=n.min,t=n.max,i=$.Vector3[0].copyFromFloats(e[0],e[1],e[2]),r=$.Vector3[1].copyFromFloats(t[0],t[1],t[2]);if(n.normalized&&n.componentType!==5126){let s=1;switch(n.componentType){case 5120:s=127;break;case 5121:s=255;break;case 5122:s=32767;break;case 5123:s=65535;break}let a=1/s;i.scaleInPlace(a),r.scaleInPlace(a)}return new An(i,r)}return null}var Wge,Hge,qt,tM,PZ=I(()=>{Y8();ke();zt();wi();Rl();J8();Vb();t6();ts();Xr();Vf();Zi();iR();$m();Fi();$O();r6();QO();lc();Lt();qm();eN();iN();o6();Vm();l6();Wge=new Wv(()=>Promise.resolve().then(()=>(u6(),h6))),Hge=new Wv(()=>Promise.resolve().then(()=>(g6(),_6))),qt=class{static Get(e,t,i){if(!t||i==null||!t[i])throw new Error(`${e}: Failed to find index (${i})`);return t[i]}static TryGet(e,t){return!e||t==null||!e[t]?null:e[t]}static Assign(e){if(e)for(let t=0;tt.dispose&&t.dispose()),this._extensions.length=0;for(let t of Array.from(this._materialAdapters))(e=t.finalize)==null||e.call(t);this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose()}}async importMeshAsync(e,t,i,r,s,a,o=""){return await Promise.resolve().then(async()=>{this._babylonScene=t,this._assetContainer=i,this._loadData(r);let l=null;if(e){let c={};if(this._gltf.nodes)for(let d of this._gltf.nodes)d.name&&(c[d.name]=d.index);l=(e instanceof Array?e:[e]).map(d=>{let h=c[d];if(h===void 0)throw new Error(`Failed to find node '${d}'`);return h})}return await this._loadAsync(s,o,l,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))})}async loadAsync(e,t,i,r,s=""){return this._babylonScene=e,this._loadData(t),await this._loadAsync(i,s,null,()=>{})}async _loadAsync(e,t,i,r){return await Promise.resolve().then(async()=>{this._rootUrl=e,this._uniqueRootUrl=!e.startsWith("file:")&&t?e:`${e}${Date.now()}/`,this._fileName=t,this._allMaterialsDirtyRequired=!1,await this._loadExtensionsAsync(),!this.parent.skipMaterials&&this._pbrMaterialImpl==null&&(this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr")?this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(EK(),vK))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(TK(),SK))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(IZ(),MZ))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(CZ(),yZ))).PBRMaterialLoadingAdapter});let s=`${bs[bs.LOADING]} => ${bs[bs.READY]}`,a=`${bs[bs.LOADING]} => ${bs[bs.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(bs.LOADING),this._extensionsOnLoading();let o=new Array,l=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials){if(i)o.push(this.loadSceneAsync("/nodes",{nodes:i,index:-1}));else if(this._gltf.scene!=null||this._gltf.scenes&&this._gltf.scenes[0]){let f=qt.Get("/scene",this._gltf.scenes,this._gltf.scene||0);o.push(this.loadSceneAsync(`/scenes/${f.index}`,f))}}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let f=0;f{}))}return this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=l:this._babylonScene._forceBlockMaterialDirtyMechanism(l),this._parent.compileMaterials&&o.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&o.push(this._compileShadowGeneratorsAsync()),await Promise.all(o).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(let f of this._babylonScene.materials){let d=f;d.maxSimultaneousLights!==void 0&&(d.maxSimultaneousLights=Math.max(d.maxSimultaneousLights,this._babylonScene.lights.length))}return this._extensionsOnReady(),this._parent._setState(bs.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),pe.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(bs.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},d=>{this._parent.onErrorObservable.notifyObservers(d),this._parent.onErrorObservable.clear(),this.dispose()})}),f))}).catch(s=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(s),this._parent.onErrorObservable.clear(),this.dispose()),s})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){let t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){let i=t[0];(i.byteLengthe.bin.byteLength)&&ee.Warn(`Binary buffer length (${i.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else ee.Warn("Unexpected BIN chunk")}}_setupData(){if(qt.Assign(this._gltf.accessors),qt.Assign(this._gltf.animations),qt.Assign(this._gltf.buffers),qt.Assign(this._gltf.bufferViews),qt.Assign(this._gltf.cameras),qt.Assign(this._gltf.images),qt.Assign(this._gltf.materials),qt.Assign(this._gltf.meshes),qt.Assign(this._gltf.nodes),qt.Assign(this._gltf.samplers),qt.Assign(this._gltf.scenes),qt.Assign(this._gltf.skins),qt.Assign(this._gltf.textures),this._gltf.nodes){let e={};for(let i of this._gltf.nodes)if(i.children)for(let r of i.children)e[r]=i.index;let t=this._createRootNode();for(let i of this._gltf.nodes){let r=e[i.index];i.parent=r===void 0?t:this._gltf.nodes[r]}}}async _loadExtensionsAsync(){var t;let e=[];if(n6.forEach((i,r)=>{var s;((s=this.parent.extensionOptions[r])==null?void 0:s.enabled)===!1?i.isGLTFExtension&&this.isExtensionUsed(r)&&ee.Warn(`Extension ${r} is used but has been explicitly disabled.`):(!i.isGLTFExtension||this.isExtensionUsed(r))&&e.push((async()=>{let a=await i.factory(this);return a.name!==r&&ee.Warn(`The name of the glTF loader extension instance does not match the registered name: ${a.name} !== ${r}`),this._parent.onExtensionLoadedObservable.notifyObservers(a),a})())}),this._extensions.push(...await Promise.all(e)),this._extensions.sort((i,r)=>(i.order||Number.MAX_VALUE)-(r.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired){for(let i of this._gltf.extensionsRequired)if(!this._extensions.some(s=>s.name===i&&s.enabled))throw((t=this.parent.extensionOptions[i])==null?void 0:t.enabled)===!1?new Error(`Required extension ${i} is disabled`):new Error(`Required extension ${i} is not available`)}}_createRootNode(){if(this._parent.customRootNode!==void 0)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:this._rootBabylonMesh===null?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;let e=new q("__root__",this._babylonScene);this._rootBabylonMesh=e,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);let t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case Fp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case Fp.FORCE_RIGHT_HANDED:{this._babylonScene.useRightHandedSystem=!0;break}default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(e),t}loadSceneAsync(e,t){let i=this._extensionsLoadSceneAsync(e,t);if(i)return i;let r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(let s of t.nodes){let a=qt.Get(`${e}/nodes/${s}`,this._gltf.nodes,s);r.push(this.loadNodeAsync(`/nodes/${a.index}`,a,o=>{o.parent=this._rootBabylonMesh}))}for(let s of this._postSceneLoadActions)s();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(let i of e._primitiveBabylonMeshes)t(i)}_getGeometries(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{let s=r.geometry;s&&e.indexOf(s)===-1&&e.push(s)});return e}_getMeshes(){let e=[];this._rootBabylonMesh instanceof yr&&e.push(this._rootBabylonMesh);let t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{e.push(r)});return e}_getTransformNodes(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)i._babylonTransformNode&&i._babylonTransformNode.getClassName()==="TransformNode"&&e.push(i._babylonTransformNode),i._babylonTransformNodeForSkin&&e.push(i._babylonTransformNodeForSkin);return e}_getSkeletons(){let e=[],t=this._gltf.skins;if(t)for(let i of t)i._data&&e.push(i._data.babylonSkeleton);return e}_getAnimationGroups(){let e=[],t=this._gltf.animations;if(t)for(let i of t)i._babylonAnimationGroup&&e.push(i._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case Gh.NONE:break;case Gh.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case Gh.ALL:{let e=this._getAnimationGroups();for(let t of e)t.start(!0);break}default:{ee.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);return}}}loadNodeAsync(e,t,i=()=>{}){let r=this._extensionsLoadNodeAsync(e,t,i);if(r)return r;if(t._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);let s=new Array;this.logOpen(`${e} ${t.name||""}`);let a=c=>{if(n.AddPointerMetadata(c,e),n._LoadTransform(t,c),t.camera!=null){let f=qt.Get(`${e}/camera`,this._gltf.cameras,t.camera);s.push(this.loadCameraAsync(`/cameras/${f.index}`,f,d=>{d.parent=c,this._babylonScene.useRightHandedSystem||(c.scaling.x=-1)}))}if(t.children)for(let f of t.children){let d=qt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,h=>{h.parent=c}))}i(c)},o=t.mesh!=null,l=this._parent.loadSkins&&t.skin!=null;if(!o||l){let c=t.name||`node${t.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f=new Zt(c,this._babylonScene);f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t.mesh==null?t._babylonTransformNode=f:t._babylonTransformNodeForSkin=f,a(f)}if(o)if(l){let c=qt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=rN(d.metadata,f.metadata||{});let h=qt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${h.index}`,t,h,u=>{this._forEachPrimitive(t,m=>{m.skeleton=u}),this._postSceneLoadActions.push(()=>{if(h.skeleton!=null){let m=qt.Get(`/skins/${h.index}/skeleton`,this._gltf.nodes,h.skeleton).parent;t.index===m.index?f.parent=d.parent:f.parent=m._babylonTransformNode}else f.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:d,skinnedNode:f})})}))}))}else{let c=qt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,a))}return this.logClose(),Promise.all(s).then(()=>(this._forEachPrimitive(t,c=>{let f=c;!f.isAnInstance&&f.geometry&&f.geometry.useBoundingInfoFromGeometry?c._updateBoundingInfo():c.refreshBoundingInfo(!0,!0)}),t._babylonTransformNode))}_loadMeshAsync(e,t,i,r){let s=i.primitives;if(!s||!s.length)throw new Error(`${e}: Primitives are missing`);s[0].index==null&&qt.Assign(s);let a=new Array;this.logOpen(`${e} ${i.name||""}`);let o=t.name||`node${t.index}`;if(s.length===1){let l=i.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,o,t,i,l,c=>{t._babylonTransformNode=c,t._primitiveBabylonMeshes=[c]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new Zt(o,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(let l of s)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,`${o}_primitive${l.index}`,t,i,l,c=>{c.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(c)}))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>t._babylonTransformNode)}_loadMeshPrimitiveAsync(e,t,i,r,s,a){let o=this._extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a);if(o)return o;this.logOpen(`${e}`);let l=this._disableInstancedMesh===0&&this._parent.createInstances&&i.skin==null&&!r.primitives[0].targets,c,f;if(l&&s._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,c=s._instanceData.babylonSourceMesh.createInstance(t),c._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,f=s._instanceData.promise;else{let d=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;let h=new q(t,this._babylonScene);if(h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,h.sideOrientation=this._babylonScene.useRightHandedSystem?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,h),d.push(this._loadVertexDataAsync(e,s,h).then(async u=>await this._loadMorphTargetsAsync(e,s,h,u).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,u.applyToMesh(h),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let u=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[u];m||(m=this._createDefaultMaterial("__GLTFLoader._default",u),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[u]=m),h.material=m}else{let m=qt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,h,u,_=>{h.material=_}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:h,promise:f}),c=h}return n.AddPointerMetadata(c,e),this._parent.onMeshLoadedObservable.notifyObservers(c),a(c),this.logClose(),f.then(()=>c)}_loadVertexDataAsync(e,t,i){let r=this._extensionsLoadVertexDataAsync(e,t,i);if(r)return r;let s=t.attributes;if(!s)throw new Error(`${e}: Attributes are missing`);let a=new Array,o=new xn(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=qt.Get(`${e}/indices`,this._gltf.accessors,t.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${c.index}`,c).then(f=>{o.setIndices(f)}))}let l=(c,f,d)=>{if(s[c]==null)return;i._delayInfo=i._delayInfo||[],i._delayInfo.indexOf(f)===-1&&i._delayInfo.push(f);let h=qt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${h.index}`,h,f).then(u=>{if(u.getKind()===L.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=zge(h);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(u,h.count)})),f==L.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(h)};return l("POSITION",L.PositionKind),l("NORMAL",L.NormalKind),l("TANGENT",L.TangentKind),l("TEXCOORD_0",L.UVKind),l("TEXCOORD_1",L.UV2Kind),l("TEXCOORD_2",L.UV3Kind),l("TEXCOORD_3",L.UV4Kind),l("TEXCOORD_4",L.UV5Kind),l("TEXCOORD_5",L.UV6Kind),l("JOINTS_0",L.MatricesIndicesKind),l("WEIGHTS_0",L.MatricesWeightsKind),l("JOINTS_1",L.MatricesIndicesExtraKind),l("WEIGHTS_1",L.MatricesWeightsExtraKind),l("COLOR_0",L.ColorKind,c=>{c.type==="VEC4"&&(i.hasVertexAlpha=!0)}),Promise.all(a).then(()=>o)}_createMorphTargets(e,t,i,r,s){if(!r.targets||!this._parent.loadMorphTargets)return;if(t._numMorphTargets==null)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);let a=i.extras?i.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,s.morphTargetManager=new zh(this._babylonScene),s.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.morphTargetManager.areUpdatesFrozen=!0;for(let o=0;o{a.areUpdatesFrozen=!1})}async _loadMorphTargetVertexDataAsync(e,t,i,r){let s=new Array,a=(o,l,c)=>{if(i[o]==null)return;let f=t.getVertexBuffer(l);if(!f)return;let d=qt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(h=>{c(f,h)}))};return a("POSITION",L.PositionKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setPositions(c)}),a("NORMAL",L.NormalKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(c.length,(f,d)=>{c[d]=l[d]+f}),r.setNormals(c)}),a("TANGENT",L.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,h)=>{(h+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",L.UVKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUVs(c)}),a("TEXCOORD_1",L.UV2Kind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUV2s(c)}),a("COLOR_0",L.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,h)=>{let u=Math.floor(h/3),m=h%3;c[4*u+m]=l[3*u+m]+d});for(let d=0;d{c[h]=l[h]+d});else throw new Error(`${e}: Invalid number of components (${f}) for COLOR_0 attribute`);r.setColors(c)}),await Promise.all(s).then(()=>{})}static _LoadTransform(e,t){if(e.skin!=null)return;let i=b.Zero(),r=Ke.Identity(),s=b.One();e.matrix?Z.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=Ke.FromArray(e.rotation)),e.scale&&(s=b.FromArray(e.scale))),t.position=i,t.rotationQuaternion=r,t.scaling=s}_loadSkinAsync(e,t,i,r){if(!this._parent.loadSkins)return Promise.resolve();let s=this._extensionsLoadSkinAsync(e,t,i);if(s)return s;if(i._data)return r(i._data.babylonSkeleton),i._data.promise;let a=`skeleton${i.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let o=new Gb(i.name||a,a,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,i,o);let l=this._loadSkinInverseBindMatricesDataAsync(e,i).then(c=>{this._updateBoneMatrices(o,c)});return i._data={babylonSkeleton:o,promise:l},r(o),l}_loadBones(e,t,i){if(t.skeleton==null||this._parent.alwaysComputeSkeletonRootNode){let s=this._findSkeletonRootNode(`${e}/joints`,t.joints);if(s)if(t.skeleton===void 0)t.skeleton=s.index;else{let a=(l,c)=>{for(;c.parent;c=c.parent)if(c.parent===l)return!0;return!1},o=qt.Get(`${e}/skeleton`,this._gltf.nodes,t.skeleton);o!==s&&!a(o,s)&&(ee.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),t.skeleton=s.index)}else ee.Warn(`${e}: Failed to find common root`)}let r={};for(let s of t.joints){let a=qt.Get(`${e}/joints/${s}`,this._gltf.nodes,s);this._loadBone(a,t,i,r)}}_findSkeletonRootNode(e,t){if(t.length===0)return null;let i={};for(let s of t){let a=[],o=qt.Get(`${e}/${s}`,this._gltf.nodes,s);for(;o.index!==-1;)a.unshift(o),o=o.parent;i[s]=a}let r=null;for(let s=0;;++s){let a=i[t[0]];if(s>=a.length)return r;let o=a[s];for(let l=1;l=a.length||o!==a[s])return r;r=o}}_loadBone(e,t,i,r){e._isJoint=!0;let s=r[e.index];if(s)return s;let a=null;e.index!==t.skeleton&&(e.parent&&e.parent.index!==-1?a=this._loadBone(e.parent,t,i,r):t.skeleton!==void 0&&ee.Warn(`/skins/${t.index}/skeleton: Skeleton node is not a common root`));let o=t.joints.indexOf(e.index);return s=new Qa(e.name||`joint${e.index}`,i,a,this._getNodeMatrix(e),null,null,o),r[e.index]=s,this._postSceneLoadActions.push(()=>{s.linkTransformNode(e._babylonTransformNode)}),s}_loadSkinInverseBindMatricesDataAsync(e,t){if(t.inverseBindMatrices==null)return Promise.resolve(null);let i=qt.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${i.index}`,i)}_updateBoneMatrices(e,t){for(let i of e.bones){let r=Z.Identity(),s=i._index;t&&s!==-1&&(Z.FromArrayToRef(t,s*16,r),r.invertToRef(r));let a=i.getParent();a&&r.multiplyToRef(a.getAbsoluteInverseBindMatrix(),r),i.updateMatrix(r,!1,!1),i._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?Z.FromArray(e.matrix):Z.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?Ke.FromArray(e.rotation):Ke.Identity(),e.translation?b.FromArray(e.translation):b.Zero())}loadCameraAsync(e,t,i=()=>{}){let r=this._extensionsLoadCameraAsync(e,t,i);if(r)return r;let s=new Array;this.logOpen(`${e} ${t.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;let a=new Wc(t.name||`camera${t.index}`,b.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonCamera=a,a.setTarget(new b(0,0,-1)),t.type){case"perspective":{let o=t.perspective;if(!o)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=o.yfov,a.minZ=o.znear,a.maxZ=o.zfar||0;break}case"orthographic":{if(!t.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=gt.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break}default:throw new Error(`${e}: Invalid camera type (${t.type})`)}return n.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),i(a),this.logClose(),Promise.all(s).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");let e=this._gltf.animations;if(!e)return Promise.resolve();let t=new Array;for(let i=0;i{s.targetedAnimations.length===0&&s.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");let i=this._extensionsLoadAnimationAsync(e,t);return i||Wge.value.then(({AnimationGroup:r})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;let s=new r(t.name||`animation${t.index}`,this._babylonScene);s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=s;let a=new Array;qt.Assign(t.channels),qt.Assign(t.samplers);for(let o of t.channels)a.push(this._loadAnimationChannelAsync(`${e}/channels/${o.index}`,e,t,o,(l,c)=>{l.animations=l.animations||[],l.animations.push(c),s.addTargetedAnimation(c,l)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(a).then(()=>(s.normalize(0),s))})}_loadAnimationChannelAsync(e,t,i,r,s){let a=this._extensionsLoadAnimationChannelAsync(e,t,i,r,s);if(a)return a;if(r.target.node==null)return Promise.resolve();let o=qt.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),l=r.target.path,c=l==="weights";return c&&!o._numMorphTargets||!c&&!o._babylonTransformNode||!this._parent.loadNodeAnimations&&!c&&!o._isJoint?Promise.resolve():Hge.value.then(()=>{var h,u,m,_;let f;switch(l){case"translation":{f=(h=Gv("/nodes/{}/translation"))==null?void 0:h.interpolation;break}case"rotation":{f=(u=Gv("/nodes/{}/rotation"))==null?void 0:u.interpolation;break}case"scale":{f=(m=Gv("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(_=Gv("/nodes/{}/weights"))==null?void 0:_.interpolation;break}default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!f)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);let d={object:o,info:f};return this._loadAnimationChannelFromTargetInfoAsync(e,t,i,r,d,s)})}_loadAnimationChannelFromTargetInfoAsync(e,t,i,r,s,a){let o=this.parent.targetFps,l=1/o,c=qt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,h=s.object,u=s.info;for(let m of u){let _=m.getStride(h),p=f.input,g=f.output,v=new Array(p.length),T=0;switch(f.interpolation){case"STEP":{for(let S=0;S0){let S=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,E=m.buildAnimations(h,S,o,v);for(let A of E)d++,a(A.babylonAnimatable,A.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;let i=t.interpolation||"LINEAR";switch(i){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}let r=qt.Get(`${e}/input`,this._gltf.accessors,t.input),s=qt.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)]).then(([a,o])=>({input:a,interpolation:i,output:o})),t._data}loadBufferAsync(e,t,i,r){let s=this._extensionsLoadBufferAsync(e,t,i,r);if(s)return s;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(a=>{try{return new Uint8Array(a.buffer,a.byteOffset+i,r)}catch(o){throw new Error(`${e}: ${o.message}`,{cause:o})}})}loadBufferViewAsync(e,t){let i=this._extensionsLoadBufferViewAsync(e,t);if(i)return i;if(t._data)return t._data;let r=qt.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,t,i){if(t._data)return t._data;let r=n._GetNumComponents(e,t.type),s=r*L.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${o.index}`,o).then(l=>{if(t.componentType===5126&&!t.normalized&&(!o.byteStride||o.byteStride===s))return n._GetTypedArray(e,t.componentType,l,t.byteOffset,a);{let c=new i(a);return L.ForEach(l,t.byteOffset||0,o.byteStride||s,r,t.componentType,c.length,t.normalized||!1,(f,d)=>{c[d]=f}),c}})}if(t.sparse){let o=t.sparse;t._data=t._data.then(l=>{let c=l,f=qt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=qt.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,o.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${f.index}`,f),this.loadBufferViewAsync(`/bufferViews/${d.index}`,d)]).then(([h,u])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,h,o.indices.byteOffset,o.count),_=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);p=new i(_),L.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(T,S)=>{p[S]=T})}let g=0;for(let v=0;vn._GetTypedArray(e,t.componentType,r,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;let t=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(i=>new Ro(t,i,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,t,i){var s;if((s=t._babylonVertexBuffer)!=null&&s[i])return t._babylonVertexBuffer[i];t._babylonVertexBuffer||(t._babylonVertexBuffer={});let r=this._babylonScene.getEngine();if(t.sparse||t.bufferView==null)t._babylonVertexBuffer[i]=this._loadFloatAccessorAsync(e,t).then(a=>new L(r,a,i,!1));else{let a=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._babylonVertexBuffer[i]=this._loadVertexBufferViewAsync(a).then(o=>{let l=n._GetNumComponents(e,t.type);return new L(r,o,i,!1,void 0,a.byteStride,void 0,t.byteOffset,l,t.componentType,t.normalized,!0,void 0,!0)})}return t._babylonVertexBuffer[i]}_loadMaterialMetallicRoughnessPropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);return t&&(t.baseColorFactor?(s.baseColor=Ee.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=Ee.White(),s.baseMetalness=t.metallicFactor==null?1:t.metallicFactor,s.specularRoughness=t.roughnessFactor==null?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,t.baseColorTexture,a=>{a.name=`${i.name} (Base Color)`,s.baseColorTexture=a})),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,t.metallicRoughnessTexture,a=>{a.name=`${i.name} (Metallic Roughness)`,s.baseMetalnessTexture=a,s.specularRoughnessTexture=a})),s.useRoughnessFromMetallicTextureGreen=!0,s.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,i,r,s=()=>{}){let a=this._extensionsLoadMaterialAsync(e,t,i,r,s);if(a)return a;t._data=t._data||{};let o=t._data[r];if(!o){this.logOpen(`${e} ${t.name||""}`);let l=this.createMaterial(e,t,r);o={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,l)},t._data[r]=o,n.AddPointerMetadata(l,e),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return i&&(o.babylonMeshes.push(i),i.onDisposeObservable.addOnce(()=>{let l=o.babylonMeshes.indexOf(i);l!==-1&&o.babylonMeshes.splice(l,1)})),s(o.babylonMaterial),o.promise.then(()=>o.babylonMaterial)}_createDefaultMaterial(e,t){if(!this._pbrMaterialImpl)throw new Error("PBR Material class not loaded");this._babylonScene._blockEntityCollection=!!this._assetContainer;let i=new this._pbrMaterialImpl.materialClass(e,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.fillMode=t,i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;let r=this._getOrCreateMaterialAdapter(i);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,i}createMaterial(e,t,i){let r=this._extensionsCreateMaterial(e,t,i);if(r)return r;let s=t.name||`material${t.index}`;return this._createDefaultMaterial(s,i)}loadMaterialPropertiesAsync(e,t,i){let r=this._extensionsLoadMaterialPropertiesAsync(e,t,i);if(r)return r;let s=new Array;return s.push(this.loadMaterialBasePropertiesAsync(e,t,i)),t.pbrMetallicRoughness&&s.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,i)),this.loadMaterialAlphaProperties(e,t,i),Promise.all(s).then(()=>{})}loadMaterialBasePropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);s.emissionColor=t.emissiveFactor?Ee.FromArray(t.emissiveFactor):new Ee(0,0,0),t.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,t.normalTexture,c=>{var f;c.name=`${i.name} (Normal)`,s.geometryNormalTexture=c,((f=t.normalTexture)==null?void 0:f.scale)!=null&&(c.level=t.normalTexture.scale)})),s.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let a,o=1,l;return t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,t.occlusionTexture,c=>{c.name=`${i.name} (Occlusion)`,a=c})),t.occlusionTexture.strength!=null&&(o=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,t.emissiveTexture,c=>{c.name=`${i.name} (Emissive)`,l=c})),Promise.all(r).then(()=>{a&&(s.ambientOcclusionTexture=a,s.ambientOcclusionTextureStrength=o),l&&(s.emissionColorTexture=l)})}loadMaterialAlphaProperties(e,t,i){if(!this._pbrMaterialImpl)throw new Error(`${e}: Material type not supported`);let r=this._getOrCreateMaterialAdapter(i),s=r.baseColorTexture;switch(t.alphaMode||"OPAQUE"){case"OPAQUE":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE,i.alpha=1;break}case"MASK":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST,r.alphaCutOff=t.alphaCutoff==null?.5:t.alphaCutoff,s&&(s.hasAlpha=!0);break}case"BLEND":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break}default:throw new Error(`${e}/alphaMode: Invalid value (${t.alphaMode})`)}}loadTextureInfoAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureInfoAsync(e,t,i);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);let s=qt.Get(`${e}/index`,this._gltf.textures,t.index);s._textureInfo=t;let a=this._loadTextureAsync(`/textures/${t.index}`,s,o=>{o.coordinatesIndex=t.texCoord||0,n.AddPointerMetadata(o,e),this._parent.onTextureLoadedObservable.notifyObservers(o),i(o)});return this.logClose(),a}_loadTextureAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureAsync(e,t,i);if(r)return r;this.logOpen(`${e} ${t.name||""}`);let s=t.sampler==null?n.DefaultSampler:qt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=qt.Get(`${e}/source`,this._gltf.images,t.source),o=this._createTextureAsync(e,s,a,i,void 0,!t._textureInfo.nonColorData);return this.logClose(),o}_createTextureAsync(e,t,i,r=()=>{},s,a){var m,_;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new Bb;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,g)=>{this._disposed||c.reject(new Error(`${e}: ${g&&g.message?g.message:p||"Failed to load texture"}`))},mimeType:(_=i.mimeType)!=null?_:zV((m=i.uri)!=null?m:""),loaderOptions:s,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},d=new _e(null,this._babylonScene,f);d._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,l.push(c.promise);let h=i.uri&&!Cf(i.uri)?i.uri:void 0,u=h!=null?h:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let g=`data:${this._uniqueRootUrl}${u}`;d.updateURL(g,p);let v=d.getInternalTexture();v&&(v.label=i.name)})),d.wrapU=o.wrapU,d.wrapV=o.wrapV,r(d),this._parent.useGltfTextureNames){let p=i.name||h||`image${i.index}`;d.name=p}return Promise.all(l).then(()=>d)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:t.minFilter===9728||t.minFilter===9729,samplingMode:n._GetTextureSamplingMode(e,t),wrapU:n._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:n._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{let i=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i)}this.logClose()}return t._data}loadUriAsync(e,t,i){let r=this._extensionsLoadUriAsync(e,t,i);if(r)return r;if(!n._ValidateUri(i))throw new Error(`${e}: '${i}' is invalid`);if(Cf(i)){let s=new Uint8Array(Pf(i));return this.log(`${e}: Decoded ${i.substring(0,64)}... (${s.length} bytes)`),Promise.resolve(s)}return this.log(`${e}: Loading ${i}`),this._parent.preprocessUrlAsync(this._rootUrl+i).then(s=>new Promise((a,o)=>{this._parent._loadFile(this._babylonScene,s,l=>{this._disposed||(this.log(`${e}: Loaded ${i} (${l.byteLength} bytes)`),a(new Uint8Array(l)))},!0,l=>{o(new Gm(`${e}: Failed to load '${i}'${l?": "+l.status+" "+l.statusText:""}`,l))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};let i=e._internalMetadata=e._internalMetadata||{},r=i.gltf=i.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,t){switch(t=t==null?10497:t,t){case 33071:return _e.CLAMP_ADDRESSMODE;case 33648:return _e.MIRROR_ADDRESSMODE;case 10497:return _e.WRAP_ADDRESSMODE;default:return ee.Warn(`${e}: Invalid value (${t})`),_e.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,t){let i=t.magFilter==null?9729:t.magFilter,r=t.minFilter==null?9987:t.minFilter;if(i===9729)switch(r){case 9728:return _e.LINEAR_NEAREST;case 9729:return _e.LINEAR_LINEAR;case 9984:return _e.LINEAR_NEAREST_MIPNEAREST;case 9985:return _e.LINEAR_LINEAR_MIPNEAREST;case 9986:return _e.LINEAR_NEAREST_MIPLINEAR;case 9987:return _e.LINEAR_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),_e.LINEAR_LINEAR_MIPLINEAR}else switch(i!==9728&&ee.Warn(`${e}/magFilter: Invalid value (${i})`),r){case 9728:return _e.NEAREST_NEAREST;case 9729:return _e.NEAREST_LINEAR;case 9984:return _e.NEAREST_NEAREST_MIPNEAREST;case 9985:return _e.NEAREST_LINEAR_MIPNEAREST;case 9986:return _e.NEAREST_NEAREST_MIPLINEAR;case 9987:return _e.NEAREST_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),_e.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,t){try{return JC(t)}catch(i){throw new Error(`${e}: ${i.message}`,{cause:i})}}static _GetTypedArray(e,t,i,r,s){let a=i.buffer;r=i.byteOffset+(r||0);let o=n._GetTypedArrayConstructor(`${e}/componentType`,t),l=L.GetTypeByteLength(t);return r%l!==0?(ee.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new o(a.slice(r,r+s*l),0)):new o(a,r,s)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return pe.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Se.PointListDrawMode;case 1:return Se.LineListDrawMode;case 2:return Se.LineLoopDrawMode;case 3:return Se.LineStripDrawMode;case 4:return Se.TriangleFillMode;case 5:return Se.TriangleStripDrawMode;case 6:return Se.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${t})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");let e=new Array;if(this._gltf.materials){for(let t of this._gltf.materials)if(t._data)for(let i in t._data){let r=t._data[i];for(let s of r.babylonMeshes){s.computeWorldMatrix(!0);let a=r.babylonMaterial;e.push(a.forceCompilationAsync(s)),e.push(a.forceCompilationAsync(s,{useInstances:!0})),this._parent.useClipPlane&&(e.push(a.forceCompilationAsync(s,{clipPlane:!0})),e.push(a.forceCompilationAsync(s,{clipPlane:!0,useInstances:!0})))}}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");let e=new Array,t=this._babylonScene.lights;for(let i of t){let r=i.getShadowGenerator();r&&e.push(r.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(let t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,i){for(let r of this._extensions)if(r.enabled){let s=`${r.name}.${t}`,a=e;a._activeLoaderExtensionFunctions=a._activeLoaderExtensionFunctions||{};let o=a._activeLoaderExtensionFunctions;if(!o[s]){o[s]=!0;try{let l=i(r);if(l)return l}finally{delete o[s]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",i=>i.loadSceneAsync&&i.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,i){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,i))}_extensionsLoadCameraAsync(e,t,i){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,i))}_extensionsLoadVertexDataAsync(e,t,i){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,i))}_extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a){return this._applyExtensions(s,"loadMeshPrimitive",o=>o._loadMeshPrimitiveAsync&&o._loadMeshPrimitiveAsync(e,t,i,r,s,a))}_extensionsLoadMaterialAsync(e,t,i,r,s){return this._applyExtensions(t,"loadMaterial",a=>a._loadMaterialAsync&&a._loadMaterialAsync(e,t,i,r,s))}_extensionsCreateMaterial(e,t,i){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,i))}_extensionsLoadMaterialPropertiesAsync(e,t,i){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,i))}_extensionsLoadTextureInfoAsync(e,t,i){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,i))}_extensionsLoadTextureAsync(e,t,i){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,i))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",i=>i.loadAnimationAsync&&i.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,i,r,s){return this._applyExtensions(i,"loadAnimationChannel",a=>a._loadAnimationChannelAsync&&a._loadAnimationChannelAsync(e,t,i,r,s))}_extensionsLoadSkinAsync(e,t,i){return this._applyExtensions(i,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,i))}_extensionsLoadUriAsync(e,t,i){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,i))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",i=>i.loadBufferViewAsync&&i.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,i,r){return this._applyExtensions(t,"loadBuffer",s=>s.loadBufferAsync&&s.loadBufferAsync(e,t,i,r))}static LoadExtensionAsync(e,t,i,r){if(!t.extensions)return null;let a=t.extensions[i];return a?r(`${e}/extensions/${i}`,a):null}static LoadExtraAsync(e,t,i,r){if(!t.extras)return null;let a=t.extras[i];return a?r(`${e}/extras/${i}`,a):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&this._gltf.extensionsUsed.indexOf(e)!==-1}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}};tM.DefaultSampler={index:-1};ud._CreateGLTF2Loader=n=>new tM(n)});var Rw,xw,DZ=I(()=>{eN();Rw="ExtrasAsMetadata",xw=class{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){let i=e.metadata=e.metadata||{},r=i.gltf=i.gltf||{};r.extras=t.extras}}constructor(e){this.name=Rw,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,i){return this._loader.loadNodeAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}loadCameraAsync(e,t,i){return this._loader.loadCameraAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}createMaterial(e,t,i){let r=this._loader.createMaterial(e,t,i);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(i=>(this._assignExtras(i,t),i))}};Vv(Rw);Wb(Rw,!1,n=>new xw(n))});var iM,LZ=I(()=>{iM={name:"obj",extensions:".obj"}});var Xh,OZ=I(()=>{zt();Xr();Gc();Xh=class n{constructor(){this.materials=[]}parseMTL(e,t,i,r){if(t instanceof ArrayBuffer)return;let s=t.split(` -`),a=/\s+/,o,l=null;for(let c=0;c=0?f.substring(0,d):f;h=h.toLowerCase();let u=d>=0?f.substring(d+1).trim():"";if(h==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new We(u,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(h==="kd"&&l)o=u.split(a,3).map(parseFloat),l.diffuseColor=Ee.FromArray(o);else if(h==="ka"&&l)o=u.split(a,3).map(parseFloat),l.ambientColor=Ee.FromArray(o);else if(h==="ks"&&l)o=u.split(a,3).map(parseFloat),l.specularColor=Ee.FromArray(o);else if(h==="ke"&&l)o=u.split(a,3).map(parseFloat),l.emissiveColor=Ee.FromArray(o);else if(h==="ns"&&l)l.specularPower=parseFloat(u);else if(h==="d"&&l)l.alpha=parseFloat(u);else if(h==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,u,e);else if(h==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,u,e);else if(h==="map_ks"&&l)l.specularTexture=n._GetTexture(i,u,e);else if(h!=="map_ns")if(h==="map_bump"&&l){let m=u.split(a),_=m.indexOf("-bm"),p=null;_>=0&&(p=m[_+1],m.splice(_,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else h==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,u,e))}l&&this.materials.push(l)}static _GetTexture(e,t,i){if(!t)return null;let r=e;if(e==="file:"){let s=t.lastIndexOf("\\");s===-1&&(s=t.lastIndexOf("/")),s>-1?r+=t.substring(s+1):r+=t}else r+=t;return new _e(r,i,!1,n.INVERT_TEXTURE_Y)}};Xh.INVERT_TEXTURE_Y=!0});var tn,NZ=I(()=>{Zi();Gc();zt();ke();iR();Fi();Tr();Lt();tn=class n{constructor(e,t,i){this._positions=[],this._normals=[],this._uvs=[],this._colors=[],this._extColors=[],this._meshesFromObj=[],this._indicesForBabylon=[],this._wrappedPositionForBabylon=[],this._wrappedUvsForBabylon=[],this._wrappedColorsForBabylon=[],this._wrappedNormalsForBabylon=[],this._tuplePosNorm=[],this._curPositionInIndices=0,this._hasMeshes=!1,this._unwrappedPositionsForBabylon=[],this._unwrappedColorsForBabylon=[],this._unwrappedNormalsForBabylon=[],this._unwrappedUVForBabylon=[],this._triangles=[],this._materialNameFromObj="",this._objMeshName="",this._increment=1,this._isFirstMaterial=!0,this._grayColor=new ft(.5,.5,.5,1),this._hasLineData=!1,this._materialToUse=e,this._babylonMeshesArray=t,this._loadingOptions=i}_isInArray(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});let i=e[t[0]].normals.indexOf(t[1]);return i===-1?-1:e[t[0]].idx[i]}_isInArrayUV(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});let i=e[t[0]].normals.indexOf(t[1]);return i!=1&&t[2]===e[t[0]].uv[i]?e[t[0]].idx[i]:-1}_setData(e){var i,r;(i=e.indiceUvsFromObj)!=null||(e.indiceUvsFromObj=-1),(r=e.indiceNormalFromObj)!=null||(e.indiceNormalFromObj=-1);let t;this._loadingOptions.optimizeWithUV?t=this._isInArrayUV(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj,e.indiceUvsFromObj]):t=this._isInArray(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj]),t===-1?(this._indicesForBabylon.push(this._wrappedPositionForBabylon.length),this._wrappedPositionForBabylon.push(e.positionVectorFromOBJ),e.textureVectorFromOBJ!==void 0&&this._wrappedUvsForBabylon.push(e.textureVectorFromOBJ),e.normalsVectorFromOBJ!==void 0&&this._wrappedNormalsForBabylon.push(e.normalsVectorFromOBJ),e.positionColorsFromOBJ!==void 0&&this._wrappedColorsForBabylon.push(e.positionColorsFromOBJ),this._tuplePosNorm[e.indicePositionFromObj].normals.push(e.indiceNormalFromObj),this._tuplePosNorm[e.indicePositionFromObj].idx.push(this._curPositionInIndices++),this._loadingOptions.optimizeWithUV&&this._tuplePosNorm[e.indicePositionFromObj].uv.push(e.indiceUvsFromObj)):this._indicesForBabylon.push(t)}_unwrapData(){try{for(let e=0;e0&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._unwrapData(),this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._handledMesh.indices=this._indicesForBabylon.slice(),this._handledMesh.positions=this._unwrappedPositionsForBabylon.slice(),this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon.slice()),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon.slice()),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon.slice()),this._handledMesh.hasLines=this._hasLineData,this._indicesForBabylon.length=0,this._unwrappedPositionsForBabylon.length=0,this._unwrappedColorsForBabylon.length=0,this._unwrappedNormalsForBabylon.length=0,this._unwrappedUVForBabylon.length=0,this._hasLineData=!1)}_optimizeNormals(e){let t=e.getVerticesData(L.PositionKind),i=e.getVerticesData(L.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u+1],h[u]),this._handednessSign=1):(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=-1);let a=t.split(` -`),o=[],l=[];o.push(l);for(let h=0;h=7){let _=parseFloat(m[4]),p=parseFloat(m[5]),g=parseFloat(m[6]);this._colors.push(new ft(_>1?_/255:_,p>1?p/255:p,g>1?g/255:g,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(u))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(u))!==null)this._uvs.push(new we(parseFloat(m[1])*this._loadingOptions.UVScaling.x,parseFloat(m[2])*this._loadingOptions.UVScaling.y));else if((m=n.FacePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(u))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(u))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(u,!this._loadingOptions.importVertexColors))for(let _ of m)this._extColors.push(_);else if((m=n.LinePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(u)||n.ObjectDescriptor.test(u)){let _={name:u.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(u)};this._addPreviousObjMesh(),this._meshesFromObj.push(_),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(u)){if(this._materialNameFromObj=u.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let _={name:(this._objMeshName||"mesh")+"_mm"+this._increment.toString(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:!1};this._increment++,this._meshesFromObj.push(_),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(u)?s(u.substring(7).trim()):n.SmoothDescriptor.test(u)||ee.Log("Unhandled expression at line : "+u)}if(this._hasMeshes&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData(),this._handledMesh.indices=this._indicesForBabylon,this._handledMesh.positions=this._unwrappedPositionsForBabylon,this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon),this._handledMesh.hasLines=this._hasLineData),!this._hasMeshes){let h=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let u of this._positions)this._unwrappedPositionsForBabylon.push(u.x,u.y,u.z);if(this._normals.length)for(let u of this._normals)this._unwrappedNormalsForBabylon.push(u.x,u.y,u.z);if(this._uvs.length)for(let u of this._uvs)this._unwrappedUVForBabylon.push(u.x,u.y);if(this._extColors.length)for(let u of this._extColors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);else if(this._colors.length)for(let u of this._colors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);this._materialNameFromObj||(h=new We(xn.RandomId(),i),h.pointsCloud=!0,this._materialNameFromObj=h.name,this._normals.length||(h.disableLighting=!0,h.emissiveColor=Ee.White()))}this._meshesFromObj.push({name:xn.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:h,isObject:!0,hasLines:this._hasLineData})}for(let h=0;h=0;--_)if(this._meshesFromObj[_].isObject&&this._meshesFromObj[_]._babylonMesh){u.parent=this._meshesFromObj[_]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[h].materialName),this._handledMesh.hasLines&&((f=u._internalMetadata)!=null||(u._internalMetadata={}),u._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(u);continue}let m=new Me;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let _=new Array;Me.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,_),m.normals=_}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(u),this._loadingOptions.invertY&&(u.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(u),this._babylonMeshesArray.push(u),this._handledMesh.directMaterial&&(u.material=this._handledMesh.directMaterial)}}};tn.ObjectDescriptor=/^o/;tn.GroupDescriptor=/^g/;tn.MtlLibGroupDescriptor=/^mtllib /;tn.UseMtlDescriptor=/^usemtl /;tn.SmoothDescriptor=/^s /;tn.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;tn.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;tn.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;tn.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;tn.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;tn.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;tn.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;tn.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var wZ={};Fe(wZ,{OBJFileLoader:()=>Sa});var Sa,bw=I(()=>{ke();wi();Np();Fv();LZ();OZ();NZ();Gc();Sa=class n{static get INVERT_TEXTURE_Y(){return Xh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){Xh.INVERT_TEXTURE_Y=e}constructor(e){this.name=iM.name,this.extensions=iM.extensions,this._assetContainer=null,this._loadingOptions={...n._DefaultLoadingOptions,...e!=null?e:{}}}static get _DefaultLoadingOptions(){return{computeNormals:n.COMPUTE_NORMALS,optimizeNormals:n.OPTIMIZE_NORMALS,importVertexColors:n.IMPORT_VERTEX_COLORS,invertY:n.INVERT_Y,invertTextureY:n.INVERT_TEXTURE_Y,UVScaling:n.UV_SCALING,materialLoadingFailsSilently:n.MATERIAL_LOADING_FAILS_SILENTLY,optimizeWithUV:n.OPTIMIZE_WITH_UV,skipMaterials:n.SKIP_MATERIALS,useLegacyBehavior:n.USE_LEGACY_BEHAVIOR}}_loadMTL(e,t,i,r){let s=t+e;pe.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[iM.name])}canDirectLoad(){return!1}importMeshAsync(e,t,i,r){return this._parseSolidAsync(e,t,i,r).then(s=>({meshes:s,particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))}loadAsync(e,t,i){return this.importMeshAsync(null,e,t,i).then(()=>{})}loadAssetContainerAsync(e,t,i){let r=new Ll(e);return this._assetContainer=r,this.importMeshAsync(null,e,t,i).then(s=>(s.meshes.forEach(a=>r.meshes.push(a)),s.meshes.forEach(a=>{let o=a.material;o&&r.materials.indexOf(o)==-1&&(r.materials.push(o),o.getActiveTextures().forEach(c=>{r.textures.indexOf(c)==-1&&r.textures.push(c)}))}),this._assetContainer=null,r)).catch(s=>{throw this._assetContainer=null,s})}_parseSolidAsync(e,t,i,r){let s="",a=new Xh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new tn(o,l,this._loadingOptions).parse(e,i,t,this._assetContainer,d=>{s=d});let f=[];return s!==""&&!this._loadingOptions.skipMaterials&&f.push(new Promise((d,h)=>{this._loadMTL(s,r,u=>{try{a.parseMTL(t,u,r,this._assetContainer);for(let m=0;m-1;)p.push(g),_=g+1;if(g===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{pe.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():h(m)})})),Promise.all(f).then(()=>{let d=h=>{var u,m;return!!((m=(u=h._internalMetadata)==null?void 0:u._isLine)!=null&&m)};return l.forEach(h=>{var u,m;if(d(h)){let _=(u=h.material)!=null?u:new We(h.name+"_line",t);_.getBindedMeshes().filter(g=>!d(g)).length>0&&(_=(m=_.clone(_.name+"_line"))!=null?m:_),_.wireframe=!0,h.material=_,h._internalMetadata&&(h._internalMetadata._isLine=void 0)}}),l})}};Sa.OPTIMIZE_WITH_UV=!0;Sa.INVERT_Y=!1;Sa.IMPORT_VERTEX_COLORS=!1;Sa.COMPUTE_NORMALS=!1;Sa.OPTIMIZE_NORMALS=!1;Sa.UV_SCALING=new we(1,1);Sa.SKIP_MATERIALS=!1;Sa.MATERIAL_LOADING_FAILS_SILENTLY=!0;Sa.USE_LEGACY_BEHAVIOR=!1;hd(new Sa)});function Xge(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function Mw(n,e){if(Xge(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function rM(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function BZ(){if(FZ)return;let n=i=>Mw(i,"asset loading"),e=i=>Mw(i,"script loading"),t=()=>-1;pe.PreprocessUrl=n,pe.ScriptPreprocessUrl=e,pe.DefaultRetryStrategy=t,pe.LoadScript=(i,r,s)=>{try{e(i),rM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},pe.LoadScriptAsync=async i=>{e(i),rM(i)},pe.LoadBabylonScript=(i,r,s)=>{try{rM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},pe.LoadBabylonScriptAsync=async i=>{rM(i)},ji.PreprocessUrl=n,ji.ScriptPreprocessUrl=e,ji.DefaultRetryStrategy=t,wr.CustomRequestModifiers.push((i,r)=>Mw(r,"request")),FZ=!0}var FZ,UZ=I(()=>{"use strict";lc();wi();_h();FZ=!1});function nM(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let _=new TextDecoder().decode(new Uint8Array(e,0,6));if(_==="solid "||_===`solid -`){let p=new TextDecoder().decode(new Uint8Array(e,0,Math.min(e.byteLength,800)));if(p.includes("facet")||p.includes("endsolid"))throw new Error("ASCII STL detected \u2014 only binary STL is supported. Convert to binary STL first.")}}let t=new DataView(e),i=t.getUint32(80,!0);if(i===0)throw new Error("STL file contains 0 triangles");let r=84+i*50;if(e.byteLength>0&31)/31,O=(v>>5&31)/31,N=(v>>10&31)/31,B=_*12;l[B+0]=G,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=G,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=G,l[B+9]=O,l[B+10]=N,l[B+11]=1}let T=a[p+3]-a[p+0],S=a[p+4]-a[p+1],E=a[p+5]-a[p+2],A=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],y=S*M-E*R,C=E*A-T*M,D=T*R-S*A,w=Math.sqrt(y*y+C*C+D*D);w>1e-8?(y/=w,C/=w,D/=w):(y=0,C=0,D=1,f++),o[p+0]=y,o[p+1]=C,o[p+2]=D,o[p+3]=y,o[p+4]=C,o[p+5]=D,o[p+6]=y,o[p+7]=C,o[p+8]=D,c[g+0]=p/3+0,c[g+1]=p/3+1,c[g+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let h=new Me;h.positions=a,h.normals=o,h.indices=c,l&&(h.colors=l);let u=new q("stl-model",n);h.applyToMesh(u);let m=new We("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new Ee(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new Ee(1,1,1),m.emissiveColor=new Ee(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new Ee(.85,.85,.85),m.emissiveColor=new Ee(.1,.1,.1)),u.material=m,u}function VZ(n,e){return nM(n,e)}function GZ(n){n(Yge)}var Yge,Iw=I(()=>{"use strict";Fi();Fv();Tr();Gc();zt();Yge={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[nM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{nM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=nM(n,e),i=new Ll(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function Kge(n){let e=n.split(` -`),t=[],i="binary_little_endian",r=null;for(let s of e){let a=s.trim();if(a==="end_header")break;if(a==="ply"||a===""||a.startsWith("comment"))continue;let o=a.split(/\s+/),l=o[0];l==="format"?i=o[1]:l==="element"?(r={name:o[1],count:parseInt(o[2],10),properties:[]},t.push(r)):l==="property"&&r&&(o[1]==="list"?r.properties.push({name:o[4],type:"list",isList:!0,countType:o[2],itemType:o[3]}):r.properties.push({name:o[2],type:o[1],isList:!1}))}return{format:i,elements:t}}function zp(n){switch(n){case"uchar":case"uint8":return 1;case"char":case"int8":return 1;case"ushort":case"uint16":return 2;case"short":case"int16":return 2;case"uint":case"uint32":return 4;case"int":case"int32":return 4;case"float":case"float32":return 4;case"double":case"float64":return 8;default:return 4}}function sM(n,e,t,i){switch(t){case"uchar":case"uint8":return n.getUint8(e);case"char":case"int8":return n.getInt8(e);case"ushort":case"uint16":return n.getUint16(e,i);case"short":case"int16":return n.getInt16(e,i);case"uint":case"uint32":return n.getUint32(e,i);case"int":case"int32":return n.getInt32(e,i);case"float":case"float32":return n.getFloat32(e,i);case"double":case"float64":return n.getFloat64(e,i);default:return 0}}function jge(n,e,t,i){let r=i,s=new DataView(n),a=[],o=[],l=[],c=e.elements.find(d=>d.name==="vertex"),f=e.elements.find(d=>d.name==="face");if(c){let d=c.properties.some(u=>u.name==="x"),h=c.properties.some(u=>u.name==="red"||u.name==="r");for(let u=0;uh.name==="vertex"),c=e.elements.find(h=>h.name==="face"),f=0;if(l){let h=l.properties.some(_=>_.name==="x"),u=l.properties.some(_=>_.name==="red"||_.name==="r"),m=l.properties.filter(_=>!_.isList);for(let _=0;_0){c.indices=o.indices;let h=new Array(l.length).fill(0),u=o.indices,m=l.length-3;for(let _=0;_m||g>m||v>m)continue;let T=l[p],S=l[p+1],E=l[p+2],A=l[g]-T,R=l[g+1]-S,M=l[g+2]-E,y=l[v]-T,C=l[v+1]-S,D=l[v+2]-E,w=R*D-M*C,G=M*y-A*D,O=A*C-R*y;h[p]+=w,h[p+1]+=G,h[p+2]+=O,h[g]+=w,h[g+1]+=G,h[g+2]+=O,h[v]+=w,h[v+1]+=G,h[v+2]+=O}for(let _=0;_0&&(h[_]/=p,h[_+1]/=p,h[_+2]/=p)}c.normals=h}else{let h=o.positions.length/3,u=[];for(let m=0;m=3&&u.push(0,1,2),c.indices=u}let f=new q("ply-model",n);c.applyToMesh(f);let d=new We("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new Ee(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new Ee(.7,.7,.7),f.material=d,f}function kZ(n,e){return aM(n,e)}function WZ(n){n(qge)}var qge,yw=I(()=>{"use strict";Fi();Fv();Tr();Gc();zt();qge={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[aM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{aM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=aM(n,e),i=new Ll(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function Yv(){HZ||(BZ(),GZ(hd),WZ(hd),HZ=!0)}var HZ,Kv=I(()=>{"use strict";QO();PZ();DZ();bw();Np();UZ();Iw();yw();HZ=!1});function jv(n){return Math.floor(n.getTotalIndices()/3)}function _d(n){return n.getTotalVertices()}function Yh(n,e=[]){let t=[n,...e,...n.getChildMeshes(!0)],i=new Set;return t.filter(r=>!r||i.has(r)||r.isDisposed()?!1:(i.add(r),_d(r)>0||r.getTotalIndices()>0))}function zZ(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function Cw(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return xf(Jt(e.minimumWorld),Jt(e.maximumWorld))}function gd(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=nh(e,Cw(t)));return e}function lM(n,e=[]){var t;return(t=gd(Yh(n,e)))!=null?t:Cw(n)}function cM(n,e,t,i={}){return nA({rootName:n,boundingSize:tr(e),meshes:t.map(r=>({triangleCount:jv(r),vertexCount:_d(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function XZ(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:jv(n),vertexCount:_d(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function Pw(n,e=oM){var a,o,l;let t=Cw(n),i=n.name||`mesh-${n.uniqueId}`,r=dM(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=ma(r,{name:i,path:fM(n)});return Jl({name:Lw(s,i),triangleCount:jv(n),vertexCount:_d(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:tr(t),center:Rr(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function YZ(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function Qge(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function $ge(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function Dw(n,e,t=oM){var u,m;if(e.includes(n))return Pw(n,t);let i=new Set(e),r=YZ(n,i),s=Jt(n.getAbsolutePosition()),a=(u=gd(r))!=null?u:xf(s,s),o=new Set,l=0,c=0;for(let _ of r)l+=jv(_),c+=_d(_),(m=_.material)!=null&&m.name&&o.add(_.material.name);let f=Xp(n,`component-${n.uniqueId}`),d=dM(n.metadata,t.get(`node:${f}`)),h=ma(d,{name:f,path:fM(n)});return Jl({name:Lw(h,f),triangleCount:l,vertexCount:c,materialName:sh(o),boundingSize:tr(a),center:Rr(a),source:h.hasExplicitIdentity?"component":"group",meshNames:r.map(_=>_.name||`mesh-${_.uniqueId}`),childCount:r.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function Zv(n,e,t,i=oM){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=YZ(f,r);if(d.length>0&&d.length1&&u.trim()&&!Qge(u)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function KZ(n,e,t=oM){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(h=>i.has(h)),c=Xp(o,`component-${o.uniqueId}`),f=dM(o.metadata,t.get(`node:${c}`)),d=ma(f,{name:Xp(o,`component-${o.uniqueId}`),path:fM(o)});l.length<1||l.length===n.length||!d.hasExplicitIdentity&&(!o.name.trim()||l.length<2)||a.push({node:o,childMeshes:l,identity:d})}return a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({node:o,childMeshes:l,identity:c})=>{var _;let f=l.filter(p=>!s.has(p));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let p of f)s.add(p);let d=gd(f);if(!d)return;let h=new Set,u=0,m=0;for(let p of f)u+=jv(p),m+=_d(p),(_=p.material)!=null&&_.name&&h.add(p.material.name);r.push(Jl({name:Lw(c,Xp(o,`component-${o.uniqueId}`)),triangleCount:u,vertexCount:m,materialName:sh(h),boundingSize:tr(d),center:Rr(d),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(p=>p.name||`mesh-${p.uniqueId}`),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function jZ(n,e){let t=Jge(n,e),i=new Map;if(!t)return i;let r=Array.isArray(t.nodes)?t.nodes:[];for(let a of r){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`node:${l}`,o.extras)}let s=Array.isArray(t.meshes)?t.meshes:[];for(let a of s){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`mesh:${l}`,o.extras)}return i}function Xp(n,e){var i;return((i=ma(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function fM(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Xp(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function Jge(n,e){try{if(e==="gltf")return JSON.parse(new TextDecoder().decode(new Uint8Array(n)));if(e!=="glb")return null;let t=new DataView(n);if(t.byteLength<20||t.getUint32(0,!0)!==1179937895)return null;let i=t.getUint32(12,!0);if(t.getUint32(16,!0)!==1313821514||20+i>t.byteLength)return null;let s=new Uint8Array(n,20,i);return JSON.parse(new TextDecoder().decode(s))}catch(t){return null}}function dM(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function Lw(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var oM,qv=I(()=>{"use strict";fl();_C();Ag();Gs();sA();oM=new Map});function vd(n){return cn(n)}function ZZ(n,e,t,i=[]){RA(new hM(n,i),e,t)}function Ow(n,e=[]){bA(new hM(n,e))}var hM,qZ=I(()=>{"use strict";ke();fl();Gs();SC();qv();hM=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return Yh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return Rr(lM(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return Jt(e.position)}getPartCenter(e){return Jt(e.getBoundingInfo().boundingBox.centerWorld)}setPartPosition(e,t){e.position=new b(t.x,t.y,t.z)}getPartState(e){let t=e.metadata;return t!=null&&t._previewExplodeState?{originalPosition:vd(t._previewExplodeState.originalPosition),originalCenter:vd(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:vd(t._originalPos),originalCenter:vd(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:vd(t.originalPosition),originalCenter:vd(t.originalCenter)},i._originalPos=vd(t.originalPosition),i._originalCenter=vd(t.originalCenter)}}});var uM={};Fe(uM,{glowBlurPostProcessPixelShaderWGSL:()=>eve});var Nw,QZ,eve,mM=I(()=>{k();Nw="glowBlurPostProcessPixelShader",QZ=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f;uniform direction: vec2f;uniform blurWidth: f32;fn getLuminance(color: vec3f)->f32 +`;x.ShadersStore[Ew]||(x.ShadersStore[Ew]=AZ);kge={name:Ew,shader:AZ}});var Hp,Sw,tM,Tw,Cr,bZ=I(()=>{Wt();kt();Lt();Mo();jb();Ys();ke();Zi();AK();AR();zt();xR();Kg();ts();ja();uv();Ya();ZP();Qf();xK();RK();bK();MK();IK();UL();Ml();mv();es();RR();bR();MR();IR();Hp={effect:null,subMesh:null},Sw=class extends yp(Ip(Lr)){},tM=class extends bp(Sw){constructor(e){super(e),this.PBR=!0,this.NUM_SAMPLES="0",this.REALTIME_FILTERING=!1,this.IBL_CDF_FILTERING=!1,this.ALBEDO=!1,this.GAMMAALBEDO=!1,this.ALBEDODIRECTUV=0,this.VERTEXCOLOR=!1,this.BASE_WEIGHT=!1,this.BASE_WEIGHTDIRECTUV=0,this.BASE_DIFFUSE_ROUGHNESS=!1,this.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,this.BAKED_VERTEX_ANIMATION_TEXTURE=!1,this.AMBIENT=!1,this.AMBIENTDIRECTUV=0,this.AMBIENTINGRAYSCALE=!1,this.OPACITY=!1,this.VERTEXALPHA=!1,this.OPACITYDIRECTUV=0,this.OPACITYRGB=!1,this.ALPHATEST=!1,this.DEPTHPREPASS=!1,this.ALPHABLEND=!1,this.ALPHAFROMALBEDO=!1,this.ALPHATESTVALUE="0.5",this.SPECULAROVERALPHA=!1,this.RADIANCEOVERALPHA=!1,this.ALPHAFRESNEL=!1,this.LINEARALPHAFRESNEL=!1,this.PREMULTIPLYALPHA=!1,this.EMISSIVE=!1,this.EMISSIVEDIRECTUV=0,this.GAMMAEMISSIVE=!1,this.REFLECTIVITY=!1,this.REFLECTIVITY_GAMMA=!1,this.REFLECTIVITYDIRECTUV=0,this.SPECULARTERM=!1,this.MICROSURFACEFROMREFLECTIVITYMAP=!1,this.MICROSURFACEAUTOMATIC=!1,this.LODBASEDMICROSFURACE=!1,this.MICROSURFACEMAP=!1,this.MICROSURFACEMAPDIRECTUV=0,this.METALLICWORKFLOW=!1,this.ROUGHNESSSTOREINMETALMAPALPHA=!1,this.ROUGHNESSSTOREINMETALMAPGREEN=!1,this.METALLNESSSTOREINMETALMAPBLUE=!1,this.AOSTOREINMETALMAPRED=!1,this.METALLIC_REFLECTANCE=!1,this.METALLIC_REFLECTANCE_GAMMA=!1,this.METALLIC_REFLECTANCEDIRECTUV=0,this.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=!1,this.REFLECTANCE=!1,this.REFLECTANCE_GAMMA=!1,this.REFLECTANCEDIRECTUV=0,this.ENVIRONMENTBRDF=!1,this.ENVIRONMENTBRDF_RGBD=!1,this.NORMAL=!1,this.TANGENT=!1,this.BUMP=!1,this.BUMPDIRECTUV=0,this.OBJECTSPACE_NORMALMAP=!1,this.PARALLAX=!1,this.PARALLAX_RHS=!1,this.PARALLAXOCCLUSION=!1,this.NORMALXYSCALE=!0,this.LIGHTMAP=!1,this.LIGHTMAPDIRECTUV=0,this.USELIGHTMAPASSHADOWMAP=!1,this.GAMMALIGHTMAP=!1,this.RGBDLIGHTMAP=!1,this.REFLECTION=!1,this.REFLECTIONMAP_3D=!1,this.REFLECTIONMAP_SPHERICAL=!1,this.REFLECTIONMAP_PLANAR=!1,this.REFLECTIONMAP_CUBIC=!1,this.USE_LOCAL_REFLECTIONMAP_CUBIC=!1,this.REFLECTIONMAP_PROJECTION=!1,this.REFLECTIONMAP_SKYBOX=!1,this.REFLECTIONMAP_EXPLICIT=!1,this.REFLECTIONMAP_EQUIRECTANGULAR=!1,this.REFLECTIONMAP_EQUIRECTANGULAR_FIXED=!1,this.REFLECTIONMAP_MIRROREDEQUIRECTANGULAR_FIXED=!1,this.INVERTCUBICMAP=!1,this.USESPHERICALFROMREFLECTIONMAP=!1,this.USEIRRADIANCEMAP=!1,this.USE_IRRADIANCE_DOMINANT_DIRECTION=!1,this.USESPHERICALINVERTEX=!1,this.REFLECTIONMAP_OPPOSITEZ=!1,this.LODINREFLECTIONALPHA=!1,this.GAMMAREFLECTION=!1,this.RGBDREFLECTION=!1,this.LINEARSPECULARREFLECTION=!1,this.RADIANCEOCCLUSION=!1,this.HORIZONOCCLUSION=!1,this.INSTANCES=!1,this.THIN_INSTANCES=!1,this.INSTANCESCOLOR=!1,this.NUM_BONE_INFLUENCERS=0,this.BonesPerMesh=0,this.BONETEXTURE=!1,this.BONES_VELOCITY_ENABLED=!1,this.NONUNIFORMSCALING=!1,this.MORPHTARGETS=!1,this.MORPHTARGETS_POSITION=!1,this.MORPHTARGETS_NORMAL=!1,this.MORPHTARGETS_TANGENT=!1,this.MORPHTARGETS_UV=!1,this.MORPHTARGETS_UV2=!1,this.MORPHTARGETS_COLOR=!1,this.MORPHTARGETTEXTURE_HASPOSITIONS=!1,this.MORPHTARGETTEXTURE_HASNORMALS=!1,this.MORPHTARGETTEXTURE_HASTANGENTS=!1,this.MORPHTARGETTEXTURE_HASUVS=!1,this.MORPHTARGETTEXTURE_HASUV2S=!1,this.MORPHTARGETTEXTURE_HASCOLORS=!1,this.NUM_MORPH_INFLUENCERS=0,this.MORPHTARGETS_TEXTURE=!1,this.MULTIVIEW=!1,this.ORDER_INDEPENDENT_TRANSPARENCY=!1,this.ORDER_INDEPENDENT_TRANSPARENCY_16BITS=!1,this.USEPHYSICALLIGHTFALLOFF=!1,this.USEGLTFLIGHTFALLOFF=!1,this.TWOSIDEDLIGHTING=!1,this.MIRRORED=!1,this.SHADOWFLOAT=!1,this.CLIPPLANE=!1,this.CLIPPLANE2=!1,this.CLIPPLANE3=!1,this.CLIPPLANE4=!1,this.CLIPPLANE5=!1,this.CLIPPLANE6=!1,this.POINTSIZE=!1,this.FOG=!1,this.LOGARITHMICDEPTH=!1,this.CAMERA_ORTHOGRAPHIC=!1,this.CAMERA_PERSPECTIVE=!1,this.AREALIGHTSUPPORTED=!0,this.FORCENORMALFORWARD=!1,this.SPECULARAA=!1,this.UNLIT=!1,this.DECAL_AFTER_DETAIL=!1,this.DEBUGMODE=0,this.USE_VERTEX_PULLING=!1,this.VERTEX_PULLING_USE_INDEX_BUFFER=!1,this.VERTEX_PULLING_INDEX_BUFFER_32BITS=!1,this.RIGHT_HANDED=!1,this.CLUSTLIGHT_SLICES=0,this.CLUSTLIGHT_BATCH=0,this.rebuild()}reset(){super.reset(),this.ALPHATESTVALUE="0.5",this.PBR=!0,this.NORMALXYSCALE=!0}},Tw=class extends Cp(Pl){},Cr=class n extends Tw{get realTimeFiltering(){return this._realTimeFiltering}set realTimeFiltering(e){this._realTimeFiltering=e,this.markAsDirty(1)}get realTimeFilteringQuality(){return this._realTimeFilteringQuality}set realTimeFilteringQuality(e){this._realTimeFilteringQuality=e,this.markAsDirty(1)}get canRenderToMRT(){return!0}constructor(e,t,i=!1){super(e,t,void 0,i||n.ForceGLSL),this._directIntensity=1,this._emissiveIntensity=1,this._environmentIntensity=1,this._specularIntensity=1,this._lightingInfos=new Ni(this._directIntensity,this._emissiveIntensity,this._environmentIntensity,this._specularIntensity),this._disableBumpMap=!1,this._albedoTexture=null,this._baseWeightTexture=null,this._baseDiffuseRoughnessTexture=null,this._ambientTexture=null,this._ambientTextureStrength=1,this._ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this._opacityTexture=null,this._reflectionTexture=null,this._emissiveTexture=null,this._reflectivityTexture=null,this._metallicTexture=null,this._metallic=null,this._roughness=null,this._metallicF0Factor=1,this._metallicReflectanceColor=Ee.White(),this._useOnlyMetallicFromMetallicReflectanceTexture=!1,this._metallicReflectanceTexture=null,this._reflectanceTexture=null,this._microSurfaceTexture=null,this._bumpTexture=null,this._lightmapTexture=null,this._ambientColor=new Ee(0,0,0),this._albedoColor=new Ee(1,1,1),this._baseWeight=1,this._baseDiffuseRoughness=null,this._reflectivityColor=new Ee(1,1,1),this._reflectionColor=new Ee(1,1,1),this._emissiveColor=new Ee(0,0,0),this._microSurface=.9,this._useLightmapAsShadowmap=!1,this._useHorizonOcclusion=!0,this._useRadianceOcclusion=!0,this._useAlphaFromAlbedoTexture=!1,this._useSpecularOverAlpha=!0,this._useMicroSurfaceFromReflectivityMapAlpha=!1,this._useRoughnessFromMetallicTextureAlpha=!0,this._useRoughnessFromMetallicTextureGreen=!1,this._useMetallnessFromMetallicTextureBlue=!1,this._useAmbientOcclusionFromMetallicTextureRed=!1,this._useAmbientInGrayScale=!1,this._useAutoMicroSurfaceFromReflectivityMap=!1,this._lightFalloff=n.LIGHTFALLOFF_PHYSICAL,this._useRadianceOverAlpha=!0,this._useObjectSpaceNormalMap=!1,this._useParallax=!1,this._useParallaxOcclusion=!1,this._parallaxScaleBias=.05,this._disableLighting=!1,this._maxSimultaneousLights=4,this._invertNormalMapX=!1,this._invertNormalMapY=!1,this._twoSidedLighting=!1,this._alphaCutOff=.4,this._useAlphaFresnel=!1,this._useLinearAlphaFresnel=!1,this._environmentBRDFTexture=null,this._forceIrradianceInFragment=!1,this._realTimeFiltering=!1,this._realTimeFilteringQuality=8,this._forceNormalForward=!1,this._enableSpecularAntiAliasing=!1,this._renderTargets=new Xi(16),this._globalAmbientColor=new Ee(0,0,0),this._unlit=!1,this._applyDecalMapAfterDetailMap=!1,this._debugMode=0,this._shadersLoaded=!1,this._breakShaderLoadedCheck=!1,this._vertexPullingMetadata=null,this.debugMode=0,this.debugLimit=-1,this.debugFactor=1,this._cacheHasRenderTargetTextures=!1,this.brdf=new Fr(this),this.clearCoat=new mn(this),this.iridescence=new ea(this),this.anisotropy=new Hc(this),this.sheen=new Ea(this),this.subSurface=new Ii(this),this.detailMap=new Za(this),this._attachImageProcessingConfiguration(null),this.getRenderTargetTextures=()=>(this._renderTargets.reset(),ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget&&this._renderTargets.push(this._reflectionTexture),this._eventInfo.renderTargets=this._renderTargets,this._callbackPluginEventFillRenderTargetTextures(this._eventInfo),this._renderTargets),this._environmentBRDFTexture=Kb(this.getScene()),this.prePassConfiguration=new $s}get hasRenderTargetTextures(){return ce.ReflectionTextureEnabled&&this._reflectionTexture&&this._reflectionTexture.isRenderTarget?!0:this._cacheHasRenderTargetTextures}get isPrePassCapable(){return!this.disableDepthWrite}getClassName(){return"PBRBaseMaterial"}get _disableAlphaBlending(){var e;return this._transparencyMode===n.PBRMATERIAL_OPAQUE||this._transparencyMode===n.PBRMATERIAL_ALPHATEST||((e=this.subSurface)==null?void 0:e.disableAlphaBlending)}needAlphaBlending(){return this._hasTransparencyMode?this._transparencyModeIsBlend:this._disableAlphaBlending?!1:this.alpha<1||this._opacityTexture!=null||this._shouldUseAlphaFromAlbedoTexture()}needAlphaTesting(){var e;return this._hasTransparencyMode?this._transparencyModeIsTest:(e=this.subSurface)!=null&&e.disableAlphaBlending?!1:this._hasAlphaChannel()&&(this._transparencyMode==null||this._transparencyMode===n.PBRMATERIAL_ALPHATEST)}_shouldUseAlphaFromAlbedoTexture(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha&&this._useAlphaFromAlbedoTexture&&this._transparencyMode!==n.PBRMATERIAL_OPAQUE}_hasAlphaChannel(){return this._albedoTexture!=null&&this._albedoTexture.hasAlpha||this._opacityTexture!=null}getAlphaTestTexture(){return this._albedoTexture}isReadyForSubMesh(e,t,i){var h;this._uniformBufferLayoutBuilt||this.buildUniformLayout();let r=t._drawWrapper;if(r.effect&&this.isFrozen&&r._wasPreviouslyReady&&r._wasPreviouslyUsingInstances===i)return!0;t.materialDefines||(this._callbackPluginEventGeneric(4,this._eventInfo),t.materialDefines=new tM(this._eventInfo.defineNames));let s=t.materialDefines;if(this._isReadyForSubMesh(t))return!0;let a=this.getScene(),o=a.getEngine();if(s._areTexturesDirty&&(this._eventInfo.hasRenderTargetTextures=!1,this._callbackPluginEventHasRenderTargetTextures(this._eventInfo),this._cacheHasRenderTargetTextures=this._eventInfo.hasRenderTargetTextures,a.texturesEnabled)){if(this._albedoTexture&&ce.DiffuseTextureEnabled&&!this._albedoTexture.isReadyOrNotBlocking()||this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&!this._baseWeightTexture.isReadyOrNotBlocking()||this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&!this._baseDiffuseRoughnessTexture.isReadyOrNotBlocking()||this._ambientTexture&&ce.AmbientTextureEnabled&&!this._ambientTexture.isReadyOrNotBlocking()||this._opacityTexture&&ce.OpacityTextureEnabled&&!this._opacityTexture.isReadyOrNotBlocking())return!1;let u=this._getReflectionTexture();if(u&&ce.ReflectionTextureEnabled){if(!u.isReadyOrNotBlocking())return!1;if(u.irradianceTexture){if(!u.irradianceTexture.isReadyOrNotBlocking())return!1}else if(!u.sphericalPolynomial&&((h=u.getInternalTexture())!=null&&h._sphericalPolynomialPromise))return!1}if(this._lightmapTexture&&ce.LightmapTextureEnabled&&!this._lightmapTexture.isReadyOrNotBlocking()||this._emissiveTexture&&ce.EmissiveTextureEnabled&&!this._emissiveTexture.isReadyOrNotBlocking())return!1;if(ce.SpecularTextureEnabled){if(this._metallicTexture){if(!this._metallicTexture.isReadyOrNotBlocking())return!1}else if(this._reflectivityTexture&&!this._reflectivityTexture.isReadyOrNotBlocking())return!1;if(this._metallicReflectanceTexture&&!this._metallicReflectanceTexture.isReadyOrNotBlocking()||this._reflectanceTexture&&!this._reflectanceTexture.isReadyOrNotBlocking()||this._microSurfaceTexture&&!this._microSurfaceTexture.isReadyOrNotBlocking())return!1}if(o.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap&&!this._bumpTexture.isReady()||this._environmentBRDFTexture&&ce.ReflectionTextureEnabled&&!this._environmentBRDFTexture.isReady())return!1}if(this._eventInfo.isReadyForSubMesh=!0,this._eventInfo.defines=s,this._eventInfo.subMesh=t,this._callbackPluginEventIsReadyForSubMesh(this._eventInfo),!this._eventInfo.isReadyForSubMesh||s._areImageProcessingDirty&&this._imageProcessingConfiguration&&!this._imageProcessingConfiguration.isReady())return!1;if(s.AREALIGHTUSED||s.CLUSTLIGHT_BATCH){for(let u=0;u{m.push(`vp_${R}_info`)}))}else this._vertexPullingMetadata=null;Ht&&(Ht.PrepareUniforms(m,i),Ht.PrepareSamplers(_,i)),mp({uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:i,maxSimultaneousLights:this._maxSimultaneousLights,shaderLanguage:this._shaderLanguage});let v={};this.customShaderNameResolve&&(u=this.customShaderNameResolve(u,m,p,_,i,h,v));let T=i.toString(),S=c.createEffect(u,{attributes:h,uniformsNames:m,uniformBuffersNames:p,samplers:_,defines:T,fallbacks:f,onCompiled:r,onError:s,indexParameters:g,processFinalCode:v.processFinalCode,processCodeAfterIncludes:this._eventInfo.customCode,multiTarget:i.PREPASS,shaderLanguage:this._shaderLanguage,extraInitializationsAsync:this._shadersLoaded?void 0:async()=>{this.shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(DK(),PK)),Promise.resolve().then(()=>(Aj(),Tj))]):await Promise.all([Promise.resolve().then(()=>(yj(),Ij)),Promise.resolve().then(()=>(RZ(),xZ))]),this._shadersLoaded=!0}},c);return this._eventInfo.customCode=void 0,S}_prepareDefines(e,t,i,r=null,s=null){let a=t.hasThinInstances,o=this.getScene(),l=o.getEngine();lp(o,e,i,!0,this._maxSimultaneousLights,this._disableLighting),i._needNormals=!0,dp(o,i);let c=this.needAlphaBlendingForMesh(e)&&this.getScene().useOrderIndependentTransparency;if(up(o,i,this.canRenderToMRT&&!c),hp(o,i,c),ss.PrepareDefines(l.currentRenderPassId,e,i),i.METALLICWORKFLOW=this.isMetallicWorkflow(),i._areTexturesDirty){i._needUVs=!1;for(let f=1;f<=6;++f)i["MAINUV"+f]=!1;if(o.texturesEnabled){i.ALBEDODIRECTUV=0,i.BASE_WEIGHTDIRECTUV=0,i.BASE_DIFFUSE_ROUGHNESSDIRECTUV=0,i.AMBIENTDIRECTUV=0,i.OPACITYDIRECTUV=0,i.EMISSIVEDIRECTUV=0,i.REFLECTIVITYDIRECTUV=0,i.MICROSURFACEMAPDIRECTUV=0,i.METALLIC_REFLECTANCEDIRECTUV=0,i.REFLECTANCEDIRECTUV=0,i.BUMPDIRECTUV=0,i.LIGHTMAPDIRECTUV=0,l.getCaps().textureLOD&&(i.LODBASEDMICROSFURACE=!0),this._albedoTexture&&ce.DiffuseTextureEnabled?(ni(this._albedoTexture,i,"ALBEDO"),i.GAMMAALBEDO=this._albedoTexture.gammaSpace):i.ALBEDO=!1,this._baseWeightTexture&&ce.BaseWeightTextureEnabled?ni(this._baseWeightTexture,i,"BASE_WEIGHT"):i.BASE_WEIGHT=!1,this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled?ni(this._baseDiffuseRoughnessTexture,i,"BASE_DIFFUSE_ROUGHNESS"):i.BASE_DIFFUSE_ROUGHNESS=!1,this._ambientTexture&&ce.AmbientTextureEnabled?(ni(this._ambientTexture,i,"AMBIENT"),i.AMBIENTINGRAYSCALE=this._useAmbientInGrayScale):i.AMBIENT=!1,this._opacityTexture&&ce.OpacityTextureEnabled?(ni(this._opacityTexture,i,"OPACITY"),i.OPACITYRGB=this._opacityTexture.getAlphaFromRGB):i.OPACITY=!1;let f=this._getReflectionTexture(),d=this._forceIrradianceInFragment||this.realTimeFiltering||this._twoSidedLighting||l.getCaps().maxVaryingVectors<=8||this._baseDiffuseRoughnessTexture!=null;Hf(o,f,i,this.realTimeFiltering,this.realTimeFilteringQuality,!d),this._lightmapTexture&&ce.LightmapTextureEnabled?(ni(this._lightmapTexture,i,"LIGHTMAP"),i.USELIGHTMAPASSHADOWMAP=this._useLightmapAsShadowmap,i.GAMMALIGHTMAP=this._lightmapTexture.gammaSpace,i.RGBDLIGHTMAP=this._lightmapTexture.isRGBD):i.LIGHTMAP=!1,this._emissiveTexture&&ce.EmissiveTextureEnabled?(ni(this._emissiveTexture,i,"EMISSIVE"),i.GAMMAEMISSIVE=this._emissiveTexture.gammaSpace):i.EMISSIVE=!1,ce.SpecularTextureEnabled?(this._metallicTexture?(ni(this._metallicTexture,i,"REFLECTIVITY"),i.ROUGHNESSSTOREINMETALMAPALPHA=this._useRoughnessFromMetallicTextureAlpha,i.ROUGHNESSSTOREINMETALMAPGREEN=!this._useRoughnessFromMetallicTextureAlpha&&this._useRoughnessFromMetallicTextureGreen,i.METALLNESSSTOREINMETALMAPBLUE=this._useMetallnessFromMetallicTextureBlue,i.AOSTOREINMETALMAPRED=this._useAmbientOcclusionFromMetallicTextureRed,i.REFLECTIVITY_GAMMA=!1):this._reflectivityTexture?(ni(this._reflectivityTexture,i,"REFLECTIVITY"),i.MICROSURFACEFROMREFLECTIVITYMAP=this._useMicroSurfaceFromReflectivityMapAlpha,i.MICROSURFACEAUTOMATIC=this._useAutoMicroSurfaceFromReflectivityMap,i.REFLECTIVITY_GAMMA=this._reflectivityTexture.gammaSpace):i.REFLECTIVITY=!1,this._metallicReflectanceTexture||this._reflectanceTexture?(i.METALLIC_REFLECTANCE_USE_ALPHA_ONLY=this._useOnlyMetallicFromMetallicReflectanceTexture,this._metallicReflectanceTexture?(ni(this._metallicReflectanceTexture,i,"METALLIC_REFLECTANCE"),i.METALLIC_REFLECTANCE_GAMMA=this._metallicReflectanceTexture.gammaSpace):i.METALLIC_REFLECTANCE=!1,this._reflectanceTexture&&(!this._metallicReflectanceTexture||this._metallicReflectanceTexture&&this._useOnlyMetallicFromMetallicReflectanceTexture)?(ni(this._reflectanceTexture,i,"REFLECTANCE"),i.REFLECTANCE_GAMMA=this._reflectanceTexture.gammaSpace):i.REFLECTANCE=!1):(i.METALLIC_REFLECTANCE=!1,i.REFLECTANCE=!1),this._microSurfaceTexture?ni(this._microSurfaceTexture,i,"MICROSURFACEMAP"):i.MICROSURFACEMAP=!1):(i.REFLECTIVITY=!1,i.MICROSURFACEMAP=!1),l.getCaps().standardDerivatives&&this._bumpTexture&&ce.BumpTextureEnabled&&!this._disableBumpMap?(ni(this._bumpTexture,i,"BUMP"),this._useParallax&&this._albedoTexture&&ce.DiffuseTextureEnabled?(i.PARALLAX=!0,i.PARALLAX_RHS=o.useRightHandedSystem,i.PARALLAXOCCLUSION=!!this._useParallaxOcclusion):i.PARALLAX=!1,i.OBJECTSPACE_NORMALMAP=this._useObjectSpaceNormalMap):(i.BUMP=!1,i.PARALLAX=!1,i.PARALLAX_RHS=!1,i.PARALLAXOCCLUSION=!1,i.OBJECTSPACE_NORMALMAP=!1),this._environmentBRDFTexture&&ce.ReflectionTextureEnabled?(i.ENVIRONMENTBRDF=!0,i.ENVIRONMENTBRDF_RGBD=this._environmentBRDFTexture.isRGBD):(i.ENVIRONMENTBRDF=!1,i.ENVIRONMENTBRDF_RGBD=!1),this._shouldUseAlphaFromAlbedoTexture()?i.ALPHAFROMALBEDO=!0:i.ALPHAFROMALBEDO=!1}i.SPECULAROVERALPHA=this._useSpecularOverAlpha,this._lightFalloff===n.LIGHTFALLOFF_STANDARD?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!1):this._lightFalloff===n.LIGHTFALLOFF_GLTF?(i.USEPHYSICALLIGHTFALLOFF=!1,i.USEGLTFLIGHTFALLOFF=!0):(i.USEPHYSICALLIGHTFALLOFF=!0,i.USEGLTFLIGHTFALLOFF=!1),i.RADIANCEOVERALPHA=this._useRadianceOverAlpha,!this.backFaceCulling&&this._twoSidedLighting?i.TWOSIDEDLIGHTING=!0:i.TWOSIDEDLIGHTING=!1,i.MIRRORED=!!o._mirroredCameraPosition,i.SPECULARAA=l.getCaps().standardDerivatives&&this._enableSpecularAntiAliasing}(i._areTexturesDirty||i._areMiscDirty)&&(i.ALPHATESTVALUE=`${this._alphaCutOff}${this._alphaCutOff%1===0?".":""}`,i.PREMULTIPLYALPHA=this.alphaMode===7||this.alphaMode===8,i.ALPHABLEND=this.needAlphaBlendingForMesh(e),i.ALPHAFRESNEL=this._useAlphaFresnel||this._useLinearAlphaFresnel,i.LINEARALPHAFRESNEL=this._useLinearAlphaFresnel),i._areImageProcessingDirty&&this._imageProcessingConfiguration&&this._imageProcessingConfiguration.prepareDefines(i),i.FORCENORMALFORWARD=this._forceNormalForward,i.RADIANCEOCCLUSION=this._useRadianceOcclusion,i.HORIZONOCCLUSION=this._useHorizonOcclusion,i._areMiscDirty&&(ap(e,o,this._useLogarithmicDepth,this.pointsCloud,this.fogEnabled,this.needAlphaTestingForMesh(e),i,this._applyDecalMapAfterDetailMap,this._useVertexPulling,t,this._isVertexOutputInvariant),i.UNLIT=this._unlit||(this.pointsCloud||this.wireframe)&&!e.isVerticesDataPresent(L.NormalKind),i.DEBUGMODE=this._debugMode),cp(o,l,this,i,!!r,s,a),this._eventInfo.defines=i,this._eventInfo.mesh=e,this._callbackPluginEventPrepareDefinesBeforeAttributes(this._eventInfo),fp(e,i,!0,!0,!0,this._transparencyMode!==n.PBRMATERIAL_OPAQUE),this._callbackPluginEventPrepareDefines(this._eventInfo)}forceCompilation(e,t,i){let r={clipPlane:!1,useInstances:!1,...i};this._uniformBufferLayoutBuilt||this.buildUniformLayout(),this._callbackPluginEventGeneric(4,this._eventInfo),(()=>{if(this._breakShaderLoadedCheck)return;let a=new tM(this._eventInfo.defineNames),o=this._prepareEffect(e,e,a,void 0,void 0,r.useInstances,r.clipPlane);this._onEffectCreatedObservable&&(Hp.effect=o,Hp.subMesh=null,this._onEffectCreatedObservable.notifyObservers(Hp)),o.isReady()?t&&t(this):o.onCompileObservable.add(()=>{t&&t(this)})})()}buildUniformLayout(){let e=this._uniformBuffer;e.addUniform("vAlbedoInfos",2),e.addUniform("vBaseWeightInfos",2),e.addUniform("vBaseDiffuseRoughnessInfos",2),e.addUniform("vAmbientInfos",4),e.addUniform("vOpacityInfos",2),e.addUniform("vEmissiveInfos",2),e.addUniform("vLightmapInfos",2),e.addUniform("vReflectivityInfos",3),e.addUniform("vMicroSurfaceSamplerInfos",2),e.addUniform("vBumpInfos",3),e.addUniform("albedoMatrix",16),e.addUniform("baseWeightMatrix",16),e.addUniform("baseDiffuseRoughnessMatrix",16),e.addUniform("ambientMatrix",16),e.addUniform("opacityMatrix",16),e.addUniform("emissiveMatrix",16),e.addUniform("lightmapMatrix",16),e.addUniform("reflectivityMatrix",16),e.addUniform("microSurfaceSamplerMatrix",16),e.addUniform("bumpMatrix",16),e.addUniform("vTangentSpaceParams",2),e.addUniform("vAlbedoColor",4),e.addUniform("baseWeight",1),e.addUniform("baseDiffuseRoughness",1),e.addUniform("vLightingIntensity",4),e.addUniform("pointSize",1),e.addUniform("vReflectivityColor",4),e.addUniform("vEmissiveColor",3),e.addUniform("vAmbientColor",3),e.addUniform("vDebugMode",2),e.addUniform("vMetallicReflectanceFactors",4),e.addUniform("vMetallicReflectanceInfos",2),e.addUniform("metallicReflectanceMatrix",16),e.addUniform("vReflectanceInfos",2),e.addUniform("reflectanceMatrix",16),e.addUniform("cameraInfo",4),pp(e,!0,!0,!0,!0,!0),super.buildUniformLayout()}bindForSubMesh(e,t,i){var h,u,m,_;let r=this.getScene(),s=i.materialDefines;if(!s)return;let a=i.effect;if(!a)return;this._activeEffect=a,t.getMeshUniformBuffer().bindToEffect(a,"Mesh"),t.transferToEffect(e);let o=r.getEngine();this._uniformBuffer.bindToEffect(a,"Material"),this.prePassConfiguration.bindForSubMesh(this._activeEffect,r,t,e,this.isFrozen),ss.Bind(o.currentRenderPassId,this._activeEffect,t,e,this);let l=r.activeCamera;l?this._uniformBuffer.updateFloat4("cameraInfo",l.minZ,l.maxZ,0,0):this._uniformBuffer.updateFloat4("cameraInfo",0,0,0,0),this._eventInfo.subMesh=i,this._callbackPluginEventHardBindForSubMesh(this._eventInfo),s.OBJECTSPACE_NORMALMAP&&(e.toNormalMatrix(this._normalMatrix),this.bindOnlyNormalMatrix(this._normalMatrix));let c=this._mustRebind(r,a,i,t.visibility);js(t,this._activeEffect,this.prePassConfiguration),this._vertexPullingMetadata&&Jf(this._activeEffect,this._vertexPullingMetadata);let f=null,d=this._uniformBuffer;if(c){if(this.bindViewProjection(a),f=this._getReflectionTexture(),!d.useUbo||!this.isFrozen||!d.isSync||i._drawWrapper._forceRebindOnNextCall){if(r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&(d.updateFloat2("vAlbedoInfos",this._albedoTexture.coordinatesIndex,this._albedoTexture.level),si(this._albedoTexture,d,"albedo")),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&(d.updateFloat2("vBaseWeightInfos",this._baseWeightTexture.coordinatesIndex,this._baseWeightTexture.level),si(this._baseWeightTexture,d,"baseWeight")),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&(d.updateFloat2("vBaseDiffuseRoughnessInfos",this._baseDiffuseRoughnessTexture.coordinatesIndex,this._baseDiffuseRoughnessTexture.level),si(this._baseDiffuseRoughnessTexture,d,"baseDiffuseRoughness")),this._ambientTexture&&ce.AmbientTextureEnabled&&(d.updateFloat4("vAmbientInfos",this._ambientTexture.coordinatesIndex,this._ambientTexture.level,this._ambientTextureStrength,this._ambientTextureImpactOnAnalyticalLights),si(this._ambientTexture,d,"ambient")),this._opacityTexture&&ce.OpacityTextureEnabled&&(d.updateFloat2("vOpacityInfos",this._opacityTexture.coordinatesIndex,this._opacityTexture.level),si(this._opacityTexture,d,"opacity")),this._emissiveTexture&&ce.EmissiveTextureEnabled&&(d.updateFloat2("vEmissiveInfos",this._emissiveTexture.coordinatesIndex,this._emissiveTexture.level),si(this._emissiveTexture,d,"emissive")),this._lightmapTexture&&ce.LightmapTextureEnabled&&(d.updateFloat2("vLightmapInfos",this._lightmapTexture.coordinatesIndex,this._lightmapTexture.level),si(this._lightmapTexture,d,"lightmap")),ce.SpecularTextureEnabled&&(this._metallicTexture?(d.updateFloat3("vReflectivityInfos",this._metallicTexture.coordinatesIndex,this._metallicTexture.level,this._ambientTextureStrength),si(this._metallicTexture,d,"reflectivity")):this._reflectivityTexture&&(d.updateFloat3("vReflectivityInfos",this._reflectivityTexture.coordinatesIndex,this._reflectivityTexture.level,1),si(this._reflectivityTexture,d,"reflectivity")),this._metallicReflectanceTexture&&(d.updateFloat2("vMetallicReflectanceInfos",this._metallicReflectanceTexture.coordinatesIndex,this._metallicReflectanceTexture.level),si(this._metallicReflectanceTexture,d,"metallicReflectance")),this._reflectanceTexture&&s.REFLECTANCE&&(d.updateFloat2("vReflectanceInfos",this._reflectanceTexture.coordinatesIndex,this._reflectanceTexture.level),si(this._reflectanceTexture,d,"reflectance")),this._microSurfaceTexture&&(d.updateFloat2("vMicroSurfaceSamplerInfos",this._microSurfaceTexture.coordinatesIndex,this._microSurfaceTexture.level),si(this._microSurfaceTexture,d,"microSurfaceSampler"))),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&(d.updateFloat3("vBumpInfos",this._bumpTexture.coordinatesIndex,this._bumpTexture.level,this._parallaxScaleBias),si(this._bumpTexture,d,"bump"),r._mirroredCameraPosition?d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?1:-1,this._invertNormalMapY?1:-1):d.updateFloat2("vTangentSpaceParams",this._invertNormalMapX?-1:1,this._invertNormalMapY?-1:1)),ep(r,s,d,this._reflectionColor,f,this.realTimeFiltering,!0,!0,!0,!0,!0)),this.pointsCloud&&d.updateFloat("pointSize",this.pointSize),s.METALLICWORKFLOW){Dn.Color4[0].r=this._metallic===void 0||this._metallic===null?1:this._metallic,Dn.Color4[0].g=this._roughness===void 0||this._roughness===null?1:this._roughness;let p=(u=(h=this.subSurface)==null?void 0:h._indexOfRefraction)!=null?u:1.5,g=1;Dn.Color4[0].b=p;let v=Math.pow((p-g)/(p+g),2);Dn.Color4[0].a=v,d.updateDirectColor4("vReflectivityColor",Dn.Color4[0]),d.updateColor4("vMetallicReflectanceFactors",this._metallicReflectanceColor,this._metallicF0Factor)}else d.updateColor4("vReflectivityColor",this._reflectivityColor,this._microSurface);d.updateColor3("vEmissiveColor",ce.EmissiveTextureEnabled?this._emissiveColor:Ee.BlackReadOnly),!s.SS_REFRACTION&&((m=this.subSurface)!=null&&m._linkRefractionWithTransparency)?d.updateColor4("vAlbedoColor",this._albedoColor,1):d.updateColor4("vAlbedoColor",this._albedoColor,this.alpha),d.updateFloat("baseWeight",this._baseWeight),d.updateFloat("baseDiffuseRoughness",this._baseDiffuseRoughness||0),this._lightingInfos.x=this._directIntensity,this._lightingInfos.y=this._emissiveIntensity,this._lightingInfos.z=this._environmentIntensity*r.environmentIntensity,this._lightingInfos.w=this._specularIntensity,d.updateVector4("vLightingIntensity",this._lightingInfos),r.ambientColor.multiplyToRef(this._ambientColor,this._globalAmbientColor),d.updateColor3("vAmbientColor",this._globalAmbientColor),d.updateFloat2("vDebugMode",this.debugLimit,this.debugFactor)}r.texturesEnabled&&(this._albedoTexture&&ce.DiffuseTextureEnabled&&d.setTexture("albedoSampler",this._albedoTexture),this._baseWeightTexture&&ce.BaseWeightTextureEnabled&&d.setTexture("baseWeightSampler",this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&ce.BaseDiffuseRoughnessTextureEnabled&&d.setTexture("baseDiffuseRoughnessSampler",this._baseDiffuseRoughnessTexture),this._ambientTexture&&ce.AmbientTextureEnabled&&d.setTexture("ambientSampler",this._ambientTexture),this._opacityTexture&&ce.OpacityTextureEnabled&&d.setTexture("opacitySampler",this._opacityTexture),aR(r,s,d,f,this.realTimeFiltering),s.ENVIRONMENTBRDF&&d.setTexture("environmentBrdfSampler",this._environmentBRDFTexture),this._emissiveTexture&&ce.EmissiveTextureEnabled&&d.setTexture("emissiveSampler",this._emissiveTexture),this._lightmapTexture&&ce.LightmapTextureEnabled&&d.setTexture("lightmapSampler",this._lightmapTexture),ce.SpecularTextureEnabled&&(this._metallicTexture?d.setTexture("reflectivitySampler",this._metallicTexture):this._reflectivityTexture&&d.setTexture("reflectivitySampler",this._reflectivityTexture),this._metallicReflectanceTexture&&d.setTexture("metallicReflectanceSampler",this._metallicReflectanceTexture),this._reflectanceTexture&&s.REFLECTANCE&&d.setTexture("reflectanceSampler",this._reflectanceTexture),this._microSurfaceTexture&&d.setTexture("microSurfaceSampler",this._microSurfaceTexture)),this._bumpTexture&&o.getCaps().standardDerivatives&&ce.BumpTextureEnabled&&!this._disableBumpMap&&d.setTexture("bumpSampler",this._bumpTexture)),this.getScene().useOrderIndependentTransparency&&this.needAlphaBlendingForMesh(t)&&this.getScene().depthPeelingRenderer.bind(a),this._eventInfo.subMesh=i,this._callbackPluginEventBindForSubMesh(this._eventInfo),$n(this._activeEffect,this,r),this.bindEyePosition(a)}else r.getEngine()._features.needToAlwaysBindUniformBuffers&&(this._needToBindSceneUbo=!0);(c||!this.isFrozen)&&(r.lightsEnabled&&!this._disableLighting&&ip(r,t,this._activeEffect,s,this._maxSimultaneousLights),(r.fogEnabled&&t.applyFog&&r.fogMode!==ti.FOGMODE_NONE||f||this.subSurface.refractionTexture||t.receiveShadows||s.PREPASS||s.CLUSTLIGHT_BATCH)&&this.bindView(a),kf(r,t,this._activeEffect,!0),s.NUM_MORPH_INFLUENCERS&&Jn(t,this._activeEffect),s.BAKED_VERTEX_ANIMATION_TEXTURE&&((_=t.bakedVertexAnimationManager)==null||_.bind(a,s.INSTANCES)),this._imageProcessingConfiguration.bind(this._activeEffect),Gf(s,this._activeEffect,r)),this._afterBind(t,this._activeEffect,i),d.update()}getAnimatables(){let e=super.getAnimatables();return this._albedoTexture&&this._albedoTexture.animations&&this._albedoTexture.animations.length>0&&e.push(this._albedoTexture),this._baseWeightTexture&&this._baseWeightTexture.animations&&this._baseWeightTexture.animations.length>0&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&this._baseDiffuseRoughnessTexture.animations&&this._baseDiffuseRoughnessTexture.animations.length>0&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&this._ambientTexture.animations&&this._ambientTexture.animations.length>0&&e.push(this._ambientTexture),this._opacityTexture&&this._opacityTexture.animations&&this._opacityTexture.animations.length>0&&e.push(this._opacityTexture),this._reflectionTexture&&this._reflectionTexture.animations&&this._reflectionTexture.animations.length>0&&e.push(this._reflectionTexture),this._emissiveTexture&&this._emissiveTexture.animations&&this._emissiveTexture.animations.length>0&&e.push(this._emissiveTexture),this._metallicTexture&&this._metallicTexture.animations&&this._metallicTexture.animations.length>0?e.push(this._metallicTexture):this._reflectivityTexture&&this._reflectivityTexture.animations&&this._reflectivityTexture.animations.length>0&&e.push(this._reflectivityTexture),this._bumpTexture&&this._bumpTexture.animations&&this._bumpTexture.animations.length>0&&e.push(this._bumpTexture),this._lightmapTexture&&this._lightmapTexture.animations&&this._lightmapTexture.animations.length>0&&e.push(this._lightmapTexture),this._metallicReflectanceTexture&&this._metallicReflectanceTexture.animations&&this._metallicReflectanceTexture.animations.length>0&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&this._reflectanceTexture.animations&&this._reflectanceTexture.animations.length>0&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&this._microSurfaceTexture.animations&&this._microSurfaceTexture.animations.length>0&&e.push(this._microSurfaceTexture),e}_getReflectionTexture(){return this._reflectionTexture?this._reflectionTexture:this.getScene().environmentTexture}getActiveTextures(){let e=super.getActiveTextures();return this._albedoTexture&&e.push(this._albedoTexture),this._baseWeightTexture&&e.push(this._baseWeightTexture),this._baseDiffuseRoughnessTexture&&e.push(this._baseDiffuseRoughnessTexture),this._ambientTexture&&e.push(this._ambientTexture),this._opacityTexture&&e.push(this._opacityTexture),this._reflectionTexture&&e.push(this._reflectionTexture),this._emissiveTexture&&e.push(this._emissiveTexture),this._reflectivityTexture&&e.push(this._reflectivityTexture),this._metallicTexture&&e.push(this._metallicTexture),this._metallicReflectanceTexture&&e.push(this._metallicReflectanceTexture),this._reflectanceTexture&&e.push(this._reflectanceTexture),this._microSurfaceTexture&&e.push(this._microSurfaceTexture),this._bumpTexture&&e.push(this._bumpTexture),this._lightmapTexture&&e.push(this._lightmapTexture),e}hasTexture(e){return!!(super.hasTexture(e)||this._albedoTexture===e||this._baseWeightTexture===e||this._baseDiffuseRoughnessTexture===e||this._ambientTexture===e||this._opacityTexture===e||this._reflectionTexture===e||this._emissiveTexture===e||this._reflectivityTexture===e||this._metallicTexture===e||this._metallicReflectanceTexture===e||this._reflectanceTexture===e||this._microSurfaceTexture===e||this._bumpTexture===e||this._lightmapTexture===e)}setPrePassRenderer(){var t;if(!((t=this.subSurface)!=null&&t.isScatteringEnabled))return!1;let e=this.getScene().enableSubSurfaceForPrePass();return e&&(e.enabled=!0),!0}dispose(e,t){var i,r,s,a,o,l,c,f,d,h,u,m,_,p;this._breakShaderLoadedCheck=!0,t&&(this._environmentBRDFTexture&&this.getScene().environmentBRDFTexture!==this._environmentBRDFTexture&&this._environmentBRDFTexture.dispose(),(i=this._albedoTexture)==null||i.dispose(),(r=this._baseWeightTexture)==null||r.dispose(),(s=this._baseDiffuseRoughnessTexture)==null||s.dispose(),(a=this._ambientTexture)==null||a.dispose(),(o=this._opacityTexture)==null||o.dispose(),(l=this._reflectionTexture)==null||l.dispose(),(c=this._emissiveTexture)==null||c.dispose(),(f=this._metallicTexture)==null||f.dispose(),(d=this._reflectivityTexture)==null||d.dispose(),(h=this._bumpTexture)==null||h.dispose(),(u=this._lightmapTexture)==null||u.dispose(),(m=this._metallicReflectanceTexture)==null||m.dispose(),(_=this._reflectanceTexture)==null||_.dispose(),(p=this._microSurfaceTexture)==null||p.dispose()),this._renderTargets.dispose(),this._imageProcessingConfiguration&&this._imageProcessingObserver&&this._imageProcessingConfiguration.onUpdateParameters.remove(this._imageProcessingObserver),super.dispose(e,t)}};Cr.PBRMATERIAL_OPAQUE=Se.MATERIAL_OPAQUE;Cr.PBRMATERIAL_ALPHATEST=Se.MATERIAL_ALPHATEST;Cr.PBRMATERIAL_ALPHABLEND=Se.MATERIAL_ALPHABLEND;Cr.PBRMATERIAL_ALPHATESTANDBLEND=Se.MATERIAL_ALPHATESTANDBLEND;Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=0;Cr.LIGHTFALLOFF_PHYSICAL=0;Cr.LIGHTFALLOFF_GLTF=1;Cr.LIGHTFALLOFF_STANDARD=2;Cr.ForceGLSL=!1;P([le("_markAllSubMeshesAsMiscDirty")],Cr.prototype,"debugMode",void 0)});var MZ={};Fe(MZ,{PBRMaterial:()=>pt});var pt,IZ=I(()=>{Wt();kt();jb();zt();bZ();$i();ts();Dr();pt=class n extends Cr{get refractionTexture(){return this.subSurface.refractionTexture}set refractionTexture(e){this.subSurface.refractionTexture=e,e?this.subSurface.isRefractionEnabled=!0:this.subSurface.linkRefractionWithTransparency||(this.subSurface.isRefractionEnabled=!1)}get indexOfRefraction(){return this.subSurface.indexOfRefraction}set indexOfRefraction(e){this.subSurface.indexOfRefraction=e}get invertRefractionY(){return this.subSurface.invertRefractionY}set invertRefractionY(e){this.subSurface.invertRefractionY=e}get linkRefractionWithTransparency(){return this.subSurface.linkRefractionWithTransparency}set linkRefractionWithTransparency(e){this.subSurface.linkRefractionWithTransparency=e,e&&(this.subSurface.isRefractionEnabled=!0)}get usePhysicalLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_PHYSICAL}set usePhysicalLightFalloff(e){e!==this.usePhysicalLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_PHYSICAL:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}get useGLTFLightFalloff(){return this._lightFalloff===Cr.LIGHTFALLOFF_GLTF}set useGLTFLightFalloff(e){e!==this.useGLTFLightFalloff&&(this._markAllSubMeshesAsTexturesDirty(),e?this._lightFalloff=Cr.LIGHTFALLOFF_GLTF:this._lightFalloff=Cr.LIGHTFALLOFF_STANDARD)}constructor(e,t,i=!1){super(e,t,i),this.directIntensity=1,this.emissiveIntensity=1,this.environmentIntensity=1,this.specularIntensity=1,this.disableBumpMap=!1,this.ambientTextureStrength=1,this.ambientTextureImpactOnAnalyticalLights=n.DEFAULT_AO_ON_ANALYTICAL_LIGHTS,this.metallicF0Factor=1,this.metallicReflectanceColor=Ee.White(),this.useOnlyMetallicFromMetallicReflectanceTexture=!1,this.ambientColor=new Ee(0,0,0),this.albedoColor=new Ee(1,1,1),this.baseWeight=1,this.reflectivityColor=new Ee(1,1,1),this.reflectionColor=new Ee(1,1,1),this.emissiveColor=new Ee(0,0,0),this.microSurface=1,this.useLightmapAsShadowmap=!1,this.useAlphaFromAlbedoTexture=!1,this.forceAlphaTest=!1,this.alphaCutOff=.4,this.useSpecularOverAlpha=!0,this.useMicroSurfaceFromReflectivityMapAlpha=!1,this.useRoughnessFromMetallicTextureAlpha=!0,this.useRoughnessFromMetallicTextureGreen=!1,this.useMetallnessFromMetallicTextureBlue=!1,this.useAmbientOcclusionFromMetallicTextureRed=!1,this.useAmbientInGrayScale=!1,this.useAutoMicroSurfaceFromReflectivityMap=!1,this.useRadianceOverAlpha=!0,this.useObjectSpaceNormalMap=!1,this.useParallax=!1,this.useParallaxOcclusion=!1,this.parallaxScaleBias=.05,this.disableLighting=!1,this.forceIrradianceInFragment=!1,this.maxSimultaneousLights=4,this.invertNormalMapX=!1,this.invertNormalMapY=!1,this.twoSidedLighting=!1,this.useAlphaFresnel=!1,this.useLinearAlphaFresnel=!1,this.environmentBRDFTexture=null,this.forceNormalForward=!1,this.enableSpecularAntiAliasing=!1,this.useHorizonOcclusion=!0,this.useRadianceOcclusion=!0,this.unlit=!1,this.applyDecalMapAfterDetailMap=!1,this._environmentBRDFTexture=Kb(this.getScene())}getClassName(){return"PBRMaterial"}clone(e,t=!0,i=""){let r=nt.Clone(()=>new n(e,this.getScene()),this,{cloneTexturesOnlyOnce:t});return r.id=e,r.name=e,this.stencil.copyTo(r.stencil),this._clonePlugins(r,i),r}serialize(){let e=super.serialize();return e.customType="BABYLON.PBRMaterial",e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t),e,t,i);return e.stencil&&r.stencil.parse(e.stencil,t,i),Se._ParsePlugins(e,r,t,i),e.clearCoat&&r.clearCoat.parse(e.clearCoat,t,i),e.anisotropy&&r.anisotropy.parse(e.anisotropy,t,i),e.brdf&&r.brdf.parse(e.brdf,t,i),e.sheen&&r.sheen.parse(e.sheen,t,i),e.subSurface&&r.subSurface.parse(e.subSurface,t,i),e.iridescence&&r.iridescence.parse(e.iridescence,t,i),r}};pt.PBRMATERIAL_OPAQUE=Cr.PBRMATERIAL_OPAQUE;pt.PBRMATERIAL_ALPHATEST=Cr.PBRMATERIAL_ALPHATEST;pt.PBRMATERIAL_ALPHABLEND=Cr.PBRMATERIAL_ALPHABLEND;pt.PBRMATERIAL_ALPHATESTANDBLEND=Cr.PBRMATERIAL_ALPHATESTANDBLEND;pt.DEFAULT_AO_ON_ANALYTICAL_LIGHTS=Cr.DEFAULT_AO_ON_ANALYTICAL_LIGHTS;P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"directIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"specularIntensity",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"disableBumpMap",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeightTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughnessTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureStrength",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientTextureImpactOnAnalyticalLights",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"opacityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallic",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"roughness",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicF0Factor",void 0);P([Ir(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useOnlyMetallicFromMetallicReflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"metallicReflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectanceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurfaceTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"bumpTexture",void 0);P([Gt(),le("_markAllSubMeshesAsTexturesDirty",null)],pt.prototype,"lightmapTexture",void 0);P([Ir("ambient"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"ambientColor",void 0);P([Ir("albedo"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"albedoColor",void 0);P([F("baseWeight"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseWeight",void 0);P([F("baseDiffuseRoughness"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"baseDiffuseRoughness",void 0);P([Ir("reflectivity"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectivityColor",void 0);P([Ir("reflection"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"reflectionColor",void 0);P([Ir("emissive"),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"emissiveColor",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"microSurface",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLightmapAsShadowmap",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"useAlphaFromAlbedoTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"forceAlphaTest",void 0);P([F(),le("_markAllSubMeshesAsTexturesAndMiscDirty")],pt.prototype,"alphaCutOff",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useSpecularOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMicroSurfaceFromReflectivityMapAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRoughnessFromMetallicTextureGreen",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useMetallnessFromMetallicTextureBlue",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientOcclusionFromMetallicTextureRed",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAmbientInGrayScale",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAutoMicroSurfaceFromReflectivityMap",void 0);P([F()],pt.prototype,"usePhysicalLightFalloff",null);P([F()],pt.prototype,"useGLTFLightFalloff",null);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOverAlpha",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useObjectSpaceNormalMap",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallax",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useParallaxOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"parallaxScaleBias",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],pt.prototype,"disableLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceIrradianceInFragment",void 0);P([F(),le("_markAllSubMeshesAsLightsDirty")],pt.prototype,"maxSimultaneousLights",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapX",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"invertNormalMapY",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"twoSidedLighting",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useAlphaFresnel",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useLinearAlphaFresnel",void 0);P([le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"environmentBRDFTexture",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"forceNormalForward",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"enableSpecularAntiAliasing",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useHorizonOcclusion",void 0);P([F(),le("_markAllSubMeshesAsTexturesDirty")],pt.prototype,"useRadianceOcclusion",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],pt.prototype,"unlit",void 0);P([F(),le("_markAllSubMeshesAsMiscDirty")],pt.prototype,"applyDecalMapAfterDetailMap",void 0);Ut("BABYLON.PBRMaterial",pt)});var yZ={};Fe(yZ,{PBRMaterialLoadingAdapter:()=>Aw});var Aw,CZ=I(()=>{zt();tN();ke();Aw=class{constructor(e){this._material=e,this._material.enableSpecularAntiAliasing=!0}get material(){return this._material}get isUnlit(){return this._material.unlit}set isUnlit(e){this._material.unlit=e}set backFaceCulling(e){this._material.backFaceCulling=e}get backFaceCulling(){return this._material.backFaceCulling}set twoSidedLighting(e){this._material.twoSidedLighting=e}get twoSidedLighting(){return this._material.twoSidedLighting}set alphaCutOff(e){this._material.alphaCutOff=e}get alphaCutOff(){return this._material.alphaCutOff}set useAlphaFromBaseColorTexture(e){this._material.useAlphaFromAlbedoTexture=e}get useAlphaFromBaseColorTexture(){return this._material.useAlphaFromAlbedoTexture}get transparencyAsAlphaCoverage(){return this._material.useRadianceOverAlpha||this._material.useSpecularOverAlpha}set transparencyAsAlphaCoverage(e){this._material.useRadianceOverAlpha=!e,this._material.useSpecularOverAlpha=!e}set baseColor(e){this._material.albedoColor=e}get baseColor(){return this._material.albedoColor}set baseColorTexture(e){this._material.albedoTexture=e}get baseColorTexture(){return this._material.albedoTexture}set baseDiffuseRoughness(e){this._material.baseDiffuseRoughness=e,e>0&&(this._material.brdf.baseDiffuseModel=W.MATERIAL_DIFFUSE_MODEL_E_OREN_NAYAR)}get baseDiffuseRoughness(){var e;return(e=this._material.baseDiffuseRoughness)!=null?e:0}set baseDiffuseRoughnessTexture(e){this._material.baseDiffuseRoughnessTexture=e}get baseDiffuseRoughnessTexture(){return this._material.baseDiffuseRoughnessTexture}set baseMetalness(e){this._material.metallic=e}get baseMetalness(){var e;return(e=this._material.metallic)!=null?e:1}set baseMetalnessTexture(e){this._material.metallicTexture=e}get baseMetalnessTexture(){return this._material.metallicTexture}set useRoughnessFromMetallicTextureGreen(e){this._material.useRoughnessFromMetallicTextureGreen=e,this._material.useRoughnessFromMetallicTextureAlpha=!e}set useMetallicFromMetallicTextureBlue(e){this._material.useMetallnessFromMetallicTextureBlue=e}enableSpecularEdgeColor(e=!1){e&&(this._material.brdf.dielectricSpecularModel=W.MATERIAL_DIELECTRIC_SPECULAR_MODEL_OPENPBR,this._material.brdf.conductorSpecularModel=W.MATERIAL_CONDUCTOR_SPECULAR_MODEL_OPENPBR)}set specularWeight(e){this._material.metallicF0Factor=e}get specularWeight(){var e;return(e=this._material.metallicF0Factor)!=null?e:1}set specularWeightTexture(e){e?(this._material.metallicReflectanceTexture=e,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!0):(this._material.metallicReflectanceTexture=null,this._material.useOnlyMetallicFromMetallicReflectanceTexture=!1)}get specularWeightTexture(){return this._material.metallicReflectanceTexture}set specularColor(e){this._material.metallicReflectanceColor=e}get specularColor(){return this._material.metallicReflectanceColor}set specularColorTexture(e){this._material.reflectanceTexture=e}get specularColorTexture(){return this._material.reflectanceTexture}set specularRoughness(e){this._material.roughness=e}get specularRoughness(){var e;return(e=this._material.roughness)!=null?e:1}set specularRoughnessTexture(e){this.baseMetalnessTexture||(this._material.metallicTexture=e)}get specularRoughnessTexture(){return this._material.metallicTexture}set specularIor(e){this._material.indexOfRefraction=e}get specularIor(){return this._material.indexOfRefraction}set emissionColor(e){this._material.emissiveColor=e}get emissionColor(){return this._material.emissiveColor}set emissionLuminance(e){this._material.emissiveIntensity=e}get emissionLuminance(){return this._material.emissiveIntensity}set emissionColorTexture(e){this._material.emissiveTexture=e}get emissionColorTexture(){return this._material.emissiveTexture}set ambientOcclusionTexture(e){this._material.ambientTexture=e,e&&(this._material.useAmbientInGrayScale=!0)}get ambientOcclusionTexture(){return this._material.ambientTexture}set ambientOcclusionTextureStrength(e){this._material.ambientTextureStrength=e}get ambientOcclusionTextureStrength(){var e;return(e=this._material.ambientTextureStrength)!=null?e:1}configureCoat(){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.remapF0OnInterfaceChange=!1}set coatWeight(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.intensity=e}get coatWeight(){return this._material.clearCoat.intensity}set coatWeightTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.texture=e}get coatWeightTexture(){return this._material.clearCoat.texture}set coatColor(e){this._material.clearCoat.isTintEnabled=e!=Ee.White(),this._material.clearCoat.tintColor=e}set coatColorTexture(e){this._material.clearCoat.tintTexture=e}set coatRoughness(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.roughness=e}get coatRoughness(){var e;return(e=this._material.clearCoat.roughness)!=null?e:0}set coatRoughnessTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.useRoughnessFromMainTexture=!1,this._material.clearCoat.textureRoughness=e}get coatRoughnessTexture(){return this._material.clearCoat.textureRoughness}set coatIor(e){this._material.clearCoat.indexOfRefraction=e}set coatDarkening(e){}set coatDarkeningTexture(e){}set coatRoughnessAnisotropy(e){}get coatRoughnessAnisotropy(){return 0}set geometryCoatTangentAngle(e){}set geometryCoatTangentTexture(e){}get geometryCoatTangentTexture(){return null}set transmissionWeight(e){this._material.subSurface.isRefractionEnabled=e>0,this._material.subSurface.refractionIntensity=e}get transmissionWeight(){return this._material.subSurface.isRefractionEnabled?this._material.subSurface.refractionIntensity:0}set transmissionWeightTexture(e){this._material.subSurface.isRefractionEnabled=!0,this._material.subSurface.refractionIntensityTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set transmissionDepth(e){this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(new Ee(e,e,e))}get transmissionDepth(){return this.transmissionWeight>0?this._material.subSurface.tintColorAtDistance:0}set transmissionColor(e){this.transmissionWeight>0?this._material.subSurface.tintColor=e:this.subsurfaceWeight>0&&this._material.subSurface.diffusionDistance.multiplyInPlace(e)}get transmissionColor(){return this.transmissionWeight>0?this._material.subSurface.tintColor:this.subsurfaceWeight>0?this._material.subSurface.diffusionDistance:new Ee(0,0,0)}set transmissionScatter(e){this._material.subSurface.diffusionDistance=e}get transmissionScatter(){return this._material.subSurface.diffusionDistance}set transmissionScatterTexture(e){}set transmissionScatterAnisotropy(e){}set transmissionDispersionAbbeNumber(e){}set transmissionDispersionScale(e){e>0?(this._material.subSurface.isDispersionEnabled=!0,this._material.subSurface.dispersion=20/e):(this._material.subSurface.isDispersionEnabled=!1,this._material.subSurface.dispersion=0)}get refractionBackgroundTexture(){return this._material.subSurface.refractionTexture}set refractionBackgroundTexture(e){this._material.subSurface.refractionTexture=e}configureTransmission(){this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.useAlbedoToTintRefraction=!0,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0}configureVolume(){}set geometryThinWalled(e){}get geometryThinWalled(){return!0}set volumeThicknessTexture(e){this._material.subSurface.thicknessTexture=e,this._material.subSurface.useGltfStyleTextures=!0}set volumeThickness(e){this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=e,this._material.subSurface.useThicknessAsDepth=!0,e>0&&(this._material.subSurface.volumeIndexOfRefraction=this._material.indexOfRefraction)}configureSubsurface(){this._material.subSurface.useGltfStyleTextures=!0,this._material.subSurface.volumeIndexOfRefraction=1,this._material.subSurface.minimumThickness=0,this._material.subSurface.maximumThickness=0,this._material.subSurface.useAlbedoToTintTranslucency=!1}set subsurfaceWeight(e){this._material.subSurface.isTranslucencyEnabled=e>0,this._material.subSurface.translucencyIntensity=e}get subsurfaceWeight(){return this._material.subSurface.isTranslucencyEnabled?this._material.subSurface.translucencyIntensity:0}set subsurfaceWeightTexture(e){this._material.subSurface.translucencyIntensityTexture=e}set subsurfaceColor(e){let t=new b(-Math.log(this.transmissionColor.r),-Math.log(this.transmissionColor.g),-Math.log(this.transmissionColor.b));t.scaleInPlace(1/Math.max(this.transmissionDepth,.001));let i=t,r=Math.max(i.x,Math.max(i.y,i.z)),s=r>0?1/r:1;this._material.subSurface.diffusionDistance=new Ee(Math.exp(-i.x*s),Math.exp(-i.y*s),Math.exp(-i.z*s))}set subsurfaceColorTexture(e){}set diffuseTransmissionTint(e){this._material.subSurface.tintColor=e}get diffuseTransmissionTint(){return this._material.subSurface.tintColor}set diffuseTransmissionTintTexture(e){this._material.subSurface.translucencyColorTexture=e}get subsurfaceRadius(){return 1}set subsurfaceRadius(e){}get subsurfaceRadiusScale(){var e;return(e=this._material.subSurface.scatteringDiffusionProfile)!=null?e:Ee.White()}set subsurfaceRadiusScale(e){this._material.subSurface.scatteringDiffusionProfile=e}set subsurfaceScatterAnisotropy(e){}isTranslucent(){return this.transmissionWeight>0||this.subsurfaceWeight>0}configureFuzz(){this._material.sheen.isEnabled=!0,this._material.sheen.useRoughnessFromMainTexture=!1,this._material.sheen.albedoScaling=!0}set fuzzWeight(e){this._material.sheen.isEnabled=!0,this._material.sheen.intensity=e}set fuzzWeightTexture(e){this._material.sheen.texture||(this._material.sheen.texture=e)}set fuzzColor(e){this._material.sheen.isEnabled=!0,this._material.sheen.color=e}set fuzzColorTexture(e){this._material.sheen.texture=e}set fuzzRoughness(e){this._material.sheen.isEnabled=!0,this._material.sheen.roughness=e}set fuzzRoughnessTexture(e){this._material.sheen.isEnabled=!0,this._material.sheen.textureRoughness=e}set specularRoughnessAnisotropy(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.intensity=e}get specularRoughnessAnisotropy(){return this._material.anisotropy.intensity}set geometryTangentAngle(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.angle=e}set geometryTangentTexture(e){this._material.anisotropy.isEnabled=!0,this._material.anisotropy.texture=e}get geometryTangentTexture(){return this._material.anisotropy.texture}configureGltfStyleAnisotropy(e=!0){}set thinFilmWeight(e){this._material.iridescence.isEnabled=e>0,this._material.iridescence.intensity=e}set thinFilmIor(e){this._material.iridescence.indexOfRefraction=e}set thinFilmThicknessMinimum(e){this._material.iridescence.minimumThickness=e}set thinFilmThicknessMaximum(e){this._material.iridescence.maximumThickness=e}set thinFilmWeightTexture(e){this._material.iridescence.texture=e}set thinFilmThicknessTexture(e){this._material.iridescence.thicknessTexture=e}set unlit(e){this._material.unlit=e}set geometryOpacity(e){this._material.alpha=e}get geometryOpacity(){return this._material.alpha}set geometryNormalTexture(e){this._material.bumpTexture=e,this._material.forceIrradianceInFragment=!0}get geometryNormalTexture(){return this._material.bumpTexture}setNormalMapInversions(e,t){this._material.invertNormalMapX=e,this._material.invertNormalMapY=t}set geometryCoatNormalTexture(e){this._material.clearCoat.isEnabled=!0,this._material.clearCoat.bumpTexture=e}get geometryCoatNormalTexture(){return this._material.clearCoat.bumpTexture}set geometryCoatNormalTextureScale(e){this._material.clearCoat.bumpTexture&&(this._material.clearCoat.bumpTexture.level=e)}}});function zge(n){if(n.min&&n.max){let e=n.min,t=n.max,i=$.Vector3[0].copyFromFloats(e[0],e[1],e[2]),r=$.Vector3[1].copyFromFloats(t[0],t[1],t[2]);if(n.normalized&&n.componentType!==5126){let s=1;switch(n.componentType){case 5120:s=127;break;case 5121:s=255;break;case 5122:s=32767;break;case 5123:s=65535;break}let a=1/s;i.scaleInPlace(a),r.scaleInPlace(a)}return new An(i,r)}return null}var Wge,Hge,qt,iM,PZ=I(()=>{Y8();ke();zt();wi();Rl();J8();Gb();t6();ts();Xr();Vf();Zi();rR();$m();Fi();$O();r6();QO();lc();Lt();qm();eN();iN();o6();Vm();l6();Wge=new Wv(()=>Promise.resolve().then(()=>(u6(),h6))),Hge=new Wv(()=>Promise.resolve().then(()=>(g6(),_6))),qt=class{static Get(e,t,i){if(!t||i==null||!t[i])throw new Error(`${e}: Failed to find index (${i})`);return t[i]}static TryGet(e,t){return!e||t==null||!e[t]?null:e[t]}static Assign(e){if(e)for(let t=0;tt.dispose&&t.dispose()),this._extensions.length=0;for(let t of Array.from(this._materialAdapters))(e=t.finalize)==null||e.call(t);this._materialAdapters.clear(),this._gltf=null,this._bin=null,this._babylonScene=null,this._rootBabylonMesh=null,this._defaultBabylonMaterialData={},this._postSceneLoadActions.length=0,this._parent.dispose()}}async importMeshAsync(e,t,i,r,s,a,o=""){return await Promise.resolve().then(async()=>{this._babylonScene=t,this._assetContainer=i,this._loadData(r);let l=null;if(e){let c={};if(this._gltf.nodes)for(let d of this._gltf.nodes)d.name&&(c[d.name]=d.index);l=(e instanceof Array?e:[e]).map(d=>{let h=c[d];if(h===void 0)throw new Error(`Failed to find node '${d}'`);return h})}return await this._loadAsync(s,o,l,()=>({meshes:this._getMeshes(),particleSystems:[],skeletons:this._getSkeletons(),animationGroups:this._getAnimationGroups(),lights:this._babylonLights,transformNodes:this._getTransformNodes(),geometries:this._getGeometries(),spriteManagers:[]}))})}async loadAsync(e,t,i,r,s=""){return this._babylonScene=e,this._loadData(t),await this._loadAsync(i,s,null,()=>{})}async _loadAsync(e,t,i,r){return await Promise.resolve().then(async()=>{this._rootUrl=e,this._uniqueRootUrl=!e.startsWith("file:")&&t?e:`${e}${Date.now()}/`,this._fileName=t,this._allMaterialsDirtyRequired=!1,await this._loadExtensionsAsync(),!this.parent.skipMaterials&&this._pbrMaterialImpl==null&&(this.parent.useOpenPBR||this.isExtensionUsed("KHR_materials_openpbr")?this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(EK(),vK))).OpenPBRMaterial,adapterClass:(await Promise.resolve().then(()=>(TK(),SK))).OpenPBRMaterialLoadingAdapter}:this._pbrMaterialImpl={materialClass:(await Promise.resolve().then(()=>(IZ(),MZ))).PBRMaterial,adapterClass:(await Promise.resolve().then(()=>(CZ(),yZ))).PBRMaterialLoadingAdapter});let s=`${bs[bs.LOADING]} => ${bs[bs.READY]}`,a=`${bs[bs.LOADING]} => ${bs[bs.COMPLETE]}`;this._parent._startPerformanceCounter(s),this._parent._startPerformanceCounter(a),this._parent._setState(bs.LOADING),this._extensionsOnLoading();let o=new Array,l=this._babylonScene.blockMaterialDirtyMechanism;if(this._babylonScene.blockMaterialDirtyMechanism=!0,!this.parent.loadOnlyMaterials){if(i)o.push(this.loadSceneAsync("/nodes",{nodes:i,index:-1}));else if(this._gltf.scene!=null||this._gltf.scenes&&this._gltf.scenes[0]){let f=qt.Get("/scene",this._gltf.scenes,this._gltf.scene||0);o.push(this.loadSceneAsync(`/scenes/${f.index}`,f))}}if(!this.parent.skipMaterials&&this.parent.loadAllMaterials&&this._gltf.materials)for(let f=0;f{}))}return this._allMaterialsDirtyRequired?this._babylonScene.blockMaterialDirtyMechanism=l:this._babylonScene._forceBlockMaterialDirtyMechanism(l),this._parent.compileMaterials&&o.push(this._compileMaterialsAsync()),this._parent.compileShadowGenerators&&o.push(this._compileShadowGeneratorsAsync()),await Promise.all(o).then(()=>{this._rootBabylonMesh&&this._rootBabylonMesh!==this._parent.customRootNode&&this._rootBabylonMesh.setEnabled(!0);for(let f of this._babylonScene.materials){let d=f;d.maxSimultaneousLights!==void 0&&(d.maxSimultaneousLights=Math.max(d.maxSimultaneousLights,this._babylonScene.lights.length))}return this._extensionsOnReady(),this._parent._setState(bs.READY),this._skipStartAnimationStep||this._startAnimations(),r()}).then(f=>(this._parent._endPerformanceCounter(s),pe.SetImmediate(()=>{this._disposed||Promise.all(this._completePromises).then(()=>{this._parent._endPerformanceCounter(a),this._parent._setState(bs.COMPLETE),this._parent.onCompleteObservable.notifyObservers(void 0),this._parent.onCompleteObservable.clear(),this.dispose()},d=>{this._parent.onErrorObservable.notifyObservers(d),this._parent.onErrorObservable.clear(),this.dispose()})}),f))}).catch(s=>{throw this._disposed||(this._parent.onErrorObservable.notifyObservers(s),this._parent.onErrorObservable.clear(),this.dispose()),s})}_loadData(e){if(this._gltf=e.json,this._setupData(),e.bin){let t=this._gltf.buffers;if(t&&t[0]&&!t[0].uri){let i=t[0];(i.byteLengthe.bin.byteLength)&&ee.Warn(`Binary buffer length (${i.byteLength}) from JSON does not match chunk length (${e.bin.byteLength})`),this._bin=e.bin}else ee.Warn("Unexpected BIN chunk")}}_setupData(){if(qt.Assign(this._gltf.accessors),qt.Assign(this._gltf.animations),qt.Assign(this._gltf.buffers),qt.Assign(this._gltf.bufferViews),qt.Assign(this._gltf.cameras),qt.Assign(this._gltf.images),qt.Assign(this._gltf.materials),qt.Assign(this._gltf.meshes),qt.Assign(this._gltf.nodes),qt.Assign(this._gltf.samplers),qt.Assign(this._gltf.scenes),qt.Assign(this._gltf.skins),qt.Assign(this._gltf.textures),this._gltf.nodes){let e={};for(let i of this._gltf.nodes)if(i.children)for(let r of i.children)e[r]=i.index;let t=this._createRootNode();for(let i of this._gltf.nodes){let r=e[i.index];i.parent=r===void 0?t:this._gltf.nodes[r]}}}async _loadExtensionsAsync(){var t;let e=[];if(n6.forEach((i,r)=>{var s;((s=this.parent.extensionOptions[r])==null?void 0:s.enabled)===!1?i.isGLTFExtension&&this.isExtensionUsed(r)&&ee.Warn(`Extension ${r} is used but has been explicitly disabled.`):(!i.isGLTFExtension||this.isExtensionUsed(r))&&e.push((async()=>{let a=await i.factory(this);return a.name!==r&&ee.Warn(`The name of the glTF loader extension instance does not match the registered name: ${a.name} !== ${r}`),this._parent.onExtensionLoadedObservable.notifyObservers(a),a})())}),this._extensions.push(...await Promise.all(e)),this._extensions.sort((i,r)=>(i.order||Number.MAX_VALUE)-(r.order||Number.MAX_VALUE)),this._parent.onExtensionLoadedObservable.clear(),this._gltf.extensionsRequired){for(let i of this._gltf.extensionsRequired)if(!this._extensions.some(s=>s.name===i&&s.enabled))throw((t=this.parent.extensionOptions[i])==null?void 0:t.enabled)===!1?new Error(`Required extension ${i} is disabled`):new Error(`Required extension ${i} is not available`)}}_createRootNode(){if(this._parent.customRootNode!==void 0)return this._rootBabylonMesh=this._parent.customRootNode,{_babylonTransformNode:this._rootBabylonMesh===null?void 0:this._rootBabylonMesh,index:-1};this._babylonScene._blockEntityCollection=!!this._assetContainer;let e=new q("__root__",this._babylonScene);this._rootBabylonMesh=e,this._rootBabylonMesh._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._rootBabylonMesh.setEnabled(!1);let t={_babylonTransformNode:this._rootBabylonMesh,index:-1};switch(this._parent.coordinateSystemMode){case Fp.AUTO:{this._babylonScene.useRightHandedSystem||(t.rotation=[0,1,0,0],t.scale=[1,1,-1],n._LoadTransform(t,this._rootBabylonMesh));break}case Fp.FORCE_RIGHT_HANDED:{this._babylonScene.useRightHandedSystem=!0;break}default:throw new Error(`Invalid coordinate system mode (${this._parent.coordinateSystemMode})`)}return this._parent.onMeshLoadedObservable.notifyObservers(e),t}loadSceneAsync(e,t){let i=this._extensionsLoadSceneAsync(e,t);if(i)return i;let r=new Array;if(this.logOpen(`${e} ${t.name||""}`),t.nodes)for(let s of t.nodes){let a=qt.Get(`${e}/nodes/${s}`,this._gltf.nodes,s);r.push(this.loadNodeAsync(`/nodes/${a.index}`,a,o=>{o.parent=this._rootBabylonMesh}))}for(let s of this._postSceneLoadActions)s();return r.push(this._loadAnimationsAsync()),this.logClose(),Promise.all(r).then(()=>{})}_forEachPrimitive(e,t){if(e._primitiveBabylonMeshes)for(let i of e._primitiveBabylonMeshes)t(i)}_getGeometries(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{let s=r.geometry;s&&e.indexOf(s)===-1&&e.push(s)});return e}_getMeshes(){let e=[];this._rootBabylonMesh instanceof yr&&e.push(this._rootBabylonMesh);let t=this._gltf.nodes;if(t)for(let i of t)this._forEachPrimitive(i,r=>{e.push(r)});return e}_getTransformNodes(){let e=[],t=this._gltf.nodes;if(t)for(let i of t)i._babylonTransformNode&&i._babylonTransformNode.getClassName()==="TransformNode"&&e.push(i._babylonTransformNode),i._babylonTransformNodeForSkin&&e.push(i._babylonTransformNodeForSkin);return e}_getSkeletons(){let e=[],t=this._gltf.skins;if(t)for(let i of t)i._data&&e.push(i._data.babylonSkeleton);return e}_getAnimationGroups(){let e=[],t=this._gltf.animations;if(t)for(let i of t)i._babylonAnimationGroup&&e.push(i._babylonAnimationGroup);return e}_startAnimations(){switch(this._parent.animationStartMode){case Gh.NONE:break;case Gh.FIRST:{let e=this._getAnimationGroups();e.length!==0&&e[0].start(!0);break}case Gh.ALL:{let e=this._getAnimationGroups();for(let t of e)t.start(!0);break}default:{ee.Error(`Invalid animation start mode (${this._parent.animationStartMode})`);return}}}loadNodeAsync(e,t,i=()=>{}){let r=this._extensionsLoadNodeAsync(e,t,i);if(r)return r;if(t._babylonTransformNode)throw new Error(`${e}: Invalid recursive node hierarchy`);let s=new Array;this.logOpen(`${e} ${t.name||""}`);let a=c=>{if(n.AddPointerMetadata(c,e),n._LoadTransform(t,c),t.camera!=null){let f=qt.Get(`${e}/camera`,this._gltf.cameras,t.camera);s.push(this.loadCameraAsync(`/cameras/${f.index}`,f,d=>{d.parent=c,this._babylonScene.useRightHandedSystem||(c.scaling.x=-1)}))}if(t.children)for(let f of t.children){let d=qt.Get(`${e}/children/${f}`,this._gltf.nodes,f);s.push(this.loadNodeAsync(`/nodes/${d.index}`,d,h=>{h.parent=c}))}i(c)},o=t.mesh!=null,l=this._parent.loadSkins&&t.skin!=null;if(!o||l){let c=t.name||`node${t.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f=new Zt(c,this._babylonScene);f._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t.mesh==null?t._babylonTransformNode=f:t._babylonTransformNodeForSkin=f,a(f)}if(o)if(l){let c=qt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,f=>{let d=t._babylonTransformNodeForSkin;f.metadata=rN(d.metadata,f.metadata||{});let h=qt.Get(`${e}/skin`,this._gltf.skins,t.skin);s.push(this._loadSkinAsync(`/skins/${h.index}`,t,h,u=>{this._forEachPrimitive(t,m=>{m.skeleton=u}),this._postSceneLoadActions.push(()=>{if(h.skeleton!=null){let m=qt.Get(`/skins/${h.index}/skeleton`,this._gltf.nodes,h.skeleton).parent;t.index===m.index?f.parent=d.parent:f.parent=m._babylonTransformNode}else f.parent=this._rootBabylonMesh;this._parent.onSkinLoadedObservable.notifyObservers({node:d,skinnedNode:f})})}))}))}else{let c=qt.Get(`${e}/mesh`,this._gltf.meshes,t.mesh);s.push(this._loadMeshAsync(`/meshes/${c.index}`,t,c,a))}return this.logClose(),Promise.all(s).then(()=>(this._forEachPrimitive(t,c=>{let f=c;!f.isAnInstance&&f.geometry&&f.geometry.useBoundingInfoFromGeometry?c._updateBoundingInfo():c.refreshBoundingInfo(!0,!0)}),t._babylonTransformNode))}_loadMeshAsync(e,t,i,r){let s=i.primitives;if(!s||!s.length)throw new Error(`${e}: Primitives are missing`);s[0].index==null&&qt.Assign(s);let a=new Array;this.logOpen(`${e} ${i.name||""}`);let o=t.name||`node${t.index}`;if(s.length===1){let l=i.primitives[0];a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,o,t,i,l,c=>{t._babylonTransformNode=c,t._primitiveBabylonMeshes=[c]}))}else{this._babylonScene._blockEntityCollection=!!this._assetContainer,t._babylonTransformNode=new Zt(o,this._babylonScene),t._babylonTransformNode._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._primitiveBabylonMeshes=[];for(let l of s)a.push(this._loadMeshPrimitiveAsync(`${e}/primitives/${l.index}`,`${o}_primitive${l.index}`,t,i,l,c=>{c.parent=t._babylonTransformNode,t._primitiveBabylonMeshes.push(c)}))}return r(t._babylonTransformNode),this.logClose(),Promise.all(a).then(()=>t._babylonTransformNode)}_loadMeshPrimitiveAsync(e,t,i,r,s,a){let o=this._extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a);if(o)return o;this.logOpen(`${e}`);let l=this._disableInstancedMesh===0&&this._parent.createInstances&&i.skin==null&&!r.primitives[0].targets,c,f;if(l&&s._instanceData)this._babylonScene._blockEntityCollection=!!this._assetContainer,c=s._instanceData.babylonSourceMesh.createInstance(t),c._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,f=s._instanceData.promise;else{let d=new Array;this._babylonScene._blockEntityCollection=!!this._assetContainer;let h=new q(t,this._babylonScene);if(h._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,h.sideOrientation=this._babylonScene.useRightHandedSystem?Se.CounterClockWiseSideOrientation:Se.ClockWiseSideOrientation,this._createMorphTargets(e,i,r,s,h),d.push(this._loadVertexDataAsync(e,s,h).then(async u=>await this._loadMorphTargetsAsync(e,s,h,u).then(()=>{this._disposed||(this._babylonScene._blockEntityCollection=!!this._assetContainer,u.applyToMesh(h),u._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1)}))),!this.parent.skipMaterials){let u=n._GetDrawMode(e,s.mode);if(s.material==null){let m=this._defaultBabylonMaterialData[u];m||(m=this._createDefaultMaterial("__GLTFLoader._default",u),this._parent.onMaterialLoadedObservable.notifyObservers(m),this._defaultBabylonMaterialData[u]=m),h.material=m}else{let m=qt.Get(`${e}/material`,this._gltf.materials,s.material);d.push(this._loadMaterialAsync(`/materials/${m.index}`,m,h,u,_=>{h.material=_}))}}f=Promise.all(d),l&&(s._instanceData={babylonSourceMesh:h,promise:f}),c=h}return n.AddPointerMetadata(c,e),this._parent.onMeshLoadedObservable.notifyObservers(c),a(c),this.logClose(),f.then(()=>c)}_loadVertexDataAsync(e,t,i){let r=this._extensionsLoadVertexDataAsync(e,t,i);if(r)return r;let s=t.attributes;if(!s)throw new Error(`${e}: Attributes are missing`);let a=new Array,o=new xn(i.name,this._babylonScene);if(t.indices==null)i.isUnIndexed=!0;else{let c=qt.Get(`${e}/indices`,this._gltf.accessors,t.indices);a.push(this._loadIndicesAccessorAsync(`/accessors/${c.index}`,c).then(f=>{o.setIndices(f)}))}let l=(c,f,d)=>{if(s[c]==null)return;i._delayInfo=i._delayInfo||[],i._delayInfo.indexOf(f)===-1&&i._delayInfo.push(f);let h=qt.Get(`${e}/attributes/${c}`,this._gltf.accessors,s[c]);a.push(this._loadVertexAccessorAsync(`/accessors/${h.index}`,h,f).then(u=>{if(u.getKind()===L.PositionKind&&!this.parent.alwaysComputeBoundingBox&&!i.skeleton){let m=zge(h);m&&(o._boundingInfo=m,o.useBoundingInfoFromGeometry=!0)}o.setVerticesBuffer(u,h.count)})),f==L.MatricesIndicesExtraKind&&(i.numBoneInfluencers=8),d&&d(h)};return l("POSITION",L.PositionKind),l("NORMAL",L.NormalKind),l("TANGENT",L.TangentKind),l("TEXCOORD_0",L.UVKind),l("TEXCOORD_1",L.UV2Kind),l("TEXCOORD_2",L.UV3Kind),l("TEXCOORD_3",L.UV4Kind),l("TEXCOORD_4",L.UV5Kind),l("TEXCOORD_5",L.UV6Kind),l("JOINTS_0",L.MatricesIndicesKind),l("WEIGHTS_0",L.MatricesWeightsKind),l("JOINTS_1",L.MatricesIndicesExtraKind),l("WEIGHTS_1",L.MatricesWeightsExtraKind),l("COLOR_0",L.ColorKind,c=>{c.type==="VEC4"&&(i.hasVertexAlpha=!0)}),Promise.all(a).then(()=>o)}_createMorphTargets(e,t,i,r,s){if(!r.targets||!this._parent.loadMorphTargets)return;if(t._numMorphTargets==null)t._numMorphTargets=r.targets.length;else if(r.targets.length!==t._numMorphTargets)throw new Error(`${e}: Primitives do not have the same number of targets`);let a=i.extras?i.extras.targetNames:null;this._babylonScene._blockEntityCollection=!!this._assetContainer,s.morphTargetManager=new zh(this._babylonScene),s.morphTargetManager._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,s.morphTargetManager.areUpdatesFrozen=!0;for(let o=0;o{a.areUpdatesFrozen=!1})}async _loadMorphTargetVertexDataAsync(e,t,i,r){let s=new Array,a=(o,l,c)=>{if(i[o]==null)return;let f=t.getVertexBuffer(l);if(!f)return;let d=qt.Get(`${e}/${o}`,this._gltf.accessors,i[o]);s.push(this._loadFloatAccessorAsync(`/accessors/${d.index}`,d).then(h=>{c(f,h)}))};return a("POSITION",L.PositionKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setPositions(c)}),a("NORMAL",L.NormalKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(c.length,(f,d)=>{c[d]=l[d]+f}),r.setNormals(c)}),a("TANGENT",L.TangentKind,(o,l)=>{let c=new Float32Array(l.length/3*4),f=0;o.forEach(l.length/3*4,(d,h)=>{(h+1)%4!==0&&(c[f]=l[f]+d,f++)}),r.setTangents(c)}),a("TEXCOORD_0",L.UVKind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUVs(c)}),a("TEXCOORD_1",L.UV2Kind,(o,l)=>{let c=new Float32Array(l.length);o.forEach(l.length,(f,d)=>{c[d]=l[d]+f}),r.setUV2s(c)}),a("COLOR_0",L.ColorKind,(o,l)=>{let c=null,f=o.getSize();if(f===3){c=new Float32Array(l.length/3*4),o.forEach(l.length,(d,h)=>{let u=Math.floor(h/3),m=h%3;c[4*u+m]=l[3*u+m]+d});for(let d=0;d{c[h]=l[h]+d});else throw new Error(`${e}: Invalid number of components (${f}) for COLOR_0 attribute`);r.setColors(c)}),await Promise.all(s).then(()=>{})}static _LoadTransform(e,t){if(e.skin!=null)return;let i=b.Zero(),r=Ke.Identity(),s=b.One();e.matrix?Z.FromArray(e.matrix).decompose(s,r,i):(e.translation&&(i=b.FromArray(e.translation)),e.rotation&&(r=Ke.FromArray(e.rotation)),e.scale&&(s=b.FromArray(e.scale))),t.position=i,t.rotationQuaternion=r,t.scaling=s}_loadSkinAsync(e,t,i,r){if(!this._parent.loadSkins)return Promise.resolve();let s=this._extensionsLoadSkinAsync(e,t,i);if(s)return s;if(i._data)return r(i._data.babylonSkeleton),i._data.promise;let a=`skeleton${i.index}`;this._babylonScene._blockEntityCollection=!!this._assetContainer;let o=new kb(i.name||a,a,this._babylonScene);o._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,this._loadBones(e,i,o);let l=this._loadSkinInverseBindMatricesDataAsync(e,i).then(c=>{this._updateBoneMatrices(o,c)});return i._data={babylonSkeleton:o,promise:l},r(o),l}_loadBones(e,t,i){if(t.skeleton==null||this._parent.alwaysComputeSkeletonRootNode){let s=this._findSkeletonRootNode(`${e}/joints`,t.joints);if(s)if(t.skeleton===void 0)t.skeleton=s.index;else{let a=(l,c)=>{for(;c.parent;c=c.parent)if(c.parent===l)return!0;return!1},o=qt.Get(`${e}/skeleton`,this._gltf.nodes,t.skeleton);o!==s&&!a(o,s)&&(ee.Warn(`${e}/skeleton: Overriding with nearest common ancestor as skeleton node is not a common root`),t.skeleton=s.index)}else ee.Warn(`${e}: Failed to find common root`)}let r={};for(let s of t.joints){let a=qt.Get(`${e}/joints/${s}`,this._gltf.nodes,s);this._loadBone(a,t,i,r)}}_findSkeletonRootNode(e,t){if(t.length===0)return null;let i={};for(let s of t){let a=[],o=qt.Get(`${e}/${s}`,this._gltf.nodes,s);for(;o.index!==-1;)a.unshift(o),o=o.parent;i[s]=a}let r=null;for(let s=0;;++s){let a=i[t[0]];if(s>=a.length)return r;let o=a[s];for(let l=1;l=a.length||o!==a[s])return r;r=o}}_loadBone(e,t,i,r){e._isJoint=!0;let s=r[e.index];if(s)return s;let a=null;e.index!==t.skeleton&&(e.parent&&e.parent.index!==-1?a=this._loadBone(e.parent,t,i,r):t.skeleton!==void 0&&ee.Warn(`/skins/${t.index}/skeleton: Skeleton node is not a common root`));let o=t.joints.indexOf(e.index);return s=new Qa(e.name||`joint${e.index}`,i,a,this._getNodeMatrix(e),null,null,o),r[e.index]=s,this._postSceneLoadActions.push(()=>{s.linkTransformNode(e._babylonTransformNode)}),s}_loadSkinInverseBindMatricesDataAsync(e,t){if(t.inverseBindMatrices==null)return Promise.resolve(null);let i=qt.Get(`${e}/inverseBindMatrices`,this._gltf.accessors,t.inverseBindMatrices);return this._loadFloatAccessorAsync(`/accessors/${i.index}`,i)}_updateBoneMatrices(e,t){for(let i of e.bones){let r=Z.Identity(),s=i._index;t&&s!==-1&&(Z.FromArrayToRef(t,s*16,r),r.invertToRef(r));let a=i.getParent();a&&r.multiplyToRef(a.getAbsoluteInverseBindMatrix(),r),i.updateMatrix(r,!1,!1),i._updateAbsoluteBindMatrices(void 0,!1)}}_getNodeMatrix(e){return e.matrix?Z.FromArray(e.matrix):Z.Compose(e.scale?b.FromArray(e.scale):b.One(),e.rotation?Ke.FromArray(e.rotation):Ke.Identity(),e.translation?b.FromArray(e.translation):b.Zero())}loadCameraAsync(e,t,i=()=>{}){let r=this._extensionsLoadCameraAsync(e,t,i);if(r)return r;let s=new Array;this.logOpen(`${e} ${t.name||""}`),this._babylonScene._blockEntityCollection=!!this._assetContainer;let a=new Wc(t.name||`camera${t.index}`,b.Zero(),this._babylonScene,!1);switch(a._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonCamera=a,a.setTarget(new b(0,0,-1)),t.type){case"perspective":{let o=t.perspective;if(!o)throw new Error(`${e}: Camera perspective properties are missing`);a.fov=o.yfov,a.minZ=o.znear,a.maxZ=o.zfar||0;break}case"orthographic":{if(!t.orthographic)throw new Error(`${e}: Camera orthographic properties are missing`);a.mode=gt.ORTHOGRAPHIC_CAMERA,a.orthoLeft=-t.orthographic.xmag,a.orthoRight=t.orthographic.xmag,a.orthoBottom=-t.orthographic.ymag,a.orthoTop=t.orthographic.ymag,a.minZ=t.orthographic.znear,a.maxZ=t.orthographic.zfar;break}default:throw new Error(`${e}: Invalid camera type (${t.type})`)}return n.AddPointerMetadata(a,e),this._parent.onCameraLoadedObservable.notifyObservers(a),i(a),this.logClose(),Promise.all(s).then(()=>a)}_loadAnimationsAsync(){this._parent._startPerformanceCounter("Load animations");let e=this._gltf.animations;if(!e)return Promise.resolve();let t=new Array;for(let i=0;i{s.targetedAnimations.length===0&&s.dispose()}))}return Promise.all(t).then(()=>{this._parent._endPerformanceCounter("Load animations")})}loadAnimationAsync(e,t){this._parent._startPerformanceCounter("Load animation");let i=this._extensionsLoadAnimationAsync(e,t);return i||Wge.value.then(({AnimationGroup:r})=>{this._babylonScene._blockEntityCollection=!!this._assetContainer;let s=new r(t.name||`animation${t.index}`,this._babylonScene);s._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,t._babylonAnimationGroup=s;let a=new Array;qt.Assign(t.channels),qt.Assign(t.samplers);for(let o of t.channels)a.push(this._loadAnimationChannelAsync(`${e}/channels/${o.index}`,e,t,o,(l,c)=>{l.animations=l.animations||[],l.animations.push(c),s.addTargetedAnimation(c,l)}));return this._parent._endPerformanceCounter("Load animation"),Promise.all(a).then(()=>(s.normalize(0),s))})}_loadAnimationChannelAsync(e,t,i,r,s){let a=this._extensionsLoadAnimationChannelAsync(e,t,i,r,s);if(a)return a;if(r.target.node==null)return Promise.resolve();let o=qt.Get(`${e}/target/node`,this._gltf.nodes,r.target.node),l=r.target.path,c=l==="weights";return c&&!o._numMorphTargets||!c&&!o._babylonTransformNode||!this._parent.loadNodeAnimations&&!c&&!o._isJoint?Promise.resolve():Hge.value.then(()=>{var h,u,m,_;let f;switch(l){case"translation":{f=(h=Gv("/nodes/{}/translation"))==null?void 0:h.interpolation;break}case"rotation":{f=(u=Gv("/nodes/{}/rotation"))==null?void 0:u.interpolation;break}case"scale":{f=(m=Gv("/nodes/{}/scale"))==null?void 0:m.interpolation;break}case"weights":{f=(_=Gv("/nodes/{}/weights"))==null?void 0:_.interpolation;break}default:throw new Error(`${e}/target/path: Invalid value (${r.target.path})`)}if(!f)throw new Error(`${e}/target/path: Could not find interpolation properties for target path (${r.target.path})`);let d={object:o,info:f};return this._loadAnimationChannelFromTargetInfoAsync(e,t,i,r,d,s)})}_loadAnimationChannelFromTargetInfoAsync(e,t,i,r,s,a){let o=this.parent.targetFps,l=1/o,c=qt.Get(`${e}/sampler`,i.samplers,r.sampler);return this._loadAnimationSamplerAsync(`${t}/samplers/${r.sampler}`,c).then(f=>{let d=0,h=s.object,u=s.info;for(let m of u){let _=m.getStride(h),p=f.input,g=f.output,v=new Array(p.length),T=0;switch(f.interpolation){case"STEP":{for(let S=0;S0){let S=`${i.name||`animation${i.index}`}_channel${r.index}_${d}`,E=m.buildAnimations(h,S,o,v);for(let A of E)d++,a(A.babylonAnimatable,A.babylonAnimation)}}})}_loadAnimationSamplerAsync(e,t){if(t._data)return t._data;let i=t.interpolation||"LINEAR";switch(i){case"STEP":case"LINEAR":case"CUBICSPLINE":break;default:throw new Error(`${e}/interpolation: Invalid value (${t.interpolation})`)}let r=qt.Get(`${e}/input`,this._gltf.accessors,t.input),s=qt.Get(`${e}/output`,this._gltf.accessors,t.output);return t._data=Promise.all([this._loadFloatAccessorAsync(`/accessors/${r.index}`,r),this._loadFloatAccessorAsync(`/accessors/${s.index}`,s)]).then(([a,o])=>({input:a,interpolation:i,output:o})),t._data}loadBufferAsync(e,t,i,r){let s=this._extensionsLoadBufferAsync(e,t,i,r);if(s)return s;if(!t._data)if(t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{if(!this._bin)throw new Error(`${e}: Uri is missing or the binary glTF is missing its binary chunk`);t._data=this._bin.readAsync(0,t.byteLength)}return t._data.then(a=>{try{return new Uint8Array(a.buffer,a.byteOffset+i,r)}catch(o){throw new Error(`${e}: ${o.message}`,{cause:o})}})}loadBufferViewAsync(e,t){let i=this._extensionsLoadBufferViewAsync(e,t);if(i)return i;if(t._data)return t._data;let r=qt.Get(`${e}/buffer`,this._gltf.buffers,t.buffer);return t._data=this.loadBufferAsync(`/buffers/${r.index}`,r,t.byteOffset||0,t.byteLength),t._data}_loadAccessorAsync(e,t,i){if(t._data)return t._data;let r=n._GetNumComponents(e,t.type),s=r*L.GetTypeByteLength(t.componentType),a=r*t.count;if(t.bufferView==null)t._data=Promise.resolve(new i(a));else{let o=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${o.index}`,o).then(l=>{if(t.componentType===5126&&!t.normalized&&(!o.byteStride||o.byteStride===s))return n._GetTypedArray(e,t.componentType,l,t.byteOffset,a);{let c=new i(a);return L.ForEach(l,t.byteOffset||0,o.byteStride||s,r,t.componentType,c.length,t.normalized||!1,(f,d)=>{c[d]=f}),c}})}if(t.sparse){let o=t.sparse;t._data=t._data.then(l=>{let c=l,f=qt.Get(`${e}/sparse/indices/bufferView`,this._gltf.bufferViews,o.indices.bufferView),d=qt.Get(`${e}/sparse/values/bufferView`,this._gltf.bufferViews,o.values.bufferView);return Promise.all([this.loadBufferViewAsync(`/bufferViews/${f.index}`,f),this.loadBufferViewAsync(`/bufferViews/${d.index}`,d)]).then(([h,u])=>{let m=n._GetTypedArray(`${e}/sparse/indices`,o.indices.componentType,h,o.indices.byteOffset,o.count),_=r*o.count,p;if(t.componentType===5126&&!t.normalized)p=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);else{let v=n._GetTypedArray(`${e}/sparse/values`,t.componentType,u,o.values.byteOffset,_);p=new i(_),L.ForEach(v,0,s,r,t.componentType,p.length,t.normalized||!1,(T,S)=>{p[S]=T})}let g=0;for(let v=0;vn._GetTypedArray(e,t.componentType,r,t.byteOffset,t.count))}return t._data}_loadVertexBufferViewAsync(e){if(e._babylonBuffer)return e._babylonBuffer;let t=this._babylonScene.getEngine();return e._babylonBuffer=this.loadBufferViewAsync(`/bufferViews/${e.index}`,e).then(i=>new Ro(t,i,!1)),e._babylonBuffer}_loadVertexAccessorAsync(e,t,i){var s;if((s=t._babylonVertexBuffer)!=null&&s[i])return t._babylonVertexBuffer[i];t._babylonVertexBuffer||(t._babylonVertexBuffer={});let r=this._babylonScene.getEngine();if(t.sparse||t.bufferView==null)t._babylonVertexBuffer[i]=this._loadFloatAccessorAsync(e,t).then(a=>new L(r,a,i,!1));else{let a=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._babylonVertexBuffer[i]=this._loadVertexBufferViewAsync(a).then(o=>{let l=n._GetNumComponents(e,t.type);return new L(r,o,i,!1,void 0,a.byteStride,void 0,t.byteOffset,l,t.componentType,t.normalized,!0,void 0,!0)})}return t._babylonVertexBuffer[i]}_loadMaterialMetallicRoughnessPropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);return t&&(t.baseColorFactor?(s.baseColor=Ee.FromArray(t.baseColorFactor),s.geometryOpacity=t.baseColorFactor[3]):s.baseColor=Ee.White(),s.baseMetalness=t.metallicFactor==null?1:t.metallicFactor,s.specularRoughness=t.roughnessFactor==null?1:t.roughnessFactor,t.baseColorTexture&&r.push(this.loadTextureInfoAsync(`${e}/baseColorTexture`,t.baseColorTexture,a=>{a.name=`${i.name} (Base Color)`,s.baseColorTexture=a})),t.metallicRoughnessTexture&&(t.metallicRoughnessTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/metallicRoughnessTexture`,t.metallicRoughnessTexture,a=>{a.name=`${i.name} (Metallic Roughness)`,s.baseMetalnessTexture=a,s.specularRoughnessTexture=a})),s.useRoughnessFromMetallicTextureGreen=!0,s.useMetallicFromMetallicTextureBlue=!0)),Promise.all(r).then(()=>{})}_loadMaterialAsync(e,t,i,r,s=()=>{}){let a=this._extensionsLoadMaterialAsync(e,t,i,r,s);if(a)return a;t._data=t._data||{};let o=t._data[r];if(!o){this.logOpen(`${e} ${t.name||""}`);let l=this.createMaterial(e,t,r);o={babylonMaterial:l,babylonMeshes:[],promise:this.loadMaterialPropertiesAsync(e,t,l)},t._data[r]=o,n.AddPointerMetadata(l,e),this._parent.onMaterialLoadedObservable.notifyObservers(l),this.logClose()}return i&&(o.babylonMeshes.push(i),i.onDisposeObservable.addOnce(()=>{let l=o.babylonMeshes.indexOf(i);l!==-1&&o.babylonMeshes.splice(l,1)})),s(o.babylonMaterial),o.promise.then(()=>o.babylonMaterial)}_createDefaultMaterial(e,t){if(!this._pbrMaterialImpl)throw new Error("PBR Material class not loaded");this._babylonScene._blockEntityCollection=!!this._assetContainer;let i=new this._pbrMaterialImpl.materialClass(e,this._babylonScene);i._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,i.fillMode=t,i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE;let r=this._getOrCreateMaterialAdapter(i);return r.transparencyAsAlphaCoverage=this._parent.transparencyAsCoverage,r.baseMetalness=1,r.specularRoughness=1,i}createMaterial(e,t,i){let r=this._extensionsCreateMaterial(e,t,i);if(r)return r;let s=t.name||`material${t.index}`;return this._createDefaultMaterial(s,i)}loadMaterialPropertiesAsync(e,t,i){let r=this._extensionsLoadMaterialPropertiesAsync(e,t,i);if(r)return r;let s=new Array;return s.push(this.loadMaterialBasePropertiesAsync(e,t,i)),t.pbrMetallicRoughness&&s.push(this._loadMaterialMetallicRoughnessPropertiesAsync(`${e}/pbrMetallicRoughness`,t.pbrMetallicRoughness,i)),this.loadMaterialAlphaProperties(e,t,i),Promise.all(s).then(()=>{})}loadMaterialBasePropertiesAsync(e,t,i){let r=new Array,s=this._getOrCreateMaterialAdapter(i);s.emissionColor=t.emissiveFactor?Ee.FromArray(t.emissiveFactor):new Ee(0,0,0),t.doubleSided&&(s.backFaceCulling=!1,s.twoSidedLighting=!0),t.normalTexture&&(t.normalTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/normalTexture`,t.normalTexture,c=>{var f;c.name=`${i.name} (Normal)`,s.geometryNormalTexture=c,((f=t.normalTexture)==null?void 0:f.scale)!=null&&(c.level=t.normalTexture.scale)})),s.setNormalMapInversions(!this._babylonScene.useRightHandedSystem,this._babylonScene.useRightHandedSystem));let a,o=1,l;return t.occlusionTexture&&(t.occlusionTexture.nonColorData=!0,r.push(this.loadTextureInfoAsync(`${e}/occlusionTexture`,t.occlusionTexture,c=>{c.name=`${i.name} (Occlusion)`,a=c})),t.occlusionTexture.strength!=null&&(o=t.occlusionTexture.strength)),t.emissiveTexture&&r.push(this.loadTextureInfoAsync(`${e}/emissiveTexture`,t.emissiveTexture,c=>{c.name=`${i.name} (Emissive)`,l=c})),Promise.all(r).then(()=>{a&&(s.ambientOcclusionTexture=a,s.ambientOcclusionTextureStrength=o),l&&(s.emissionColorTexture=l)})}loadMaterialAlphaProperties(e,t,i){if(!this._pbrMaterialImpl)throw new Error(`${e}: Material type not supported`);let r=this._getOrCreateMaterialAdapter(i),s=r.baseColorTexture;switch(t.alphaMode||"OPAQUE"){case"OPAQUE":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_OPAQUE,i.alpha=1;break}case"MASK":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHATEST,r.alphaCutOff=t.alphaCutoff==null?.5:t.alphaCutoff,s&&(s.hasAlpha=!0);break}case"BLEND":{i.transparencyMode=this._pbrMaterialImpl.materialClass.MATERIAL_ALPHABLEND,s&&(s.hasAlpha=!0,r.useAlphaFromBaseColorTexture=!0);break}default:throw new Error(`${e}/alphaMode: Invalid value (${t.alphaMode})`)}}loadTextureInfoAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureInfoAsync(e,t,i);if(r)return r;if(this.logOpen(`${e}`),t.texCoord>=6)throw new Error(`${e}/texCoord: Invalid value (${t.texCoord})`);let s=qt.Get(`${e}/index`,this._gltf.textures,t.index);s._textureInfo=t;let a=this._loadTextureAsync(`/textures/${t.index}`,s,o=>{o.coordinatesIndex=t.texCoord||0,n.AddPointerMetadata(o,e),this._parent.onTextureLoadedObservable.notifyObservers(o),i(o)});return this.logClose(),a}_loadTextureAsync(e,t,i=()=>{}){let r=this._extensionsLoadTextureAsync(e,t,i);if(r)return r;this.logOpen(`${e} ${t.name||""}`);let s=t.sampler==null?n.DefaultSampler:qt.Get(`${e}/sampler`,this._gltf.samplers,t.sampler),a=qt.Get(`${e}/source`,this._gltf.images,t.source),o=this._createTextureAsync(e,s,a,i,void 0,!t._textureInfo.nonColorData);return this.logClose(),o}_createTextureAsync(e,t,i,r=()=>{},s,a){var m,_;let o=this._loadSampler(`/samplers/${t.index}`,t),l=new Array,c=new Ub;this._babylonScene._blockEntityCollection=!!this._assetContainer;let f={noMipmap:o.noMipMaps,invertY:!1,samplingMode:o.samplingMode,onLoad:()=>{this._disposed||c.resolve()},onError:(p,g)=>{this._disposed||c.reject(new Error(`${e}: ${g&&g.message?g.message:p||"Failed to load texture"}`))},mimeType:(_=i.mimeType)!=null?_:zV((m=i.uri)!=null?m:""),loaderOptions:s,useSRGBBuffer:!!a&&this._parent.useSRGBBuffers},d=new _e(null,this._babylonScene,f);d._parentContainer=this._assetContainer,this._babylonScene._blockEntityCollection=!1,l.push(c.promise);let h=i.uri&&!Cf(i.uri)?i.uri:void 0,u=h!=null?h:`${this._fileName}#image${i.index}`;if(l.push(this.loadImageAsync(`/images/${i.index}`,i).then(p=>{let g=`data:${this._uniqueRootUrl}${u}`;d.updateURL(g,p);let v=d.getInternalTexture();v&&(v.label=i.name)})),d.wrapU=o.wrapU,d.wrapV=o.wrapV,r(d),this._parent.useGltfTextureNames){let p=i.name||h||`image${i.index}`;d.name=p}return Promise.all(l).then(()=>d)}_loadSampler(e,t){return t._data||(t._data={noMipMaps:t.minFilter===9728||t.minFilter===9729,samplingMode:n._GetTextureSamplingMode(e,t),wrapU:n._GetTextureWrapMode(`${e}/wrapS`,t.wrapS),wrapV:n._GetTextureWrapMode(`${e}/wrapT`,t.wrapT)}),t._data}loadImageAsync(e,t){if(!t._data){if(this.logOpen(`${e} ${t.name||""}`),t.uri)t._data=this.loadUriAsync(`${e}/uri`,t,t.uri);else{let i=qt.Get(`${e}/bufferView`,this._gltf.bufferViews,t.bufferView);t._data=this.loadBufferViewAsync(`/bufferViews/${i.index}`,i)}this.logClose()}return t._data}loadUriAsync(e,t,i){let r=this._extensionsLoadUriAsync(e,t,i);if(r)return r;if(!n._ValidateUri(i))throw new Error(`${e}: '${i}' is invalid`);if(Cf(i)){let s=new Uint8Array(Pf(i));return this.log(`${e}: Decoded ${i.substring(0,64)}... (${s.length} bytes)`),Promise.resolve(s)}return this.log(`${e}: Loading ${i}`),this._parent.preprocessUrlAsync(this._rootUrl+i).then(s=>new Promise((a,o)=>{this._parent._loadFile(this._babylonScene,s,l=>{this._disposed||(this.log(`${e}: Loaded ${i} (${l.byteLength} bytes)`),a(new Uint8Array(l)))},!0,l=>{o(new Gm(`${e}: Failed to load '${i}'${l?": "+l.status+" "+l.statusText:""}`,l))})}))}static AddPointerMetadata(e,t){e.metadata=e.metadata||{};let i=e._internalMetadata=e._internalMetadata||{},r=i.gltf=i.gltf||{};(r.pointers=r.pointers||[]).push(t)}static _GetTextureWrapMode(e,t){switch(t=t==null?10497:t,t){case 33071:return _e.CLAMP_ADDRESSMODE;case 33648:return _e.MIRROR_ADDRESSMODE;case 10497:return _e.WRAP_ADDRESSMODE;default:return ee.Warn(`${e}: Invalid value (${t})`),_e.WRAP_ADDRESSMODE}}static _GetTextureSamplingMode(e,t){let i=t.magFilter==null?9729:t.magFilter,r=t.minFilter==null?9987:t.minFilter;if(i===9729)switch(r){case 9728:return _e.LINEAR_NEAREST;case 9729:return _e.LINEAR_LINEAR;case 9984:return _e.LINEAR_NEAREST_MIPNEAREST;case 9985:return _e.LINEAR_LINEAR_MIPNEAREST;case 9986:return _e.LINEAR_NEAREST_MIPLINEAR;case 9987:return _e.LINEAR_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),_e.LINEAR_LINEAR_MIPLINEAR}else switch(i!==9728&&ee.Warn(`${e}/magFilter: Invalid value (${i})`),r){case 9728:return _e.NEAREST_NEAREST;case 9729:return _e.NEAREST_LINEAR;case 9984:return _e.NEAREST_NEAREST_MIPNEAREST;case 9985:return _e.NEAREST_LINEAR_MIPNEAREST;case 9986:return _e.NEAREST_NEAREST_MIPLINEAR;case 9987:return _e.NEAREST_LINEAR_MIPLINEAR;default:return ee.Warn(`${e}/minFilter: Invalid value (${r})`),_e.NEAREST_NEAREST_MIPNEAREST}}static _GetTypedArrayConstructor(e,t){try{return JC(t)}catch(i){throw new Error(`${e}: ${i.message}`,{cause:i})}}static _GetTypedArray(e,t,i,r,s){let a=i.buffer;r=i.byteOffset+(r||0);let o=n._GetTypedArrayConstructor(`${e}/componentType`,t),l=L.GetTypeByteLength(t);return r%l!==0?(ee.Warn(`${e}: Copying buffer as byte offset (${r}) is not a multiple of component type byte length (${l})`),new o(a.slice(r,r+s*l),0)):new o(a,r,s)}static _GetNumComponents(e,t){switch(t){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":return 4;case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}throw new Error(`${e}: Invalid type (${t})`)}static _ValidateUri(e){return pe.IsBase64(e)||e.indexOf("..")===-1}static _GetDrawMode(e,t){switch(t==null&&(t=4),t){case 0:return Se.PointListDrawMode;case 1:return Se.LineListDrawMode;case 2:return Se.LineLoopDrawMode;case 3:return Se.LineStripDrawMode;case 4:return Se.TriangleFillMode;case 5:return Se.TriangleStripDrawMode;case 6:return Se.TriangleFanDrawMode}throw new Error(`${e}: Invalid mesh primitive mode (${t})`)}_compileMaterialsAsync(){this._parent._startPerformanceCounter("Compile materials");let e=new Array;if(this._gltf.materials){for(let t of this._gltf.materials)if(t._data)for(let i in t._data){let r=t._data[i];for(let s of r.babylonMeshes){s.computeWorldMatrix(!0);let a=r.babylonMaterial;e.push(a.forceCompilationAsync(s)),e.push(a.forceCompilationAsync(s,{useInstances:!0})),this._parent.useClipPlane&&(e.push(a.forceCompilationAsync(s,{clipPlane:!0})),e.push(a.forceCompilationAsync(s,{clipPlane:!0,useInstances:!0})))}}}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile materials")})}_compileShadowGeneratorsAsync(){this._parent._startPerformanceCounter("Compile shadow generators");let e=new Array,t=this._babylonScene.lights;for(let i of t){let r=i.getShadowGenerator();r&&e.push(r.forceCompilationAsync())}return Promise.all(e).then(()=>{this._parent._endPerformanceCounter("Compile shadow generators")})}_forEachExtensions(e){for(let t of this._extensions)t.enabled&&e(t)}_applyExtensions(e,t,i){for(let r of this._extensions)if(r.enabled){let s=`${r.name}.${t}`,a=e;a._activeLoaderExtensionFunctions=a._activeLoaderExtensionFunctions||{};let o=a._activeLoaderExtensionFunctions;if(!o[s]){o[s]=!0;try{let l=i(r);if(l)return l}finally{delete o[s]}}}return null}_extensionsOnLoading(){this._forEachExtensions(e=>e.onLoading&&e.onLoading())}_extensionsOnReady(){this._forEachExtensions(e=>e.onReady&&e.onReady())}_extensionsLoadSceneAsync(e,t){return this._applyExtensions(t,"loadScene",i=>i.loadSceneAsync&&i.loadSceneAsync(e,t))}_extensionsLoadNodeAsync(e,t,i){return this._applyExtensions(t,"loadNode",r=>r.loadNodeAsync&&r.loadNodeAsync(e,t,i))}_extensionsLoadCameraAsync(e,t,i){return this._applyExtensions(t,"loadCamera",r=>r.loadCameraAsync&&r.loadCameraAsync(e,t,i))}_extensionsLoadVertexDataAsync(e,t,i){return this._applyExtensions(t,"loadVertexData",r=>r._loadVertexDataAsync&&r._loadVertexDataAsync(e,t,i))}_extensionsLoadMeshPrimitiveAsync(e,t,i,r,s,a){return this._applyExtensions(s,"loadMeshPrimitive",o=>o._loadMeshPrimitiveAsync&&o._loadMeshPrimitiveAsync(e,t,i,r,s,a))}_extensionsLoadMaterialAsync(e,t,i,r,s){return this._applyExtensions(t,"loadMaterial",a=>a._loadMaterialAsync&&a._loadMaterialAsync(e,t,i,r,s))}_extensionsCreateMaterial(e,t,i){return this._applyExtensions(t,"createMaterial",r=>r.createMaterial&&r.createMaterial(e,t,i))}_extensionsLoadMaterialPropertiesAsync(e,t,i){return this._applyExtensions(t,"loadMaterialProperties",r=>r.loadMaterialPropertiesAsync&&r.loadMaterialPropertiesAsync(e,t,i))}_extensionsLoadTextureInfoAsync(e,t,i){return this._applyExtensions(t,"loadTextureInfo",r=>r.loadTextureInfoAsync&&r.loadTextureInfoAsync(e,t,i))}_extensionsLoadTextureAsync(e,t,i){return this._applyExtensions(t,"loadTexture",r=>r._loadTextureAsync&&r._loadTextureAsync(e,t,i))}_extensionsLoadAnimationAsync(e,t){return this._applyExtensions(t,"loadAnimation",i=>i.loadAnimationAsync&&i.loadAnimationAsync(e,t))}_extensionsLoadAnimationChannelAsync(e,t,i,r,s){return this._applyExtensions(i,"loadAnimationChannel",a=>a._loadAnimationChannelAsync&&a._loadAnimationChannelAsync(e,t,i,r,s))}_extensionsLoadSkinAsync(e,t,i){return this._applyExtensions(i,"loadSkin",r=>r._loadSkinAsync&&r._loadSkinAsync(e,t,i))}_extensionsLoadUriAsync(e,t,i){return this._applyExtensions(t,"loadUri",r=>r._loadUriAsync&&r._loadUriAsync(e,t,i))}_extensionsLoadBufferViewAsync(e,t){return this._applyExtensions(t,"loadBufferView",i=>i.loadBufferViewAsync&&i.loadBufferViewAsync(e,t))}_extensionsLoadBufferAsync(e,t,i,r){return this._applyExtensions(t,"loadBuffer",s=>s.loadBufferAsync&&s.loadBufferAsync(e,t,i,r))}static LoadExtensionAsync(e,t,i,r){if(!t.extensions)return null;let a=t.extensions[i];return a?r(`${e}/extensions/${i}`,a):null}static LoadExtraAsync(e,t,i,r){if(!t.extras)return null;let a=t.extras[i];return a?r(`${e}/extras/${i}`,a):null}isExtensionUsed(e){return!!this._gltf.extensionsUsed&&this._gltf.extensionsUsed.indexOf(e)!==-1}logOpen(e){this._parent._logOpen(e)}logClose(){this._parent._logClose()}log(e){this._parent._log(e)}startPerformanceCounter(e){this._parent._startPerformanceCounter(e)}endPerformanceCounter(e){this._parent._endPerformanceCounter(e)}};iM.DefaultSampler={index:-1};ud._CreateGLTF2Loader=n=>new iM(n)});var Rw,xw,DZ=I(()=>{eN();Rw="ExtrasAsMetadata",xw=class{_assignExtras(e,t){if(t.extras&&Object.keys(t.extras).length>0){let i=e.metadata=e.metadata||{},r=i.gltf=i.gltf||{};r.extras=t.extras}}constructor(e){this.name=Rw,this.enabled=!0,this._loader=e}dispose(){this._loader=null}loadNodeAsync(e,t,i){return this._loader.loadNodeAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}loadCameraAsync(e,t,i){return this._loader.loadCameraAsync(e,t,r=>{this._assignExtras(r,t),i(r)})}createMaterial(e,t,i){let r=this._loader.createMaterial(e,t,i);return this._assignExtras(r,t),r}loadAnimationAsync(e,t){return this._loader.loadAnimationAsync(e,t).then(i=>(this._assignExtras(i,t),i))}};Vv(Rw);Hb(Rw,!1,n=>new xw(n))});var rM,LZ=I(()=>{rM={name:"obj",extensions:".obj"}});var Xh,OZ=I(()=>{zt();Xr();Gc();Xh=class n{constructor(){this.materials=[]}parseMTL(e,t,i,r){if(t instanceof ArrayBuffer)return;let s=t.split(` +`),a=/\s+/,o,l=null;for(let c=0;c=0?f.substring(0,d):f;h=h.toLowerCase();let u=d>=0?f.substring(d+1).trim():"";if(h==="newmtl")l&&this.materials.push(l),e._blockEntityCollection=!!r,l=new We(u,e),l._parentContainer=r,e._blockEntityCollection=!1;else if(h==="kd"&&l)o=u.split(a,3).map(parseFloat),l.diffuseColor=Ee.FromArray(o);else if(h==="ka"&&l)o=u.split(a,3).map(parseFloat),l.ambientColor=Ee.FromArray(o);else if(h==="ks"&&l)o=u.split(a,3).map(parseFloat),l.specularColor=Ee.FromArray(o);else if(h==="ke"&&l)o=u.split(a,3).map(parseFloat),l.emissiveColor=Ee.FromArray(o);else if(h==="ns"&&l)l.specularPower=parseFloat(u);else if(h==="d"&&l)l.alpha=parseFloat(u);else if(h==="map_ka"&&l)l.ambientTexture=n._GetTexture(i,u,e);else if(h==="map_kd"&&l)l.diffuseTexture=n._GetTexture(i,u,e);else if(h==="map_ks"&&l)l.specularTexture=n._GetTexture(i,u,e);else if(h!=="map_ns")if(h==="map_bump"&&l){let m=u.split(a),_=m.indexOf("-bm"),p=null;_>=0&&(p=m[_+1],m.splice(_,2)),l.bumpTexture=n._GetTexture(i,m.join(" "),e),l.bumpTexture&&p!==null&&(l.bumpTexture.level=parseFloat(p))}else h==="map_d"&&l&&(l.opacityTexture=n._GetTexture(i,u,e))}l&&this.materials.push(l)}static _GetTexture(e,t,i){if(!t)return null;let r=e;if(e==="file:"){let s=t.lastIndexOf("\\");s===-1&&(s=t.lastIndexOf("/")),s>-1?r+=t.substring(s+1):r+=t}else r+=t;return new _e(r,i,!1,n.INVERT_TEXTURE_Y)}};Xh.INVERT_TEXTURE_Y=!0});var tn,NZ=I(()=>{Zi();Gc();zt();ke();rR();Fi();Tr();Lt();tn=class n{constructor(e,t,i){this._positions=[],this._normals=[],this._uvs=[],this._colors=[],this._extColors=[],this._meshesFromObj=[],this._indicesForBabylon=[],this._wrappedPositionForBabylon=[],this._wrappedUvsForBabylon=[],this._wrappedColorsForBabylon=[],this._wrappedNormalsForBabylon=[],this._tuplePosNorm=[],this._curPositionInIndices=0,this._hasMeshes=!1,this._unwrappedPositionsForBabylon=[],this._unwrappedColorsForBabylon=[],this._unwrappedNormalsForBabylon=[],this._unwrappedUVForBabylon=[],this._triangles=[],this._materialNameFromObj="",this._objMeshName="",this._increment=1,this._isFirstMaterial=!0,this._grayColor=new ft(.5,.5,.5,1),this._hasLineData=!1,this._materialToUse=e,this._babylonMeshesArray=t,this._loadingOptions=i}_isInArray(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[]});let i=e[t[0]].normals.indexOf(t[1]);return i===-1?-1:e[t[0]].idx[i]}_isInArrayUV(e,t){e[t[0]]||(e[t[0]]={normals:[],idx:[],uv:[]});let i=e[t[0]].normals.indexOf(t[1]);return i!=1&&t[2]===e[t[0]].uv[i]?e[t[0]].idx[i]:-1}_setData(e){var i,r;(i=e.indiceUvsFromObj)!=null||(e.indiceUvsFromObj=-1),(r=e.indiceNormalFromObj)!=null||(e.indiceNormalFromObj=-1);let t;this._loadingOptions.optimizeWithUV?t=this._isInArrayUV(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj,e.indiceUvsFromObj]):t=this._isInArray(this._tuplePosNorm,[e.indicePositionFromObj,e.indiceNormalFromObj]),t===-1?(this._indicesForBabylon.push(this._wrappedPositionForBabylon.length),this._wrappedPositionForBabylon.push(e.positionVectorFromOBJ),e.textureVectorFromOBJ!==void 0&&this._wrappedUvsForBabylon.push(e.textureVectorFromOBJ),e.normalsVectorFromOBJ!==void 0&&this._wrappedNormalsForBabylon.push(e.normalsVectorFromOBJ),e.positionColorsFromOBJ!==void 0&&this._wrappedColorsForBabylon.push(e.positionColorsFromOBJ),this._tuplePosNorm[e.indicePositionFromObj].normals.push(e.indiceNormalFromObj),this._tuplePosNorm[e.indicePositionFromObj].idx.push(this._curPositionInIndices++),this._loadingOptions.optimizeWithUV&&this._tuplePosNorm[e.indicePositionFromObj].uv.push(e.indiceUvsFromObj)):this._indicesForBabylon.push(t)}_unwrapData(){try{for(let e=0;e0&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._unwrapData(),this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._handledMesh.indices=this._indicesForBabylon.slice(),this._handledMesh.positions=this._unwrappedPositionsForBabylon.slice(),this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon.slice()),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon.slice()),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon.slice()),this._handledMesh.hasLines=this._hasLineData,this._indicesForBabylon.length=0,this._unwrappedPositionsForBabylon.length=0,this._unwrappedColorsForBabylon.length=0,this._unwrappedNormalsForBabylon.length=0,this._unwrappedUVForBabylon.length=0,this._hasLineData=!1)}_optimizeNormals(e){let t=e.getVerticesData(L.PositionKind),i=e.getVerticesData(L.NormalKind),r={};if(!t||!i)return;for(let a=0;athis._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=1):i.useRightHandedSystem?(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u+1],h[u]),this._handednessSign=1):(this._pushTriangle=(h,u)=>this._triangles.push(h[0],h[u],h[u+1]),this._handednessSign=-1);let a=t.split(` +`),o=[],l=[];o.push(l);for(let h=0;h=7){let _=parseFloat(m[4]),p=parseFloat(m[5]),g=parseFloat(m[6]);this._colors.push(new ft(_>1?_/255:_,p>1?p/255:p,g>1?g/255:g,m.length===7||m[7]===void 0?1:parseFloat(m[7])))}else this._colors.push(this._grayColor)}else if((m=n.NormalPattern.exec(u))!==null)this._normals.push(new b(parseFloat(m[1]),parseFloat(m[2]),parseFloat(m[3])));else if((m=n.UVPattern.exec(u))!==null)this._uvs.push(new we(parseFloat(m[1])*this._loadingOptions.UVScaling.x,parseFloat(m[2])*this._loadingOptions.UVScaling.y));else if((m=n.FacePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),1);else if((m=n.FacePattern4.exec(u))!==null)this._setDataForCurrentFaceWithPattern4(m[1].trim().split(" "),1);else if((m=n.FacePattern5.exec(u))!==null)this._setDataForCurrentFaceWithPattern5(m[1].trim().split(" "),1);else if((m=n.FacePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),1);else if((m=n.FacePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),1);else if((m=n.LinePattern1.exec(u))!==null)this._setDataForCurrentFaceWithPattern1(m[1].trim().split(" "),0),this._hasLineData=!0;else if((m=n.LinePattern2.exec(u))!==null)this._setDataForCurrentFaceWithPattern2(m[1].trim().split(" "),0),this._hasLineData=!0;else if(m=n._GetZbrushMRGB(u,!this._loadingOptions.importVertexColors))for(let _ of m)this._extColors.push(_);else if((m=n.LinePattern3.exec(u))!==null)this._setDataForCurrentFaceWithPattern3(m[1].trim().split(" "),0),this._hasLineData=!0;else if(n.GroupDescriptor.test(u)||n.ObjectDescriptor.test(u)){let _={name:u.substring(2).trim(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:n.ObjectDescriptor.test(u)};this._addPreviousObjMesh(),this._meshesFromObj.push(_),this._hasMeshes=!0,this._isFirstMaterial=!0,this._increment=1}else if(n.UseMtlDescriptor.test(u)){if(this._materialNameFromObj=u.substring(7).trim(),!this._isFirstMaterial||!this._hasMeshes){this._addPreviousObjMesh();let _={name:(this._objMeshName||"mesh")+"_mm"+this._increment.toString(),indices:null,positions:null,normals:null,uvs:null,colors:null,materialName:this._materialNameFromObj,isObject:!1};this._increment++,this._meshesFromObj.push(_),this._hasMeshes=!0}this._hasMeshes&&this._isFirstMaterial&&(this._meshesFromObj[this._meshesFromObj.length-1].materialName=this._materialNameFromObj,this._isFirstMaterial=!1)}else n.MtlLibGroupDescriptor.test(u)?s(u.substring(7).trim()):n.SmoothDescriptor.test(u)||ee.Log("Unhandled expression at line : "+u)}if(this._hasMeshes&&(this._handledMesh=this._meshesFromObj[this._meshesFromObj.length-1],this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData(),this._handledMesh.indices=this._indicesForBabylon,this._handledMesh.positions=this._unwrappedPositionsForBabylon,this._unwrappedNormalsForBabylon.length&&(this._handledMesh.normals=this._unwrappedNormalsForBabylon),this._unwrappedUVForBabylon.length&&(this._handledMesh.uvs=this._unwrappedUVForBabylon),this._unwrappedColorsForBabylon.length&&(this._handledMesh.colors=this._unwrappedColorsForBabylon),this._handledMesh.hasLines=this._hasLineData),!this._hasMeshes){let h=null;if(this._indicesForBabylon.length)this._loadingOptions.useLegacyBehavior&&this._indicesForBabylon.reverse(),this._unwrapData();else{for(let u of this._positions)this._unwrappedPositionsForBabylon.push(u.x,u.y,u.z);if(this._normals.length)for(let u of this._normals)this._unwrappedNormalsForBabylon.push(u.x,u.y,u.z);if(this._uvs.length)for(let u of this._uvs)this._unwrappedUVForBabylon.push(u.x,u.y);if(this._extColors.length)for(let u of this._extColors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);else if(this._colors.length)for(let u of this._colors)this._unwrappedColorsForBabylon.push(u.r,u.g,u.b,u.a);this._materialNameFromObj||(h=new We(xn.RandomId(),i),h.pointsCloud=!0,this._materialNameFromObj=h.name,this._normals.length||(h.disableLighting=!0,h.emissiveColor=Ee.White()))}this._meshesFromObj.push({name:xn.RandomId(),indices:this._indicesForBabylon,positions:this._unwrappedPositionsForBabylon,colors:this._unwrappedColorsForBabylon,normals:this._unwrappedNormalsForBabylon,uvs:this._unwrappedUVForBabylon,materialName:this._materialNameFromObj,directMaterial:h,isObject:!0,hasLines:this._hasLineData})}for(let h=0;h=0;--_)if(this._meshesFromObj[_].isObject&&this._meshesFromObj[_]._babylonMesh){u.parent=this._meshesFromObj[_]._babylonMesh;break}}if(this._materialToUse.push(this._meshesFromObj[h].materialName),this._handledMesh.hasLines&&((f=u._internalMetadata)!=null||(u._internalMetadata={}),u._internalMetadata._isLine=!0),((d=this._handledMesh.positions)==null?void 0:d.length)===0){this._babylonMeshesArray.push(u);continue}let m=new Me;if(m.indices=this._handledMesh.indices,m.positions=this._handledMesh.positions,this._loadingOptions.computeNormals||!this._handledMesh.normals){let _=new Array;Me.ComputeNormals(this._handledMesh.positions,this._handledMesh.indices,_),m.normals=_}else m.normals=this._handledMesh.normals;this._handledMesh.uvs&&(m.uvs=this._handledMesh.uvs),this._handledMesh.colors&&(m.colors=this._handledMesh.colors),m.applyToMesh(u),this._loadingOptions.invertY&&(u.scaling.y*=-1),this._loadingOptions.optimizeNormals&&this._optimizeNormals(u),this._babylonMeshesArray.push(u),this._handledMesh.directMaterial&&(u.material=this._handledMesh.directMaterial)}}};tn.ObjectDescriptor=/^o/;tn.GroupDescriptor=/^g/;tn.MtlLibGroupDescriptor=/^mtllib /;tn.UseMtlDescriptor=/^usemtl /;tn.SmoothDescriptor=/^s /;tn.VertexPattern=/^v(\s+[\d|.|+|\-|e|E]+){3,7}/;tn.NormalPattern=/^vn(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;tn.UVPattern=/^vt(\s+[\d|.|+|\-|e|E]+)( +[\d|.|+|\-|e|E]+)/;tn.FacePattern1=/^f\s+(([\d]{1,}[\s]?){3,})+/;tn.FacePattern2=/^f\s+((([\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern3=/^f\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern4=/^f\s+((([\d]{1,}\/\/[\d]{1,}[\s]?){3,})+)/;tn.FacePattern5=/^f\s+(((-[\d]{1,}\/-[\d]{1,}\/-[\d]{1,}[\s]?){3,})+)/;tn.LinePattern1=/^l\s+(([\d]{1,}[\s]?){2,})+/;tn.LinePattern2=/^l\s+((([\d]{1,}\/[\d]{1,}[\s]?){2,})+)/;tn.LinePattern3=/^l\s+((([\d]{1,}\/[\d]{1,}\/[\d]{1,}[\s]?){2,})+)/});var wZ={};Fe(wZ,{OBJFileLoader:()=>Sa});var Sa,bw=I(()=>{ke();wi();Np();Fv();LZ();OZ();NZ();Gc();Sa=class n{static get INVERT_TEXTURE_Y(){return Xh.INVERT_TEXTURE_Y}static set INVERT_TEXTURE_Y(e){Xh.INVERT_TEXTURE_Y=e}constructor(e){this.name=rM.name,this.extensions=rM.extensions,this._assetContainer=null,this._loadingOptions={...n._DefaultLoadingOptions,...e!=null?e:{}}}static get _DefaultLoadingOptions(){return{computeNormals:n.COMPUTE_NORMALS,optimizeNormals:n.OPTIMIZE_NORMALS,importVertexColors:n.IMPORT_VERTEX_COLORS,invertY:n.INVERT_Y,invertTextureY:n.INVERT_TEXTURE_Y,UVScaling:n.UV_SCALING,materialLoadingFailsSilently:n.MATERIAL_LOADING_FAILS_SILENTLY,optimizeWithUV:n.OPTIMIZE_WITH_UV,skipMaterials:n.SKIP_MATERIALS,useLegacyBehavior:n.USE_LEGACY_BEHAVIOR}}_loadMTL(e,t,i,r){let s=t+e;pe.LoadFile(s,i,void 0,void 0,!1,(a,o)=>{r(s,o)})}createPlugin(e){return new n(e[rM.name])}canDirectLoad(){return!1}importMeshAsync(e,t,i,r){return this._parseSolidAsync(e,t,i,r).then(s=>({meshes:s,particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))}loadAsync(e,t,i){return this.importMeshAsync(null,e,t,i).then(()=>{})}loadAssetContainerAsync(e,t,i){let r=new Ll(e);return this._assetContainer=r,this.importMeshAsync(null,e,t,i).then(s=>(s.meshes.forEach(a=>r.meshes.push(a)),s.meshes.forEach(a=>{let o=a.material;o&&r.materials.indexOf(o)==-1&&(r.materials.push(o),o.getActiveTextures().forEach(c=>{r.textures.indexOf(c)==-1&&r.textures.push(c)}))}),this._assetContainer=null,r)).catch(s=>{throw this._assetContainer=null,s})}_parseSolidAsync(e,t,i,r){let s="",a=new Xh,o=[],l=[];i=i.replace(/#.*$/gm,"").trim(),new tn(o,l,this._loadingOptions).parse(e,i,t,this._assetContainer,d=>{s=d});let f=[];return s!==""&&!this._loadingOptions.skipMaterials&&f.push(new Promise((d,h)=>{this._loadMTL(s,r,u=>{try{a.parseMTL(t,u,r,this._assetContainer);for(let m=0;m-1;)p.push(g),_=g+1;if(g===-1&&p.length===0)a.materials[m].dispose();else for(let v=0;v{pe.Warn(`Error downloading MTL file: '${s}'`),this._loadingOptions.materialLoadingFailsSilently?d():h(m)})})),Promise.all(f).then(()=>{let d=h=>{var u,m;return!!((m=(u=h._internalMetadata)==null?void 0:u._isLine)!=null&&m)};return l.forEach(h=>{var u,m;if(d(h)){let _=(u=h.material)!=null?u:new We(h.name+"_line",t);_.getBindedMeshes().filter(g=>!d(g)).length>0&&(_=(m=_.clone(_.name+"_line"))!=null?m:_),_.wireframe=!0,h.material=_,h._internalMetadata&&(h._internalMetadata._isLine=void 0)}}),l})}};Sa.OPTIMIZE_WITH_UV=!0;Sa.INVERT_Y=!1;Sa.IMPORT_VERTEX_COLORS=!1;Sa.COMPUTE_NORMALS=!1;Sa.OPTIMIZE_NORMALS=!1;Sa.UV_SCALING=new we(1,1);Sa.SKIP_MATERIALS=!1;Sa.MATERIAL_LOADING_FAILS_SILENTLY=!0;Sa.USE_LEGACY_BEHAVIOR=!1;hd(new Sa)});function Xge(n){let e=n.trim();return/^https?:\/\//i.test(e)||/^wss?:\/\//i.test(e)||/^\/\//.test(e)}function Mw(n,e){if(Xge(n))throw new Error(`[AI3D] Babylon ${e} is limited to local vault resources. Refused remote URL: ${n}`);return n}function nM(n){throw new Error(`[AI3D] Babylon script loading is disabled in this plugin build. Refused script URL: ${n}`)}function BZ(){if(FZ)return;let n=i=>Mw(i,"asset loading"),e=i=>Mw(i,"script loading"),t=()=>-1;pe.PreprocessUrl=n,pe.ScriptPreprocessUrl=e,pe.DefaultRetryStrategy=t,pe.LoadScript=(i,r,s)=>{try{e(i),nM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r==null||r()},pe.LoadScriptAsync=async i=>{e(i),nM(i)},pe.LoadBabylonScript=(i,r,s)=>{try{nM(i)}catch(a){s==null||s(a instanceof Error?a.message:String(a),a);return}r()},pe.LoadBabylonScriptAsync=async i=>{nM(i)},ji.PreprocessUrl=n,ji.ScriptPreprocessUrl=e,ji.DefaultRetryStrategy=t,wr.CustomRequestModifiers.push((i,r)=>Mw(r,"request")),FZ=!0}var FZ,UZ=I(()=>{"use strict";lc();wi();_h();FZ=!1});function sM(n,e){if(e.byteLength<84)throw new Error(`STL buffer too small: ${e.byteLength} bytes (need 84+)`);if(e.byteLength>=6){let _=new TextDecoder().decode(new Uint8Array(e,0,6));if(_==="solid "||_===`solid +`){let p=new TextDecoder().decode(new Uint8Array(e,0,Math.min(e.byteLength,800)));if(p.includes("facet")||p.includes("endsolid"))throw new Error("ASCII STL detected \u2014 only binary STL is supported. Convert to binary STL first.")}}let t=new DataView(e),i=t.getUint32(80,!0);if(i===0)throw new Error("STL file contains 0 triangles");let r=84+i*50;if(e.byteLength>0&31)/31,O=(v>>5&31)/31,N=(v>>10&31)/31,B=_*12;l[B+0]=G,l[B+1]=O,l[B+2]=N,l[B+3]=1,l[B+4]=G,l[B+5]=O,l[B+6]=N,l[B+7]=1,l[B+8]=G,l[B+9]=O,l[B+10]=N,l[B+11]=1}let T=a[p+3]-a[p+0],S=a[p+4]-a[p+1],E=a[p+5]-a[p+2],A=a[p+6]-a[p+0],R=a[p+7]-a[p+1],M=a[p+8]-a[p+2],y=S*M-E*R,C=E*A-T*M,D=T*R-S*A,w=Math.sqrt(y*y+C*C+D*D);w>1e-8?(y/=w,C/=w,D/=w):(y=0,C=0,D=1,f++),o[p+0]=y,o[p+1]=C,o[p+2]=D,o[p+3]=y,o[p+4]=C,o[p+5]=D,o[p+6]=y,o[p+7]=C,o[p+8]=D,c[g+0]=p/3+0,c[g+1]=p/3+1,c[g+2]=p/3+2}f>0&&console.warn(`[AI3D STL] ${f} degenerate triangles with zero-area normals`);let h=new Me;h.positions=a,h.normals=o,h.indices=c,l&&(h.colors=l);let u=new q("stl-model",n);h.applyToMesh(u);let m=new We("stl-mat",n);return m.backFaceCulling=!1,m.specularColor=new Ee(.3,.3,.3),m.specularPower=32,l?(m.diffuseColor=new Ee(1,1,1),m.emissiveColor=new Ee(.05,.05,.05),m.vertexColorEnabled=!0):(m.diffuseColor=new Ee(.85,.85,.85),m.emissiveColor=new Ee(.1,.1,.1)),u.material=m,u}function VZ(n,e){return sM(n,e)}function GZ(n){n(Yge)}var Yge,Iw=I(()=>{"use strict";Fi();Fv();Tr();Gc();zt();Yge={name:"stl",extensions:".stl",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[sM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{sM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=sM(n,e),i=new Ll(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});function Kge(n){let e=n.split(` +`),t=[],i="binary_little_endian",r=null;for(let s of e){let a=s.trim();if(a==="end_header")break;if(a==="ply"||a===""||a.startsWith("comment"))continue;let o=a.split(/\s+/),l=o[0];l==="format"?i=o[1]:l==="element"?(r={name:o[1],count:parseInt(o[2],10),properties:[]},t.push(r)):l==="property"&&r&&(o[1]==="list"?r.properties.push({name:o[4],type:"list",isList:!0,countType:o[2],itemType:o[3]}):r.properties.push({name:o[2],type:o[1],isList:!1}))}return{format:i,elements:t}}function zp(n){switch(n){case"uchar":case"uint8":return 1;case"char":case"int8":return 1;case"ushort":case"uint16":return 2;case"short":case"int16":return 2;case"uint":case"uint32":return 4;case"int":case"int32":return 4;case"float":case"float32":return 4;case"double":case"float64":return 8;default:return 4}}function aM(n,e,t,i){switch(t){case"uchar":case"uint8":return n.getUint8(e);case"char":case"int8":return n.getInt8(e);case"ushort":case"uint16":return n.getUint16(e,i);case"short":case"int16":return n.getInt16(e,i);case"uint":case"uint32":return n.getUint32(e,i);case"int":case"int32":return n.getInt32(e,i);case"float":case"float32":return n.getFloat32(e,i);case"double":case"float64":return n.getFloat64(e,i);default:return 0}}function jge(n,e,t,i){let r=i,s=new DataView(n),a=[],o=[],l=[],c=e.elements.find(d=>d.name==="vertex"),f=e.elements.find(d=>d.name==="face");if(c){let d=c.properties.some(u=>u.name==="x"),h=c.properties.some(u=>u.name==="red"||u.name==="r");for(let u=0;uh.name==="vertex"),c=e.elements.find(h=>h.name==="face"),f=0;if(l){let h=l.properties.some(_=>_.name==="x"),u=l.properties.some(_=>_.name==="red"||_.name==="r"),m=l.properties.filter(_=>!_.isList);for(let _=0;_0){c.indices=o.indices;let h=new Array(l.length).fill(0),u=o.indices,m=l.length-3;for(let _=0;_m||g>m||v>m)continue;let T=l[p],S=l[p+1],E=l[p+2],A=l[g]-T,R=l[g+1]-S,M=l[g+2]-E,y=l[v]-T,C=l[v+1]-S,D=l[v+2]-E,w=R*D-M*C,G=M*y-A*D,O=A*C-R*y;h[p]+=w,h[p+1]+=G,h[p+2]+=O,h[g]+=w,h[g+1]+=G,h[g+2]+=O,h[v]+=w,h[v+1]+=G,h[v+2]+=O}for(let _=0;_0&&(h[_]/=p,h[_+1]/=p,h[_+2]/=p)}c.normals=h}else{let h=o.positions.length/3,u=[];for(let m=0;m=3&&u.push(0,1,2),c.indices=u}let f=new q("ply-model",n);c.applyToMesh(f);let d=new We("ply-mat",n);return d.backFaceCulling=!1,o.colors.length>0?(c.colors=o.colors,c.applyToMesh(f),d.diffuseColor=new Ee(1,1,1),d.vertexColorEnabled=!0):d.diffuseColor=new Ee(.7,.7,.7),f.material=d,f}function kZ(n,e){return oM(n,e)}function WZ(n){n(qge)}var qge,yw=I(()=>{"use strict";Fi();Fv();Tr();Gc();zt();qge={name:"ply",extensions:".ply",importMeshAsync(n,e,t){return Promise.resolve().then(()=>({meshes:[oM(e,t)],particleSystems:[],skeletons:[],animationGroups:[],transformNodes:[],geometries:[],lights:[],spriteManagers:[]}))},loadAsync(n,e){return Promise.resolve().then(()=>{oM(n,e)})},loadAssetContainerAsync(n,e){return Promise.resolve().then(()=>{let t=oM(n,e),i=new Ll(n);return i.meshes.push(t),t.material&&i.materials.push(t.material),i})},canDirectLoad(){return!1},rewriteRootURL(n){return n}}});async function Yv(){HZ||(BZ(),GZ(hd),WZ(hd),HZ=!0)}var HZ,Kv=I(()=>{"use strict";QO();PZ();DZ();bw();Np();UZ();Iw();yw();HZ=!1});function jv(n){return Math.floor(n.getTotalIndices()/3)}function _d(n){return n.getTotalVertices()}function Yh(n,e=[]){let t=[n,...e,...n.getChildMeshes(!0)],i=new Set;return t.filter(r=>!r||i.has(r)||r.isDisposed()?!1:(i.add(r),_d(r)>0||r.getTotalIndices()>0))}function zZ(n){let e=Array.from(n),t=new Set(e);return e.filter(i=>{let r=i.parent;return!r||!t.has(r)})}function Cw(n){n.computeWorldMatrix(!0);let e=n.getBoundingInfo().boundingBox;return xf(Jt(e.minimumWorld),Jt(e.maximumWorld))}function gd(n){let e=null;for(let t of n)!t||t.isDisposed()||(e=nh(e,Cw(t)));return e}function cM(n,e=[]){var t;return(t=gd(Yh(n,e)))!=null?t:Cw(n)}function fM(n,e,t,i={}){return sA({rootName:n,boundingSize:tr(e),meshes:t.map(r=>({triangleCount:jv(r),vertexCount:_d(r),materialKeys:r.material?[r.material.name]:[]})),splatCount:i.splatCount,resourceWarnings:i.resourceWarnings})}function XZ(n,e={}){var t,i;return{name:n.name,triangleCount:e.isSplat?null:jv(n),vertexCount:_d(n),materialName:(i=(t=n.material)==null?void 0:t.name)!=null?i:null}}function Pw(n,e=lM){var a,o,l;let t=Cw(n),i=n.name||`mesh-${n.uniqueId}`,r=hM(n.metadata,(a=e.get(`node:${i}`))!=null?a:e.get(`mesh:${i}`)),s=ma(r,{name:i,path:dM(n)});return Jl({name:Lw(s,i),triangleCount:jv(n),vertexCount:_d(n),materialName:(l=(o=n.material)==null?void 0:o.name)!=null?l:null,boundingSize:tr(t),center:Rr(t),source:s.hasExplicitIdentity?"component":"mesh",meshNames:[i],childCount:1,componentId:s.componentId,occurrenceId:s.occurrenceId,partNumber:s.partNumber,componentPath:s.componentPath})}function YZ(n,e){return n.getChildMeshes(!1).filter(t=>e.has(t))}function Qge(n){let e=n.trim().toLowerCase();return/^(scene|root|model|group|node|object|assembly|component|__root__)[-_\s.]?\d*$/i.test(e)}function $ge(n){return/->\d+(?:[_\s.-]*primitive\d*)?$/i.test(n.trim())}function Dw(n,e,t=lM){var u,m;if(e.includes(n))return Pw(n,t);let i=new Set(e),r=YZ(n,i),s=Jt(n.getAbsolutePosition()),a=(u=gd(r))!=null?u:xf(s,s),o=new Set,l=0,c=0;for(let _ of r)l+=jv(_),c+=_d(_),(m=_.material)!=null&&m.name&&o.add(_.material.name);let f=Xp(n,`component-${n.uniqueId}`),d=hM(n.metadata,t.get(`node:${f}`)),h=ma(d,{name:f,path:dM(n)});return Jl({name:Lw(h,f),triangleCount:l,vertexCount:c,materialName:sh(o),boundingSize:tr(a),center:Rr(a),source:h.hasExplicitIdentity?"component":"group",meshNames:r.map(_=>_.name||`mesh-${_.uniqueId}`),childCount:r.length,componentId:h.componentId,occurrenceId:h.occurrenceId,partNumber:h.partNumber,componentPath:h.componentPath})}function Zv(n,e,t,i=lM){var l,c;let r=new Set(t),s=null,a=null,o=e.parent;for(;o&&o!==n;){let f=o,d=YZ(f,r);if(d.length>0&&d.length1&&u.trim()&&!Qge(u)&&(s=f)}o=f.parent}return(c=s!=null?s:a)!=null?c:e}function KZ(n,e,t=lM){let i=new Set(n),r=[],s=new Set,a=[];for(let o of e){let l=o.getChildMeshes(!1).filter(h=>i.has(h)),c=Xp(o,`component-${o.uniqueId}`),f=hM(o.metadata,t.get(`node:${c}`)),d=ma(f,{name:Xp(o,`component-${o.uniqueId}`),path:dM(o)});l.length<1||l.length===n.length||!d.hasExplicitIdentity&&(!o.name.trim()||l.length<2)||a.push({node:o,childMeshes:l,identity:d})}return a.sort((o,l)=>o.childMeshes.length-l.childMeshes.length).forEach(({node:o,childMeshes:l,identity:c})=>{var _;let f=l.filter(p=>!s.has(p));if(f.length<1||!c.hasExplicitIdentity&&f.length<2)return;for(let p of f)s.add(p);let d=gd(f);if(!d)return;let h=new Set,u=0,m=0;for(let p of f)u+=jv(p),m+=_d(p),(_=p.material)!=null&&_.name&&h.add(p.material.name);r.push(Jl({name:Lw(c,Xp(o,`component-${o.uniqueId}`)),triangleCount:u,vertexCount:m,materialName:sh(h),boundingSize:tr(d),center:Rr(d),source:c.hasExplicitIdentity?"component":"group",meshNames:f.map(p=>p.name||`mesh-${p.uniqueId}`),childCount:f.length,componentId:c.componentId,occurrenceId:c.occurrenceId,partNumber:c.partNumber,componentPath:c.componentPath}))}),{parts:r,groupedMeshes:s}}function jZ(n,e){let t=Jge(n,e),i=new Map;if(!t)return i;let r=Array.isArray(t.nodes)?t.nodes:[];for(let a of r){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`node:${l}`,o.extras)}let s=Array.isArray(t.meshes)?t.meshes:[];for(let a of s){if(!a||typeof a!="object")continue;let o=a,l=typeof o.name=="string"?o.name:"";l&&o.extras&&i.set(`mesh:${l}`,o.extras)}return i}function Xp(n,e){var i;return((i=ma(n.metadata,{name:n.name}).displayName)==null?void 0:i.trim())||n.name||e}function dM(n){let e=[],t=n;for(;t&&typeof t=="object"&&"name"in t;){let i=t,r=Xp(i,"node");r.trim()&&e.push(r),t=i.parent}return e.reverse().join("/")}function Jge(n,e){try{if(e==="gltf")return JSON.parse(new TextDecoder().decode(new Uint8Array(n)));if(e!=="glb")return null;let t=new DataView(n);if(t.byteLength<20||t.getUint32(0,!0)!==1179937895)return null;let i=t.getUint32(12,!0);if(t.getUint32(16,!0)!==1313821514||20+i>t.byteLength)return null;let s=new Uint8Array(n,20,i);return JSON.parse(new TextDecoder().decode(s))}catch(t){return null}}function hM(n,e){return e===void 0?n:n==null?e:{metadata:n,extras:e}}function Lw(n,e){var t;return((t=n.displayName)==null?void 0:t.trim())||n.partNumber||n.componentId||e}var lM,qv=I(()=>{"use strict";fl();_C();Ag();Gs();aA();lM=new Map});function vd(n){return cn(n)}function ZZ(n,e,t,i=[]){bA(new uM(n,i),e,t)}function Ow(n,e=[]){MA(new uM(n,e))}var uM,qZ=I(()=>{"use strict";ke();fl();Gs();SC();qv();uM=class{constructor(e,t=[]){this.rootMesh=e,this.loadedMeshes=t}getParts(){return Yh(this.rootMesh,this.loadedMeshes)}getRootCenter(){return Rr(cM(this.rootMesh,this.loadedMeshes))}getPartPosition(e){return Jt(e.position)}getPartCenter(e){return Jt(e.getBoundingInfo().boundingBox.centerWorld)}setPartPosition(e,t){e.position=new b(t.x,t.y,t.z)}getPartState(e){let t=e.metadata;return t!=null&&t._previewExplodeState?{originalPosition:vd(t._previewExplodeState.originalPosition),originalCenter:vd(t._previewExplodeState.originalCenter)}:t!=null&&t._originalPos&&(t!=null&&t._originalCenter)?{originalPosition:vd(t._originalPos),originalCenter:vd(t._originalCenter)}:null}setPartState(e,t){(!e.metadata||typeof e.metadata!="object")&&(e.metadata={});let i=e.metadata;i._previewExplodeState={originalPosition:vd(t.originalPosition),originalCenter:vd(t.originalCenter)},i._originalPos=vd(t.originalPosition),i._originalCenter=vd(t.originalCenter)}}});var mM={};Fe(mM,{glowBlurPostProcessPixelShaderWGSL:()=>eve});var Nw,QZ,eve,pM=I(()=>{k();Nw="glowBlurPostProcessPixelShader",QZ=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d;uniform screenSize: vec2f;uniform direction: vec2f;uniform blurWidth: f32;fn getLuminance(color: vec3f)->f32 {return dot(color, vec3f(0.2126,0.7152,0.0722));} #define CUSTOM_FRAGMENT_DEFINITIONS @fragment fn main(input: FragmentInputs)->FragmentOutputs {var weights: array;weights[0]=0.05;weights[1]=0.1;weights[2]=0.2;weights[3]=0.3;weights[4]=0.2;weights[5]=0.1;weights[6]=0.05;var texelSize: vec2f= vec2f(1.0/uniforms.screenSize.x,1.0/uniforms.screenSize.y);var texelStep: vec2f=texelSize*uniforms.direction*uniforms.blurWidth;var start: vec2f=input.vUV-3.0*texelStep;var baseColor: vec4f= vec4f(0.,0.,0.,0.);var texelOffset: vec2f= vec2f(0.,0.);for (var i: i32=0; i<7; i++) {var texel: vec4f=textureSample(textureSampler,textureSamplerSampler,start+texelOffset);baseColor=vec4f(baseColor.rgb,baseColor.a+texel.a*weights[i]);var luminance: f32=getLuminance(baseColor.rgb);var luminanceTexel: f32=getLuminance(texel.rgb);var choice: f32=step(luminanceTexel,luminance);baseColor=vec4f(choice*baseColor.rgb+(1.0-choice)*texel.rgb,baseColor.a);texelOffset+=texelStep;} -fragmentOutputs.color=baseColor;}`;x.ShadersStoreWGSL[Nw]||(x.ShadersStoreWGSL[Nw]=QZ);eve={name:Nw,shader:QZ}});var pM={};Fe(pM,{glowBlurPostProcessPixelShader:()=>tve});var ww,$Z,tve,_M=I(()=>{k();ww="glowBlurPostProcessPixelShader",$Z=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize;uniform vec2 direction;uniform float blurWidth;float getLuminance(vec3 color) +fragmentOutputs.color=baseColor;}`;x.ShadersStoreWGSL[Nw]||(x.ShadersStoreWGSL[Nw]=QZ);eve={name:Nw,shader:QZ}});var _M={};Fe(_M,{glowBlurPostProcessPixelShader:()=>tve});var ww,$Z,tve,gM=I(()=>{k();ww="glowBlurPostProcessPixelShader",$Z=`varying vec2 vUV;uniform sampler2D textureSampler;uniform vec2 screenSize;uniform vec2 direction;uniform float blurWidth;float getLuminance(vec3 color) {return dot(color,vec3(0.2126,0.7152,0.0722));} #define CUSTOM_FRAGMENT_DEFINITIONS void main(void) @@ -23688,8 +23688,8 @@ gl_FragColor=finalColor*glowIntensity; #ifdef HIGHLIGHT gl_FragColor.a=glowColor.a; #endif -}`;x.ShadersStore[Vw]||(x.ShadersStore[Vw]=lq);sve={name:Vw,shader:lq}});var ko,zc,gM=I(()=>{mi();zt();Gi();Zi();Sh();ts();Qf();Eh();Ml();es();sP();ko=class n extends $r{constructor(e,t=null,i,r,s){super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms}),this.direction=i,this.kernel=r,this.textureWidth=0,this.textureHeight=0}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(mM(),uM)))):t.push(Promise.resolve().then(()=>(_M(),pM))),super._gatherImports(e,t)}bind(){super.bind(),this._drawWrapper.effect.setFloat2("screenSize",this.textureWidth,this.textureHeight),this._drawWrapper.effect.setVector2("direction",this.direction),this._drawWrapper.effect.setFloat("blurWidth",this.kernel)}};ko.FragmentUrl="glowBlurPostProcess";ko.Uniforms=["screenSize","direction","blurWidth"];zc=class n{get camera(){return this._options.camera}set camera(e){this._options.camera=e}get renderingGroupId(){return this._options.renderingGroupId}set renderingGroupId(e){this._options.renderingGroupId=e}get objectRenderer(){return this._objectRenderer}get shaderLanguage(){return this._shaderLanguage}setMaterialForRendering(e,t){if(this._objectRenderer.setMaterialForRendering(e,t),Array.isArray(e))for(let i=0;i{t=this._scene.getBoundingBoxRenderer().enabled,this._scene.getBoundingBoxRenderer().enabled=!this.disableBoundingBoxesFromEffectLayer&&t}),this._objectRenderer.onAfterRenderObservable.add(()=>{this._scene.getBoundingBoxRenderer().enabled=t})),this._objectRenderer.customIsReadyFunction=(i,r,s)=>{if((s||r===0)&&i.subMeshes)for(let a=0;a{this.onBeforeRenderLayerObservable.notifyObservers(this);let o,l=this._scene.getEngine();if(a.length){for(l.setColorWrite(!1),o=0;o4&&(c.push(L.MatricesIndicesExtraKind),c.push(L.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let E=s.skeleton;E&&E.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(E?E.bones.length+1:0)),s.numBoneInfluencers>0&&u.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?Il(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,h):0;t&&(l.push("#define INSTANCES"),No(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let _=s.bakedVertexAnimationManager;_&&_.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),bl(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),g=p.defines,v=l.join(` -`);if(g!==v){let E=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Qn(E),p.setEffect(this._engine.createEffect("glowMapGeneration",c,E,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,u,void 0,void 0,{maxSimultaneousMorphTargets:m},this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0}),v)}return p.effect.isReady()&&(this._dontCheckIfReady||!this._dontCheckIfReady&&this.isLayerReady())}_isSubMeshReady(e,t,i){return this._internalIsSubMeshReady(e,t,i)}async _importShadersAsync(){var e;this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(tq(),eq)),Promise.resolve().then(()=>(nq(),rq))]):await Promise.all([Promise.resolve().then(()=>(oq(),aq)),Promise.resolve().then(()=>(fq(),cq))]),(e=this._additionalImportShadersAsync)==null||e.call(this)}_internalIsLayerReady(){let e=!0;for(let i=0;iv.setMatrix("world",R)),(i.disableDepthWrite||i.forceDepthWrite)&&c.setDepthWrite(T),i.disableColorWrite&&c.setColorWrite(S),i.depthFunction!==0&&c.setDepthFunction(E)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),this._vertexBuffers[L.PositionKind]=null),this._indexBuffer&&(this._scene.getEngine()._releaseBuffer(this._indexBuffer),this._indexBuffer=null);for(let t of this._mergeDrawWrapper)t.dispose();this._mergeDrawWrapper=[],this._objectRenderer.dispose(),this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onBeforeRenderLayerObservable.clear(),this.onBeforeComposeObservable.clear(),this.onBeforeRenderMeshToEffect.clear(),this.onAfterRenderMeshToEffect.clear(),this.onAfterComposeObservable.clear()}};zc.ForceGLSL=!1});var ta,Gw=I(()=>{Wt();kt();wi();mi();Gi();Xr();wf();Sn();Eo();gM();Wx();ta=class n{get _shouldRender(){return this._thinEffectLayer._shouldRender}set _shouldRender(e){this._thinEffectLayer._shouldRender=e}get _emissiveTextureAndColor(){return this._thinEffectLayer._emissiveTextureAndColor}set _emissiveTextureAndColor(e){this._thinEffectLayer._emissiveTextureAndColor=e}get _effectIntensity(){return this._thinEffectLayer._effectIntensity}set _effectIntensity(e){this._thinEffectLayer._effectIntensity=e}static get ForceGLSL(){return zc.ForceGLSL}static set ForceGLSL(e){zc.ForceGLSL=e}get name(){return this._thinEffectLayer.name}set name(e){this._thinEffectLayer.name=e}get neutralColor(){return this._thinEffectLayer.neutralColor}set neutralColor(e){this._thinEffectLayer.neutralColor=e}get isEnabled(){return this._thinEffectLayer.isEnabled}set isEnabled(e){this._thinEffectLayer.isEnabled=e}get camera(){return this._thinEffectLayer.camera}get renderingGroupId(){return this._thinEffectLayer.renderingGroupId}set renderingGroupId(e){this._thinEffectLayer.renderingGroupId=e}get disableBoundingBoxesFromEffectLayer(){return this._thinEffectLayer.disableBoundingBoxesFromEffectLayer}set disableBoundingBoxesFromEffectLayer(e){this._thinEffectLayer.disableBoundingBoxesFromEffectLayer=e}get mainTexture(){return this._mainTexture}get _shaderLanguage(){return this._thinEffectLayer.shaderLanguage}get shaderLanguage(){return this._thinEffectLayer.shaderLanguage}setMaterialForRendering(e,t){this._thinEffectLayer.setMaterialForRendering(e,t)}getEffectIntensity(e){return this._thinEffectLayer.getEffectIntensity(e)}setEffectIntensity(e,t){this._thinEffectLayer.setEffectIntensity(e,t)}constructor(e,t,i=!1,r){this._mainTextureCreatedSize={width:0,height:0},this._maxSize=0,this._mainTextureDesiredSize={width:0,height:0},this._postProcesses=[],this._textures=[],this.uniqueId=gc.UniqueId,this.onDisposeObservable=new te,this.onBeforeRenderMainTextureObservable=new te,this.onBeforeComposeObservable=new te,this.onBeforeRenderMeshToEffect=new te,this.onAfterRenderMeshToEffect=new te,this.onAfterComposeObservable=new te,this.onSizeChangedObservable=new te,this._internalThinEffectLayer=!r,r||(r=new zc(e,t,i,!1,this._importShadersAsync.bind(this)),r.getEffectName=this.getEffectName.bind(this),r.isReady=this.isReady.bind(this),r._createMergeEffect=this._createMergeEffect.bind(this),r._createTextureAndPostProcesses=this._createTextureAndPostProcesses.bind(this),r._internalCompose=this._internalRender.bind(this),r._setEmissiveTextureAndColor=this._setEmissiveTextureAndColor.bind(this),r._numInternalDraws=this._numInternalDraws.bind(this),r._addCustomEffectDefines=this._addCustomEffectDefines.bind(this),r.hasMesh=this.hasMesh.bind(this),r.shouldRender=this.shouldRender.bind(this),r._shouldRenderMesh=this._shouldRenderMesh.bind(this),r._canRenderMesh=this._canRenderMesh.bind(this),r._useMeshMaterial=this._useMeshMaterial.bind(this)),this._thinEffectLayer=r,this.name=e,this._scene=t||Oe.LastCreatedScene,n._SceneComponentInitialization(this._scene),this._engine=this._scene.getEngine(),this._maxSize=this._engine.getCaps().maxTextureSize,this._scene.addEffectLayer(this),this._thinEffectLayer.onDisposeObservable.add(()=>{this.onDisposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderLayerObservable.add(()=>{this.onBeforeRenderMainTextureObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeComposeObservable.add(()=>{this.onBeforeComposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderMeshToEffect.add(s=>{this.onBeforeRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterRenderMeshToEffect.add(s=>{this.onAfterRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterComposeObservable.add(()=>{this.onAfterComposeObservable.notifyObservers(this)})}get _shadersLoaded(){return this._thinEffectLayer._shadersLoaded}set _shadersLoaded(e){this._thinEffectLayer._shadersLoaded=e}_numInternalDraws(){return this._internalThinEffectLayer?1:this._thinEffectLayer._numInternalDraws()}_init(e){this._effectLayerOptions={mainTextureRatio:.5,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,generateStencilBuffer:!1,...e},this._setMainTextureSize(),this._thinEffectLayer._init(e),this._createMainTexture(),this._createTextureAndPostProcesses()}_setMainTextureSize(){this._effectLayerOptions.mainTextureFixedSize?(this._mainTextureDesiredSize.width=this._effectLayerOptions.mainTextureFixedSize,this._mainTextureDesiredSize.height=this._effectLayerOptions.mainTextureFixedSize):(this._mainTextureDesiredSize.width=this._engine.getRenderWidth()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.height=this._engine.getRenderHeight()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.width=this._engine.needPOTTextures?Cn(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?Cn(this._mainTextureDesiredSize.height,this._maxSize):this._mainTextureDesiredSize.height),this._mainTextureDesiredSize.width=Math.floor(this._mainTextureDesiredSize.width),this._mainTextureDesiredSize.height=Math.floor(this._mainTextureDesiredSize.height)}_createMainTexture(){this._mainTexture=new Yr("EffectLayerMainRTT",{width:this._mainTextureDesiredSize.width,height:this._mainTextureDesiredSize.height},this._scene,{type:this._effectLayerOptions.mainTextureType,format:this._effectLayerOptions.mainTextureFormat,samplingMode:_e.TRILINEAR_SAMPLINGMODE,generateStencilBuffer:this._effectLayerOptions.generateStencilBuffer,existingObjectRenderer:this._thinEffectLayer.objectRenderer}),this._mainTexture.activeCamera=this._effectLayerOptions.camera,this._mainTexture.wrapU=_e.CLAMP_ADDRESSMODE,this._mainTexture.wrapV=_e.CLAMP_ADDRESSMODE,this._mainTexture.anisotropicFilteringLevel=1,this._mainTexture.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE),this._mainTexture.renderParticles=!1,this._mainTexture.renderList=null,this._mainTexture.ignoreCameraViewport=!0,this._mainTexture.onClearObservable.add(e=>{e.clear(this.neutralColor,!0,!0,!0)})}_addCustomEffectDefines(e){}_isReady(e,t,i){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsSubMeshReady(e,t,i):this._thinEffectLayer._isSubMeshReady(e,t,i)}async _importShadersAsync(){}_arePostProcessAndMergeReady(){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsLayerReady():this._thinEffectLayer.isLayerReady()}isLayerReady(){return this._arePostProcessAndMergeReady()&&this._mainTexture.isReady()}render(){this._thinEffectLayer.compose()&&(this._setMainTextureSize(),(this._mainTextureCreatedSize.width!==this._mainTextureDesiredSize.width||this._mainTextureCreatedSize.height!==this._mainTextureDesiredSize.height)&&this._mainTextureDesiredSize.width!==0&&this._mainTextureDesiredSize.height!==0&&(this.onSizeChangedObservable.notifyObservers(this),this._disposeTextureAndPostProcesses(),this._createMainTexture(),this._createTextureAndPostProcesses(),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height))}hasMesh(e){return this._internalThinEffectLayer?this._thinEffectLayer._internalHasMesh(e):this._thinEffectLayer.hasMesh(e)}shouldRender(){return this._internalThinEffectLayer?this._thinEffectLayer._internalShouldRender():this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._internalThinEffectLayer?!0:this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._internalThinEffectLayer?this._thinEffectLayer._internalCanRenderMesh(e,t):this._thinEffectLayer._canRenderMesh(e,t)}_shouldRenderEmissiveTextureForMesh(){return!0}_useMeshMaterial(e){return this._internalThinEffectLayer?!1:this._thinEffectLayer._useMeshMaterial(e)}_rebuild(){this._thinEffectLayer._rebuild()}_disposeTextureAndPostProcesses(){this._mainTexture.dispose();for(let e=0;e{throw Qe("EffectLayerSceneComponent")};P([F()],ta.prototype,"name",null);P([Bm()],ta.prototype,"neutralColor",null);P([F()],ta.prototype,"isEnabled",null);P([wV()],ta.prototype,"camera",null);P([F()],ta.prototype,"renderingGroupId",null);P([F()],ta.prototype,"disableBoundingBoxesFromEffectLayer",null)});var hq={};Fe(hq,{glowMapMergePixelShaderWGSL:()=>ave});var kw,dq,ave,uq=I(()=>{k();kw="glowMapMergePixelShader",dq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; +}`;x.ShadersStore[Vw]||(x.ShadersStore[Vw]=lq);sve={name:Vw,shader:lq}});var ko,zc,vM=I(()=>{mi();zt();Gi();Zi();Sh();ts();Qf();Eh();Ml();es();sP();ko=class n extends $r{constructor(e,t=null,i,r,s){super({...s,name:e,engine:t||Oe.LastCreatedEngine,useShaderStore:!0,useAsPostProcess:!0,fragmentShader:n.FragmentUrl,uniforms:n.Uniforms}),this.direction=i,this.kernel=r,this.textureWidth=0,this.textureHeight=0}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(pM(),mM)))):t.push(Promise.resolve().then(()=>(gM(),_M))),super._gatherImports(e,t)}bind(){super.bind(),this._drawWrapper.effect.setFloat2("screenSize",this.textureWidth,this.textureHeight),this._drawWrapper.effect.setVector2("direction",this.direction),this._drawWrapper.effect.setFloat("blurWidth",this.kernel)}};ko.FragmentUrl="glowBlurPostProcess";ko.Uniforms=["screenSize","direction","blurWidth"];zc=class n{get camera(){return this._options.camera}set camera(e){this._options.camera=e}get renderingGroupId(){return this._options.renderingGroupId}set renderingGroupId(e){this._options.renderingGroupId=e}get objectRenderer(){return this._objectRenderer}get shaderLanguage(){return this._shaderLanguage}setMaterialForRendering(e,t){if(this._objectRenderer.setMaterialForRendering(e,t),Array.isArray(e))for(let i=0;i{t=this._scene.getBoundingBoxRenderer().enabled,this._scene.getBoundingBoxRenderer().enabled=!this.disableBoundingBoxesFromEffectLayer&&t}),this._objectRenderer.onAfterRenderObservable.add(()=>{this._scene.getBoundingBoxRenderer().enabled=t})),this._objectRenderer.customIsReadyFunction=(i,r,s)=>{if((s||r===0)&&i.subMeshes)for(let a=0;a{this.onBeforeRenderLayerObservable.notifyObservers(this);let o,l=this._scene.getEngine();if(a.length){for(l.setColorWrite(!1),o=0;o4&&(c.push(L.MatricesIndicesExtraKind),c.push(L.MatricesWeightsExtraKind)),l.push("#define NUM_BONE_INFLUENCERS "+s.numBoneInfluencers);let E=s.skeleton;E&&E.isUsingTextureForMatrices?l.push("#define BONETEXTURE"):l.push("#define BonesPerMesh "+(E?E.bones.length+1:0)),s.numBoneInfluencers>0&&u.addCPUSkinningFallback(0,s)}else l.push("#define NUM_BONE_INFLUENCERS 0");let m=s.morphTargetManager?Il(s.morphTargetManager,l,c,s,!0,!1,!1,f,d,h):0;t&&(l.push("#define INSTANCES"),No(c),e.getRenderingMesh().hasThinInstances&&l.push("#define THIN_INSTANCES"));let _=s.bakedVertexAnimationManager;_&&_.isEnabled&&(l.push("#define BAKED_VERTEX_ANIMATION_TEXTURE"),t&&c.push("bakedVertexAnimationSettingsInstanced")),bl(o,this._scene,l),this._addCustomEffectDefines(l);let p=e._getDrawWrapper(void 0,!0),g=p.defines,v=l.join(` +`);if(g!==v){let E=["world","mBones","viewProjection","glowColor","morphTargetInfluences","morphTargetCount","boneTextureInfo","diffuseMatrix","emissiveMatrix","opacityMatrix","opacityIntensity","morphTargetTextureInfo","morphTargetTextureIndices","bakedVertexAnimationSettings","bakedVertexAnimationTextureSizeInverted","bakedVertexAnimationTime","bakedVertexAnimationTexture","glowIntensity"];Qn(E),p.setEffect(this._engine.createEffect("glowMapGeneration",c,E,["diffuseSampler","emissiveSampler","opacitySampler","boneSampler","morphTargets","bakedVertexAnimationTexture"],v,u,void 0,void 0,{maxSimultaneousMorphTargets:m},this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0}),v)}return p.effect.isReady()&&(this._dontCheckIfReady||!this._dontCheckIfReady&&this.isLayerReady())}_isSubMeshReady(e,t,i){return this._internalIsSubMeshReady(e,t,i)}async _importShadersAsync(){var e;this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(tq(),eq)),Promise.resolve().then(()=>(nq(),rq))]):await Promise.all([Promise.resolve().then(()=>(oq(),aq)),Promise.resolve().then(()=>(fq(),cq))]),(e=this._additionalImportShadersAsync)==null||e.call(this)}_internalIsLayerReady(){let e=!0;for(let i=0;iv.setMatrix("world",R)),(i.disableDepthWrite||i.forceDepthWrite)&&c.setDepthWrite(T),i.disableColorWrite&&c.setColorWrite(S),i.depthFunction!==0&&c.setDepthFunction(E)}else this._objectRenderer.resetRefreshCounter();this.onAfterRenderMeshToEffect.notifyObservers(r)}_useMeshMaterial(e){return!1}_rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._generateIndexBuffer()}dispose(){let e=this._vertexBuffers[L.PositionKind];e&&(e.dispose(),this._vertexBuffers[L.PositionKind]=null),this._indexBuffer&&(this._scene.getEngine()._releaseBuffer(this._indexBuffer),this._indexBuffer=null);for(let t of this._mergeDrawWrapper)t.dispose();this._mergeDrawWrapper=[],this._objectRenderer.dispose(),this.onDisposeObservable.notifyObservers(this),this.onDisposeObservable.clear(),this.onBeforeRenderLayerObservable.clear(),this.onBeforeComposeObservable.clear(),this.onBeforeRenderMeshToEffect.clear(),this.onAfterRenderMeshToEffect.clear(),this.onAfterComposeObservable.clear()}};zc.ForceGLSL=!1});var ta,Gw=I(()=>{Wt();kt();wi();mi();Gi();Xr();wf();Sn();Eo();vM();Hx();ta=class n{get _shouldRender(){return this._thinEffectLayer._shouldRender}set _shouldRender(e){this._thinEffectLayer._shouldRender=e}get _emissiveTextureAndColor(){return this._thinEffectLayer._emissiveTextureAndColor}set _emissiveTextureAndColor(e){this._thinEffectLayer._emissiveTextureAndColor=e}get _effectIntensity(){return this._thinEffectLayer._effectIntensity}set _effectIntensity(e){this._thinEffectLayer._effectIntensity=e}static get ForceGLSL(){return zc.ForceGLSL}static set ForceGLSL(e){zc.ForceGLSL=e}get name(){return this._thinEffectLayer.name}set name(e){this._thinEffectLayer.name=e}get neutralColor(){return this._thinEffectLayer.neutralColor}set neutralColor(e){this._thinEffectLayer.neutralColor=e}get isEnabled(){return this._thinEffectLayer.isEnabled}set isEnabled(e){this._thinEffectLayer.isEnabled=e}get camera(){return this._thinEffectLayer.camera}get renderingGroupId(){return this._thinEffectLayer.renderingGroupId}set renderingGroupId(e){this._thinEffectLayer.renderingGroupId=e}get disableBoundingBoxesFromEffectLayer(){return this._thinEffectLayer.disableBoundingBoxesFromEffectLayer}set disableBoundingBoxesFromEffectLayer(e){this._thinEffectLayer.disableBoundingBoxesFromEffectLayer=e}get mainTexture(){return this._mainTexture}get _shaderLanguage(){return this._thinEffectLayer.shaderLanguage}get shaderLanguage(){return this._thinEffectLayer.shaderLanguage}setMaterialForRendering(e,t){this._thinEffectLayer.setMaterialForRendering(e,t)}getEffectIntensity(e){return this._thinEffectLayer.getEffectIntensity(e)}setEffectIntensity(e,t){this._thinEffectLayer.setEffectIntensity(e,t)}constructor(e,t,i=!1,r){this._mainTextureCreatedSize={width:0,height:0},this._maxSize=0,this._mainTextureDesiredSize={width:0,height:0},this._postProcesses=[],this._textures=[],this.uniqueId=gc.UniqueId,this.onDisposeObservable=new te,this.onBeforeRenderMainTextureObservable=new te,this.onBeforeComposeObservable=new te,this.onBeforeRenderMeshToEffect=new te,this.onAfterRenderMeshToEffect=new te,this.onAfterComposeObservable=new te,this.onSizeChangedObservable=new te,this._internalThinEffectLayer=!r,r||(r=new zc(e,t,i,!1,this._importShadersAsync.bind(this)),r.getEffectName=this.getEffectName.bind(this),r.isReady=this.isReady.bind(this),r._createMergeEffect=this._createMergeEffect.bind(this),r._createTextureAndPostProcesses=this._createTextureAndPostProcesses.bind(this),r._internalCompose=this._internalRender.bind(this),r._setEmissiveTextureAndColor=this._setEmissiveTextureAndColor.bind(this),r._numInternalDraws=this._numInternalDraws.bind(this),r._addCustomEffectDefines=this._addCustomEffectDefines.bind(this),r.hasMesh=this.hasMesh.bind(this),r.shouldRender=this.shouldRender.bind(this),r._shouldRenderMesh=this._shouldRenderMesh.bind(this),r._canRenderMesh=this._canRenderMesh.bind(this),r._useMeshMaterial=this._useMeshMaterial.bind(this)),this._thinEffectLayer=r,this.name=e,this._scene=t||Oe.LastCreatedScene,n._SceneComponentInitialization(this._scene),this._engine=this._scene.getEngine(),this._maxSize=this._engine.getCaps().maxTextureSize,this._scene.addEffectLayer(this),this._thinEffectLayer.onDisposeObservable.add(()=>{this.onDisposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderLayerObservable.add(()=>{this.onBeforeRenderMainTextureObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeComposeObservable.add(()=>{this.onBeforeComposeObservable.notifyObservers(this)}),this._thinEffectLayer.onBeforeRenderMeshToEffect.add(s=>{this.onBeforeRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterRenderMeshToEffect.add(s=>{this.onAfterRenderMeshToEffect.notifyObservers(s)}),this._thinEffectLayer.onAfterComposeObservable.add(()=>{this.onAfterComposeObservable.notifyObservers(this)})}get _shadersLoaded(){return this._thinEffectLayer._shadersLoaded}set _shadersLoaded(e){this._thinEffectLayer._shadersLoaded=e}_numInternalDraws(){return this._internalThinEffectLayer?1:this._thinEffectLayer._numInternalDraws()}_init(e){this._effectLayerOptions={mainTextureRatio:.5,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,generateStencilBuffer:!1,...e},this._setMainTextureSize(),this._thinEffectLayer._init(e),this._createMainTexture(),this._createTextureAndPostProcesses()}_setMainTextureSize(){this._effectLayerOptions.mainTextureFixedSize?(this._mainTextureDesiredSize.width=this._effectLayerOptions.mainTextureFixedSize,this._mainTextureDesiredSize.height=this._effectLayerOptions.mainTextureFixedSize):(this._mainTextureDesiredSize.width=this._engine.getRenderWidth()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.height=this._engine.getRenderHeight()*this._effectLayerOptions.mainTextureRatio,this._mainTextureDesiredSize.width=this._engine.needPOTTextures?Cn(this._mainTextureDesiredSize.width,this._maxSize):this._mainTextureDesiredSize.width,this._mainTextureDesiredSize.height=this._engine.needPOTTextures?Cn(this._mainTextureDesiredSize.height,this._maxSize):this._mainTextureDesiredSize.height),this._mainTextureDesiredSize.width=Math.floor(this._mainTextureDesiredSize.width),this._mainTextureDesiredSize.height=Math.floor(this._mainTextureDesiredSize.height)}_createMainTexture(){this._mainTexture=new Yr("EffectLayerMainRTT",{width:this._mainTextureDesiredSize.width,height:this._mainTextureDesiredSize.height},this._scene,{type:this._effectLayerOptions.mainTextureType,format:this._effectLayerOptions.mainTextureFormat,samplingMode:_e.TRILINEAR_SAMPLINGMODE,generateStencilBuffer:this._effectLayerOptions.generateStencilBuffer,existingObjectRenderer:this._thinEffectLayer.objectRenderer}),this._mainTexture.activeCamera=this._effectLayerOptions.camera,this._mainTexture.wrapU=_e.CLAMP_ADDRESSMODE,this._mainTexture.wrapV=_e.CLAMP_ADDRESSMODE,this._mainTexture.anisotropicFilteringLevel=1,this._mainTexture.updateSamplingMode(_e.BILINEAR_SAMPLINGMODE),this._mainTexture.renderParticles=!1,this._mainTexture.renderList=null,this._mainTexture.ignoreCameraViewport=!0,this._mainTexture.onClearObservable.add(e=>{e.clear(this.neutralColor,!0,!0,!0)})}_addCustomEffectDefines(e){}_isReady(e,t,i){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsSubMeshReady(e,t,i):this._thinEffectLayer._isSubMeshReady(e,t,i)}async _importShadersAsync(){}_arePostProcessAndMergeReady(){return this._internalThinEffectLayer?this._thinEffectLayer._internalIsLayerReady():this._thinEffectLayer.isLayerReady()}isLayerReady(){return this._arePostProcessAndMergeReady()&&this._mainTexture.isReady()}render(){this._thinEffectLayer.compose()&&(this._setMainTextureSize(),(this._mainTextureCreatedSize.width!==this._mainTextureDesiredSize.width||this._mainTextureCreatedSize.height!==this._mainTextureDesiredSize.height)&&this._mainTextureDesiredSize.width!==0&&this._mainTextureDesiredSize.height!==0&&(this.onSizeChangedObservable.notifyObservers(this),this._disposeTextureAndPostProcesses(),this._createMainTexture(),this._createTextureAndPostProcesses(),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height))}hasMesh(e){return this._internalThinEffectLayer?this._thinEffectLayer._internalHasMesh(e):this._thinEffectLayer.hasMesh(e)}shouldRender(){return this._internalThinEffectLayer?this._thinEffectLayer._internalShouldRender():this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._internalThinEffectLayer?!0:this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._internalThinEffectLayer?this._thinEffectLayer._internalCanRenderMesh(e,t):this._thinEffectLayer._canRenderMesh(e,t)}_shouldRenderEmissiveTextureForMesh(){return!0}_useMeshMaterial(e){return this._internalThinEffectLayer?!1:this._thinEffectLayer._useMeshMaterial(e)}_rebuild(){this._thinEffectLayer._rebuild()}_disposeTextureAndPostProcesses(){this._mainTexture.dispose();for(let e=0;e{throw Qe("EffectLayerSceneComponent")};P([F()],ta.prototype,"name",null);P([Bm()],ta.prototype,"neutralColor",null);P([F()],ta.prototype,"isEnabled",null);P([wV()],ta.prototype,"camera",null);P([F()],ta.prototype,"renderingGroupId",null);P([F()],ta.prototype,"disableBoundingBoxesFromEffectLayer",null)});var hq={};Fe(hq,{glowMapMergePixelShaderWGSL:()=>ave});var kw,dq,ave,uq=I(()=>{k();kw="glowMapMergePixelShader",dq=`varying vUV: vec2f;var textureSamplerSampler: sampler;var textureSampler: texture_2d; #ifdef EMISSIVE var textureSampler2Sampler: sampler;var textureSampler2: texture_2d; #endif @@ -23748,8 +23748,8 @@ void main(void) { #define CUSTOM_VERTEX_MAIN_BEGIN vUV=position*madd+madd;gl_Position=vec4(position,0.0,1.0); #define CUSTOM_VERTEX_MAIN_END -}`;x.ShadersStore[zw]||(x.ShadersStore[zw]=Sq);cve={name:zw,shader:Sq}});var Ol,xq=I(()=>{ke();Zi();ts();SP();gM();zt();gO();Ol=class n extends zc{set blurHorizontalSize(e){this._horizontalBlurPostprocess.kernel=e,this._options.blurHorizontalSize=e}set blurVerticalSize(e){this._verticalBlurPostprocess.kernel=e,this._options.blurVerticalSize=e}get blurHorizontalSize(){return this._horizontalBlurPostprocess.kernel}get blurVerticalSize(){return this._verticalBlurPostprocess.kernel}get stencilReference(){return this._instanceGlowingMeshStencilReference<<8-this.numStencilBits}constructor(e,t,i,r=!1){super(e,t,i!==void 0?!!i.forceGLSL:!1),this.innerGlow=!0,this.outerGlow=!0,this._instanceGlowingMeshStencilReference=n.GlowingMeshStencilReference++,this._meshes={},this._excludedMeshes={},this._mainObjectRendererRenderPassId=-1,this.numStencilBits=8,this.neutralColor=n.NeutralColor,this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,forceGLSL:!1,mainTextureType:0,mainTextureFormat:5,isStroke:!1,...i},this._init(this._options),this._shouldRender=!1,r&&this._createTextureAndPostProcesses()}getClassName(){return"HighlightLayer"}async _importShadersAsync(){this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(uq(),hq)),Promise.resolve().then(()=>(_q(),pq)),Promise.resolve().then(()=>(mM(),uM))]):await Promise.all([Promise.resolve().then(()=>(Eq(),vq)),Promise.resolve().then(()=>(Aq(),Tq)),Promise.resolve().then(()=>(_M(),pM))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[L.PositionKind],["offset"],["textureSampler"],this._options.isStroke?`#define STROKE -`:void 0,void 0,void 0,void 0,void 0,this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0})}_createTextureAndPostProcesses(){this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new uc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new ko("HighlightLayerHBP",this._scene.getEngine(),new we(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new ko("HighlightLayerVBP",this._scene.getEngine(),new we(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Rs("HighlightLayerHBP",this._scene.getEngine(),new we(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new Rs("HighlightLayerVBP",this._scene.getEngine(),new we(0,1),this._options.blurVerticalSize/2),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess])}needStencil(){return!0}isReady(e,t){let i=e.getMaterial(),r=e.getRenderingMesh();if(!i||!r||!this._meshes)return!1;let s=null,a=this._meshes[r.uniqueId];return a&&a.glowEmissiveOnly&&i&&(s=i.emissiveTexture),super._isSubMeshReady(e,t,s)}_canRenderMesh(e,t){return!0}_internalCompose(e,t){this.bindTexturesForCompose(e);let i=this._engine;i.cacheStencilState(),i.setStencilOperationPass(7681),i.setStencilOperationFail(7680),i.setStencilOperationDepthFail(7680),i.setStencilMask(0),i.setStencilBuffer(!0),i.setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits),i.setStencilFunctionMask(255-((1<<8-this.numStencilBits)-1)),this.outerGlow&&t===0&&(e.setFloat("offset",0),i.setStencilFunction(517),i.drawElementsType(Se.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Se.TriangleFillMode,0,6)),i.restoreStencilState()}_setEmissiveTextureAndColor(e,t,i){let r=this._meshes[e.uniqueId];r?this._emissiveTextureAndColor.color.set(r.color.r,r.color.g,r.color.b,1):this._emissiveTextureAndColor.color.set(this.neutralColor.r,this.neutralColor.g,this.neutralColor.b,this.neutralColor.a),r&&r.glowEmissiveOnly&&i?(this._emissiveTextureAndColor.texture=i.emissiveTexture,this._emissiveTextureAndColor.color.set(1,1,1,1)):this._emissiveTextureAndColor.texture=null}shouldRender(){return!!(this._meshes&&super.shouldRender())}_shouldRenderMesh(e){return this._excludedMeshes&&this._excludedMeshes[e.uniqueId]?!1:super.hasMesh(e)}_addCustomEffectDefines(e){e.push("#define HIGHLIGHT")}addExcludedMesh(e){if(!this._excludedMeshes)return;if(!this._excludedMeshes[e.uniqueId]){let i={mesh:e,beforeBind:null,afterRender:null,stencilState:!1};i.beforeBind=e.onBeforeBindObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||(i.stencilState=r.getEngine().getStencilBuffer(),r.getEngine().setStencilBuffer(!1))}),i.afterRender=e.onAfterRenderObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||r.getEngine().setStencilBuffer(i.stencilState)}),this._excludedMeshes[e.uniqueId]=i}}removeExcludedMesh(e){if(!this._excludedMeshes)return;let t=this._excludedMeshes[e.uniqueId];t&&(t.beforeBind&&e.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&e.onAfterRenderObservable.remove(t.afterRender)),this._excludedMeshes[e.uniqueId]=null}hasMesh(e){return!this._meshes||!super.hasMesh(e)?!1:!!this._meshes[e.uniqueId]}addMesh(e,t,i=!1){if(!this._meshes)return;let r=this._meshes[e.uniqueId];r?r.color=t:(this._meshes[e.uniqueId]={mesh:e,color:t,observerHighlight:e.onBeforeBindObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&(this._excludedMeshes&&this._excludedMeshes[s.uniqueId]?this._defaultStencilReference(s):s.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits))}),observerDefault:e.onAfterRenderObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&this._defaultStencilReference(s)}),glowEmissiveOnly:i},e.onDisposeObservable.add(()=>{this._disposeMesh(e)})),this._shouldRender=!0}removeMesh(e){if(!this._meshes)return;let t=this._meshes[e.uniqueId];t&&(t.observerHighlight&&e.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&e.onAfterRenderObservable.remove(t.observerDefault),delete this._meshes[e.uniqueId]),this._shouldRender=!1;for(let i in this._meshes)if(this._meshes[i]){this._shouldRender=!0;break}}removeAllMeshes(){if(this._meshes){for(let e in this._meshes)if(Object.prototype.hasOwnProperty.call(this._meshes,e)){let t=this._meshes[e];t&&this.removeMesh(t.mesh)}}}_defaultStencilReference(e){e.getScene().getEngine().setStencilFunctionReference(n.NormalMeshStencilReference<<8-this.numStencilBits)}_disposeMesh(e){this.removeMesh(e),this.removeExcludedMesh(e)}dispose(){if(this._meshes){for(let e in this._meshes){let t=this._meshes[e];t&&t.mesh&&(t.observerHighlight&&t.mesh.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&t.mesh.onAfterRenderObservable.remove(t.observerDefault))}this._meshes=null}if(this._excludedMeshes){for(let e in this._excludedMeshes){let t=this._excludedMeshes[e];t&&(t.beforeBind&&t.mesh.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&t.mesh.onAfterRenderObservable.remove(t.afterRender))}this._excludedMeshes=null}super.dispose()}};Ol.EffectName="HighlightLayer";Ol.NeutralColor=new ft(0,0,0,0);Ol.GlowingMeshStencilReference=2;Ol.NormalMeshStencilReference=1});var vM,Ta,Rq=I(()=>{Wt();kt();mi();Ys();ke();Xr();wf();hc();AP();vO();Gw();Lt();$i();zt();xq();Dr();Eo();gM();ti.prototype.getHighlightLayerByName=function(n){var e;for(let t=0;t<((e=this.effectLayers)==null?void 0:e.length);t++)if(this.effectLayers[t].name===n&&this.effectLayers[t].getEffectName()===Ta.EffectName)return this.effectLayers[t];return null};vM=class extends Ci{constructor(e,t,i,r,s=null,a=_e.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:ko.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,ko.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new ko(e,o,t,i,c):void 0,...c}),this.direction=t,this.kernel=i,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this.width,this._effectWrapper.textureHeight=this.height})}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(mM(),uM)))):t.push(Promise.resolve().then(()=>(_M(),pM))),super._gatherImports(e,t)}},Ta=class n extends ta{static get NeutralColor(){return Ol.NeutralColor}static set NeutralColor(e){Ol.NeutralColor=e}get innerGlow(){return this._thinEffectLayer.innerGlow}set innerGlow(e){this._thinEffectLayer.innerGlow=e}get outerGlow(){return this._thinEffectLayer.outerGlow}set outerGlow(e){this._thinEffectLayer.outerGlow=e}set blurHorizontalSize(e){this._thinEffectLayer.blurHorizontalSize=e}set blurVerticalSize(e){this._thinEffectLayer.blurVerticalSize=e}get blurHorizontalSize(){return this._thinEffectLayer.blurHorizontalSize}get blurVerticalSize(){return this._thinEffectLayer.blurVerticalSize}get numStencilBits(){return this._thinEffectLayer.numStencilBits}set numStencilBits(e){this._thinEffectLayer.numStencilBits=e}get stencilReference(){return this._thinEffectLayer.stencilReference}constructor(e,t,i){super(e,t,i!==void 0?!!i.forceGLSL:!1,new Ol(e,t,i)),this.onBeforeBlurObservable=new te,this.onAfterBlurObservable=new te,this._engine.isStencilEnable||ee.Warn("Rendering the Highlight Layer requires the stencil to be active on the canvas. var engine = new Engine(canvas, antialias, { stencil: true }"),this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,forceGLSL:!1,isStroke:!1,generateStencilBuffer:!1,...i},this._init(this._options),this._shouldRender=!1}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._thinEffectLayer._createMergeEffect()}_createTextureAndPostProcesses(){let e=this._mainTextureDesiredSize.width*this._options.blurTextureSizeRatio,t=this._mainTextureDesiredSize.height*this._options.blurTextureSizeRatio;e=this._engine.needPOTTextures?Cn(e,this._maxSize):e,t=this._engine.needPOTTextures?Cn(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new Yr("HighlightLayerBlurRTT",{width:e,height:t},this._scene,!1,!0,i),this._blurTexture.wrapU=_e.CLAMP_ADDRESSMODE,this._blurTexture.wrapV=_e.CLAMP_ADDRESSMODE,this._blurTexture.anisotropicFilteringLevel=16,this._blurTexture.updateSamplingMode(_e.TRILINEAR_SAMPLINGMODE),this._blurTexture.renderParticles=!1,this._blurTexture.ignoreCameraViewport=!0,this._textures=[this._blurTexture],this._thinEffectLayer.bindTexturesForCompose=r=>{r.setTexture("textureSampler",this._blurTexture)},this._thinEffectLayer._createTextureAndPostProcesses(),this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new Th("HighlightLayerPPP",{size:this._options.blurTextureSizeRatio,samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._downSamplePostprocess.externalTextureSamplerBinding=!0,this._downSamplePostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._horizontalBlurPostprocess=new vM("HighlightLayerHBP",new we(1,0),this._options.blurHorizontalSize,{samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[1]}),this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._verticalBlurPostprocess=new vM("HighlightLayerVBP",new we(0,1),this._options.blurVerticalSize,{samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[2]}),this._verticalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new qa("HighlightLayerHBP",new we(1,0),this._options.blurHorizontalSize/2,{size:{width:e,height:t},samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i,effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._horizontalBlurPostprocess.width=e,this._horizontalBlurPostprocess.height=t,this._horizontalBlurPostprocess.externalTextureSamplerBinding=!0,this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._verticalBlurPostprocess=new qa("HighlightLayerVBP",new we(0,1),this._options.blurVerticalSize/2,{size:{width:e,height:t},samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i}),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess]),this._mainTexture.onAfterUnbindObservable.add(()=>{this.onBeforeBlurObservable.notifyObservers(this);let r=this._blurTexture.renderTarget;r&&(this._scene.postProcessManager.directRender(this._postProcesses,r,!0),this._engine.unBindFramebuffer(r,!0)),this.onAfterBlurObservable.notifyObservers(this)}),this._postProcesses.map(r=>{r.autoClear=!1}),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height}needStencil(){return this._thinEffectLayer.needStencil()}isReady(e,t){return this._thinEffectLayer.isReady(e,t)}_internalRender(e,t){this._thinEffectLayer._internalCompose(e,t)}shouldRender(){return this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._thinEffectLayer._canRenderMesh(e,t)}_addCustomEffectDefines(e){this._thinEffectLayer._addCustomEffectDefines(e)}_setEmissiveTextureAndColor(e,t,i){this._thinEffectLayer._setEmissiveTextureAndColor(e,t,i)}addExcludedMesh(e){this._thinEffectLayer.addExcludedMesh(e)}removeExcludedMesh(e){this._thinEffectLayer.removeExcludedMesh(e)}hasMesh(e){return this._thinEffectLayer.hasMesh(e)}addMesh(e,t,i=!1){this._thinEffectLayer.addMesh(e,t,i)}removeMesh(e){this._thinEffectLayer.removeMesh(e)}removeAllMeshes(){this._thinEffectLayer.removeAllMeshes()}_disposeMesh(e){this._thinEffectLayer._disposeMesh(e)}getClassName(){return"HighlightLayer"}serialize(){let e=nt.Serialize(this);e.customType="BABYLON.HighlightLayer",e.meshes=[];let t=this._thinEffectLayer._meshes;if(t)for(let r in t){let s=t[r];s&&e.meshes.push({glowEmissiveOnly:s.glowEmissiveOnly,color:s.color.asArray(),meshId:s.mesh.id})}e.excludedMeshes=[];let i=this._thinEffectLayer._excludedMeshes;if(i)for(let r in i){let s=i[r];s&&e.excludedMeshes.push(s.mesh.id)}return e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{Rl();Wm();Gw();Gi();UO();Ob(it.NAME_EFFECTLAYER,(n,e,t,i)=>{if(n.effectLayers){t.effectLayers||(t.effectLayers=[]);for(let r=0;r0){this._previousStencilState=this._engine.getStencilBuffer();for(let r of i)if(r.shouldRender()&&(!r.camera||r.camera.cameraRigMode===gt.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==gt.RIG_MODE_NONE&&r.camera._rigCameras.indexOf(e)>-1)){this._renderEffects=!0,this._needStencil=this._needStencil||r.needStencil();let s=r._mainTexture;s._shouldRender()&&(this.scene.incrementRenderId(),s.render(!1,!1),t=!0)}this.scene.incrementRenderId()}return t}_setStencil(){this._needStencil&&this._engine.setStencilBuffer(!0)}_setStencilBack(){this._needStencil&&this._engine.setStencilBuffer(this._previousStencilState)}_draw(e){if(this._renderEffects){this._engine.setDepthBuffer(!1);let t=this.scene.effectLayers;for(let i=0;i{let e=n._getComponent(it.NAME_EFFECTLAYER);e||(e=new Xw(n),n._addComponent(e))}});function Mq(n,e,t=()=>!0,i=r=>[r]){let r=new Ta("ai3d-pick-highlight",n),s=new Ee(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let f of a)f.isDisposed()||(f.renderOutline=!1,f.outlineWidth=0);a=[]}function l(f){a=f.filter(d=>!d.isDisposed());for(let d of a)r.addMesh(d,s),d.renderOutline=!0,d.outlineColor=s,d.outlineWidth=.045}let c=n.onPointerObservable.add(f=>{var _;if(f.type!==at.POINTERDOWN)return;let d=f.event,h=d.clientX,u=d.clientY,m=f.pickInfo;if(m!=null&&m.hit&&m.pickedMesh){if(t()){let p=i(m.pickedMesh).filter(v=>!v.isDisposed());a.length===p.length&&a.every((v,T)=>v===p[T])||(o(),l(p))}else o();e({mesh:m.pickedMesh,pickedPoint:(_=m.pickedPoint)!=null?_:null,screenX:h,screenY:u})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:u})});return()=>{o(),r.dispose(),n.onPointerObservable.remove(c)}}var Iq=I(()=>{"use strict";yo();zt();Rq();bq()});function _ve(n,e,t){let i=Ee.FromHexString(e),r=new We(n,t);return r.emissiveColor=i,r.diffuseColor=Ee.Black(),r.specularColor=Ee.Black(),r.backFaceCulling=!1,r}function gve(n){let e=new We("gizmo-origin-mat",n);return e.emissiveColor=new Ee(.72,.78,.86),e.diffuseColor=Ee.Black(),e.specularColor=Ee.Black(),e}var fve,EM,dve,Kw,hve,uve,Yw,mve,pve,SM,yq=I(()=>{"use strict";Ys();uR();mR();ke();zt();Nm();FL();Gc();fve=.32,EM=1.05,dve=.075,Kw=.28,hve=.22,uve=.16,Yw=(EM+Kw)*.42,mve=new b(Yw,Yw,Yw),pve=[{name:"x",color:"#e74c3c",rot:new b(0,0,-Math.PI/2),dir:new b(1,0,0)},{name:"y",color:"#2ecc71",rot:new b(0,0,0),dir:new b(0,1,0)},{name:"z",color:"#3498db",rot:new b(Math.PI/2,0,0),dir:new b(0,0,1)}];SM=class{constructor(e,t){this.engine=e,this.scene=new ti(e),this.scene.clearColor=new ft(0,0,0,0),this.scene.autoClear=!1,this.camera=new Si("gizmo-cam",0,0,4.1,mve,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new va("gizmo-light",new b(0,1,.5),this.scene);let i=xs.CreateSphere("gizmo-origin",{diameter:uve,segments:16},this.scene);i.material=gve(this.scene);for(let{name:s,color:a,rot:o,dir:l}of pve){let c=_ve(`gizmo-${s}-mat`,a,this.scene),f=xs.CreateCylinder(`gizmo-${s}-shaft`,{height:EM,diameter:dve,tessellation:8},this.scene);f.material=c,f.position=l.scale(EM/2),f.rotation=o;let d=xs.CreateCylinder(`gizmo-${s}-head`,{height:Kw,diameterTop:0,diameterBottom:hve,tessellation:8},this.scene);d.material=c;let h=EM+Kw/2;d.position=l.scale(h),d.rotation=o}let r=fve;this.viewport=new xo(.02,.03,r,r),this.camera.viewport=this.viewport,this.syncWith(t)}syncWith(e){this.camera.alpha=e.alpha,this.camera.beta=e.beta}render(){let e=this.engine.getRenderWidth(),t=this.engine.getRenderHeight(),i=this.viewport.x*e,r=this.viewport.y*t,s=this.viewport.width*e,a=this.viewport.height*t;this.engine.enableScissor(i,r,s,a),this.engine.clear(null,!1,!0,!0),this.scene.render(),this.engine.disableScissor()}dispose(){this.scene.dispose()}}});var Zw={};Fe(Zw,{boundingBoxRendererVertexShaderWGSL:()=>vve});var jw,Cq,vve,qw=I(()=>{k();jw="boundingBoxRendererVertexShader",Cq=`attribute position: vec3f;uniform world: mat4x4f;uniform viewProjection: mat4x4f; +}`;x.ShadersStore[zw]||(x.ShadersStore[zw]=Sq);cve={name:zw,shader:Sq}});var Ol,xq=I(()=>{ke();Zi();ts();SP();vM();zt();gO();Ol=class n extends zc{set blurHorizontalSize(e){this._horizontalBlurPostprocess.kernel=e,this._options.blurHorizontalSize=e}set blurVerticalSize(e){this._verticalBlurPostprocess.kernel=e,this._options.blurVerticalSize=e}get blurHorizontalSize(){return this._horizontalBlurPostprocess.kernel}get blurVerticalSize(){return this._verticalBlurPostprocess.kernel}get stencilReference(){return this._instanceGlowingMeshStencilReference<<8-this.numStencilBits}constructor(e,t,i,r=!1){super(e,t,i!==void 0?!!i.forceGLSL:!1),this.innerGlow=!0,this.outerGlow=!0,this._instanceGlowingMeshStencilReference=n.GlowingMeshStencilReference++,this._meshes={},this._excludedMeshes={},this._mainObjectRendererRenderPassId=-1,this.numStencilBits=8,this.neutralColor=n.NeutralColor,this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,forceGLSL:!1,mainTextureType:0,mainTextureFormat:5,isStroke:!1,...i},this._init(this._options),this._shouldRender=!1,r&&this._createTextureAndPostProcesses()}getClassName(){return"HighlightLayer"}async _importShadersAsync(){this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(uq(),hq)),Promise.resolve().then(()=>(_q(),pq)),Promise.resolve().then(()=>(pM(),mM))]):await Promise.all([Promise.resolve().then(()=>(Eq(),vq)),Promise.resolve().then(()=>(Aq(),Tq)),Promise.resolve().then(()=>(gM(),_M))]),await super._importShadersAsync()}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._engine.createEffect("glowMapMerge",[L.PositionKind],["offset"],["textureSampler"],this._options.isStroke?`#define STROKE +`:void 0,void 0,void 0,void 0,void 0,this._shaderLanguage,this._shadersLoaded?void 0:async()=>{await this._importShadersAsync(),this._shadersLoaded=!0})}_createTextureAndPostProcesses(){this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new uc("HighlightLayerPPP",this._scene.getEngine()),this._horizontalBlurPostprocess=new ko("HighlightLayerHBP",this._scene.getEngine(),new we(1,0),this._options.blurHorizontalSize),this._verticalBlurPostprocess=new ko("HighlightLayerVBP",this._scene.getEngine(),new we(0,1),this._options.blurVerticalSize),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new Rs("HighlightLayerHBP",this._scene.getEngine(),new we(1,0),this._options.blurHorizontalSize/2),this._verticalBlurPostprocess=new Rs("HighlightLayerVBP",this._scene.getEngine(),new we(0,1),this._options.blurVerticalSize/2),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess])}needStencil(){return!0}isReady(e,t){let i=e.getMaterial(),r=e.getRenderingMesh();if(!i||!r||!this._meshes)return!1;let s=null,a=this._meshes[r.uniqueId];return a&&a.glowEmissiveOnly&&i&&(s=i.emissiveTexture),super._isSubMeshReady(e,t,s)}_canRenderMesh(e,t){return!0}_internalCompose(e,t){this.bindTexturesForCompose(e);let i=this._engine;i.cacheStencilState(),i.setStencilOperationPass(7681),i.setStencilOperationFail(7680),i.setStencilOperationDepthFail(7680),i.setStencilMask(0),i.setStencilBuffer(!0),i.setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits),i.setStencilFunctionMask(255-((1<<8-this.numStencilBits)-1)),this.outerGlow&&t===0&&(e.setFloat("offset",0),i.setStencilFunction(517),i.drawElementsType(Se.TriangleFillMode,0,6)),this.innerGlow&&t===1&&(e.setFloat("offset",1),i.setStencilFunction(514),i.drawElementsType(Se.TriangleFillMode,0,6)),i.restoreStencilState()}_setEmissiveTextureAndColor(e,t,i){let r=this._meshes[e.uniqueId];r?this._emissiveTextureAndColor.color.set(r.color.r,r.color.g,r.color.b,1):this._emissiveTextureAndColor.color.set(this.neutralColor.r,this.neutralColor.g,this.neutralColor.b,this.neutralColor.a),r&&r.glowEmissiveOnly&&i?(this._emissiveTextureAndColor.texture=i.emissiveTexture,this._emissiveTextureAndColor.color.set(1,1,1,1)):this._emissiveTextureAndColor.texture=null}shouldRender(){return!!(this._meshes&&super.shouldRender())}_shouldRenderMesh(e){return this._excludedMeshes&&this._excludedMeshes[e.uniqueId]?!1:super.hasMesh(e)}_addCustomEffectDefines(e){e.push("#define HIGHLIGHT")}addExcludedMesh(e){if(!this._excludedMeshes)return;if(!this._excludedMeshes[e.uniqueId]){let i={mesh:e,beforeBind:null,afterRender:null,stencilState:!1};i.beforeBind=e.onBeforeBindObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||(i.stencilState=r.getEngine().getStencilBuffer(),r.getEngine().setStencilBuffer(!1))}),i.afterRender=e.onAfterRenderObservable.add(r=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||r.getEngine().setStencilBuffer(i.stencilState)}),this._excludedMeshes[e.uniqueId]=i}}removeExcludedMesh(e){if(!this._excludedMeshes)return;let t=this._excludedMeshes[e.uniqueId];t&&(t.beforeBind&&e.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&e.onAfterRenderObservable.remove(t.afterRender)),this._excludedMeshes[e.uniqueId]=null}hasMesh(e){return!this._meshes||!super.hasMesh(e)?!1:!!this._meshes[e.uniqueId]}addMesh(e,t,i=!1){if(!this._meshes)return;let r=this._meshes[e.uniqueId];r?r.color=t:(this._meshes[e.uniqueId]={mesh:e,color:t,observerHighlight:e.onBeforeBindObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&(this._excludedMeshes&&this._excludedMeshes[s.uniqueId]?this._defaultStencilReference(s):s.getScene().getEngine().setStencilFunctionReference(this._instanceGlowingMeshStencilReference<<8-this.numStencilBits))}),observerDefault:e.onAfterRenderObservable.add(s=>{this._mainObjectRendererRenderPassId!==-1&&this._mainObjectRendererRenderPassId!==this._engine.currentRenderPassId||this.isEnabled&&this._defaultStencilReference(s)}),glowEmissiveOnly:i},e.onDisposeObservable.add(()=>{this._disposeMesh(e)})),this._shouldRender=!0}removeMesh(e){if(!this._meshes)return;let t=this._meshes[e.uniqueId];t&&(t.observerHighlight&&e.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&e.onAfterRenderObservable.remove(t.observerDefault),delete this._meshes[e.uniqueId]),this._shouldRender=!1;for(let i in this._meshes)if(this._meshes[i]){this._shouldRender=!0;break}}removeAllMeshes(){if(this._meshes){for(let e in this._meshes)if(Object.prototype.hasOwnProperty.call(this._meshes,e)){let t=this._meshes[e];t&&this.removeMesh(t.mesh)}}}_defaultStencilReference(e){e.getScene().getEngine().setStencilFunctionReference(n.NormalMeshStencilReference<<8-this.numStencilBits)}_disposeMesh(e){this.removeMesh(e),this.removeExcludedMesh(e)}dispose(){if(this._meshes){for(let e in this._meshes){let t=this._meshes[e];t&&t.mesh&&(t.observerHighlight&&t.mesh.onBeforeBindObservable.remove(t.observerHighlight),t.observerDefault&&t.mesh.onAfterRenderObservable.remove(t.observerDefault))}this._meshes=null}if(this._excludedMeshes){for(let e in this._excludedMeshes){let t=this._excludedMeshes[e];t&&(t.beforeBind&&t.mesh.onBeforeBindObservable.remove(t.beforeBind),t.afterRender&&t.mesh.onAfterRenderObservable.remove(t.afterRender))}this._excludedMeshes=null}super.dispose()}};Ol.EffectName="HighlightLayer";Ol.NeutralColor=new ft(0,0,0,0);Ol.GlowingMeshStencilReference=2;Ol.NormalMeshStencilReference=1});var EM,Ta,Rq=I(()=>{Wt();kt();mi();Ys();ke();Xr();wf();hc();AP();vO();Gw();Lt();$i();zt();xq();Dr();Eo();vM();ti.prototype.getHighlightLayerByName=function(n){var e;for(let t=0;t<((e=this.effectLayers)==null?void 0:e.length);t++)if(this.effectLayers[t].name===n&&this.effectLayers[t].getEffectName()===Ta.EffectName)return this.effectLayers[t];return null};EM=class extends Ci{constructor(e,t,i,r,s=null,a=_e.BILINEAR_SAMPLINGMODE,o,l){let c={uniforms:ko.Uniforms,size:typeof r=="number"?r:void 0,camera:s,samplingMode:a,engine:o,reusable:l,...r};super(e,ko.FragmentUrl,{effectWrapper:typeof r=="number"||!r.effectWrapper?new ko(e,o,t,i,c):void 0,...c}),this.direction=t,this.kernel=i,this.onApplyObservable.add(()=>{this._effectWrapper.textureWidth=this.width,this._effectWrapper.textureHeight=this.height})}_gatherImports(e,t){e?(this._webGPUReady=!0,t.push(Promise.resolve().then(()=>(pM(),mM)))):t.push(Promise.resolve().then(()=>(gM(),_M))),super._gatherImports(e,t)}},Ta=class n extends ta{static get NeutralColor(){return Ol.NeutralColor}static set NeutralColor(e){Ol.NeutralColor=e}get innerGlow(){return this._thinEffectLayer.innerGlow}set innerGlow(e){this._thinEffectLayer.innerGlow=e}get outerGlow(){return this._thinEffectLayer.outerGlow}set outerGlow(e){this._thinEffectLayer.outerGlow=e}set blurHorizontalSize(e){this._thinEffectLayer.blurHorizontalSize=e}set blurVerticalSize(e){this._thinEffectLayer.blurVerticalSize=e}get blurHorizontalSize(){return this._thinEffectLayer.blurHorizontalSize}get blurVerticalSize(){return this._thinEffectLayer.blurVerticalSize}get numStencilBits(){return this._thinEffectLayer.numStencilBits}set numStencilBits(e){this._thinEffectLayer.numStencilBits=e}get stencilReference(){return this._thinEffectLayer.stencilReference}constructor(e,t,i){super(e,t,i!==void 0?!!i.forceGLSL:!1,new Ol(e,t,i)),this.onBeforeBlurObservable=new te,this.onAfterBlurObservable=new te,this._engine.isStencilEnable||ee.Warn("Rendering the Highlight Layer requires the stencil to be active on the canvas. var engine = new Engine(canvas, antialias, { stencil: true }"),this._options={mainTextureRatio:.5,blurTextureSizeRatio:.5,mainTextureFixedSize:0,blurHorizontalSize:1,blurVerticalSize:1,alphaBlendingMode:2,camera:null,renderingGroupId:-1,mainTextureType:0,mainTextureFormat:5,forceGLSL:!1,isStroke:!1,generateStencilBuffer:!1,...i},this._init(this._options),this._shouldRender=!1}getEffectName(){return n.EffectName}_numInternalDraws(){return 2}_createMergeEffect(){return this._thinEffectLayer._createMergeEffect()}_createTextureAndPostProcesses(){let e=this._mainTextureDesiredSize.width*this._options.blurTextureSizeRatio,t=this._mainTextureDesiredSize.height*this._options.blurTextureSizeRatio;e=this._engine.needPOTTextures?Cn(e,this._maxSize):e,t=this._engine.needPOTTextures?Cn(t,this._maxSize):t;let i;this._engine.getCaps().textureHalfFloatRender?i=2:i=0,this._blurTexture=new Yr("HighlightLayerBlurRTT",{width:e,height:t},this._scene,!1,!0,i),this._blurTexture.wrapU=_e.CLAMP_ADDRESSMODE,this._blurTexture.wrapV=_e.CLAMP_ADDRESSMODE,this._blurTexture.anisotropicFilteringLevel=16,this._blurTexture.updateSamplingMode(_e.TRILINEAR_SAMPLINGMODE),this._blurTexture.renderParticles=!1,this._blurTexture.ignoreCameraViewport=!0,this._textures=[this._blurTexture],this._thinEffectLayer.bindTexturesForCompose=r=>{r.setTexture("textureSampler",this._blurTexture)},this._thinEffectLayer._createTextureAndPostProcesses(),this._options.alphaBlendingMode===2?(this._downSamplePostprocess=new Th("HighlightLayerPPP",{size:this._options.blurTextureSizeRatio,samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._downSamplePostprocess.externalTextureSamplerBinding=!0,this._downSamplePostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._horizontalBlurPostprocess=new EM("HighlightLayerHBP",new we(1,0),this._options.blurHorizontalSize,{samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[1]}),this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._verticalBlurPostprocess=new EM("HighlightLayerVBP",new we(0,1),this._options.blurVerticalSize,{samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),effectWrapper:this._thinEffectLayer._postProcesses[2]}),this._verticalBlurPostprocess.onApplyObservable.add(r=>{r.setFloat2("screenSize",e,t)}),this._postProcesses=[this._downSamplePostprocess,this._horizontalBlurPostprocess,this._verticalBlurPostprocess]):(this._horizontalBlurPostprocess=new qa("HighlightLayerHBP",new we(1,0),this._options.blurHorizontalSize/2,{size:{width:e,height:t},samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i,effectWrapper:this._thinEffectLayer._postProcesses[0]}),this._horizontalBlurPostprocess.width=e,this._horizontalBlurPostprocess.height=t,this._horizontalBlurPostprocess.externalTextureSamplerBinding=!0,this._horizontalBlurPostprocess.onApplyObservable.add(r=>{r.setTexture("textureSampler",this._mainTexture)}),this._verticalBlurPostprocess=new qa("HighlightLayerVBP",new we(0,1),this._options.blurVerticalSize/2,{size:{width:e,height:t},samplingMode:_e.BILINEAR_SAMPLINGMODE,engine:this._scene.getEngine(),textureType:i}),this._postProcesses=[this._horizontalBlurPostprocess,this._verticalBlurPostprocess]),this._mainTexture.onAfterUnbindObservable.add(()=>{this.onBeforeBlurObservable.notifyObservers(this);let r=this._blurTexture.renderTarget;r&&(this._scene.postProcessManager.directRender(this._postProcesses,r,!0),this._engine.unBindFramebuffer(r,!0)),this.onAfterBlurObservable.notifyObservers(this)}),this._postProcesses.map(r=>{r.autoClear=!1}),this._mainTextureCreatedSize.width=this._mainTextureDesiredSize.width,this._mainTextureCreatedSize.height=this._mainTextureDesiredSize.height}needStencil(){return this._thinEffectLayer.needStencil()}isReady(e,t){return this._thinEffectLayer.isReady(e,t)}_internalRender(e,t){this._thinEffectLayer._internalCompose(e,t)}shouldRender(){return this._thinEffectLayer.shouldRender()}_shouldRenderMesh(e){return this._thinEffectLayer._shouldRenderMesh(e)}_canRenderMesh(e,t){return this._thinEffectLayer._canRenderMesh(e,t)}_addCustomEffectDefines(e){this._thinEffectLayer._addCustomEffectDefines(e)}_setEmissiveTextureAndColor(e,t,i){this._thinEffectLayer._setEmissiveTextureAndColor(e,t,i)}addExcludedMesh(e){this._thinEffectLayer.addExcludedMesh(e)}removeExcludedMesh(e){this._thinEffectLayer.removeExcludedMesh(e)}hasMesh(e){return this._thinEffectLayer.hasMesh(e)}addMesh(e,t,i=!1){this._thinEffectLayer.addMesh(e,t,i)}removeMesh(e){this._thinEffectLayer.removeMesh(e)}removeAllMeshes(){this._thinEffectLayer.removeAllMeshes()}_disposeMesh(e){this._thinEffectLayer._disposeMesh(e)}getClassName(){return"HighlightLayer"}serialize(){let e=nt.Serialize(this);e.customType="BABYLON.HighlightLayer",e.meshes=[];let t=this._thinEffectLayer._meshes;if(t)for(let r in t){let s=t[r];s&&e.meshes.push({glowEmissiveOnly:s.glowEmissiveOnly,color:s.color.asArray(),meshId:s.mesh.id})}e.excludedMeshes=[];let i=this._thinEffectLayer._excludedMeshes;if(i)for(let r in i){let s=i[r];s&&e.excludedMeshes.push(s.mesh.id)}return e}static Parse(e,t,i){let r=nt.Parse(()=>new n(e.name,t,e.options),e,t,i),s;for(s=0;s{Rl();Wm();Gw();Gi();UO();Nb(it.NAME_EFFECTLAYER,(n,e,t,i)=>{if(n.effectLayers){t.effectLayers||(t.effectLayers=[]);for(let r=0;r0){this._previousStencilState=this._engine.getStencilBuffer();for(let r of i)if(r.shouldRender()&&(!r.camera||r.camera.cameraRigMode===gt.RIG_MODE_NONE&&e===r.camera||r.camera.cameraRigMode!==gt.RIG_MODE_NONE&&r.camera._rigCameras.indexOf(e)>-1)){this._renderEffects=!0,this._needStencil=this._needStencil||r.needStencil();let s=r._mainTexture;s._shouldRender()&&(this.scene.incrementRenderId(),s.render(!1,!1),t=!0)}this.scene.incrementRenderId()}return t}_setStencil(){this._needStencil&&this._engine.setStencilBuffer(!0)}_setStencilBack(){this._needStencil&&this._engine.setStencilBuffer(this._previousStencilState)}_draw(e){if(this._renderEffects){this._engine.setDepthBuffer(!1);let t=this.scene.effectLayers;for(let i=0;i{let e=n._getComponent(it.NAME_EFFECTLAYER);e||(e=new Xw(n),n._addComponent(e))}});function Mq(n,e,t=()=>!0,i=r=>[r]){let r=new Ta("ai3d-pick-highlight",n),s=new Ee(.15,.45,1),a=[];function o(){r.removeAllMeshes();for(let f of a)f.isDisposed()||(f.renderOutline=!1,f.outlineWidth=0);a=[]}function l(f){a=f.filter(d=>!d.isDisposed());for(let d of a)r.addMesh(d,s),d.renderOutline=!0,d.outlineColor=s,d.outlineWidth=.045}let c=n.onPointerObservable.add(f=>{var _;if(f.type!==at.POINTERDOWN)return;let d=f.event,h=d.clientX,u=d.clientY,m=f.pickInfo;if(m!=null&&m.hit&&m.pickedMesh){if(t()){let p=i(m.pickedMesh).filter(v=>!v.isDisposed());a.length===p.length&&a.every((v,T)=>v===p[T])||(o(),l(p))}else o();e({mesh:m.pickedMesh,pickedPoint:(_=m.pickedPoint)!=null?_:null,screenX:h,screenY:u})}else o(),e({mesh:null,pickedPoint:null,screenX:h,screenY:u})});return()=>{o(),r.dispose(),n.onPointerObservable.remove(c)}}var Iq=I(()=>{"use strict";yo();zt();Rq();bq()});function _ve(n,e,t){let i=Ee.FromHexString(e),r=new We(n,t);return r.emissiveColor=i,r.diffuseColor=Ee.Black(),r.specularColor=Ee.Black(),r.backFaceCulling=!1,r}function gve(n){let e=new We("gizmo-origin-mat",n);return e.emissiveColor=new Ee(.72,.78,.86),e.diffuseColor=Ee.Black(),e.specularColor=Ee.Black(),e}var fve,SM,dve,Kw,hve,uve,Yw,mve,pve,TM,yq=I(()=>{"use strict";Ys();mR();pR();ke();zt();Nm();FL();Gc();fve=.32,SM=1.05,dve=.075,Kw=.28,hve=.22,uve=.16,Yw=(SM+Kw)*.42,mve=new b(Yw,Yw,Yw),pve=[{name:"x",color:"#e74c3c",rot:new b(0,0,-Math.PI/2),dir:new b(1,0,0)},{name:"y",color:"#2ecc71",rot:new b(0,0,0),dir:new b(0,1,0)},{name:"z",color:"#3498db",rot:new b(Math.PI/2,0,0),dir:new b(0,0,1)}];TM=class{constructor(e,t){this.engine=e,this.scene=new ti(e),this.scene.clearColor=new ft(0,0,0,0),this.scene.autoClear=!1,this.camera=new Si("gizmo-cam",0,0,4.1,mve,this.scene),this.camera.minZ=.01,this.camera.fov=.56,this.camera.detachControl(),new va("gizmo-light",new b(0,1,.5),this.scene);let i=xs.CreateSphere("gizmo-origin",{diameter:uve,segments:16},this.scene);i.material=gve(this.scene);for(let{name:s,color:a,rot:o,dir:l}of pve){let c=_ve(`gizmo-${s}-mat`,a,this.scene),f=xs.CreateCylinder(`gizmo-${s}-shaft`,{height:SM,diameter:dve,tessellation:8},this.scene);f.material=c,f.position=l.scale(SM/2),f.rotation=o;let d=xs.CreateCylinder(`gizmo-${s}-head`,{height:Kw,diameterTop:0,diameterBottom:hve,tessellation:8},this.scene);d.material=c;let h=SM+Kw/2;d.position=l.scale(h),d.rotation=o}let r=fve;this.viewport=new xo(.02,.03,r,r),this.camera.viewport=this.viewport,this.syncWith(t)}syncWith(e){this.camera.alpha=e.alpha,this.camera.beta=e.beta}render(){let e=this.engine.getRenderWidth(),t=this.engine.getRenderHeight(),i=this.viewport.x*e,r=this.viewport.y*t,s=this.viewport.width*e,a=this.viewport.height*t;this.engine.enableScissor(i,r,s,a),this.engine.clear(null,!1,!0,!0),this.scene.render(),this.engine.disableScissor()}dispose(){this.scene.dispose()}}});var Zw={};Fe(Zw,{boundingBoxRendererVertexShaderWGSL:()=>vve});var jw,Cq,vve,qw=I(()=>{k();jw="boundingBoxRendererVertexShader",Cq=`attribute position: vec3f;uniform world: mat4x4f;uniform viewProjection: mat4x4f; #ifdef INSTANCES attribute world0 : vec4;attribute world1 : vec4;attribute world2 : vec4;attribute world3 : vec4; #endif @@ -23811,11 +23811,11 @@ void main(void) { #define CUSTOM_FRAGMENT_MAIN_BEGIN gl_FragColor=color; #define CUSTOM_FRAGMENT_MAIN_END -}`;x.ShadersStore[nF]||(x.ShadersStore[nF]=Bq);Rve={name:nF,shader:Bq}});var Gq,Uq,TM,bve,Mve,Vq,oF,kq=I(()=>{Ys();Zi();$m();ke();Mo();Wm();LD();ts();mL();zt();mi();Eh();Of();sL();ul();Lt();Object.defineProperty(ti.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ti.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new oF(this)),this._boundingBoxRenderer};Object.defineProperty(yr.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});Gq=Z.Identity(),Uq=new Z,TM=new b,bve=new b,Mve=Gq.asArray(),Vq=new Uf(TM,TM),oF=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=it.NAME_BOUNDINGBOXRENDERER,this.frontColor=new Ee(1,1,1),this.backColor=new Ee(.1,.1,.1),this.showBackLines=!0,this.onBeforeBoxRenderingObservable=new te,this.onAfterBoxRenderingObservable=new te,this.onResourcesReadyObservable=new te,this.enabled=!0,this._shaderLanguage=0,this.renderList=new Xi(32),this._vertexBuffers={},this._fillIndexBuffer=null,this._fillIndexData=null,this._matrixBuffer=null,this._matrices=null,this._useInstances=!1,this._drawWrapperFront=null,this._drawWrapperBack=null,this.scene=e,this.scene.getEngine().isWebGPU&&(this._shaderLanguage=1),e._addComponent(this),this._uniformBufferFront=new Sr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new Sr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererBack",!0),this._buildUniformLayout(this._uniformBufferBack)}_buildUniformLayout(e){e.addUniform("color",4),e.addUniform("world",16),e.addUniform("viewProjection",16),e.addUniform("viewProjectionR",16),e.create()}register(){this.scene._beforeEvaluateActiveMeshStage.registerStep(it.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER,this,this.reset),this.scene._preActiveMeshStage.registerStep(it.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER,this,this._preActiveMesh),this.scene._evaluateSubMeshStage.registerStep(it.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER,this,this._evaluateSubMesh),this.scene._afterRenderingGroupDrawStage.registerStep(it.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER,this,this.render)}async whenReadyAsync(e=16,t=3e4){return this._prepareResources(),await new Promise(i=>{hl(()=>this._colorShader.isReady(),()=>{i()},(r,s)=>{s?(ee.Error("BoundingBoxRenderer: Timeout while waiting for the renderer to be ready."),r&&ee.Error(r)):(ee.Error("BoundingBoxRenderer: An unexpected error occurred while waiting for the renderer to be ready."),r&&(ee.Error(r),r.stack&&ee.Error(r.stack)))},e,t)})}_evaluateSubMesh(e,t){if(e.showSubMeshesBoundingBox){let i=t.getBoundingInfo();i!=null&&(i.boundingBox._tag=e.renderingGroupId,this.renderList.push(i.boundingBox))}}_preActiveMesh(e){if(e.showBoundingBox||this.scene.forceShowBoundingBoxes){let t=e.getBoundingInfo();t.boundingBox._tag=e.renderingGroupId,this.renderList.push(t.boundingBox)}}_prepareResources(){if(this._colorShader)return;this._colorShader=new Uo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind,"world0","world1","world2","world3"],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(qw(),Zw)),Promise.resolve().then(()=>(Jw(),$w))]):await Promise.all([Promise.resolve().then(()=>(rF(),iF)),Promise.resolve().then(()=>(aF(),sF))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Uo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(qw(),Zw)),Promise.resolve().then(()=>(Jw(),$w))]):await Promise.all([Promise.resolve().then(()=>(rF(),iF)),Promise.resolve().then(()=>(aF(),sF))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=_R({size:1});this._vertexBuffers[L.PositionKind]=new L(e,t.positions,L.PositionKind,!1),this._createIndexBuffer(),this._fillIndexData=t.indices,this.onResourcesReadyObservable.notifyObservers(this)}_createIndexBuffer(){let e=this.scene.getEngine();this._indexBuffer=e.createIndexBuffer([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,7,1,6,2,5,3,4])}rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._createIndexBuffer(),this._matrixBuffer&&this._matrixBuffer._rebuild()}reset(){this.renderList.reset()}render(e){var r,s;if(this.renderList.length===0||!this.enabled)return;if(this._useInstances){this._renderInstanced(e);return}if(this._prepareResources(),!this._colorShader.isReady())return;let t=this.scene.getEngine();t.setDepthWrite(!1);let i=this.scene.getTransformMatrix();for(let a=0;ar*2)&&(i=new Float32Array(r),this._matrices=i),this.onBeforeBoxRenderingObservable.notifyObservers(Vq);let s=0,a=this.scene.floatingOriginOffset;for(let g=0;g{"use strict";ke();fO();zt();yo();kq();Gs();qv();pC();Ed=class Ed{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new en(b.Zero(),b.Zero(),1);this.lastOccluded=!1;this.selected=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.meshes=r,this.parts=Pve(i,r,s);for(let a of this.parts)for(let o of a.meshes)this.meshToPart.set(o.uniqueId,a);this.setBoundingBoxColor(Ed.BBOX_VISIBLE)}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return Cve(e.node)||e.meshes.every(t=>t.isDisposed())}captureTransform(e){var t,i;return{parent:e.node.parent,position:e.node.position.clone(),rotation:e.node.rotation.clone(),rotationQuaternion:(i=(t=e.node.rotationQuaternion)==null?void 0:t.clone())!=null?i:null,scaling:e.node.scaling.clone()}}restoreTransform(e,t){var i,r;e.node.setParent(t.parent),e.node.position.copyFrom(t.position),e.node.rotation.copyFrom(t.rotation),e.node.rotationQuaternion=(r=(i=t.rotationQuaternion)==null?void 0:i.clone())!=null?r:null,e.node.scaling.copyFrom(t.scaling),e.node.computeWorldMatrix(!0);for(let s of e.meshes)s.computeWorldMatrix(!0)}subscribe(e){let t=this.scene.getEngine().getRenderingCanvas();t==null||t.classList.add("ai3d-disassembly-active");let i=this.scene.onPointerObservable.add(s=>{var o,l,c,f;let a=s.event;if(a.isPrimary!==!1){if(s.type===at.POINTERDOWN){if(a.button!==0)return;let d=(l=(o=s.pickInfo)==null?void 0:o.pickedMesh)!=null?l:null;if(this.partPointerActive=!!this.resolvePart(d),this.partPointerActive){a.preventDefault(),a.stopPropagation(),this.activePointerId=a.pointerId;try{(c=t==null?void 0:t.setPointerCapture)==null||c.call(t,a.pointerId)}catch(h){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===at.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===at.POINTERUP){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;if(this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerUp(a),this.activePointerId!==null&&((f=t==null?void 0:t.hasPointerCapture)!=null&&f.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(d){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}}}),r=this.scene.onAfterRenderCameraObservable.add(s=>{s===this.camera&&e.onRender()});return()=>{var s;if(this.scene.onPointerObservable.remove(i),this.scene.onAfterRenderCameraObservable.remove(r),t==null||t.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.activePointerId!==null&&((s=t==null?void 0:t.hasPointerCapture)!=null&&s.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(a){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(t,!0)}}resolvePart(e){var t;return Ive(e)?this.parts.includes(e)?e:null:!e||typeof e!="object"?null:(t=this.meshToPart.get(e.uniqueId))!=null?t:null}setSelected(e){if(this.selected)for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!1);if(this.selected=e,this.lastOccluded=!1,this.setBoundingBoxColor(Ed.BBOX_VISIBLE),this.selected&&!this.isDisposed(this.selected))for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!0)}beginDrag(e,t){var o,l,c;let i=this.getPointOnDragPlane(e,t);if(!i)return null;t.preventDefault(),t.stopPropagation(),(o=this.scene.getEngine().getRenderingCanvas())==null||o.classList.add("ai3d-disassembly-dragging"),e.node.setParent(null),e.node.computeWorldMatrix(!0);for(let f of e.meshes)f.computeWorldMatrix(!0);t.shiftKey&&!e.node.rotationQuaternion&&(e.node.rotationQuaternion=Ke.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=lF(e),s=dm(Jt(i),Jt(this.camera.getForwardRay().direction));if(!s)return null;let a={part:e,mode:t.shiftKey?"rotate":"move",plane:s,startPoint:i,startPosition:e.node.position.clone(),startRotationQuaternion:(c=(l=e.node.rotationQuaternion)==null?void 0:l.clone())!=null?c:null,pivot:r,pointerX:t.clientX,pointerY:t.clientY};return this.camera.detachControl(),a}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=i.subtract(e.startPoint);e.part.node.position=e.startPosition.add(r),e.part.node.computeWorldMatrix(!0);for(let s of e.part.meshes)s.computeWorldMatrix(!0)}endDrag(e){var t;(t=this.scene.getEngine().getRenderingCanvas())==null||t.classList.remove("ai3d-disassembly-dragging"),this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}updateSelectionOcclusion(e){let t=lF(e),i=this.camera.position,r=Af(Jt(i),Jt(t));if(!r)return;let s=this.occlusionDirection;s.set(r.direction.x,r.direction.y,r.direction.z),this.occlusionRay.origin=i,this.occlusionRay.direction=s,this.occlusionRay.length=r.distance;let a=this.scene.pickWithRay(this.occlusionRay),o=!!(a!=null&&a.hit)&&Tf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.setBoundingBoxColor(o?Ed.BBOX_OCCLUDED:Ed.BBOX_VISIBLE))}setBoundingBoxColor(e){var i,r;let t=(r=(i=this.scene).getBoundingBoxRenderer)==null?void 0:r.call(i);t&&(t.frontColor=e,t.backColor=e)}updateRotation(e,t){if(!e.startRotationQuaternion)return;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=eA({startPosition:Jt(e.startPosition),pivot:Jt(e.pivot),startRotationQuaternion:JT(e.startRotationQuaternion),yawAxis:Jt(this.camera.getDirection(b.Up()).normalize()),pitchAxis:Jt(this.camera.getDirection(b.Right()).normalize()),deltaX:i,deltaY:r,sensitivity:.01});if(s){e.part.node.position=new b(s.position.x,s.position.y,s.position.z),e.part.node.rotationQuaternion=new Ke(s.rotationQuaternion.x,s.rotationQuaternion.y,s.rotationQuaternion.z,s.rotationQuaternion.w),e.part.node.rotation.set(0,0,0),e.part.node.computeWorldMatrix(!0);for(let a of e.part.meshes)a.computeWorldMatrix(!0)}}getPointOnDragPlane(e,t){var s;let i=lF(e),r=dm(Jt(i),Jt(this.camera.getForwardRay().direction));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:i}getRayPlanePoint(e,t){let i=this.scene.getEngine().getRenderingCanvas();if(!i)return null;let r=i.getBoundingClientRect(),s=e.clientX-r.left,a=e.clientY-r.top,o=this.scene.createPickingRay(s,a,Z.Identity(),this.camera),l=$T({origin:Jt(o.origin),direction:Jt(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};Ed.BBOX_VISIBLE=new Ee(.25,.7,1),Ed.BBOX_OCCLUDED=new Ee(.1,.25,.4);cF=Ed});var qq={};Fe(qq,{BabylonModelPreview:()=>RM,createBabylonModelPreview:()=>Hve});function Bve(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function fF(n){return n.getClassName()==="GaussianSplattingMesh"}function Uve(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function Yq(n){return n instanceof Zt}function Kq(n){return typeof n.isDisposed=="function"?n.isDisposed():!1}function xM(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function dF(n,e=[]){for(let t of n)t.isDisposed()||t.dispose(!0,!0);for(let t of e)t.isDisposed()||t.dispose(!1,!0)}function Qv(n){return new b(n.x,n.y,n.z)}function jq(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function Zq(n){let e=new We("measure-marker-mat",n);return e.diffuseColor=Jv.clone(),e.emissiveColor=Jv.clone(),e.specularColor=new Ee(0,0,0),e.disableLighting=!0,e.alpha=.96,e}function $v(n,e){let t=n.material;t&&(t.diffuseColor=e.clone(),t.emissiveColor=e.clone())}function Vve(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function Gve(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}function kve(n){var t,i;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return e==="jpg"||e==="jpeg"?"image/jpeg":e==="png"?"image/png":e==="bmp"?"image/bmp":e==="tga"?"image/x-tga":e==="webp"?"image/webp":`image/${e}`}function Wve(n,e,t){let i=Vs(e),r=i.replace(/\.[^.]+$/,""),s=ln(t),a=[In(n,e),In(n,i)];if(s)for(let o of zq)a.push(In(n,`${s}.${o}`));for(let o of zq){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}function Hve(n){return new RM(n)}var AM,zq,Dve,Lve,Ove,Nve,Jv,wve,Fve,Xq,Aa,RM,Qq=I(()=>{"use strict";ID();Ys();uR();mR();FH();BH();QD();ke();zt();Fi();Vf();FL();Gc();A5();fO();yb();O8();GD();Np();Kv();Kv();Iw();yw();qZ();Iq();KT();ua();_s();yq();Hq();qv();fl();iA();fC();Ag();Gs();lA();Eg();_A();AM=null,zq=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Dve=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Lve=.242,Ove=320,Nve=new Ee(.54,.71,.97),Jv=new Ee(.89,.91,.94),wve=new Ee(.96,.62,.04),Fve=new Ee(.97,.98,.99),Xq=new Ee(.8,.84,.88);Aa=class Aa{constructor(e){this.rootMesh=null;this.loadedMeshes=[];this.loadedTransformNodes=[];this.cachedRenderableMeshes=null;this.cachedRenderableRoot=null;this.loadedExt="";this.rendering=!1;this.contextLost=!1;this.viewportVisible=!0;this.viewportObserver=null;this.cleanupPicking=null;this.configLights=[];this.shadowGenerator=null;this.groundMesh=null;this.gridMesh=null;this.axisMeshes=[];this.autoRotateBehavior=null;this.wireframeEnabled=!1;this.gizmo=null;this.gizmoEnabled=!1;this.disassembly=null;this.focusSelectionEnabled=!1;this.focusedNode=null;this.originalMeshVisibility=new Map;this.bboxMesh=null;this.bboxEnabled=!1;this.currentQuality="high";this.resourceWarnings=[];this.gltfComponentMetadata=new Map;this.animPlaying=!1;this.initialCamera={alpha:Math.PI/4,beta:Math.PI/3,radius:5,target:b.Zero()};this.focusWorldPointFrame=0;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.cameraZoomObservers=new Set;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},!this.measurementActive||(this.pendingPoint&&this.updatePreviewLine(),this.measurementMarkers.length===0))return;let t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top,a=this.scene.pick(r,s,l=>this.measurementMarkers.includes(l)),o=a.hit?this.measurementMarkers.indexOf(a.pickedMesh):-1;if(o!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&o{e.preventDefault(),e.stopPropagation()};this.handleViewportIntersection=e=>{let t=e.some(i=>i.isIntersecting);t!==this.viewportVisible&&(this.viewportVisible=t,t?this.startRenderLoop():this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1))};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop()};this.engine=new Ge(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ti(this.engine),this.scene.clearColor=new ft(.12,.12,.14,1),this.camera=new Si("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=45,this.camera.onViewMatrixChangedObservable.add(()=>this.notifyCameraZoomChanged()),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene.ambientColor=new Ee(.3,.3,.3);let t=new va("default-light",new b(0,1,.5),this.scene);t.intensity=1.2,this.resizeObs=new ResizeObserver(()=>this.engine.resize()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}getCameraZoomRange(){if(!this.rootMesh)return null;let e=this.camera.radius,t=this.camera.lowerRadiusLimit,i=this.camera.upperRadiusLimit,r=typeof t=="number"&&Number.isFinite(t)&&t>0?t:Math.max(e*.08,1e-5),s=typeof i=="number"&&Number.isFinite(i)&&i>r?i:Math.max(e*8,r*10);return{current:Math.max(r,Math.min(e,s)),min:r,max:s}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=Wq(this.scene,this.camera,this.rootMesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)),this.disassembly):null}isDisassemblyActive(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}async loadModel(e,t,i,r,s){var m,_,p;gi(s),await Yv(),gi(s),this.rootMesh&&(dF(this.loadedMeshes,this.loadedTransformNodes),this.rootMesh=null,this.notifyCameraZoomChanged()),this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),(m=this.disassembly)==null||m.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let a=t.toLowerCase().replace(".","");this.loadedExt=a,this.resourceWarnings=[],gi(s),this.gltfComponentMetadata=jZ(e,a);let o=this.scene,c=(_={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[a])!=null?_:`.${a}`;gi(s);let f=`data:application/octet-stream;base64,${th(e)}`;gi(s);let d=g=>{try{gi(s)}catch(v){throw dF(g.meshes,g.transformNodes),v}this.loadedMeshes=g.meshes,this.loadedTransformNodes=g.transformNodes,g.meshes.length>0&&(this.rootMesh=g.meshes[0])},h=()=>{try{gi(s)}catch(g){throw dF(this.loadedMeshes,this.loadedTransformNodes),this.loadedMeshes=[],this.loadedTransformNodes=[],this.rootMesh=null,this.invalidateMeshCache(),this.notifyCameraZoomChanged(),g}};if(a==="obj"&&i&&r){AM&&await AM,gi(s);let g;AM=new Promise(v=>{g=v});try{let{OBJFileLoader:v}=await Promise.resolve().then(()=>(bw(),wZ)),T=v.prototype;typeof T._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let S=T._loadMTL,A=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),R=null;if(A&&i&&r){let y=Vve(A[1]),C=vg(r),D=In(C,y);try{let w=await i(D);gi(s);let O=new TextDecoder().decode(new Uint8Array(w)).split(` +}`;x.ShadersStore[nF]||(x.ShadersStore[nF]=Bq);Rve={name:nF,shader:Bq}});var Gq,Uq,AM,bve,Mve,Vq,oF,kq=I(()=>{Ys();Zi();$m();ke();Mo();Wm();LD();ts();mL();zt();mi();Eh();Of();sL();ul();Lt();Object.defineProperty(ti.prototype,"forceShowBoundingBoxes",{get:function(){return this._forceShowBoundingBoxes||!1},set:function(n){this._forceShowBoundingBoxes=n,n&&this.getBoundingBoxRenderer()},enumerable:!0,configurable:!0});ti.prototype.getBoundingBoxRenderer=function(){return this._boundingBoxRenderer||(this._boundingBoxRenderer=new oF(this)),this._boundingBoxRenderer};Object.defineProperty(yr.prototype,"showBoundingBox",{get:function(){return this._showBoundingBox||!1},set:function(n){this._showBoundingBox=n,n&&this.getScene().getBoundingBoxRenderer()},enumerable:!0,configurable:!0});Gq=Z.Identity(),Uq=new Z,AM=new b,bve=new b,Mve=Gq.asArray(),Vq=new Uf(AM,AM),oF=class{get shaderLanguage(){return this._shaderLanguage}constructor(e){this.name=it.NAME_BOUNDINGBOXRENDERER,this.frontColor=new Ee(1,1,1),this.backColor=new Ee(.1,.1,.1),this.showBackLines=!0,this.onBeforeBoxRenderingObservable=new te,this.onAfterBoxRenderingObservable=new te,this.onResourcesReadyObservable=new te,this.enabled=!0,this._shaderLanguage=0,this.renderList=new Xi(32),this._vertexBuffers={},this._fillIndexBuffer=null,this._fillIndexData=null,this._matrixBuffer=null,this._matrices=null,this._useInstances=!1,this._drawWrapperFront=null,this._drawWrapperBack=null,this.scene=e,this.scene.getEngine().isWebGPU&&(this._shaderLanguage=1),e._addComponent(this),this._uniformBufferFront=new Sr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererFront",!0),this._buildUniformLayout(this._uniformBufferFront),this._uniformBufferBack=new Sr(this.scene.getEngine(),void 0,void 0,"BoundingBoxRendererBack",!0),this._buildUniformLayout(this._uniformBufferBack)}_buildUniformLayout(e){e.addUniform("color",4),e.addUniform("world",16),e.addUniform("viewProjection",16),e.addUniform("viewProjectionR",16),e.create()}register(){this.scene._beforeEvaluateActiveMeshStage.registerStep(it.STEP_BEFOREEVALUATEACTIVEMESH_BOUNDINGBOXRENDERER,this,this.reset),this.scene._preActiveMeshStage.registerStep(it.STEP_PREACTIVEMESH_BOUNDINGBOXRENDERER,this,this._preActiveMesh),this.scene._evaluateSubMeshStage.registerStep(it.STEP_EVALUATESUBMESH_BOUNDINGBOXRENDERER,this,this._evaluateSubMesh),this.scene._afterRenderingGroupDrawStage.registerStep(it.STEP_AFTERRENDERINGGROUPDRAW_BOUNDINGBOXRENDERER,this,this.render)}async whenReadyAsync(e=16,t=3e4){return this._prepareResources(),await new Promise(i=>{hl(()=>this._colorShader.isReady(),()=>{i()},(r,s)=>{s?(ee.Error("BoundingBoxRenderer: Timeout while waiting for the renderer to be ready."),r&&ee.Error(r)):(ee.Error("BoundingBoxRenderer: An unexpected error occurred while waiting for the renderer to be ready."),r&&(ee.Error(r),r.stack&&ee.Error(r.stack)))},e,t)})}_evaluateSubMesh(e,t){if(e.showSubMeshesBoundingBox){let i=t.getBoundingInfo();i!=null&&(i.boundingBox._tag=e.renderingGroupId,this.renderList.push(i.boundingBox))}}_preActiveMesh(e){if(e.showBoundingBox||this.scene.forceShowBoundingBoxes){let t=e.getBoundingInfo();t.boundingBox._tag=e.renderingGroupId,this.renderList.push(t.boundingBox)}}_prepareResources(){if(this._colorShader)return;this._colorShader=new Uo("colorShader",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind,"world0","world1","world2","world3"],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(qw(),Zw)),Promise.resolve().then(()=>(Jw(),$w))]):await Promise.all([Promise.resolve().then(()=>(rF(),iF)),Promise.resolve().then(()=>(aF(),sF))])}},!1),this._colorShader.setDefine("INSTANCES",this._useInstances),this._colorShader.doNotSerialize=!0,this._colorShader.reservedDataStore={hidden:!0},this._colorShaderForOcclusionQuery=new Uo("colorShaderOccQuery",this.scene,"boundingBoxRenderer",{attributes:[L.PositionKind],uniforms:["world","viewProjection","viewProjectionR","color"],uniformBuffers:["BoundingBoxRenderer"],shaderLanguage:this._shaderLanguage,extraInitializationsAsync:async()=>{this._shaderLanguage===1?await Promise.all([Promise.resolve().then(()=>(qw(),Zw)),Promise.resolve().then(()=>(Jw(),$w))]):await Promise.all([Promise.resolve().then(()=>(rF(),iF)),Promise.resolve().then(()=>(aF(),sF))])}},!0),this._colorShaderForOcclusionQuery.doNotSerialize=!0,this._colorShaderForOcclusionQuery.reservedDataStore={hidden:!0};let e=this.scene.getEngine(),t=gR({size:1});this._vertexBuffers[L.PositionKind]=new L(e,t.positions,L.PositionKind,!1),this._createIndexBuffer(),this._fillIndexData=t.indices,this.onResourcesReadyObservable.notifyObservers(this)}_createIndexBuffer(){let e=this.scene.getEngine();this._indexBuffer=e.createIndexBuffer([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,7,1,6,2,5,3,4])}rebuild(){let e=this._vertexBuffers[L.PositionKind];e&&e._rebuild(),this._createIndexBuffer(),this._matrixBuffer&&this._matrixBuffer._rebuild()}reset(){this.renderList.reset()}render(e){var r,s;if(this.renderList.length===0||!this.enabled)return;if(this._useInstances){this._renderInstanced(e);return}if(this._prepareResources(),!this._colorShader.isReady())return;let t=this.scene.getEngine();t.setDepthWrite(!1);let i=this.scene.getTransformMatrix();for(let a=0;ar*2)&&(i=new Float32Array(r),this._matrices=i),this.onBeforeBoxRenderingObservable.notifyObservers(Vq);let s=0,a=this.scene.floatingOriginOffset;for(let g=0;g{"use strict";ke();fO();zt();yo();kq();Gs();qv();pC();Ed=class Ed{constructor(e,t,i,r,s){this.meshToPart=new Map;this.occlusionDirection=b.Zero();this.occlusionRay=new en(b.Zero(),b.Zero(),1);this.lastOccluded=!1;this.selected=null;this.partPointerActive=!1;this.activePointerId=null;this.scene=e,this.camera=t,this.meshes=r,this.parts=Pve(i,r,s);for(let a of this.parts)for(let o of a.meshes)this.meshToPart.set(o.uniqueId,a);this.setBoundingBoxColor(Ed.BBOX_VISIBLE)}getParts(){return this.parts}getPartId(e){return e.id}isDisposed(e){return Cve(e.node)||e.meshes.every(t=>t.isDisposed())}captureTransform(e){var t,i;return{parent:e.node.parent,position:e.node.position.clone(),rotation:e.node.rotation.clone(),rotationQuaternion:(i=(t=e.node.rotationQuaternion)==null?void 0:t.clone())!=null?i:null,scaling:e.node.scaling.clone()}}restoreTransform(e,t){var i,r;e.node.setParent(t.parent),e.node.position.copyFrom(t.position),e.node.rotation.copyFrom(t.rotation),e.node.rotationQuaternion=(r=(i=t.rotationQuaternion)==null?void 0:i.clone())!=null?r:null,e.node.scaling.copyFrom(t.scaling),e.node.computeWorldMatrix(!0);for(let s of e.meshes)s.computeWorldMatrix(!0)}subscribe(e){let t=this.scene.getEngine().getRenderingCanvas();t==null||t.classList.add("ai3d-disassembly-active");let i=this.scene.onPointerObservable.add(s=>{var o,l,c,f;let a=s.event;if(a.isPrimary!==!1){if(s.type===at.POINTERDOWN){if(a.button!==0)return;let d=(l=(o=s.pickInfo)==null?void 0:o.pickedMesh)!=null?l:null;if(this.partPointerActive=!!this.resolvePart(d),this.partPointerActive){a.preventDefault(),a.stopPropagation(),this.activePointerId=a.pointerId;try{(c=t==null?void 0:t.setPointerCapture)==null||c.call(t,a.pointerId)}catch(h){}this.camera.detachControl()}e.onPointerDown(d,a)}else if(s.type===at.POINTERMOVE){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerMove(a)}else if(s.type===at.POINTERUP){if(this.activePointerId!==null&&a.pointerId!==this.activePointerId)return;if(this.partPointerActive&&(a.preventDefault(),a.stopPropagation()),e.onPointerUp(a),this.activePointerId!==null&&((f=t==null?void 0:t.hasPointerCapture)!=null&&f.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(d){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}}}),r=this.scene.onAfterRenderCameraObservable.add(s=>{s===this.camera&&e.onRender()});return()=>{var s;if(this.scene.onPointerObservable.remove(i),this.scene.onAfterRenderCameraObservable.remove(r),t==null||t.classList.remove("ai3d-disassembly-active","ai3d-disassembly-dragging"),this.activePointerId!==null&&((s=t==null?void 0:t.hasPointerCapture)!=null&&s.call(t,this.activePointerId)))try{t.releasePointerCapture(this.activePointerId)}catch(a){}this.partPointerActive=!1,this.activePointerId=null,this.camera.attachControl(t,!0)}}resolvePart(e){var t;return Ive(e)?this.parts.includes(e)?e:null:!e||typeof e!="object"?null:(t=this.meshToPart.get(e.uniqueId))!=null?t:null}setSelected(e){if(this.selected)for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!1);if(this.selected=e,this.lastOccluded=!1,this.setBoundingBoxColor(Ed.BBOX_VISIBLE),this.selected&&!this.isDisposed(this.selected))for(let t of this.selected.meshes)t.isDisposed()||(t.showBoundingBox=!0)}beginDrag(e,t){var o,l,c;let i=this.getPointOnDragPlane(e,t);if(!i)return null;t.preventDefault(),t.stopPropagation(),(o=this.scene.getEngine().getRenderingCanvas())==null||o.classList.add("ai3d-disassembly-dragging"),e.node.setParent(null),e.node.computeWorldMatrix(!0);for(let f of e.meshes)f.computeWorldMatrix(!0);t.shiftKey&&!e.node.rotationQuaternion&&(e.node.rotationQuaternion=Ke.FromEulerVector(e.node.rotation),e.node.rotation.set(0,0,0));let r=lF(e),s=dm(Jt(i),Jt(this.camera.getForwardRay().direction));if(!s)return null;let a={part:e,mode:t.shiftKey?"rotate":"move",plane:s,startPoint:i,startPosition:e.node.position.clone(),startRotationQuaternion:(c=(l=e.node.rotationQuaternion)==null?void 0:l.clone())!=null?c:null,pivot:r,pointerX:t.clientX,pointerY:t.clientY};return this.camera.detachControl(),a}updateDrag(e,t){if(t.preventDefault(),t.stopPropagation(),e.mode==="rotate"){this.updateRotation(e,t);return}let i=this.getRayPlanePoint(t,e.plane);if(!i)return;let r=i.subtract(e.startPoint);e.part.node.position=e.startPosition.add(r),e.part.node.computeWorldMatrix(!0);for(let s of e.part.meshes)s.computeWorldMatrix(!0)}endDrag(e){var t;(t=this.scene.getEngine().getRenderingCanvas())==null||t.classList.remove("ai3d-disassembly-dragging"),this.camera.attachControl(this.scene.getEngine().getRenderingCanvas(),!0)}updateSelectionOcclusion(e){let t=lF(e),i=this.camera.position,r=Af(Jt(i),Jt(t));if(!r)return;let s=this.occlusionDirection;s.set(r.direction.x,r.direction.y,r.direction.z),this.occlusionRay.origin=i,this.occlusionRay.direction=s,this.occlusionRay.length=r.distance;let a=this.scene.pickWithRay(this.occlusionRay),o=!!(a!=null&&a.hit)&&Tf(a.distance,r.distance,r.epsilon);o!==this.lastOccluded&&(this.lastOccluded=o,this.setBoundingBoxColor(o?Ed.BBOX_OCCLUDED:Ed.BBOX_VISIBLE))}setBoundingBoxColor(e){var i,r;let t=(r=(i=this.scene).getBoundingBoxRenderer)==null?void 0:r.call(i);t&&(t.frontColor=e,t.backColor=e)}updateRotation(e,t){if(!e.startRotationQuaternion)return;let i=t.clientX-e.pointerX,r=t.clientY-e.pointerY,s=tA({startPosition:Jt(e.startPosition),pivot:Jt(e.pivot),startRotationQuaternion:eA(e.startRotationQuaternion),yawAxis:Jt(this.camera.getDirection(b.Up()).normalize()),pitchAxis:Jt(this.camera.getDirection(b.Right()).normalize()),deltaX:i,deltaY:r,sensitivity:.01});if(s){e.part.node.position=new b(s.position.x,s.position.y,s.position.z),e.part.node.rotationQuaternion=new Ke(s.rotationQuaternion.x,s.rotationQuaternion.y,s.rotationQuaternion.z,s.rotationQuaternion.w),e.part.node.rotation.set(0,0,0),e.part.node.computeWorldMatrix(!0);for(let a of e.part.meshes)a.computeWorldMatrix(!0)}}getPointOnDragPlane(e,t){var s;let i=lF(e),r=dm(Jt(i),Jt(this.camera.getForwardRay().direction));return r&&(s=this.getRayPlanePoint(t,r))!=null?s:i}getRayPlanePoint(e,t){let i=this.scene.getEngine().getRenderingCanvas();if(!i)return null;let r=i.getBoundingClientRect(),s=e.clientX-r.left,a=e.clientY-r.top,o=this.scene.createPickingRay(s,a,Z.Identity(),this.camera),l=JT({origin:Jt(o.origin),direction:Jt(o.direction)},t);return l?new b(l.x,l.y,l.z):null}};Ed.BBOX_VISIBLE=new Ee(.25,.7,1),Ed.BBOX_OCCLUDED=new Ee(.1,.25,.4);cF=Ed});var qq={};Fe(qq,{BabylonModelPreview:()=>bM,createBabylonModelPreview:()=>Hve});function Bve(n){let e=n.getClassName();return e==="DirectionalLight"||e==="PointLight"||e==="SpotLight"}function fF(n){return n.getClassName()==="GaussianSplattingMesh"}function Uve(n){return!!n&&typeof n=="object"&&"getBoundingInfo"in n}function Yq(n){return n instanceof Zt}function Kq(n){return typeof n.isDisposed=="function"?n.isDisposed():!1}function RM(n,e){let t=n;for(;t;){if(t===e)return!0;t=t.parent}return!1}function dF(n,e=[]){for(let t of n)t.isDisposed()||t.dispose(!0,!0);for(let t of e)t.isDisposed()||t.dispose(!1,!0)}function Qv(n){return new b(n.x,n.y,n.z)}function jq(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function Zq(n){let e=new We("measure-marker-mat",n);return e.diffuseColor=Jv.clone(),e.emissiveColor=Jv.clone(),e.specularColor=new Ee(0,0,0),e.disableLighting=!0,e.alpha=.96,e}function $v(n,e){let t=n.material;t&&(t.diffuseColor=e.clone(),t.emissiveColor=e.clone())}function Vve(n){let e=n.replace(/\s+#.*$/,"").trim();if(e.startsWith('"')){let t=e.indexOf('"',1);if(t>1)return e.slice(1,t)}return e}function Gve(n){let e=n.trim().split(/\s+/),t=e.findIndex(i=>!i.startsWith("-")&&!/^[-+]?\d*\.?\d+$/.test(i));return e.slice(Math.max(0,t)).join(" ").replace(/^"|"$/g,"")}function kve(n){var t,i;let e=(i=(t=n.split(".").pop())==null?void 0:t.toLowerCase())!=null?i:"png";return e==="jpg"||e==="jpeg"?"image/jpeg":e==="png"?"image/png":e==="bmp"?"image/bmp":e==="tga"?"image/x-tga":e==="webp"?"image/webp":`image/${e}`}function Wve(n,e,t){let i=Vs(e),r=i.replace(/\.[^.]+$/,""),s=ln(t),a=[In(n,e),In(n,i)];if(s)for(let o of zq)a.push(In(n,`${s}.${o}`));for(let o of zq){let l=`${r}.${o}`;l!==i&&a.push(In(n,l))}return a}function Hve(n){return new bM(n)}var xM,zq,Dve,Lve,Ove,Nve,Jv,wve,Fve,Xq,Aa,bM,Qq=I(()=>{"use strict";ID();Ys();mR();pR();FH();BH();QD();ke();zt();Fi();Vf();FL();Gc();A5();fO();Cb();O8();GD();Np();Kv();Kv();Iw();yw();qZ();Iq();jT();ua();_s();yq();Hq();qv();fl();rA();fC();Ag();Gs();cA();Eg();gA();xM=null,zq=["jpg","jpeg","png","bmp","tga","webp","tif","tiff"],Dve=/^\s*(map_Kd|map_Ka|map_Ks|map_Ns|map_d|map_bump|bump|disp|decal)\s+(.+)/i,Lve=.242,Ove=320,Nve=new Ee(.54,.71,.97),Jv=new Ee(.89,.91,.94),wve=new Ee(.96,.62,.04),Fve=new Ee(.97,.98,.99),Xq=new Ee(.8,.84,.88);Aa=class Aa{constructor(e){this.rootMesh=null;this.loadedMeshes=[];this.loadedTransformNodes=[];this.cachedRenderableMeshes=null;this.cachedRenderableRoot=null;this.loadedExt="";this.rendering=!1;this.contextLost=!1;this.viewportVisible=!0;this.viewportObserver=null;this.cleanupPicking=null;this.configLights=[];this.shadowGenerator=null;this.groundMesh=null;this.gridMesh=null;this.axisMeshes=[];this.autoRotateBehavior=null;this.wireframeEnabled=!1;this.gizmo=null;this.gizmoEnabled=!1;this.disassembly=null;this.focusSelectionEnabled=!1;this.focusedNode=null;this.originalMeshVisibility=new Map;this.bboxMesh=null;this.bboxEnabled=!1;this.currentQuality="high";this.resourceWarnings=[];this.gltfComponentMetadata=new Map;this.animPlaying=!1;this.initialCamera={alpha:Math.PI/4,beta:Math.PI/3,radius:5,target:b.Zero()};this.focusWorldPointFrame=0;this._lastPickResult={mesh:null,pickedPoint:null,screenX:0,screenY:0};this._onPickCallbacks=[];this.measurementActive=!1;this.measurementScale={x:1,y:1,z:1};this.measurementUnit="mm";this.measurementSegments=[];this.measurementMarkers=[];this.measurementObservers=new Set;this.pendingPoint=null;this.pendingMarker=null;this.hoveredMarkerIndex=-1;this.lastPointerClient={x:0,y:0};this.previewLine=null;this.cameraZoomObservers=new Set;this.handlePointerMove=e=>{if(this.lastPointerClient={x:e.clientX,y:e.clientY},!this.measurementActive||(this.pendingPoint&&this.updatePreviewLine(),this.measurementMarkers.length===0))return;let t=this.engine.getRenderingCanvas();if(!t)return;let i=t.getBoundingClientRect(),r=e.clientX-i.left,s=e.clientY-i.top,a=this.scene.pick(r,s,l=>this.measurementMarkers.includes(l)),o=a.hit?this.measurementMarkers.indexOf(a.pickedMesh):-1;if(o!==this.hoveredMarkerIndex){if(this.hoveredMarkerIndex>=0&&this.hoveredMarkerIndex=0&&o{e.preventDefault(),e.stopPropagation()};this.handleViewportIntersection=e=>{let t=e.some(i=>i.isIntersecting);t!==this.viewportVisible&&(this.viewportVisible=t,t?this.startRenderLoop():this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1))};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop()};this.engine=new Ge(e,!0,{preserveDrawingBuffer:!0}),this.scene=new ti(this.engine),this.scene.clearColor=new ft(.12,.12,.14,1),this.camera=new Si("cam",Math.PI/4,Math.PI/3,5,b.Zero(),this.scene),this.camera.attachControl(e,!0),this.camera.lowerRadiusLimit=.1,this.camera.wheelPrecision=45,this.camera.onViewMatrixChangedObservable.add(()=>this.notifyCameraZoomChanged()),e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),e.addEventListener("pointermove",this.handlePointerMove),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene.ambientColor=new Ee(.3,.3,.3);let t=new va("default-light",new b(0,1,.5),this.scene);t.intensity=1.2,this.resizeObs=new ResizeObserver(()=>this.engine.resize()),this.resizeObs.observe(e),typeof IntersectionObserver!="undefined"&&(this.viewportObserver=new IntersectionObserver(this.handleViewportIntersection,{root:null,threshold:[0,.01]}),this.viewportObserver.observe(e)),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}getCameraZoomRange(){if(!this.rootMesh)return null;let e=this.camera.radius,t=this.camera.lowerRadiusLimit,i=this.camera.upperRadiusLimit,r=typeof t=="number"&&Number.isFinite(t)&&t>0?t:Math.max(e*.08,1e-5),s=typeof i=="number"&&Number.isFinite(i)&&i>r?i:Math.max(e*8,r*10);return{current:Math.max(r,Math.min(e,s)),min:r,max:s}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}ensureDisassemblyController(){return this.rootMesh?(this.disassembly||(this.disassembly=Wq(this.scene,this.camera,this.rootMesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)),this.disassembly):null}isDisassemblyActive(){var e,t;return(t=(e=this.disassembly)==null?void 0:e.isEnabled())!=null?t:!1}async loadModel(e,t,i,r,s){var m,_,p;gi(s),await Yv(),gi(s),this.rootMesh&&(dF(this.loadedMeshes,this.loadedTransformNodes),this.rootMesh=null,this.notifyCameraZoomChanged()),this.invalidateMeshCache(),this.loadedMeshes=[],this.loadedTransformNodes=[],this.disposeMeasurementOverlays(!0),(m=this.disassembly)==null||m.dispose(),this.disassembly=null,this.clearFocusedMesh(),this.originalMeshVisibility.clear();let a=t.toLowerCase().replace(".","");this.loadedExt=a,this.resourceWarnings=[],gi(s),this.gltfComponentMetadata=jZ(e,a);let o=this.scene,c=(_={glb:".glb",gltf:".gltf",stl:".stl",obj:".obj",splat:".splat",ply:".ply"}[a])!=null?_:`.${a}`;gi(s);let f=`data:application/octet-stream;base64,${th(e)}`;gi(s);let d=g=>{try{gi(s)}catch(v){throw dF(g.meshes,g.transformNodes),v}this.loadedMeshes=g.meshes,this.loadedTransformNodes=g.transformNodes,g.meshes.length>0&&(this.rootMesh=g.meshes[0])},h=()=>{try{gi(s)}catch(g){throw dF(this.loadedMeshes,this.loadedTransformNodes),this.loadedMeshes=[],this.loadedTransformNodes=[],this.rootMesh=null,this.invalidateMeshCache(),this.notifyCameraZoomChanged(),g}};if(a==="obj"&&i&&r){xM&&await xM,gi(s);let g;xM=new Promise(v=>{g=v});try{let{OBJFileLoader:v}=await Promise.resolve().then(()=>(bw(),wZ)),T=v.prototype;typeof T._loadMTL!="function"&&console.warn("[AI3D] OBJFileLoader._loadMTL not found \u2014 MTL vault resolution disabled");let S=T._loadMTL,A=new TextDecoder().decode(new Uint8Array(e)).match(/mtllib\s+(.+)/),R=null;if(A&&i&&r){let y=Vve(A[1]),C=vg(r),D=In(C,y);try{let w=await i(D);gi(s);let O=new TextDecoder().decode(new Uint8Array(w)).split(` `);for(let V=0;VV!=="");if(!N.some(V=>/^\s*Kd\s+/i.test(V))){let V=N.findIndex(Q=>/^\s*newmtl\s+/i.test(Q));N.splice(V>=0?V+1:0,0,"Kd 0.80 0.80 0.80")}R=N.join(` -`)}catch(w){if(Sf(w))throw w;this.resourceWarnings.push(`OBJ material library not found: ${D}`)}}T._loadMTL=function(y,C,D){let w=R!=null?R:"";D(w)};let M=await wv(f,o,{meshNames:"",pluginExtension:c});d(M),T._loadMTL=S}catch(v){throw Sf(v)||console.error("[AI3D] OBJ load error:",v),v}finally{g(),AM=null}}else if(a==="stl"){let g=VZ(o,e);try{gi(s)}catch(v){throw g==null||g.dispose(!1,!0),v}this.rootMesh=g,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else if(a==="ply"){let g=kZ(o,e);try{gi(s)}catch(v){throw g==null||g.dispose(!1,!0),v}this.rootMesh=g,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else{let g=await wv(f,o,{meshNames:"",pluginExtension:c});d(g)}if(h(),!this.rootMesh)throw new Error("No mesh found in model file");for(let g of this.getRenderableMeshes(this.rootMesh))g.material&&(g.material.backFaceCulling=!1);let u=tA(this.getRenderableBounds(this.rootMesh));return this.camera.target=Qv(u.target),this.camera.radius=u.radius,this.camera.lowerRadiusLimit=u.lowerRadiusLimit,this.camera.upperRadiusLimit=u.upperRadiusLimit,this.camera.minZ=u.near,this.camera.maxZ=u.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged(),this.startRenderLoop(),this.engine.resize(),(p=this.cleanupPicking)==null||p.call(this),this.cleanupPicking=Mq(this.scene,g=>{if(this.isDisassemblyActive())return;if(this.measurementActive&&g.pickedPoint){this.addMeasurementPoint(Qv(g.pickedPoint));return}let v=g.mesh&&this.rootMesh?Zv(this.rootMesh,g.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,T={mesh:v,pickedPoint:g.pickedPoint,screenX:g.screenX,screenY:g.screenY};this._lastPickResult=T,this.focusSelectionEnabled&&v&&this.setFocusedNode(v),this._onPickCallbacks.forEach(S=>S(T))},()=>!this.focusSelectionEnabled,g=>this.resolvePickHighlightMeshes(g)),this.ensureDisassemblyController(),this.createModelSummary(this.rootMesh)}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.loadedExt==="stl"&&(e.stl.color&&this.setSTLColor(e.stl.color),e.stl.wireframe!==void 0&&this.setWireframe(e.stl.wireframe))}applyCameraConfig(e){var i;let t=this.engine.getRenderingCanvas();if(t){if(e.mode==="orthographic"){let r=this.camera.radius,s=t.clientWidth/t.clientHeight,a=(i=e.zoom)!=null?i:1,o=r/a;this.camera.mode=1,this.camera.orthoLeft=-o*s,this.camera.orthoRight=o*s,this.camera.orthoTop=o,this.camera.orthoBottom=-o}else this.camera.mode=0,e.fov&&(this.camera.fov=e.fov*Math.PI/180);if(e.position){let[r,s,a]=e.position;this.camera.setPosition(new b(r,s,a))}if(e.lookAt){let[r,s,a]=e.lookAt;this.camera.setTarget(new b(r,s,a))}e.near!==void 0&&(this.camera.minZ=e.near),e.far!==void 0&&(this.camera.maxZ=e.far),this.notifyCameraZoomChanged()}}applyLightConfig(e){var i;for(let r of this.configLights)r.dispose();this.configLights=[],(i=this.shadowGenerator)==null||i.dispose(),this.shadowGenerator=null;let t=this.scene.getLightByName("default-light");t&&t.dispose();for(let r of e){let s=this.createLight(r);s&&this.configLights.push(s)}}createLight(e){var r,s;let t=e.color?Ee.FromHexString(e.color):Ee.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?Ee.FromHexString(e.groundColor):new Ee(.2,.2,.2),o=new va("hemi",new b(0,1,0),this.scene);return o.diffuse=t,o.groundColor=a,o.intensity=i,o}case"directional":{let a=e.position?new b(...e.position).normalize():new b(-1,-2,-1).normalize(),o=new Qs("dir",a,this.scene);return o.diffuse=t,o.intensity=i,e.castShadow&&this.rootMesh&&this.setupShadow(o),o}case"point":{let a=e.position?new b(...e.position):new b(0,5,0),o=new qf("point",a,this.scene);return o.diffuse=t,o.intensity=i,e.decay!==void 0&&(o.decay=e.decay),o}case"spot":{let a=e.position?new b(...e.position):new b(0,5,0),l=(e.target?new b(...e.target):b.Zero()).subtract(a).normalize(),c=e.angle?e.angle*Math.PI/180:Math.PI/4,f=(s=e.penumbra)!=null?s:.5,d=new Kr("spot",a,l,c,f,this.scene);return d.diffuse=t,d.intensity=i,e.decay!==void 0&&(d.decay=e.decay),e.castShadow&&this.rootMesh&&this.setupShadow(d),d}case"attachToCam":{let a=new qf("cam-light",b.Zero(),this.scene);return a.diffuse=t,a.intensity=i,a.parent=this.camera,a}default:return null}}setupShadow(e){if(!this.rootMesh)return;if(!Bve(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Bi(1024,e);t.useBlurExponentialShadowMap=!0,t.blurKernel=32;for(let i of this.getRenderableMeshes(this.rootMesh))t.addShadowCaster(i),i.receiveShadows=!0;this.shadowGenerator=t}applySceneConfig(e){var t,i;if(e.background!==void 0){let r=ft.FromColor3(Ee.FromHexString(e.background),e.transparent?0:1);this.scene.clearColor=r}e.autoRotate&&(this.autoRotateBehavior?this.autoRotateBehavior.idleRotationSpeed=(i=e.autoRotateSpeed)!=null?i:.5:(this.autoRotateBehavior=new vp,this.autoRotateBehavior.idleRotationSpeed=(t=e.autoRotateSpeed)!=null?t:.5,this.autoRotateBehavior.idleRotationWaitTime=1e3,this.autoRotateBehavior.idleRotationSpinupTime=500,this.camera.addBehavior(this.autoRotateBehavior))),e.groundShadow&&this.rootMesh&&this.createGround(),e.grid&&this.createGrid(),e.axis&&this.createAxis()}createGround(){if(!this.rootMesh||this.groundMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=tr(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=xs.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new We("ground-mat",this.scene);s.diffuseColor=new Ee(.15,.15,.15),s.specularColor=Ee.Black(),s.alpha=.5,this.groundMesh.material=s,this.groundMesh.receiveShadows=!0}createGrid(){if(!this.rootMesh||this.gridMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=tr(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=xs.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new We("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new Ee(.3,.3,.3),s.emissiveColor=new Ee(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=W2(e)*1.5,i=Qv(e.min),r=Tg(e)*.01,s=[["x",Ee.Red(),new b(t,0,0)],["y",Ee.Green(),new b(0,t,0)],["z",Ee.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=xs.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new We(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=Ee.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=Ee.FromHexString(e);for(let i of this.getRenderableMeshes(this.rootMesh))if(i.material&&i.material.name==="stl-mat"){let r=i.material;r.diffuseColor=t,r.emissiveColor=t.scale(.1)}}setWireframe(e){this.rootMesh&&(fF(this.rootMesh)||(this.wireframeEnabled=e,this.scene.forceWireframe=e))}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}hasAnimations(){return this.scene.animationGroups.length>0}toggleAnimation(){let e=this.scene.animationGroups;if(e.length===0)return!1;this.animPlaying=!this.animPlaying;for(let t of e)this.animPlaying?t.play(!0):t.pause();return this.animPlaying}toggleMeasurement(){var e;return this.measurementActive=!this.measurementActive,(e=this.engine.getRenderingCanvas())==null||e.classList.toggle("ai3d-measurement-active",this.measurementActive),this.measurementActive||this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,(t=this.engine.getRenderingCanvas())==null||t.classList.remove("ai3d-measurement-active")),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments)i.line.dispose(!1,!0),i.label.dispose(!1,!0);this.measurementSegments=[];for(let i of this.measurementMarkers)i.dispose(!1,!0);this.measurementMarkers=[],this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=Rg(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=hA(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootMesh)return null;let e=this.getRenderableBounds(this.rootMesh);return e?{x:e.max.x-e.min.x,y:e.max.y-e.min.y,z:e.max.z-e.min.z}:null}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return pA(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let t of this.measurementSegments){let i=um(this.createMeasurementReading(t.start,t.end));t.label.dispose(!1,!0);let r=b.Center(t.start,t.end);t.label=this.createMeasurementLabelMesh(i,r,e)}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}setAnimationSpeed(e){for(let t of this.scene.animationGroups)t.speedRatio=e}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.scene.render(),e.toDataURL("image/png")):null}toggleOrientationGizmo(){return this.gizmoEnabled=!this.gizmoEnabled,this.gizmoEnabled&&!this.gizmo&&(this.gizmo=new SM(this.engine,this.camera)),this.gizmoEnabled}isOrientationGizmoEnabled(){return this.gizmoEnabled}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i={low:2,medium:1.33,high:1}[this.currentQuality],r=xr()?1.5:1;return this.engine.setHardwareScalingLevel(i*r/t),t}getCameraZoomState(){let e=this.getCameraZoomRange();if(!e)return null;let t=(e.max-e.current)/(e.max-e.min),i=jq(t);return{value:i,percentage:Math.round(i*100)}}setCameraZoom(e){let t=this.getCameraZoomRange();if(!t)return null;let i=jq(e);return this.camera.radius=t.max-i*(t.max-t.min),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}getPerformanceSnapshot(){return{backend:"babylon",renderScale:Number((1/this.engine.getHardwareScalingLevel()).toFixed(2)),quality:this.currentQuality,meshCount:this.rootMesh?this.getRenderableMeshes(this.rootMesh).length:0}}toggleBoundingBox(){var e;if(this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled){if(!this.rootMesh)return this.bboxEnabled;this.bboxMesh&&this.bboxMesh.dispose();let t=this.getRenderableBounds(this.rootMesh),i=Qv(Rr(t)),r=Qv(tr(t));this.bboxMesh=xs.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new We("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new Ee(1,1,0),s.disableLighting=!0,s.alpha=.6,this.bboxMesh.material=s}else(e=this.bboxMesh)==null||e.dispose(),this.bboxMesh=null;return this.bboxEnabled}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1)),this.focusSelectionEnabled=e,this.focusSelectionEnabled?this._lastPickResult.mesh&&this.setFocusedNode(this._lastPickResult.mesh):this.clearFocusedMesh(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}toggleDisassembly(){let e=this.ensureDisassemblyController();if(!e)return!1;let t=!e.isEnabled();return t&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&ZZ(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&Ow(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&Ow(this.rootMesh,this.loadedMeshes),this.resetDisassembly(),this.clearFocusedMesh(),this.camera.mode=0,this.camera.alpha=this.initialCamera.alpha,this.camera.beta=this.initialCamera.beta,this.camera.radius=this.initialCamera.radius,this.camera.target=this.initialCamera.target.clone(),this.startRenderLoop(),this.notifyCameraZoomChanged()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=fF(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Vs(e)||r.rootName;return aA({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>XZ(a,{isSplat:i})),materialNames:t.map(a=>{var o;return(o=a.material)==null?void 0:o.name})})}getModelEvidence(){if(!this.rootMesh)return null;let e=this.getRenderableMeshes(this.rootMesh),t=KZ(e,this.loadedTransformNodes,this.gltfComponentMetadata);return dA({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>Pw(i,this.gltfComponentMetadata),getMeshMaterialNames:i=>{var r;return[(r=i.material)==null?void 0:r.name]},resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var t;if(!this.rootMesh)return null;let e=(t=this.focusedNode)!=null?t:Yq(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Kq(e)?null:Dw(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?oA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Jt(e.pickedPoint):this.rootMesh&&Yq(e.mesh)?Dw(e.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata).center:null}focusWorldPoint(e){let t=new b(e.x,e.y,e.z),i=this.camera.target.clone(),r=performance.now();this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0);let s=a=>{let o=Math.min(1,Math.max(0,(a-r)/Ove)),l=o<.5?4*o*o*o:1-Math.pow(-2*o+2,3)/2;if(this.camera.target=b.Lerp(i,t,l),o<1&&!this.scene.isDisposed){this.focusWorldPointFrame=window.requestAnimationFrame(s);return}this.focusWorldPointFrame=0};this.focusWorldPointFrame=window.requestAnimationFrame(s)}getAnnotationCameraStateKey(){return fA([{value:this.camera.alpha,digits:3},{value:this.camera.beta,digits:3},{value:this.camera.radius,digits:3},{value:this.camera.target.x,digits:2},{value:this.camera.target.y,digits:2},{value:this.camera.target.z,digits:2}])}projectAnnotationWorldPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.scene.isDisposed)return!1;let r=this.engine.getRenderWidth(),s=this.engine.getRenderHeight();if(r===0||s===0||i.clientWidth===0||i.clientHeight===0)return!1;let a=Aa.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,Aa.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),Aa.annotationProjection),q2(Aa.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=Af(Jt(this.camera.position),e);if(!t)return!1;let i=Aa.annotationDirection,r=Aa.annotationRay;i.set(t.direction.x,t.direction.y,t.direction.z),r.origin=this.camera.position,r.direction=i,r.length=t.distance;let s=this.scene.pickWithRay(r);return!!(s!=null&&s.hit)&&Tf(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return cA({canvas:e,observeRender:t=>{let i=this.scene.onAfterRenderCameraObservable.add(r=>{r===this.camera&&t()});return{remove:()=>this.scene.onAfterRenderCameraObservable.remove(i)}},getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}getCanvas(){return this.engine.getRenderingCanvas()}getLastPickResult(){return this._lastPickResult}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}setRenderQuality(e,t=1){this.currentQuality=e;let i={low:2,medium:1.33,high:1},r=xr()?1.5:1,s=i[e]*r/Math.max(t,.25);if(this.engine.setHardwareScalingLevel(s),this.shadowGenerator){let a={low:0,medium:16,high:32};this.shadowGenerator.blurKernel=a[e],e==="low"?(this.shadowGenerator.useBlurExponentialShadowMap=!1,this.shadowGenerator.useExponentialShadowMap=!0):(this.shadowGenerator.useBlurExponentialShadowMap=!0,this.shadowGenerator.useExponentialShadowMap=!1)}}destroy(){var t,i,r,s,a,o,l,c;this.engine.stopRenderLoop(),this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0),this._onPickCallbacks=[],this.cameraZoomObservers.clear(),(t=this.cleanupPicking)==null||t.call(this),this.cleanupPicking=null,(i=this.gizmo)==null||i.dispose(),this.gizmo=null,(r=this.disassembly)==null||r.dispose(),this.disassembly=null,this.disposeMeasurementOverlays(!0),this.measurementObservers.clear(),this.clearFocusedMesh(),this.originalMeshVisibility.clear(),(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,this.camera.detachControl();let e=this.engine.getRenderingCanvas();e==null||e.removeEventListener("wheel",this.preventCanvasWheelScroll),e==null||e.removeEventListener("pointermove",this.handlePointerMove),e==null||e.removeEventListener("webglcontextlost",this.handleContextLost),e==null||e.removeEventListener("webglcontextrestored",this.handleContextRestored),(a=this.viewportObserver)==null||a.disconnect(),this.viewportObserver=null,this.resizeObs.disconnect(),this.invalidateMeshCache(),this.rootMesh=null,this.loadedMeshes=[],this.loadedTransformNodes=[],this.autoRotateBehavior&&(this.camera.removeBehavior(this.autoRotateBehavior),this.autoRotateBehavior=null);for(let f of this.configLights)f.dispose();this.configLights=[],(o=this.shadowGenerator)==null||o.dispose(),this.shadowGenerator=null,(l=this.groundMesh)==null||l.dispose(),this.groundMesh=null,(c=this.gridMesh)==null||c.dispose(),this.gridMesh=null;for(let f of this.axisMeshes)f.dispose();this.axisMeshes=[],this.scene.dispose(),this.engine.dispose()}startRenderLoop(){this.rendering||!this.viewportVisible||this.contextLost||(this.rendering=!0,this.engine.runRenderLoop(()=>{if(!this.canRender()||!this.viewportVisible||this.contextLost){this.engine.stopRenderLoop(),this.rendering=!1;return}this.scene.render(),this.gizmo&&this.gizmoEnabled&&(this.gizmo.syncWith(this.camera),this.gizmo.render())}))}getRenderableMeshes(e){if(this.cachedRenderableMeshes&&this.cachedRenderableRoot===e)return this.cachedRenderableMeshes;let t=Yh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return lM(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=Zv(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>xM(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||Kq(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>xM(a,t));if(r.length===0){this.clearFocusedMesh();return}let s=new Set(r);for(let a of i){this.originalMeshVisibility.has(a.uniqueId)||this.originalMeshVisibility.set(a.uniqueId,a.visibility);let o=s.has(a);a.visibility=o?1:Lve,a.renderOutline=o,a.outlineColor=new Ee(.18,.76,1),a.outlineWidth=o?.045:0}this.focusedNode=t}clearFocusedMesh(){if(!this.rootMesh){this.focusedNode=null;return}for(let e of this.getRenderableMeshes(this.rootMesh)){let t=this.originalMeshVisibility.get(e.uniqueId);t!==void 0&&(e.visibility=t),e.renderOutline=!1,e.outlineWidth=0}this.originalMeshVisibility.clear(),this.focusedNode=null}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>xM(r,e)))return e;if(!Uve(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>xM(s,r)))return r;i=i.parent}return null}getMeasurementMarkerSize(){if(!this.rootMesh)return .02;let e=this.getRenderableBounds(this.rootMesh);return e?Math.max(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z,.001)*.015:.02}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),$v(t,Jv));e&&this.scene.render()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>b.Distance(t.start,e)<1e-4||b.Distance(t.end,e)<1e-4)}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(b.Distance(i,this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=xs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1,s.material=Zq(this.scene),s.renderingGroupId=2,this.measurementMarkers.push(s)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),$v(this.pendingMarker,Jv)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=xs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1,s.material=Zq(this.scene),s.renderingGroupId=2,this.measurementMarkers.push(s),this.pendingMarker=s}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scaling.setAll(1.6),$v(this.pendingMarker,wve),this.pendingPoint=i,this.ensurePreviewLine()}this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){let i=xs.CreateLines("measure-line",{points:[e,t]},this.scene);i.color=Nve.clone(),i.alpha=.94,i.isPickable=!1,i.renderingGroupId=2;let r=um(this.createMeasurementReading(e,t)),s=b.Center(e,t),a=this.createMeasurementLabelMesh(r,s,this.getMeasurementMarkerSize()*4);this.measurementSegments.push({start:e,end:t,line:i,label:a})}createMeasurementLabelMesh(e,t,i){let r=xs.CreatePlane("measure-label",{width:i*4,height:i*.95},this.scene);r.position=t,r.billboardMode=q.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new xb("measure-label-tex",{width:640,height:160},this.scene);s.hasAlpha=!0;let a=s.getContext();mA(a,e,640,160),s.update();let o=new We("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new Ee(1,1,1),o.disableLighting=!0,o.opacityTexture=s,o.useAlphaFromDiffuseTexture=!0,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=xs.CreateLines("measure-preview",{points:[b.Zero(),b.Zero()],updatable:!0},this.scene),this.previewLine.color=Xq.clone(),this.previewLine.alpha=.68,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.engine.getRenderingCanvas();if(!e)return;let t=e.getBoundingClientRect(),i=this.lastPointerClient.x-t.left,r=this.lastPointerClient.y-t.top,s=this.scene.pick(i,r,o=>o!==this.previewLine&&!this.measurementMarkers.includes(o)),a;if(s.hit&&s.pickedPoint)a=s.pickedPoint;else{let o=this.scene.createPickingRay(i,r,Z.Identity(),this.camera);a=this.pendingPoint.add(o.direction.scale(5))}this.previewLine=xs.CreateLines("measure-preview",{points:[this.pendingPoint,a],instance:this.previewLine},this.scene),this.previewLine.color=Xq.clone(),this.previewLine.alpha=.68,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return uA(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}createModelSummary(e){let t=this.getRenderableMeshes(e),i=fF(e),r=t.reduce((s,a)=>s+_d(a),0);return cM(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};Aa.annotationIdentity=Z.Identity(),Aa.annotationWorldPoint=b.Zero(),Aa.annotationProjection=b.Zero(),Aa.annotationDirection=b.Zero(),Aa.annotationRay=new en(b.Zero(),b.Zero(),1);RM=Aa});async function $q(n,e){if(fu(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(xU(),AU));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(Qq(),qq));return i(n)}var Jq=I(()=>{"use strict";IE()});var tQ={};Fe(tQ,{createBabylonGridRenderer:()=>Xve});function zve(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function hF(n){return new b(n.x,n.y,n.z)}function eQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function Xve(n){return new uF(n)}var Yp,uF,iQ=I(()=>{"use strict";ID();Ys();uR();mR();ke();zt();Nm();Np();Vf();Gc();Kv();Kv();qv();KT();ua();fl();iA();Yp=32;uF=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.warmupFrame=null;this.cameraZoomObservers=new Set;this.preventCanvasWheelScroll=e=>{e.preventDefault(),e.stopPropagation()};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop(),this.markDirty(),this.scheduleWarmupFrames()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new Ge(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ti(this.engine),this.scene.clearColor=new ft(.12,.12,.14,1),this.scene.autoClear=!1,new va("default-light",new b(0,1,.5),this.scene),this.resizeObs=new ResizeObserver(()=>{this.engine.resize(),this.markDirty()}),this.resizeObs.observe(e),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}markDirty(){this.dirty=!0}getCameraZoomRange(e){let t=e.radius,i=e.lowerRadiusLimit,r=e.upperRadiusLimit,s=typeof i=="number"&&Number.isFinite(i)&&i>0?i:Math.max(t*.08,1e-5),a=typeof r=="number"&&Number.isFinite(r)&&r>s?r:Math.max(t*8,s*10);return{current:Math.max(s,Math.min(t,a)),min:s,max:a}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}scheduleWarmupFrames(e=8){this.warmupFrame!==null&&window.cancelAnimationFrame(this.warmupFrame),this.warmupFrame=window.requestAnimationFrame(()=>{this.warmupFrame=null,!(!this.canRender()||this.contextLost)&&(this.markDirty(),e>1&&this.scheduleWarmupFrames(e-1))})}getCellBounds(e){let t=gd(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,h,u;await Yv();let r=e.length>Yp?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${Yp} (layerMask limit)`),e.slice(0,Yp)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(h=t.gapX)!=null?h:.02,o=(u=t.gapY)!=null?u:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;mYp?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${Yp} (layerMask limit)`),e.placements.slice(0,Yp)):e.placements,r=[];for(let f=0;f0&&(h.push(...r[_]),u|=1<<_)}else h=d?[...d]:[],u=1<{this.markDirty(),this.notifyCameraZoomChanged()})),this.initialCameras.push({alpha:f.alpha,beta:f.beta,radius:f.radius,target:f.target.clone()}),f}async loadOne(e,t,i,r,s,a,o){var h,u;let l=await t(e.path),c=(u=(h=e.path.split(".").pop())==null?void 0:h.replace(".","").toLowerCase())!=null?u:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=Ee.FromHexString(e.color);for(let _ of f)_.material instanceof We&&_.material.name==="stl-mat"&&(_.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof We&&(m.material.wireframe=e.wireframe);let d=this.createCellCamera(f,o,i,r,s,a);this.cells.push({meshes:f,camera:d})}createCellCamera(e,t,i,r,s,a){let o=tA(this.getCellBounds(e)),l=new Si(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,hF(o.target),this.scene);l.fov=45*Math.PI/180,l.minZ=o.near,l.maxZ=o.far,l.lowerRadiusLimit=o.lowerRadiusLimit,l.upperRadiusLimit=o.upperRadiusLimit,l.wheelPrecision=45,l.viewport=new xo(i,r,s,a),l.layerMask=1<{this.markDirty(),this.notifyCameraZoomChanged()})),this.initialCameras.push({alpha:l.alpha,beta:l.beta,radius:l.radius,target:l.target.clone()}),l}renderFrame(){if(!this.canRender()||!this.dirty||this.contextLost)return;this.dirty=!1;let e=this.engine,t=this.scene;e.clear(t.clearColor,!0,!0);for(let i of this.cells){e.setViewport(i.camera.viewport);let r=i.camera.viewport,s=e.getRenderWidth(),a=e.getRenderHeight();e.enableScissor(r.x*s,r.y*a,r.width*s,r.height*a),t.activeCamera=i.camera,t.render(),e.disableScissor()}}startRenderLoop(){this.rendering||(this.rendering=!0,this.engine.runRenderLoop(()=>this.renderFrame()))}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.renderFrame(),e.toDataURL("image/png")):null}getEngine(){return this.engine}getScene(){return this.scene}getCellCount(){return this.cells.length}getCanvas(){return this.engine.getRenderingCanvas()}getPrimaryCamera(){var e,t;return(t=(e=this.cells[0])==null?void 0:e.camera)!=null?t:null}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i=xr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),t}getCameraZoomState(){var s;let e=(s=this.cells[0])==null?void 0:s.camera;if(!e)return null;let t=this.getCameraZoomRange(e),i=(t.max-t.current)/(t.max-t.min),r=eQ(i);return{value:r,percentage:Math.round(r*100)}}setCameraZoom(e){if(this.cells.length===0)return null;let t=eQ(e);for(let i of this.cells){let r=this.getCameraZoomRange(i.camera);i.camera.radius=r.max-t*(r.max-r.min)}return this.markDirty(),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}resetView(){for(let e=0;e(iQ(),tQ));return e(n)}var nQ=I(()=>{"use strict"});var oQ={};Fe(oQ,{createLoggedGridRenderer:()=>mF,createLoggedModelPreview:()=>Kp,logGridPreviewSelection:()=>aQ,logModelPreviewSelection:()=>sQ});function sQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason,ext:t.ext,annotationMode:t.annotationMode,requireWorkbenchFeatures:t.requireWorkbenchFeatures,rendererRollout:t.rendererRollout})}async function Kp(n,e,t,i){let r=fu(i);return sQ(n,e,r),{preview:await $q(t,i),route:r}}function aQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function mF(n,e,t){let i=Z1();return aQ(n,e,i),{renderer:await rQ(t),route:i}}var bM=I(()=>{"use strict";Jq();nQ();IE()});function pF(n){cQ=n}function MM(n){return lQ[n]>=lQ[cQ]}function IM(){return new Date().toISOString()}function yM(n){return n&&Object.keys(n).length>0?n:void 0}function qi(n){let e=`[AI3D][${n}]`;return{debug(t,i){MM("debug")&&console.debug(e,IM(),t,yM(i))},info(t,i){MM("info")&&console.debug(e,IM(),t,yM(i))},warn(t,i){MM("warn")&&console.warn(e,IM(),t,yM(i))},error(t,i){MM("error")&&console.error(e,IM(),t,yM(i))}}}var lQ,cQ,On=I(()=>{"use strict";lQ={debug:10,info:20,warn:30,error:40},cQ="warn"});var dQ={};Fe(dQ,{supportsAnimationPreview:()=>PM,supportsAnnotationPreview:()=>CM,supportsBoundingBoxPreview:()=>LM,supportsCameraZoomPreview:()=>NM,supportsDisassemblyPreview:()=>jp,supportsFocusSelectionPreview:()=>Zp,supportsMeasurementPreview:()=>os,supportsOrientationGizmoPreview:()=>eE,supportsRenderScalePreview:()=>OM,supportsWireframePreview:()=>DM,supportsWorkbenchPreview:()=>fQ});function cr(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function CM(n){return cr(n,"getAnnotationProvider")}function PM(n){return cr(n,"hasAnimations")&&cr(n,"toggleAnimation")}function os(n){return cr(n,"toggleMeasurement")&&cr(n,"isMeasurementActive")&&cr(n,"clearMeasurements")&&cr(n,"setMeasurementScale")&&cr(n,"getMeasurementScale")&&cr(n,"setMeasurementUnit")&&cr(n,"getMeasurementUnit")&&cr(n,"getMeasurementBounds")&&cr(n,"getMeasurementRecords")&&cr(n,"updateMeasurementLabels")&&cr(n,"exportMeasurements")}function jp(n){return cr(n,"toggleDisassembly")&&cr(n,"resetDisassembly")&&cr(n,"isDisassemblyEnabled")}function Zp(n){return cr(n,"toggleFocusSelection")&&cr(n,"isFocusSelectionEnabled")}function DM(n){return cr(n,"toggleWireframe")}function eE(n){return cr(n,"toggleOrientationGizmo")}function LM(n){return cr(n,"toggleBoundingBox")}function OM(n){return cr(n,"setRenderScale")}function NM(n){return cr(n,"getCameraZoomState")&&cr(n,"setCameraZoom")}function fQ(n){return cr(n,"setExplode")&&cr(n,"resetExplode")&&cr(n,"focusWorldPoint")}var Kh=I(()=>{"use strict"});function wM(n,e){return ih(n,e)}function hQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function FM(n,e){let t=wM("div","ai3d-zoom-control is-hidden"),i=wM("div","ai3d-zoom-track"),r=wM("div","ai3d-zoom-fill"),s=wM("input","ai3d-zoom-range");s.type="range",s.min="0",s.max="100",s.step="1",s.value="0",s.setAttribute("aria-label",j("helper.cameraZoomLabel")),s.setAttribute("aria-orientation","vertical"),i.appendChild(r),t.append(i,s),n.appendChild(t);let a=null,o=null,l=null,c=T=>{T.stopPropagation()};t.addEventListener("mousedown",c),t.addEventListener("click",c);function f(){let T=e();return NM(T)?T:null}function d(T){if(!T){t.classList.add("is-hidden"),s.disabled=!0;return}let S=hQ(T.value),E=Math.round(S*100);s.disabled=!1,s.value=String(E),t.style.setProperty("--ai3d-zoom-percent",`${E}%`);let A=Ki("helper.cameraZoomValue",{value:`${T.percentage}%`});s.setAttribute("aria-valuenow",String(E)),s.setAttribute("aria-valuetext",A),t.setAttribute("title",A),t.classList.remove("is-hidden")}function h(T){T!==a&&(o==null||o(),o=null,a=T,T!=null&&T.observeCameraZoom&&(o=T.observeCameraZoom(d)))}function u(){var S;let T=f();h(T),d((S=T==null?void 0:T.getCameraZoomState())!=null?S:null)}function m(){_(s.valueAsNumber/100)}function _(T){let S=a!=null?a:f();if(!S){u();return}h(S),d(S.setCameraZoom(hQ(T)))}function p(T){let S=i.getBoundingClientRect();return S.height<=0?s.valueAsNumber/100:1-(T-S.top)/S.height}function g(T){T.preventDefault(),T.stopPropagation(),s.focus({preventScroll:!0}),_(p(T.clientY))}function v(T){var S;l===T.pointerId&&(T.preventDefault(),T.stopPropagation(),(S=t.hasPointerCapture)!=null&&S.call(t,T.pointerId)&&t.releasePointerCapture(T.pointerId),l=null,t.classList.remove("is-dragging"))}return s.addEventListener("input",m),t.addEventListener("pointerdown",T=>{var S;if(T.button!==0||s.disabled){T.stopPropagation();return}l=T.pointerId,(S=t.setPointerCapture)==null||S.call(t,T.pointerId),t.classList.add("is-dragging"),g(T)}),t.addEventListener("pointermove",T=>{l===T.pointerId&&g(T)}),t.addEventListener("pointerup",v),t.addEventListener("pointercancel",v),t.addEventListener("wheel",T=>{T.preventDefault(),T.stopPropagation();let S=T.deltaY<0?6:-6;s.value=String(Math.max(0,Math.min(100,s.valueAsNumber+S))),m()},{passive:!1}),u(),{sync:u,destroy(){o==null||o(),o=null,a=null,t.remove()}}}var _F=I(()=>{"use strict";_n();Kh();cm()});function Zr(n){let e=createSvg("svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("width","16"),e.setAttribute("height","16");let t=new DOMParser().parseFromString(`${n}`,"image/svg+xml");for(let i of Array.from(t.documentElement.childNodes))e.appendChild(activeDocument.importNode(i,!0));return e}function uQ(n){var a,o;let[e,t]=n.split(","),i=(o=(a=e.match(/:(.*?);/))==null?void 0:a[1])!=null?o:"image/png",r=atob(t),s=new Uint8Array(r.length);for(let l=0;l{ne.stopPropagation()};h.addEventListener("pointerdown",p),h.addEventListener("mousedown",p),h.addEventListener("click",p),f&&(h.classList.add("is-mobile"),mQ(e,!1));let g=FM(e,i),v=null,T=null,S=ne=>(ne.classList.add("is-secondary"),ne),E=(ne,ze)=>{ne.classList.toggle("ai3d-btn-active",ze),ne.setAttribute("aria-pressed",String(ze))},A=()=>{for(let ne of[u,m,_]){let ze=Array.from(ne.querySelectorAll(".ai3d-inline-btn")).filter(Li=>!Li.classList.contains("is-hidden")),di=ze.length>0,Wi=ze.some(Li=>!Li.classList.contains("is-secondary"));ne.classList.toggle("is-hidden",!di),ne.classList.toggle("has-primary-visible",Wi)}},R=!1,M=!1,y=f?u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":j("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;y==null||y.appendChild(Zr(''));let C=(Rn=y==null?void 0:y.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?Rn:null,D=()=>{f&&y&&(mQ(e,R),E(y,R),C==null||C.setText(R?j("helper.scrollAction"):j("helper.interactAction")),y.setAttribute("aria-label",R?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))),E(Yi,M),h.classList.toggle("show-secondary",M),A()},w=ne=>{R=ne,D()};y==null||y.addEventListener("click",()=>{let ne=!R;l==null||l(ne),w(ne),Pi(y,ne?j("helper.interactionOn"):j("helper.interactionOff"))});let G=(ne,ze)=>{ne.classList.toggle("is-hidden",!ze)},O=null,N=()=>{var Li;let ne=i(),ze=ne&&Zp(ne)?ne:null,di=ne&&jp(ne)?ne:null,Wi=ne&&os(ne)?ne:null;E(de,!!(ze!=null&&ze.isFocusSelectionEnabled())),E(ge,!!(di!=null&&di.isDisassemblyEnabled())),E(Pe,!!(Wi!=null&&Wi.isMeasurementActive())),ne&&eE(ne)&&E(z,!!((Li=ne.isOrientationGizmoEnabled)!=null&&Li.call(ne)))},B=()=>{let ne=i(),ze=ne&&Zp(ne)?ne:null,di=ne&&jp(ne)?ne:null,Wi=ne&&PM(ne)?ne:null;ne!==O&&(O=ne,E(J,!1),E(Y,!1),E(ue,!1),ue.replaceChildren(Zr('')),G(V,!!(ne!=null&&ne.resetView)),G(Q,!!(ne!=null&&ne.exportModelInfo)),G(K,!!(ne!=null&&ne.exportSelectedPartInfo)),G(J,!!ne&&DM(ne)),G(z,!!ne&&eE(ne)),G(Y,!!ne&&LM(ne)),G(de,!!ze),G(ge,!!di),G(ie,!!ne&&OM(ne)),G(ue,!!(Wi!=null&&Wi.hasAnimations()))),G(Pe,!!ne&&os(ne)),N(),Pt(),A(),g.sync()},V=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.resetViewLabel")}});pn(V,"reset-view"),V.appendChild(Zr('')),V.addEventListener("click",()=>{let ne=i();ne!=null&&ne.resetView&&(ne.resetView(),B(),Pi(V,j("helper.resetViewDone")))});let Q=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copyModelInfoLabel")}}));pn(Q,"copy-model-info"),Q.appendChild(Zr('')),Q.addEventListener("click",()=>{let ne=i();if(ne!=null&&ne.exportModelInfo)try{let ze=ne.exportModelInfo(r());if(!ze)return;navigator.clipboard.writeText(ze).then(()=>{Pi(Q,j("helper.copied"))}).catch(()=>{Pi(Q,j("helper.failed"))})}catch(ze){console.error("[AI3D] Export model info failed:",ze),Pi(Q,j("helper.failed"))}});let K=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySelectedPartInfoLabel")}}));pn(K,"copy-selected-part-info"),K.appendChild(Zr('')),K.addEventListener("click",()=>{let ne=i();if(ne!=null&&ne.exportSelectedPartInfo)try{let ze=ne.exportSelectedPartInfo();if(!ze){Pi(K,j("helper.noSelectedPart"));return}navigator.clipboard.writeText(ze).then(()=>{Pi(K,j("helper.copied"))}).catch(()=>{Pi(K,j("helper.failed"))})}catch(ze){console.error("[AI3D] Export selected part info failed:",ze),Pi(K,j("helper.failed"))}});let J=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleWireframeLabel"),"aria-pressed":"false"}});pn(J,"toggle-wireframe"),J.appendChild(Zr('')),J.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleWireframe))return;let ze=ne.toggleWireframe();E(J,ze),Pi(J,ze?j("helper.wireframeOn"):j("helper.wireframeOff"))});let z=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleAxesLabel"),"aria-pressed":"false"}});pn(z,"toggle-axes"),z.appendChild(Zr('')),z.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleOrientationGizmo))return;let ze=ne.toggleOrientationGizmo();E(z,ze),Pi(z,ze?j("helper.axesOn"):j("helper.axesOff"))});let Y=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});pn(Y,"toggle-bounding-box"),Y.appendChild(Zr('')),Y.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleBoundingBox))return;let ze=ne.toggleBoundingBox();E(Y,ze),Pi(Y,ze?j("helper.boundingBoxOn"):j("helper.boundingBoxOff"))});let de=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});pn(de,"toggle-focus"),de.appendChild(Zr('')),de.addEventListener("click",()=>{let ne=i();if(!ne||!Zp(ne))return;let ze=ne.toggleFocusSelection();B(),Pi(de,ze?j("helper.focusSelectionOn"):j("helper.focusSelectionOff"))});let ge=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});pn(ge,"toggle-disassembly"),ge.appendChild(Zr('')),ge.addEventListener("click",()=>{let ne=i();if(!ne||!jp(ne))return;let ze=ne.toggleDisassembly();B(),Pi(ge,ze?j("helper.disassemblyOn"):j("helper.disassemblyOff"))});let Ue=[.5,.75,1,1.5,2],oe=(Ar=a==null?void 0:a().renderScale)!=null?Ar:1,ve=Ue.reduce((ne,ze,di)=>{let Wi=Math.abs(ze-oe),Li=Math.abs(Ue[ne]-oe);return Wi{let ne=i();if(!(ne!=null&&ne.setRenderScale))return;ve=(ve+1)%Ue.length;let ze=ne.setRenderScale(Ue[ve]);ie.textContent=`${ze.toFixed(1)}x`,Pi(ie,Ki("helper.resolutionValue",{value:`${ze}x`}))});let ue=S(u.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));pn(ue,"toggle-animation"),ue.appendChild(Zr('')),ue.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleAnimation))return;let ze=ne.toggleAnimation();ue.replaceChildren(Zr(ze?'':'')),E(ue,ze),Pi(ue,ze?j("helper.playing"):j("helper.paused"))});let Pe=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:j("helper.toggleMeasurementLabel")}});pn(Pe,"toggle-measurement"),Pe.appendChild(Zr('')),Pe.addEventListener("click",()=>{let ne=i();if(!ne||!os(ne))return;let ze=ne.toggleMeasurement();E(Pe,ze),Pi(Pe,ze?j("helper.measurementOn"):j("helper.measurementOff")),ze||E(ye,!1),Pt()});function me(ne){let ze=i();!ze||!os(ze)||(ze.clearMeasurements(),E(Pe,ze.isMeasurementActive()),Pt(),Pi(ne,j("helper.measurementsCleared")))}function be(ne){let ze=i();if(!ze||!os(ze))return;let di=ze.exportMeasurements();if(!di){Pi(ne,j("helper.noMeasurements"));return}navigator.clipboard.writeText(di).then(()=>{Pi(ne,j("helper.measurementsCopied"))}).catch(()=>{Pi(ne,j("helper.failed"))})}let De=m.createEl("button",{cls:"ai3d-measurement-strip is-hidden",attr:{"aria-expanded":"false","aria-label":j("helper.calibrateLabel")}});pn(De,"toggle-measurement-details"),De.setAttribute("aria-live","polite");let ut=De.createSpan({cls:"ai3d-measurement-strip-value"}),Ye=De.createSpan({cls:"ai3d-measurement-strip-meta"});function je(){let ne=i();return ne&&os(ne)?ne:null}function Qt(ne){ne!==v&&(T==null||T(),T=null,v=ne,ne!=null&&ne.observeMeasurements&&(T=ne.observeMeasurements(Pt)))}function Pt(){var Xo;let ne=je();if(Qt(ne),!ne){De.classList.add("is-hidden"),X.classList.add("is-hidden"),De.classList.remove("is-expanded"),De.setAttribute("aria-expanded","false"),he.disabled=!0,ye.disabled=!0;return}let ze=ne.isMeasurementActive(),di=ne.getMeasurementRecords(),Wi=(Xo=di[di.length-1])!=null?Xo:null,Li=di.length>0,wn=ne.getMeasurementUnit();De.classList.toggle("is-hidden",!ze&&!Li),!ze&&!Li&&(X.classList.add("is-hidden"),De.classList.remove("is-expanded"),De.setAttribute("aria-expanded","false")),De.classList.toggle("is-active",ze),De.classList.toggle("has-records",Li),ut.textContent=Wi?ah(Wi.reading.distance,Wi.reading.unit):ze?j("helper.measurementStripActive"):j("helper.measurementStripEmpty"),Ye.textContent=Li?Ki("helper.measurementStripSaved",{count:String(di.length)}):wn,De.setAttribute("aria-label",[j("helper.measurementStripTitle"),ut.textContent,Ye.textContent,j("helper.calibrateLabel")].filter(Boolean).join(" "));let ls=Li;he.disabled=!ls,ye.disabled=!ls,E(Pe,ze)}let Ti=_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySnapshotLabel")}});pn(Ti,"copy-snapshot"),Ti.appendChild(Zr('')),Ti.addEventListener("click",()=>{let ne=i();if(ne)try{let ze=ne.captureSnapshot();if(!ze)return;let di=uQ(ze);navigator.clipboard.write([new ClipboardItem({"image/png":di})]).then(()=>{Pi(Ti,j("helper.copied"))}).catch(()=>{Pi(Ti,j("helper.failed"))})}catch(ze){console.error("[AI3D] Copy snapshot failed:",ze),Pi(Ti,j("helper.failed"))}});let se=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.saveSnapshotLabel")}}));pn(se,"save-snapshot"),se.appendChild(Zr('')),se.addEventListener("click",()=>{var ze,di;let ne=i();if(ne)try{let Wi=ne.captureSnapshot();if(!Wi)return;let Li=r(),wn=ln(Li)||"model",ls=a==null?void 0:a(),Xo=(ze=ls==null?void 0:ls.snapshotFolder)!=null?ze:"Media/3D Previews",nu=(di=ls==null?void 0:ls.snapshotNaming)!=null?di:"model-name",d_=Date.now(),su=nu==="timestamp"?`snapshot_${d_}.png`:`${wn}_snapshot_${d_}.png`,EE=uQ(Wi),jc=new FileReader;jc.onload=()=>{let M0=jc.result;t.vault.adapter.exists(Xo).then(h_=>h_?Promise.resolve():t.vault.createFolder(Xo).catch(I0=>{Yve.warn("Failed to create vault folder",{path:Xo,error:String(I0)})})).then(()=>t.vault.createBinary(`${Xo}/${su}`,M0)).then(()=>{Pi(se,j("helper.saved"))}).catch(h_=>{console.error("[AI3D] Save snapshot failed:",h_),Pi(se,j("helper.failed"))})},jc.onerror=()=>{console.error("[AI3D] FileReader error"),Pi(se,j("helper.failed"))},jc.onabort=()=>{console.error("[AI3D] FileReader aborted"),Pi(se,j("helper.failed"))},jc.readAsArrayBuffer(EE)}catch(Wi){console.error("[AI3D] Save snapshot failed:",Wi),Pi(se,j("helper.failed"))}});let Di=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.downloadSnapshotLabel")}}));pn(Di,"download-snapshot"),Di.appendChild(Zr('')),Di.addEventListener("click",()=>{let ne=i();if(ne)try{let ze=ne.captureSnapshot();if(!ze)return;let di=r(),Li=`${ln(di)||"model"}_snapshot_${Date.now()}.png`,wn=createEl("a");wn.href=ze,wn.download=Li,activeDocument.body.appendChild(wn),wn.click(),wn.remove(),Pi(Di,j("helper.downloaded"))}catch(ze){console.error("[AI3D] Download snapshot failed:",ze),Pi(Di,j("helper.failed"))}});let ii=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.removePreviewLabel")}}));pn(ii,"remove-preview"),ii.appendChild(Zr('')),ii.addEventListener("click",s);let yi=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":j(d.labelKey),"aria-pressed":"false"}});pn(yi,"toggle-annotation"),yi.appendChild(Zr(''));let ct=yi.createSpan({cls:"ai3d-pin-badge is-hidden"});yi.addEventListener("click",()=>{if(!o)return;let ne=o();E(yi,ne),Pi(yi,ne?j(d.activeTooltipKey):j(d.inactiveTooltipKey))});let Yi=h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":j("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Yi.appendChild(Zr('')),Yi.addEventListener("click",()=>{M=!M,Yi.setAttribute("aria-label",M?j("helper.hideMoreActionsLabel"):j("helper.showMoreActionsLabel")),D(),Pi(Yi,M?j("helper.moreActionsShown"):j("helper.moreActionsHidden"))}),n.insertBefore(h,e.nextSibling);let X=h.createDiv({cls:"ai3d-measurement-details is-hidden"});X.setAttribute("role","group"),X.setAttribute("aria-label",j("helper.calibrateTitle")),X.addEventListener("pointerdown",p),X.addEventListener("mousedown",p),X.addEventListener("click",p),X.createDiv({cls:"ai3d-measurement-details-title",text:j("helper.calibrateTitle")});let U=X.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-actions"}),he=U.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":j("helper.copyMeasurementsLabel")}});pn(he,"copy-measurements"),he.appendChild(Zr('')),he.addEventListener("click",()=>{be(he)});let ye=U.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":j("helper.clearMeasurementsLabel")}});pn(ye,"clear-measurements"),ye.appendChild(Zr('')),ye.addEventListener("click",()=>{me(ye)});let Be=X.createDiv({cls:"ai3d-measurement-detail-row"});Be.createSpan({cls:"ai3d-measurement-detail-label",text:j("helper.calibrateCurrent")});let Je=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),st=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),Ie=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),Le=X.createDiv({cls:"ai3d-measurement-detail-row"});Le.createSpan({cls:"ai3d-measurement-detail-label",text:j("helper.calibrateReal")});let lt=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"X"}}),dt=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Y"}}),qe=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Z"}}),et=X.createDiv({cls:"ai3d-measurement-detail-row"}),wt=et.createEl("select",{cls:"ai3d-measurement-detail-select"});for(let ne of["um","mm","cm","m"]){let ze=wt.createEl("option");ze.value=ne,ze.textContent=ne}wt.value="mm";let $t=et.createEl("label",{cls:"ai3d-measurement-detail-lock"}),bi=$t.createEl("input",{attr:{type:"checkbox",checked:"true"}});$t.appendChild(activeDocument.createTextNode(" "+j("helper.calibrateLock")));let ae=X.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-scale-actions"}),tt=ae.createEl("button",{cls:"ai3d-inline-btn",text:j("helper.calibrateApply")}),Ce=ae.createEl("button",{cls:"ai3d-inline-btn is-secondary",text:j("helper.calibrateReset")}),Ze=null;function rt(){var Wi,Li;let ne=i();if(!ne||!os(ne))return;let ze=(Li=(Wi=ne.getMeasurementBounds)==null?void 0:Wi.call(ne))!=null?Li:null,di=ne.getMeasurementScale();wt.value=ne.getMeasurementUnit(),Ze=ze,ze?(Je.textContent=`X: ${(ze.x*di.x).toFixed(3)}`,st.textContent=`Y: ${(ze.y*di.y).toFixed(3)}`,Ie.textContent=`Z: ${(ze.z*di.z).toFixed(3)}`):(Je.textContent="X: -",st.textContent="Y: -",Ie.textContent="Z: -")}function Ve(){var wn,ls;let ne=i();if(!ne||!os(ne)||!Ze)return;let ze=parseFloat(lt.value),di=parseFloat(dt.value),Wi=parseFloat(qe.value);if(!isFinite(ze)||!isFinite(di)||!isFinite(Wi))return;let Li={x:Ze.x>1e-4?ze/Ze.x:1,y:Ze.y>1e-4?di/Ze.y:1,z:Ze.z>1e-4?Wi/Ze.z:1};(wn=ne.setMeasurementUnit)==null||wn.call(ne,wt.value),(ls=ne.setMeasurementScale)==null||ls.call(ne,Li),Pt(),Pi(tt,j("helper.calibrated"))}function Mt(){var ze,di;let ne=i();!ne||!os(ne)||((ze=ne.setMeasurementUnit)==null||ze.call(ne,wt.value),(di=ne.setMeasurementScale)==null||di.call(ne,{x:1,y:1,z:1}),rt(),Ze?(lt.value=Ze.x.toFixed(3),dt.value=Ze.y.toFixed(3),qe.value=Ze.z.toFixed(3)):(lt.value="",dt.value="",qe.value=""),Pt(),Pi(Ce,j("helper.calibrateResetDone")))}function Xt(ne){if(!bi.checked||!Ze)return;let di=parseFloat((ne==="x"?lt:ne==="y"?dt:qe).value);if(!isFinite(di)||di===0)return;let Wi=Ze[ne];if(Wi<=1e-4)return;let Li=di/Wi;ne!=="x"&&(lt.value=(Ze.x*Li).toFixed(3)),ne!=="y"&&(dt.value=(Ze.y*Li).toFixed(3)),ne!=="z"&&(qe.value=(Ze.z*Li).toFixed(3))}lt.addEventListener("input",()=>Xt("x")),dt.addEventListener("input",()=>Xt("y")),qe.addEventListener("input",()=>Xt("z")),wt.addEventListener("change",()=>{let ne=i();!ne||!os(ne)||(ne.setMeasurementUnit(wt.value),Pt())}),tt.addEventListener("click",Ve),Ce.addEventListener("click",Mt);function pr(){if(rt(),Ze){let ne=i(),ze=ne&&os(ne)?ne.getMeasurementScale():{x:1,y:1,z:1};lt.value=(Ze.x*ze.x).toFixed(3),dt.value=(Ze.y*ze.y).toFixed(3),qe.value=(Ze.z*ze.z).toFixed(3)}else lt.value="",dt.value="",qe.value=""}function Ai(ne,ze){ne&&pr(),X.classList.toggle("is-hidden",!ne),De.classList.toggle("is-expanded",ne),De.setAttribute("aria-expanded",String(ne)),Pt(),Pi(ze,ne?j("helper.calibrateOpen"):j("helper.calibrateClose"))}return De.addEventListener("click",()=>{De.classList.contains("is-hidden")||Ai(X.classList.contains("is-hidden"),De)}),D(),B(),{showAnimButton(){ue.classList.remove("is-hidden"),A()},showAnnotateButton(){yi.classList.remove("is-hidden"),A()},updateAnnotationBadge(ne){ne>0?(ct.textContent=String(ne),ct.classList.remove("is-hidden")):ct.classList.add("is-hidden")},setMobileInteractionMode(ne){f&&w(ne)},syncCapabilities:B}}function Pi(n,e){var i;(i=gF.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,gF.set(n,t),window.setTimeout(()=>{t.remove(),gF.delete(n)},1500)}var Yve,gF,vF=I(()=>{"use strict";_n();On();Kh();ua();_s();_A();_F();Yve=qi("helper-buttons");gF=new WeakMap});function pQ(n){let e=$a(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),Kve.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var Kve,_Q=I(()=>{"use strict";eo();On();Kve=qi("direct-load-service")});var gQ={};Fe(gQ,{MissingConverterError:()=>Sd,MobileConversionUnavailableError:()=>jh,describeModelLoadFailure:()=>rE,formatModelLoadFailure:()=>BM,isMissingConverterError:()=>iE});function UM(n){return`.${n.trim().toLowerCase()}`}function iE(n){return n instanceof Sd}function BM(n){var e;if(n instanceof Sd){let t=(e=jve[n.converterId])!=null?e:n.converterId;return Ki("modelLoad.warningMessage",{ext:UM(n.sourceExt),converterName:t})}return n instanceof jh?Ki("modelLoad.mobileWarningMessage",{ext:UM(n.sourceExt)}):Ki("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function rE(n){return n instanceof Sd?{level:"warning",title:j("modelLoad.warningTitle"),message:BM(n),hint:j("modelLoad.warningHint")}:n instanceof jh?{level:"warning",title:j("modelLoad.warningTitle"),message:BM(n),hint:j("modelLoad.mobileWarningHint")}:{level:"error",title:j("modelLoad.errorTitle"),message:BM(n),hint:j("modelLoad.errorHint")}}var jve,Sd,jh,qp=I(()=>{"use strict";_n();jve={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};Sd=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${UM(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},jh=class extends Error{constructor(t){super(`Format ${UM(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var TQ={};Fe(TQ,{convertForPreview:()=>tEe});function EQ(n,e){let t=n.lastIndexOf("."),i=t>0?n.slice(0,t):n,r=Math.max(i.lastIndexOf("/"),i.lastIndexOf("\\")),s=i.slice(0,r+1),a=i.slice(r+1);return`${s}${a}.ai3d-converted.${e}`}function Zve(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function SQ(n){let e=zn(n);return Hn(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function vQ(n){return Hn(n,zn(n)).toLowerCase()}function qve(n,e,t){if(!t)return EQ(n,e);let i=SQ(n),r=Zve(`${n}::${e}`);return zi(t,`${i}-${r}.ai3d-converted.${e}`)}function Qve(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function $ve(n){if(!n)return!1;try{return await ms(n,ps),!0}catch(e){return!1}}async function GM(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:Jd(n),Jd(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function Jve(n){return typeof n=="function"?await n():n}async function eEe(n,e,t,i){var l,c;let r=(c=(l=n.convertedAssetCache)==null?void 0:l.entries())!=null?c:[];if(r.length===0)return;let s=vQ(n.sourcePath),a=SQ(n.sourcePath),o=r.filter(f=>f.sourcePath!==n.sourcePath&&f.sourceExt===n.sourceExt&&f.targetExt===e&&f.outputExt===e&&f.converterId===t&&vQ(f.sourcePath)===s&&Hn(f.outputPath).startsWith(`${a}-`)&&Hn(f.outputPath).endsWith(`.ai3d-converted.${e}`)).sort((f,d)=>d.createdAt-f.createdAt);for(let f of o)if(await GM(n.sourcePath,f.outputPath,i))return f}async function tEe(n){var h,u,m,_,p,g,v,T,S,E;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(h=n.capability.outputFormat)!=null?h:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);Xc.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=Jd(n.sourcePath)),i),s=(u=n.convertedAssetCache)==null?void 0:u.get(n.sourcePath,n.sourceExt,t);if(s)if(!await $ve(s.outputPath))Xc.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!Qve(s,e))Xc.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(_=n.convertedAssetCache)==null||_.delete(n.sourcePath,n.sourceExt,t);else if(!await GM(n.sourcePath,s.outputPath,r()))Xc.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(p=n.convertedAssetCache)==null||p.delete(n.sourcePath,n.sourceExt,t);else return Xc.info("conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),{effectivePath:s.outputPath,effectiveExt:s.outputExt,warnings:[...s.warnings,"Using cached conversion output."]};let a=qve(n.sourcePath,t,n.outputRoot);if(await GM(n.sourcePath,a,r()))return Xc.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(g=n.convertedAssetCache)==null||g.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:a,effectiveExt:t,warnings:["Using existing conversion output."]};let o=EQ(n.sourcePath,t);if(o!==a&&await GM(n.sourcePath,o,r()))return Xc.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(v=n.convertedAssetCache)==null||v.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:o,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:o,effectiveExt:t,warnings:["Using existing conversion output."]};let l=await eEe(n,t,e,r());if(l)return Xc.info("relocated conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,previousSourcePath:l.sourcePath,outputPath:l.outputPath}),(T=n.convertedAssetCache)==null||T.set({cacheVersion:2,converterId:l.converterId,converterCacheKey:l.converterCacheKey,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:l.outputPath,outputExt:t,warnings:[...l.warnings,"Using relocated conversion output."],createdAt:Date.now()}),{effectivePath:l.outputPath,effectiveExt:t,warnings:[...l.warnings,"Using relocated conversion output."]};let c=await Jve(n.conversionManager);if(!c)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!c.canConvert(n.sourceExt))throw new Sd(e,n.sourceExt);let f=await c.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await kn(n.outputRoot,{recursive:!0});let d=await c.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(E=n.convertedAssetCache)==null||E.set({cacheVersion:2,converterId:e,converterCacheKey:(S=f==null?void 0:f.cacheKey)!=null?S:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:d.outputPath,outputExt:d.outputExt,warnings:d.warnings,createdAt:Date.now()}),Xc.info("conversion route done",{sourcePath:n.sourcePath,outputPath:d.outputPath,warningCount:d.warnings.length}),{effectivePath:d.outputPath,effectiveExt:d.outputExt,warnings:d.warnings}}var Xc,AQ=I(()=>{"use strict";C0();On();rr();qp();Xc=qi("conversion-service")});var xQ={};Fe(xQ,{prepareModelInput:()=>Qp});function iEe(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function Qp(n){var a,o;let e=$a((a=n.path.split(".").pop())!=null?a:""),t=P0(e);if(Td.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw Td.warn("unsupported format",{sourceExt:e,path:n.path}),u_(e)?new Error("SPLAT preview is disabled in packaged builds. Local-only .splat support is planned; .spz and .sog remain unavailable until their decoders can be bundled locally."):new Error(`Unsupported format: .${e}`);let i=iEe(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(xr())throw Td.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new jh(e);if(!n.absolutePath)throw Td.error("filesystem path missing for conversion",{sourceExt:e,path:n.path}),new Error(`Format .${e} requires a local filesystem path for conversion, but none was resolved for '${n.path}'.`);let l=t.strategy==="convert"?t:{...t,strategy:"convert",outputFormat:(o=t.outputFormat)!=null?o:"glb"};if(!l.converterId)throw Td.error("preferred conversion route missing converter id",{sourceExt:e,path:n.path}),new Error(`Format .${e} is configured to prefer conversion, but no converter id is defined.`);i&&t.strategy==="direct"&&Td.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(AQ(),TQ)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return Td.info("conversion completed",{sourceExt:e,outputExt:f.effectiveExt,outputPath:f.effectivePath,warningCount:f.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:"convert",effectivePath:f.effectivePath,effectiveExt:f.effectiveExt,warnings:f.warnings}}let s=pQ({path:n.path,sourceExt:e});return Td.debug("direct route",{sourceExt:e,path:n.path,warningCount:s.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:t.strategy,effectivePath:s.effectivePath,effectiveExt:s.effectiveExt,warnings:s.warnings}}var Td,kM=I(()=>{"use strict";eo();_Q();qp();On();ua();Td=qi("model-pipeline")});function nE(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var EF=I(()=>{"use strict"});var RQ={};Fe(RQ,{listPreferredConversionExts:()=>$p});function $p(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var WM=I(()=>{"use strict"});function Zh(n,e){var r;let i=e.auxiliaryFileFolder.trim()||M2(n,rEe);return(r=$l(n,i))!=null?r:void 0}var rEe,HM=I(()=>{"use strict";_s();rEe="ai-model-workbench/converted-assets"});function qh(n){let e=n.createDiv({cls:"ai3d-loading-overlay"}),t=e.createDiv({cls:"ai3d-loading-skeleton"});t.createDiv({cls:"ai3d-loading-skeleton-canvas"});let i=t.createDiv({cls:"ai3d-loading-skeleton-meta"});i.createDiv({cls:"ai3d-loading-skeleton-line"}),i.createDiv({cls:"ai3d-loading-skeleton-line is-short"}),e.createDiv({cls:"ai3d-loading-spinner"});let r=e.createDiv({cls:"ai3d-loading-text"}),s="loading.default",a="",o=()=>{r.textContent=s?j(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=H1(()=>{!f&&s&&o()});return{el:e,setPhase(h){s=null,a=h,f||o()},setPhaseKey(h){s=h,f||o()},setProgress(h){f||(h<0?(c.className="ai3d-loading-bar-fill is-indeterminate",c.style.removeProperty("--bar-width")):(c.className="ai3d-loading-bar-fill",c.style.setProperty("--bar-width",`${Math.min(100,Math.max(0,h))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var zM=I(()=>{"use strict";_n()});var SF={};Fe(SF,{renderModelLoadFailure:()=>sE,renderModelPerformanceFeedback:()=>aE});function sE(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});xr()&&t.classList.add("is-mobile");let i=t.createDiv({cls:`ai3d-load-feedback is-${e.level}`});return i.createDiv({cls:"ai3d-load-feedback-title",text:e.title}),i.createDiv({cls:"ai3d-load-feedback-message",text:e.message}),i.createDiv({cls:"ai3d-load-feedback-hint",text:e.hint}),t}function aE(n,e){var o,l,c,f,d,h,u;if((!e.performanceTier||e.performanceTier==="light")&&!((o=e.resourceWarnings)!=null&&o.length))return null;let t=(l=e.performanceTier)!=null?l:"light",i=((c=e.splatCount)!=null?c:e.triangleCount).toLocaleString(),r=e.splatCount!==void 0?"splats":"triangles",s=n.createDiv({cls:`ai3d-performance-feedback is-${t}`});s.createDiv({cls:"ai3d-performance-feedback-tier",text:(f=e.resourceWarnings)!=null&&f.length?"assets":(d=e.performanceTier)!=null?d:"light"}),s.createDiv({cls:"ai3d-performance-feedback-meta",text:(h=e.resourceWarnings)!=null&&h.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(u=e.resourceWarnings)!=null?u:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` -`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var oE=I(()=>{"use strict";ua()});function Yc(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return nEe.has(e)?e:"glb"}function Qh(n,e,t){return typeof n=="string"&&sEe.has(n)?n:e===t?"direct":"convert"}var nEe,sEe,XM=I(()=>{"use strict";nEe=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),sEe=new Set(["direct","convert"])});function Jp(n,e,t){let i=j("previewCanvas.modelShortcuts");PQ(n,{label:Ki(IQ[e],{model:Vs(t)||j("workbench.modelTitle"),shortcuts:i}),shortcutKeys:aEe,shortcutHint:i})}function yQ(n){let e=j("previewCanvas.gridShortcuts");PQ(n,{label:Ki(IQ.grid,{shortcuts:e}),shortcutKeys:oEe,shortcutHint:e})}function e_(n,e){n.addEventListener("keydown",t=>{var s,a,o,l,c;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"?((a=i.toggleWireframe)==null||a.call(i),t.preventDefault()):r==="g"?((o=i.toggleOrientationGizmo)==null||o.call(i),t.preventDefault()):r==="b"?((l=i.toggleBoundingBox)==null||l.call(i),t.preventDefault()):r===" "?((c=i.toggleAnimation)==null||c.call(i),t.preventDefault()):r==="m"&&(os(i)&&i.toggleMeasurement(),t.preventDefault())})}function CQ(n,e){n.addEventListener("keydown",t=>{var s,a;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"&&((a=i.toggleWireframe)==null||a.call(i),t.preventDefault())})}function PQ(n,e){lEe(n),n.setAttribute("role","application"),n.setAttribute("aria-label",e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),n.setAttribute("title",e.shortcutHint),n.dataset.testid="ai3d-preview-canvas"}function lEe(n){if(MQ(n),bQ.has(n)||typeof MutationObserver=="undefined")return;bQ.add(n),new MutationObserver(()=>MQ(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function MQ(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var aEe,oEe,bQ,IQ,YM=I(()=>{"use strict";_n();Kh();_s();aEe=["R","W","G","B","M","Space"],oEe=["R","W"],bQ=new WeakSet,IQ={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function DQ(n){let{contentEl:e,filePath:t,mobile:i,getPreview:r}=n,s=e.createDiv({cls:"ai3d-workspace"}),a=s.createDiv({cls:"ai3d-workspace-track-top"}),o=a.createDiv({cls:"ai3d-workspace-main"}),l=a.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-h"}),c=a.createDiv({cls:"ai3d-workspace-sidebar"}),f=createDiv(),d=f.createDiv({cls:"ai3d-preview-host"}),h=f.createEl("canvas");h.className="ai3d-canvas-full",Jp(h,"direct-view",t),e_(h,r),d.appendChild(h);let u=f.createDiv();u.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(u),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),_=m.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"}),p=m.createDiv({cls:"ai3d-sidebar-body"}),g=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:h,modeOverlay:u,sidebarContent:p,vHandle:g,workbenchPanel:_}}var LQ=I(()=>{"use strict";_n();YM()});function KM(n){return Math.round(n!=null?n:0).toLocaleString()}function cEe(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function fEe(n){return n==="three"?"Three.js":"Babylon.js"}function OQ(n){var f,d;let{panel:e,summary:t,route:i,registeredPartCount:r}=n;e.empty(),e.removeClass("is-hidden"),e.dataset.ai3dBackend=i.backend,e.dataset.ai3dRouteReason=i.reason;let s=e.createDiv({cls:"ai3d-direct-workbench-overview"}),a=s.createDiv({cls:"ai3d-direct-workbench-status"}),o=a.createDiv({cls:"ai3d-direct-workbench-line"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:fEe(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});t_(c,j("workbench.meshesLabel"),KM(t.meshCount)),t_(c,j("directWorkbench.partCandidatesLabel"),KM(r)),t_(c,t.splatCount!==void 0?j("workbench.splatsLabel"):j("workbench.trianglesLabel"),KM((f=t.splatCount)!=null?f:t.triangleCount)),t_(c,j("workbench.materialsLabel"),KM(t.materialCount)),t_(c,j("workbench.boundingSizeLabel"),cEe(t)),t_(c,j("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function t_(n,e,t){let i=n.createDiv({cls:"ai3d-direct-workbench-metric"});i.createSpan({cls:"ai3d-direct-workbench-label",text:e}),i.createSpan({cls:"ai3d-direct-workbench-value",text:t})}var NQ=I(()=>{"use strict";_n()});function dEe(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&jM.has(e.ext)&&jM.has(e.sourceExt)}function hEe(n){return wQ.has(n.ext)?n.strategy==="direct"?wQ.has(n.sourceExt):n.strategy==="convert"&&jM.has(n.ext):!1}function uEe(n){return n.strategy==="convert"&&jM.has(n.ext)}function FQ(n,e){let t=dEe(n,e),i=hEe(e),r=uEe(e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!i,rendererRollout:r?"three-direct-glb":n.previewRendererRollout,useThreeRenderer:r?!0:n.useThreeRenderer}}var wQ,jM,BQ=I(()=>{"use strict";wQ=new Set(["glb","gltf","stl","ply","obj"]),jM=new Set(["glb","gltf"])});function i_(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function TEe(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?i_(n):(e!=null?e:0)>=pEe?{renderQuality:n.renderQuality==="high"?"medium":n.renderQuality,renderScale:Math.min(n.renderScale,TF)}:(e!=null?e:0)>=mEe?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,GQ)}:i_(n)}function xF(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}function AEe(n){return n.splatCount!==void 0?n.splatCount>=VQ:xF(n)>=gEe}function xEe(n){return n.splatCount!==void 0?n.splatCount>=EEe:xF(n)>=vEe}function REe(n){return n.splatCount!==void 0?n.splatCount>=VQ:xF(n)>=_Ee}function kQ(n,e){return e.performanceTier==="extreme"?xEe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,TF)}:i_(n):e.performanceTier==="heavy"?AEe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,TF)}:i_(n):e.performanceTier==="medium"&&REe(e)?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,GQ)}:i_(n)}function r_(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function ZM(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function WQ(n){try{return decodeURIComponent(n)}catch(e){return n}}function AF(n){let e=WQ(n).replace(/\\/g,"/"),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function HQ(n,e){return AF(n?`${n}/${ZM(e)}`:ZM(e))}function zQ(n){let e=n.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function bEe(n){return!n||n.startsWith("data:")?!0:SEe.test(n)&&!r_(n)}function MEe(n,e){return r_(n)?AF(ZM(e)):HQ(zQ(n),e)}async function IEe(n,e){let t=await yEe(n,e);return t===null?null:e.toLowerCase().split(/[?#]/,1)[0].endsWith(".gltf")?DEe(n,e,t):t}async function yEe(n,e){if(r_(e))try{let{stat:i}=await Promise.resolve().then(()=>(rr(),zT));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return XQ(t)?t.stat.size:null}async function CEe(n,e){if(r_(e))try{let{readFile:r}=await Promise.resolve().then(()=>(rr(),zT));return new TextDecoder().decode(await r(e))}catch(r){return null}let t=n.vault.getAbstractFileByPath(e),i=n.vault;if(!(t instanceof UQ.TFile)||typeof i.read!="function")return null;try{return await i.read(t)}catch(r){return null}}async function PEe(n,e,t){if(r_(e))try{let{pathJoin:a,pathNormalize:o,stat:l}=await Promise.resolve().then(()=>(rr(),zT)),c=ZM(WQ(t)),f=o(e.replace(/[\\/][^\\/]*$/,"")),d=r_(c)?o(c):o(a(f,c));return(await l(d)).size}catch(a){return null}let i=zQ(e),r=HQ(i,t),s=n.vault.getAbstractFileByPath(r);return XQ(s)?s.stat.size:null}async function DEe(n,e,t){var l,c;let i=await CEe(n,e);if(!i)return t;let r;try{r=JSON.parse(i)}catch(f){return t}let s=t,a=new Set,o=async(f,d)=>{var p;let h=f==null?void 0:f.uri;if(!h||bEe(h))return;let u=MEe(e,h);if(!u||a.has(u))return;a.add(u);let m=await PEe(n,e,h);if(m!==null&&Number.isFinite(m)&&m>0){s+=m;return}let _=(p=f==null?void 0:f.byteLength)!=null?p:d;Number.isFinite(_)&&(_!=null?_:0)>0&&(s+=_!=null?_:0)};for(let f of(l=r.buffers)!=null?l:[])await o(f,f.byteLength);for(let f of(c=r.images)!=null?c:[])await o(f);return s}function XQ(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function n_(n,e,t){return TEe(t,await IEe(n,e))}var UQ,mEe,pEe,_Ee,gEe,vEe,VQ,EEe,GQ,TF,SEe,qM=I(()=>{"use strict";UQ=require("obsidian"),mEe=64*1024*1024,pEe=192*1024*1024,_Ee=18e4,gEe=45e4,vEe=12e5,VQ=65e4,EEe=15e5,GQ=1.25,TF=1,SEe=/^[a-z][a-z0-9+.-]*:/i});function OEe(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new RF(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var lE,LEe,RF,QM,YQ=I(()=>{"use strict";eo();On();lE=qi("conversion-manager"),LEe=3e5,RF=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};QM=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get($a(e))}registerConverter(e){lE.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set($a(t),e)}canConvert(e){let t=$a(e),i=this.converters.has(t);return lE.debug("can convert",{ext:t,ok:i}),i}async getConverterCacheIdentity(e){let t=this.getConverter(e);if(t)return{converterId:t.id,cacheKey:await t.getCacheKey()}}async convert(e){var o;let t=$a(e.sourceExt),i=this.getConverter(t);if(!i)throw lE.error("converter missing",{ext:t,targetExt:e.targetExt}),new Error(`No converter registered for .${t}`);let r=`${e.sourcePath}::${t}::${e.targetExt}`,s=this.pending.get(r);if(s)return lE.info("joining in-flight conversion",{key:r}),s;lE.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=OEe(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:LEe,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var NF={};Fe(NF,{describeConverterCommandSource:()=>PF,inspectAllConverterCommands:()=>QEe,inspectConverterCommand:()=>OF,listConverterCommandSpecs:()=>qEe,resolveConverterCommand:()=>$Ee,resolveConverterInvocation:()=>Nn});function IF(...n){let e=(He==null?void 0:He.platform)==="darwin"?["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin","/usr/bin"]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin","/usr/bin"];return Array.from(new Set(e.flatMap(t=>n.map(i=>`${t}/${i}`))))}function wEe(){var r,s,a;if((He==null?void 0:He.platform)==="darwin")return["/Applications/FreeCAD.app/Contents/MacOS/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/freecadcmd",...IF("FreeCADCmd","freecadcmd")];if((He==null?void 0:He.platform)!=="win32")return["/usr/local/bin/freecadcmd","/opt/homebrew/bin/freecadcmd","/opt/local/bin/freecadcmd","/snap/freecad/current/usr/bin/freecadcmd","/usr/bin/freecadcmd"];let n=[],e=(r=He==null?void 0:He.env)==null?void 0:r.LOCALAPPDATA,t=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,i=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"];if(e&&n.push(zi(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(zi(t,"FreeCAD","bin","FreeCADCmd.exe")),e)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${e}/Programs/FreeCAD ${o}/bin/FreeCADCmd.exe`);if(t)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${t}/FreeCAD ${o}/bin/FreeCADCmd.exe`);return i&&n.push(`${i}/FreeCAD/bin/FreeCADCmd.exe`),n}function FEe(n){var a,o,l,c;if((He==null?void 0:He.platform)!=="win32")return[];let e=(a=He==null?void 0:He.env)==null?void 0:a.APPDATA,t=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,i=(l=He==null?void 0:He.env)==null?void 0:l.npm_config_prefix,r=(c=He==null?void 0:He.env)==null?void 0:c.USERPROFILE,s=[i,e?zi(e,"npm"):void 0,t?zi(t,"npm"):void 0,r?zi(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>zi(f,n))))}function BEe(...n){var s,a,o;if((He==null?void 0:He.platform)!=="win32")return[];let e=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,t=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"],i=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,r=[e,t,i?zi(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>zi(l,c)))))}async function LF(n){try{return await ms(n,(He==null?void 0:He.platform)==="win32"?ps:eC),!0}catch(e){return!1}}function bF(n){let e=n==null?void 0:n.trim();if(e)return e}function jQ(n){return UEe.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function VEe(n,e){for(let t of[n,...e]){let i=jQ(t);if(!i.ok)return i}return{ok:!0}}async function GEe(n){try{return(await Jd(n)).isFile()}catch(e){return!1}}function kEe(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:NEe}async function XEe(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(tC).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?zEe(n):[""];for(let s of t)for(let a of i){let o=zi(s,a?`${n}${a}`:n);if(await LF(o))return o}}function yF(n,e,t=15e3){let i=jQ(n);return i.ok?new Promise((r,s)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:4*1024*1024},(a,o,l)=>{if(a){s(new Error((l||o||a.message).toString().trim()||a.message));return}r({stdout:o!=null?o:"",stderr:l!=null?l:""})})}):Promise.reject(new Error(`Refusing to execute converter command: ${i.reason}`))}function CF(n){let t=(n instanceof Error?n.message:String(n)).replace(/\s+/g," ").trim();return t.length>180?`${t.slice(0,177)}...`:t}async function MF(n,e,t,i){let r="";for(let s of t)try{return await yF(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=CF(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function YEe(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad")try{return await yF(e,[...t,"-c","import cadquery, trimesh; print('ok')"]),[{kind:"cad-python",ok:!0,detail:""}]}catch(r){return[{kind:"cad-python",ok:!1,detail:CF(r)}]}if(n.id==="assimp")try{return await yF(e,[...t,"-c","import trimesh, numpy, networkx, collada; print('ok')"]),[{kind:"mesh-python",ok:!0,detail:""}]}catch(r){return[{kind:"mesh-python",ok:!1,detail:CF(r)}]}if(n.id==="freecadcmd"){let r=await MF(e,t,[["--version"],["--help"]],/freecad|usage|help|version/i);return[{kind:"freecadcmd-cli",ok:r.ok,detail:r.detail}]}if(n.id==="obj2gltf"){let r=await MF(e,t,[["--version"],["--help"]],/obj2gltf|usage|help|version/i);return[{kind:"obj2gltf-cli",ok:r.ok,detail:r.detail}]}if(n.id==="fbx2gltf"){let r=await MF(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function KEe(n){let e=DF.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function jEe(n){var s,a,o,l;let e=(a=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles)==null?void 0:a.toLowerCase(),t=(l=(o=He==null?void 0:He.env)==null?void 0:o["ProgramFiles(x86)"])==null?void 0:l.toLowerCase(),i=[],r=[];for(let c of n.knownCandidates){let f=c.toLowerCase(),d=(He==null?void 0:He.platform)==="win32"&&((e?f.startsWith(e):!1)||(t?f.startsWith(t):!1)),h=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||h?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function KQ(n,e,t){for(let i of e)if(await LF(i))return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,command:i,executable:i,args:[],resolvedPath:i,available:!0,source:"candidate",detail:t,checkedCandidates:[i]}}function ZEe(n,e){let t=[];return n.length&&t.push(`Checked common user locations: ${n.join("; ")}`),e.length&&t.push(`Checked system fallback locations: ${e.join("; ")}`),t.join(". ")}async function $M(n,e,t,i){let r=WEe(e),s=VEe(r.executable,r.args);if(!s.ok)return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:void 0,available:!1,source:t,detail:s.reason,checkedCandidates:[r.executable]};if(HEe(r.executable)){let[o,l]=await Promise.all([LF(r.executable),GEe(r.executable)]),c=o&&l;return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:c?r.executable:void 0,available:c,source:t,detail:c?`Using ${PF(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await XEe(r.executable);return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:a,available:!!a,source:t,detail:a?`Resolved from ${PF(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function qEe(){return DF}function PF(n){switch(n){case"settings":return"plugin settings";case"env":return"environment variable";case"candidate":return"known install location";case"path":return"PATH fallback"}}async function OF(n,e){var h,u,m;let t=KEe(n),{userCandidates:i,systemCandidates:r}=jEe(t),s=bF(e);if(s)return $M(t,s,"settings",s);let a=bF((h=He==null?void 0:He.env)==null?void 0:h[t.envVar]);if(a)return $M(t,a,"env");for(let _ of(u=t.envVarAliases)!=null?u:[]){let p=bF((m=He==null?void 0:He.env)==null?void 0:m[_]);if(p)return $M(t,p,"env")}let o=await KQ(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let _ of t.fallbackCommands){let p=await $M(t,_,"path");if(l.push(p),p.available)return p}let c=await KQ(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(_=>_.checkedCandidates),d=ZEe(i,r);return{...l[0],detail:d?`Command name was not found on PATH. ${d}`:"Command name was not found on PATH.",checkedCandidates:[...i,...f,...r]}}async function QEe(n){let e=await Promise.all(DF.map(t=>OF(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await YEe(t)})))}async function $Ee(n,e){return(await Nn(n,e)).command}async function Nn(n,e){var i;let t=await OF(n,e);if(!t.available&&t.detail==="Command contains unsafe shell metacharacters.")throw new Error(`Refusing to resolve converter command '${n}': ${t.detail}`);return{command:(i=t.resolvedPath)!=null?i:t.executable,args:[...t.args]}}var He,NEe,DF,UEe,Ad=I(()=>{"use strict";rr();rr();rr();He=sm(),NEe=[".exe",".cmd",".bat",".com"];DF=[{id:"freecad",label:"Python (CadQuery/OCCT)",settingsKey:"freecadCommand",envVar:"AI3D_FREECAD_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand",envVar:"AI3D_OBJ2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["obj2gltf.cmd"]:["obj2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?FEe("obj2gltf.cmd"):IF("obj2gltf")},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand",envVar:"AI3D_FBX2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FBX2glTF.exe"]:["FBX2glTF","fbx2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?BEe(zi("FBX2glTF","FBX2glTF-windows-x64.exe"),zi("FBX2glTF","FBX2glTF.exe")):IF("FBX2glTF","fbx2gltf")},{id:"assimp",label:"Python (trimesh)",settingsKey:"assimpCommand",envVar:"AI3D_ASSIMP_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"freecadcmd",label:"FreeCAD (SLDPRT)",settingsKey:"freecadcmdCommand",envVar:"AI3D_FREECADCMD",envVarAliases:["AI3D_FREECMDCMD"],fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FreeCADCmd.exe"]:["freecadcmd","FreeCADCmd"],knownCandidates:wEe()}];UEe=/[;|&<>$`\r\n\t]/});var qQ,ZQ=I(()=>{qQ=`import cadquery as cq +`)}catch(w){if(Sf(w))throw w;this.resourceWarnings.push(`OBJ material library not found: ${D}`)}}T._loadMTL=function(y,C,D){let w=R!=null?R:"";D(w)};let M=await wv(f,o,{meshNames:"",pluginExtension:c});d(M),T._loadMTL=S}catch(v){throw Sf(v)||console.error("[AI3D] OBJ load error:",v),v}finally{g(),xM=null}}else if(a==="stl"){let g=VZ(o,e);try{gi(s)}catch(v){throw g==null||g.dispose(!1,!0),v}this.rootMesh=g,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else if(a==="ply"){let g=kZ(o,e);try{gi(s)}catch(v){throw g==null||g.dispose(!1,!0),v}this.rootMesh=g,this.rootMesh&&(this.loadedMeshes=[this.rootMesh])}else{let g=await wv(f,o,{meshNames:"",pluginExtension:c});d(g)}if(h(),!this.rootMesh)throw new Error("No mesh found in model file");for(let g of this.getRenderableMeshes(this.rootMesh))g.material&&(g.material.backFaceCulling=!1);let u=iA(this.getRenderableBounds(this.rootMesh));return this.camera.target=Qv(u.target),this.camera.radius=u.radius,this.camera.lowerRadiusLimit=u.lowerRadiusLimit,this.camera.upperRadiusLimit=u.upperRadiusLimit,this.camera.minZ=u.near,this.camera.maxZ=u.far,this.initialCamera={alpha:this.camera.alpha,beta:this.camera.beta,radius:this.camera.radius,target:this.camera.target.clone()},this.notifyCameraZoomChanged(),this.startRenderLoop(),this.engine.resize(),(p=this.cleanupPicking)==null||p.call(this),this.cleanupPicking=Mq(this.scene,g=>{if(this.isDisassemblyActive())return;if(this.measurementActive&&g.pickedPoint){this.addMeasurementPoint(Qv(g.pickedPoint));return}let v=g.mesh&&this.rootMesh?Zv(this.rootMesh,g.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata):null,T={mesh:v,pickedPoint:g.pickedPoint,screenX:g.screenX,screenY:g.screenY};this._lastPickResult=T,this.focusSelectionEnabled&&v&&this.setFocusedNode(v),this._onPickCallbacks.forEach(S=>S(T))},()=>!this.focusSelectionEnabled,g=>this.resolvePickHighlightMeshes(g)),this.ensureDisassemblyController(),this.createModelSummary(this.rootMesh)}applyConfig(e){e.camera&&this.applyCameraConfig(e.camera),e.lights&&this.applyLightConfig(e.lights),e.scene&&this.applySceneConfig(e.scene),e.stl&&this.loadedExt==="stl"&&(e.stl.color&&this.setSTLColor(e.stl.color),e.stl.wireframe!==void 0&&this.setWireframe(e.stl.wireframe))}applyCameraConfig(e){var i;let t=this.engine.getRenderingCanvas();if(t){if(e.mode==="orthographic"){let r=this.camera.radius,s=t.clientWidth/t.clientHeight,a=(i=e.zoom)!=null?i:1,o=r/a;this.camera.mode=1,this.camera.orthoLeft=-o*s,this.camera.orthoRight=o*s,this.camera.orthoTop=o,this.camera.orthoBottom=-o}else this.camera.mode=0,e.fov&&(this.camera.fov=e.fov*Math.PI/180);if(e.position){let[r,s,a]=e.position;this.camera.setPosition(new b(r,s,a))}if(e.lookAt){let[r,s,a]=e.lookAt;this.camera.setTarget(new b(r,s,a))}e.near!==void 0&&(this.camera.minZ=e.near),e.far!==void 0&&(this.camera.maxZ=e.far),this.notifyCameraZoomChanged()}}applyLightConfig(e){var i;for(let r of this.configLights)r.dispose();this.configLights=[],(i=this.shadowGenerator)==null||i.dispose(),this.shadowGenerator=null;let t=this.scene.getLightByName("default-light");t&&t.dispose();for(let r of e){let s=this.createLight(r);s&&this.configLights.push(s)}}createLight(e){var r,s;let t=e.color?Ee.FromHexString(e.color):Ee.White(),i=(r=e.intensity)!=null?r:1;switch(e.type){case"hemisphere":{let a=e.groundColor?Ee.FromHexString(e.groundColor):new Ee(.2,.2,.2),o=new va("hemi",new b(0,1,0),this.scene);return o.diffuse=t,o.groundColor=a,o.intensity=i,o}case"directional":{let a=e.position?new b(...e.position).normalize():new b(-1,-2,-1).normalize(),o=new Qs("dir",a,this.scene);return o.diffuse=t,o.intensity=i,e.castShadow&&this.rootMesh&&this.setupShadow(o),o}case"point":{let a=e.position?new b(...e.position):new b(0,5,0),o=new qf("point",a,this.scene);return o.diffuse=t,o.intensity=i,e.decay!==void 0&&(o.decay=e.decay),o}case"spot":{let a=e.position?new b(...e.position):new b(0,5,0),l=(e.target?new b(...e.target):b.Zero()).subtract(a).normalize(),c=e.angle?e.angle*Math.PI/180:Math.PI/4,f=(s=e.penumbra)!=null?s:.5,d=new Kr("spot",a,l,c,f,this.scene);return d.diffuse=t,d.intensity=i,e.decay!==void 0&&(d.decay=e.decay),e.castShadow&&this.rootMesh&&this.setupShadow(d),d}case"attachToCam":{let a=new qf("cam-light",b.Zero(),this.scene);return a.diffuse=t,a.intensity=i,a.parent=this.camera,a}default:return null}}setupShadow(e){if(!this.rootMesh)return;if(!Bve(e)){console.warn("[AI3D] Light type does not support shadows:",e.name);return}let t=new Bi(1024,e);t.useBlurExponentialShadowMap=!0,t.blurKernel=32;for(let i of this.getRenderableMeshes(this.rootMesh))t.addShadowCaster(i),i.receiveShadows=!0;this.shadowGenerator=t}applySceneConfig(e){var t,i;if(e.background!==void 0){let r=ft.FromColor3(Ee.FromHexString(e.background),e.transparent?0:1);this.scene.clearColor=r}e.autoRotate&&(this.autoRotateBehavior?this.autoRotateBehavior.idleRotationSpeed=(i=e.autoRotateSpeed)!=null?i:.5:(this.autoRotateBehavior=new vp,this.autoRotateBehavior.idleRotationSpeed=(t=e.autoRotateSpeed)!=null?t:.5,this.autoRotateBehavior.idleRotationWaitTime=1e3,this.autoRotateBehavior.idleRotationSpinupTime=500,this.camera.addBehavior(this.autoRotateBehavior))),e.groundShadow&&this.rootMesh&&this.createGround(),e.grid&&this.createGrid(),e.axis&&this.createAxis()}createGround(){if(!this.rootMesh||this.groundMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=tr(e),i=Math.max(t.x,t.z)*3,r=e.min.y;this.groundMesh=xs.CreateGround("ground",{width:i,height:i},this.scene),this.groundMesh.position.y=r;let s=new We("ground-mat",this.scene);s.diffuseColor=new Ee(.15,.15,.15),s.specularColor=Ee.Black(),s.alpha=.5,this.groundMesh.material=s,this.groundMesh.receiveShadows=!0}createGrid(){if(!this.rootMesh||this.gridMesh)return;let e=this.getRenderableBounds(this.rootMesh),t=tr(e),i=Math.max(t.x,t.z)*2,r=e.min.y-.01;this.gridMesh=xs.CreateGround("grid",{width:i,height:i,subdivisions:20},this.scene),this.gridMesh.position.y=r;let s=new We("grid-mat",this.scene);s.wireframe=!0,s.diffuseColor=new Ee(.3,.3,.3),s.emissiveColor=new Ee(.1,.1,.1),this.gridMesh.material=s}createAxis(){if(!this.rootMesh||this.axisMeshes.length>0)return;let e=this.getRenderableBounds(this.rootMesh),t=W2(e)*1.5,i=Qv(e.min),r=Tg(e)*.01,s=[["x",Ee.Red(),new b(t,0,0)],["y",Ee.Green(),new b(0,t,0)],["z",Ee.Blue(),new b(0,0,t)]];for(let[a,o,l]of s){let c=xs.CreateTube(`axis-${a}`,{path:[i,i.add(l)],radius:r,tessellation:8},this.scene),f=new We(`axis-${a}-mat`,this.scene);f.emissiveColor=o,f.diffuseColor=Ee.Black(),c.material=f,this.axisMeshes.push(c)}}setSTLColor(e){if(!this.rootMesh)return;let t=Ee.FromHexString(e);for(let i of this.getRenderableMeshes(this.rootMesh))if(i.material&&i.material.name==="stl-mat"){let r=i.material;r.diffuseColor=t,r.emissiveColor=t.scale(.1)}}setWireframe(e){this.rootMesh&&(fF(this.rootMesh)||(this.wireframeEnabled=e,this.scene.forceWireframe=e))}toggleWireframe(){return this.setWireframe(!this.wireframeEnabled),this.wireframeEnabled}hasAnimations(){return this.scene.animationGroups.length>0}toggleAnimation(){let e=this.scene.animationGroups;if(e.length===0)return!1;this.animPlaying=!this.animPlaying;for(let t of e)this.animPlaying?t.play(!0):t.pause();return this.animPlaying}toggleMeasurement(){var e;return this.measurementActive=!this.measurementActive,(e=this.engine.getRenderingCanvas())==null||e.classList.toggle("ai3d-measurement-active",this.measurementActive),this.measurementActive||this.cancelPendingMeasurement(),this.notifyMeasurementsChanged(),this.measurementActive}isMeasurementActive(){return this.measurementActive}clearMeasurements(){this.disposeMeasurementOverlays(!1)}disposeMeasurementOverlays(e){var t;e&&(this.measurementActive=!1,(t=this.engine.getRenderingCanvas())==null||t.classList.remove("ai3d-measurement-active")),this.cancelPendingMeasurement(!1);for(let i of this.measurementSegments)i.line.dispose(!1,!0),i.label.dispose(!1,!0);this.measurementSegments=[];for(let i of this.measurementMarkers)i.dispose(!1,!0);this.measurementMarkers=[],this.notifyMeasurementsChanged()}setMeasurementScale(e){this.measurementScale=Rg(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementScale(){return{...this.measurementScale}}setMeasurementUnit(e){this.measurementUnit=uA(e),this.updateMeasurementLabels(),this.notifyMeasurementsChanged()}getMeasurementUnit(){return this.measurementUnit}getMeasurementBounds(){if(!this.rootMesh)return null;let e=this.getRenderableBounds(this.rootMesh);return e?{x:e.max.x-e.min.x,y:e.max.y-e.min.y,z:e.max.z-e.min.z}:null}getMeasurementRecords(){return this.createMeasurementRecords()}exportMeasurements(){return _A(this.createMeasurementRecords())}observeMeasurements(e){return this.measurementObservers.add(e),e(),()=>{this.measurementObservers.delete(e)}}updateMeasurementLabels(){if(this.measurementSegments.length===0)return;let e=this.getMeasurementMarkerSize()*4;for(let t of this.measurementSegments){let i=um(this.createMeasurementReading(t.start,t.end));t.label.dispose(!1,!0);let r=b.Center(t.start,t.end);t.label=this.createMeasurementLabelMesh(i,r,e)}}notifyMeasurementsChanged(){for(let e of Array.from(this.measurementObservers))e()}setAnimationSpeed(e){for(let t of this.scene.animationGroups)t.speedRatio=e}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.scene.render(),e.toDataURL("image/png")):null}toggleOrientationGizmo(){return this.gizmoEnabled=!this.gizmoEnabled,this.gizmoEnabled&&!this.gizmo&&(this.gizmo=new TM(this.engine,this.camera)),this.gizmoEnabled}isOrientationGizmoEnabled(){return this.gizmoEnabled}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i={low:2,medium:1.33,high:1}[this.currentQuality],r=xr()?1.5:1;return this.engine.setHardwareScalingLevel(i*r/t),t}getCameraZoomState(){let e=this.getCameraZoomRange();if(!e)return null;let t=(e.max-e.current)/(e.max-e.min),i=jq(t);return{value:i,percentage:Math.round(i*100)}}setCameraZoom(e){let t=this.getCameraZoomRange();if(!t)return null;let i=jq(e);return this.camera.radius=t.max-i*(t.max-t.min),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}getPerformanceSnapshot(){return{backend:"babylon",renderScale:Number((1/this.engine.getHardwareScalingLevel()).toFixed(2)),quality:this.currentQuality,meshCount:this.rootMesh?this.getRenderableMeshes(this.rootMesh).length:0}}toggleBoundingBox(){var e;if(this.bboxEnabled=!this.bboxEnabled,this.bboxEnabled){if(!this.rootMesh)return this.bboxEnabled;this.bboxMesh&&this.bboxMesh.dispose();let t=this.getRenderableBounds(this.rootMesh),i=Qv(Rr(t)),r=Qv(tr(t));this.bboxMesh=xs.CreateBox("bbox",{width:r.x,height:r.y,depth:r.z},this.scene),this.bboxMesh.position=i;let s=new We("bbox-mat",this.scene);s.wireframe=!0,s.emissiveColor=new Ee(1,1,0),s.disableLighting=!0,s.alpha=.6,this.bboxMesh.material=s}else(e=this.bboxMesh)==null||e.dispose(),this.bboxMesh=null;return this.bboxEnabled}toggleFocusSelection(){var t;let e=!this.focusSelectionEnabled;return e&&this.isDisassemblyActive()&&((t=this.disassembly)==null||t.setEnabled(!1)),this.focusSelectionEnabled=e,this.focusSelectionEnabled?this._lastPickResult.mesh&&this.setFocusedNode(this._lastPickResult.mesh):this.clearFocusedMesh(),this.focusSelectionEnabled}isFocusSelectionEnabled(){return this.focusSelectionEnabled}toggleDisassembly(){let e=this.ensureDisassemblyController();if(!e)return!1;let t=!e.isEnabled();return t&&(this.focusSelectionEnabled=!1,this.clearFocusedMesh()),e.setEnabled(t)}resetDisassembly(){var e;(e=this.disassembly)==null||e.reset()}isDisassemblyEnabled(){return this.isDisassemblyActive()}setExplode(e,t){this.rootMesh&&ZZ(this.rootMesh,e,t,this.loadedMeshes)}resetExplode(){this.rootMesh&&Ow(this.rootMesh,this.loadedMeshes)}resetView(){this.rootMesh&&Ow(this.rootMesh,this.loadedMeshes),this.resetDisassembly(),this.clearFocusedMesh(),this.camera.mode=0,this.camera.alpha=this.initialCamera.alpha,this.camera.beta=this.initialCamera.beta,this.camera.radius=this.initialCamera.radius,this.camera.target=this.initialCamera.target.clone(),this.startRenderLoop(),this.notifyCameraZoomChanged()}exportModelInfo(e){if(!this.rootMesh)return"";let t=this.getRenderableMeshes(this.rootMesh),i=fF(this.rootMesh),r=this.createModelSummary(this.rootMesh),s=e&&Vs(e)||r.rootName;return oA({title:s,format:this.loadedExt.toUpperCase(),summary:r,meshBreakdown:t.map(a=>XZ(a,{isSplat:i})),materialNames:t.map(a=>{var o;return(o=a.material)==null?void 0:o.name})})}getModelEvidence(){if(!this.rootMesh)return null;let e=this.getRenderableMeshes(this.rootMesh),t=KZ(e,this.loadedTransformNodes,this.gltfComponentMetadata);return hA({summary:this.createModelSummary(this.rootMesh),renderableMeshes:e,groupedPartCandidates:t,createMeshPart:i=>Pw(i,this.gltfComponentMetadata),getMeshMaterialNames:i=>{var r;return[(r=i.material)==null?void 0:r.name]},resourceWarnings:this.resourceWarnings})}getSelectedPartInfo(){var t;if(!this.rootMesh)return null;let e=(t=this.focusedNode)!=null?t:Yq(this._lastPickResult.mesh)?this._lastPickResult.mesh:null;return!e||Kq(e)?null:Dw(e,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata)}exportSelectedPartInfo(){let e=this.getSelectedPartInfo();return e?lA(e):""}getPickWorldPoint(e){return e.pickedPoint&&typeof e.pickedPoint=="object"?Jt(e.pickedPoint):this.rootMesh&&Yq(e.mesh)?Dw(e.mesh,this.getRenderableMeshes(this.rootMesh),this.gltfComponentMetadata).center:null}focusWorldPoint(e){let t=new b(e.x,e.y,e.z),i=this.camera.target.clone(),r=performance.now();this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0);let s=a=>{let o=Math.min(1,Math.max(0,(a-r)/Ove)),l=o<.5?4*o*o*o:1-Math.pow(-2*o+2,3)/2;if(this.camera.target=b.Lerp(i,t,l),o<1&&!this.scene.isDisposed){this.focusWorldPointFrame=window.requestAnimationFrame(s);return}this.focusWorldPointFrame=0};this.focusWorldPointFrame=window.requestAnimationFrame(s)}getAnnotationCameraStateKey(){return dA([{value:this.camera.alpha,digits:3},{value:this.camera.beta,digits:3},{value:this.camera.radius,digits:3},{value:this.camera.target.x,digits:2},{value:this.camera.target.y,digits:2},{value:this.camera.target.z,digits:2}])}projectAnnotationWorldPoint(e,t){let i=this.engine.getRenderingCanvas();if(!i||this.scene.isDisposed)return!1;let r=this.engine.getRenderWidth(),s=this.engine.getRenderHeight();if(r===0||s===0||i.clientWidth===0||i.clientHeight===0)return!1;let a=Aa.annotationWorldPoint;return a.set(e.x,e.y,e.z),b.ProjectToRef(a,Aa.annotationIdentity,this.scene.getTransformMatrix(),this.camera.viewport.toGlobal(r,s),Aa.annotationProjection),q2(Aa.annotationProjection,r,s,i,t)}isAnnotationWorldPointOccluded(e){if(this.scene.isDisposed)return!1;let t=Af(Jt(this.camera.position),e);if(!t)return!1;let i=Aa.annotationDirection,r=Aa.annotationRay;i.set(t.direction.x,t.direction.y,t.direction.z),r.origin=this.camera.position,r.direction=i,r.length=t.distance;let s=this.scene.pickWithRay(r);return!!(s!=null&&s.hit)&&Tf(s.distance,t.distance,t.epsilon)}getAnnotationProvider(){let e=this.engine.getRenderingCanvas();if(!e)throw new Error("Preview canvas is unavailable");return fA({canvas:e,observeRender:t=>{let i=this.scene.onAfterRenderCameraObservable.add(r=>{r===this.camera&&t()});return{remove:()=>this.scene.onAfterRenderCameraObservable.remove(i)}},getCameraStateKey:()=>this.getAnnotationCameraStateKey(),projectWorldPoint:(t,i)=>this.projectAnnotationWorldPoint(t,i),isWorldPointOccluded:t=>this.isAnnotationWorldPointOccluded(t)})}getCanvas(){return this.engine.getRenderingCanvas()}getLastPickResult(){return this._lastPickResult}onPick(e){return this._onPickCallbacks.push(e),()=>{this._onPickCallbacks=this._onPickCallbacks.filter(t=>t!==e)}}setRenderQuality(e,t=1){this.currentQuality=e;let i={low:2,medium:1.33,high:1},r=xr()?1.5:1,s=i[e]*r/Math.max(t,.25);if(this.engine.setHardwareScalingLevel(s),this.shadowGenerator){let a={low:0,medium:16,high:32};this.shadowGenerator.blurKernel=a[e],e==="low"?(this.shadowGenerator.useBlurExponentialShadowMap=!1,this.shadowGenerator.useExponentialShadowMap=!0):(this.shadowGenerator.useBlurExponentialShadowMap=!0,this.shadowGenerator.useExponentialShadowMap=!1)}}destroy(){var t,i,r,s,a,o,l,c;this.engine.stopRenderLoop(),this.focusWorldPointFrame&&(activeWindow.cancelAnimationFrame(this.focusWorldPointFrame),this.focusWorldPointFrame=0),this._onPickCallbacks=[],this.cameraZoomObservers.clear(),(t=this.cleanupPicking)==null||t.call(this),this.cleanupPicking=null,(i=this.gizmo)==null||i.dispose(),this.gizmo=null,(r=this.disassembly)==null||r.dispose(),this.disassembly=null,this.disposeMeasurementOverlays(!0),this.measurementObservers.clear(),this.clearFocusedMesh(),this.originalMeshVisibility.clear(),(s=this.bboxMesh)==null||s.dispose(),this.bboxMesh=null,this.camera.detachControl();let e=this.engine.getRenderingCanvas();e==null||e.removeEventListener("wheel",this.preventCanvasWheelScroll),e==null||e.removeEventListener("pointermove",this.handlePointerMove),e==null||e.removeEventListener("webglcontextlost",this.handleContextLost),e==null||e.removeEventListener("webglcontextrestored",this.handleContextRestored),(a=this.viewportObserver)==null||a.disconnect(),this.viewportObserver=null,this.resizeObs.disconnect(),this.invalidateMeshCache(),this.rootMesh=null,this.loadedMeshes=[],this.loadedTransformNodes=[],this.autoRotateBehavior&&(this.camera.removeBehavior(this.autoRotateBehavior),this.autoRotateBehavior=null);for(let f of this.configLights)f.dispose();this.configLights=[],(o=this.shadowGenerator)==null||o.dispose(),this.shadowGenerator=null,(l=this.groundMesh)==null||l.dispose(),this.groundMesh=null,(c=this.gridMesh)==null||c.dispose(),this.gridMesh=null;for(let f of this.axisMeshes)f.dispose();this.axisMeshes=[],this.scene.dispose(),this.engine.dispose()}startRenderLoop(){this.rendering||!this.viewportVisible||this.contextLost||(this.rendering=!0,this.engine.runRenderLoop(()=>{if(!this.canRender()||!this.viewportVisible||this.contextLost){this.engine.stopRenderLoop(),this.rendering=!1;return}this.scene.render(),this.gizmo&&this.gizmoEnabled&&(this.gizmo.syncWith(this.camera),this.gizmo.render())}))}getRenderableMeshes(e){if(this.cachedRenderableMeshes&&this.cachedRenderableRoot===e)return this.cachedRenderableMeshes;let t=Yh(e,this.loadedMeshes);return this.cachedRenderableMeshes=t,this.cachedRenderableRoot=e,t}getRenderableBounds(e){return cM(e,this.loadedMeshes)}invalidateMeshCache(){this.cachedRenderableMeshes=null,this.cachedRenderableRoot=null}resolvePickHighlightMeshes(e){if(!this.rootMesh)return[e];let t=this.getRenderableMeshes(this.rootMesh),i=Zv(this.rootMesh,e,t,this.gltfComponentMetadata),r=t.filter(s=>RM(s,i));return r.length>0?r:[e]}setFocusedNode(e){if(!this.rootMesh)return;let t=e?this.findSelectableNode(e):null;if(!t||Kq(t)){this.clearFocusedMesh();return}if(this.focusedNode===t)return;let i=this.getRenderableMeshes(this.rootMesh),r=i.filter(a=>RM(a,t));if(r.length===0){this.clearFocusedMesh();return}let s=new Set(r);for(let a of i){this.originalMeshVisibility.has(a.uniqueId)||this.originalMeshVisibility.set(a.uniqueId,a.visibility);let o=s.has(a);a.visibility=o?1:Lve,a.renderOutline=o,a.outlineColor=new Ee(.18,.76,1),a.outlineWidth=o?.045:0}this.focusedNode=t}clearFocusedMesh(){if(!this.rootMesh){this.focusedNode=null;return}for(let e of this.getRenderableMeshes(this.rootMesh)){let t=this.originalMeshVisibility.get(e.uniqueId);t!==void 0&&(e.visibility=t),e.renderOutline=!1,e.outlineWidth=0}this.originalMeshVisibility.clear(),this.focusedNode=null}findSelectableNode(e){if(!this.rootMesh)return null;let t=this.getRenderableMeshes(this.rootMesh);if(t.includes(e)||t.some(r=>RM(r,e)))return e;if(!Uve(e))return null;let i=e.parent;for(;i&&"uniqueId"in i;){let r=i;if(t.includes(r)||t.some(s=>RM(s,r)))return r;i=i.parent}return null}getMeasurementMarkerSize(){if(!this.rootMesh)return .02;let e=this.getRenderableBounds(this.rootMesh);return e?Math.max(e.max.x-e.min.x,e.max.y-e.min.y,e.max.z-e.min.z,.001)*.015:.02}cancelPendingMeasurement(e=!0){var r,s;let t=this.pendingMarker,i=(s=(r=this.pendingPoint)==null?void 0:r.clone())!=null?s:null;if(this.pendingPoint=null,this.pendingMarker=null,this.hoveredMarkerIndex=-1,this.removePreviewLine(),t&&i&&!this.isMeasurementPointUsed(i)){let a=this.measurementMarkers.indexOf(t);a>=0&&this.measurementMarkers.splice(a,1),t.dispose(!1,!0)}else t&&(t.scaling.setAll(1),$v(t,Jv));e&&this.scene.render()}isMeasurementPointUsed(e){return this.measurementSegments.some(t=>b.Distance(t.start,e)<1e-4||b.Distance(t.end,e)<1e-4)}findNearestMarkerIndex(e){let t=this.getMeasurementMarkerSize()*2.5;for(let i=0;i=0?this.measurementMarkers[t].position.clone():e;if(this.pendingPoint){if(b.Distance(i,this.pendingPoint)<1e-4)return;if(t<0){let r=this.getMeasurementMarkerSize(),s=xs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1,s.material=Zq(this.scene),s.renderingGroupId=2,this.measurementMarkers.push(s)}this.createMeasurementSegment(this.pendingPoint,i),this.pendingMarker&&(this.pendingMarker.scaling.setAll(1),$v(this.pendingMarker,Jv)),this.pendingPoint=null,this.pendingMarker=null,this.removePreviewLine()}else{if(t<0){let r=this.getMeasurementMarkerSize(),s=xs.CreateSphere("measure-marker",{diameter:r},this.scene);s.position=i,s.isPickable=!1,s.material=Zq(this.scene),s.renderingGroupId=2,this.measurementMarkers.push(s),this.pendingMarker=s}else this.pendingMarker=this.measurementMarkers[t];this.pendingMarker.scaling.setAll(1.6),$v(this.pendingMarker,wve),this.pendingPoint=i,this.ensurePreviewLine()}this.notifyMeasurementsChanged()}createMeasurementSegment(e,t){let i=xs.CreateLines("measure-line",{points:[e,t]},this.scene);i.color=Nve.clone(),i.alpha=.94,i.isPickable=!1,i.renderingGroupId=2;let r=um(this.createMeasurementReading(e,t)),s=b.Center(e,t),a=this.createMeasurementLabelMesh(r,s,this.getMeasurementMarkerSize()*4);this.measurementSegments.push({start:e,end:t,line:i,label:a})}createMeasurementLabelMesh(e,t,i){let r=xs.CreatePlane("measure-label",{width:i*4,height:i*.95},this.scene);r.position=t,r.billboardMode=q.BILLBOARDMODE_ALL,r.isPickable=!1,r.renderingGroupId=2;let s=new Rb("measure-label-tex",{width:640,height:160},this.scene);s.hasAlpha=!0;let a=s.getContext();pA(a,e,640,160),s.update();let o=new We("measure-label-mat",this.scene);return o.diffuseTexture=s,o.emissiveColor=new Ee(1,1,1),o.disableLighting=!0,o.opacityTexture=s,o.useAlphaFromDiffuseTexture=!0,r.material=o,r}ensurePreviewLine(){this.previewLine||(this.previewLine=xs.CreateLines("measure-preview",{points:[b.Zero(),b.Zero()],updatable:!0},this.scene),this.previewLine.color=Xq.clone(),this.previewLine.alpha=.68,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2)}updatePreviewLine(){if(!this.pendingPoint||!this.previewLine||!this.rootMesh)return;let e=this.engine.getRenderingCanvas();if(!e)return;let t=e.getBoundingClientRect(),i=this.lastPointerClient.x-t.left,r=this.lastPointerClient.y-t.top,s=this.scene.pick(i,r,o=>o!==this.previewLine&&!this.measurementMarkers.includes(o)),a;if(s.hit&&s.pickedPoint)a=s.pickedPoint;else{let o=this.scene.createPickingRay(i,r,Z.Identity(),this.camera);a=this.pendingPoint.add(o.direction.scale(5))}this.previewLine=xs.CreateLines("measure-preview",{points:[this.pendingPoint,a],instance:this.previewLine},this.scene),this.previewLine.color=Xq.clone(),this.previewLine.alpha=.68,this.previewLine.isPickable=!1,this.previewLine.renderingGroupId=2}removePreviewLine(){this.previewLine&&(this.previewLine.dispose(),this.previewLine=null)}createMeasurementReading(e,t){return mA(this.toMeasurementPoint(e),this.toMeasurementPoint(t),this.measurementScale,this.measurementUnit)}createMeasurementRecords(){return this.measurementSegments.map((e,t)=>({index:t+1,start:this.toMeasurementPoint(e.start),end:this.toMeasurementPoint(e.end),reading:this.createMeasurementReading(e.start,e.end)}))}toMeasurementPoint(e){return{x:e.x,y:e.y,z:e.z}}createModelSummary(e){let t=this.getRenderableMeshes(e),i=fF(e),r=t.reduce((s,a)=>s+_d(a),0);return fM(e.name,this.getRenderableBounds(e),t,{splatCount:i?r:void 0,resourceWarnings:this.resourceWarnings})}};Aa.annotationIdentity=Z.Identity(),Aa.annotationWorldPoint=b.Zero(),Aa.annotationProjection=b.Zero(),Aa.annotationDirection=b.Zero(),Aa.annotationRay=new en(b.Zero(),b.Zero(),1);bM=Aa});async function $q(n,e){if(fu(e).backend==="three"){let{createThreeModelPreview:r}=await Promise.resolve().then(()=>(xU(),AU));return r(n)}let{createBabylonModelPreview:i}=await Promise.resolve().then(()=>(Qq(),qq));return i(n)}var Jq=I(()=>{"use strict";yE()});var tQ={};Fe(tQ,{createBabylonGridRenderer:()=>Xve});function zve(n){return n.replace(/\|/g,"\\|").replace(/\r?\n/g," ")}function hF(n){return new b(n.x,n.y,n.z)}function eQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function Xve(n){return new uF(n)}var Yp,uF,iQ=I(()=>{"use strict";ID();Ys();mR();pR();ke();zt();Nm();Np();Vf();Gc();Kv();Kv();qv();jT();ua();fl();rA();Yp=32;uF=class{constructor(e){this.cells=[];this.initialCameras=[];this.wireframeEnabled=!1;this.rendering=!1;this.dirty=!0;this.contextLost=!1;this.warmupFrame=null;this.cameraZoomObservers=new Set;this.preventCanvasWheelScroll=e=>{e.preventDefault(),e.stopPropagation()};this.handleContextLost=e=>{e.preventDefault(),this.contextLost=!0,this.rendering&&(this.engine.stopRenderLoop(),this.rendering=!1)};this.handleContextRestored=()=>{this.contextLost=!1,this.engine.resize(),this.startRenderLoop(),this.markDirty(),this.scheduleWarmupFrames()};e.className="ai3d-canvas-full",e.addEventListener("wheel",this.preventCanvasWheelScroll,{passive:!1}),this.engine=new Ge(e,!0,{preserveDrawingBuffer:!0}),e.addEventListener("webglcontextlost",this.handleContextLost),e.addEventListener("webglcontextrestored",this.handleContextRestored),this.scene=new ti(this.engine),this.scene.clearColor=new ft(.12,.12,.14,1),this.scene.autoClear=!1,new va("default-light",new b(0,1,.5),this.scene),this.resizeObs=new ResizeObserver(()=>{this.engine.resize(),this.markDirty()}),this.resizeObs.observe(e),window.requestAnimationFrame(()=>this.engine.resize())}canRender(){let e=this.engine.getRenderingCanvas();return!!(e!=null&&e.isConnected)&&e.clientWidth>0&&e.clientHeight>0}markDirty(){this.dirty=!0}getCameraZoomRange(e){let t=e.radius,i=e.lowerRadiusLimit,r=e.upperRadiusLimit,s=typeof i=="number"&&Number.isFinite(i)&&i>0?i:Math.max(t*.08,1e-5),a=typeof r=="number"&&Number.isFinite(r)&&r>s?r:Math.max(t*8,s*10);return{current:Math.max(s,Math.min(t,a)),min:s,max:a}}notifyCameraZoomChanged(){if(this.cameraZoomObservers.size===0)return;let e=this.getCameraZoomState();for(let t of this.cameraZoomObservers)t(e)}scheduleWarmupFrames(e=8){this.warmupFrame!==null&&window.cancelAnimationFrame(this.warmupFrame),this.warmupFrame=window.requestAnimationFrame(()=>{this.warmupFrame=null,!(!this.canRender()||this.contextLost)&&(this.markDirty(),e>1&&this.scheduleWarmupFrames(e-1))})}getCellBounds(e){let t=gd(e);if(!t)throw new Error("Grid cell has no renderable meshes");return t}async loadModels(e,t,i){var d,h,u;await Yv();let r=e.length>Yp?(console.warn(`[AI3D Grid] Capping ${e.length} models to ${Yp} (layerMask limit)`),e.slice(0,Yp)):e,s=(d=t.columns)!=null?d:Math.min(r.length,3),a=(h=t.gapX)!=null?h:.02,o=(u=t.gapY)!=null?u:.02,l=Math.ceil(r.length/s),c=(1-a*(s+1))/s,f=(1-o*(l+1))/l;for(let m=0;mYp?(console.warn(`[AI3D Preset] Capping ${e.placements.length} placements to ${Yp} (layerMask limit)`),e.placements.slice(0,Yp)):e.placements,r=[];for(let f=0;f0&&(h.push(...r[_]),u|=1<<_)}else h=d?[...d]:[],u=1<{this.markDirty(),this.notifyCameraZoomChanged()})),this.initialCameras.push({alpha:f.alpha,beta:f.beta,radius:f.radius,target:f.target.clone()}),f}async loadOne(e,t,i,r,s,a,o){var h,u;let l=await t(e.path),c=(u=(h=e.path.split(".").pop())==null?void 0:h.replace(".","").toLowerCase())!=null?u:"glb",{renderableMeshes:f}=await this.importMesh(e.path,l,o);if(c==="stl"&&e.color){let m=Ee.FromHexString(e.color);for(let _ of f)_.material instanceof We&&_.material.name==="stl-mat"&&(_.material.diffuseColor=m)}if(c==="stl"&&e.wireframe!==void 0)for(let m of f)m.material instanceof We&&(m.material.wireframe=e.wireframe);let d=this.createCellCamera(f,o,i,r,s,a);this.cells.push({meshes:f,camera:d})}createCellCamera(e,t,i,r,s,a){let o=iA(this.getCellBounds(e)),l=new Si(`cell-cam-${t}`,Math.PI/4,Math.PI/3,o.radius,hF(o.target),this.scene);l.fov=45*Math.PI/180,l.minZ=o.near,l.maxZ=o.far,l.lowerRadiusLimit=o.lowerRadiusLimit,l.upperRadiusLimit=o.upperRadiusLimit,l.wheelPrecision=45,l.viewport=new xo(i,r,s,a),l.layerMask=1<{this.markDirty(),this.notifyCameraZoomChanged()})),this.initialCameras.push({alpha:l.alpha,beta:l.beta,radius:l.radius,target:l.target.clone()}),l}renderFrame(){if(!this.canRender()||!this.dirty||this.contextLost)return;this.dirty=!1;let e=this.engine,t=this.scene;e.clear(t.clearColor,!0,!0);for(let i of this.cells){e.setViewport(i.camera.viewport);let r=i.camera.viewport,s=e.getRenderWidth(),a=e.getRenderHeight();e.enableScissor(r.x*s,r.y*a,r.width*s,r.height*a),t.activeCamera=i.camera,t.render(),e.disableScissor()}}startRenderLoop(){this.rendering||(this.rendering=!0,this.engine.runRenderLoop(()=>this.renderFrame()))}captureSnapshot(){let e=this.engine.getRenderingCanvas();return e?(this.renderFrame(),e.toDataURL("image/png")):null}getEngine(){return this.engine}getScene(){return this.scene}getCellCount(){return this.cells.length}getCanvas(){return this.engine.getRenderingCanvas()}getPrimaryCamera(){var e,t;return(t=(e=this.cells[0])==null?void 0:e.camera)!=null?t:null}setRenderScale(e){let t=Math.max(.25,Math.min(e,2)),i=xr()?1.5:1;return this.engine.setHardwareScalingLevel(i/t),t}getCameraZoomState(){var s;let e=(s=this.cells[0])==null?void 0:s.camera;if(!e)return null;let t=this.getCameraZoomRange(e),i=(t.max-t.current)/(t.max-t.min),r=eQ(i);return{value:r,percentage:Math.round(r*100)}}setCameraZoom(e){if(this.cells.length===0)return null;let t=eQ(e);for(let i of this.cells){let r=this.getCameraZoomRange(i.camera);i.camera.radius=r.max-t*(r.max-r.min)}return this.markDirty(),this.startRenderLoop(),this.notifyCameraZoomChanged(),this.getCameraZoomState()}observeCameraZoom(e){return this.cameraZoomObservers.add(e),e(this.getCameraZoomState()),()=>{this.cameraZoomObservers.delete(e)}}resetView(){for(let e=0;e(iQ(),tQ));return e(n)}var nQ=I(()=>{"use strict"});var oQ={};Fe(oQ,{createLoggedGridRenderer:()=>mF,createLoggedModelPreview:()=>Kp,logGridPreviewSelection:()=>aQ,logModelPreviewSelection:()=>sQ});function sQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason,ext:t.ext,annotationMode:t.annotationMode,requireWorkbenchFeatures:t.requireWorkbenchFeatures,rendererRollout:t.rendererRollout})}async function Kp(n,e,t,i){let r=fu(i);return sQ(n,e,r),{preview:await $q(t,i),route:r}}function aQ(n,e,t){n.info("select preview backend",{...e,backend:t.backend,reason:t.reason})}async function mF(n,e,t){let i=Z1();return aQ(n,e,i),{renderer:await rQ(t),route:i}}var MM=I(()=>{"use strict";Jq();nQ();yE()});function pF(n){cQ=n}function IM(n){return lQ[n]>=lQ[cQ]}function yM(){return new Date().toISOString()}function CM(n){return n&&Object.keys(n).length>0?n:void 0}function qi(n){let e=`[AI3D][${n}]`;return{debug(t,i){IM("debug")&&console.debug(e,yM(),t,CM(i))},info(t,i){IM("info")&&console.debug(e,yM(),t,CM(i))},warn(t,i){IM("warn")&&console.warn(e,yM(),t,CM(i))},error(t,i){IM("error")&&console.error(e,yM(),t,CM(i))}}}var lQ,cQ,On=I(()=>{"use strict";lQ={debug:10,info:20,warn:30,error:40},cQ="warn"});var dQ={};Fe(dQ,{supportsAnimationPreview:()=>DM,supportsAnnotationPreview:()=>PM,supportsBoundingBoxPreview:()=>OM,supportsCameraZoomPreview:()=>wM,supportsDisassemblyPreview:()=>jp,supportsFocusSelectionPreview:()=>Zp,supportsMeasurementPreview:()=>os,supportsOrientationGizmoPreview:()=>eE,supportsRenderScalePreview:()=>NM,supportsWireframePreview:()=>LM,supportsWorkbenchPreview:()=>fQ});function cr(n,e){return!!n&&typeof n=="object"&&typeof n[e]=="function"}function PM(n){return cr(n,"getAnnotationProvider")}function DM(n){return cr(n,"hasAnimations")&&cr(n,"toggleAnimation")}function os(n){return cr(n,"toggleMeasurement")&&cr(n,"isMeasurementActive")&&cr(n,"clearMeasurements")&&cr(n,"setMeasurementScale")&&cr(n,"getMeasurementScale")&&cr(n,"setMeasurementUnit")&&cr(n,"getMeasurementUnit")&&cr(n,"getMeasurementBounds")&&cr(n,"getMeasurementRecords")&&cr(n,"updateMeasurementLabels")&&cr(n,"exportMeasurements")}function jp(n){return cr(n,"toggleDisassembly")&&cr(n,"resetDisassembly")&&cr(n,"isDisassemblyEnabled")}function Zp(n){return cr(n,"toggleFocusSelection")&&cr(n,"isFocusSelectionEnabled")}function LM(n){return cr(n,"toggleWireframe")}function eE(n){return cr(n,"toggleOrientationGizmo")}function OM(n){return cr(n,"toggleBoundingBox")}function NM(n){return cr(n,"setRenderScale")}function wM(n){return cr(n,"getCameraZoomState")&&cr(n,"setCameraZoom")}function fQ(n){return cr(n,"setExplode")&&cr(n,"resetExplode")&&cr(n,"focusWorldPoint")}var Kh=I(()=>{"use strict"});function FM(n,e){return ih(n,e)}function hQ(n){return Number.isFinite(n)?Math.max(0,Math.min(n,1)):0}function BM(n,e){let t=FM("div","ai3d-zoom-control is-hidden"),i=FM("div","ai3d-zoom-track"),r=FM("div","ai3d-zoom-fill"),s=FM("input","ai3d-zoom-range");s.type="range",s.min="0",s.max="100",s.step="1",s.value="0",s.setAttribute("aria-label",j("helper.cameraZoomLabel")),s.setAttribute("aria-orientation","vertical"),i.appendChild(r),t.append(i,s),n.appendChild(t);let a=null,o=null,l=null,c=T=>{T.stopPropagation()};t.addEventListener("mousedown",c),t.addEventListener("click",c);function f(){let T=e();return wM(T)?T:null}function d(T){if(!T){t.classList.add("is-hidden"),s.disabled=!0;return}let S=hQ(T.value),E=Math.round(S*100);s.disabled=!1,s.value=String(E),t.style.setProperty("--ai3d-zoom-percent",`${E}%`);let A=Ki("helper.cameraZoomValue",{value:`${T.percentage}%`});s.setAttribute("aria-valuenow",String(E)),s.setAttribute("aria-valuetext",A),t.setAttribute("title",A),t.classList.remove("is-hidden")}function h(T){T!==a&&(o==null||o(),o=null,a=T,T!=null&&T.observeCameraZoom&&(o=T.observeCameraZoom(d)))}function u(){var S;let T=f();h(T),d((S=T==null?void 0:T.getCameraZoomState())!=null?S:null)}function m(){_(s.valueAsNumber/100)}function _(T){let S=a!=null?a:f();if(!S){u();return}h(S),d(S.setCameraZoom(hQ(T)))}function p(T){let S=i.getBoundingClientRect();return S.height<=0?s.valueAsNumber/100:1-(T-S.top)/S.height}function g(T){T.preventDefault(),T.stopPropagation(),s.focus({preventScroll:!0}),_(p(T.clientY))}function v(T){var S;l===T.pointerId&&(T.preventDefault(),T.stopPropagation(),(S=t.hasPointerCapture)!=null&&S.call(t,T.pointerId)&&t.releasePointerCapture(T.pointerId),l=null,t.classList.remove("is-dragging"))}return s.addEventListener("input",m),t.addEventListener("pointerdown",T=>{var S;if(T.button!==0||s.disabled){T.stopPropagation();return}l=T.pointerId,(S=t.setPointerCapture)==null||S.call(t,T.pointerId),t.classList.add("is-dragging"),g(T)}),t.addEventListener("pointermove",T=>{l===T.pointerId&&g(T)}),t.addEventListener("pointerup",v),t.addEventListener("pointercancel",v),t.addEventListener("wheel",T=>{T.preventDefault(),T.stopPropagation();let S=T.deltaY<0?6:-6;s.value=String(Math.max(0,Math.min(100,s.valueAsNumber+S))),m()},{passive:!1}),u(),{sync:u,destroy(){o==null||o(),o=null,a=null,t.remove()}}}var _F=I(()=>{"use strict";_n();Kh();cm()});function Zr(n){let e=createSvg("svg");e.setAttribute("viewBox","0 0 24 24"),e.setAttribute("width","16"),e.setAttribute("height","16");let t=new DOMParser().parseFromString(`${n}`,"image/svg+xml");for(let i of Array.from(t.documentElement.childNodes))e.appendChild(activeDocument.importNode(i,!0));return e}function uQ(n){var a,o;let[e,t]=n.split(","),i=(o=(a=e.match(/:(.*?);/))==null?void 0:a[1])!=null?o:"image/png",r=atob(t),s=new Uint8Array(r.length);for(let l=0;l{ne.stopPropagation()};h.addEventListener("pointerdown",p),h.addEventListener("mousedown",p),h.addEventListener("click",p),f&&(h.classList.add("is-mobile"),mQ(e,!1));let g=BM(e,i),v=null,T=null,S=ne=>(ne.classList.add("is-secondary"),ne),E=(ne,ze)=>{ne.classList.toggle("ai3d-btn-active",ze),ne.setAttribute("aria-pressed",String(ze))},A=()=>{for(let ne of[u,m,_]){let ze=Array.from(ne.querySelectorAll(".ai3d-inline-btn")).filter(Li=>!Li.classList.contains("is-hidden")),di=ze.length>0,Wi=ze.some(Li=>!Li.classList.contains("is-secondary"));ne.classList.toggle("is-hidden",!di),ne.classList.toggle("has-primary-visible",Wi)}},R=!1,M=!1,y=f?u.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-mode-btn",attr:{"aria-label":j("helper.enableInteractionLabel"),"aria-pressed":"false"}}):null;y==null||y.appendChild(Zr(''));let C=(Rn=y==null?void 0:y.createSpan({cls:"ai3d-mobile-mode-btn-label"}))!=null?Rn:null,D=()=>{f&&y&&(mQ(e,R),E(y,R),C==null||C.setText(R?j("helper.scrollAction"):j("helper.interactAction")),y.setAttribute("aria-label",R?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))),E(Yi,M),h.classList.toggle("show-secondary",M),A()},w=ne=>{R=ne,D()};y==null||y.addEventListener("click",()=>{let ne=!R;l==null||l(ne),w(ne),Pi(y,ne?j("helper.interactionOn"):j("helper.interactionOff"))});let G=(ne,ze)=>{ne.classList.toggle("is-hidden",!ze)},O=null,N=()=>{var Li;let ne=i(),ze=ne&&Zp(ne)?ne:null,di=ne&&jp(ne)?ne:null,Wi=ne&&os(ne)?ne:null;E(de,!!(ze!=null&&ze.isFocusSelectionEnabled())),E(ge,!!(di!=null&&di.isDisassemblyEnabled())),E(Pe,!!(Wi!=null&&Wi.isMeasurementActive())),ne&&eE(ne)&&E(z,!!((Li=ne.isOrientationGizmoEnabled)!=null&&Li.call(ne)))},B=()=>{let ne=i(),ze=ne&&Zp(ne)?ne:null,di=ne&&jp(ne)?ne:null,Wi=ne&&DM(ne)?ne:null;ne!==O&&(O=ne,E(J,!1),E(Y,!1),E(ue,!1),ue.replaceChildren(Zr('')),G(V,!!(ne!=null&&ne.resetView)),G(Q,!!(ne!=null&&ne.exportModelInfo)),G(K,!!(ne!=null&&ne.exportSelectedPartInfo)),G(J,!!ne&&LM(ne)),G(z,!!ne&&eE(ne)),G(Y,!!ne&&OM(ne)),G(de,!!ze),G(ge,!!di),G(ie,!!ne&&NM(ne)),G(ue,!!(Wi!=null&&Wi.hasAnimations()))),G(Pe,!!ne&&os(ne)),N(),Pt(),A(),g.sync()},V=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.resetViewLabel")}});pn(V,"reset-view"),V.appendChild(Zr('')),V.addEventListener("click",()=>{let ne=i();ne!=null&&ne.resetView&&(ne.resetView(),B(),Pi(V,j("helper.resetViewDone")))});let Q=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copyModelInfoLabel")}}));pn(Q,"copy-model-info"),Q.appendChild(Zr('')),Q.addEventListener("click",()=>{let ne=i();if(ne!=null&&ne.exportModelInfo)try{let ze=ne.exportModelInfo(r());if(!ze)return;navigator.clipboard.writeText(ze).then(()=>{Pi(Q,j("helper.copied"))}).catch(()=>{Pi(Q,j("helper.failed"))})}catch(ze){console.error("[AI3D] Export model info failed:",ze),Pi(Q,j("helper.failed"))}});let K=S(m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySelectedPartInfoLabel")}}));pn(K,"copy-selected-part-info"),K.appendChild(Zr('')),K.addEventListener("click",()=>{let ne=i();if(ne!=null&&ne.exportSelectedPartInfo)try{let ze=ne.exportSelectedPartInfo();if(!ze){Pi(K,j("helper.noSelectedPart"));return}navigator.clipboard.writeText(ze).then(()=>{Pi(K,j("helper.copied"))}).catch(()=>{Pi(K,j("helper.failed"))})}catch(ze){console.error("[AI3D] Export selected part info failed:",ze),Pi(K,j("helper.failed"))}});let J=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleWireframeLabel"),"aria-pressed":"false"}});pn(J,"toggle-wireframe"),J.appendChild(Zr('')),J.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleWireframe))return;let ze=ne.toggleWireframe();E(J,ze),Pi(J,ze?j("helper.wireframeOn"):j("helper.wireframeOff"))});let z=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleAxesLabel"),"aria-pressed":"false"}});pn(z,"toggle-axes"),z.appendChild(Zr('')),z.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleOrientationGizmo))return;let ze=ne.toggleOrientationGizmo();E(z,ze),Pi(z,ze?j("helper.axesOn"):j("helper.axesOff"))});let Y=u.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleBoundingBoxLabel"),"aria-pressed":"false"}});pn(Y,"toggle-bounding-box"),Y.appendChild(Zr('')),Y.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleBoundingBox))return;let ze=ne.toggleBoundingBox();E(Y,ze),Pi(Y,ze?j("helper.boundingBoxOn"):j("helper.boundingBoxOff"))});let de=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleFocusSelectionLabel"),"aria-pressed":"false"}});pn(de,"toggle-focus"),de.appendChild(Zr('')),de.addEventListener("click",()=>{let ne=i();if(!ne||!Zp(ne))return;let ze=ne.toggleFocusSelection();B(),Pi(de,ze?j("helper.focusSelectionOn"):j("helper.focusSelectionOff"))});let ge=m.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.toggleDisassemblyLabel"),"aria-pressed":"false"}});pn(ge,"toggle-disassembly"),ge.appendChild(Zr('')),ge.addEventListener("click",()=>{let ne=i();if(!ne||!jp(ne))return;let ze=ne.toggleDisassembly();B(),Pi(ge,ze?j("helper.disassemblyOn"):j("helper.disassemblyOff"))});let Ue=[.5,.75,1,1.5,2],oe=(Ar=a==null?void 0:a().renderScale)!=null?Ar:1,ve=Ue.reduce((ne,ze,di)=>{let Wi=Math.abs(ze-oe),Li=Math.abs(Ue[ne]-oe);return Wi{let ne=i();if(!(ne!=null&&ne.setRenderScale))return;ve=(ve+1)%Ue.length;let ze=ne.setRenderScale(Ue[ve]);ie.textContent=`${ze.toFixed(1)}x`,Pi(ie,Ki("helper.resolutionValue",{value:`${ze}x`}))});let ue=S(u.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleAnimationLabel"),"aria-pressed":"false"}}));pn(ue,"toggle-animation"),ue.appendChild(Zr('')),ue.addEventListener("click",()=>{let ne=i();if(!(ne!=null&&ne.toggleAnimation))return;let ze=ne.toggleAnimation();ue.replaceChildren(Zr(ze?'':'')),E(ue,ze),Pi(ue,ze?j("helper.playing"):j("helper.paused"))});let Pe=m.createEl("button",{cls:"ai3d-inline-btn is-hidden",attr:{"aria-label":j("helper.toggleMeasurementLabel"),"aria-pressed":"false",title:j("helper.toggleMeasurementLabel")}});pn(Pe,"toggle-measurement"),Pe.appendChild(Zr('')),Pe.addEventListener("click",()=>{let ne=i();if(!ne||!os(ne))return;let ze=ne.toggleMeasurement();E(Pe,ze),Pi(Pe,ze?j("helper.measurementOn"):j("helper.measurementOff")),ze||E(ye,!1),Pt()});function me(ne){let ze=i();!ze||!os(ze)||(ze.clearMeasurements(),E(Pe,ze.isMeasurementActive()),Pt(),Pi(ne,j("helper.measurementsCleared")))}function be(ne){let ze=i();if(!ze||!os(ze))return;let di=ze.exportMeasurements();if(!di){Pi(ne,j("helper.noMeasurements"));return}navigator.clipboard.writeText(di).then(()=>{Pi(ne,j("helper.measurementsCopied"))}).catch(()=>{Pi(ne,j("helper.failed"))})}let De=m.createEl("button",{cls:"ai3d-measurement-strip is-hidden",attr:{"aria-expanded":"false","aria-label":j("helper.calibrateLabel")}});pn(De,"toggle-measurement-details"),De.setAttribute("aria-live","polite");let ut=De.createSpan({cls:"ai3d-measurement-strip-value"}),Ye=De.createSpan({cls:"ai3d-measurement-strip-meta"});function je(){let ne=i();return ne&&os(ne)?ne:null}function Qt(ne){ne!==v&&(T==null||T(),T=null,v=ne,ne!=null&&ne.observeMeasurements&&(T=ne.observeMeasurements(Pt)))}function Pt(){var Xo;let ne=je();if(Qt(ne),!ne){De.classList.add("is-hidden"),X.classList.add("is-hidden"),De.classList.remove("is-expanded"),De.setAttribute("aria-expanded","false"),he.disabled=!0,ye.disabled=!0;return}let ze=ne.isMeasurementActive(),di=ne.getMeasurementRecords(),Wi=(Xo=di[di.length-1])!=null?Xo:null,Li=di.length>0,wn=ne.getMeasurementUnit();De.classList.toggle("is-hidden",!ze&&!Li),!ze&&!Li&&(X.classList.add("is-hidden"),De.classList.remove("is-expanded"),De.setAttribute("aria-expanded","false")),De.classList.toggle("is-active",ze),De.classList.toggle("has-records",Li),ut.textContent=Wi?ah(Wi.reading.distance,Wi.reading.unit):ze?j("helper.measurementStripActive"):j("helper.measurementStripEmpty"),Ye.textContent=Li?Ki("helper.measurementStripSaved",{count:String(di.length)}):wn,De.setAttribute("aria-label",[j("helper.measurementStripTitle"),ut.textContent,Ye.textContent,j("helper.calibrateLabel")].filter(Boolean).join(" "));let ls=Li;he.disabled=!ls,ye.disabled=!ls,E(Pe,ze)}let Ti=_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.copySnapshotLabel")}});pn(Ti,"copy-snapshot"),Ti.appendChild(Zr('')),Ti.addEventListener("click",()=>{let ne=i();if(ne)try{let ze=ne.captureSnapshot();if(!ze)return;let di=uQ(ze);navigator.clipboard.write([new ClipboardItem({"image/png":di})]).then(()=>{Pi(Ti,j("helper.copied"))}).catch(()=>{Pi(Ti,j("helper.failed"))})}catch(ze){console.error("[AI3D] Copy snapshot failed:",ze),Pi(Ti,j("helper.failed"))}});let se=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.saveSnapshotLabel")}}));pn(se,"save-snapshot"),se.appendChild(Zr('')),se.addEventListener("click",()=>{var ze,di;let ne=i();if(ne)try{let Wi=ne.captureSnapshot();if(!Wi)return;let Li=r(),wn=ln(Li)||"model",ls=a==null?void 0:a(),Xo=(ze=ls==null?void 0:ls.snapshotFolder)!=null?ze:"Media/3D Previews",nu=(di=ls==null?void 0:ls.snapshotNaming)!=null?di:"model-name",d_=Date.now(),su=nu==="timestamp"?`snapshot_${d_}.png`:`${wn}_snapshot_${d_}.png`,SE=uQ(Wi),jc=new FileReader;jc.onload=()=>{let M0=jc.result;t.vault.adapter.exists(Xo).then(h_=>h_?Promise.resolve():t.vault.createFolder(Xo).catch(I0=>{Yve.warn("Failed to create vault folder",{path:Xo,error:String(I0)})})).then(()=>t.vault.createBinary(`${Xo}/${su}`,M0)).then(()=>{Pi(se,j("helper.saved"))}).catch(h_=>{console.error("[AI3D] Save snapshot failed:",h_),Pi(se,j("helper.failed"))})},jc.onerror=()=>{console.error("[AI3D] FileReader error"),Pi(se,j("helper.failed"))},jc.onabort=()=>{console.error("[AI3D] FileReader aborted"),Pi(se,j("helper.failed"))},jc.readAsArrayBuffer(SE)}catch(Wi){console.error("[AI3D] Save snapshot failed:",Wi),Pi(se,j("helper.failed"))}});let Di=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.downloadSnapshotLabel")}}));pn(Di,"download-snapshot"),Di.appendChild(Zr('')),Di.addEventListener("click",()=>{let ne=i();if(ne)try{let ze=ne.captureSnapshot();if(!ze)return;let di=r(),Li=`${ln(di)||"model"}_snapshot_${Date.now()}.png`,wn=createEl("a");wn.href=ze,wn.download=Li,activeDocument.body.appendChild(wn),wn.click(),wn.remove(),Pi(Di,j("helper.downloaded"))}catch(ze){console.error("[AI3D] Download snapshot failed:",ze),Pi(Di,j("helper.failed"))}});let ii=S(_.createEl("button",{cls:"ai3d-inline-btn",attr:{"aria-label":j("helper.removePreviewLabel")}}));pn(ii,"remove-preview"),ii.appendChild(Zr('')),ii.addEventListener("click",s);let yi=m.createEl("button",{cls:"ai3d-inline-btn is-hidden ai3d-annot-btn",attr:{"aria-label":j(d.labelKey),"aria-pressed":"false"}});pn(yi,"toggle-annotation"),yi.appendChild(Zr(''));let ct=yi.createSpan({cls:"ai3d-pin-badge is-hidden"});yi.addEventListener("click",()=>{if(!o)return;let ne=o();E(yi,ne),Pi(yi,ne?j(d.activeTooltipKey):j(d.inactiveTooltipKey))});let Yi=h.createEl("button",{cls:"ai3d-inline-btn ai3d-mobile-more-toggle",attr:{"aria-label":j("helper.showMoreActionsLabel"),"aria-pressed":"false"}});Yi.appendChild(Zr('')),Yi.addEventListener("click",()=>{M=!M,Yi.setAttribute("aria-label",M?j("helper.hideMoreActionsLabel"):j("helper.showMoreActionsLabel")),D(),Pi(Yi,M?j("helper.moreActionsShown"):j("helper.moreActionsHidden"))}),n.insertBefore(h,e.nextSibling);let X=h.createDiv({cls:"ai3d-measurement-details is-hidden"});X.setAttribute("role","group"),X.setAttribute("aria-label",j("helper.calibrateTitle")),X.addEventListener("pointerdown",p),X.addEventListener("mousedown",p),X.addEventListener("click",p),X.createDiv({cls:"ai3d-measurement-details-title",text:j("helper.calibrateTitle")});let U=X.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-actions"}),he=U.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":j("helper.copyMeasurementsLabel")}});pn(he,"copy-measurements"),he.appendChild(Zr('')),he.addEventListener("click",()=>{be(he)});let ye=U.createEl("button",{cls:"ai3d-inline-btn ai3d-measurement-detail-action",attr:{"aria-label":j("helper.clearMeasurementsLabel")}});pn(ye,"clear-measurements"),ye.appendChild(Zr('')),ye.addEventListener("click",()=>{me(ye)});let Be=X.createDiv({cls:"ai3d-measurement-detail-row"});Be.createSpan({cls:"ai3d-measurement-detail-label",text:j("helper.calibrateCurrent")});let Je=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),st=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),Ie=Be.createSpan({cls:"ai3d-measurement-detail-readonly"}),Le=X.createDiv({cls:"ai3d-measurement-detail-row"});Le.createSpan({cls:"ai3d-measurement-detail-label",text:j("helper.calibrateReal")});let lt=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"X"}}),dt=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Y"}}),qe=Le.createEl("input",{cls:"ai3d-measurement-detail-input",attr:{type:"number",step:"any",placeholder:"Z"}}),et=X.createDiv({cls:"ai3d-measurement-detail-row"}),wt=et.createEl("select",{cls:"ai3d-measurement-detail-select"});for(let ne of["um","mm","cm","m"]){let ze=wt.createEl("option");ze.value=ne,ze.textContent=ne}wt.value="mm";let $t=et.createEl("label",{cls:"ai3d-measurement-detail-lock"}),bi=$t.createEl("input",{attr:{type:"checkbox",checked:"true"}});$t.appendChild(activeDocument.createTextNode(" "+j("helper.calibrateLock")));let ae=X.createDiv({cls:"ai3d-measurement-detail-row ai3d-measurement-detail-scale-actions"}),tt=ae.createEl("button",{cls:"ai3d-inline-btn",text:j("helper.calibrateApply")}),Ce=ae.createEl("button",{cls:"ai3d-inline-btn is-secondary",text:j("helper.calibrateReset")}),Ze=null;function rt(){var Wi,Li;let ne=i();if(!ne||!os(ne))return;let ze=(Li=(Wi=ne.getMeasurementBounds)==null?void 0:Wi.call(ne))!=null?Li:null,di=ne.getMeasurementScale();wt.value=ne.getMeasurementUnit(),Ze=ze,ze?(Je.textContent=`X: ${(ze.x*di.x).toFixed(3)}`,st.textContent=`Y: ${(ze.y*di.y).toFixed(3)}`,Ie.textContent=`Z: ${(ze.z*di.z).toFixed(3)}`):(Je.textContent="X: -",st.textContent="Y: -",Ie.textContent="Z: -")}function Ve(){var wn,ls;let ne=i();if(!ne||!os(ne)||!Ze)return;let ze=parseFloat(lt.value),di=parseFloat(dt.value),Wi=parseFloat(qe.value);if(!isFinite(ze)||!isFinite(di)||!isFinite(Wi))return;let Li={x:Ze.x>1e-4?ze/Ze.x:1,y:Ze.y>1e-4?di/Ze.y:1,z:Ze.z>1e-4?Wi/Ze.z:1};(wn=ne.setMeasurementUnit)==null||wn.call(ne,wt.value),(ls=ne.setMeasurementScale)==null||ls.call(ne,Li),Pt(),Pi(tt,j("helper.calibrated"))}function Mt(){var ze,di;let ne=i();!ne||!os(ne)||((ze=ne.setMeasurementUnit)==null||ze.call(ne,wt.value),(di=ne.setMeasurementScale)==null||di.call(ne,{x:1,y:1,z:1}),rt(),Ze?(lt.value=Ze.x.toFixed(3),dt.value=Ze.y.toFixed(3),qe.value=Ze.z.toFixed(3)):(lt.value="",dt.value="",qe.value=""),Pt(),Pi(Ce,j("helper.calibrateResetDone")))}function Yt(ne){if(!bi.checked||!Ze)return;let di=parseFloat((ne==="x"?lt:ne==="y"?dt:qe).value);if(!isFinite(di)||di===0)return;let Wi=Ze[ne];if(Wi<=1e-4)return;let Li=di/Wi;ne!=="x"&&(lt.value=(Ze.x*Li).toFixed(3)),ne!=="y"&&(dt.value=(Ze.y*Li).toFixed(3)),ne!=="z"&&(qe.value=(Ze.z*Li).toFixed(3))}lt.addEventListener("input",()=>Yt("x")),dt.addEventListener("input",()=>Yt("y")),qe.addEventListener("input",()=>Yt("z")),wt.addEventListener("change",()=>{let ne=i();!ne||!os(ne)||(ne.setMeasurementUnit(wt.value),Pt())}),tt.addEventListener("click",Ve),Ce.addEventListener("click",Mt);function pr(){if(rt(),Ze){let ne=i(),ze=ne&&os(ne)?ne.getMeasurementScale():{x:1,y:1,z:1};lt.value=(Ze.x*ze.x).toFixed(3),dt.value=(Ze.y*ze.y).toFixed(3),qe.value=(Ze.z*ze.z).toFixed(3)}else lt.value="",dt.value="",qe.value=""}function Ai(ne,ze){ne&&pr(),X.classList.toggle("is-hidden",!ne),De.classList.toggle("is-expanded",ne),De.setAttribute("aria-expanded",String(ne)),Pt(),Pi(ze,ne?j("helper.calibrateOpen"):j("helper.calibrateClose"))}return De.addEventListener("click",()=>{De.classList.contains("is-hidden")||Ai(X.classList.contains("is-hidden"),De)}),D(),B(),{showAnimButton(){ue.classList.remove("is-hidden"),A()},showAnnotateButton(){yi.classList.remove("is-hidden"),A()},updateAnnotationBadge(ne){ne>0?(ct.textContent=String(ne),ct.classList.remove("is-hidden")):ct.classList.add("is-hidden")},setMobileInteractionMode(ne){f&&w(ne)},syncCapabilities:B}}function Pi(n,e){var i;(i=gF.get(n))==null||i.remove();let t=n.createSpan({cls:"ai3d-tooltip"});t.textContent=e,gF.set(n,t),window.setTimeout(()=>{t.remove(),gF.delete(n)},1500)}var Yve,gF,vF=I(()=>{"use strict";_n();On();Kh();ua();_s();gA();_F();Yve=qi("helper-buttons");gF=new WeakMap});function pQ(n){let e=$a(n.sourceExt),t=[];return e!==n.sourceExt&&t.push(`Normalized extension '${n.sourceExt}' -> '${e}'.`),Kve.debug("prepare direct load",{path:n.path,sourceExt:n.sourceExt,normalizedExt:e,warningCount:t.length}),{effectivePath:n.path,effectiveExt:e,warnings:t}}var Kve,_Q=I(()=>{"use strict";eo();On();Kve=qi("direct-load-service")});var gQ={};Fe(gQ,{MissingConverterError:()=>Sd,MobileConversionUnavailableError:()=>jh,describeModelLoadFailure:()=>rE,formatModelLoadFailure:()=>UM,isMissingConverterError:()=>iE});function VM(n){return`.${n.trim().toLowerCase()}`}function iE(n){return n instanceof Sd}function UM(n){var e;if(n instanceof Sd){let t=(e=jve[n.converterId])!=null?e:n.converterId;return Ki("modelLoad.warningMessage",{ext:VM(n.sourceExt),converterName:t})}return n instanceof jh?Ki("modelLoad.mobileWarningMessage",{ext:VM(n.sourceExt)}):Ki("modelLoad.errorMessage",{reason:n instanceof Error?n.message:String(n)})}function rE(n){return n instanceof Sd?{level:"warning",title:j("modelLoad.warningTitle"),message:UM(n),hint:j("modelLoad.warningHint")}:n instanceof jh?{level:"warning",title:j("modelLoad.warningTitle"),message:UM(n),hint:j("modelLoad.mobileWarningHint")}:{level:"error",title:j("modelLoad.errorTitle"),message:UM(n),hint:j("modelLoad.errorHint")}}var jve,Sd,jh,qp=I(()=>{"use strict";_n();jve={freecad:"FreeCAD",obj2gltf:"obj2gltf",fbx2gltf:"FBX2glTF",assimp:"mesh",sldprt:"SolidWorks"};Sd=class extends Error{constructor(t,i){super(`Converter '${t}' is not registered for ${VM(i)}. Enable the matching converter in plugin settings before loading this format.`);this.converterId=t;this.sourceExt=i;this.name="MissingConverterError"}},jh=class extends Error{constructor(t){super(`Format ${VM(t)} requires local conversion tools that are unavailable on iOS, iPadOS, and Android.`);this.sourceExt=t;this.name="MobileConversionUnavailableError"}}});var TQ={};Fe(TQ,{convertForPreview:()=>tEe});function EQ(n,e){let t=n.lastIndexOf("."),i=t>0?n.slice(0,t):n,r=Math.max(i.lastIndexOf("/"),i.lastIndexOf("\\")),s=i.slice(0,r+1),a=i.slice(r+1);return`${s}${a}.ai3d-converted.${e}`}function Zve(n){let e=2166136261;for(let t=0;t>>0).toString(16).padStart(8,"0")}function SQ(n){let e=zn(n);return Hn(n,e).replace(/[^A-Za-z0-9._-]+/g,"_").replace(/^_+|_+$/g,"").slice(0,80)||"model"}function vQ(n){return Hn(n,zn(n)).toLowerCase()}function qve(n,e,t){if(!t)return EQ(n,e);let i=SQ(n),r=Zve(`${n}::${e}`);return zi(t,`${i}-${r}.ai3d-converted.${e}`)}function Qve(n,e,t){return n.converterId!==e?!1:t?n.converterId===t.converterId&&n.converterCacheKey===t.cacheKey:!0}async function $ve(n){if(!n)return!1;try{return await ms(n,ps),!0}catch(e){return!1}}async function kM(n,e,t){if(!e)return!1;try{let[i,r]=await Promise.all([t!=null?t:Jd(n),Jd(e)]);return r.size>0&&r.mtimeMs>=i.mtimeMs}catch(i){return!1}}async function Jve(n){return typeof n=="function"?await n():n}async function eEe(n,e,t,i){var l,c;let r=(c=(l=n.convertedAssetCache)==null?void 0:l.entries())!=null?c:[];if(r.length===0)return;let s=vQ(n.sourcePath),a=SQ(n.sourcePath),o=r.filter(f=>f.sourcePath!==n.sourcePath&&f.sourceExt===n.sourceExt&&f.targetExt===e&&f.outputExt===e&&f.converterId===t&&vQ(f.sourcePath)===s&&Hn(f.outputPath).startsWith(`${a}-`)&&Hn(f.outputPath).endsWith(`.ai3d-converted.${e}`)).sort((f,d)=>d.createdAt-f.createdAt);for(let f of o)if(await kM(n.sourcePath,f.outputPath,i))return f}async function tEe(n){var h,u,m,_,p,g,v,T,S,E;if(n.capability.strategy!=="convert")throw new Error(`Expected convert strategy, got '${n.capability.strategy}'.`);let e=n.capability.converterId,t=(h=n.capability.outputFormat)!=null?h:"glb";if(!e)throw new Error(`Format .${n.sourceExt} does not define a converter id.`);Xc.info("prepare conversion route",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,converterId:e});let i=null,r=()=>(i!=null||(i=Jd(n.sourcePath)),i),s=(u=n.convertedAssetCache)==null?void 0:u.get(n.sourcePath,n.sourceExt,t);if(s)if(!await $ve(s.outputPath))Xc.warn("conversion cache stale",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(m=n.convertedAssetCache)==null||m.delete(n.sourcePath,n.sourceExt,t);else if(!Qve(s,e))Xc.warn("conversion cache identity mismatch",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,cachedConverterId:s.converterId,cachedConverterCacheKey:s.converterCacheKey,currentConverterId:e}),(_=n.convertedAssetCache)==null||_.delete(n.sourcePath,n.sourceExt,t);else if(!await kM(n.sourcePath,s.outputPath,r()))Xc.warn("conversion cache output older than source",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),(p=n.convertedAssetCache)==null||p.delete(n.sourcePath,n.sourceExt,t);else return Xc.info("conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:s.outputPath}),{effectivePath:s.outputPath,effectiveExt:s.outputExt,warnings:[...s.warnings,"Using cached conversion output."]};let a=qve(n.sourcePath,t,n.outputRoot);if(await kM(n.sourcePath,a,r()))return Xc.info("conversion output already exists",{sourcePath:n.sourcePath,outputPath:a}),(g=n.convertedAssetCache)==null||g.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:a,effectiveExt:t,warnings:["Using existing conversion output."]};let o=EQ(n.sourcePath,t);if(o!==a&&await kM(n.sourcePath,o,r()))return Xc.info("legacy conversion output already exists",{sourcePath:n.sourcePath,outputPath:o}),(v=n.convertedAssetCache)==null||v.set({cacheVersion:2,converterId:e,converterCacheKey:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:o,outputExt:t,warnings:["Using existing conversion output."],createdAt:Date.now()}),{effectivePath:o,effectiveExt:t,warnings:["Using existing conversion output."]};let l=await eEe(n,t,e,r());if(l)return Xc.info("relocated conversion cache hit",{sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,previousSourcePath:l.sourcePath,outputPath:l.outputPath}),(T=n.convertedAssetCache)==null||T.set({cacheVersion:2,converterId:l.converterId,converterCacheKey:l.converterCacheKey,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:l.outputPath,outputExt:t,warnings:[...l.warnings,"Using relocated conversion output."],createdAt:Date.now()}),{effectivePath:l.outputPath,effectiveExt:t,warnings:[...l.warnings,"Using relocated conversion output."]};let c=await Jve(n.conversionManager);if(!c)throw new Error(`Format .${n.sourceExt} requires conversion support, but no conversion manager is available.`);if(!c.canConvert(n.sourceExt))throw new Sd(e,n.sourceExt);let f=await c.getConverterCacheIdentity(n.sourceExt);n.outputRoot&&await kn(n.outputRoot,{recursive:!0});let d=await c.convert({sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:a});return(E=n.convertedAssetCache)==null||E.set({cacheVersion:2,converterId:e,converterCacheKey:(S=f==null?void 0:f.cacheKey)!=null?S:e,sourcePath:n.sourcePath,sourceExt:n.sourceExt,targetExt:t,outputPath:d.outputPath,outputExt:d.outputExt,warnings:d.warnings,createdAt:Date.now()}),Xc.info("conversion route done",{sourcePath:n.sourcePath,outputPath:d.outputPath,warningCount:d.warnings.length}),{effectivePath:d.outputPath,effectiveExt:d.outputExt,warnings:d.warnings}}var Xc,AQ=I(()=>{"use strict";C0();On();rr();qp();Xc=qi("conversion-service")});var xQ={};Fe(xQ,{prepareModelInput:()=>Qp});function iEe(n,e){var t;return!!((t=n.preferConversionExts)!=null&&t.includes(e))}async function Qp(n){var a,o;let e=$a((a=n.path.split(".").pop())!=null?a:""),t=P0(e);if(Td.info("prepare model input",{path:n.path,sourceExt:e}),!t||!t.enabled)throw Td.warn("unsupported format",{sourceExt:e,path:n.path}),u_(e)?new Error("SPLAT preview is disabled in packaged builds. Local-only .splat support is planned; .spz and .sog remain unavailable until their decoders can be bundled locally."):new Error(`Unsupported format: .${e}`);let i=iEe(n,e);if(t.strategy==="convert"||i&&!!t.converterId){if(xr())throw Td.warn("conversion unavailable on mobile",{sourceExt:e,path:n.path}),new jh(e);if(!n.absolutePath)throw Td.error("filesystem path missing for conversion",{sourceExt:e,path:n.path}),new Error(`Format .${e} requires a local filesystem path for conversion, but none was resolved for '${n.path}'.`);let l=t.strategy==="convert"?t:{...t,strategy:"convert",outputFormat:(o=t.outputFormat)!=null?o:"glb"};if(!l.converterId)throw Td.error("preferred conversion route missing converter id",{sourceExt:e,path:n.path}),new Error(`Format .${e} is configured to prefer conversion, but no converter id is defined.`);i&&t.strategy==="direct"&&Td.info("preferred conversion route",{sourceExt:e,path:n.path,converterId:l.converterId});let{convertForPreview:c}=await Promise.resolve().then(()=>(AQ(),TQ)),f=await c({sourcePath:n.absolutePath,sourceExt:e,capability:l,conversionManager:n.conversionManager,convertedAssetCache:n.convertedAssetCache,outputRoot:n.conversionOutputRoot});return Td.info("conversion completed",{sourceExt:e,outputExt:f.effectiveExt,outputPath:f.effectivePath,warningCount:f.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:"convert",effectivePath:f.effectivePath,effectiveExt:f.effectiveExt,warnings:f.warnings}}let s=pQ({path:n.path,sourceExt:e});return Td.debug("direct route",{sourceExt:e,path:n.path,warningCount:s.warnings.length}),{sourcePath:n.path,sourceExt:e,strategy:t.strategy,effectivePath:s.effectivePath,effectiveExt:s.effectiveExt,warnings:s.warnings}}var Td,WM=I(()=>{"use strict";eo();_Q();qp();On();ua();Td=qi("model-pipeline")});function nE(n){return{path:n.effectivePath,ext:n.effectiveExt,strategy:n.strategy,sourcePath:n.sourcePath,sourceExt:n.sourceExt,warnings:n.warnings}}var EF=I(()=>{"use strict"});var RQ={};Fe(RQ,{listPreferredConversionExts:()=>$p});function $p(n){let e=[];return n.preferObj2gltfForObj&&e.push("obj"),n.preferFbx2gltfForFbx&&e.push("fbx"),e}var HM=I(()=>{"use strict"});function Zh(n,e){var r;let i=e.auxiliaryFileFolder.trim()||M2(n,rEe);return(r=$l(n,i))!=null?r:void 0}var rEe,zM=I(()=>{"use strict";_s();rEe="ai-model-workbench/converted-assets"});function qh(n){let e=n.createDiv({cls:"ai3d-loading-overlay"}),t=e.createDiv({cls:"ai3d-loading-skeleton"});t.createDiv({cls:"ai3d-loading-skeleton-canvas"});let i=t.createDiv({cls:"ai3d-loading-skeleton-meta"});i.createDiv({cls:"ai3d-loading-skeleton-line"}),i.createDiv({cls:"ai3d-loading-skeleton-line is-short"}),e.createDiv({cls:"ai3d-loading-spinner"});let r=e.createDiv({cls:"ai3d-loading-text"}),s="loading.default",a="",o=()=>{r.textContent=s?j(s):a};o();let c=e.createDiv({cls:"ai3d-loading-bar-track"}).createDiv({cls:"ai3d-loading-bar-fill is-indeterminate"}),f=!1,d=H1(()=>{!f&&s&&o()});return{el:e,setPhase(h){s=null,a=h,f||o()},setPhaseKey(h){s=h,f||o()},setProgress(h){f||(h<0?(c.className="ai3d-loading-bar-fill is-indeterminate",c.style.removeProperty("--bar-width")):(c.className="ai3d-loading-bar-fill",c.style.setProperty("--bar-width",`${Math.min(100,Math.max(0,h))}%`)))},hide(){f||(f=!0,d(),e.classList.add("is-hiding"),window.setTimeout(()=>e.remove(),300))}}}var XM=I(()=>{"use strict";_n()});var SF={};Fe(SF,{renderModelLoadFailure:()=>sE,renderModelPerformanceFeedback:()=>aE});function sE(n,e){let t=n.createDiv({cls:"ai3d-inline-empty ai3d-load-feedback-shell"});xr()&&t.classList.add("is-mobile");let i=t.createDiv({cls:`ai3d-load-feedback is-${e.level}`});return i.createDiv({cls:"ai3d-load-feedback-title",text:e.title}),i.createDiv({cls:"ai3d-load-feedback-message",text:e.message}),i.createDiv({cls:"ai3d-load-feedback-hint",text:e.hint}),t}function aE(n,e){var o,l,c,f,d,h,u;if((!e.performanceTier||e.performanceTier==="light")&&!((o=e.resourceWarnings)!=null&&o.length))return null;let t=(l=e.performanceTier)!=null?l:"light",i=((c=e.splatCount)!=null?c:e.triangleCount).toLocaleString(),r=e.splatCount!==void 0?"splats":"triangles",s=n.createDiv({cls:`ai3d-performance-feedback is-${t}`});s.createDiv({cls:"ai3d-performance-feedback-tier",text:(f=e.resourceWarnings)!=null&&f.length?"assets":(d=e.performanceTier)!=null?d:"light"}),s.createDiv({cls:"ai3d-performance-feedback-meta",text:(h=e.resourceWarnings)!=null&&h.length?e.resourceWarnings[0]:`${i} ${r} \xB7 ${e.materialCount.toLocaleString()} materials`});let a=[...(u=e.resourceWarnings)!=null?u:[],...e.performanceHint?[e.performanceHint]:[]];return a.length>0&&(s.title=a.join(` +`)),window.setTimeout(()=>s.classList.add("is-subtle"),4200),s}var oE=I(()=>{"use strict";ua()});function Yc(n){var t;let e=(t=(n!=null?n:"").split(".").pop())==null?void 0:t.trim().toLowerCase();return nEe.has(e)?e:"glb"}function Qh(n,e,t){return typeof n=="string"&&sEe.has(n)?n:e===t?"direct":"convert"}var nEe,sEe,YM=I(()=>{"use strict";nEe=new Set(["glb","gltf","stl","obj","splat","ply","fbx","step","stp","iges","igs","brep","sldprt","3mf","dae"]),sEe=new Set(["direct","convert"])});function Jp(n,e,t){let i=j("previewCanvas.modelShortcuts");PQ(n,{label:Ki(IQ[e],{model:Vs(t)||j("workbench.modelTitle"),shortcuts:i}),shortcutKeys:aEe,shortcutHint:i})}function yQ(n){let e=j("previewCanvas.gridShortcuts");PQ(n,{label:Ki(IQ.grid,{shortcuts:e}),shortcutKeys:oEe,shortcutHint:e})}function e_(n,e){n.addEventListener("keydown",t=>{var s,a,o,l,c;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"?((a=i.toggleWireframe)==null||a.call(i),t.preventDefault()):r==="g"?((o=i.toggleOrientationGizmo)==null||o.call(i),t.preventDefault()):r==="b"?((l=i.toggleBoundingBox)==null||l.call(i),t.preventDefault()):r===" "?((c=i.toggleAnimation)==null||c.call(i),t.preventDefault()):r==="m"&&(os(i)&&i.toggleMeasurement(),t.preventDefault())})}function CQ(n,e){n.addEventListener("keydown",t=>{var s,a;let i=e();if(!i)return;let r=t.key.toLowerCase();r==="r"?((s=i.resetView)==null||s.call(i),t.preventDefault()):r==="w"&&((a=i.toggleWireframe)==null||a.call(i),t.preventDefault())})}function PQ(n,e){lEe(n),n.setAttribute("role","application"),n.setAttribute("aria-label",e.label),n.setAttribute("aria-keyshortcuts",e.shortcutKeys.join(" ")),n.setAttribute("title",e.shortcutHint),n.dataset.testid="ai3d-preview-canvas"}function lEe(n){if(MQ(n),bQ.has(n)||typeof MutationObserver=="undefined")return;bQ.add(n),new MutationObserver(()=>MQ(n)).observe(n,{attributes:!0,attributeFilter:["tabindex"]})}function MQ(n){n.tabIndex!==0&&(n.tabIndex=0),n.getAttribute("tabindex")!=="0"&&n.setAttribute("tabindex","0")}var aEe,oEe,bQ,IQ,KM=I(()=>{"use strict";_n();Kh();_s();aEe=["R","W","G","B","M","Space"],oEe=["R","W"],bQ=new WeakSet,IQ={inline:"previewCanvas.inlineLabel",grid:"previewCanvas.gridLabel","live-preview":"previewCanvas.liveLabel","direct-view":"previewCanvas.directLabel"}});function DQ(n){let{contentEl:e,filePath:t,mobile:i,getPreview:r}=n,s=e.createDiv({cls:"ai3d-workspace"}),a=s.createDiv({cls:"ai3d-workspace-track-top"}),o=a.createDiv({cls:"ai3d-workspace-main"}),l=a.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-h"}),c=a.createDiv({cls:"ai3d-workspace-sidebar"}),f=createDiv(),d=f.createDiv({cls:"ai3d-preview-host"}),h=f.createEl("canvas");h.className="ai3d-canvas-full",Jp(h,"direct-view",t),e_(h,r),d.appendChild(h);let u=f.createDiv();u.className="ai3d-annot-mode-overlay is-hidden",d.appendChild(u),o.appendChild(d);let m=c.createDiv({cls:"ai3d-sidebar-content"}),_=m.createDiv({cls:"ai3d-direct-workbench-panel is-hidden"}),p=m.createDiv({cls:"ai3d-sidebar-body"}),g=s.createDiv({cls:"ai3d-resize-handle ai3d-resize-handle-v"});return i&&o.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("directView.mobileHint")}),{workspace:s,topTrack:a,mainArea:o,hHandle:l,host:d,canvas:h,modeOverlay:u,sidebarContent:p,vHandle:g,workbenchPanel:_}}var LQ=I(()=>{"use strict";_n();KM()});function jM(n){return Math.round(n!=null?n:0).toLocaleString()}function cEe(n){return[n.boundingSize.x,n.boundingSize.y,n.boundingSize.z].map(e=>e.toFixed(2)).join(" x ")}function fEe(n){return n==="three"?"Three.js":"Babylon.js"}function OQ(n){var f,d;let{panel:e,summary:t,route:i,registeredPartCount:r}=n;e.empty(),e.removeClass("is-hidden"),e.dataset.ai3dBackend=i.backend,e.dataset.ai3dRouteReason=i.reason;let s=e.createDiv({cls:"ai3d-direct-workbench-overview"}),a=s.createDiv({cls:"ai3d-direct-workbench-status"}),o=a.createDiv({cls:"ai3d-direct-workbench-line"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.backendLabel")}),o.createSpan({cls:"ai3d-direct-workbench-value",text:fEe(i.backend)});let l=a.createDiv({cls:"ai3d-direct-workbench-line ai3d-direct-workbench-route"});l.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.routeLabel")}),l.createSpan({cls:"ai3d-direct-workbench-value",text:i.reason});let c=s.createDiv({cls:"ai3d-direct-workbench-metrics"});t_(c,j("workbench.meshesLabel"),jM(t.meshCount)),t_(c,j("directWorkbench.partCandidatesLabel"),jM(r)),t_(c,t.splatCount!==void 0?j("workbench.splatsLabel"):j("workbench.trianglesLabel"),jM((f=t.splatCount)!=null?f:t.triangleCount)),t_(c,j("workbench.materialsLabel"),jM(t.materialCount)),t_(c,j("workbench.boundingSizeLabel"),cEe(t)),t_(c,j("directWorkbench.performanceLabel"),(d=t.performanceTier)!=null?d:"light")}function t_(n,e,t){let i=n.createDiv({cls:"ai3d-direct-workbench-metric"});i.createSpan({cls:"ai3d-direct-workbench-label",text:e}),i.createSpan({cls:"ai3d-direct-workbench-value",text:t})}var NQ=I(()=>{"use strict";_n()});function dEe(n,e){return n.experimentalThreeWorkbench&&n.useThreeRenderer&&e.strategy==="direct"&&ZM.has(e.ext)&&ZM.has(e.sourceExt)}function hEe(n){return wQ.has(n.ext)?n.strategy==="direct"?wQ.has(n.sourceExt):n.strategy==="convert"&&ZM.has(n.ext):!1}function uEe(n,e){return n.useThreeForConvertedDirectView&&e.strategy==="convert"&&ZM.has(e.ext)}function FQ(n,e){let t=dEe(n,e),i=hEe(e),r=uEe(n,e);return{ext:e.ext,annotationMode:"edit",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:t,requireWorkbenchFeatures:t||!i,rendererRollout:r?"three-direct-glb":n.previewRendererRollout,useThreeRenderer:r?!0:n.useThreeRenderer}}var wQ,ZM,BQ=I(()=>{"use strict";wQ=new Set(["glb","gltf","stl","ply","obj"]),ZM=new Set(["glb","gltf"])});function i_(n){return{renderQuality:n.renderQuality,renderScale:n.renderScale}}function TEe(n,e){return!Number.isFinite(e!=null?e:Number.NaN)||(e!=null?e:0)<=0?i_(n):(e!=null?e:0)>=pEe?{renderQuality:n.renderQuality==="high"?"medium":n.renderQuality,renderScale:Math.min(n.renderScale,TF)}:(e!=null?e:0)>=mEe?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,GQ)}:i_(n)}function xF(n){var e;return(e=n.splatCount)!=null?e:n.triangleCount}function AEe(n){return n.splatCount!==void 0?n.splatCount>=VQ:xF(n)>=gEe}function xEe(n){return n.splatCount!==void 0?n.splatCount>=EEe:xF(n)>=vEe}function REe(n){return n.splatCount!==void 0?n.splatCount>=VQ:xF(n)>=_Ee}function kQ(n,e){return e.performanceTier==="extreme"?xEe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,TF)}:i_(n):e.performanceTier==="heavy"?AEe(e)?{renderQuality:n.renderQuality==="low"?"low":"medium",renderScale:Math.min(n.renderScale,TF)}:i_(n):e.performanceTier==="medium"&&REe(e)?{renderQuality:n.renderQuality,renderScale:Math.min(n.renderScale,GQ)}:i_(n)}function r_(n){return n.startsWith("/")||n.startsWith("\\")||/^[A-Za-z]:[\\/]/.test(n)}function qM(n){var e;return(e=n.split(/[?#]/,1)[0])!=null?e:n}function WQ(n){try{return decodeURIComponent(n)}catch(e){return n}}function AF(n){let e=WQ(n).replace(/\\/g,"/"),t=[];for(let i of e.split("/"))if(!(!i||i===".")){if(i===".."){t.pop();continue}t.push(i)}return t.join("/")}function HQ(n,e){return AF(n?`${n}/${qM(e)}`:qM(e))}function zQ(n){let e=n.replace(/\\/g,"/").replace(/\/+$/,""),t=e.lastIndexOf("/");return t>0?e.slice(0,t):""}function bEe(n){return!n||n.startsWith("data:")?!0:SEe.test(n)&&!r_(n)}function MEe(n,e){return r_(n)?AF(qM(e)):HQ(zQ(n),e)}async function IEe(n,e){let t=await yEe(n,e);return t===null?null:e.toLowerCase().split(/[?#]/,1)[0].endsWith(".gltf")?DEe(n,e,t):t}async function yEe(n,e){if(r_(e))try{let{stat:i}=await Promise.resolve().then(()=>(rr(),XT));return(await i(e)).size}catch(i){return null}let t=n.vault.getAbstractFileByPath(e);return XQ(t)?t.stat.size:null}async function CEe(n,e){if(r_(e))try{let{readFile:r}=await Promise.resolve().then(()=>(rr(),XT));return new TextDecoder().decode(await r(e))}catch(r){return null}let t=n.vault.getAbstractFileByPath(e),i=n.vault;if(!(t instanceof UQ.TFile)||typeof i.read!="function")return null;try{return await i.read(t)}catch(r){return null}}async function PEe(n,e,t){if(r_(e))try{let{pathJoin:a,pathNormalize:o,stat:l}=await Promise.resolve().then(()=>(rr(),XT)),c=qM(WQ(t)),f=o(e.replace(/[\\/][^\\/]*$/,"")),d=r_(c)?o(c):o(a(f,c));return(await l(d)).size}catch(a){return null}let i=zQ(e),r=HQ(i,t),s=n.vault.getAbstractFileByPath(r);return XQ(s)?s.stat.size:null}async function DEe(n,e,t){var l,c;let i=await CEe(n,e);if(!i)return t;let r;try{r=JSON.parse(i)}catch(f){return t}let s=t,a=new Set,o=async(f,d)=>{var p;let h=f==null?void 0:f.uri;if(!h||bEe(h))return;let u=MEe(e,h);if(!u||a.has(u))return;a.add(u);let m=await PEe(n,e,h);if(m!==null&&Number.isFinite(m)&&m>0){s+=m;return}let _=(p=f==null?void 0:f.byteLength)!=null?p:d;Number.isFinite(_)&&(_!=null?_:0)>0&&(s+=_!=null?_:0)};for(let f of(l=r.buffers)!=null?l:[])await o(f,f.byteLength);for(let f of(c=r.images)!=null?c:[])await o(f);return s}function XQ(n){let e=n;return!!e&&typeof e=="object"&&!!e.stat&&typeof e.stat.size=="number"}async function n_(n,e,t){return TEe(t,await IEe(n,e))}var UQ,mEe,pEe,_Ee,gEe,vEe,VQ,EEe,GQ,TF,SEe,QM=I(()=>{"use strict";UQ=require("obsidian"),mEe=64*1024*1024,pEe=192*1024*1024,_Ee=18e4,gEe=45e4,vEe=12e5,VQ=65e4,EEe=15e5,GQ=1.25,TF=1,SEe=/^[a-z][a-z0-9+.-]*:/i});function OEe(n,e,t){let i=new Promise((r,s)=>{let a=window.setTimeout(()=>{s(new RF(`Conversion did not complete within ${e}ms`))},e);n.then(()=>window.clearTimeout(a)).catch(()=>window.clearTimeout(a))});return Promise.race([n,i])}var lE,LEe,RF,$M,YQ=I(()=>{"use strict";eo();On();lE=qi("conversion-manager"),LEe=3e5,RF=class extends Error{constructor(e="Conversion timed out"){super(e),this.name="ConversionTimeoutError"}};$M=class{constructor(){this.converters=new Map;this.pending=new Map}getConverter(e){return this.converters.get($a(e))}registerConverter(e){lE.info("register converter",{converterId:e.id,sourceExts:[...e.sourceExts]});for(let t of e.sourceExts)this.converters.set($a(t),e)}canConvert(e){let t=$a(e),i=this.converters.has(t);return lE.debug("can convert",{ext:t,ok:i}),i}async getConverterCacheIdentity(e){let t=this.getConverter(e);if(t)return{converterId:t.id,cacheKey:await t.getCacheKey()}}async convert(e){var o;let t=$a(e.sourceExt),i=this.getConverter(t);if(!i)throw lE.error("converter missing",{ext:t,targetExt:e.targetExt}),new Error(`No converter registered for .${t}`);let r=`${e.sourcePath}::${t}::${e.targetExt}`,s=this.pending.get(r);if(s)return lE.info("joining in-flight conversion",{key:r}),s;lE.info("dispatch conversion",{converterId:i.id,ext:t,targetExt:e.targetExt});let a=OEe(i.convert({...e,sourceExt:t}),(o=e.timeoutMs)!=null?o:LEe,{converterId:i.id,ext:t,targetExt:e.targetExt});this.pending.set(r,a);try{return await a}finally{this.pending.delete(r)}}}});var NF={};Fe(NF,{describeConverterCommandSource:()=>PF,inspectAllConverterCommands:()=>QEe,inspectConverterCommand:()=>OF,listConverterCommandSpecs:()=>qEe,resolveConverterCommand:()=>$Ee,resolveConverterInvocation:()=>Nn});function IF(...n){let e=(He==null?void 0:He.platform)==="darwin"?["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin","/usr/bin"]:["/usr/local/bin","/opt/homebrew/bin","/opt/local/bin","/usr/bin"];return Array.from(new Set(e.flatMap(t=>n.map(i=>`${t}/${i}`))))}function wEe(){var r,s,a;if((He==null?void 0:He.platform)==="darwin")return["/Applications/FreeCAD.app/Contents/MacOS/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/FreeCADCmd","/Applications/FreeCAD.app/Contents/Resources/bin/freecadcmd",...IF("FreeCADCmd","freecadcmd")];if((He==null?void 0:He.platform)!=="win32")return["/usr/local/bin/freecadcmd","/opt/homebrew/bin/freecadcmd","/opt/local/bin/freecadcmd","/snap/freecad/current/usr/bin/freecadcmd","/usr/bin/freecadcmd"];let n=[],e=(r=He==null?void 0:He.env)==null?void 0:r.LOCALAPPDATA,t=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,i=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"];if(e&&n.push(zi(e,"Programs","FreeCAD","bin","FreeCADCmd.exe")),t&&n.push(zi(t,"FreeCAD","bin","FreeCADCmd.exe")),e)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${e}/Programs/FreeCAD ${o}/bin/FreeCADCmd.exe`);if(t)for(let o of["1.2","1.1","1.0","0.22","0.21","0.20"])n.push(`${t}/FreeCAD ${o}/bin/FreeCADCmd.exe`);return i&&n.push(`${i}/FreeCAD/bin/FreeCADCmd.exe`),n}function FEe(n){var a,o,l,c;if((He==null?void 0:He.platform)!=="win32")return[];let e=(a=He==null?void 0:He.env)==null?void 0:a.APPDATA,t=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,i=(l=He==null?void 0:He.env)==null?void 0:l.npm_config_prefix,r=(c=He==null?void 0:He.env)==null?void 0:c.USERPROFILE,s=[i,e?zi(e,"npm"):void 0,t?zi(t,"npm"):void 0,r?zi(r,"AppData","Roaming","npm"):void 0].filter(f=>!!f);return Array.from(new Set(s.map(f=>zi(f,n))))}function BEe(...n){var s,a,o;if((He==null?void 0:He.platform)!=="win32")return[];let e=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles,t=(a=He==null?void 0:He.env)==null?void 0:a["ProgramFiles(x86)"],i=(o=He==null?void 0:He.env)==null?void 0:o.LOCALAPPDATA,r=[e,t,i?zi(i,"Programs"):void 0].filter(l=>!!l);return Array.from(new Set(r.flatMap(l=>n.map(c=>zi(l,c)))))}async function LF(n){try{return await ms(n,(He==null?void 0:He.platform)==="win32"?ps:eC),!0}catch(e){return!1}}function bF(n){let e=n==null?void 0:n.trim();if(e)return e}function jQ(n){return UEe.test(n)?{ok:!1,reason:"Command contains unsafe shell metacharacters."}:{ok:!0}}function VEe(n,e){for(let t of[n,...e]){let i=jQ(t);if(!i.ok)return i}return{ok:!0}}async function GEe(n){try{return(await Jd(n)).isFile()}catch(e){return!1}}function kEe(n){let e=[],t="",i=null;for(let r=0;rr.trim().toLowerCase()).filter(Boolean);return e!=null&&e.length?e:NEe}async function XEe(n){var r;let e=(r=He==null?void 0:He.env)==null?void 0:r.PATH;if(!e)return;let t=e.split(tC).map(s=>s.trim()).filter(Boolean),i=(He==null?void 0:He.platform)==="win32"?zEe(n):[""];for(let s of t)for(let a of i){let o=zi(s,a?`${n}${a}`:n);if(await LF(o))return o}}function yF(n,e,t=15e3){let i=jQ(n);return i.ok?new Promise((r,s)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:4*1024*1024},(a,o,l)=>{if(a){s(new Error((l||o||a.message).toString().trim()||a.message));return}r({stdout:o!=null?o:"",stderr:l!=null?l:""})})}):Promise.reject(new Error(`Refusing to execute converter command: ${i.reason}`))}function CF(n){let t=(n instanceof Error?n.message:String(n)).replace(/\s+/g," ").trim();return t.length>180?`${t.slice(0,177)}...`:t}async function MF(n,e,t,i){let r="";for(let s of t)try{return await yF(n,[...e,...s]),{ok:!0,detail:""}}catch(a){let o=CF(a);if(i.test(o))return{ok:!0,detail:""};r=o}return{ok:!1,detail:r||"Command probe failed."}}async function YEe(n){var i;if(!n.available)return[];let e=(i=n.resolvedPath)!=null?i:n.executable,t=[...n.args];if(n.id==="freecad")try{return await yF(e,[...t,"-c","import cadquery, trimesh; print('ok')"]),[{kind:"cad-python",ok:!0,detail:""}]}catch(r){return[{kind:"cad-python",ok:!1,detail:CF(r)}]}if(n.id==="assimp")try{return await yF(e,[...t,"-c","import trimesh, numpy, networkx, collada; print('ok')"]),[{kind:"mesh-python",ok:!0,detail:""}]}catch(r){return[{kind:"mesh-python",ok:!1,detail:CF(r)}]}if(n.id==="freecadcmd"){let r=await MF(e,t,[["--version"],["--help"]],/freecad|usage|help|version/i);return[{kind:"freecadcmd-cli",ok:r.ok,detail:r.detail}]}if(n.id==="obj2gltf"){let r=await MF(e,t,[["--version"],["--help"]],/obj2gltf|usage|help|version/i);return[{kind:"obj2gltf-cli",ok:r.ok,detail:r.detail}]}if(n.id==="fbx2gltf"){let r=await MF(e,t,[["--version"],["--help"]],/fbx2gltf|usage|help|version/i);return[{kind:"fbx2gltf-cli",ok:r.ok,detail:r.detail}]}return[]}function KEe(n){let e=DF.find(t=>t.id===n);if(!e)throw new Error(`Unknown converter command id: ${n}`);return e}function jEe(n){var s,a,o,l;let e=(a=(s=He==null?void 0:He.env)==null?void 0:s.ProgramFiles)==null?void 0:a.toLowerCase(),t=(l=(o=He==null?void 0:He.env)==null?void 0:o["ProgramFiles(x86)"])==null?void 0:l.toLowerCase(),i=[],r=[];for(let c of n.knownCandidates){let f=c.toLowerCase(),d=(He==null?void 0:He.platform)==="win32"&&((e?f.startsWith(e):!1)||(t?f.startsWith(t):!1)),h=(He==null?void 0:He.platform)!=="win32"&&(c.startsWith("/usr/bin/")||c.startsWith("/snap/freecad/current/usr/bin/"));d||h?r.push(c):i.push(c)}return{userCandidates:i,systemCandidates:r}}async function KQ(n,e,t){for(let i of e)if(await LF(i))return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,command:i,executable:i,args:[],resolvedPath:i,available:!0,source:"candidate",detail:t,checkedCandidates:[i]}}function ZEe(n,e){let t=[];return n.length&&t.push(`Checked common user locations: ${n.join("; ")}`),e.length&&t.push(`Checked system fallback locations: ${e.join("; ")}`),t.join(". ")}async function JM(n,e,t,i){let r=WEe(e),s=VEe(r.executable,r.args);if(!s.ok)return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:void 0,available:!1,source:t,detail:s.reason,checkedCandidates:[r.executable]};if(HEe(r.executable)){let[o,l]=await Promise.all([LF(r.executable),GEe(r.executable)]),c=o&&l;return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:c?r.executable:void 0,available:c,source:t,detail:c?`Using ${PF(t)} path.`:"Configured path was not found or is not executable.",checkedCandidates:[r.executable]}}let a=await XEe(r.executable);return{id:n.id,label:n.label,envVar:n.envVar,settingsKey:n.settingsKey,configuredCommand:i,command:e,executable:r.executable,args:r.args,resolvedPath:a,available:!!a,source:t,detail:a?`Resolved from ${PF(t)} via PATH lookup.`:"Command name was not found on PATH.",checkedCandidates:[r.executable]}}function qEe(){return DF}function PF(n){switch(n){case"settings":return"plugin settings";case"env":return"environment variable";case"candidate":return"known install location";case"path":return"PATH fallback"}}async function OF(n,e){var h,u,m;let t=KEe(n),{userCandidates:i,systemCandidates:r}=jEe(t),s=bF(e);if(s)return JM(t,s,"settings",s);let a=bF((h=He==null?void 0:He.env)==null?void 0:h[t.envVar]);if(a)return JM(t,a,"env");for(let _ of(u=t.envVarAliases)!=null?u:[]){let p=bF((m=He==null?void 0:He.env)==null?void 0:m[_]);if(p)return JM(t,p,"env")}let o=await KQ(t,i,"Detected at a common user-managed install location.");if(o)return o;let l=[];for(let _ of t.fallbackCommands){let p=await JM(t,_,"path");if(l.push(p),p.available)return p}let c=await KQ(t,r,"Detected at a system fallback install location.");if(c)return c;let f=l.flatMap(_=>_.checkedCandidates),d=ZEe(i,r);return{...l[0],detail:d?`Command name was not found on PATH. ${d}`:"Command name was not found on PATH.",checkedCandidates:[...i,...f,...r]}}async function QEe(n){let e=await Promise.all(DF.map(t=>OF(t.id,n[t.settingsKey])));return Promise.all(e.map(async t=>({...t,dependencyChecks:await YEe(t)})))}async function $Ee(n,e){return(await Nn(n,e)).command}async function Nn(n,e){var i;let t=await OF(n,e);if(!t.available&&t.detail==="Command contains unsafe shell metacharacters.")throw new Error(`Refusing to resolve converter command '${n}': ${t.detail}`);return{command:(i=t.resolvedPath)!=null?i:t.executable,args:[...t.args]}}var He,NEe,DF,UEe,Ad=I(()=>{"use strict";rr();rr();rr();He=sm(),NEe=[".exe",".cmd",".bat",".com"];DF=[{id:"freecad",label:"Python (CadQuery/OCCT)",settingsKey:"freecadCommand",envVar:"AI3D_FREECAD_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand",envVar:"AI3D_OBJ2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["obj2gltf.cmd"]:["obj2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?FEe("obj2gltf.cmd"):IF("obj2gltf")},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand",envVar:"AI3D_FBX2GLTF_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FBX2glTF.exe"]:["FBX2glTF","fbx2gltf"],knownCandidates:(He==null?void 0:He.platform)==="win32"?BEe(zi("FBX2glTF","FBX2glTF-windows-x64.exe"),zi("FBX2glTF","FBX2glTF.exe")):IF("FBX2glTF","fbx2gltf")},{id:"assimp",label:"Python (trimesh)",settingsKey:"assimpCommand",envVar:"AI3D_ASSIMP_CMD",fallbackCommands:(He==null?void 0:He.platform)==="win32"?["py","python"]:["python3","python"],knownCandidates:(He==null?void 0:He.platform)==="win32"?[]:["/usr/local/bin/python3","/opt/homebrew/bin/python3","/opt/local/bin/python3","/usr/bin/python3"]},{id:"freecadcmd",label:"FreeCAD (SLDPRT)",settingsKey:"freecadcmdCommand",envVar:"AI3D_FREECADCMD",envVarAliases:["AI3D_FREECMDCMD"],fallbackCommands:(He==null?void 0:He.platform)==="win32"?["FreeCADCmd.exe"]:["freecadcmd","FreeCADCmd"],knownCandidates:wEe()}];UEe=/[;|&<>$`\r\n\t]/});var qQ,ZQ=I(()=>{qQ=`import cadquery as cq import trimesh import trimesh.visual import numpy as np @@ -24594,11 +24594,11 @@ with open(out, 'wb') as f: f.write(data) print(f'Converted {src} -> {out} ({len(data)} bytes, {matched_count}/{total_faces} colored faces)') -`});function Kc(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var JM=I(()=>{"use strict"});function t$(n){return n.toLowerCase().replace(/^\./,"")}function sSe(n){let e=t$(n);return e==="step"||e==="stp"?e$:e==="iges"||e==="igs"?$Q:qQ}function wF(n,e,t){return n.split(e).join(t)}function i$(n,e,t){let i=t$(t),r=wF(sSe(i),iSe,Kc(n)),s=wF(r,rSe,Kc(e));return wF(s,nSe,i)}var iSe,rSe,nSe,r$=I(()=>{"use strict";ZQ();QQ();JQ();JM();iSe="__AI3D_SOURCE_PATH__",rSe="__AI3D_OUTPUT_PATH__",nSe="__AI3D_SOURCE_EXT__"});async function lSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function cSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`CAD conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var aSe,oSe,e0,n$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();r$();aSe=qi("freecad-converter"),oSe=300*1e3;e0=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking CAD conversion.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-freecad"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,i$(e.sourcePath,s,e.sourceExt),"utf8"),aSe.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await cSe(t.command,[...t.args,o],oSe)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python with cadquery is installed: pip install cadquery trimesh. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await lSe(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await da(s)).byteLength===0)throw new Error(`CAD conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/CadQuery(OCCT) bridge."]}}}});async function hSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function uSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`obj2gltf command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var fSe,dSe,t0,s$=I(()=>{"use strict";rr();rr();rr();On();Ad();fSe=qi("obj2gltf-converter"),dSe=180*1e3;t0=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking obj2gltf.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(o=e.outputPath)!=null?o:zi(i,`${r}.ai3d-converted.glb`);await kn(Wn(s),{recursive:!0}),fSe.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await uSe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],dSe)}catch(l){throw new Error(`obj2gltf conversion failed for '${e.sourcePath}'. Set obj2gltf command path in plugin settings or AI3D_OBJ2GLTF_CMD if obj2gltf is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await hSe(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await da(s)).byteLength===0)throw new Error(`obj2gltf output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local obj2gltf CLI bridge."]}}}});async function _Se(n){try{return await ms(n,ps),!0}catch(e){return!1}}function gSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`FBX2glTF command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var mSe,pSe,i0,a$=I(()=>{"use strict";rr();rr();rr();On();Ad();mSe=qi("fbx2gltf-converter"),pSe=180*1e3;i0=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking FBX2glTF.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(o=e.outputPath)!=null?o:zi(i,`${r}.ai3d-converted.glb`);await kn(Wn(s),{recursive:!0}),mSe.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await gSe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],pSe)}catch(l){throw new Error(`FBX2glTF conversion failed for '${e.sourcePath}'. Set FBX2glTF command path in plugin settings or AI3D_FBX2GLTF_CMD if FBX2glTF is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await _Se(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await da(s)).byteLength===0)throw new Error(`FBX2glTF output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FBX2glTF CLI bridge."]}}}});async function SSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function TSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`mesh conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function ASe(n,e){let t=Kc(n),i=Kc(e);return["import trimesh","import sys","",`src = r"${t}"`,`out = r"${i}"`,"","try:"," loaded = trimesh.load(src, force=None)","except Exception as e:",' print(f"Failed to load {src}: {e}", file=sys.stderr)'," sys.exit(1)","","if isinstance(loaded, trimesh.Scene):"," scene = loaded","elif isinstance(loaded, trimesh.Trimesh):"," scene = trimesh.Scene([loaded])","else:",' print(f"Unsupported type: {type(loaded)}", file=sys.stderr)'," sys.exit(1)","","try:"," data = scene.export(file_type='glb')","except Exception as e:",' print(f"Failed to export GLB: {e}", file=sys.stderr)'," sys.exit(1)","","with open(out, 'wb') as f:"," f.write(data)","","print(f'Converted {src} -> {out} ({len(data)} bytes)')"].join(` -`)}var vSe,ESe,r0,o$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();JM();vSe=qi("assimp-converter"),ESe=300*1e3;r0=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking mesh conversion.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-mesh-convert"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,ASe(e.sourcePath,s),"utf8"),vSe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await TSe(t.command,[...t.args,o],ESe)}catch(f){throw new Error(`Mesh conversion failed for '${e.sourcePath}'. Ensure Python with trimesh is installed: pip install trimesh numpy networkx pycollada. Set Python command path in plugin settings or AI3D_ASSIMP_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await SSe(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await da(s)).byteLength===0)throw new Error(`Mesh conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/trimesh bridge."]}}}});async function RSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function bSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i({stdout:a!=null?a:"",stderr:o!=null?o:""});return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`SLDPRT conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function MSe(n,e){let t=Kc(n),i=Kc(e),r=i.replace(/\.glb$/i,".intermediate.step");return["import sys","import os","",`src = r"${t}"`,`out = r"${i}"`,`step_out = r"${r}"`,"","# Step 1: Import SLDPRT via FreeCAD","try:"," import FreeCAD"," import ImportGui"," import Mesh","except ImportError as e:",' print(f"FreeCAD modules not available: {e}", file=sys.stderr)',' print("Ensure this script runs under FreeCADCmd (not system Python).", file=sys.stderr)'," sys.exit(1)","","print(f'Opening SLDPRT: {src}')","try:"," doc = FreeCAD.newDocument('Convert')"," ImportGui.open(src, doc.Name)","except Exception as e:",' print(f"Failed to open SLDPRT file: {e}", file=sys.stderr)'," sys.exit(1)","","if not doc.Objects:",' print("SLDPRT file imported but contains no objects", file=sys.stderr)'," sys.exit(1)","",'print(f"Imported {len(doc.Objects)} object(s) from SLDPRT")',"","# Step 2: Export to STEP (intermediate)","try:"," import Import"," objs = [o for o in doc.Objects if hasattr(o, 'Shape')]"," if not objs:",' print("No shape objects found after import", file=sys.stderr)'," sys.exit(1)"," Import.export(objs, step_out)",' print(f"Exported intermediate STEP: {step_out}")',"except Exception as e:",' print(f"Failed to export STEP: {e}", file=sys.stderr)'," sys.exit(1)","","FreeCAD.closeDocument(doc.Name)","","# Step 3: Convert STEP to GLB using OCP (same pipeline as FreecadConverter)","import trimesh","import trimesh.visual","import numpy as np","","from OCP.STEPControl import STEPControl_Reader","from OCP.TopoDS import TopoDS","from OCP.TopAbs import TopAbs_FACE","from OCP.TopExp import TopExp_Explorer","from OCP.BRep import BRep_Tool","from OCP.BRepMesh import BRepMesh_IncrementalMesh","from OCP.TopLoc import TopLoc_Location","from OCP.IFSelect import IFSelect_RetDone","","DEFAULT_COLOR = [180, 180, 180, 255]","","def triangulate_face(face, linear=0.1, angular=0.5):"," BRepMesh_IncrementalMesh(face, linear, False, angular, True)"," loc = TopLoc_Location()"," tri = BRep_Tool.Triangulation_s(face, loc)"," if tri is None:"," return None, None"," n = tri.NbNodes()"," verts = []"," for i in range(1, n + 1):"," p = tri.Node(i)"," if not loc.IsIdentity():"," p = p.Transformed(loc.Transformation())"," verts.append([p.X(), p.Y(), p.Z()])"," ntri = tri.NbTriangles()"," faces = []"," for i in range(1, ntri + 1):"," t = tri.Triangle(i)"," n1, n2, n3 = t.Get()"," faces.append([n1 - 1, n2 - 1, n3 - 1])"," return verts, faces","","sr = STEPControl_Reader()","status = sr.ReadFile(step_out)","if status != IFSelect_RetDone:",' print(f"Failed to read intermediate STEP: {step_out}", file=sys.stderr)'," sys.exit(1)","sr.TransferRoots()","shape = sr.OneShape()","","all_verts = []","all_faces = []","all_colors = []","total_faces = 0","","exp = TopExp_Explorer(shape, TopAbs_FACE)","while exp.More():"," face = TopoDS.Face_s(exp.Current())"," total_faces += 1"," verts, faces = triangulate_face(face)"," if verts and faces:"," offset = len(all_verts)"," all_verts.extend(verts)"," for tri in faces:"," all_faces.append([tri[0] + offset, tri[1] + offset, tri[2] + offset])"," all_colors.extend([DEFAULT_COLOR] * len(verts))"," exp.Next()","","if not all_verts or not all_faces:",' print(f"No geometry extracted from STEP ({total_faces} faces scanned)", file=sys.stderr)'," sys.exit(1)","",'print(f"Triangulated: {total_faces} faces, {len(all_verts)} verts")',"","verts_arr = np.array(all_verts, dtype=float)","faces_arr = np.array(all_faces, dtype=int)","colors_arr = np.array(all_colors, dtype=np.uint8)","","mesh = trimesh.Trimesh("," vertices=verts_arr,"," faces=faces_arr,"," visual=trimesh.visual.ColorVisuals(vertex_colors=colors_arr),"," process=True,",")","mesh.fix_normals()","scene = trimesh.Scene([mesh])","","result = scene.export(file_type='glb')","if isinstance(result, bytes):"," data = result","elif isinstance(result, str):"," with open(result, 'rb') as f:"," data = f.read()","else:"," data = bytes(result)","","with open(out, 'wb') as f:"," f.write(data)","","# Cleanup intermediate STEP","try:"," os.remove(step_out)","except OSError:"," pass","","print(f'Converted {src} -> {out} ({len(data)} bytes, {total_faces} faces)')"].join(` -`)}var FF,xSe,n0,l$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();JM();FF=qi("sldprt-converter"),xSe=600*1e3;n0=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await Nn("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking SLDPRT conversion.`);let t=await Nn("freecadcmd",this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-sldprt"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,MSe(e.sourcePath,s),"utf8"),FF.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await bSe(t.command,[...t.args,o],xSe);f&&FF.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&FF.warn("FreeCAD stderr",{stderr:d.trim().slice(0,500)})}catch(f){throw new Error(`SLDPRT conversion failed for '${e.sourcePath}'. Ensure FreeCAD is installed (https://www.freecad.org/downloads.php). Set FreeCADCmd path in plugin settings or AI3D_FREECADCMD env var. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await RSe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await da(s)).byteLength===0)throw new Error(`SLDPRT conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FreeCAD + OpenCASCADE bridge."]}}}});var s0={};Fe(s0,{createConversionManager:()=>ISe});function ISe(n){var r;let e=new QM,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);BF.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new e0(n==null?void 0:n.freecadCommand),new t0(n==null?void 0:n.obj2gltfCommand),new i0(n==null?void 0:n.fbx2gltfCommand),new r0(n==null?void 0:n.assimpCommand),new n0(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),BF.info("enabled converter",{converterId:s.id})):BF.debug("converter disabled",{converterId:s.id});return e}var BF,a0=I(()=>{"use strict";YQ();n$();s$();a$();o$();l$();On();BF=qi("conversion-factory")});var o0={};Fe(o0,{AnnotationManager:()=>VF});function LSe(){return`pin-${Date.now()}-${ySe++}`}function h$(n){return cn(n)}function OSe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var cE,s_,ySe,UF,CSe,PSe,c$,f$,DSe,d$,a_,VF,l0=I(()=>{"use strict";cE=require("obsidian");_n();_s();Gs();s_=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],ySe=1,UF=4,CSe=2,PSe=6,c$=6,f$=72,DSe=80,d$=200;a_=class a_{constructor(e,t,i,r,s,a,o,l={}){this.provider=e;this.hostEl=t;this.mode=i;this.onChange=s;this.noteReader=a;this.headingSearch=o;this.pinEls=new Map;this.observer=null;this.resizeObs=null;this.annotations=[];this.editorEl=null;this.disposeCallbacks=[];this.frameCount=0;this.lastCamState="";this.idleFrames=0;this.cameraIdle=!1;this.movingOcclusionCursor=0;this.hoverPopover=null;this.hoverTimeout=null;this.hoverCloseTimeout=null;this.hoverRequestId=0;this._highlightHandler=null;this._pulseTimeout=null;this._headingDropdown=null;this._headingDebounce=null;this._selectedHeading=null;this.previewRenderRoot=new cE.Component;this.previewRenderChildren=new WeakMap;var c,f;this.previewApp=l.app,this.previewMode=(c=l.previewMode)!=null?c:"plain-text",this.displayMode=(f=l.displayMode)!=null?f:"surface",this.previewRenderRoot.load(),this.overlay=this.hostEl.createDiv({cls:"ai3d-annotation-overlay"}),this.setAnnotations(r),this._highlightHandler=d=>{let h=d.detail,u=h==null?void 0:h.pinId;u&&this.pulsePin(u)},activeDocument.addEventListener("ai3d-pin-highlight",this._highlightHandler),this.disposeCallbacks.push(()=>activeDocument.removeEventListener("ai3d-pin-highlight",this._highlightHandler)),this.disposeCallbacks.push(()=>this.previewRenderRoot.unload()),this.startProjectionLoop()}setAnnotations(e){for(let[,t]of this.pinEls)this.removePinElement(t.el);this.pinEls.clear(),this.annotations=[...e];for(let t of e)this.createPinElement(t);this.updateProjections()}addPin(e,t,i){var s;if(this.annotations.length>=d$)return console.warn(`[AI3D] Pin limit (${d$}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:LSe(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:s_[this.annotations.length%s_.length],createdAt:new Date().toISOString()};return this.annotations.push(r),this.createPinElement(r),this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations),r}removePin(e){var i;let t=this.pinEls.get(e);t&&(this.removePinElement(t.el),this.pinEls.delete(e)),this.annotations=this.annotations.filter(r=>r.id!==e),(i=this.onChange)==null||i.call(this,this.annotations)}updatePin(e,t){var s;let i=this.annotations.find(a=>a.id===e);if(!i)return;Object.assign(i,t);let r=this.pinEls.get(e);if(r){t.position&&(r.worldPos={x:t.position[0],y:t.position[1],z:t.position[2]});let a=r.el.querySelector(".ai3d-pin-label");a&&t.label!==void 0&&(a.textContent=t.label);let o=r.el.querySelector(".ai3d-pin-dot");o&&t.color!==void 0&&o.style.setProperty("--pin-color",t.color),(t.notePath!==void 0||t.headingRef!==void 0||t.label!==void 0)&&this.renderPinDisplay(r.el,i)}this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations)}showEditor(e,t,i){this.showEditorInternal(e,t,i)}editPin(e){let t=this.annotations.find(o=>o.id===e);if(!t)return;let i=this.pinEls.get(e);if(!i)return;let r=i.el.getBoundingClientRect(),s=r.left+r.width/2,a=r.top;this.showEditorInternal(s,a,h$(i.worldPos),t)}getPinPosition(e){let t=this.pinEls.get(e);return t?h$(t.worldPos):null}getAnnotations(){return this.annotations}showEditorInternal(e,t,i,r){var w,G;this.hideEditor(),this._selectedHeading=null;let s=this.overlay.createDiv({cls:"ai3d-annotation-editor"}),a=s.createDiv({cls:"ai3d-editor-input-wrap"}),o=a.createEl("input",{cls:"ai3d-annotation-editor-input"});o.type="text",o.placeholder=this.headingSearch?"Label or search heading...":"Label...",r&&(o.value=r.label);let l=a.createSpan({cls:"ai3d-editor-binding-tag is-hidden"}),c=l.createEl("button",{cls:"ai3d-editor-binding-clear"});c.textContent="\xD7",c.addEventListener("click",O=>{O.stopPropagation(),this._selectedHeading=null,l.classList.add("is-hidden"),f.classList.add("is-hidden"),f.textContent="",o.value="",o.focus()});let f=s.createDiv({cls:"ai3d-editor-content-preview is-hidden"}),d=s.createDiv({cls:"ai3d-heading-dropdown is-hidden"});this._headingDropdown=d;let h=-1,u=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),h=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=ln(O.notePath);(V=l.querySelector(".ai3d-editor-binding-text"))==null||V.remove();let B=l.createSpan({cls:"ai3d-editor-binding-text"});B.textContent=`\u{1F4C4} ${N}`,l.classList.remove("is-hidden"),p(),o.focus(),this.loadContentPreview(f,O.notePath,O.heading)},p=()=>{d.classList.add("is-hidden"),d.replaceChildren(),h=-1},g=O=>{if(d.replaceChildren(),h=-1,u=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{J.preventDefault(),J.stopPropagation(),_(B)}),V.addEventListener("mouseenter",()=>m(N))}d.classList.remove("is-hidden")};o.addEventListener("input",()=>{if(!this.headingSearch)return;this._headingDebounce&&window.clearTimeout(this._headingDebounce);let O=o.value.trim();if(O.length<1){p();return}this._headingDebounce=window.setTimeout(()=>{let N=this.headingSearch(O);g(N)},150)}),o.addEventListener("keydown",O=>{if(d.classList.contains("is-hidden")){O.key==="Enter"?(O.preventDefault(),R.click()):O.key==="Escape"&&(O.preventDefault(),this.hideEditor());return}let N=d.querySelectorAll(".ai3d-heading-dropdown-item");O.key==="ArrowDown"?(O.preventDefault(),m(Math.min(h+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(h-1,0))):O.key==="Enter"?(O.preventDefault(),h>=0&&h{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),T=(w=r==null?void 0:r.color)==null?void 0:w.trim(),S=T||s_[0],E=T&&!s_.includes(T)?[T,...s_]:s_;for(let O of E){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",Ki("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===S&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),S=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let A=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-delete"});O.textContent="Delete",O.addEventListener("click",N=>{N.stopPropagation(),this.removePin(r.id),this.hideEditor()})}let R=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-confirm"});R.textContent=r?"Save":"OK",R.addEventListener("click",O=>{O.stopPropagation();let N=o.value.trim()||"Pin",B=this._selectedHeading;if(r){let V={label:N,color:S};B&&(V.notePath=B.notePath,V.headingRef=B.heading,V.headingLevel=B.level),this.updatePin(r.id,V)}else{let V=this.addPin(i,N,S);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let y=this.overlay.getBoundingClientRect(),C=e-y.left,D=t-y.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,y.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(D-10,y.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=ln(r.notePath),N=l.createSpan({cls:"ai3d-editor-binding-text"});N.textContent=`\u{1F4C4} ${O}`,l.classList.remove("is-hidden"),this._selectedHeading={notePath:r.notePath,heading:r.headingRef,level:(G=r.headingLevel)!=null?G:2},this.loadContentPreview(f,r.notePath,r.headingRef)}window.requestAnimationFrame(()=>o.focus()),s.addEventListener("pointerdown",O=>O.stopPropagation()),s.addEventListener("mousedown",O=>O.stopPropagation())}hideEditor(){if(this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,this.editorEl){let e=this.editorEl.querySelector(".ai3d-editor-content-preview");e&&this.clearRenderedPreview(e),this.editorEl.remove(),this.editorEl=null}}async loadContentPreview(e,t,i){if(!this.noteReader)return;this.clearRenderedPreview(e),e.classList.add("is-hidden");let r=await this.noteReader(t,i);if(!r){e.textContent=j("annotation.sectionEmpty"),e.className="ai3d-editor-content-preview ai3d-editor-content-preview--empty",e.classList.remove("is-hidden");return}await this.renderPreviewContent(e,r,t,"editor")}async showHoverPopover(e,t,i){if(!this.noteReader||!i.notePath||!i.headingRef)return;this.hideHoverPopover();let r=await this.noteReader(i.notePath,i.headingRef);if(!r||e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)return;let s=createDiv({cls:"ai3d-pin-popover"}),a=s.createDiv({cls:"ai3d-pin-popover-title"});a.textContent=i.headingRef;let o=s.createDiv({cls:"ai3d-pin-popover-body"}),l=t.getBoundingClientRect();s.style.setProperty("--popover-left",`${l.left+l.width/2}px`),s.style.setProperty("--popover-top",`${l.bottom+4}px`),s.addEventListener("mouseenter",()=>this.cancelHoverClose()),s.addEventListener("mouseleave",()=>this.scheduleHoverClose()),activeDocument.body.appendChild(s),this.hoverPopover=s,await this.renderPreviewContent(o,r,i.notePath,"popover"),(e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)&&(this.clearRenderedPreview(o),this.hoverPopover===s&&(this.hoverPopover=null),s.remove())}hideHoverPopover(){if(this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null),this.hoverPopover){let e=this.hoverPopover.querySelector(".ai3d-pin-popover-body");e&&this.clearRenderedPreview(e),this.hoverPopover.remove(),this.hoverPopover=null}}cancelHoverClose(){this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null)}scheduleHoverClose(){this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null,this.hoverRequestId++),this.cancelHoverClose(),this.hoverCloseTimeout=window.setTimeout(()=>{this.hoverCloseTimeout=null,this.hoverRequestId++,this.hideHoverPopover()},180)}clearRenderedPreview(e){let t=this.previewRenderChildren.get(e);t&&(this.previewRenderRoot.removeChild(t),this.previewRenderChildren.delete(e)),e.replaceChildren()}removePinElement(e){e.querySelectorAll(".ai3d-rendered-preview").forEach(t=>{this.clearRenderedPreview(t)}),e.remove()}async renderPreviewContent(e,t,i,r){let s=this.previewMode==="markdown"&&!!this.previewApp,a=r==="editor",o=r==="pin-snippet";if(!s){let c=a?300:o?180:1/0,f=t.length>c?t.slice(0,c)+"...":t;e.textContent=f,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden");return}e.className=a?"ai3d-editor-content-preview ai3d-editor-content-preview--markdown markdown-rendered":o?"ai3d-pin-snippet ai3d-pin-snippet--markdown ai3d-rendered-preview markdown-rendered":"ai3d-pin-popover-body ai3d-pin-popover-body--markdown ai3d-rendered-preview markdown-rendered",a&&e.classList.remove("is-hidden");let l=this.previewRenderRoot.addChild(new cE.Component);this.previewRenderChildren.set(e,l);try{await cE.MarkdownRenderer.render(this.previewApp,t,e,i,l)}catch(c){this.previewRenderRoot.removeChild(l),this.previewRenderChildren.delete(e);let f=a?300:o?180:1/0;e.textContent=t.length>f?t.slice(0,f)+"...":t,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden"),console.warn("[AI3D] Annotation markdown preview fallback:",c)}}pulsePin(e){let t=this.pinEls.get(e);t&&(this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),t.el.classList.remove("ai3d-pin-pulse"),t.el.offsetWidth,t.el.classList.add("ai3d-pin-pulse"),this._pulseTimeout=window.setTimeout(()=>{t.el.classList.remove("ai3d-pin-pulse"),this._pulseTimeout=null},1200))}destroy(){var e,t,i;this.hoverRequestId++,this.hideHoverPopover(),this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,(e=this.observer)==null||e.remove(),this.observer=null,(t=this.resizeObs)==null||t.disconnect(),this.resizeObs=null;for(let r of this.disposeCallbacks)r();this.disposeCallbacks=[],this.overlay.remove(),this.pinEls.clear(),(i=this.editorEl)==null||i.remove(),this.editorEl=null}createPinElement(e){let t=this.overlay.createDiv({cls:"ai3d-annotation-pin"});if(t.dataset.pinId=e.id,this.renderPinDisplay(t,e),this.mode==="edit"){let i=t.createEl("button",{cls:"ai3d-pin-delete"});i.textContent="\xD7",i.addEventListener("click",r=>{r.stopPropagation(),this.removePin(e.id)}),t.addEventListener("click",r=>{r.target.closest(".ai3d-pin-delete")||(r.stopPropagation(),this.editPin(e.id))})}t.addEventListener("pointerdown",i=>i.stopPropagation()),t.addEventListener("wheel",i=>{i.preventDefault(),i.stopPropagation(),this.provider.canvas.dispatchEvent(new WheelEvent("wheel",{bubbles:!0,cancelable:!0,clientX:i.clientX,clientY:i.clientY,ctrlKey:i.ctrlKey,deltaMode:i.deltaMode,deltaX:i.deltaX,deltaY:i.deltaY,deltaZ:i.deltaZ,metaKey:i.metaKey,shiftKey:i.shiftKey}))},{passive:!1}),e.notePath&&e.headingRef&&this.noteReader&&(t.addEventListener("mouseenter",()=>{this.cancelHoverClose(),this.hoverTimeout&&window.clearTimeout(this.hoverTimeout);let i=++this.hoverRequestId;this.hoverTimeout=window.setTimeout(()=>{this.hoverTimeout=null,i===this.hoverRequestId&&this.showHoverPopover(i,t,e)},300)}),t.addEventListener("mouseleave",()=>{this.scheduleHoverClose()})),this.pinEls.set(e.id,{el:t,worldPos:{x:e.position[0],y:e.position[1],z:e.position[2]}})}renderPinDisplay(e,t){let i=e.querySelector(".ai3d-pin-delete");if(e.querySelectorAll(".ai3d-rendered-preview").forEach(s=>{this.clearRenderedPreview(s)}),e.replaceChildren(),e.className=`ai3d-annotation-pin ai3d-annotation-pin--${this.displayMode}`,e.createDiv({cls:"ai3d-pin-dot"}).style.setProperty("--pin-color",t.color),e.title=t.label,e.setAttribute("aria-label",t.label),this.displayMode!=="dot"){let s=e.createDiv({cls:"ai3d-pin-content"}),a=s.createSpan({cls:"ai3d-pin-label"});if(a.textContent=t.label,this.displayMode==="snippet"&&t.notePath&&t.headingRef&&this.noteReader){let o=s.createDiv({cls:"ai3d-pin-snippet ai3d-rendered-preview"});this.loadPinSnippet(o,t.notePath,t.headingRef)}}i&&e.appendChild(i)}async loadPinSnippet(e,t,i){if(!this.noteReader)return;let r=await this.noteReader(t,i);!r||!e.isConnected||await this.renderPreviewContent(e,r,t,"pin-snippet")}startProjectionLoop(){this.observer=this.provider.observeRender(()=>this.updateProjections()),this.resizeObs=new ResizeObserver(()=>this.updateProjections()),this.resizeObs.observe(this.provider.canvas)}updateProjections(){if(this.pinEls.size===0)return;let{canvas:e}=this.provider;if(!this.hostEl.isConnected||!e.isConnected||e.clientWidth===0||e.clientHeight===0)return;let t=this.provider.getCameraStateKey();t===this.lastCamState?this.idleFrames++:(this.idleFrames=0,this.cameraIdle=!1),this.lastCamState=t,this.idleFrames>=a_.IDLE_THRESHOLD&&!this.cameraIdle&&(this.cameraIdle=!0),this.frameCount++;let i=this.cameraIdle?1:this.pinEls.size>=12?3:2;if(!this.cameraIdle&&this.frameCount%i!==0)return;let r=Array.from(this.pinEls.values()),s=this.cameraIdle?this.frameCount%PSe===0:this.frameCount%CSe===0,a=this.cameraIdle||r.length<=UF,o=a?0:this.movingOcclusionCursor%r.length,l=o+UF,c=a_._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(h.el);else{let u=Math.round(c.screenX),m=Math.round(c.screenY);h.el.style.setProperty("--pin-left",`${u}px`),h.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(h.el,c.depth),f.push({el:h.el,screenX:u,screenY:m,depth:c.depth});let _=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+UF)%r.length),this.cameraIdle)this.applyLabelAvoidance(f);else for(let d of f)d.el.style.removeProperty("--pin-offset-y")}updatePinPriority(e,t){let i=Math.max(0,Math.min(1,1-t)),r=this.cameraIdle?0:160,s=e.classList.contains("ai3d-pin-occluded")?80:0;e.style.zIndex=String(100+r+Math.round(i*120)-s)}applyLabelAvoidance(e){if(e.length===0)return;if(e.length>DSe){for(let a of e)a.el.style.removeProperty("--pin-offset-y");return}let i=e.filter(a=>!a.el.classList.contains("ai3d-pin-hidden")&&!a.el.classList.contains("ai3d-pin-occluded")).sort((a,o)=>a.depth-o.depth).map(a=>({pin:a,rect:a.el.getBoundingClientRect()})),r=[],s=[];for(let{pin:a,rect:o}of i){let l=0,c=o;for(let f of r){if(!OSe(c,f,c$))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-f$,Math.min(f$,l+d*(f.height+c$)));let h=c.width,u=c.height;c=new DOMRect(c.x,c.y+l,h,u)}r.push(c),s.push({el:a.el,offset:l})}for(let{el:a,offset:o}of s)a.setCssProps({"--pin-offset-y":o===0?"0px":`${o}px`})}hidePin(e){e.classList.remove("ai3d-pin-occluded"),e.classList.add("ai3d-pin-hidden")}showPin(e){e.classList.remove("ai3d-pin-hidden")}};a_.IDLE_THRESHOLD=15,a_._scratchProjection={screenX:0,screenY:0,depth:0};VF=a_});function Nl(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var fE=I(()=>{"use strict"});var c0={};Fe(c0,{createHeadingSearch:()=>NSe,createNoteReader:()=>wSe,normalizeHeadingText:()=>Nl,readHeadingSection:()=>p$,searchVaultHeadings:()=>m$});function m$(n,e){let t=e.toLowerCase().trim();if(!t)return[];let i=[],r=n.vault.getMarkdownFiles();for(let s of r){let a=n.metadataCache.getFileCache(s);if(a!=null&&a.headings)for(let o of a.headings)o.heading.toLowerCase().includes(t)&&i.push({notePath:s.path,heading:o.heading,level:o.level})}return i.slice(0,15)}function NSe(n){return e=>m$(n,e)}async function p$(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof u$.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` +`});function Kc(n){if(n.includes('"'))throw new Error(`File path contains double-quote character, not supported for Python conversion: ${n}`);return n.replace(/\\/g,"/")}var e0=I(()=>{"use strict"});function t$(n){return n.toLowerCase().replace(/^\./,"")}function sSe(n){let e=t$(n);return e==="step"||e==="stp"?e$:e==="iges"||e==="igs"?$Q:qQ}function wF(n,e,t){return n.split(e).join(t)}function i$(n,e,t){let i=t$(t),r=wF(sSe(i),iSe,Kc(n)),s=wF(r,rSe,Kc(e));return wF(s,nSe,i)}var iSe,rSe,nSe,r$=I(()=>{"use strict";ZQ();QQ();JQ();e0();iSe="__AI3D_SOURCE_PATH__",rSe="__AI3D_OUTPUT_PATH__",nSe="__AI3D_SOURCE_EXT__"});async function lSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function cSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`CAD conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var aSe,oSe,t0,n$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();r$();aSe=qi("freecad-converter"),oSe=300*1e3;t0=class{constructor(e){this.configuredCommand=e;this.id="freecad";this.sourceExts=["step","stp","iges","igs","brep"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking CAD conversion.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-freecad"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,i$(e.sourcePath,s,e.sourceExt),"utf8"),aSe.info("run CAD conversion (CadQuery/OCCT)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await cSe(t.command,[...t.args,o],oSe)}catch(f){throw new Error(`CAD conversion failed for '${e.sourcePath}'. Ensure Python with cadquery is installed: pip install cadquery trimesh. Set Python command path in plugin settings or AI3D_FREECAD_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await lSe(s))throw new Error(`CAD conversion finished but output was not found: '${s}'. Check that CadQuery supports this CAD format.`);if((await da(s)).byteLength===0)throw new Error(`CAD conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/CadQuery(OCCT) bridge."]}}}});async function hSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function uSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`obj2gltf command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var fSe,dSe,i0,s$=I(()=>{"use strict";rr();rr();rr();On();Ad();fSe=qi("obj2gltf-converter"),dSe=180*1e3;i0=class{constructor(e){this.configuredCommand=e;this.id="obj2gltf";this.sourceExts=["obj"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking obj2gltf.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(o=e.outputPath)!=null?o:zi(i,`${r}.ai3d-converted.glb`);await kn(Wn(s),{recursive:!0}),fSe.info("run obj2gltf conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await uSe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],dSe)}catch(l){throw new Error(`obj2gltf conversion failed for '${e.sourcePath}'. Set obj2gltf command path in plugin settings or AI3D_OBJ2GLTF_CMD if obj2gltf is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await hSe(s))throw new Error(`obj2gltf conversion finished but output was not found: '${s}'.`);if((await da(s)).byteLength===0)throw new Error(`obj2gltf output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local obj2gltf CLI bridge."]}}}});async function _Se(n){try{return await ms(n,ps),!0}catch(e){return!1}}function gSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`FBX2glTF command failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}var mSe,pSe,r0,a$=I(()=>{"use strict";rr();rr();rr();On();Ad();mSe=qi("fbx2gltf-converter"),pSe=180*1e3;r0=class{constructor(e){this.configuredCommand=e;this.id="fbx2gltf";this.sourceExts=["fbx"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var o;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking FBX2glTF.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(o=e.outputPath)!=null?o:zi(i,`${r}.ai3d-converted.glb`);await kn(Wn(s),{recursive:!0}),mSe.info("run FBX2glTF conversion",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await gSe(t.command,[...t.args,"-i",e.sourcePath,"-o",s,"-b"],pSe)}catch(l){throw new Error(`FBX2glTF conversion failed for '${e.sourcePath}'. Set FBX2glTF command path in plugin settings or AI3D_FBX2GLTF_CMD if FBX2glTF is not discoverable. ${l instanceof Error?l.message:String(l)}`)}if(!await _Se(s))throw new Error(`FBX2glTF conversion finished but output was not found: '${s}'.`);if((await da(s)).byteLength===0)throw new Error(`FBX2glTF output file is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FBX2glTF CLI bridge."]}}}});async function SSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function TSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i();return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`mesh conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function ASe(n,e){let t=Kc(n),i=Kc(e);return["import trimesh","import sys","",`src = r"${t}"`,`out = r"${i}"`,"","try:"," loaded = trimesh.load(src, force=None)","except Exception as e:",' print(f"Failed to load {src}: {e}", file=sys.stderr)'," sys.exit(1)","","if isinstance(loaded, trimesh.Scene):"," scene = loaded","elif isinstance(loaded, trimesh.Trimesh):"," scene = trimesh.Scene([loaded])","else:",' print(f"Unsupported type: {type(loaded)}", file=sys.stderr)'," sys.exit(1)","","try:"," data = scene.export(file_type='glb')","except Exception as e:",' print(f"Failed to export GLB: {e}", file=sys.stderr)'," sys.exit(1)","","with open(out, 'wb') as f:"," f.write(data)","","print(f'Converted {src} -> {out} ({len(data)} bytes)')"].join(` +`)}var vSe,ESe,n0,o$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();e0();vSe=qi("assimp-converter"),ESe=300*1e3;n0=class{constructor(e){this.configuredCommand=e;this.id="assimp";this.sourceExts=["3mf","dae"];this.targetExt="glb"}async getCacheKey(){let e=await Nn(this.id,this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking mesh conversion.`);let t=await Nn(this.id,this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-mesh-convert"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,ASe(e.sourcePath,s),"utf8"),vSe.info("run mesh conversion (trimesh)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{await TSe(t.command,[...t.args,o],ESe)}catch(f){throw new Error(`Mesh conversion failed for '${e.sourcePath}'. Ensure Python with trimesh is installed: pip install trimesh numpy networkx pycollada. Set Python command path in plugin settings or AI3D_ASSIMP_CMD if Python is not discoverable. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await SSe(s))throw new Error(`Mesh conversion finished but output was not found: '${s}'. Check that trimesh supports this format.`);if((await da(s)).byteLength===0)throw new Error(`Mesh conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local Python/trimesh bridge."]}}}});async function RSe(n){try{return await ms(n,ps),!0}catch(e){return!1}}function bSe(n,e,t){return new Promise((i,r)=>{ha(n,e,{timeout:t,windowsHide:!0,maxBuffer:50*1024*1024},(s,a,o)=>{if(!s){i({stdout:a!=null?a:"",stderr:o!=null?o:""});return}let l=(a!=null?a:"").toString().trim(),c=(o!=null?o:"").toString().trim(),f=[`SLDPRT conversion failed: ${s.message}`,l?`stdout: ${l}`:"",c?`stderr: ${c}`:""].filter(Boolean);r(new Error(f.join(" | ")))})})}function MSe(n,e){let t=Kc(n),i=Kc(e),r=i.replace(/\.glb$/i,".intermediate.step");return["import sys","import os","",`src = r"${t}"`,`out = r"${i}"`,`step_out = r"${r}"`,"","# Step 1: Import SLDPRT via FreeCAD","try:"," import FreeCAD"," import ImportGui"," import Mesh","except ImportError as e:",' print(f"FreeCAD modules not available: {e}", file=sys.stderr)',' print("Ensure this script runs under FreeCADCmd (not system Python).", file=sys.stderr)'," sys.exit(1)","","print(f'Opening SLDPRT: {src}')","try:"," doc = FreeCAD.newDocument('Convert')"," ImportGui.open(src, doc.Name)","except Exception as e:",' print(f"Failed to open SLDPRT file: {e}", file=sys.stderr)'," sys.exit(1)","","if not doc.Objects:",' print("SLDPRT file imported but contains no objects", file=sys.stderr)'," sys.exit(1)","",'print(f"Imported {len(doc.Objects)} object(s) from SLDPRT")',"","# Step 2: Export to STEP (intermediate)","try:"," import Import"," objs = [o for o in doc.Objects if hasattr(o, 'Shape')]"," if not objs:",' print("No shape objects found after import", file=sys.stderr)'," sys.exit(1)"," Import.export(objs, step_out)",' print(f"Exported intermediate STEP: {step_out}")',"except Exception as e:",' print(f"Failed to export STEP: {e}", file=sys.stderr)'," sys.exit(1)","","FreeCAD.closeDocument(doc.Name)","","# Step 3: Convert STEP to GLB using OCP (same pipeline as FreecadConverter)","import trimesh","import trimesh.visual","import numpy as np","","from OCP.STEPControl import STEPControl_Reader","from OCP.TopoDS import TopoDS","from OCP.TopAbs import TopAbs_FACE","from OCP.TopExp import TopExp_Explorer","from OCP.BRep import BRep_Tool","from OCP.BRepMesh import BRepMesh_IncrementalMesh","from OCP.TopLoc import TopLoc_Location","from OCP.IFSelect import IFSelect_RetDone","","DEFAULT_COLOR = [180, 180, 180, 255]","","def triangulate_face(face, linear=0.1, angular=0.5):"," BRepMesh_IncrementalMesh(face, linear, False, angular, True)"," loc = TopLoc_Location()"," tri = BRep_Tool.Triangulation_s(face, loc)"," if tri is None:"," return None, None"," n = tri.NbNodes()"," verts = []"," for i in range(1, n + 1):"," p = tri.Node(i)"," if not loc.IsIdentity():"," p = p.Transformed(loc.Transformation())"," verts.append([p.X(), p.Y(), p.Z()])"," ntri = tri.NbTriangles()"," faces = []"," for i in range(1, ntri + 1):"," t = tri.Triangle(i)"," n1, n2, n3 = t.Get()"," faces.append([n1 - 1, n2 - 1, n3 - 1])"," return verts, faces","","sr = STEPControl_Reader()","status = sr.ReadFile(step_out)","if status != IFSelect_RetDone:",' print(f"Failed to read intermediate STEP: {step_out}", file=sys.stderr)'," sys.exit(1)","sr.TransferRoots()","shape = sr.OneShape()","","all_verts = []","all_faces = []","all_colors = []","total_faces = 0","","exp = TopExp_Explorer(shape, TopAbs_FACE)","while exp.More():"," face = TopoDS.Face_s(exp.Current())"," total_faces += 1"," verts, faces = triangulate_face(face)"," if verts and faces:"," offset = len(all_verts)"," all_verts.extend(verts)"," for tri in faces:"," all_faces.append([tri[0] + offset, tri[1] + offset, tri[2] + offset])"," all_colors.extend([DEFAULT_COLOR] * len(verts))"," exp.Next()","","if not all_verts or not all_faces:",' print(f"No geometry extracted from STEP ({total_faces} faces scanned)", file=sys.stderr)'," sys.exit(1)","",'print(f"Triangulated: {total_faces} faces, {len(all_verts)} verts")',"","verts_arr = np.array(all_verts, dtype=float)","faces_arr = np.array(all_faces, dtype=int)","colors_arr = np.array(all_colors, dtype=np.uint8)","","mesh = trimesh.Trimesh("," vertices=verts_arr,"," faces=faces_arr,"," visual=trimesh.visual.ColorVisuals(vertex_colors=colors_arr),"," process=True,",")","mesh.fix_normals()","scene = trimesh.Scene([mesh])","","result = scene.export(file_type='glb')","if isinstance(result, bytes):"," data = result","elif isinstance(result, str):"," with open(result, 'rb') as f:"," data = f.read()","else:"," data = bytes(result)","","with open(out, 'wb') as f:"," f.write(data)","","# Cleanup intermediate STEP","try:"," os.remove(step_out)","except OSError:"," pass","","print(f'Converted {src} -> {out} ({len(data)} bytes, {total_faces} faces)')"].join(` +`)}var FF,xSe,s0,l$=I(()=>{"use strict";rr();rr();rr();rr();On();Ad();e0();FF=qi("sldprt-converter"),xSe=600*1e3;s0=class{constructor(e){this.configuredCommand=e;this.id="sldprt";this.sourceExts=["sldprt"];this.targetExt="glb"}async getCacheKey(){let e=await Nn("freecadcmd",this.configuredCommand);return`${this.id}:${e.command} ${e.args.join(" ")}`.trim()}async convert(e){var c;if(!Xn(e.sourcePath))throw new Error(`Converter '${this.id}' requires an absolute source path, got '${e.sourcePath}'. Pass a file-system path to the conversion pipeline when invoking SLDPRT conversion.`);let t=await Nn("freecadcmd",this.configuredCommand),i=Wn(e.sourcePath),r=Hn(e.sourcePath,zn(e.sourcePath)),s=(c=e.outputPath)!=null?c:zi(i,`${r}.ai3d-converted.glb`),a=zi(eh(),"ai3d-sldprt"),o=zi(a,`${r}-${Date.now()}.py`);await kn(Wn(s),{recursive:!0}),await kn(a,{recursive:!0}),await Qd(o,MSe(e.sourcePath,s),"utf8"),FF.info("run SLDPRT conversion (FreeCAD + OCP)",{sourcePath:e.sourcePath,outputPath:s,command:t.command,args:t.args});try{let{stdout:f,stderr:d}=await bSe(t.command,[...t.args,o],xSe);f&&FF.info("FreeCAD stdout",{stdout:f.trim().slice(0,500)}),d&&FF.warn("FreeCAD stderr",{stderr:d.trim().slice(0,500)})}catch(f){throw new Error(`SLDPRT conversion failed for '${e.sourcePath}'. Ensure FreeCAD is installed (https://www.freecad.org/downloads.php). Set FreeCADCmd path in plugin settings or AI3D_FREECADCMD env var. ${f instanceof Error?f.message:String(f)}`)}finally{$d(o,{force:!0})}if(!await RSe(s))throw new Error(`SLDPRT conversion finished but output was not found: '${s}'. Check that FreeCAD can import this SolidWorks file version.`);if((await da(s)).byteLength===0)throw new Error(`SLDPRT conversion output is empty: '${s}'.`);return{outputPath:s,outputExt:"glb",fromCache:!1,warnings:["Converted by local FreeCAD + OpenCASCADE bridge."]}}}});var a0={};Fe(a0,{createConversionManager:()=>ISe});function ISe(n){var r;let e=new $M,t=new Set((r=n==null?void 0:n.enabledConverterIds)!=null?r:[]);BF.debug("create conversion manager",{enabledConverterIds:[...t]});let i=[new t0(n==null?void 0:n.freecadCommand),new i0(n==null?void 0:n.obj2gltfCommand),new r0(n==null?void 0:n.fbx2gltfCommand),new n0(n==null?void 0:n.assimpCommand),new s0(n==null?void 0:n.freecadcmdCommand)];for(let s of i)t.has(s.id)?(e.registerConverter(s),BF.info("enabled converter",{converterId:s.id})):BF.debug("converter disabled",{converterId:s.id});return e}var BF,o0=I(()=>{"use strict";YQ();n$();s$();a$();o$();l$();On();BF=qi("conversion-factory")});var l0={};Fe(l0,{AnnotationManager:()=>VF});function LSe(){return`pin-${Date.now()}-${ySe++}`}function h$(n){return cn(n)}function OSe(n,e,t){return n.lefte.left-t&&n.tope.top-t}var cE,s_,ySe,UF,CSe,PSe,c$,f$,DSe,d$,a_,VF,c0=I(()=>{"use strict";cE=require("obsidian");_n();_s();Gs();s_=["#4a9eff","#ff6b6b","#51cf66","#ffd43b","#845ef7","#ff922b","#22b8cf","#f06595","#94d82d","#ffa8a8"],ySe=1,UF=4,CSe=2,PSe=6,c$=6,f$=72,DSe=80,d$=200;a_=class a_{constructor(e,t,i,r,s,a,o,l={}){this.provider=e;this.hostEl=t;this.mode=i;this.onChange=s;this.noteReader=a;this.headingSearch=o;this.pinEls=new Map;this.observer=null;this.resizeObs=null;this.annotations=[];this.editorEl=null;this.disposeCallbacks=[];this.frameCount=0;this.lastCamState="";this.idleFrames=0;this.cameraIdle=!1;this.movingOcclusionCursor=0;this.hoverPopover=null;this.hoverTimeout=null;this.hoverCloseTimeout=null;this.hoverRequestId=0;this._highlightHandler=null;this._pulseTimeout=null;this._headingDropdown=null;this._headingDebounce=null;this._selectedHeading=null;this.previewRenderRoot=new cE.Component;this.previewRenderChildren=new WeakMap;var c,f;this.previewApp=l.app,this.previewMode=(c=l.previewMode)!=null?c:"plain-text",this.displayMode=(f=l.displayMode)!=null?f:"surface",this.previewRenderRoot.load(),this.overlay=this.hostEl.createDiv({cls:"ai3d-annotation-overlay"}),this.setAnnotations(r),this._highlightHandler=d=>{let h=d.detail,u=h==null?void 0:h.pinId;u&&this.pulsePin(u)},activeDocument.addEventListener("ai3d-pin-highlight",this._highlightHandler),this.disposeCallbacks.push(()=>activeDocument.removeEventListener("ai3d-pin-highlight",this._highlightHandler)),this.disposeCallbacks.push(()=>this.previewRenderRoot.unload()),this.startProjectionLoop()}setAnnotations(e){for(let[,t]of this.pinEls)this.removePinElement(t.el);this.pinEls.clear(),this.annotations=[...e];for(let t of e)this.createPinElement(t);this.updateProjections()}addPin(e,t,i){var s;if(this.annotations.length>=d$)return console.warn(`[AI3D] Pin limit (${d$}) reached; ignoring new pin.`),this.annotations[this.annotations.length-1];let r={id:LSe(),position:[e.x,e.y,e.z],label:t,color:i!=null?i:s_[this.annotations.length%s_.length],createdAt:new Date().toISOString()};return this.annotations.push(r),this.createPinElement(r),this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations),r}removePin(e){var i;let t=this.pinEls.get(e);t&&(this.removePinElement(t.el),this.pinEls.delete(e)),this.annotations=this.annotations.filter(r=>r.id!==e),(i=this.onChange)==null||i.call(this,this.annotations)}updatePin(e,t){var s;let i=this.annotations.find(a=>a.id===e);if(!i)return;Object.assign(i,t);let r=this.pinEls.get(e);if(r){t.position&&(r.worldPos={x:t.position[0],y:t.position[1],z:t.position[2]});let a=r.el.querySelector(".ai3d-pin-label");a&&t.label!==void 0&&(a.textContent=t.label);let o=r.el.querySelector(".ai3d-pin-dot");o&&t.color!==void 0&&o.style.setProperty("--pin-color",t.color),(t.notePath!==void 0||t.headingRef!==void 0||t.label!==void 0)&&this.renderPinDisplay(r.el,i)}this.updateProjections(),(s=this.onChange)==null||s.call(this,this.annotations)}showEditor(e,t,i){this.showEditorInternal(e,t,i)}editPin(e){let t=this.annotations.find(o=>o.id===e);if(!t)return;let i=this.pinEls.get(e);if(!i)return;let r=i.el.getBoundingClientRect(),s=r.left+r.width/2,a=r.top;this.showEditorInternal(s,a,h$(i.worldPos),t)}getPinPosition(e){let t=this.pinEls.get(e);return t?h$(t.worldPos):null}getAnnotations(){return this.annotations}showEditorInternal(e,t,i,r){var w,G;this.hideEditor(),this._selectedHeading=null;let s=this.overlay.createDiv({cls:"ai3d-annotation-editor"}),a=s.createDiv({cls:"ai3d-editor-input-wrap"}),o=a.createEl("input",{cls:"ai3d-annotation-editor-input"});o.type="text",o.placeholder=this.headingSearch?"Label or search heading...":"Label...",r&&(o.value=r.label);let l=a.createSpan({cls:"ai3d-editor-binding-tag is-hidden"}),c=l.createEl("button",{cls:"ai3d-editor-binding-clear"});c.textContent="\xD7",c.addEventListener("click",O=>{O.stopPropagation(),this._selectedHeading=null,l.classList.add("is-hidden"),f.classList.add("is-hidden"),f.textContent="",o.value="",o.focus()});let f=s.createDiv({cls:"ai3d-editor-content-preview is-hidden"}),d=s.createDiv({cls:"ai3d-heading-dropdown is-hidden"});this._headingDropdown=d;let h=-1,u=[],m=O=>{let N=d.querySelectorAll(".ai3d-heading-dropdown-item");N.forEach(B=>B.classList.remove("active")),h=O,O>=0&&O{var V;this._selectedHeading=O,o.value=O.heading;let N=ln(O.notePath);(V=l.querySelector(".ai3d-editor-binding-text"))==null||V.remove();let B=l.createSpan({cls:"ai3d-editor-binding-text"});B.textContent=`\u{1F4C4} ${N}`,l.classList.remove("is-hidden"),p(),o.focus(),this.loadContentPreview(f,O.notePath,O.heading)},p=()=>{d.classList.add("is-hidden"),d.replaceChildren(),h=-1},g=O=>{if(d.replaceChildren(),h=-1,u=O,O.length===0){d.classList.add("is-hidden");return}for(let N=0;N{J.preventDefault(),J.stopPropagation(),_(B)}),V.addEventListener("mouseenter",()=>m(N))}d.classList.remove("is-hidden")};o.addEventListener("input",()=>{if(!this.headingSearch)return;this._headingDebounce&&window.clearTimeout(this._headingDebounce);let O=o.value.trim();if(O.length<1){p();return}this._headingDebounce=window.setTimeout(()=>{let N=this.headingSearch(O);g(N)},150)}),o.addEventListener("keydown",O=>{if(d.classList.contains("is-hidden")){O.key==="Enter"?(O.preventDefault(),R.click()):O.key==="Escape"&&(O.preventDefault(),this.hideEditor());return}let N=d.querySelectorAll(".ai3d-heading-dropdown-item");O.key==="ArrowDown"?(O.preventDefault(),m(Math.min(h+1,N.length-1))):O.key==="ArrowUp"?(O.preventDefault(),m(Math.max(h-1,0))):O.key==="Enter"?(O.preventDefault(),h>=0&&h{window.setTimeout(p,150)});let v=s.createDiv({cls:"ai3d-annotation-editor-colors"}),T=(w=r==null?void 0:r.color)==null?void 0:w.trim(),S=T||s_[0],E=T&&!s_.includes(T)?[T,...s_]:s_;for(let O of E){let N=v.createEl("button",{cls:"ai3d-pin-color-swatch"});N.type="button",N.title=O,N.setAttribute("aria-label",Ki("annotation.selectColor",{color:O})),N.style.setProperty("--swatch-color",O),N.style.backgroundColor=O,O===S&&N.classList.add("is-selected"),N.addEventListener("click",B=>{B.stopPropagation(),S=O,v.querySelectorAll(".ai3d-pin-color-swatch").forEach(V=>V.classList.remove("is-selected")),N.classList.add("is-selected")})}let A=s.createDiv({cls:"ai3d-annotation-editor-actions"});if(r){let O=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-delete"});O.textContent="Delete",O.addEventListener("click",N=>{N.stopPropagation(),this.removePin(r.id),this.hideEditor()})}let R=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-confirm"});R.textContent=r?"Save":"OK",R.addEventListener("click",O=>{O.stopPropagation();let N=o.value.trim()||"Pin",B=this._selectedHeading;if(r){let V={label:N,color:S};B&&(V.notePath=B.notePath,V.headingRef=B.heading,V.headingLevel=B.level),this.updatePin(r.id,V)}else{let V=this.addPin(i,N,S);B&&this.updatePin(V.id,{notePath:B.notePath,headingRef:B.heading,headingLevel:B.level})}this.hideEditor()});let M=A.createEl("button",{cls:"ai3d-annotation-editor-btn ai3d-annotation-editor-cancel"});M.textContent="Cancel",M.addEventListener("click",O=>{O.stopPropagation(),this.hideEditor()});let y=this.overlay.getBoundingClientRect(),C=e-y.left,D=t-y.top;if(s.style.setProperty("--editor-left",`${Math.max(0,Math.min(C,y.width-220))}px`),s.style.setProperty("--editor-top",`${Math.max(0,Math.min(D-10,y.height-160))}px`),this.editorEl=s,r!=null&&r.notePath&&(r!=null&&r.headingRef)){let O=ln(r.notePath),N=l.createSpan({cls:"ai3d-editor-binding-text"});N.textContent=`\u{1F4C4} ${O}`,l.classList.remove("is-hidden"),this._selectedHeading={notePath:r.notePath,heading:r.headingRef,level:(G=r.headingLevel)!=null?G:2},this.loadContentPreview(f,r.notePath,r.headingRef)}window.requestAnimationFrame(()=>o.focus()),s.addEventListener("pointerdown",O=>O.stopPropagation()),s.addEventListener("mousedown",O=>O.stopPropagation())}hideEditor(){if(this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,this.editorEl){let e=this.editorEl.querySelector(".ai3d-editor-content-preview");e&&this.clearRenderedPreview(e),this.editorEl.remove(),this.editorEl=null}}async loadContentPreview(e,t,i){if(!this.noteReader)return;this.clearRenderedPreview(e),e.classList.add("is-hidden");let r=await this.noteReader(t,i);if(!r){e.textContent=j("annotation.sectionEmpty"),e.className="ai3d-editor-content-preview ai3d-editor-content-preview--empty",e.classList.remove("is-hidden");return}await this.renderPreviewContent(e,r,t,"editor")}async showHoverPopover(e,t,i){if(!this.noteReader||!i.notePath||!i.headingRef)return;this.hideHoverPopover();let r=await this.noteReader(i.notePath,i.headingRef);if(!r||e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)return;let s=createDiv({cls:"ai3d-pin-popover"}),a=s.createDiv({cls:"ai3d-pin-popover-title"});a.textContent=i.headingRef;let o=s.createDiv({cls:"ai3d-pin-popover-body"}),l=t.getBoundingClientRect();s.style.setProperty("--popover-left",`${l.left+l.width/2}px`),s.style.setProperty("--popover-top",`${l.bottom+4}px`),s.addEventListener("mouseenter",()=>this.cancelHoverClose()),s.addEventListener("mouseleave",()=>this.scheduleHoverClose()),activeDocument.body.appendChild(s),this.hoverPopover=s,await this.renderPreviewContent(o,r,i.notePath,"popover"),(e!==this.hoverRequestId||!t.isConnected||!this.hostEl.isConnected)&&(this.clearRenderedPreview(o),this.hoverPopover===s&&(this.hoverPopover=null),s.remove())}hideHoverPopover(){if(this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null),this.hoverPopover){let e=this.hoverPopover.querySelector(".ai3d-pin-popover-body");e&&this.clearRenderedPreview(e),this.hoverPopover.remove(),this.hoverPopover=null}}cancelHoverClose(){this.hoverCloseTimeout&&(window.clearTimeout(this.hoverCloseTimeout),this.hoverCloseTimeout=null)}scheduleHoverClose(){this.hoverTimeout&&(window.clearTimeout(this.hoverTimeout),this.hoverTimeout=null,this.hoverRequestId++),this.cancelHoverClose(),this.hoverCloseTimeout=window.setTimeout(()=>{this.hoverCloseTimeout=null,this.hoverRequestId++,this.hideHoverPopover()},180)}clearRenderedPreview(e){let t=this.previewRenderChildren.get(e);t&&(this.previewRenderRoot.removeChild(t),this.previewRenderChildren.delete(e)),e.replaceChildren()}removePinElement(e){e.querySelectorAll(".ai3d-rendered-preview").forEach(t=>{this.clearRenderedPreview(t)}),e.remove()}async renderPreviewContent(e,t,i,r){let s=this.previewMode==="markdown"&&!!this.previewApp,a=r==="editor",o=r==="pin-snippet";if(!s){let c=a?300:o?180:1/0,f=t.length>c?t.slice(0,c)+"...":t;e.textContent=f,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden");return}e.className=a?"ai3d-editor-content-preview ai3d-editor-content-preview--markdown markdown-rendered":o?"ai3d-pin-snippet ai3d-pin-snippet--markdown ai3d-rendered-preview markdown-rendered":"ai3d-pin-popover-body ai3d-pin-popover-body--markdown ai3d-rendered-preview markdown-rendered",a&&e.classList.remove("is-hidden");let l=this.previewRenderRoot.addChild(new cE.Component);this.previewRenderChildren.set(e,l);try{await cE.MarkdownRenderer.render(this.previewApp,t,e,i,l)}catch(c){this.previewRenderRoot.removeChild(l),this.previewRenderChildren.delete(e);let f=a?300:o?180:1/0;e.textContent=t.length>f?t.slice(0,f)+"...":t,e.className=a?"ai3d-editor-content-preview":o?"ai3d-pin-snippet ai3d-rendered-preview":"ai3d-pin-popover-body ai3d-rendered-preview",a&&e.classList.remove("is-hidden"),console.warn("[AI3D] Annotation markdown preview fallback:",c)}}pulsePin(e){let t=this.pinEls.get(e);t&&(this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),t.el.classList.remove("ai3d-pin-pulse"),t.el.offsetWidth,t.el.classList.add("ai3d-pin-pulse"),this._pulseTimeout=window.setTimeout(()=>{t.el.classList.remove("ai3d-pin-pulse"),this._pulseTimeout=null},1200))}destroy(){var e,t,i;this.hoverRequestId++,this.hideHoverPopover(),this._pulseTimeout&&(window.clearTimeout(this._pulseTimeout),this._pulseTimeout=null),this._headingDebounce&&(window.clearTimeout(this._headingDebounce),this._headingDebounce=null),this._headingDropdown=null,this._selectedHeading=null,(e=this.observer)==null||e.remove(),this.observer=null,(t=this.resizeObs)==null||t.disconnect(),this.resizeObs=null;for(let r of this.disposeCallbacks)r();this.disposeCallbacks=[],this.overlay.remove(),this.pinEls.clear(),(i=this.editorEl)==null||i.remove(),this.editorEl=null}createPinElement(e){let t=this.overlay.createDiv({cls:"ai3d-annotation-pin"});if(t.dataset.pinId=e.id,this.renderPinDisplay(t,e),this.mode==="edit"){let i=t.createEl("button",{cls:"ai3d-pin-delete"});i.textContent="\xD7",i.addEventListener("click",r=>{r.stopPropagation(),this.removePin(e.id)}),t.addEventListener("click",r=>{r.target.closest(".ai3d-pin-delete")||(r.stopPropagation(),this.editPin(e.id))})}t.addEventListener("pointerdown",i=>i.stopPropagation()),t.addEventListener("wheel",i=>{i.preventDefault(),i.stopPropagation(),this.provider.canvas.dispatchEvent(new WheelEvent("wheel",{bubbles:!0,cancelable:!0,clientX:i.clientX,clientY:i.clientY,ctrlKey:i.ctrlKey,deltaMode:i.deltaMode,deltaX:i.deltaX,deltaY:i.deltaY,deltaZ:i.deltaZ,metaKey:i.metaKey,shiftKey:i.shiftKey}))},{passive:!1}),e.notePath&&e.headingRef&&this.noteReader&&(t.addEventListener("mouseenter",()=>{this.cancelHoverClose(),this.hoverTimeout&&window.clearTimeout(this.hoverTimeout);let i=++this.hoverRequestId;this.hoverTimeout=window.setTimeout(()=>{this.hoverTimeout=null,i===this.hoverRequestId&&this.showHoverPopover(i,t,e)},300)}),t.addEventListener("mouseleave",()=>{this.scheduleHoverClose()})),this.pinEls.set(e.id,{el:t,worldPos:{x:e.position[0],y:e.position[1],z:e.position[2]}})}renderPinDisplay(e,t){let i=e.querySelector(".ai3d-pin-delete");if(e.querySelectorAll(".ai3d-rendered-preview").forEach(s=>{this.clearRenderedPreview(s)}),e.replaceChildren(),e.className=`ai3d-annotation-pin ai3d-annotation-pin--${this.displayMode}`,e.createDiv({cls:"ai3d-pin-dot"}).style.setProperty("--pin-color",t.color),e.title=t.label,e.setAttribute("aria-label",t.label),this.displayMode!=="dot"){let s=e.createDiv({cls:"ai3d-pin-content"}),a=s.createSpan({cls:"ai3d-pin-label"});if(a.textContent=t.label,this.displayMode==="snippet"&&t.notePath&&t.headingRef&&this.noteReader){let o=s.createDiv({cls:"ai3d-pin-snippet ai3d-rendered-preview"});this.loadPinSnippet(o,t.notePath,t.headingRef)}}i&&e.appendChild(i)}async loadPinSnippet(e,t,i){if(!this.noteReader)return;let r=await this.noteReader(t,i);!r||!e.isConnected||await this.renderPreviewContent(e,r,t,"pin-snippet")}startProjectionLoop(){this.observer=this.provider.observeRender(()=>this.updateProjections()),this.resizeObs=new ResizeObserver(()=>this.updateProjections()),this.resizeObs.observe(this.provider.canvas)}updateProjections(){if(this.pinEls.size===0)return;let{canvas:e}=this.provider;if(!this.hostEl.isConnected||!e.isConnected||e.clientWidth===0||e.clientHeight===0)return;let t=this.provider.getCameraStateKey();t===this.lastCamState?this.idleFrames++:(this.idleFrames=0,this.cameraIdle=!1),this.lastCamState=t,this.idleFrames>=a_.IDLE_THRESHOLD&&!this.cameraIdle&&(this.cameraIdle=!0),this.frameCount++;let i=this.cameraIdle?1:this.pinEls.size>=12?3:2;if(!this.cameraIdle&&this.frameCount%i!==0)return;let r=Array.from(this.pinEls.values()),s=this.cameraIdle?this.frameCount%PSe===0:this.frameCount%CSe===0,a=this.cameraIdle||r.length<=UF,o=a?0:this.movingOcclusionCursor%r.length,l=o+UF,c=a_._scratchProjection,f=[];for(let d=0;d1||c.depth<0)this.hidePin(h.el);else{let u=Math.round(c.screenX),m=Math.round(c.screenY);h.el.style.setProperty("--pin-left",`${u}px`),h.el.style.setProperty("--pin-top",`${m}px`),this.updatePinPriority(h.el,c.depth),f.push({el:h.el,screenX:u,screenY:m,depth:c.depth});let _=a||d>=o&&dr.length&&d0&&(this.movingOcclusionCursor=(o+UF)%r.length),this.cameraIdle)this.applyLabelAvoidance(f);else for(let d of f)d.el.style.removeProperty("--pin-offset-y")}updatePinPriority(e,t){let i=Math.max(0,Math.min(1,1-t)),r=this.cameraIdle?0:160,s=e.classList.contains("ai3d-pin-occluded")?80:0;e.style.zIndex=String(100+r+Math.round(i*120)-s)}applyLabelAvoidance(e){if(e.length===0)return;if(e.length>DSe){for(let a of e)a.el.style.removeProperty("--pin-offset-y");return}let i=e.filter(a=>!a.el.classList.contains("ai3d-pin-hidden")&&!a.el.classList.contains("ai3d-pin-occluded")).sort((a,o)=>a.depth-o.depth).map(a=>({pin:a,rect:a.el.getBoundingClientRect()})),r=[],s=[];for(let{pin:a,rect:o}of i){let l=0,c=o;for(let f of r){if(!OSe(c,f,c$))continue;let d=a.screenY>=f.top+f.height/2?1:-1;l=Math.max(-f$,Math.min(f$,l+d*(f.height+c$)));let h=c.width,u=c.height;c=new DOMRect(c.x,c.y+l,h,u)}r.push(c),s.push({el:a.el,offset:l})}for(let{el:a,offset:o}of s)a.setCssProps({"--pin-offset-y":o===0?"0px":`${o}px`})}hidePin(e){e.classList.remove("ai3d-pin-occluded"),e.classList.add("ai3d-pin-hidden")}showPin(e){e.classList.remove("ai3d-pin-hidden")}};a_.IDLE_THRESHOLD=15,a_._scratchProjection={screenX:0,screenY:0,depth:0};VF=a_});function Nl(n){return n.replace(/\[\[([^\]|]+)\|([^\]]+)\]\]/g,"$2").replace(/\[\[([^\]]+)\]\]/g,"$1").replace(/\[([^\]]+)\]\([^)]*\)/g,"$1").replace(/[*_~`]+/g,"").replace(/==([^=]+)==/g,"$1").replace(/\s+/g," ").trim()}var fE=I(()=>{"use strict"});var f0={};Fe(f0,{createHeadingSearch:()=>NSe,createNoteReader:()=>wSe,normalizeHeadingText:()=>Nl,readHeadingSection:()=>p$,searchVaultHeadings:()=>m$});function m$(n,e){let t=e.toLowerCase().trim();if(!t)return[];let i=[],r=n.vault.getMarkdownFiles();for(let s of r){let a=n.metadataCache.getFileCache(s);if(a!=null&&a.headings)for(let o of a.headings)o.heading.toLowerCase().includes(t)&&i.push({notePath:s.path,heading:o.heading,level:o.level})}return i.slice(0,15)}function NSe(n){return e=>m$(n,e)}async function p$(n,e,t){try{let i=n.vault.getAbstractFileByPath(e);if(!(i instanceof u$.TFile))return null;let s=(await n.vault.cachedRead(i)).split(` `),a=-1,o=0,l=Nl(t);for(let f=0;fp$(n,e,t)}var u$,f0=I(()=>{"use strict";u$=require("obsidian");fE();fE()});var HF={};Fe(HF,{LOCAL_ANALYSIS_VERSION:()=>$h,buildLocalAnalysisResult:()=>WF,buildPartRecordsFromEvidence:()=>S$,inferModelAssetFormat:()=>Yc,normalizeModelLoadStrategy:()=>Qh});function E$(){return typeof performance!="undefined"?performance.now():Date.now()}function xd(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function GSe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(E$()-n)),status:"success"}}function kSe(n,e){let t=n[0]-e[0],i=n[1]-e[1],r=n[2]-e[2];return Math.sqrt(t*t+i*i+r*r)}function kF(n){return lu([n.x,n.y,n.z])}function _$(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function g$(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function WSe(n,e,t,i){var c,f;let r=g$(ln(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${g$(s)||t+1}`:`${r}:part:${t+1}`,o=a,l=2;for(;i.has(o);)o=`${a}:${l}`,l++;return i.add(o),o}function dE(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function d0(n){return new Set(dE(n).split(" ").filter(e=>e.length>=2))}function v$(n,e){if(n.size===0||e.size===0)return 0;let t=0;for(let i of n)e.has(i)&&(t+=1);return t/Math.max(n.size,e.size)}function HSe(n,e){if(!n||!e||n.length<3||e.length<3)return 0;let t=[...n].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),i=[...e].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),r=0;for(let s=0;s<3;s++)r+=Math.min(t[s],i[s])/Math.max(t[s],i[s]);return r/3}function zSe(n,e){let t=dE(n),i=dE(e);return!!t&&!!i&&t===i}function GF(n,e){let t=dE(n),i=dE(e);return!!t&&!!i&&t===i}function XSe(n){return n.map(e=>({part:e,nameTokens:d0(e.name),meshTokens:d0(e.meshRefs.join(" "))}))}function YSe(n,e){let t=d0(n.name),i=d0(n.meshRefs.join(" "));return e.filter(s=>s.part.assetId!==n.assetId||s.part.partId!==n.partId).flatMap(s=>{let a=s.part,o=[],l=v$(t,s.nameTokens),c=v$(i,s.meshTokens),f=HSe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,h=zSe(n.materialName,a.materialName),u=GF(n.componentId,a.componentId),m=GF(n.partNumber,a.partNumber),_=GF(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return u&&(p+=.5),m&&(p+=.4),_&&(p+=.25),d&&(p+=.1),h&&(p+=.08),u&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),_&&o.push("same occurrence id"),l>=.5&&o.push("similar part name"),c>=.5&&o.push("similar mesh names"),f>=.72&&o.push("similar bounding size"),d&&o.push(`same category: ${n.category}`),h&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,FSe)}function KSe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=XSe(e);return n.map(i=>{let r=YSe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function jSe(n){var t;let e=n.name.toLowerCase();return n.source==="component"?"component":n.source==="group"?"group":n.source==="detail-cluster"?"detail-cluster":e.includes("wheel")||e.includes("gear")||e.includes("axle")?"mechanical":e.includes("shell")||e.includes("case")||e.includes("cover")||e.includes("housing")?"enclosure":e.includes("button")||e.includes("key")||e.includes("switch")?"control":e.includes("glass")||e.includes("screen")||e.includes("lens")?"surface":(t=n.materialName)!=null&&t.toLowerCase().includes("metal")?"material-driven":"unclassified"}function ZSe(n){var t,i,r,s,a,o,l,c,f,d,h,u;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${xd((r=(i=n.childCount)!=null?i:(t=n.meshNames)==null?void 0:t.length)!=null?r:0,"child mesh","child meshes")}.`),n.source==="component"&&e.push(`Registered from model component metadata with ${xd((o=(a=n.childCount)!=null?a:(s=n.meshNames)==null?void 0:s.length)!=null?o:1,"child mesh","child meshes")}.`),n.source==="detail-cluster"&&e.push(`Merged from ${xd((f=(c=n.childCount)!=null?c:(l=n.meshNames)==null?void 0:l.length)!=null?f:0,"generic tiny mesh","generic tiny meshes")} to avoid over-splitting renderer fragments.`),n.componentId&&e.push(`Component ID: ${n.componentId}.`),n.occurrenceId&&e.push(`Occurrence ID: ${n.occurrenceId}.`),n.partNumber&&e.push(`Part number: ${n.partNumber}.`),n.componentPath&&e.push(`Component path: ${n.componentPath}.`),n.sourceFormat||n.effectiveFormat||n.loadStrategy){let m=(h=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?h:"glb",_=(u=n.effectiveFormat)!=null?u:m,p=Qh(n.loadStrategy,m,_);e.push(`Format lineage: ${m.toUpperCase()}${_!==m?` -> ${_.toUpperCase()}`:""} (${p}).`)}return e.push(`${xd(n.triangleCount,"triangle")} and ${xd(n.vertexCount,"vertex")}.`,`Bounding size ${n.boundingSize.x.toFixed(3)} x ${n.boundingSize.y.toFixed(3)} x ${n.boundingSize.z.toFixed(3)}.`),n.materialName&&e.push(`Uses material "${n.materialName}".`),e}function qSe(n,e,t){var o,l,c,f,d;let i=Yc(n),r=(l=(o=e.sourceFormat)!=null?o:t==null?void 0:t.sourceFormat)!=null?l:i,s=(f=(c=e.effectiveFormat)!=null?c:t==null?void 0:t.effectiveFormat)!=null?f:r,a=Qh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function QSe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function S$(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=qSe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:WSe(n,r,s,i),assetId:n,name:r.name||`Part ${s+1}`,source:r.source,componentId:r.componentId,occurrenceId:r.occurrenceId,partNumber:r.partNumber,componentPath:r.componentPath,category:jSe(r),meshRefs:_$((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],USe),childCount:r.childCount,materialRefs:_$(r.materialName?[r.materialName]:[],VSe),bbox:kF(r.boundingSize),center:kF(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:QSe(r),observations:ZSe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function $Se(n,e,t,i,r){var o;let s=[],a=t==null?void 0:t.summary;a&&s.push({id:`${n}:geometry`,title:"Geometry overview",domain:"geometry",summary:`${xd(a.meshCount,"mesh")}, ${xd(a.triangleCount,"triangle")}, ${xd(a.materialCount,"material slot")}.`,relatedPartIds:i.slice(0,12).map(l=>l.partId),relatedAssetIds:[n],confidence:.72,source:"rule"});for(let l of(o=e==null?void 0:e.annotations)!=null?o:[]){let c=r.find(f=>f.annotationId===l.id);s.push({id:`${n}:annotation:${l.id}`,title:l.label||"Annotation focus",domain:"assembly",summary:[l.headingRef?`Pinned focus area linked to heading "${l.headingRef}".`:"Pinned focus area marked by the user for follow-up analysis.",c!=null&&c.nearestPartName?`Nearest part candidate: ${c.nearestPartName}.`:""].filter(Boolean).join(" "),relatedPartIds:c!=null&&c.nearestPartId?[c.nearestPartId]:[],relatedAssetIds:[n],confidence:.8,source:"user"})}return s}function JSe(n,e){var i;return((i=n==null?void 0:n.annotations)!=null?i:[]).map(r=>{let s=r.position,a=null,o=Number.POSITIVE_INFINITY;for(let c of e){if(!c.center)continue;let f=kSe(s,c.center);f{var p;return{partId:_.partId,name:_.name,notePath:_.notePath,source:_.source,componentId:_.componentId,occurrenceId:_.occurrenceId,partNumber:_.partNumber,componentPath:_.componentPath,category:_.category,sourceFormat:_.sourceFormat,effectiveFormat:_.effectiveFormat,loadStrategy:_.loadStrategy,meshRefs:[..._.meshRefs],childCount:_.childCount,triangleCount:_.triangleCount,materialName:_.materialName,registeredMatches:(p=_.registeredMatches)==null?void 0:p.map(g=>({...g,reasons:[...g.reasons]})),observations:_.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function tTe(n,e){var t,i;return Array.from(new Set([...(t=n==null?void 0:n.resourceWarnings)!=null?t:[],...(i=e==null?void 0:e.resourceWarnings)!=null?i:[]]))}function WF(n){var m,_,p,g,v,T,S,E,A,R,M,y,C;let e=(m=n.startedAt)!=null?m:E$(),t=(p=(_=n.evidence)==null?void 0:_.summary)!=null?p:n.preview,i=Yc(n.modelPath),r=(g=n.evidence)==null?void 0:g.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=Qh(r==null?void 0:r.loadStrategy,(T=r==null?void 0:r.sourceFormat)!=null?T:i,s),o=KSe(S$(n.modelPath,(E=(S=n.evidence)==null?void 0:S.parts)!=null?E:[],r),(A=n.registeredParts)!=null?A:[]),l=new Date().toISOString(),c=tTe(n.preview,n.evidence),f=JSe(n.profile,o),d=$Se(n.modelPath,n.profile,n.evidence,o,f),h=(R=n.previewImages)!=null?R:[],u=eTe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:h,warnings:c});return{asset:{assetId:n.modelPath,title:ln(n.modelPath)||n.modelPath,sourcePath:n.modelPath,format:i,effectiveFormat:s,loadStrategy:a,importedAt:l,updatedAt:l,status:t?"ready":"processing",vertexCount:t==null?void 0:t.vertexCount,triangleCount:t==null?void 0:t.triangleCount,materialCount:t==null?void 0:t.materialCount,boundingBox:t?kF(t.boundingSize):void 0,analysisVersion:$h},parts:o,knowledgeNodes:d,previewImages:h,annotationLinks:f,draftingInput:u,evidence:(M=n.evidence)!=null?M:void 0,warnings:c,pipeline:[{stage:"stats",durationMs:0,status:t?"success":"skipped"},{stage:"split",durationMs:0,status:(C=(y=n.evidence)==null?void 0:y.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},GSe(e)]}}var $h,FSe,BSe,USe,VSe,h0=I(()=>{"use strict";_s();TE();XM();XM();$h="local-evidence-v1",FSe=3,BSe=.58,USe=16,VSe=16});function Jh(n){let e=n.trim();return e.length>T$?Ui(e.slice(0,T$))+"\u2026":Ui(e)}function A$(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=Jh(t);if(!i)return null;let r=Array.isArray(e.sections)?e.sections.flatMap(o=>{if(!o||typeof o!="object")return[];let l=o,c=typeof l.heading=="string"?l.heading.trim():"",f=typeof l.body=="string"?l.body.trim():"",d=Jh(c),h=Jh(f);return d&&h?[{heading:d,body:h}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Jh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Jh(o)):void 0;return{title:typeof e.title=="string"?Jh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?Jh(e.model):void 0}}var T$,x$=I(()=>{"use strict";rA();T$=8e3});function rTe(n){let e=n.trim().replace(/\/+$/,"");if(!e)return"";let t=/^[a-z][a-z\d+\-.]*:\/\//i.test(e)?e:`http://${e}`;try{let i=new URL(t);return i.protocol!=="http:"&&i.protocol!=="https:"||i.search||i.hash?null:i.toString().replace(/\/+$/,"")}catch(i){return null}}function nTe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function sTe(n){return{...n,model:{...n.model,summary:void 0},partCandidates:[],annotationLinks:n.annotationLinks.map(e=>({...e,notePath:void 0,position:[0,0,0],nearestPartId:void 0,nearestPartName:void 0,distance:void 0,confidence:Math.min(e.confidence,.25)})),knowledgeNodes:n.knowledgeNodes.map(e=>({...e,summary:"Geometry details were withheld by privacy settings.",relatedPartIds:[]}))}}function aTe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=nTe(t)),n.sendGeometrySummaryToRemote||(t=sTe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function b$(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=rTe(n.serviceBaseUrl);return i===""?{enabled:!1,reason:"serviceBaseUrl is empty"}:i===null?{enabled:!1,reason:"serviceBaseUrl must be a valid http(s) URL"}:n.sendRawModelToRemote?{enabled:!1,reason:"raw model upload is not supported by this draft client"}:e?{enabled:!0,endpoint:`${i}/draft-note`,request:{analysisVersion:t,draftingInput:aTe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function oTe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):iTe}async function lTe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new zF(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function M$(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=oTe(e.timeoutMs),i=await lTe((0,R$.requestUrl)({url:n.endpoint,method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n.request)}),t,n.endpoint);if(i.status<200||i.status>=300)throw new Error(`Remote draft request failed: HTTP ${i.status}`);return A$(i.json)}var R$,iTe,zF,I$=I(()=>{"use strict";R$=require("obsidian");x$();iTe=15e3,zF=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var u0={};Fe(u0,{buildKnowledgeIndexContent:()=>K$,buildKnowledgeIndexManagedSection:()=>i1,buildKnowledgeNoteContent:()=>W$,collectRegisteredPartsFromProfiles:()=>X$,generateKnowledgeNote:()=>kTe,replaceManagedSection:()=>Y$,stripTransientRegisteredPartData:()=>t1});function XF(n){var e,t,i;return{modelPath:n.modelPath,reportNotePath:n.reportNotePath,analysisSidecarPath:n.analysisSidecarPath,knowledgeIndexPath:n.knowledgeIndexPath,partNoteCount:(e=n.partNoteCount)!=null?e:0,previewImageCount:(t=n.previewImageCount)!=null?t:0,generatedAt:new Date().toISOString(),status:n.status,warningCount:(i=n.warningCount)!=null?i:0}}function F$(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function ZF(n){return n.filter(e=>e.length>0).join(", ")}function YF(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function JF(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function qF(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function QF(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function dTe(n,e=12){if(n.length===0)return"-";let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i.toLocaleString()} more`:t}function B$(n){var e,t;return n.source==="component"?n.childCount&&n.childCount>1?`component (${n.childCount})`:"component":n.source==="group"?`group (${(e=n.childCount)!=null?e:n.meshRefs.length})`:n.source==="detail-cluster"?`detail cluster (${(t=n.childCount)!=null?t:n.meshRefs.length})`:"mesh"}function $F(n){var a,o,l;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(a=n.sourceFormat)!=null?a:n.effectiveFormat,t=(o=n.effectiveFormat)!=null?o:e,i=(l=n.loadStrategy)!=null?l:e&&t&&e!==t?"convert":"direct",r=e?e.toUpperCase():"unknown",s=t&&t!==e?` -> ${t.toUpperCase()}`:"";return`${r}${s} (${i})`}function hTe(n){let e=n.sourceNotePath?`[[${n.sourceNotePath}|${n.sourcePartName}]]`:n.sourcePartName,t=n.reasons.length>0?` - ${n.reasons.join(", ")}`:"";return`${e} (${Math.round(n.confidence*100)}%${t})`}function U$(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Ui(n.headingRef)}`),n.notePath){let i=(t=Vs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function uTe(n){return[{axis:"x",value:Math.max(0,n.boundingSize.x)},{axis:"y",value:Math.max(0,n.boundingSize.y)},{axis:"z",value:Math.max(0,n.boundingSize.z)}].sort((e,t)=>t.value-e.value)}function V$(n){let[e,t,i]=uTe(n);if(!e||e.value<=0)return"Bounding information is incomplete, so scale and orientation still need manual review.";let r=i.value>0?e.value/i.value:Number.POSITIVE_INFINITY,s=e.value>0?t.value/e.value:0;return(e.value>0?i.value/e.value:0)<=.18&&s>=.45?`The bounding box is strongly planar, with a thin ${i.axis.toUpperCase()} dimension compared with ${e.axis.toUpperCase()}.`:r>=3&&s<=.55?`The model is strongly elongated along ${e.axis.toUpperCase()}, which suggests a directional or axial structure.`:"The overall bounding volume is fairly balanced, so semantic grouping is more likely to come from mesh and material boundaries than from one dominant axis."}function G$(n){if(n.splatCount!==void 0)return`This is a splat-based asset with ${n.splatCount.toLocaleString()} splats; review should focus on capture coverage, density, and viewpoint clarity instead of triangle topology.`;let e=0;return n.triangleCount>=5e5?e+=3:n.triangleCount>=1e5?e+=2:n.triangleCount>=2e4&&(e+=1),n.meshCount>=100?e+=2:n.meshCount>=25&&(e+=1),n.materialCount>=8&&(e+=1),e>=5?"The mesh and material counts point to a high-complexity asset; expect semantic cleanup, regrouping, or naming review before turning it into stable knowledge notes.":e>=3?"The asset sits in a medium-complexity range: it already contains useful structure, but some meshes or materials may still reflect export convenience rather than real-world parts.":"The asset is structurally compact, so a lightweight local pass can usually produce usable first-draft notes without a heavier analysis pipeline."}function mTe(n){var t;let e=(t=n==null?void 0:n.tags)!=null?t:[];return e.length===0?"No knowledge tags are stored yet, so the note should establish the first stable vocabulary for this model.":`Current tags already suggest a working taxonomy: ${ZF(e)}.`}function y$(n){var t;let e=(t=n==null?void 0:n.annotations)!=null?t:[];return e.length===0?"No annotation pins are stored yet, so the next useful pass is to mark semantically important regions before splitting the model into part notes.":e.length===1?"There is 1 saved annotation pin, which already gives this report a concrete user-selected focus area.":`There are ${e.length} saved annotation pins, which provide a useful first-pass map of user-relevant regions.`}function pTe(n,e){var r;if(!n)return["Preview statistics were not available when this note was generated, so the next step is to reload the model and regenerate the report.",y$(e)];let t=[`${n.meshCount.toLocaleString()} mesh(es), ${((r=n.splatCount)!=null?r:n.triangleCount).toLocaleString()} ${n.splatCount!==void 0?"splats":"triangles"}, and ${n.materialCount.toLocaleString()} material slot(s) are currently visible in the preview pipeline.`,G$(n),V$(n),y$(e)],i=mTe(e);return i&&t.push(i),t}function _Te(n){var i;let e=(i=n==null?void 0:n.annotations)!=null?i:[];if(e.length===0)return["## Focus Areas","","- No focus areas have been pinned yet.",""];let t=["## Focus Areas",""];for(let r of e){let s=U$(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Ui(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function gTe(n){var i,r;let e=(i=n==null?void 0:n.annotationLinks)!=null?i:[];if(e.length===0)return["## Annotation Links","","- No annotation-to-part links were produced in this pass.",""];let t=["## Annotation Links","","| Annotation | Nearest Part | Linked Note | Distance | Confidence |","|------------|--------------|-------------|----------|------------|"];for(let s of e){let a=s.notePath?`[[${s.notePath}]]`:"-";t.push(`| ${xa(s.label)} | ${xa((r=s.nearestPartName)!=null?r:"-")} | ${xa(a)} | ${s.distance===void 0?"-":s.distance.toFixed(3)} | ${Math.round(s.confidence*100)}% |`)}return t.push(""),t}function vTe(n){var i,r,s,a;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(o=>o.notePath);if(e.length===0)return["## Suggested Part Notes","","- No part note drafts were created in this pass.",""];let t=["## Suggested Part Notes",""];for(let o of e.slice(0,N$)){let l=Ui((s=Vs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",Wo(o.triangleCount,"triangle"),o.materialName?`material ${Ui(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Ui(o.name)} (${c})`)}return t.push(""),t}function Wo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function ETe(n){return n.length===0?"No per-part evidence was captured yet, so the first useful editing pass is to reload the model and regenerate this note from the workbench.":n.slice(0,6).map((e,t)=>{var r;let i=e.materialName?`, material ${Ui(e.materialName)}`:"";return`${t+1}. ${Ui(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${Wo(e.triangleCount,"triangle")}${i})`}).join(` +`).trim()||null}catch(i){return null}}function wSe(n){return(e,t)=>p$(n,e,t)}var u$,d0=I(()=>{"use strict";u$=require("obsidian");fE();fE()});var HF={};Fe(HF,{LOCAL_ANALYSIS_VERSION:()=>$h,buildLocalAnalysisResult:()=>WF,buildPartRecordsFromEvidence:()=>S$,inferModelAssetFormat:()=>Yc,normalizeModelLoadStrategy:()=>Qh});function E$(){return typeof performance!="undefined"?performance.now():Date.now()}function xd(n,e,t=`${e}s`){return`${n.toLocaleString()} ${n===1?e:t}`}function GSe(n){return{stage:"reason",durationMs:Math.max(0,Math.round(E$()-n)),status:"success"}}function kSe(n,e){let t=n[0]-e[0],i=n[1]-e[1],r=n[2]-e[2];return Math.sqrt(t*t+i*i+r*r)}function kF(n){return lu([n.x,n.y,n.z])}function _$(n,e){return n.filter(t=>t.trim().length>0).slice(0,e)}function g$(n){return n.trim().replace(/[\\/:*?"<>|#[\]^]+/g,"-").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"").slice(0,96)}function WSe(n,e,t,i){var c,f;let r=g$(ln(n)||"model")||"model",s=(f=(c=e.occurrenceId)!=null?c:e.componentId)!=null?f:e.partNumber,a=s?`${r}:component:${g$(s)||t+1}`:`${r}:part:${t+1}`,o=a,l=2;for(;i.has(o);)o=`${a}:${l}`,l++;return i.add(o),o}function dE(n){return(n!=null?n:"").toLowerCase().replace(/[_\-./\\]+/g," ").replace(/[^\p{L}\p{N}\s]+/gu," ").replace(/\s+/g," ").trim()}function h0(n){return new Set(dE(n).split(" ").filter(e=>e.length>=2))}function v$(n,e){if(n.size===0||e.size===0)return 0;let t=0;for(let i of n)e.has(i)&&(t+=1);return t/Math.max(n.size,e.size)}function HSe(n,e){if(!n||!e||n.length<3||e.length<3)return 0;let t=[...n].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),i=[...e].slice(0,3).map(s=>Math.max(1e-4,Math.abs(s))).sort((s,a)=>s-a),r=0;for(let s=0;s<3;s++)r+=Math.min(t[s],i[s])/Math.max(t[s],i[s]);return r/3}function zSe(n,e){let t=dE(n),i=dE(e);return!!t&&!!i&&t===i}function GF(n,e){let t=dE(n),i=dE(e);return!!t&&!!i&&t===i}function XSe(n){return n.map(e=>({part:e,nameTokens:h0(e.name),meshTokens:h0(e.meshRefs.join(" "))}))}function YSe(n,e){let t=h0(n.name),i=h0(n.meshRefs.join(" "));return e.filter(s=>s.part.assetId!==n.assetId||s.part.partId!==n.partId).flatMap(s=>{let a=s.part,o=[],l=v$(t,s.nameTokens),c=v$(i,s.meshTokens),f=HSe(n.bbox,a.bbox),d=!!n.category&&!!a.category&&n.category===a.category,h=zSe(n.materialName,a.materialName),u=GF(n.componentId,a.componentId),m=GF(n.partNumber,a.partNumber),_=GF(n.occurrenceId,a.occurrenceId),p=l*.38+c*.22+f*.22;return u&&(p+=.5),m&&(p+=.4),_&&(p+=.25),d&&(p+=.1),h&&(p+=.08),u&&o.push(`same component id: ${n.componentId}`),m&&o.push(`same part number: ${n.partNumber}`),_&&o.push("same occurrence id"),l>=.5&&o.push("similar part name"),c>=.5&&o.push("similar mesh names"),f>=.72&&o.push("similar bounding size"),d&&o.push(`same category: ${n.category}`),h&&n.materialName&&o.push(`same material: ${n.materialName}`),p=Math.min(1,p),pa.matchScore-s.matchScore).slice(0,FSe)}function KSe(n,e){if(e.length===0)return n.map(i=>({...i}));let t=XSe(e);return n.map(i=>{let r=YSe(i,t);return r.length>0?{...i,registeredMatches:r}:{...i}})}function jSe(n){var t;let e=n.name.toLowerCase();return n.source==="component"?"component":n.source==="group"?"group":n.source==="detail-cluster"?"detail-cluster":e.includes("wheel")||e.includes("gear")||e.includes("axle")?"mechanical":e.includes("shell")||e.includes("case")||e.includes("cover")||e.includes("housing")?"enclosure":e.includes("button")||e.includes("key")||e.includes("switch")?"control":e.includes("glass")||e.includes("screen")||e.includes("lens")?"surface":(t=n.materialName)!=null&&t.toLowerCase().includes("metal")?"material-driven":"unclassified"}function ZSe(n){var t,i,r,s,a,o,l,c,f,d,h,u;let e=[];if(n.source==="group"&&e.push(`Registered from model group with ${xd((r=(i=n.childCount)!=null?i:(t=n.meshNames)==null?void 0:t.length)!=null?r:0,"child mesh","child meshes")}.`),n.source==="component"&&e.push(`Registered from model component metadata with ${xd((o=(a=n.childCount)!=null?a:(s=n.meshNames)==null?void 0:s.length)!=null?o:1,"child mesh","child meshes")}.`),n.source==="detail-cluster"&&e.push(`Merged from ${xd((f=(c=n.childCount)!=null?c:(l=n.meshNames)==null?void 0:l.length)!=null?f:0,"generic tiny mesh","generic tiny meshes")} to avoid over-splitting renderer fragments.`),n.componentId&&e.push(`Component ID: ${n.componentId}.`),n.occurrenceId&&e.push(`Occurrence ID: ${n.occurrenceId}.`),n.partNumber&&e.push(`Part number: ${n.partNumber}.`),n.componentPath&&e.push(`Component path: ${n.componentPath}.`),n.sourceFormat||n.effectiveFormat||n.loadStrategy){let m=(h=(d=n.sourceFormat)!=null?d:n.effectiveFormat)!=null?h:"glb",_=(u=n.effectiveFormat)!=null?u:m,p=Qh(n.loadStrategy,m,_);e.push(`Format lineage: ${m.toUpperCase()}${_!==m?` -> ${_.toUpperCase()}`:""} (${p}).`)}return e.push(`${xd(n.triangleCount,"triangle")} and ${xd(n.vertexCount,"vertex")}.`,`Bounding size ${n.boundingSize.x.toFixed(3)} x ${n.boundingSize.y.toFixed(3)} x ${n.boundingSize.z.toFixed(3)}.`),n.materialName&&e.push(`Uses material "${n.materialName}".`),e}function qSe(n,e,t){var o,l,c,f,d;let i=Yc(n),r=(l=(o=e.sourceFormat)!=null?o:t==null?void 0:t.sourceFormat)!=null?l:i,s=(f=(c=e.effectiveFormat)!=null?c:t==null?void 0:t.effectiveFormat)!=null?f:r,a=Qh((d=e.loadStrategy)!=null?d:t==null?void 0:t.loadStrategy,r,s);return{sourceFormat:r,effectiveFormat:s,loadStrategy:a}}function QSe(n){return n.source==="component"?.82:n.source==="group"?.72:n.source==="detail-cluster"?.48:n.name?.55:.35}function S$(n,e,t){let i=new Set;return e.map((r,s)=>{var l;let a=qSe(n,r,t),o={...r,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy};return{partId:WSe(n,r,s,i),assetId:n,name:r.name||`Part ${s+1}`,source:r.source,componentId:r.componentId,occurrenceId:r.occurrenceId,partNumber:r.partNumber,componentPath:r.componentPath,category:jSe(r),meshRefs:_$((l=r.meshNames)!=null&&l.length?r.meshNames:[r.name||`mesh-${s+1}`],USe),childCount:r.childCount,materialRefs:_$(r.materialName?[r.materialName]:[],VSe),bbox:kF(r.boundingSize),center:kF(r.center),triangleCount:r.triangleCount,vertexCount:r.vertexCount,materialName:r.materialName,sourceFormat:a.sourceFormat,effectiveFormat:a.effectiveFormat,loadStrategy:a.loadStrategy,confidence:QSe(r),observations:ZSe(o),inferredFunctions:[],knowledgeTags:[],reviewed:!1}})}function $Se(n,e,t,i,r){var o;let s=[],a=t==null?void 0:t.summary;a&&s.push({id:`${n}:geometry`,title:"Geometry overview",domain:"geometry",summary:`${xd(a.meshCount,"mesh")}, ${xd(a.triangleCount,"triangle")}, ${xd(a.materialCount,"material slot")}.`,relatedPartIds:i.slice(0,12).map(l=>l.partId),relatedAssetIds:[n],confidence:.72,source:"rule"});for(let l of(o=e==null?void 0:e.annotations)!=null?o:[]){let c=r.find(f=>f.annotationId===l.id);s.push({id:`${n}:annotation:${l.id}`,title:l.label||"Annotation focus",domain:"assembly",summary:[l.headingRef?`Pinned focus area linked to heading "${l.headingRef}".`:"Pinned focus area marked by the user for follow-up analysis.",c!=null&&c.nearestPartName?`Nearest part candidate: ${c.nearestPartName}.`:""].filter(Boolean).join(" "),relatedPartIds:c!=null&&c.nearestPartId?[c.nearestPartId]:[],relatedAssetIds:[n],confidence:.8,source:"user"})}return s}function JSe(n,e){var i;return((i=n==null?void 0:n.annotations)!=null?i:[]).map(r=>{let s=r.position,a=null,o=Number.POSITIVE_INFINITY;for(let c of e){if(!c.center)continue;let f=kSe(s,c.center);f{var p;return{partId:_.partId,name:_.name,notePath:_.notePath,source:_.source,componentId:_.componentId,occurrenceId:_.occurrenceId,partNumber:_.partNumber,componentPath:_.componentPath,category:_.category,sourceFormat:_.sourceFormat,effectiveFormat:_.effectiveFormat,loadStrategy:_.loadStrategy,meshRefs:[..._.meshRefs],childCount:_.childCount,triangleCount:_.triangleCount,materialName:_.materialName,registeredMatches:(p=_.registeredMatches)==null?void 0:p.map(g=>({...g,reasons:[...g.reasons]})),observations:_.observations}}),annotationLinks:[...n.annotationLinks],knowledgeNodes:[...n.knowledgeNodes]}}function tTe(n,e){var t,i;return Array.from(new Set([...(t=n==null?void 0:n.resourceWarnings)!=null?t:[],...(i=e==null?void 0:e.resourceWarnings)!=null?i:[]]))}function WF(n){var m,_,p,g,v,T,S,E,A,R,M,y,C;let e=(m=n.startedAt)!=null?m:E$(),t=(p=(_=n.evidence)==null?void 0:_.summary)!=null?p:n.preview,i=Yc(n.modelPath),r=(g=n.evidence)==null?void 0:g.formatLineage,s=(v=r==null?void 0:r.effectiveFormat)!=null?v:i,a=Qh(r==null?void 0:r.loadStrategy,(T=r==null?void 0:r.sourceFormat)!=null?T:i,s),o=KSe(S$(n.modelPath,(E=(S=n.evidence)==null?void 0:S.parts)!=null?E:[],r),(A=n.registeredParts)!=null?A:[]),l=new Date().toISOString(),c=tTe(n.preview,n.evidence),f=JSe(n.profile,o),d=$Se(n.modelPath,n.profile,n.evidence,o,f),h=(R=n.previewImages)!=null?R:[],u=eTe({modelPath:n.modelPath,profile:n.profile,preview:t,formatLineage:r,parts:o,knowledgeNodes:d,annotationLinks:f,previewImages:h,warnings:c});return{asset:{assetId:n.modelPath,title:ln(n.modelPath)||n.modelPath,sourcePath:n.modelPath,format:i,effectiveFormat:s,loadStrategy:a,importedAt:l,updatedAt:l,status:t?"ready":"processing",vertexCount:t==null?void 0:t.vertexCount,triangleCount:t==null?void 0:t.triangleCount,materialCount:t==null?void 0:t.materialCount,boundingBox:t?kF(t.boundingSize):void 0,analysisVersion:$h},parts:o,knowledgeNodes:d,previewImages:h,annotationLinks:f,draftingInput:u,evidence:(M=n.evidence)!=null?M:void 0,warnings:c,pipeline:[{stage:"stats",durationMs:0,status:t?"success":"skipped"},{stage:"split",durationMs:0,status:(C=(y=n.evidence)==null?void 0:y.parts)!=null&&C.length?"success":"skipped"},{stage:"map",durationMs:0,status:f.length>0?"success":"skipped"},GSe(e)]}}var $h,FSe,BSe,USe,VSe,u0=I(()=>{"use strict";_s();AE();YM();YM();$h="local-evidence-v1",FSe=3,BSe=.58,USe=16,VSe=16});function Jh(n){let e=n.trim();return e.length>T$?Ui(e.slice(0,T$))+"\u2026":Ui(e)}function A$(n){if(!n||typeof n!="object")return null;let e=n,t=typeof e.summary=="string"?e.summary.trim():"",i=Jh(t);if(!i)return null;let r=Array.isArray(e.sections)?e.sections.flatMap(o=>{if(!o||typeof o!="object")return[];let l=o,c=typeof l.heading=="string"?l.heading.trim():"",f=typeof l.body=="string"?l.body.trim():"",d=Jh(c),h=Jh(f);return d&&h?[{heading:d,body:h}]:[]}):void 0,s=Array.isArray(e.suggestedTags)?e.suggestedTags.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Jh(o)):void 0,a=Array.isArray(e.warnings)?e.warnings.filter(o=>typeof o=="string"&&o.trim().length>0).map(o=>Jh(o)):void 0;return{title:typeof e.title=="string"?Jh(e.title):void 0,summary:i,sections:r,suggestedTags:s,warnings:a,model:typeof e.model=="string"?Jh(e.model):void 0}}var T$,x$=I(()=>{"use strict";nA();T$=8e3});function rTe(n){let e=n.trim().replace(/\/+$/,"");if(!e)return"";let t=/^[a-z][a-z\d+\-.]*:\/\//i.test(e)?e:`http://${e}`;try{let i=new URL(t);return i.protocol!=="http:"&&i.protocol!=="https:"||i.search||i.hash?null:i.toString().replace(/\/+$/,"")}catch(i){return null}}function nTe(n){return{...n,evidence:{...n.evidence,previewImages:[]}}}function sTe(n){return{...n,model:{...n.model,summary:void 0},partCandidates:[],annotationLinks:n.annotationLinks.map(e=>({...e,notePath:void 0,position:[0,0,0],nearestPartId:void 0,nearestPartName:void 0,distance:void 0,confidence:Math.min(e.confidence,.25)})),knowledgeNodes:n.knowledgeNodes.map(e=>({...e,summary:"Geometry details were withheld by privacy settings.",relatedPartIds:[]}))}}function aTe(n,e){let t=e;return n.sendPreviewImagesToRemote||(t=nTe(t)),n.sendGeometrySummaryToRemote||(t=sTe(t)),{...t,evidence:{...t.evidence,rawModelIncluded:!1}}}function b$(n,e,t){if(n.analysisMode==="local")return{enabled:!1,reason:"analysisMode=local"};let i=rTe(n.serviceBaseUrl);return i===""?{enabled:!1,reason:"serviceBaseUrl is empty"}:i===null?{enabled:!1,reason:"serviceBaseUrl must be a valid http(s) URL"}:n.sendRawModelToRemote?{enabled:!1,reason:"raw model upload is not supported by this draft client"}:e?{enabled:!0,endpoint:`${i}/draft-note`,request:{analysisVersion:t,draftingInput:aTe(n,e)}}:{enabled:!1,reason:"drafting input is unavailable"}}function oTe(n){return Number.isFinite(n)&&Number(n)>0?Math.floor(Number(n)):iTe}async function lTe(n,e,t){let i=null,r=new Promise((s,a)=>{i=window.setTimeout(()=>{a(new zF(e,t))},e)});try{return await Promise.race([n,r])}finally{i!==null&&window.clearTimeout(i)}}async function M$(n,e={}){if(!n.enabled||!n.endpoint||!n.request)return null;let t=oTe(e.timeoutMs),i=await lTe((0,R$.requestUrl)({url:n.endpoint,method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n.request)}),t,n.endpoint);if(i.status<200||i.status>=300)throw new Error(`Remote draft request failed: HTTP ${i.status}`);return A$(i.json)}var R$,iTe,zF,I$=I(()=>{"use strict";R$=require("obsidian");x$();iTe=15e3,zF=class extends Error{constructor(e,t){super(`Remote draft request timed out after ${e}ms: ${t}`),this.name="RemoteDraftTimeoutError"}}});var m0={};Fe(m0,{buildKnowledgeIndexContent:()=>K$,buildKnowledgeIndexManagedSection:()=>i1,buildKnowledgeNoteContent:()=>W$,collectRegisteredPartsFromProfiles:()=>X$,generateKnowledgeNote:()=>kTe,replaceManagedSection:()=>Y$,stripTransientRegisteredPartData:()=>t1});function XF(n){var e,t,i;return{modelPath:n.modelPath,reportNotePath:n.reportNotePath,analysisSidecarPath:n.analysisSidecarPath,knowledgeIndexPath:n.knowledgeIndexPath,partNoteCount:(e=n.partNoteCount)!=null?e:0,previewImageCount:(t=n.previewImageCount)!=null?t:0,generatedAt:new Date().toISOString(),status:n.status,warningCount:(i=n.warningCount)!=null?i:0}}function F$(n){var t;let e=(t=n.split(".").pop())==null?void 0:t.trim().toLowerCase();return e&&e.length>0?e:"unknown"}function ZF(n){return n.filter(e=>e.length>0).join(", ")}function YF(n){return Array.from(new Set(n.map(e=>e.trim()).filter(Boolean)))}function JF(n){return n.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()}function qF(n,e){return n.replace(/[\\/:*?"<>|#[\]^]/g," ").replace(/\s+/g," ").trim().slice(0,80)||e}function QF(n){var e;return(e=n==null?void 0:n.map(t=>t.toFixed(2)).join(", "))!=null?e:"-"}function dTe(n,e=12){if(n.length===0)return"-";let t=n.slice(0,e).join(", "),i=n.length-e;return i>0?`${t}, +${i.toLocaleString()} more`:t}function B$(n){var e,t;return n.source==="component"?n.childCount&&n.childCount>1?`component (${n.childCount})`:"component":n.source==="group"?`group (${(e=n.childCount)!=null?e:n.meshRefs.length})`:n.source==="detail-cluster"?`detail cluster (${(t=n.childCount)!=null?t:n.meshRefs.length})`:"mesh"}function $F(n){var a,o,l;if(!n.sourceFormat&&!n.effectiveFormat&&!n.loadStrategy)return null;let e=(a=n.sourceFormat)!=null?a:n.effectiveFormat,t=(o=n.effectiveFormat)!=null?o:e,i=(l=n.loadStrategy)!=null?l:e&&t&&e!==t?"convert":"direct",r=e?e.toUpperCase():"unknown",s=t&&t!==e?` -> ${t.toUpperCase()}`:"";return`${r}${s} (${i})`}function hTe(n){let e=n.sourceNotePath?`[[${n.sourceNotePath}|${n.sourcePartName}]]`:n.sourcePartName,t=n.reasons.length>0?` - ${n.reasons.join(", ")}`:"";return`${e} (${Math.round(n.confidence*100)}%${t})`}function U$(n){var t;let e=[];if(n.headingRef&&e.push(`heading: ${Ui(n.headingRef)}`),n.notePath){let i=(t=Vs(n.notePath))!=null?t:n.notePath;e.push(`note: [[${n.notePath}|${i}]]`)}return e}function uTe(n){return[{axis:"x",value:Math.max(0,n.boundingSize.x)},{axis:"y",value:Math.max(0,n.boundingSize.y)},{axis:"z",value:Math.max(0,n.boundingSize.z)}].sort((e,t)=>t.value-e.value)}function V$(n){let[e,t,i]=uTe(n);if(!e||e.value<=0)return"Bounding information is incomplete, so scale and orientation still need manual review.";let r=i.value>0?e.value/i.value:Number.POSITIVE_INFINITY,s=e.value>0?t.value/e.value:0;return(e.value>0?i.value/e.value:0)<=.18&&s>=.45?`The bounding box is strongly planar, with a thin ${i.axis.toUpperCase()} dimension compared with ${e.axis.toUpperCase()}.`:r>=3&&s<=.55?`The model is strongly elongated along ${e.axis.toUpperCase()}, which suggests a directional or axial structure.`:"The overall bounding volume is fairly balanced, so semantic grouping is more likely to come from mesh and material boundaries than from one dominant axis."}function G$(n){if(n.splatCount!==void 0)return`This is a splat-based asset with ${n.splatCount.toLocaleString()} splats; review should focus on capture coverage, density, and viewpoint clarity instead of triangle topology.`;let e=0;return n.triangleCount>=5e5?e+=3:n.triangleCount>=1e5?e+=2:n.triangleCount>=2e4&&(e+=1),n.meshCount>=100?e+=2:n.meshCount>=25&&(e+=1),n.materialCount>=8&&(e+=1),e>=5?"The mesh and material counts point to a high-complexity asset; expect semantic cleanup, regrouping, or naming review before turning it into stable knowledge notes.":e>=3?"The asset sits in a medium-complexity range: it already contains useful structure, but some meshes or materials may still reflect export convenience rather than real-world parts.":"The asset is structurally compact, so a lightweight local pass can usually produce usable first-draft notes without a heavier analysis pipeline."}function mTe(n){var t;let e=(t=n==null?void 0:n.tags)!=null?t:[];return e.length===0?"No knowledge tags are stored yet, so the note should establish the first stable vocabulary for this model.":`Current tags already suggest a working taxonomy: ${ZF(e)}.`}function y$(n){var t;let e=(t=n==null?void 0:n.annotations)!=null?t:[];return e.length===0?"No annotation pins are stored yet, so the next useful pass is to mark semantically important regions before splitting the model into part notes.":e.length===1?"There is 1 saved annotation pin, which already gives this report a concrete user-selected focus area.":`There are ${e.length} saved annotation pins, which provide a useful first-pass map of user-relevant regions.`}function pTe(n,e){var r;if(!n)return["Preview statistics were not available when this note was generated, so the next step is to reload the model and regenerate the report.",y$(e)];let t=[`${n.meshCount.toLocaleString()} mesh(es), ${((r=n.splatCount)!=null?r:n.triangleCount).toLocaleString()} ${n.splatCount!==void 0?"splats":"triangles"}, and ${n.materialCount.toLocaleString()} material slot(s) are currently visible in the preview pipeline.`,G$(n),V$(n),y$(e)],i=mTe(e);return i&&t.push(i),t}function _Te(n){var i;let e=(i=n==null?void 0:n.annotations)!=null?i:[];if(e.length===0)return["## Focus Areas","","- No focus areas have been pinned yet.",""];let t=["## Focus Areas",""];for(let r of e){let s=U$(r),a=s.length>0?` (${s.join("; ")})`:"";t.push(`- **${Ui(r.label||"Untitled pin")}**${a}`)}return t.push(""),t}function gTe(n){var i,r;let e=(i=n==null?void 0:n.annotationLinks)!=null?i:[];if(e.length===0)return["## Annotation Links","","- No annotation-to-part links were produced in this pass.",""];let t=["## Annotation Links","","| Annotation | Nearest Part | Linked Note | Distance | Confidence |","|------------|--------------|-------------|----------|------------|"];for(let s of e){let a=s.notePath?`[[${s.notePath}]]`:"-";t.push(`| ${xa(s.label)} | ${xa((r=s.nearestPartName)!=null?r:"-")} | ${xa(a)} | ${s.distance===void 0?"-":s.distance.toFixed(3)} | ${Math.round(s.confidence*100)}% |`)}return t.push(""),t}function vTe(n){var i,r,s,a;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(o=>o.notePath);if(e.length===0)return["## Suggested Part Notes","","- No part note drafts were created in this pass.",""];let t=["## Suggested Part Notes",""];for(let o of e.slice(0,N$)){let l=Ui((s=Vs((r=o.notePath)!=null?r:""))!=null?s:o.name),c=[(a=o.category)!=null?a:"unclassified",Wo(o.triangleCount,"triangle"),o.materialName?`material ${Ui(o.materialName)}`:""].filter(Boolean).join(", ");t.push(`- [[${o.notePath}|${l}]] - ${Ui(o.name)} (${c})`)}return t.push(""),t}function Wo(n,e){return`${(n!=null?n:0).toLocaleString()} ${e}${n===1?"":"s"}`}function ETe(n){return n.length===0?"No per-part evidence was captured yet, so the first useful editing pass is to reload the model and regenerate this note from the workbench.":n.slice(0,6).map((e,t)=>{var r;let i=e.materialName?`, material ${Ui(e.materialName)}`:"";return`${t+1}. ${Ui(e.name)} (${(r=e.category)!=null?r:"unclassified"}, ${Wo(e.triangleCount,"triangle")}${i})`}).join(` `)}function STe(n){let e=n.filter(t=>{var i;return(i=t.registeredMatches)==null?void 0:i.length});return e.length===0?"No previously registered parts were matched across other analyzed models in this pass.":e.slice(0,6).map(t=>{var r;let i=(r=t.registeredMatches)==null?void 0:r[0];return i?`- ${Ui(t.name)}: possible reuse of ${Ui(i.sourcePartName)} from ${Ui(i.sourceAssetId)} (${Math.round(i.confidence*100)}% confidence).`:""}).filter(Boolean).join(` `)}function k$(n){var p,g,v,T,S,E,A,R,M;let e=F$(n.sourcePath).toUpperCase(),t=n.preview,i=[...(g=(p=n.analysis)==null?void 0:p.parts)!=null?g:[]].sort((y,C)=>{var D,w;return((D=C.triangleCount)!=null?D:0)-((w=y.triangleCount)!=null?w:0)}),r=(T=(v=n.profile)==null?void 0:v.annotations)!=null?T:[],s=(E=(S=n.analysis)==null?void 0:S.annotationLinks)!=null?E:[],a=YF(i.map(y=>{var C;return(C=y.category)!=null?C:"unclassified"})).slice(0,6),o=YF(i.flatMap(y=>y.materialName?[Ui(y.materialName)]:[])).slice(0,6),l=ETe(i),c=STe(i),f=t?V$(t):"Geometry statistics are not available yet, so this draft should stay provisional.",d=t?G$(t):"Reload the preview to capture mesh, triangle, vertex, and material evidence.",h=(A=n.profile)==null?void 0:A.notes.trim(),u=t?`${n.baseName} is a ${e} asset with ${Wo(t.meshCount,"mesh")}, ${Wo(t.triangleCount,"triangle")}, ${Wo(t.vertexCount,"vertex")}, and ${Wo(t.materialCount,"material slot")}.`:`${n.baseName} is a ${e} asset that still needs a refreshed preview pass before its geometry can be summarized confidently.`,m=r.length>0?r.map(y=>{let C=s.find(G=>G.annotationId===y.id),D=C!=null&&C.nearestPartName?` Nearest captured part: ${Ui(C.nearestPartName)}.`:"",w=y.headingRef?` Linked heading: ${Ui(y.headingRef)}.`:"";return`- ${Ui(y.label||"Untitled pin")}.${D}${w}`}).join(` `):"- No pins are saved yet. Add pins for the regions that should become standalone notes, questions, or review checkpoints.",_=[i.length>0?"Rename the strongest part candidates so their mesh names match real semantic parts.":"Regenerate after the model preview has captured per-part evidence.",r.length>0?"Turn each saved pin into a short linked note or heading-level review item.":"Place at least one pin on the most important region before treating this as a finished note.","Review scale, orientation, materials, and whether mesh boundaries represent real assembly boundaries."];return{title:`${n.baseName} local knowledge draft`,summary:[u,f,h?`User notes add this context: ${h}`:"No user notes are stored yet, so the draft stays grounded in renderer evidence and saved pins."].join(" "),sections:[{heading:"Evidence-backed description",body:[d,a.length>0?`Detected part categories: ${ZF(a)}.`:"No part categories were inferred yet.",o.length>0?`Visible materials include ${ZF(o)}.`:"No material names were captured from the renderer evidence."].join(" ")},{heading:"Candidate structure",body:l},{heading:"Registered part reuse",body:c},{heading:"Focus areas",body:m},{heading:"Suggested note shape",body:[`Start with a short purpose paragraph for ${n.baseName}.`,"Then split the note into geometry evidence, meaningful part candidates, saved focus areas, and unresolved review questions.","Only promote a mesh into a standalone part note after a human confirms its function or assembly role."].join(" ")}],suggestedTags:YF([...(M=(R=n.profile)==null?void 0:R.tags)!=null?M:[],`format/${e.toLowerCase()}`,...a.map(y=>`part/${y}`)]).slice(0,12),nextActions:_,generatedAt:new Date().toISOString()}}function TTe(n){var i,r;let e=(r=(i=n.analysis)==null?void 0:i.localDraft)!=null?r:k$(n),t=["## Local Draft Metadata","",`- Generated at: ${e.generatedAt}`,`- Sections: ${e.sections.length.toLocaleString()}`];return e.suggestedTags.length>0&&t.push("Suggested tags:","",...e.suggestedTags.map(s=>`- ${Ui(s)}`),""),e.nextActions.length>0&&t.push("Next actions:","",...e.nextActions.map(s=>`- ${Ui(s)}`),""),t}function rn(n){return JSON.stringify(n)}function ATe(n){return n!=null&&n.draftingInput?["## AI Drafting Input","","- Grounded drafting input is available in the sidecar JSON under `draftingInput`.",`- Part candidates included: ${n.draftingInput.partCandidates.length.toLocaleString()}`,`- Annotation links included: ${n.draftingInput.annotationLinks.length.toLocaleString()}`,"- Raw model included: false",""]:["## AI Drafting Input","","- No drafting input was prepared in this pass.",""]}function xTe(n){var i,r,s,a;let e=n==null?void 0:n.remoteDraft;if(!e)return["## Remote Draft","","- No remote draft was requested or returned for this pass.",""];let t=["## Remote Draft","",e.title?`### ${e.title}`:"### Draft Summary","",e.summary,""];for(let o of(i=e.sections)!=null?i:[])t.push(`### ${o.heading}`,"",o.body,"");(r=e.suggestedTags)!=null&&r.length&&t.push("Suggested tags:","",...e.suggestedTags.map(o=>`- ${o}`),"");for(let o of(s=e.warnings)!=null?s:[])t.push(`- Remote warning: ${o}`);return(a=e.warnings)!=null&&a.length&&t.push(""),t}function RTe(n){var i,r;let e=(i=n==null?void 0:n.remoteDraft)!=null?i:n==null?void 0:n.localDraft;if(!e)return["## Editable Draft","","- No draft body was produced in this pass.",""];let t=["## Editable Draft","",n!=null&&n.remoteDraft?"- Source: optional remote draft, grounded by the local evidence sidecar.":"- Source: local evidence draft, generated without a remote service.","",e.summary,""];for(let s of(r=e.sections)!=null?r:[])t.push(`### ${s.heading}`,"",s.body,"");return t}function bTe(n){var t;let e=(t=n==null?void 0:n.previewImages)!=null?t:[];return e.length===0?["## Evidence Snapshots","","- No preview snapshot was captured for this generation pass.",""]:["## Evidence Snapshots","",...e.map(i=>`![[${i}]]`),""]}function MTe(n){var i,r,s,a;let e=(i=n==null?void 0:n.parts)!=null?i:[];if(e.length===0)return["## Part Candidates","","- No per-mesh evidence was available. Reload the model in the workbench and regenerate the note to capture part candidates.",""];let t=["## Part Candidates","","| # | Part | Part Note | Source | Category | Triangles | Material | Center | Evidence |","|---|------|-----------|--------|----------|-----------|----------|--------|----------|"];for(let[o,l]of e.slice(0,32).entries()){let c=QF(l.center),f=l.observations.slice(0,2).join(" "),d=l.notePath?`[[${l.notePath}]]`:"-",h=$F(l),u=[B$(l),h].filter(Boolean).join("; ");t.push(`| ${o+1} | ${xa(l.name)} | ${xa(d)} | ${xa(u)} | ${xa((r=l.category)!=null?r:"unclassified")} | ${((s=l.triangleCount)!=null?s:0).toLocaleString()} | ${xa((a=l.materialName)!=null?a:"-")} | ${c} | ${xa(f)} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more candidate parts omitted from this note | - | - | - | - | - | - | See sidecar JSON |`),t.push(""),t}function ITe(n){var i,r;let e=((i=n==null?void 0:n.parts)!=null?i:[]).filter(s=>{var a;return(a=s.registeredMatches)==null?void 0:a.length});if(e.length===0)return["## Registered Part Matches","","- No previously registered parts were matched across other analyzed models in this pass.",""];let t=["## Registered Part Matches","","| Current Part | Best Existing Part | Source Model | Confidence | Reasons |","|--------------|--------------------|--------------|------------|---------|"];for(let s of e.slice(0,32)){let a=(r=s.registeredMatches)==null?void 0:r[0];if(!a)continue;let o=a.sourceNotePath?`[[${a.sourceNotePath}|${a.sourcePartName}]]`:a.sourcePartName;t.push(`| ${xa(s.name)} | ${xa(o)} | ${xa(a.sourceAssetId)} | ${Math.round(a.confidence*100)}% | ${xa(a.reasons.join(", "))} |`)}return e.length>32&&t.push(`| ... | ${e.length-32} more matched parts omitted | - | - | See sidecar JSON |`),t.push(""),t}function yTe(n){var i;let e=(i=n==null?void 0:n.knowledgeNodes)!=null?i:[];if(e.length===0)return["## Knowledge Nodes","","- No knowledge nodes were produced in this pass.",""];let t=["## Knowledge Nodes",""];for(let r of e)t.push(`- **${Ui(r.title)}** (${r.domain}, ${Math.round(r.confidence*100)}%, ${r.source}): ${Ui(r.summary)}`);return t.push(""),t}function CTe(n,e){var i,r;let t=["## Evidence Health","",`- Analysis version: ${$h}`,e?`- Sidecar: [[${e}|Analysis JSON]]`:"- Sidecar: not written",n!=null&&n.knowledgeIndexPath?`- Knowledge index: [[${n.knowledgeIndexPath}|Model index]]`:"- Knowledge index: not written"];for(let s of(i=n==null?void 0:n.warnings)!=null?i:[])t.push(`- Warning: ${s}`);return((r=n==null?void 0:n.warnings)!=null?r:[]).length===0&&t.push("- Warnings: none"),t.push(""),t}function PTe(n,e){var r;let t=(r=e==null?void 0:e.annotations)!=null?r:[],i=["## Draft Knowledge Points",""];if(n?(i.push(`- Geometry overview: explain how ${n.meshCount.toLocaleString()} mesh(es) and ${n.materialCount.toLocaleString()} material slot(s) map to real semantic parts instead of export-only fragments.`),n.splatCount!==void 0?i.push(`- Capture quality: review whether the ${n.splatCount.toLocaleString()} splats preserve enough silhouette and depth detail for note-taking from multiple angles.`):i.push(`- Structural density: verify whether ${(n.triangleCount/Math.max(n.meshCount,1)).toLocaleString(void 0,{maximumFractionDigits:0})} average triangles per mesh reflects deliberate detail or accidental over-segmentation.`)):i.push("- Geometry overview: reload the model and capture preview statistics before turning this into a stable knowledge note."),t.length>0)for(let s of t.slice(0,8)){let a=U$(s),o=a.length>0?` (${a.join("; ")})`:"";i.push(`- **${Ui(s.label||"Untitled pin")}**${o}: describe what this region does, why it matters, and whether it deserves its own linked part note.`)}else i.push("- Focus mapping: add pins for the regions that should become standalone part notes or review checkpoints.");return i.push("- Review pass: confirm scale, orientation, and whether material boundaries reflect actual function, assembly, or simply renderer setup."),i.push(""),i}function W$(n){var c,f,d,h;let e=n.profile,t=n.preview,i=n.analysis,r=F$(n.sourcePath),s=(c=e==null?void 0:e.tags)!=null?c:[],a=(f=e==null?void 0:e.annotations)!=null?f:[],o=(d=i==null?void 0:i.previewImages)!=null?d:[];return[["---",`source_model: ${rn(n.sourcePath)}`,`format: ${r}`,"status: ready","analysis_mode: local",`analysis_version: ${$h}`,`report_note_path: ${rn(n.notePath)}`,...n.analysisSidecarPath?[`analysis_sidecar_path: ${rn(n.analysisSidecarPath)}`]:[],...n.knowledgeIndexPath?[`knowledge_index_path: ${rn(n.knowledgeIndexPath)}`]:[],`annotation_count: ${a.length}`,`updated_at: ${new Date().toISOString()}`,...o.length>0?["preview_images:",...o.map(u=>` - ${rn(u)}`)]:[],...s.length>0?["knowledge_tags:",...s.map(u=>` - ${rn(u)}`)]:[],"---"].join(` @@ -24615,6 +24615,6 @@ ${e.trim()} `}function K$(n){var r;let e=i1(n),t=((r=n.analysis.parts)!=null?r:[]).filter(s=>s.notePath).length;return[["---",`source_model: ${rn(n.sourcePath)}`,`report_note_path: ${rn(n.notePath)}`,`analysis_sidecar_path: ${rn(n.analysisSidecarPath)}`,`part_note_count: ${t}`,"status: index","generated_by: ai-model-workbench",`updated_at: ${new Date().toISOString()}`,"---"].join(` `),"",`# ${n.baseName} Knowledge Index`,"","## User Notes","","- ","",e].join(` `)}async function GTe(n){let e=typeof performance!="undefined"?performance.now():Date.now(),t=n.app.vault.getAbstractFileByPath(n.indexPath),i=null;if(t instanceof wl.TFile){let r=await n.app.vault.read(t),s=i1(n);await n.app.vault.modify(t,Y$(r,s)),i=t}else i=await H$(n.app,n.indexPath,K$(n));return i&&(n.analysis.knowledgeIndexPath=i.path),n.analysis.pipeline.push({stage:"index",durationMs:Math.max(0,Math.round((typeof performance!="undefined"?performance.now():Date.now())-e)),status:i?"success":"failed"}),i}async function kTe(n,e,t={}){var o,l,c,f,d,h,u,m,_,p,g;if(KF!==null)return;let i;KF=new Promise(v=>{i=v});let r=null,s=null,a=0;try{let v=e.store.getState(),T=v.currentModelPath;if(!T)return;let S=v.modelAssetProfiles[T],E=v.modelPreview,A=ln(T)||"model",R=v.settings.reportFolder,M=`${R}/${A} Report.md`,y=`${R}/${A} Analysis.json`,C=`${R}/${A} Index.md`,D=((o=v.lastKnowledgeGeneration)==null?void 0:o.status)==="pending"?`Previous knowledge generation for ${v.lastKnowledgeGeneration.modelPath} did not complete. This run can replace the pending marker if it finishes.`:null;D&&new wl.Notice(D),r=XF({modelPath:T,reportNotePath:M,analysisSidecarPath:y,knowledgeIndexPath:C,status:"pending"}),e.setLastKnowledgeGeneration(r);let w=(f=(c=(l=t.preview)==null?void 0:l.getModelEvidence)==null?void 0:c.call(l))!=null?f:null,G=await LTe(n,t.preview,v.settings.previewFolder,A);a=G.paths.length;let O=await X$(n,v.modelAssetProfiles,T);s=WF({modelPath:T,profile:S,preview:E,evidence:w,previewImages:G.paths,registeredParts:O}),D&&(s.warnings=[...s.warnings,D]);let N=s;G.warning&&(N.warnings=[...N.warnings,G.warning],N.draftingInput&&(N.draftingInput={...N.draftingInput,evidence:{...N.draftingInput.evidence,warnings:[...N.draftingInput.evidence.warnings,G.warning]}})),N.localDraft=k$({baseName:A,sourcePath:T,profile:S,preview:E,analysis:N}),N.pipeline.push({stage:"draft",durationMs:0,status:"success"}),await VTe({app:n,partFolder:v.settings.partFolder,baseName:A,notePath:M,sourcePath:T,analysis:N}),N.draftingInput&&(N.draftingInput={...N.draftingInput,partCandidates:N.draftingInput.partCandidates.map(z=>{let Y=N.parts.find(de=>de.partId===z.partId);return Y!=null&&Y.notePath?{...z,notePath:Y.notePath}:z}),annotationLinks:[...(d=N.annotationLinks)!=null?d:[]]});let B=b$(v.settings,N.draftingInput,$h);if(B.enabled)try{let z=await M$(B);z?(N.remoteDraft=z,N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"success"})):N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"})}catch(z){let Y=z instanceof Error?z.message:String(z);N.warnings=[...N.warnings,`Remote draft failed: ${Y}`],N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"failed"})}else N.pipeline.push({stage:"remoteDraft",durationMs:0,status:"skipped"});if(await e1(n,R),!await GTe({app:n,baseName:A,notePath:M,sourcePath:T,analysisSidecarPath:y,indexPath:C,analysis:N,preview:E,profile:S}))throw new Error(`Unable to write knowledge index: ${C}`);let Q=W$({baseName:A,notePath:M,sourcePath:T,profile:S,preview:E,analysis:N,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath});if(!await C$(n,y,`${JSON.stringify(N,null,2)} -`))throw new Error(`Unable to write analysis sidecar: ${y}`);let J=await C$(n,M,Q);if(!J)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(T,z=>({analysisVersion:$h,registeredParts:N.parts.map(t1),reportNotePath:J.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:G.paths})),e.setLastKnowledgeGeneration(XF({modelPath:T,reportNotePath:J.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(u=(h=N.partNotePaths)==null?void 0:h.length)!=null?u:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(J,{active:!0}),new wl.Notice(`Knowledge note updated: ${J.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(XF({...r,partNoteCount:(_=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?_:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(g=s==null?void 0:s.warnings.length)!=null?g:0)})),v}finally{i(),KF=null}}var wl,cTe,N$,fTe,w$,jF,KF,m0=I(()=>{"use strict";wl=require("obsidian");lA();rA();On();_s();TE();AE();h0();I$();cTe=qi("knowledge-note"),N$=8,fTe=256,w$="",jF="";KF=null});var j$={};Fe(j$,{renderRegisteredPartMatchRow:()=>HTe});function WTe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function HTe(n,e,t){var o,l;let i=n.createDiv({cls:"ai3d-direct-workbench-match"}),r=i.createDiv({cls:"ai3d-direct-workbench-match-main"});r.createDiv({cls:"ai3d-direct-workbench-match-title",text:e}),r.createDiv({cls:"ai3d-direct-workbench-match-source",text:t.sourcePartName||t.sourcePartId}),t.sourceModelPath&&r.createDiv({cls:"ai3d-direct-workbench-match-model",text:Ki("directWorkbench.registeredSourceModel",{model:WTe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?j("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?j("directWorkbench.registeredTargetSourceModel"):j("directWorkbench.registeredTargetUnavailable")}),t.reasons.length>0&&r.createDiv({cls:"ai3d-direct-workbench-match-reasons",text:t.reasons.slice(0,2).join(" / ")});let s=i.createDiv({cls:"ai3d-direct-workbench-match-side"});s.createDiv({cls:"ai3d-direct-workbench-match-score",text:`${Math.round(t.matchScore*100)}%`});let a=s.createEl("button",{cls:"ai3d-direct-workbench-action ai3d-direct-workbench-match-open",text:t.sourceNotePath?j("directWorkbench.registeredOpenNote"):j("directWorkbench.registeredOpenModel"),attr:{type:"button","data-ai3d-action":"open-registered-part","data-ai3d-target-path":(l=(o=t.sourceNotePath)!=null?o:t.sourceModelPath)!=null?l:""}});return a.disabled=!t.sourceNotePath&&!t.sourceModelPath,i}var Z$=I(()=>{"use strict";_n()});var iJ={};Fe(iJ,{DirectModelView:()=>r1});function $Te(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function $$(n){var i,r,s;let e=(r=(i=n.occurrenceId)!=null?i:n.componentId)!=null?r:n.partNumber;if(e!=null&&e.trim())return`component:${e.trim().toLowerCase()}`;let t=n.meshRefs.map(a=>a.trim().toLowerCase()).filter(Boolean).sort().join("|");return`${(s=n.source)!=null?s:"mesh"}:${n.name.trim().toLowerCase()}:${t}`}function JTe(n,e){return n?{...e,notePath:n.notePath,reviewed:n.reviewed,observations:n.reviewed||n.notePath?n.observations:e.observations,inferredFunctions:n.inferredFunctions.length>0?n.inferredFunctions:e.inferredFunctions,knowledgeTags:n.knowledgeTags.length>0?n.knowledgeTags:e.knowledgeTags}:e}function J$(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function eAe(n){return n.length<=q$?n:[...n].sort((e,t)=>{var s,a,o,l;let i=J$(e)-J$(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)}).slice(0,q$)}function eJ(n){return{partId:n.partId,assetId:n.assetId,parentPartId:n.parentPartId,name:n.name,source:n.source,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath,category:n.category,meshRefs:n.meshRefs,childCount:n.childCount,materialRefs:n.materialRefs,bbox:n.bbox,center:n.center,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:n.materialName,sourceFormat:n.sourceFormat,effectiveFormat:n.effectiveFormat,loadStrategy:n.loadStrategy,confidence:n.confidence,observations:n.observations,inferredFunctions:n.inferredFunctions,knowledgeTags:n.knowledgeTags,notePath:n.notePath,reviewed:n.reviewed}}function tAe(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(eJ))===JSON.stringify(e.map(eJ))}function n1(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function iAe(n){let e=n1(n.performanceTier);return e>=2?YTe:e===1?XTe:zTe}function rAe(n){return n1(n.performanceTier)<2&&n.meshCount<=KTe&&n.triangleCount<=jTe}function nAe(n){let e=n1(n.performanceTier);return e>=2?null:e===1?QTe:qTe}function tJ(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function sAe(n){return n.parts.length<=Q$?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=tJ(e)-tJ(t);if(i!==0)return i;let r=((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0);return r!==0?r:t.triangleCount-e.triangleCount}).slice(0,Q$)}}function aAe(n){return{sourcePath:n.sourcePath,sourceFormat:Yc(n.sourceExt||n.sourcePath),effectiveFormat:Yc(n.ext||n.path),loadStrategy:n.strategy}}function oAe(n,e,t=[]){if(!e&&t.length===0)return n;let i=e!=null?e:n.formatLineage,r=Array.from(new Set([...n.resourceWarnings,...t]));return{...n,formatLineage:i,resourceWarnings:r,parts:n.parts.map(s=>{var a,o,l;return{...s,sourceFormat:(a=s.sourceFormat)!=null?a:i==null?void 0:i.sourceFormat,effectiveFormat:(o=s.effectiveFormat)!=null?o:i==null?void 0:i.effectiveFormat,loadStrategy:(l=s.loadStrategy)!=null?l:i==null?void 0:i.loadStrategy}})}}var o_,p0,zTe,XTe,YTe,q$,KTe,jTe,Q$,ZTe,qTe,QTe,r1,rJ=I(()=>{"use strict";o_=require("obsidian");bM();Eg();vF();kM();EF();_s();WM();HM();zM();qp();_n();oE();ua();On();AE();XM();LQ();V0();NQ();BQ();bE();qM();F0();p0=qi("direct-view"),zTe=450,XTe=1200,YTe=1500,q$=256,KTe=500,jTe=15e5,Q$=64,ZTe=512,qTe=250,QTe=1e3;r1=class extends o_.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.activeLoadController=null;this.escHandler=null;this.workbenchPanel=null;this.workbenchSummary=null;this.workbenchRoute=null;this.workbenchModelPath=null;this.workbenchEvidenceLineage=null;this.workbenchSourceWarnings=[];this.workbenchEvidenceModelPath=null;this.workbenchEvidence=null;this.evidenceRegistrationTimer=null;this.registeredMatchPreviewTimer=null;this.sidebarContent=null;this.getSettings=i,this.convertedAssetCache=r,this.ps=s}getViewType(){return bd}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),Md(this.contentEl),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),Md(this.contentEl),await this.loadModel(t)}onClose(){var t,i,r;return ME(this.contentEl),this.loadGeneration++,(t=this.activeLoadController)==null||t.abort(),this.activeLoadController=null,this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(i=this.annotationMgr)==null||i.destroy(),this.annotationMgr=null,(r=this.preview)==null||r.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var S,E,A,R,M,y;Md(this.contentEl),(S=this.activeLoadController)==null||S.abort();let i=new AbortController;this.activeLoadController=i;let r=++this.loadGeneration,s={signal:i.signal,isCurrent:()=>this.loadGeneration===r&&this.activeLoadController===i&&!i.signal.aborted},a=xr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(E=this.annotationMgr)==null||E.destroy(),this.annotationMgr=null,this.workbenchPanel=null,this.workbenchSummary=null,this.workbenchRoute=null,this.workbenchModelPath=null,this.workbenchEvidenceLineage=null,this.workbenchSourceWarnings=[],this.workbenchEvidenceModelPath=null,this.workbenchEvidence=null,this.sidebarContent=null,(A=this.preview)==null||A.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:o,topTrack:l,mainArea:c,hHandle:f,host:d,canvas:h,modeOverlay:u,sidebarContent:m,vHandle:_,workbenchPanel:p}=DQ({contentEl:this.contentEl,filePath:t.path,mobile:a,getPreview:()=>this.preview}),g=null,v=C=>{var D;this.annotationMode=C,a&&C&&(g==null||g.setMobileInteractionMode(!0)),(D=this.annotationMgr)==null||D.hideEditor(),u.classList.toggle("is-hidden",!C)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=C=>{C.key==="Escape"&&this.annotationMode&&v(!1)},activeDocument.addEventListener("keydown",this.escHandler),g=tE(c,d,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(v(!this.annotationMode),this.annotationMode),C=>{!C&&this.annotationMode&&v(!1)}),this.sidebarContent=m,this.workbenchPanel=p,this.setupResizeHandles(f,_,l,o);let T=qh(d);try{let C=this.getSettings(),D=(R=$l(this.app,t.path))!=null?R:void 0,w=Zh(this.app,C);T.setPhaseKey("loading.preparingModel");let G=await Qp({path:t.path,absolutePath:D,preferConversionExts:$p(C),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(a0(),s0));return J(C)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:w});gi(s);let O=nE(G);this.workbenchEvidenceLineage=aAe(O),this.workbenchSourceWarnings=[...O.warnings];let N=FQ(C,O);g==null||g.syncCapabilities(),T.setPhaseKey("loading.loadingModel");let B=po(this.app,O.path,{signal:i.signal}),V=n_(this.app,O.path,C);B.catch(()=>{}),V.catch(()=>{});let Q=await this.createPreviewWithFallback(h,B,V,O,N,t.path,s);gi(s),this.preview=Q.preview,d.dataset.ai3dBackend=Q.route.backend,d.dataset.ai3dRouteReason=Q.route.reason,g==null||g.syncCapabilities();let K=Q.summary;this.applyLargeModelRenderBudget(Q.preview,C,K),aE(d,K),this.workbenchPanel=p,this.workbenchSummary=K,this.workbenchRoute=Q.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(p,K,Q.route,t.path),this.renderSidebarContent(t.path,K),this.ps.setCurrentModel(t.path,K),p0.info("direct view model loaded",{path:t.path,effectivePath:O.path,effectiveExt:O.ext,strategy:O.strategy,backend:Q.route.backend,routeReason:Q.route.reason,meshCount:K.meshCount,triangleCount:K.triangleCount}),T.setProgress(100),T.hide(),this.setupAnnotationManager(t.path,r,d,g),this.scheduleDeferredEvidenceRegistration(t.path,r,K)}catch(C){if(Sf(C)||r!==this.loadGeneration)return;T.hide(),(M=this.preview)==null||M.destroy(),this.preview=null,d.replaceChildren(),(y=this.workbenchPanel)==null||y.addClass("is-hidden");let D=rE(C);iE(C)?console.warn("[AI3D] Direct view blocked by converter settings:",D.message):console.error("[AI3D] Direct view failed:",C),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),sE(d,D)}finally{this.activeLoadController===i&&(this.activeLoadController=null),T.hide()}}async setupAnnotationManager(t,i,r,s){var l;let a=this.preview;if(!a)return;let o=a.getAnnotationProvider();if(o.canvas)try{let[{AnnotationManager:c},{createHeadingSearch:f,createNoteReader:d}]=await Promise.all([Promise.resolve().then(()=>(l0(),o0)),Promise.resolve().then(()=>(f0(),c0))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let h=this.ps.store.getState().modelAssetProfiles[t],u=(l=h==null?void 0:h.annotations)!=null?l:[],m=d(this.app),_=f(this.app);this.annotationMgr=new c(o,r,"edit",u,p=>{this.ps.updateModelProfile(t,g=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,_,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(u.length),a.onPick(p=>{var S,E;if(!this.annotationMode||!this.annotationMgr)return;let g=p.screenX,v=p.screenY,T=(E=(S=this.preview)==null?void 0:S.getPickWorldPoint(p))!=null?E:null;T&&this.annotationMgr.showEditor(g,v,T)})}catch(c){console.warn("[AI3D] Direct view annotation runtime failed to load:",c)}}async registerModelPartsFromEvidence(t,i){var f,d;if(!(i!=null&&i.parts.length))return;let{buildPartRecordsFromEvidence:r}=await Promise.resolve().then(()=>(h0(),HF)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:w0(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(h=>[$$(h),h])),c=eAe(s.map(h=>JTe(l.get($$(h)),h))).map(cu);tAe(o.registeredParts,c)||this.ps.updateModelProfile(t,h=>({registeredParts:c}))}clearDeferredEvidenceRegistration(){this.evidenceRegistrationTimer!==null&&(window.clearTimeout(this.evidenceRegistrationTimer),this.evidenceRegistrationTimer=null)}clearRegisteredMatchPreview(){this.registeredMatchPreviewTimer!==null&&(window.clearTimeout(this.registeredMatchPreviewTimer),this.registeredMatchPreviewTimer=null)}scheduleDeferredEvidenceRegistration(t,i,r){if(this.clearDeferredEvidenceRegistration(),!rAe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),p0.info("skip automatic evidence capture for very large model",{modelPath:t,performanceTier:r.performanceTier,meshCount:r.meshCount,triangleCount:r.triangleCount});return}this.evidenceRegistrationTimer=window.setTimeout(()=>{this.evidenceRegistrationTimer=null,!(i!==this.loadGeneration||this.workbenchModelPath!==t)&&(async()=>{let s=this.getCurrentModelEvidence();await this.registerModelPartsFromEvidence(t,s),i===this.loadGeneration&&this.workbenchModelPath===t&&this.refreshWorkbenchPanel()})().catch(s=>{console.warn("[AI3D] Deferred model evidence capture failed:",s)})},iAe(r))}getCurrentModelEvidence(){var s,a,o;let t=this.workbenchModelPath;if(t&&this.workbenchEvidenceModelPath===t)return this.workbenchEvidence;let i=(o=(a=(s=this.preview)==null?void 0:s.getModelEvidence)==null?void 0:a.call(s))!=null?o:null,r=i?oAe(i,this.workbenchEvidenceLineage,this.workbenchSourceWarnings):null;return t&&(this.workbenchEvidenceModelPath=t,this.workbenchEvidence=r),r}getCachedModelEvidence(t){return this.workbenchEvidenceModelPath===t?this.workbenchEvidence:null}createKnowledgePreviewAdapter(){return this.preview?{captureSnapshot:()=>{var t,i;return(i=(t=this.preview)==null?void 0:t.captureSnapshot())!=null?i:null},getModelEvidence:()=>this.getCurrentModelEvidence()}:null}renderWorkbenchPanel(t,i,r,s){var a,o;OQ({panel:t,summary:i,route:r,registeredPartCount:(o=(a=this.ps.store.getState().modelAssetProfiles[s])==null?void 0:a.registeredParts)==null?void 0:o.length})}renderSidebarContent(t,i){this.sidebarContent&&(this.clearRegisteredMatchPreview(),this.sidebarContent.empty(),this.renderKnowledgeControls(this.sidebarContent,t),this.renderRegisteredPartMatches(this.sidebarContent,t,i))}refreshWorkbenchPanel(){!this.workbenchPanel||!this.workbenchSummary||!this.workbenchRoute||!this.workbenchModelPath||(this.renderWorkbenchPanel(this.workbenchPanel,this.workbenchSummary,this.workbenchRoute,this.workbenchModelPath),this.renderSidebarContent(this.workbenchModelPath,this.workbenchSummary))}setupResizeHandles(t,i,r,s){let a=(c,f,d)=>{let h=0,u=0,m=p=>{f(p.clientX-h,p.clientY-u),h=p.clientX,u=p.clientY},_=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",_),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),h=p.clientX,u=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",_)})},o=200;a(t,c=>{o=Math.max(48,Math.min(400,o-c)),r.style.gridTemplateColumns=`1fr 4px ${o}px`},()=>{});let l=220;a(i,(c,f)=>{l=Math.max(120,Math.min(500,l-f)),s.style.gridTemplateRows=`1fr 4px ${l}px`},()=>{})}renderKnowledgeControls(t,i){let r=this.ps.store.getState().modelAssetProfiles[i],s=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-knowledge"});s.createDiv({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?j("workbench.indexReady"):r!=null&&r.reportNotePath?j("workbench.noteReady"):j("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(m0(),u0)).then(({generateKnowledgeNote:f})=>f(this.app,this.ps,{preview:this.createKnowledgePreviewAdapter()})).catch(f=>{console.error("[AI3D] Generate knowledge note failed:",f)}).finally(()=>{o.disabled=!1,this.refreshWorkbenchPanel()})});let l=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})})}renderRegisteredPartMatches(t,i,r){let s=this.loadGeneration,a=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-registered"}),o=a.createDiv({cls:"ai3d-direct-workbench-control-head"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:j("directWorkbench.registeredLoading")}),c=a.createDiv({cls:"ai3d-direct-workbench-registered-body"}),f=m=>{l.setText(""),c.empty(),c.createDiv({cls:"ai3d-direct-workbench-empty",text:j(m)})},d=this.getCachedModelEvidence(i),h=d?sAe(d):null;if(!(h!=null&&h.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:j("directWorkbench.registeredLoading")});return}let u=nAe(r);if(u===null){f("directWorkbench.registeredUnavailable");return}this.registeredMatchPreviewTimer=window.setTimeout(()=>{this.registeredMatchPreviewTimer=null,!(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)&&Promise.all([Promise.resolve().then(()=>(m0(),u0)),Promise.resolve().then(()=>(h0(),HF)),Promise.resolve().then(()=>(Z$(),j$))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:_},{renderRegisteredPartMatchRow:p}])=>{var R;let g=this.ps.store.getState(),v=await m(this.app,g.modelAssetProfiles,i,{includeSidecars:!1,maxParts:ZTe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let T=this.ps.store.getState().modelAssetProfiles[i],E=_({modelPath:i,profile:T,preview:r,evidence:h,registeredParts:v}).parts.filter(M=>{var y;return(y=M.registeredMatches)==null?void 0:y.length}).sort((M,y)=>{var C,D,w,G,O,N;return((w=(D=(C=y.registeredMatches)==null?void 0:C[0])==null?void 0:D.matchScore)!=null?w:0)-((N=(O=(G=M.registeredMatches)==null?void 0:G[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(E.length===0){f("directWorkbench.registeredEmpty");return}l.setText(Ki("directWorkbench.registeredCount",{count:String(E.length)})),c.empty();let A=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of E){let y=(R=M.registeredMatches)==null?void 0:R[0];if(!y)continue;let D=p(A,M.name,y).querySelector("[data-ai3d-action='open-registered-part']");D instanceof HTMLButtonElement&&D.addEventListener("click",()=>{let w=D.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let G=this.app.vault.getAbstractFileByPath(w);G instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(G,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},u)}async createPreviewWithFallback(t,i,r,s,a,o,l){gi(l);let c=await Kp(p0,{surface:"direct-view",modelPath:o},t,a);try{gi(l)}catch(h){throw c.preview.destroy(),h}let f;try{f=await r,gi(l)}catch(h){throw c.preview.destroy(),h}this.applyRenderBudget(c.preview,f);let d;try{d=await i,gi(l)}catch(h){throw c.preview.destroy(),h}try{let h=await c.preview.loadModel(d,s.ext,u=>po(this.app,u,{signal:l.signal}),s.path,l);return gi(l),{preview:c.preview,summary:h,route:c.route}}catch(h){if(c.preview.destroy(),Sf(h)||c.route.backend!=="three")throw h;gi(l),console.warn("[AI3D] Three direct view failed; falling back to Babylon:",h);let u={...a,allowWorkbenchFeaturesOnThree:!1,rendererRollout:"babylon-safe",useThreeRenderer:!1},m=await Kp(p0,{surface:"direct-view-fallback",modelPath:o},t,u);this.applyRenderBudget(m.preview,f);try{gi(l);let _=await m.preview.loadModel(d,s.ext,p=>po(this.app,p,{signal:l.signal}),s.path,l);return gi(l),{preview:m.preview,summary:_,route:m.route}}catch(_){throw m.preview.destroy(),Sf(_)?_:$Te(h)?h:_}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=kQ(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var sJ={};Fe(sJ,{AI3DSettingTab:()=>a1});function hAe(){switch(s1==null?void 0:s1.platform){case"win32":return{python:"Path to python executable",freecad:"Path to FreeCADCmd.exe",obj2gltf:"Path to obj2gltf.cmd",fbx2gltf:"Path to FBX2glTF.exe"};case"darwin":return{python:"Path to python3",freecad:"Path to FreeCADCmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};case"linux":return{python:"Path to python3",freecad:"Path to freecadcmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};default:return{python:"Path to python executable",freecad:"Path to FreeCAD command",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"}}}var Kt,s1,a1,aJ=I(()=>{"use strict";Kt=require("obsidian");D0();_n();ua();rr();s1=sm();a1=class extends Kt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),E_(this.plugin.getSettings().locale),this.diagnosticsEl=null,this.addTitle(t),this.buildLanguageSection(t),this.buildFoldersSection(t),this.buildBehaviorSection(t),this.buildKnowledgeGenerationSection(t),this.buildConvertersSection(t),this.buildPerformanceSection(t)}addTitle(t){new Kt.Setting(t).setName(j("settings.title")).setHeading()}createSecondaryMenu(t,i,r){let s=t.createEl("details",{cls:"ai3d-settings-secondary-menu"});s.createEl("summary",{cls:"ai3d-settings-secondary-menu-summary",text:i});let a=s.createDiv({cls:"ai3d-settings-secondary-menu-body"});return a.createEl("p",{cls:"setting-item-description",text:r}),a}resetCommandDiagnostics(){this.diagnosticsEl&&(this.diagnosticsRunId++,this.diagnosticsEl.empty(),this.diagnosticsEl.createEl("p",{text:j("settings.diagnostics.idle")}))}buildLanguageSection(t){new Kt.Setting(t).setName(j("settings.language")).setHeading(),new Kt.Setting(t).setName(j("settings.language")).setDesc(j("settings.language.desc")).addDropdown(i=>i.addOption("en","English").addOption("zh-CN","\u7B80\u4F53\u4E2D\u6587").setValue(this.plugin.getSettings().locale).onChange(r=>{this.plugin.updateSettings({locale:r}),this.display()}))}buildFoldersSection(t){new Kt.Setting(t).setName(j("settings.folders")).setHeading(),new Kt.Setting(t).setName(j("settings.sourceModelFolder")).setDesc(j("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder($c.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new Kt.Setting(t).setName(j("settings.auxiliaryFileFolder")).setDesc(j("settings.auxiliaryFileFolder.desc")).addText(i=>i.setPlaceholder(j("settings.auxiliaryFileFolder.placeholder")).setValue(this.plugin.getSettings().auxiliaryFileFolder).onChange(r=>{this.plugin.updateSettings({auxiliaryFileFolder:r})})),new Kt.Setting(t).setName(j("settings.reportFolder")).setDesc(j("settings.reportFolder.desc")).addText(i=>i.setPlaceholder($c.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new Kt.Setting(t).setName(j("settings.partFolder")).setDesc(j("settings.partFolder.desc")).addText(i=>i.setPlaceholder($c.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new Kt.Setting(t).setName(j("settings.snapshotFolder")).setDesc(j("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder($c.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new Kt.Setting(t).setName(j("settings.behavior")).setHeading(),new Kt.Setting(t).setName(j("settings.autoGenerateKnowledgeNotes")).setDesc(j("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new Kt.Setting(t).setName(j("settings.annotationPreviewMode")).setDesc(j("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",j("settings.annotationPreviewMode.plainText")).addOption("markdown",j("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new Kt.Setting(t).setName(j("settings.annotationDisplayMode")).setDesc(j("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",j("settings.annotationDisplayMode.snippet")).addOption("surface",j("settings.annotationDisplayMode.surface")).addOption("dot",j("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new Kt.Setting(t).setName(j("settings.previewRendererRollout")).setDesc(j("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",j("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",j("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",j("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new Kt.Setting(t).setName(j("settings.useThreeRenderer")).setDesc(j("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new Kt.Setting(t).setName(j("settings.experimentalThreeWorkbench")).setDesc(j("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new Kt.Setting(t).setName(j("settings.autoRotateDefault")).setDesc(j("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new Kt.Setting(t).setName(j("settings.snapshotNaming")).setDesc(j("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",j("settings.snapshotNaming.modelName")).addOption("timestamp",j("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new Kt.Setting(t).setName(j("settings.logLevel")).setDesc(j("settings.logLevel.desc")).addDropdown(i=>i.addOption("debug","Debug").addOption("info","Info").addOption("warn","Warn").addOption("error","Error").setValue(this.plugin.getSettings().logLevel).onChange(r=>{this.plugin.updateSettings({logLevel:r})}))}buildKnowledgeGenerationSection(t){new Kt.Setting(t).setName(j("settings.knowledgeGeneration")).setHeading(),new Kt.Setting(t).setName(j("settings.analysisMode")).setDesc(j("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",j("settings.analysisMode.local")).addOption("hybrid",j("settings.analysisMode.hybrid")).addOption("remote",j("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new Kt.Setting(t).setName(j("settings.serviceBaseUrl")).setDesc(j("settings.serviceBaseUrl.desc")).addText(i=>i.setPlaceholder("Local draft service URL").setValue(this.plugin.getSettings().serviceBaseUrl).onChange(r=>{this.plugin.updateSettings({serviceBaseUrl:r.trim()})})),new Kt.Setting(t).setName(j("settings.sendGeometrySummaryToRemote")).setDesc(j("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new Kt.Setting(t).setName(j("settings.sendPreviewImagesToRemote")).setDesc(j("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new Kt.Setting(t).setName(j("settings.sendRawModelToRemote")).setDesc(j("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new Kt.Setting(t).setName(j("settings.converters")).setHeading(),xr()){t.createEl("p",{cls:"setting-item-description",text:j("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,j("settings.converterMenu"),j("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,j("settings.environmentInspector"),j("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new Kt.Setting(t).setName(j("settings.enableCad")).setDesc(j("settings.enableCad.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("freecad");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"freecad"])):a.filter(l=>l!=="freecad");this.plugin.updateSettings({enabledConverterIds:o})})}),new Kt.Setting(t).setName(j("settings.enableObj2gltf")).setDesc(j("settings.enableObj2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("obj2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"obj2gltf"])):a.filter(l=>l!=="obj2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new Kt.Setting(t).setName(j("settings.preferObj2gltf")).setDesc(j("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new Kt.Setting(t).setName(j("settings.enableFbx2gltf")).setDesc(j("settings.enableFbx2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("fbx2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"fbx2gltf"])):a.filter(l=>l!=="fbx2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new Kt.Setting(t).setName(j("settings.enableMesh")).setDesc(j("settings.enableMesh.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("assimp");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"assimp"])):a.filter(l=>l!=="assimp");this.plugin.updateSettings({enabledConverterIds:o})})}),new Kt.Setting(t).setName(j("settings.enableSldprt")).setDesc(j("settings.enableSldprt.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("sldprt");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"sldprt"])):a.filter(l=>l!=="sldprt");this.plugin.updateSettings({enabledConverterIds:o})})})}buildConverterPaths(t){let i=hAe();new Kt.Setting(t).setName(j("settings.paths")).setHeading(),new Kt.Setting(t).setName(j("settings.pythonCmd")).setDesc(j("settings.pythonCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().freecadCommand).onChange(s=>{this.plugin.updateSettings({freecadCommand:s.trim()}),this.resetCommandDiagnostics()})),new Kt.Setting(t).setName(j("settings.freecadCmd")).setDesc(j("settings.freecadCmd.desc")).addText(r=>r.setPlaceholder(i.freecad).setValue(this.plugin.getSettings().freecadcmdCommand).onChange(s=>{this.plugin.updateSettings({freecadcmdCommand:s.trim()}),this.resetCommandDiagnostics()})),new Kt.Setting(t).setName(j("settings.obj2gltfCmd")).setDesc(j("settings.obj2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.obj2gltf).setValue(this.plugin.getSettings().obj2gltfCommand).onChange(s=>{this.plugin.updateSettings({obj2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new Kt.Setting(t).setName(j("settings.fbx2gltfCmd")).setDesc(j("settings.fbx2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.fbx2gltf).setValue(this.plugin.getSettings().fbx2gltfCommand).onChange(s=>{this.plugin.updateSettings({fbx2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new Kt.Setting(t).setName(j("settings.assimpCmd")).setDesc(j("settings.assimpCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().assimpCommand).onChange(s=>{this.plugin.updateSettings({assimpCommand:s.trim()}),this.resetCommandDiagnostics()}))}buildDiagnostics(t){new Kt.Setting(t).setName(j("settings.diagnostics")).setDesc(j("settings.diagnostics.desc")).addButton(r=>r.setButtonText(j("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(j("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(j("settings.diagnostics.checkNow")),r.setDisabled(!1),new Kt.Notice(j("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new Kt.Setting(t).setName(j("settings.performance")).setHeading(),new Kt.Setting(t).setName(j("settings.canvasHeight")).setDesc(j("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new Kt.Setting(t).setName(j("settings.autoRotateSpeed")).setDesc(j("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new Kt.Setting(t).setName(j("settings.renderQuality")).setDesc(j("settings.renderQuality.desc")).addDropdown(i=>i.addOption("low","Low").addOption("medium","Medium").addOption("high","High").setValue(this.plugin.getSettings().renderQuality).onChange(r=>{this.plugin.updateSettings({renderQuality:r})})),new Kt.Setting(t).setName(j("settings.renderScale")).setDesc(j("settings.renderScale.desc")).addSlider(i=>i.setLimits(.25,2,.25).setValue(this.plugin.getSettings().renderScale).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({renderScale:r})}))}async renderCommandDiagnostics(t){let i=++this.diagnosticsRunId;t.empty(),t.createEl("p",{text:j("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(Ad(),NF)),a=await s(this.plugin.getSettings());if(i===this.diagnosticsRunId){t.empty();for(let o of a)this.renderCommandStatus(t,o,r)}}renderCommandStatus(t,i,r){var o;let s=t.createDiv({cls:"ai3d-settings-status-block"});s.createEl("strong",{text:`${i.label}: ${i.available?j("settings.diagnostics.available"):j("settings.diagnostics.notFound")}`});let a=[`${j("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${j("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${j("settings.diagnostics.resolvedPathLabel")}: ${i.resolvedPath}`:"",i.detail].filter(Boolean);for(let l of a)s.createDiv({text:l});for(let l of(o=i.dependencyChecks)!=null?o:[])this.renderDependencyCheck(s,l)}renderDependencyCheck(t,i){let r=(()=>{switch(i.kind){case"cad-python":return j("settings.diagnostics.cadPythonCheck");case"mesh-python":return j("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return j("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return j("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return j("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?j("settings.diagnostics.selfCheckOk"):j("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${j("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function lJ(n){let e=new Map;for(let[t,i]of Object.entries(n))for(let r of i.annotations)if(r.headingRef&&r.id){let s=Nl(r.headingRef);if(!s)continue;let a=e.get(s);a||(a=[],e.set(s,a)),a.push({pinId:r.id,modelPath:t,color:r.color})}return e}function cJ(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Nl(t.headingRef))return!0;return!1}var o1=I(()=>{"use strict";fE()});function Ho(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=l1[n])!=null?i:l1.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function Fl(n,e,t=.02){let i=(1-t*(n+1))/n,r=(1-t*(e+1))/e,s=[];for(let a=0;a({path:i.path,position:[-t/2+r*e,0,0],color:i.color,wireframe:i.wireframe}))}function f1(n,e){return n.map((t,i)=>{let r=2*Math.PI*i/n.length;return{path:t.path,position:[Math.cos(r)*e,0,Math.sin(r)*e],color:t.color,wireframe:t.wireframe}})}var l1,eu=I(()=>{"use strict";l1={iso:{alpha:Math.PI/4,beta:Math.PI/3},front:{alpha:0,beta:Math.PI/2},side:{alpha:Math.PI/2,beta:Math.PI/2},top:{alpha:0,beta:.01},back:{alpha:Math.PI,beta:Math.PI/2},"3/4":{alpha:Math.PI/6,beta:Math.PI/3.5}}});var fJ,dJ=I(()=>{"use strict";eu();fJ={name:"compare",description:"Side-by-side model comparison (2-4 models)",minModels:2,maxModels:4,compute(n,e){if(n.length<2||n.length>4)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=uE(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=Fl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Ho(i),viewport:o[f]}));return{placements:r,cells:l}}}});var hJ,uJ=I(()=>{"use strict";eu();hJ={name:"showcase",description:"Single model viewed from multiple angles",minModels:1,maxModels:1,compute(n,e){if(n.length<1)return null;let t=Number(e.angles)||4,i=Number(e.radius)||2.5,r=[{path:n[0].path,position:[0,0,0],color:n[0].color,wireframe:n[0].wireframe}],s=t>=6?["front","side","top","back","iso","3/4"]:["iso","front","side","top"],a=s.length<=4?2:3,o=Math.ceil(s.length/a),l=Fl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Ho(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var mJ,pJ=I(()=>{"use strict";eu();mJ={name:"explode",description:"Spatial arrangement of parts (3-8 models in a ring)",minModels:3,maxModels:8,compute(n,e){if(n.length<3||n.length>8)return null;let t=Number(e.radius)||8,i=e.angle||"iso",r=f1(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=Fl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Ho(i),viewport:o[f]}));return{placements:r,cells:l}}}});var _J,gJ=I(()=>{"use strict";eu();_J={name:"timeline",description:"Horizontal progression of models (2-6 models in a strip)",minModels:2,maxModels:6,compute(n,e){if(n.length<2||n.length>6)return null;let t=Number(e.spacing)||6,i=e.angle||"3/4",r=uE(n,t),s=c1(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Ho(i),viewport:s[l]}));return{placements:r,cells:a}}}});function d1(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((h,u)=>{var m;return h+((m=u.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let h of n){let m=((f=h.weight)!=null?f:1)/s*(1-t*(n.length+1));e==="horizontal"?a.push({x:t+o,y:t,w:m,h:1-2*t}):a.push({x:t,y:t+o,w:1-2*t,h:m}),o+=m+t}let l=[],c=[];for(let h=0;h{"use strict";vJ={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var EJ,SJ=I(()=>{"use strict";eu();EJ={name:"gallery",description:"All models in one scene, single camera (no cell limit)",minModels:1,maxModels:32,compute(n,e){if(n.length===0)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=Number(e.cols)||0,s=r>0?r:Math.ceil(Math.sqrt(n.length)),a=Math.ceil(n.length/s),o=n.map((f,d)=>{let h=d%s,u=Math.floor(d/s),m=(h-(s-1)/2)*t,_=(u-(a-1)/2)*t;return{path:f.path,position:[m,0,_],color:f.color,wireframe:f.wireframe}}),l=Fl(1,1,0),c=[{modelIndex:0,camera:Ho(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function l_(n){TJ.set(n.name,n)}function u1(n){return TJ.get(n)}var TJ,AJ=I(()=>{"use strict";dJ();uJ();pJ();gJ();h1();SJ();eu();h1();TJ=new Map;l_(fJ);l_(hJ);l_(mJ);l_(_J);l_(vJ);l_(EJ)});function mAe(){return typeof activeWindow=="undefined"?window:activeWindow}function mE(n){return _Ae.schedule(n)}var m1,pAe,_Ae,p1=I(()=>{"use strict";m1=class{constructor(e=1,t=0){this.maxActive=e;this.settleDelayMs=t;this.active=0;this.drainTimer=null;this.queue=[]}get activeCount(){return this.active}get queuedCount(){return this.queue.length}schedule(e){return new Promise((t,i)=>{this.queue.push({run:e,resolve:t,reject:i}),this.drain()})}drain(){if(this.drainTimer===null)for(;this.active0;){let e=this.queue.shift();if(!e)return;this.active+=1,Promise.resolve().then(e.run).then(e.resolve,e.reject).finally(()=>{this.active-=1,this.scheduleNextDrain()})}}scheduleNextDrain(){if(this.queue.length!==0){if(this.settleDelayMs<=0){this.drain();return}this.drainTimer===null&&(this.drainTimer=mAe().setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},pAe=75,_Ae=new m1(1,pAe)});var IJ={};Fe(IJ,{registerCodeBlockProcessor:()=>vAe,registerGridCodeBlockProcessor:()=>SAe});async function RJ(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(a0(),s0));return e(n)}async function bJ(n,e,t,i){var d,h,u;let r=typeof e=="string"?{path:e}:e,s=Ef(n,r.path);if(!s)throw new Error(Ki("workbench.fileNotFound",{path:r.path}));let a=(h=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?h:"";if(!Ja(a))throw u_(a)?new Error(j("codeBlock.splatDisabled")):new Error(Ki("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Bl().join(", ")}));let o=(u=$l(n,s))!=null?u:void 0,l=Zh(n,t),c=await Qp({path:s,absolutePath:o,preferConversionExts:$p(t),conversionManager:()=>RJ(t),convertedAssetCache:i,conversionOutputRoot:l}),f=nE(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function gAe(n,e,t,i){let r=[];for(let s of e.models){let a=await bJ(n,s,t,i);r.push(a.model)}return{...e,models:r}}function MJ(n){xr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("codeBlock.mobileHint")})}function vAe(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var y,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let D=JSON.parse(o);l=EAe(D)}catch(D){let w=s.createDiv({cls:"ai3d-json-error"}),G=String(D).match(/position\s+(\d+)/),O=Ki("codeBlock.jsonParseError",{error:String(D)});if(G){let N=parseInt(G[1],10),B=o.substring(0,N).split(` -`);O+=Ki("codeBlock.jsonParseLine",{line:String(B.length)})}w.createEl("pre",{text:O});return}else l={models:[{path:o}]};if(!l.models||l.models.length===0){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsInConfig")});return}l.models.length>1&&console.warn(`[AI3D] \`\`\`3d only supports one model; ${l.models.length-1} additional models ignored. Use \`\`\`3dgrid for multi-model.`);let f=l.models[0],d=Ef(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:Ki("workbench.fileNotFound",{path:f.path})});return}let h=(C=(y=d.split(".").pop())==null?void 0:y.toLowerCase())!=null?C:"";if(!Ja(h)){s.createDiv({cls:"ai3d-inline-empty",text:u_(h)?j("codeBlock.splatDisabled"):Ki("codeBlock.unsupportedFormat",{ext:`.${h}`,formats:Bl().join(", ")})});return}let u=e(),m=s.createDiv({cls:"ai3d-preview-host"});l.height&&m.style.setProperty("--min-height",typeof l.height=="number"?`${l.height}px`:l.height),l.width&&m.style.setProperty("--max-width",typeof l.width=="number"?`${l.width}px`:l.width);let _=m.createEl("canvas",{cls:"ai3d-canvas-full"});Jp(_,"inline",d),m.appendChild(_);let p=null,g=null,v=!0,T=!1,S=!1;e_(_,()=>T?null:p);let E=tE(s,m,n,()=>p,()=>d,()=>{T||(T=!0,A.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,g){let D=m.querySelector(".ai3d-annotation-overlay");D&&D.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});MJ(s);let A=new MutationObserver(()=>{T||s.contains(m)||(T=!0,A.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null)});A.observe(s,{childList:!0});async function R(){if(S||T||!d)return;S=!0;let D=qh(m),w=async(G,O)=>{if(O.length===0||!CM(G))return;let N=G.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(l0(),o0)),Promise.resolve().then(()=>(f0(),c0))]);if(T||p!==G||!m.isConnected)return;g=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:u.annotationPreviewMode,displayMode:u.annotationDisplayMode}),E.showAnnotateButton(),E.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{D.setPhaseKey("loading.preparingModel"),await mE(async()=>{var oe,ve,ie,ue,Pe,me,be;if(T||!m.isConnected){D.hide();return}let G=(oe=$l(n,d))!=null?oe:void 0,O=Zh(n,u);D.setPhaseKey("loading.preparingModel");let N=await Qp({path:d,absolutePath:G,preferConversionExts:$p(u),conversionManager:()=>RJ(u),convertedAssetCache:t,conversionOutputRoot:O}),B=nE(N),V=n_(n,B.path,u),Q=po(n,B.path);V.catch(()=>{}),Q.catch(()=>{});let K=(ve=i==null?void 0:i(d))!=null?ve:[],J={ext:B.ext,annotationMode:K.length>0?"readonly":"none",rendererRollout:u.previewRendererRollout,useThreeRenderer:u.useThreeRenderer},{preview:z}=await Kp(xJ,{surface:"code-block",modelPath:d},_,J);p=z;let Y=await V;(ie=p.setRenderQuality)==null||ie.call(p,Y.renderQuality,Y.renderScale),E.syncCapabilities(),D.setPhaseKey("loading.loadingModel");let de=await Q,ge=async De=>po(n,De);if(T){D.hide();return}let Ue=await p.loadModel(de,B.ext,ge,B.path);if(D.setProgress(100),aE(m,Ue),T){D.hide();return}((ue=l.scene)==null?void 0:ue.autoRotate)===void 0&&u.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:u.autoRotateSpeed}),p.applyConfig(l),E.syncCapabilities(),h==="stl"&&f.color&&((Pe=p.setSTLColor)==null||Pe.call(p,f.color)),h==="stl"&&f.wireframe!==void 0&&((me=p.setWireframe)==null||me.call(p,f.wireframe)),(be=p.hasAnimations)!=null&&be.call(p)&&E.showAnimButton(),D.hide(),w(p,K)})}catch(G){T=!0,A.disconnect(),M.disconnect(),D.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=rE(G);iE(G)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",G),sE(m,O)}}let M=new IntersectionObserver(D=>{for(let w of D)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function EAe(n){if(typeof n=="string")return{models:[{path:n}]};if(typeof n!="object"||n===null)return{models:[]};let e=n;return typeof e.path=="string"?{models:[{path:e.path,color:e.color,wireframe:e.wireframe}],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}:{models:Array.isArray(e.models)?e.models.filter(i=>{let r=typeof i=="string"?i:i&&typeof i=="object"&&"path"in i?i.path:void 0;return typeof r=="string"&&r.length>0}).map(i=>{if(typeof i=="string")return{path:i};let r=i;return{path:r.path,color:r.color,wireframe:r.wireframe}}):[],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}}function SAe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var R,M,y,C,D,w,G,O;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(N){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(N)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(M=(R=o.models)==null?void 0:R.length)!=null?M:1),c=(w=(y=o.models)==null?void 0:y[0])!=null?w:(D=(C=o.sections)==null?void 0:C[0])==null?void 0:D.models[0],f=typeof c=="string"?c:(G=c==null?void 0:c.path)!=null?G:"",d=r.createDiv({cls:"ai3d-grid-host"}),h=d.createEl("canvas");if(yQ(h),d.appendChild(h),typeof o.rowHeight=="number"){let N=o.preset==="compose"?1:Math.ceil(l/((O=o.columns)!=null?O:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*N}px`)}let u=null,m=!1,_=!1,p=!1,g=0,v=null,T=null;CQ(h,()=>m?null:u);let S=tE(r,d,n,()=>u,()=>f,()=>{m||(m=!0,v==null||v.disconnect(),T==null||T.disconnect(),E(),d.remove())},e);MJ(r);function E(){g+=1,p=!1,_=!1,u==null||u.destroy(),u=null,S.syncCapabilities()}v=new MutationObserver(()=>{m||r.contains(d)||(m=!0,v==null||v.disconnect(),T==null||T.disconnect(),E())}),v.observe(r,{childList:!0});async function A(){if(_||p||m)return;p=!0;let N=++g,B=qh(d);B.setPhaseKey("codeBlock.renderingGrid"),B.setProgress(-1);try{await mE(async()=>{var de,ge,Ue,oe,ve,ie,ue,Pe,me,be;if(m||N!==g||!d.isConnected){B.hide();return}let V=e(),Q=[];for(let De of(de=o.models)!=null?de:[]){let ut=await bJ(n,De,V,t);Q.push(ut)}let K=Q.map(De=>De.model);f=(Ue=(ge=Q[0])==null?void 0:ge.sourcePath)!=null?Ue:f;let{renderer:J}=await mF(xJ,{surface:"3dgrid",preset:(oe=o.preset)!=null?oe:"compare",modelCount:(ie=(ve=o.models)==null?void 0:ve.length)!=null?ie:0},h);if(m||N!==g||!d.isConnected){J.destroy(),B.hide();return}u=J,S.syncCapabilities();let z=u,Y=async De=>po(n,De);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeRequiresSections")}),u.destroy(),u=null;return}let De=[];for(let Ye of o.sections)try{if(!f){let Qt=Ye.models[0];if(Qt){let Pt=typeof Qt=="string"?Qt:Qt.path;f=(ue=Ef(n,Pt))!=null?ue:Pt}}let je=await gAe(n,Ye,V,t);De.push(je)}catch(je){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:je instanceof Error?je.message:String(je)}),z.destroy(),u=null;return}let ut=d1(De,(Pe=o.direction)!=null?Pe:"horizontal",Number((me=o.params)==null?void 0:me.gap)||.02,Ye=>typeof Ye=="string"?null:Ye,u1);if(!ut){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeNoValidSections")}),z.destroy(),u=null;return}await z.loadWithPreset(ut,Y)}else if(o.preset){let De=u1(o.preset);if(!De){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ki("codeBlock.unknownPreset",{preset:o.preset})}),z.destroy(),u=null;return}let ut=De.compute(K,(be=o.params)!=null?be:{});if(!ut){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ki("codeBlock.presetRequiresModels",{preset:o.preset,min:String(De.minModels),max:String(De.maxModels),count:String(K.length)})}),z.destroy(),u=null;return}await z.loadWithPreset(ut,Y)}else await z.loadModels(K,o,Y);if(m||N!==g){B.hide();return}_=!0,B.hide()})}catch(V){if(N!==g||m){B.hide();return}m=!0,v==null||v.disconnect(),T==null||T.disconnect(),B.hide(),u==null||u.destroy(),u=null,console.error("[AI3D Grid] Failed:",V),d.createDiv({cls:"ai3d-inline-empty",text:V instanceof Error?V.message:Ki("codeBlock.gridFailed",{reason:String(V)})})}finally{N===g&&(p=!1)}}T=new IntersectionObserver(N=>{N.some(V=>V.isIntersecting||V.intersectionRatio>0)?A():(_||p)&&E()},{rootMargin:"200px"}),T.observe(d)}}}var xJ,yJ=I(()=>{"use strict";eo();bM();Kh();_s();AJ();vF();kM();EF();WM();HM();zM();qp();_n();oE();ua();On();YM();p1();qM();xJ=qi("inline-code-block")});var DJ={};Fe(DJ,{registerLazyCodeBlockProcessor:()=>AAe,registerLazyGridCodeBlockProcessor:()=>xAe});function CJ(){return v0!=null||(v0=Promise.resolve().then(()=>(yJ(),IJ))),v0}function PJ(n){return(e,t,i)=>{let r=cl("ai3d-preview-host ai3d-code-block-lazy");r.setAttribute("aria-busy","true"),t.appendChild(r);let s=async()=>{if(r.isConnected)try{let o=await n();if(!r.isConnected)return;r.remove(),await o(e,t,i)}catch(o){console.warn("[AI3D] Failed to load inline code block runtime:",o);let l=r.isConnected?r:cl();r.isConnected||t.appendChild(l),l.classList.remove("ai3d-preview-host"),l.classList.add("ai3d-inline-empty"),l.removeAttribute("aria-busy"),l.textContent="Ai3d inline preview failed to load."}};if(typeof IntersectionObserver=="undefined"){s();return}let a=new IntersectionObserver(o=>{o.some(l=>l.isIntersecting||l.intersectionRatio>0)&&(a.disconnect(),s())},{rootMargin:TAe});a.observe(r)}}function AAe(n,e,t,i){let r=null;return{id:"3d",handler:PJ(async()=>(r!=null||(r=CJ().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function xAe(n,e,t){let i=null;return{id:"3dgrid",handler:PJ(async()=>(i!=null||(i=CJ().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var v0,TAe,LJ=I(()=>{"use strict";cm();v0=null,TAe="240px"});var OJ={};Fe(OJ,{setupHeadingPinObserver:()=>bAe});function RAe(n){if(n.length===0)return"var(--interactive-accent)";if(n.length===1)return n[0];let e=100/n.length;return`linear-gradient(135deg, ${n.map((t,i)=>{let r=Math.round(i*e),s=Math.round((i+1)*e);return`${t} ${r}% ${s}%`}).join(", ")})`}function _1(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function E0(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${_1(t)}`).sort().join("||")}function bAe(n){let e=new Map,t=null,i=new Map,r="",s=!1,a=null,o=new Set,l=0,c=O=>{var V;if(O===t)return!1;let N=new Map,B=t===null;for(let[Q,K]of Object.entries(O)){let J=(V=K.annotations)!=null?V:[];N.set(Q,J),i.get(Q)!==J&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>lJ(O),d=O=>Nl(Array.from(O.childNodes).map(N=>{var B;return N.instanceOf(Element)&&N.classList.contains("ai3d-heading-pin-badge")?"":(B=N.textContent)!=null?B:""}).join(" ")),h=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},u=(O,N)=>{if(N.length===0){h(O);return}let B=_1(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&h(O),O.dataset.pinBound=B;let Q=O.createSpan({cls:"ai3d-heading-pin-badge"}),K=[...new Set(N.map(ge=>ge.color).filter(Boolean))],J=Q.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(J.style.background=RAe(K),J.title=N.length>1?j("headingPin.showMultiple"):j("headingPin.showSingle"),J.setAttribute("role","button"),J.setAttribute("tabindex","0"),N.length>1){let ge=Q.createSpan({cls:"ai3d-heading-pin-badge-count"});ge.textContent=`\xD7${N.length}`}let z=[...new Set(N.map(ge=>ln(ge.modelPath)))];Q.title=Ki("headingPin.linkedTo",{models:z.join(", ")});let Y=ge=>{ge==null||ge.stopPropagation(),ge==null||ge.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};J.addEventListener("click",ge=>{Y(ge)}),J.addEventListener("keydown",ge=>{ge.instanceOf(KeyboardEvent)&&(ge.key!=="Enter"&&ge.key!==" "||Y(ge))}),Q.addEventListener("click",ge=>{ge.stopPropagation()}),O.appendChild(Q);let de=()=>{for(let ge of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:ge.pinId}}))};O.addEventListener("mouseover",de),e.set(O,{badge:Q,handler:de,signature:B})},m=(O,N)=>{var V;let B=d(O);u(O,(V=N.get(B))!=null?V:[])},_=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){h(B);continue}let Q=(N=O.get(d(B)))!=null?N:[],K=_1(Q);(Q.length===0||V.signature!==K)&&u(B,Q)}},p=(O,N)=>{O.querySelectorAll(_E).forEach(B=>m(B,N))},g=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=E0(N),s=N.size>0,!s){_(N),D();return}C(),_(N),activeDocument.querySelectorAll(pE).forEach(V=>p(V,N))},v=0,T=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,g()},O)},S=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=E0(N);if(B!==r){if(r=B,s=N.size>0,!s){_(N),D();return}C(),T()}});n.onLayoutChange(()=>{!s&&f().size===0||T(200)});let E=O=>O.matches(pE)||O.matches(_E)?!0:!!O.querySelector(pE)||!!O.querySelector(_E),A=O=>O.isConnected&&E(O),R=O=>E(O),M=()=>{var B,V,Q,K,J,z;let O=Array.from(o);o.clear(),l=0;let N=f();_(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,_E)&&m(Y,N),(Q=(V=Y.querySelectorAll)==null?void 0:V.call(Y,_E))==null||Q.forEach(de=>m(de,N)),(K=Y.matches)!=null&&K.call(Y,pE)&&p(Y,N),(z=(J=Y.querySelectorAll)==null?void 0:J.call(Y,pE))==null||z.forEach(de=>p(de,N)));r=E0(N),s=N.size>0,s||D()},y=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&A(V)&&(o.add(V),N=!0);for(let V of Array.from(B.removedNodes))V.instanceOf(HTMLElement)&&R(V)&&(N=!0)}N&&!l&&(l=window.setTimeout(M,100))};function C(){a||(a=new MutationObserver(y),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function D(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{S(),D(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))h(O)});let w=n.getModelAssetProfiles();c(w);let G=f(w);r=E0(G),s=G.size>0,s&&(C(),T(500))}var pE,_E,NJ=I(()=>{"use strict";_n();fE();_s();o1();pE=".markdown-preview-view, .markdown-source-view",_E=[".markdown-preview-view h1",".markdown-preview-view h2",".markdown-preview-view h3",".markdown-preview-view h4",".markdown-preview-view h5",".markdown-preview-view h6",".cm-heading-1",".cm-heading-2",".cm-heading-3",".cm-heading-4",".cm-heading-5",".cm-heading-6",".cm-header-1",".cm-header-2",".cm-header-3",".cm-header-4",".cm-header-5",".cm-header-6"].join(", ")});function MAe(n){return n.includes("![[")}function S0(n){let e="";for(let t of n.iter()){if(!t)continue;let i=e?e+t:t;if(i.includes("![["))return!0;e=i.slice(-2)}return!1}function wJ(n,e){return Math.max(0,Math.min(e,n.length))}function FJ(n,e,t){if(n.length===0)return!1;let i=n.lineAt(wJ(n,e)),r=n.lineAt(wJ(n,t));for(let s=i.number;s<=r.number;s++)if(MAe(n.line(s).text))return!0;return!1}function T0(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=FJ(n.startState.doc,t,i)||FJ(n.state.doc,r,s))}),e}var g1=I(()=>{"use strict"});function BJ(n,e,t=512){let i=new Map;return{resolve(r){var a;if(i.has(r))return(a=i.get(r))!=null?a:null;let s=e(n,r);if(i.set(r,s),i.size>t){let o=i.keys().next().value;o!==void 0&&i.delete(o)}return s},clear(){i.clear()}}}var UJ=I(()=>{"use strict"});var kJ={};Fe(kJ,{ModelEmbedWidget:()=>A0,registerLivePreviewExtension:()=>yAe});function VJ(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v){var A,R;let T="state"in n?n.state.doc:n.doc,S=[];if(!S0(T))return S;let E=0;for(let M of T.iterLines()){let y=E+M.length+1;if(!M.includes("![[")){E=y;continue}let C=0;for(;C0&&M[D-1]==="\\"){C=D+"![[".length;continue}let w=M.indexOf("]]",D+"![[".length);if(w===-1)break;let O=M.slice(D+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(A=N.split(".").pop())==null?void 0:A.toLowerCase())!=null?R:"";if(!Ja(B)){C=w+2;continue}let V=400,Q=300;if(O.length>1){let J=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);J&&(V=parseInt(J[1],10),Q=parseInt(J[2],10))}let K=Ef(e,N);if(!K){C=w+2;continue}S.push(c_.Decoration.replace({widget:new A0(e,K,V,Q,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v),block:!0}).range(E+D,E+w+2)),C=w+2}E=y}return S}function GJ(n){return n.length===0?tu.RangeSet.empty:tu.RangeSet.of(n,!0)}function yAe(n,e,t,i){let r=tu.StateField.define({create(s){let a=e(),o=VJ(s,n,a.autoRotateDefault,a.enabledConverterIds,a.freecadCommand,a.obj2gltfCommand,a.fbx2gltfCommand,a.freecadcmdCommand,a.preferObj2gltfForObj,a.preferFbx2gltfForFbx,a.annotationPreviewMode,a.annotationDisplayMode,a.previewRendererRollout,a.useThreeRenderer,a.auxiliaryFileFolder,a.renderQuality,a.renderScale,t,i);return GJ(o)},update(s,a){if(a.docChanged){if(!T0(a))return s.map(a.changes);let o=e(),l=VJ(a.state,n,o.autoRotateDefault,o.enabledConverterIds,o.freecadCommand,o.obj2gltfCommand,o.fbx2gltfCommand,o.freecadcmdCommand,o.preferObj2gltfForObj,o.preferFbx2gltfForFbx,o.annotationPreviewMode,o.annotationDisplayMode,o.previewRendererRollout,o.useThreeRenderer,o.auxiliaryFileFolder,o.renderQuality,o.renderScale,t,i);return GJ(l)}return s.map(a.changes)},provide:s=>c_.EditorView.decorations.from(s)});return[tu.Prec.highest(r)]}var c_,tu,IAe,A0,WJ=I(()=>{"use strict";c_=require("@codemirror/view"),tu=require("@codemirror/state");eo();_s();HM();zM();cm();ua();_n();On();YM();_F();g1();p1();qM();IAe=qi("inline-live-preview"),A0=class extends c_.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.auxiliaryFileFolder=v;this.renderQuality=T;this.renderScale=S;this.convertedAssetCache=E;this.getAnnotations=A;this.preview=null;this.annotationMgr=null;this.readyObs=null;this.viewportObs=null;this.pollId=0;this.initStarted=!1;this.destroyed=!1;this.initGeneration=0;this.viewportReady=!1;this.zoomControl=null}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=xr(),i=cl("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=ih("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),Jp(r,"live-preview",this.modelPath),e_(r,()=>this.destroyed?null:this.preview),i.appendChild(r),this.zoomControl=FM(i,()=>this.preview);let a=qh(i),o=cl("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=cl("ai3d-mobile-mode-bar"),h=cl("ai3d-mobile-mode-hint");h.textContent=j("livePreview.mobileHint");let u=ih("button","ai3d-mobile-mode-btn");u.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),u.textContent=f?j("helper.scrollAction"):j("helper.interactAction"),u.classList.toggle("ai3d-btn-active",f),u.setAttribute("aria-label",f?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))};u.addEventListener("click",()=>{f=!f,m()}),m(),d.append(h,u),i.appendChild(d)}let l=()=>{this.destroyed||this.initStarted||this.viewportReady&&(!i.isConnected||r.clientWidth<=0||r.clientHeight<=0||(this.initStarted=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),this.initPreview(i,r,a,o,++this.initGeneration)))};this.readyObs=new ResizeObserver(()=>l()),this.readyObs.observe(i),this.readyObs.observe(r);let c=()=>{if(this.pollId||this.destroyed||this.initStarted)return;let f=0,d=()=>{this.pollId=0,!(this.destroyed||this.initStarted)&&(l(),!this.initStarted&&(++f>240||(this.pollId=window.requestAnimationFrame(d))))};this.pollId=window.requestAnimationFrame(d)};return typeof IntersectionObserver=="undefined"?(this.viewportReady=!0,c(),l()):(this.viewportObs=new IntersectionObserver(f=>{this.destroyed||this.initStarted||f.some(d=>d.isIntersecting||d.intersectionRatio>0)&&(this.viewportReady=!0,this.stopViewportWatch(),c(),l())},{rootMargin:"200px"}),this.viewportObs.observe(i)),i}stopReadyPoll(){this.pollId&&(window.cancelAnimationFrame(this.pollId),this.pollId=0)}async initPreview(t,i,r,s,a){var o;try{r.setPhaseKey("loading.preparingModel"),await mE(async()=>{var C,D,w,G,O,N,B,V,Q,K;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:h},{createNoteReader:u},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(kM(),xQ)),Promise.resolve().then(()=>(WM(),RQ)),Promise.resolve().then(()=>(bM(),oQ)),Promise.resolve().then(()=>(Kh(),dQ)),Promise.resolve().then(()=>(l0(),o0)),Promise.resolve().then(()=>(f0(),c0)),Promise.resolve().then(()=>(oE(),SF))]),_=(C=$l(this.app,this.modelPath))!=null?C:void 0;r.setPhaseKey("loading.preparingModel");let p=Zh(this.app,{auxiliaryFileFolder:this.auxiliaryFileFolder}),g=await l({path:this.modelPath,absolutePath:_,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(a0(),s0));return J({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(w=(D=this.getAnnotations)==null?void 0:D.call(this,this.modelPath))!=null?w:[],T={ext:g.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},S=n_(this.app,g.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),E=po(this.app,g.effectivePath);S.catch(()=>{}),E.catch(()=>{});let{preview:A}=await f(IAe,{surface:"live-preview",modelPath:this.modelPath},i,T);if(this.destroyed||a!==this.initGeneration){A.destroy();return}this.preview=A,(G=this.zoomControl)==null||G.sync();let R=await S;(N=(O=this.preview).setRenderQuality)==null||N.call(O,R.renderQuality,R.renderScale),r.setPhaseKey("loading.loadingModel");let M=await E;if(this.destroyed||a!==this.initGeneration){(B=this.preview)==null||B.destroy(),this.preview=null;return}let y=await this.preview.loadModel(M,g.effectiveExt,J=>po(this.app,J),g.effectivePath);if(this.destroyed||a!==this.initGeneration){(V=this.preview)==null||V.destroy(),this.preview=null,(Q=this.zoomControl)==null||Q.sync();return}if(m(t,y),(K=this.zoomControl)==null||K.sync(),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let J=this.preview.getAnnotationProvider();J.canvas&&(this.annotationMgr=new h(J,t,"readonly",v,void 0,u(this.app),void 0,{app:this.app,previewMode:this.annotationPreviewMode,displayMode:this.annotationDisplayMode}))}r.setProgress(100),r.hide()})}catch(l){if(this.destroyed||a!==this.initGeneration)return;(o=this.preview)==null||o.destroy(),this.preview=null,r.hide(),s.remove(),t.replaceChildren();let[{describeModelLoadFailure:c,isMissingConverterError:f},{renderModelLoadFailure:d}]=await Promise.all([Promise.resolve().then(()=>(qp(),gQ)),Promise.resolve().then(()=>(oE(),SF))]),h=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",h.message):console.error("[AI3D] Live Preview failed:",l),d(t,h)}finally{r.hide()}}destroy(){var t,i;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.zoomControl)==null||i.destroy(),this.zoomControl=null,this.preview&&(this.preview.destroy(),this.preview=null),this.initStarted=!1,this.viewportReady=!1}stopReadyWatch(){var t;(t=this.readyObs)==null||t.disconnect(),this.readyObs=null}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}ignoreEvent(){return!0}}});var XJ={};Fe(XJ,{registerLazyLivePreviewExtension:()=>PAe});function CAe(){return x0!=null||(x0=Promise.resolve().then(()=>(WJ(),kJ))),x0}function HJ(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T){var R,M;let S="state"in n?n.state.doc:n.doc,E=[];if(!S0(S))return E;let A=0;for(let y of S.iterLines()){let C=A+y.length+1;if(!y.includes("![[")){A=C;continue}let D=0;for(;D0&&y[w-1]==="\\"){D=w+"![[".length;continue}let G=y.indexOf("]]",w+"![[".length);if(G===-1)break;let N=y.slice(w+"![[".length,G).split("|"),B=N[0].trim(),V=(M=(R=B.split(".").pop())==null?void 0:R.toLowerCase())!=null?M:"";if(!Ja(V)){D=G+2;continue}let Q=400,K=300;if(N.length>1){let z=N[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);z&&(Q=parseInt(z[1],10),K=parseInt(z[2],10))}let J=v.resolve(B);if(!J){D=G+2;continue}E.push(f_.Decoration.replace({widget:new v1(e,J,Q,K,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,T),block:!0}).range(A+w,A+G+2)),D=G+2}A=C}return E}function zJ(n){return n.length===0?iu.RangeSet.empty:iu.RangeSet.of(n,!0)}function PAe(n,e,t,i,r){let s=BJ(n,Ef),a=()=>s.clear(),o=[n.vault.on("create",a),n.vault.on("delete",a),n.vault.on("rename",a)];r==null||r(()=>{for(let c of o)n.vault.offref(c)});let l=iu.StateField.define({create(c){let f=e(),d=HJ(c,n,f.autoRotateDefault,f.enabledConverterIds,f.freecadCommand,f.obj2gltfCommand,f.fbx2gltfCommand,f.freecadcmdCommand,f.preferObj2gltfForObj,f.preferFbx2gltfForFbx,f.annotationPreviewMode,f.annotationDisplayMode,f.previewRendererRollout,f.useThreeRenderer,f.auxiliaryFileFolder,f.renderQuality,f.renderScale,t,s,i);return zJ(d)},update(c,f){if(f.docChanged){if(!T0(f))return c.map(f.changes);let d=e(),h=HJ(f.state,n,d.autoRotateDefault,d.enabledConverterIds,d.freecadCommand,d.obj2gltfCommand,d.fbx2gltfCommand,d.freecadcmdCommand,d.preferObj2gltfForObj,d.preferFbx2gltfForFbx,d.annotationPreviewMode,d.annotationDisplayMode,d.previewRendererRollout,d.useThreeRenderer,d.auxiliaryFileFolder,d.renderQuality,d.renderScale,t,s,i);return zJ(h)}return c.map(f.changes)},provide:c=>f_.EditorView.decorations.from(c)});return[iu.Prec.highest(l)]}var f_,iu,x0,v1,YJ=I(()=>{"use strict";f_=require("@codemirror/view"),iu=require("@codemirror/state");eo();_s();g1();UJ();cm();x0=null;v1=class extends f_.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.auxiliaryFileFolder=v;this.renderQuality=T;this.renderScale=S;this.convertedAssetCache=E;this.getAnnotations=A;this.mountedWidget=null;this.mountedDom=null;this.viewportObs=null;this.destroyed=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=cl("ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy");return t.setAttribute("contenteditable","false"),t.style.setProperty("--ai3d-embed-height",`${this.height}px`),this.watchViewport(t),t}destroy(){var t,i;this.destroyed=!0,this.stopViewportWatch(),(t=this.mountedWidget)==null||t.destroy(),this.mountedWidget=null,(i=this.mountedDom)==null||i.remove(),this.mountedDom=null}ignoreEvent(){return!0}watchViewport(t){if(typeof IntersectionObserver=="undefined"){this.mount(t);return}this.viewportObs=new IntersectionObserver(i=>{this.destroyed||this.mountedWidget||i.some(r=>r.isIntersecting||r.intersectionRatio>0)&&(this.stopViewportWatch(),this.mount(t))},{rootMargin:"240px"}),this.viewportObs.observe(t)}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}async mount(t){let i;try{i=await CAe()}catch(a){console.warn("[AI3D] Failed to load Live Preview widget runtime:",a),!this.destroyed&&t.isConnected&&(t.textContent="Ai3d live preview failed to load.");return}let r=new i.ModelEmbedWidget(this.app,this.modelPath,this.width,this.height,this.autoRotate,this.enabledConverterIds,this.freecadCommand,this.obj2gltfCommand,this.fbx2gltfCommand,this.freecadcmdCommand,this.preferObj2gltfForObj,this.preferFbx2gltfForFbx,this.annotationPreviewMode,this.annotationDisplayMode,this.previewRendererRollout,this.useThreeRenderer,this.auxiliaryFileFolder,this.renderQuality,this.renderScale,this.convertedAssetCache,this.getAnnotations);if(this.destroyed||!t.isConnected){r.destroy();return}let s=r.toDOM();if(this.destroyed||!t.isConnected){r.destroy();return}this.mountedWidget=r,this.mountedDom=s,t.replaceWith(s)}}});var jJ={};Fe(jJ,{ModelFileSuggestModal:()=>E1});var KJ,E1,ZJ=I(()=>{"use strict";KJ=require("obsidian");eo();_n();E1=class extends KJ.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(j("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return Ja(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function qJ(n,e){return n==="three"?{backend:n,supportedFormats:DAe,fallbackRole:"Primary single-model preview path",capabilities:[...e],colorPipeline:"sRGB output, no tone mapping, PBR material preservation",fidelityNotes:["Direct GLB/GLTF/STL/PLY/OBJ are expected to preserve geometry scale and material color intent.","Workbench, grid, and SPLAT routes still keep Babylon fallback coverage."]}:{backend:n,supportedFormats:LAe,fallbackRole:"Capability and compatibility backend",capabilities:[...e],colorPipeline:"Babylon material pipeline with conservative fallback behavior",fidelityNotes:["3dgrid, conservative workbench, SPLAT, and converted workbench inputs remain on Babylon.","Babylon remains the rollback path when Three direct rendering is disabled."]}}function QJ(n){return n.backend==="three"?qJ("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"]):qJ("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"])}function $J(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var DAe,LAe,JJ=I(()=>{"use strict";Kh();DAe=["glb","gltf","stl","ply","obj"],LAe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var tee={};Fe(tee,{buildDiagnosticsReport:()=>WAe});function R0(n){return typeof n=="boolean"?n?"on":"off":typeof n=="number"?Number.isFinite(n)?String(n):"unknown":typeof n=="string"?n.length>0?n:"empty":"unknown"}function OAe(n){var i;let e=(i=n.split(/[\\/]/).pop())!=null?i:n,t=e.lastIndexOf(".");return t<=0||t===e.length-1?"":`.${e.slice(t+1).toLowerCase()}`}function ru(n,e,t){if(!n)return t;if(e)return n;let i=OAe(n);return i?``:""}function gE(n,e){return n?`set (${ru(n,e,"not set")})`:"not set"}function NAe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${R0(e.sendGeometrySummaryToRemote)}`,`preview refs ${R0(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function wAe(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function FAe(n){let e=n.lastKnowledgeGeneration;return e?e.status==="pending"?"pending or interrupted; rerun generation to replace the marker":e.status==="failed"?"failed; inspect console details and rerun after fixing the issue":e.warningCount>0?"completed with warnings":"none":"none"}function GAe(n){let e=new Set(n.enabledConverterIds);return BAe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":UAe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function kAe(n){let e=n.convertedAssetRecords;if(e.length===0)return"none";let t=new Set(e.map(r=>`${r.sourcePath}:${r.sourceExt}:${r.targetExt}`)).size,i=e.filter(r=>r.warnings.length>0).length;return[`${e.length} record(s) for ${t} source(s)`,"validated before reuse for cache version, converter identity, output presence, and source freshness",i>0?`${i} record(s) carry warning text`:""].filter(Boolean).join("; ")}function WAe(n){var c,f,d,h,u,m,_,p,g;let{manifest:e,state:t}=n,i=t.settings,r=wAe(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?fu({ext:(c=t.currentModelPath.split(".").pop())!=null?c:"",annotationMode:r!=null&&r.annotations.length?"readonly":"none",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:i.experimentalThreeWorkbench,rendererRollout:i.previewRendererRollout,useThreeRenderer:i.useThreeRenderer}):null,o=a?QJ(a):null,l=t.lastKnowledgeGeneration;return["# AI Model Workbench Diagnostics","",`Generated: ${(f=n.generatedAt)!=null?f:new Date().toISOString()}`,"","## Runtime","",`- Plugin version: ${e.version}`,`- Minimum Obsidian version: ${e.minAppVersion}`,`- Obsidian API version: ${eee.apiVersion}`,`- Platform: ${xr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${R0(i.useThreeRenderer)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${R0(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?$J(o):"no current model"}`,`- Route color pipeline: ${(d=o==null?void 0:o.colorPipeline)!=null?d:"no current model"}`,`- Render quality: ${i.renderQuality}`,`- Render scale: ${i.renderScale}`,"","## Current Model","",`- Path: ${ru(t.currentModelPath,s,"none")}`,`- Preview summary: ${t.modelPreview?`${t.modelPreview.meshCount} mesh(es), ${t.modelPreview.triangleCount.toLocaleString()} triangle(s), ${t.modelPreview.materialCount} material(s)`:"not captured"}`,`- Annotation count: ${(h=r==null?void 0:r.annotations.length)!=null?h:0}`,`- Registered part candidates: ${(m=(u=r==null?void 0:r.registeredParts)==null?void 0:u.length)!=null?m:0}`,`- Report note: ${gE(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${gE(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${gE(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${NAe(t)}`,`- Report folder: ${ru(i.reportFolder,s,"empty")}`,`- Part notes folder: ${ru(i.partFolder,s,"empty")}`,`- Snapshot folder: ${ru(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${FAe(t)}`,`- Last generated model: ${ru(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${gE(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${gE(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(_=l==null?void 0:l.partNoteCount)!=null?_:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(g=l==null?void 0:l.warningCount)!=null?g:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Auxiliary file folder: ${i.auxiliaryFileFolder.trim()?ru(i.auxiliaryFileFolder,s,"empty"):"default config folder"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${GAe(i)}`,`- Conversion cache status: ${kAe(t)}`,`- Conversion timeout: ${VAe}ms outer budget`,"- Converter safety: missing converters report their converter id; unsafe configured commands are rejected before execution; command paths are redacted.",`- Supported direct/model extensions: ${Bl().join(", ")}`,"","## Notes","","- Draft service URL and command paths are intentionally omitted from this report.",s?"- Vault-relative model and note paths are included because includeVaultPaths was requested.":"- Vault-relative model, report, index, and folder paths are redacted by default.","- Attach this report with the model format, console error, and reproduction steps when filing a bug.",""].join(` -`)}var eee,BAe,UAe,VAe,iee=I(()=>{"use strict";eee=require("obsidian");eo();JJ();IE();ua();BAe=[{id:"freecad",label:"Python/CadQuery",settingsKey:"freecadCommand"},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand"},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand"},{id:"assimp",label:"Python/trimesh",settingsKey:"assimpCommand"},{id:"freecadcmd",label:"FreeCADCmd",settingsKey:"freecadcmdCommand"}],UAe=/[;|&<>$`\r\n\t]/,VAe=3e5});var YAe={};Fe(YAe,{default:()=>b0});module.exports=fee(YAe);var Is=require("obsidian");C0();eo();F0();var nJ=require("obsidian");_n();bE();V0();var lAe=new Set(["glb","gltf","stl","ply","obj"]),cAe=10*1024*1024,_0=class extends nJ.FileView{constructor(t,i,r,s){super(t);this.getSettings=i;this.convertedAssetCache=r;this.ps=s;this.delegate=null;this.delegatePromise=null;this.closed=!1;this.manualLoadRequested=!1}getViewType(){return bd}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&await this.loadOrDeferFile(this.file,!0)}async onLoadFile(t){await this.loadOrDeferFile(t,!1)}async loadOrDeferFile(t,i){if(this.closed=!1,!this.delegate&&!this.manualLoadRequested&&fAe(t,i)){this.renderDeferredLoad(t);return}await this.loadFileNow(t)}async loadFileNow(t){let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0,ME(this.contentEl);let t=this.delegate;this.delegate=null,await(t==null?void 0:t.onClose())}async ensureDelegate(){return this.delegate?this.delegate:(this.delegatePromise||(this.delegatePromise=this.loadDelegate()),this.delegatePromise)}async loadDelegate(){this.contentEl.empty(),Md(this.contentEl),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:j("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(rJ(),iJ)),i=new t(this.leaf,this.getSettings,this.convertedAssetCache,this.ps);return i.contentEl=this.contentEl,i.file=this.file,this.delegatePromise=null,this.closed?(await i.onClose(),null):(this.delegate=i,i)}renderDeferredLoad(t){this.contentEl.empty(),Md(this.contentEl);let i=this.contentEl.createDiv({cls:"ai3d-inline-empty ai3d-direct-load-gate"});i.createDiv({cls:"ai3d-direct-load-gate-title",text:j("directView.deferredLoadTitle")}),i.createDiv({cls:"ai3d-direct-load-gate-message",text:j("directView.deferredLoadMessage")});let r=i.createDiv({cls:"ai3d-direct-load-gate-meta"});r.createSpan({text:t.name}),r.createSpan({text:dAe(t.stat.size)}),i.createEl("button",{cls:"ai3d-direct-load-gate-button",text:j("directView.deferredLoadButton")}).addEventListener("click",()=>{this.manualLoadRequested=!0,this.loadFileNow(t).finally(()=>{this.manualLoadRequested=!1})})}};function fAe(n,e){if(!e)return!1;let t=n.extension.toLowerCase();return lAe.has(t)?n.stat.size>=cAe:!0}function dAe(n){if(!Number.isFinite(n)||n<=0)return"0 B";let e=["B","KB","MB","GB"],t=n,i=0;for(;t>=1024&&i=100||i===0?0:t>=10?1:2;return`${t.toFixed(r)} ${e[i]}`}bE();var oJ=require("obsidian"),g0=class extends oJ.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.delegate=null;this.delegatePromise=null}display(){this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:"Loading AI model workbench settings..."}),this.ensureDelegate().then(t=>{t.containerEl=this.containerEl,t.display()}).catch(t=>{this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:`Failed to load AI Model Workbench settings: ${String(t)}`})})}hide(){var t;(t=this.delegate)==null||t.hide()}ensureDelegate(){var t;return this.delegate?Promise.resolve(this.delegate):((t=this.delegatePromise)!=null||(this.delegatePromise=Promise.resolve().then(()=>(aJ(),sJ)).then(({AI3DSettingTab:i})=>{let r=new i(this.app,this.plugin);return this.delegate=r,this.delegatePromise=null,r}).catch(i=>{throw this.delegatePromise=null,i})),this.delegatePromise)}};On();_n();o1();ua();var S1=qi("main"),HAe=700,zAe=2500;function vE(n,e){return()=>{n().catch(t=>{S1.error(`Command ${e} failed`,{error:String(t)}),new Is.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function XAe(n){let e=!1,t=null,i=null,r=window,s=()=>{var o;t!==null&&(window.clearTimeout(t),t=null),i!==null&&((o=r.cancelIdleCallback)==null||o.call(r,i),i=null)},a=()=>{e||(s(),n())};return t=window.setTimeout(()=>{t=null,r.requestIdleCallback?i=r.requestIdleCallback(a,{timeout:zAe}):t=window.setTimeout(a,0)},HAe),()=>{e=!0,s()}}var b0=class extends Is.Plugin{constructor(){super(...arguments);this.unloaded=!1;this.headingPinObserverStarted=!1;this.headingLinkedProfilesRef=null;this.headingLinkedProfilesResult=!1}getSettings(){return this.ps.store.getState().settings}updateSettings(t){this.ps.updateSettings(t),pF(this.getSettings().logLevel),E_(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=F1(this),await this.ps.load(),this.convertedAssetCache=b1(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),pF(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}E_(this.getSettings().locale),this.addRibbonIcon("box",j("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:j("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:j("main.commandGenerateNote"),callback:vE(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:j("main.commandOpenKnowledgeIndex"),callback:vE(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:j("main.commandClearConversionCache"),callback:vE(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:j("main.commandCheckConverters"),callback:vE(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:j("main.commandCopyDiagnostics"),callback:vE(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new g0(this.app,this)),this.registerView(bd,l=>new _0(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Bl(),bd);let t=l=>{var c,f;return(f=(c=this.ps.store.getState().modelAssetProfiles[l])==null?void 0:c.annotations)!=null?f:[]},{registerLazyCodeBlockProcessor:i,registerLazyGridCodeBlockProcessor:r}=await Promise.resolve().then(()=>(LJ(),DJ)),s=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t);this.registerMarkdownCodeBlockProcessor(s.id,s.handler);let a=r(this.app,()=>this.getSettings(),this.convertedAssetCache);this.registerMarkdownCodeBlockProcessor(a.id,a.handler),this.register(this.ps.store.subscribe(()=>{this.unloaded||this.headingPinObserverStarted||!this.hasHeadingLinkedAnnotations()||this.startHeadingPinObserver()})),this.app.workspace.onLayoutReady(()=>{this.unloaded||this.register(XAe(()=>{this.registerLivePreviewExtension(t),this.hasHeadingLinkedAnnotations()&&this.startHeadingPinObserver()}))})}onunload(){this.unloaded=!0,this.ps.dispose()}async startHeadingPinObserver(){if(!(this.unloaded||this.headingPinObserverStarted)){this.headingPinObserverStarted=!0;try{let{setupHeadingPinObserver:t}=await Promise.resolve().then(()=>(NJ(),OJ));if(this.unloaded)return;t({subscribeStore:i=>this.ps.store.subscribe(i),getModelAssetProfiles:()=>this.ps.store.getState().modelAssetProfiles,registerCleanup:i=>this.register(i),onLayoutChange:i=>{this.registerEvent(this.app.workspace.on("layout-change",i))}})}catch(t){this.headingPinObserverStarted=!1,console.warn("[AI3D] Failed to start heading pin observer:",t)}}}hasHeadingLinkedAnnotations(){let t=this.ps.store.getState().modelAssetProfiles;return this.headingLinkedProfilesRef===t?this.headingLinkedProfilesResult:(this.headingLinkedProfilesRef=t,this.headingLinkedProfilesResult=cJ(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>(YJ(),XJ));if(this.unloaded)return;let r=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t,s=>this.register(s));for(let s of r)this.registerEditorExtension(s)}catch(i){console.warn("[AI3D] Failed to register Live Preview model embeds:",i)}}importModel(){this.showImportModelModal().catch(t=>{S1.error("Failed to open import modal",{error:String(t)}),new Is.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(ZJ(),jJ));new t(this.app,i=>{let r=i.extension.toLowerCase();Ja(r)&&this.openModelFile(i)}).open()}async openModelFile(t){this.ps.setCurrentModel(t.path,null),await this.app.workspace.getLeaf(!0).openFile(t,{active:!0})}async generateNote(){let{generateKnowledgeNote:t}=await Promise.resolve().then(()=>(m0(),u0));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new Is.Notice(j("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof Is.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new Is.Notice(Ki("workbench.fileNotFound",{path:t}))}resolveKnowledgeIndexPath(){var a,o,l;let t=this.ps.store.getState(),i=t.currentModelPath,r=i?(a=t.modelAssetProfiles[i])==null?void 0:a.knowledgeIndexPath:void 0;return r||((o=t.lastKnowledgeGeneration)!=null&&o.knowledgeIndexPath?t.lastKnowledgeGeneration.knowledgeIndexPath:(l=Object.values(t.modelAssetProfiles).filter(c=>!!c.knowledgeIndexPath).sort((c,f)=>Date.parse(f.updatedAt)-Date.parse(c.updatedAt))[0])==null?void 0:l.knowledgeIndexPath)}clearConversionCache(){this.convertedAssetCache.clear(),new Is.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(xr()){new Is.Notice(j("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(Ad(),NF)),i=await t(this.getSettings()),r=i.filter(a=>a.available).map(a=>a.label),s=i.filter(a=>!a.available).map(a=>a.label);if(s.length===0){new Is.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new Is.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(iee(),tee)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new Is.Notice(j("main.diagnosticsCopied"),8e3)}catch(r){let s=this.getSettings().reportFolder.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()||"Analysis/3D Reports";await this.ensureVaultFolder(s);let a=`AI Model Workbench Diagnostics ${new Date().toISOString().replace(/[:.]/g,"-")}.md`,o=await this.app.vault.create(`${s}/${a}`,i);await this.app.workspace.getLeaf(!0).openFile(o,{active:!0}),new Is.Notice(j("main.diagnosticsCopyFailed"),1e4)}}async ensureVaultFolder(t){let i="";for(let r of t.split("/").filter(Boolean))i=i?`${i}/${r}`:r,this.app.vault.getAbstractFileByPath(i)||await this.app.vault.createFolder(i).catch(s=>{S1.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; +`))throw new Error(`Unable to write analysis sidecar: ${y}`);let J=await C$(n,M,Q);if(!J)throw new Error(`Unable to write knowledge report: ${M}`);e.updateModelProfile(T,z=>({analysisVersion:$h,registeredParts:N.parts.map(t1),reportNotePath:J.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,previewImagePaths:G.paths})),e.setLastKnowledgeGeneration(XF({modelPath:T,reportNotePath:J.path,analysisSidecarPath:y,knowledgeIndexPath:N.knowledgeIndexPath,partNoteCount:(u=(h=N.partNotePaths)==null?void 0:h.length)!=null?u:0,previewImageCount:N.previewImages.length,status:"success",warningCount:N.warnings.length})),await n.workspace.getLeaf(!0).openFile(J,{active:!0}),new wl.Notice(`Knowledge note updated: ${J.path}`)}catch(v){throw r&&e.setLastKnowledgeGeneration(XF({...r,partNoteCount:(_=(m=s==null?void 0:s.partNotePaths)==null?void 0:m.length)!=null?_:0,previewImageCount:(p=s==null?void 0:s.previewImages.length)!=null?p:a,status:"failed",warningCount:Math.max(1,(g=s==null?void 0:s.warnings.length)!=null?g:0)})),v}finally{i(),KF=null}}var wl,cTe,N$,fTe,w$,jF,KF,p0=I(()=>{"use strict";wl=require("obsidian");cA();nA();On();_s();AE();xE();u0();I$();cTe=qi("knowledge-note"),N$=8,fTe=256,w$="",jF="";KF=null});var j$={};Fe(j$,{renderRegisteredPartMatchRow:()=>HTe});function WTe(n){if(!n)return"";let e=n.split("/");return e[e.length-1]||n}function HTe(n,e,t){var o,l;let i=n.createDiv({cls:"ai3d-direct-workbench-match"}),r=i.createDiv({cls:"ai3d-direct-workbench-match-main"});r.createDiv({cls:"ai3d-direct-workbench-match-title",text:e}),r.createDiv({cls:"ai3d-direct-workbench-match-source",text:t.sourcePartName||t.sourcePartId}),t.sourceModelPath&&r.createDiv({cls:"ai3d-direct-workbench-match-model",text:Ki("directWorkbench.registeredSourceModel",{model:WTe(t.sourceModelPath)})}),r.createDiv({cls:"ai3d-direct-workbench-match-target",text:t.sourceNotePath?j("directWorkbench.registeredTargetPartNote"):t.sourceModelPath?j("directWorkbench.registeredTargetSourceModel"):j("directWorkbench.registeredTargetUnavailable")}),t.reasons.length>0&&r.createDiv({cls:"ai3d-direct-workbench-match-reasons",text:t.reasons.slice(0,2).join(" / ")});let s=i.createDiv({cls:"ai3d-direct-workbench-match-side"});s.createDiv({cls:"ai3d-direct-workbench-match-score",text:`${Math.round(t.matchScore*100)}%`});let a=s.createEl("button",{cls:"ai3d-direct-workbench-action ai3d-direct-workbench-match-open",text:t.sourceNotePath?j("directWorkbench.registeredOpenNote"):j("directWorkbench.registeredOpenModel"),attr:{type:"button","data-ai3d-action":"open-registered-part","data-ai3d-target-path":(l=(o=t.sourceNotePath)!=null?o:t.sourceModelPath)!=null?l:""}});return a.disabled=!t.sourceNotePath&&!t.sourceModelPath,i}var Z$=I(()=>{"use strict";_n()});var iJ={};Fe(iJ,{DirectModelView:()=>r1});function $Te(n){return n instanceof Error&&n.message.includes("Missing external model resource:")}function $$(n){var i,r,s;let e=(r=(i=n.occurrenceId)!=null?i:n.componentId)!=null?r:n.partNumber;if(e!=null&&e.trim())return`component:${e.trim().toLowerCase()}`;let t=n.meshRefs.map(a=>a.trim().toLowerCase()).filter(Boolean).sort().join("|");return`${(s=n.source)!=null?s:"mesh"}:${n.name.trim().toLowerCase()}:${t}`}function JTe(n,e){return n?{...e,notePath:n.notePath,reviewed:n.reviewed,observations:n.reviewed||n.notePath?n.observations:e.observations,inferredFunctions:n.inferredFunctions.length>0?n.inferredFunctions:e.inferredFunctions,knowledgeTags:n.knowledgeTags.length>0?n.knowledgeTags:e.knowledgeTags}:e}function J$(n){return n.reviewed||n.notePath?0:n.source==="component"?1:n.source==="group"?2:n.source==="detail-cluster"?3:4}function eAe(n){return n.length<=q$?n:[...n].sort((e,t)=>{var s,a,o,l;let i=J$(e)-J$(t);if(i!==0)return i;let r=((s=t.confidence)!=null?s:0)-((a=e.confidence)!=null?a:0);return r!==0?r:((o=t.childCount)!=null?o:0)-((l=e.childCount)!=null?l:0)}).slice(0,q$)}function eJ(n){return{partId:n.partId,assetId:n.assetId,parentPartId:n.parentPartId,name:n.name,source:n.source,componentId:n.componentId,occurrenceId:n.occurrenceId,partNumber:n.partNumber,componentPath:n.componentPath,category:n.category,meshRefs:n.meshRefs,childCount:n.childCount,materialRefs:n.materialRefs,bbox:n.bbox,center:n.center,triangleCount:n.triangleCount,vertexCount:n.vertexCount,materialName:n.materialName,sourceFormat:n.sourceFormat,effectiveFormat:n.effectiveFormat,loadStrategy:n.loadStrategy,confidence:n.confidence,observations:n.observations,inferredFunctions:n.inferredFunctions,knowledgeTags:n.knowledgeTags,notePath:n.notePath,reviewed:n.reviewed}}function tAe(n=[],e=[]){return n.length!==e.length?!1:JSON.stringify(n.map(eJ))===JSON.stringify(e.map(eJ))}function n1(n){return n==="extreme"?3:n==="heavy"?2:n==="medium"?1:0}function iAe(n){let e=n1(n.performanceTier);return e>=2?YTe:e===1?XTe:zTe}function rAe(n){return n1(n.performanceTier)<2&&n.meshCount<=KTe&&n.triangleCount<=jTe}function nAe(n){let e=n1(n.performanceTier);return e>=2?null:e===1?QTe:qTe}function tJ(n){return n.source==="component"?0:n.source==="group"?1:n.source==="detail-cluster"?2:3}function sAe(n){return n.parts.length<=Q$?n:{...n,parts:[...n.parts].sort((e,t)=>{var s,a;let i=tJ(e)-tJ(t);if(i!==0)return i;let r=((s=t.childCount)!=null?s:0)-((a=e.childCount)!=null?a:0);return r!==0?r:t.triangleCount-e.triangleCount}).slice(0,Q$)}}function aAe(n){return{sourcePath:n.sourcePath,sourceFormat:Yc(n.sourceExt||n.sourcePath),effectiveFormat:Yc(n.ext||n.path),loadStrategy:n.strategy}}function oAe(n,e,t=[]){if(!e&&t.length===0)return n;let i=e!=null?e:n.formatLineage,r=Array.from(new Set([...n.resourceWarnings,...t]));return{...n,formatLineage:i,resourceWarnings:r,parts:n.parts.map(s=>{var a,o,l;return{...s,sourceFormat:(a=s.sourceFormat)!=null?a:i==null?void 0:i.sourceFormat,effectiveFormat:(o=s.effectiveFormat)!=null?o:i==null?void 0:i.effectiveFormat,loadStrategy:(l=s.loadStrategy)!=null?l:i==null?void 0:i.loadStrategy}})}}var o_,_0,zTe,XTe,YTe,q$,KTe,jTe,Q$,ZTe,qTe,QTe,r1,rJ=I(()=>{"use strict";o_=require("obsidian");MM();Eg();vF();WM();EF();_s();HM();zM();XM();qp();_n();oE();ua();On();xE();YM();LQ();V0();NQ();BQ();ME();QM();F0();_0=qi("direct-view"),zTe=450,XTe=1200,YTe=1500,q$=256,KTe=500,jTe=15e5,Q$=64,ZTe=512,qTe=250,QTe=1e3;r1=class extends o_.FileView{constructor(t,i,r,s){super(t);this.preview=null;this.annotationMgr=null;this.annotationMode=!1;this.loadGeneration=0;this.activeLoadController=null;this.escHandler=null;this.workbenchPanel=null;this.workbenchSummary=null;this.workbenchRoute=null;this.workbenchModelPath=null;this.workbenchEvidenceLineage=null;this.workbenchSourceWarnings=[];this.workbenchEvidenceModelPath=null;this.workbenchEvidence=null;this.evidenceRegistrationTimer=null;this.registeredMatchPreviewTimer=null;this.sidebarContent=null;this.getSettings=i,this.convertedAssetCache=r,this.ps=s}getViewType(){return bd}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.contentEl.empty(),Md(this.contentEl),this.file&&await this.loadModel(this.file)}async onLoadFile(t){this.contentEl.empty(),Md(this.contentEl),await this.loadModel(t)}onClose(){var t,i,r;return IE(this.contentEl),this.loadGeneration++,(t=this.activeLoadController)==null||t.abort(),this.activeLoadController=null,this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),this.escHandler&&(activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=null),(i=this.annotationMgr)==null||i.destroy(),this.annotationMgr=null,(r=this.preview)==null||r.destroy(),this.preview=null,Promise.resolve()}async loadModel(t){var S,E,A,R,M,y;Md(this.contentEl),(S=this.activeLoadController)==null||S.abort();let i=new AbortController;this.activeLoadController=i;let r=++this.loadGeneration,s={signal:i.signal,isCurrent:()=>this.loadGeneration===r&&this.activeLoadController===i&&!i.signal.aborted},a=xr();this.clearDeferredEvidenceRegistration(),this.clearRegisteredMatchPreview(),(E=this.annotationMgr)==null||E.destroy(),this.annotationMgr=null,this.workbenchPanel=null,this.workbenchSummary=null,this.workbenchRoute=null,this.workbenchModelPath=null,this.workbenchEvidenceLineage=null,this.workbenchSourceWarnings=[],this.workbenchEvidenceModelPath=null,this.workbenchEvidence=null,this.sidebarContent=null,(A=this.preview)==null||A.destroy(),this.preview=null,this.ps.setCurrentModel(t.path,null);let{workspace:o,topTrack:l,mainArea:c,hHandle:f,host:d,canvas:h,modeOverlay:u,sidebarContent:m,vHandle:_,workbenchPanel:p}=DQ({contentEl:this.contentEl,filePath:t.path,mobile:a,getPreview:()=>this.preview}),g=null,v=C=>{var D;this.annotationMode=C,a&&C&&(g==null||g.setMobileInteractionMode(!0)),(D=this.annotationMgr)==null||D.hideEditor(),u.classList.toggle("is-hidden",!C)};this.escHandler&&activeDocument.removeEventListener("keydown",this.escHandler),this.escHandler=C=>{C.key==="Escape"&&this.annotationMode&&v(!1)},activeDocument.addEventListener("keydown",this.escHandler),g=tE(c,d,this.app,()=>this.preview,()=>t.path,()=>{this.leaf.detach()},this.getSettings,()=>(v(!this.annotationMode),this.annotationMode),C=>{!C&&this.annotationMode&&v(!1)}),this.sidebarContent=m,this.workbenchPanel=p,this.setupResizeHandles(f,_,l,o);let T=qh(d);try{let C=this.getSettings(),D=(R=$l(this.app,t.path))!=null?R:void 0,w=Zh(this.app,C);T.setPhaseKey("loading.preparingModel");let G=await Qp({path:t.path,absolutePath:D,preferConversionExts:$p(C),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(o0(),a0));return J(C)},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:w});gi(s);let O=nE(G);this.workbenchEvidenceLineage=aAe(O),this.workbenchSourceWarnings=[...O.warnings];let N=FQ(C,O);g==null||g.syncCapabilities(),T.setPhaseKey("loading.loadingModel");let B=po(this.app,O.path,{signal:i.signal}),V=n_(this.app,O.path,C);B.catch(()=>{}),V.catch(()=>{});let Q=await this.createPreviewWithFallback(h,B,V,O,N,t.path,s);gi(s),this.preview=Q.preview,d.dataset.ai3dBackend=Q.route.backend,d.dataset.ai3dRouteReason=Q.route.reason,g==null||g.syncCapabilities();let K=Q.summary;this.applyLargeModelRenderBudget(Q.preview,C,K),aE(d,K),this.workbenchPanel=p,this.workbenchSummary=K,this.workbenchRoute=Q.route,this.workbenchModelPath=t.path,this.renderWorkbenchPanel(p,K,Q.route,t.path),this.renderSidebarContent(t.path,K),this.ps.setCurrentModel(t.path,K),_0.info("direct view model loaded",{path:t.path,effectivePath:O.path,effectiveExt:O.ext,strategy:O.strategy,backend:Q.route.backend,routeReason:Q.route.reason,meshCount:K.meshCount,triangleCount:K.triangleCount}),T.setProgress(100),T.hide(),this.setupAnnotationManager(t.path,r,d,g),this.scheduleDeferredEvidenceRegistration(t.path,r,K)}catch(C){if(Sf(C)||r!==this.loadGeneration)return;T.hide(),(M=this.preview)==null||M.destroy(),this.preview=null,d.replaceChildren(),(y=this.workbenchPanel)==null||y.addClass("is-hidden");let D=rE(C);iE(C)?console.warn("[AI3D] Direct view blocked by converter settings:",D.message):console.error("[AI3D] Direct view failed:",C),this.ps.store.getState().currentModelPath===t.path&&this.ps.clearModelPreview(),sE(d,D)}finally{this.activeLoadController===i&&(this.activeLoadController=null),T.hide()}}async setupAnnotationManager(t,i,r,s){var l;let a=this.preview;if(!a)return;let o=a.getAnnotationProvider();if(o.canvas)try{let[{AnnotationManager:c},{createHeadingSearch:f,createNoteReader:d}]=await Promise.all([Promise.resolve().then(()=>(c0(),l0)),Promise.resolve().then(()=>(d0(),f0))]);if(i!==this.loadGeneration||this.preview!==a||this.workbenchModelPath!==t||!r.isConnected)return;let h=this.ps.store.getState().modelAssetProfiles[t],u=(l=h==null?void 0:h.annotations)!=null?l:[],m=d(this.app),_=f(this.app);this.annotationMgr=new c(o,r,"edit",u,p=>{this.ps.updateModelProfile(t,g=>({annotations:p})),s==null||s.updateAnnotationBadge(p.length)},m,_,{app:this.app,previewMode:this.getSettings().annotationPreviewMode,displayMode:this.getSettings().annotationDisplayMode}),s==null||s.showAnnotateButton(),s==null||s.updateAnnotationBadge(u.length),a.onPick(p=>{var S,E;if(!this.annotationMode||!this.annotationMgr)return;let g=p.screenX,v=p.screenY,T=(E=(S=this.preview)==null?void 0:S.getPickWorldPoint(p))!=null?E:null;T&&this.annotationMgr.showEditor(g,v,T)})}catch(c){console.warn("[AI3D] Direct view annotation runtime failed to load:",c)}}async registerModelPartsFromEvidence(t,i){var f,d;if(!(i!=null&&i.parts.length))return;let{buildPartRecordsFromEvidence:r}=await Promise.resolve().then(()=>(u0(),HF)),s=r(t,i.parts,i.formatLineage);if(s.length===0)return;let o=(f=this.ps.store.getState().modelAssetProfiles[t])!=null?f:w0(),l=new Map(((d=o.registeredParts)!=null?d:[]).map(h=>[$$(h),h])),c=eAe(s.map(h=>JTe(l.get($$(h)),h))).map(cu);tAe(o.registeredParts,c)||this.ps.updateModelProfile(t,h=>({registeredParts:c}))}clearDeferredEvidenceRegistration(){this.evidenceRegistrationTimer!==null&&(window.clearTimeout(this.evidenceRegistrationTimer),this.evidenceRegistrationTimer=null)}clearRegisteredMatchPreview(){this.registeredMatchPreviewTimer!==null&&(window.clearTimeout(this.registeredMatchPreviewTimer),this.registeredMatchPreviewTimer=null)}scheduleDeferredEvidenceRegistration(t,i,r){if(this.clearDeferredEvidenceRegistration(),!rAe(r)){this.workbenchEvidenceModelPath=t,this.workbenchEvidence=null,this.refreshWorkbenchPanel(),_0.info("skip automatic evidence capture for very large model",{modelPath:t,performanceTier:r.performanceTier,meshCount:r.meshCount,triangleCount:r.triangleCount});return}this.evidenceRegistrationTimer=window.setTimeout(()=>{this.evidenceRegistrationTimer=null,!(i!==this.loadGeneration||this.workbenchModelPath!==t)&&(async()=>{let s=this.getCurrentModelEvidence();await this.registerModelPartsFromEvidence(t,s),i===this.loadGeneration&&this.workbenchModelPath===t&&this.refreshWorkbenchPanel()})().catch(s=>{console.warn("[AI3D] Deferred model evidence capture failed:",s)})},iAe(r))}getCurrentModelEvidence(){var s,a,o;let t=this.workbenchModelPath;if(t&&this.workbenchEvidenceModelPath===t)return this.workbenchEvidence;let i=(o=(a=(s=this.preview)==null?void 0:s.getModelEvidence)==null?void 0:a.call(s))!=null?o:null,r=i?oAe(i,this.workbenchEvidenceLineage,this.workbenchSourceWarnings):null;return t&&(this.workbenchEvidenceModelPath=t,this.workbenchEvidence=r),r}getCachedModelEvidence(t){return this.workbenchEvidenceModelPath===t?this.workbenchEvidence:null}createKnowledgePreviewAdapter(){return this.preview?{captureSnapshot:()=>{var t,i;return(i=(t=this.preview)==null?void 0:t.captureSnapshot())!=null?i:null},getModelEvidence:()=>this.getCurrentModelEvidence()}:null}renderWorkbenchPanel(t,i,r,s){var a,o;OQ({panel:t,summary:i,route:r,registeredPartCount:(o=(a=this.ps.store.getState().modelAssetProfiles[s])==null?void 0:a.registeredParts)==null?void 0:o.length})}renderSidebarContent(t,i){this.sidebarContent&&(this.clearRegisteredMatchPreview(),this.sidebarContent.empty(),this.renderKnowledgeControls(this.sidebarContent,t),this.renderRegisteredPartMatches(this.sidebarContent,t,i))}refreshWorkbenchPanel(){!this.workbenchPanel||!this.workbenchSummary||!this.workbenchRoute||!this.workbenchModelPath||(this.renderWorkbenchPanel(this.workbenchPanel,this.workbenchSummary,this.workbenchRoute,this.workbenchModelPath),this.renderSidebarContent(this.workbenchModelPath,this.workbenchSummary))}setupResizeHandles(t,i,r,s){let a=(c,f,d)=>{let h=0,u=0,m=p=>{f(p.clientX-h,p.clientY-u),h=p.clientX,u=p.clientY},_=()=>{activeDocument.removeEventListener("mousemove",m),activeDocument.removeEventListener("mouseup",_),d()};c.addEventListener("mousedown",p=>{p.preventDefault(),h=p.clientX,u=p.clientY,activeDocument.addEventListener("mousemove",m),activeDocument.addEventListener("mouseup",_)})},o=200;a(t,c=>{o=Math.max(48,Math.min(400,o-c)),r.style.gridTemplateColumns=`1fr 4px ${o}px`},()=>{});let l=220;a(i,(c,f)=>{l=Math.max(120,Math.min(500,l-f)),s.style.gridTemplateRows=`1fr 4px ${l}px`},()=>{})}renderKnowledgeControls(t,i){let r=this.ps.store.getState().modelAssetProfiles[i],s=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-knowledge"});s.createDiv({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.knowledgeTitle")}),s.createDiv({cls:"ai3d-direct-workbench-value",text:r!=null&&r.knowledgeIndexPath?j("workbench.indexReady"):r!=null&&r.reportNotePath?j("workbench.noteReady"):j("workbench.noReportYet")});let a=s.createDiv({cls:"ai3d-direct-workbench-actions"}),o=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.generateNoteAction"),attr:{type:"button","data-ai3d-action":"generate-note"}});o.addEventListener("click",()=>{o.disabled=!0,Promise.resolve().then(()=>(p0(),m0)).then(({generateKnowledgeNote:f})=>f(this.app,this.ps,{preview:this.createKnowledgePreviewAdapter()})).catch(f=>{console.error("[AI3D] Generate knowledge note failed:",f)}).finally(()=>{o.disabled=!1,this.refreshWorkbenchPanel()})});let l=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openNoteAction"),attr:{type:"button","data-ai3d-action":"open-note"}});l.disabled=!(r!=null&&r.reportNotePath),l.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.reportNotePath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})});let c=a.createEl("button",{cls:"ai3d-direct-workbench-action",text:j("workbench.openIndexAction"),attr:{type:"button","data-ai3d-action":"open-index"}});c.disabled=!(r!=null&&r.knowledgeIndexPath),c.addEventListener("click",()=>{var h;let f=(h=this.ps.store.getState().modelAssetProfiles[i])==null?void 0:h.knowledgeIndexPath;if(!f)return;let d=this.app.vault.getAbstractFileByPath(f);d instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(d,{active:!0})})}renderRegisteredPartMatches(t,i,r){let s=this.loadGeneration,a=t.createDiv({cls:"ai3d-direct-workbench-control ai3d-direct-workbench-registered"}),o=a.createDiv({cls:"ai3d-direct-workbench-control-head"});o.createSpan({cls:"ai3d-direct-workbench-label",text:j("directWorkbench.registeredTitle")});let l=o.createSpan({cls:"ai3d-direct-workbench-value",text:j("directWorkbench.registeredLoading")}),c=a.createDiv({cls:"ai3d-direct-workbench-registered-body"}),f=m=>{l.setText(""),c.empty(),c.createDiv({cls:"ai3d-direct-workbench-empty",text:j(m)})},d=this.getCachedModelEvidence(i),h=d?sAe(d):null;if(!(h!=null&&h.parts.length)){this.workbenchEvidenceModelPath===i?f("directWorkbench.registeredUnavailable"):c.createDiv({cls:"ai3d-direct-workbench-empty",text:j("directWorkbench.registeredLoading")});return}let u=nAe(r);if(u===null){f("directWorkbench.registeredUnavailable");return}this.registeredMatchPreviewTimer=window.setTimeout(()=>{this.registeredMatchPreviewTimer=null,!(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)&&Promise.all([Promise.resolve().then(()=>(p0(),m0)),Promise.resolve().then(()=>(u0(),HF)),Promise.resolve().then(()=>(Z$(),j$))]).then(async([{collectRegisteredPartsFromProfiles:m},{buildLocalAnalysisResult:_},{renderRegisteredPartMatchRow:p}])=>{var R;let g=this.ps.store.getState(),v=await m(this.app,g.modelAssetProfiles,i,{includeSidecars:!1,maxParts:ZTe});if(s!==this.loadGeneration||this.workbenchModelPath!==i||!a.isConnected)return;if(v.length===0){f("directWorkbench.registeredEmpty");return}let T=this.ps.store.getState().modelAssetProfiles[i],E=_({modelPath:i,profile:T,preview:r,evidence:h,registeredParts:v}).parts.filter(M=>{var y;return(y=M.registeredMatches)==null?void 0:y.length}).sort((M,y)=>{var C,D,w,G,O,N;return((w=(D=(C=y.registeredMatches)==null?void 0:C[0])==null?void 0:D.matchScore)!=null?w:0)-((N=(O=(G=M.registeredMatches)==null?void 0:G[0])==null?void 0:O.matchScore)!=null?N:0)}).slice(0,5);if(E.length===0){f("directWorkbench.registeredEmpty");return}l.setText(Ki("directWorkbench.registeredCount",{count:String(E.length)})),c.empty();let A=c.createDiv({cls:"ai3d-direct-workbench-match-list"});for(let M of E){let y=(R=M.registeredMatches)==null?void 0:R[0];if(!y)continue;let D=p(A,M.name,y).querySelector("[data-ai3d-action='open-registered-part']");D instanceof HTMLButtonElement&&D.addEventListener("click",()=>{let w=D.getAttribute("data-ai3d-target-path")||void 0;if(!w)return;let G=this.app.vault.getAbstractFileByPath(w);G instanceof o_.TFile&&this.app.workspace.getLeaf(!0).openFile(G,{active:!0})})}}).catch(m=>{console.warn("[AI3D] Registered part match preview failed:",m),s===this.loadGeneration&&this.workbenchModelPath===i&&a.isConnected&&f("directWorkbench.registeredUnavailable")})},u)}async createPreviewWithFallback(t,i,r,s,a,o,l){gi(l);let c=await Kp(_0,{surface:"direct-view",modelPath:o},t,a);try{gi(l)}catch(h){throw c.preview.destroy(),h}let f;try{f=await r,gi(l)}catch(h){throw c.preview.destroy(),h}this.applyRenderBudget(c.preview,f);let d;try{d=await i,gi(l)}catch(h){throw c.preview.destroy(),h}try{let h=await c.preview.loadModel(d,s.ext,u=>po(this.app,u,{signal:l.signal}),s.path,l);return gi(l),{preview:c.preview,summary:h,route:c.route}}catch(h){if(c.preview.destroy(),Sf(h)||c.route.backend!=="three")throw h;gi(l),console.warn("[AI3D] Three direct view failed; falling back to Babylon:",h);let u={...a,allowWorkbenchFeaturesOnThree:!1,rendererRollout:"babylon-safe",useThreeRenderer:!1},m=await Kp(_0,{surface:"direct-view-fallback",modelPath:o},t,u);this.applyRenderBudget(m.preview,f);try{gi(l);let _=await m.preview.loadModel(d,s.ext,p=>po(this.app,p,{signal:l.signal}),s.path,l);return gi(l),{preview:m.preview,summary:_,route:m.route}}catch(_){throw m.preview.destroy(),Sf(_)?_:$Te(h)?h:_}}}applyRenderBudget(t,i){var r;(r=t.setRenderQuality)==null||r.call(t,i.renderQuality,i.renderScale)}applyLargeModelRenderBudget(t,i,r){var a;let s=kQ(i,r);(a=t.setRenderQuality)==null||a.call(t,s.renderQuality,s.renderScale)}}});var sJ={};Fe(sJ,{AI3DSettingTab:()=>a1});function hAe(){switch(s1==null?void 0:s1.platform){case"win32":return{python:"Path to python executable",freecad:"Path to FreeCADCmd.exe",obj2gltf:"Path to obj2gltf.cmd",fbx2gltf:"Path to FBX2glTF.exe"};case"darwin":return{python:"Path to python3",freecad:"Path to FreeCADCmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};case"linux":return{python:"Path to python3",freecad:"Path to freecadcmd",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"};default:return{python:"Path to python executable",freecad:"Path to FreeCAD command",obj2gltf:"Path to obj2gltf",fbx2gltf:"Path to FBX2glTF"}}}var Xt,s1,a1,aJ=I(()=>{"use strict";Xt=require("obsidian");D0();_n();ua();rr();s1=sm();a1=class extends Xt.PluginSettingTab{constructor(t,i){super(t,i);this.diagnosticsRunId=0;this.diagnosticsEl=null;this.plugin=i}display(){let{containerEl:t}=this;t.empty(),E_(this.plugin.getSettings().locale),this.diagnosticsEl=null,this.addTitle(t),this.buildLanguageSection(t),this.buildFoldersSection(t),this.buildBehaviorSection(t),this.buildKnowledgeGenerationSection(t),this.buildConvertersSection(t),this.buildPerformanceSection(t)}addTitle(t){new Xt.Setting(t).setName(j("settings.title")).setHeading()}createSecondaryMenu(t,i,r){let s=t.createEl("details",{cls:"ai3d-settings-secondary-menu"});s.createEl("summary",{cls:"ai3d-settings-secondary-menu-summary",text:i});let a=s.createDiv({cls:"ai3d-settings-secondary-menu-body"});return a.createEl("p",{cls:"setting-item-description",text:r}),a}resetCommandDiagnostics(){this.diagnosticsEl&&(this.diagnosticsRunId++,this.diagnosticsEl.empty(),this.diagnosticsEl.createEl("p",{text:j("settings.diagnostics.idle")}))}buildLanguageSection(t){new Xt.Setting(t).setName(j("settings.language")).setHeading(),new Xt.Setting(t).setName(j("settings.language")).setDesc(j("settings.language.desc")).addDropdown(i=>i.addOption("en","English").addOption("zh-CN","\u7B80\u4F53\u4E2D\u6587").setValue(this.plugin.getSettings().locale).onChange(r=>{this.plugin.updateSettings({locale:r}),this.display()}))}buildFoldersSection(t){new Xt.Setting(t).setName(j("settings.folders")).setHeading(),new Xt.Setting(t).setName(j("settings.sourceModelFolder")).setDesc(j("settings.sourceModelFolder.desc")).addText(i=>i.setPlaceholder($c.sourceModelFolder).setValue(this.plugin.getSettings().sourceModelFolder).onChange(r=>{this.plugin.updateSettings({sourceModelFolder:r})})),new Xt.Setting(t).setName(j("settings.auxiliaryFileFolder")).setDesc(j("settings.auxiliaryFileFolder.desc")).addText(i=>i.setPlaceholder(j("settings.auxiliaryFileFolder.placeholder")).setValue(this.plugin.getSettings().auxiliaryFileFolder).onChange(r=>{this.plugin.updateSettings({auxiliaryFileFolder:r})})),new Xt.Setting(t).setName(j("settings.reportFolder")).setDesc(j("settings.reportFolder.desc")).addText(i=>i.setPlaceholder($c.reportFolder).setValue(this.plugin.getSettings().reportFolder).onChange(r=>{this.plugin.updateSettings({reportFolder:r})})),new Xt.Setting(t).setName(j("settings.partFolder")).setDesc(j("settings.partFolder.desc")).addText(i=>i.setPlaceholder($c.partFolder).setValue(this.plugin.getSettings().partFolder).onChange(r=>{this.plugin.updateSettings({partFolder:r})})),new Xt.Setting(t).setName(j("settings.snapshotFolder")).setDesc(j("settings.snapshotFolder.desc")).addText(i=>i.setPlaceholder($c.snapshotFolder).setValue(this.plugin.getSettings().snapshotFolder).onChange(r=>{this.plugin.updateSettings({snapshotFolder:r})}))}buildBehaviorSection(t){new Xt.Setting(t).setName(j("settings.behavior")).setHeading(),new Xt.Setting(t).setName(j("settings.autoGenerateKnowledgeNotes")).setDesc(j("settings.autoGenerateKnowledgeNotes.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoGenerateKnowledgeNotes).onChange(r=>{this.plugin.updateSettings({autoGenerateKnowledgeNotes:r})})),new Xt.Setting(t).setName(j("settings.annotationPreviewMode")).setDesc(j("settings.annotationPreviewMode.desc")).addDropdown(i=>i.addOption("plain-text",j("settings.annotationPreviewMode.plainText")).addOption("markdown",j("settings.annotationPreviewMode.markdown")).setValue(this.plugin.getSettings().annotationPreviewMode).onChange(r=>{this.plugin.updateSettings({annotationPreviewMode:r})})),new Xt.Setting(t).setName(j("settings.annotationDisplayMode")).setDesc(j("settings.annotationDisplayMode.desc")).addDropdown(i=>i.addOption("snippet",j("settings.annotationDisplayMode.snippet")).addOption("surface",j("settings.annotationDisplayMode.surface")).addOption("dot",j("settings.annotationDisplayMode.dot")).setValue(this.plugin.getSettings().annotationDisplayMode).onChange(r=>{this.plugin.updateSettings({annotationDisplayMode:r})})),new Xt.Setting(t).setName(j("settings.previewRendererRollout")).setDesc(j("settings.previewRendererRollout.desc")).addDropdown(i=>i.addOption("babylon-safe",j("settings.previewRendererRollout.babylonSafe")).addOption("three-readonly-glb",j("settings.previewRendererRollout.readonly")).addOption("three-direct-glb",j("settings.previewRendererRollout.direct")).setValue(this.plugin.getSettings().previewRendererRollout).onChange(r=>{this.plugin.updateSettings({previewRendererRollout:r})})),new Xt.Setting(t).setName(j("settings.useThreeRenderer")).setDesc(j("settings.useThreeRenderer.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeRenderer).onChange(r=>{this.plugin.updateSettings({useThreeRenderer:r})})),new Xt.Setting(t).setName(j("settings.useThreeForConvertedDirectView")).setDesc(j("settings.useThreeForConvertedDirectView.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().useThreeForConvertedDirectView).onChange(r=>{this.plugin.updateSettings({useThreeForConvertedDirectView:r})})),new Xt.Setting(t).setName(j("settings.experimentalThreeWorkbench")).setDesc(j("settings.experimentalThreeWorkbench.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().experimentalThreeWorkbench).onChange(r=>{this.plugin.updateSettings({experimentalThreeWorkbench:r})})),new Xt.Setting(t).setName(j("settings.autoRotateDefault")).setDesc(j("settings.autoRotateDefault.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().autoRotateDefault).onChange(r=>{this.plugin.updateSettings({autoRotateDefault:r})})),new Xt.Setting(t).setName(j("settings.snapshotNaming")).setDesc(j("settings.snapshotNaming.desc")).addDropdown(i=>i.addOption("model-name",j("settings.snapshotNaming.modelName")).addOption("timestamp",j("settings.snapshotNaming.timestamp")).setValue(this.plugin.getSettings().snapshotNaming).onChange(r=>{this.plugin.updateSettings({snapshotNaming:r})})),new Xt.Setting(t).setName(j("settings.logLevel")).setDesc(j("settings.logLevel.desc")).addDropdown(i=>i.addOption("debug","Debug").addOption("info","Info").addOption("warn","Warn").addOption("error","Error").setValue(this.plugin.getSettings().logLevel).onChange(r=>{this.plugin.updateSettings({logLevel:r})}))}buildKnowledgeGenerationSection(t){new Xt.Setting(t).setName(j("settings.knowledgeGeneration")).setHeading(),new Xt.Setting(t).setName(j("settings.analysisMode")).setDesc(j("settings.analysisMode.desc")).addDropdown(i=>i.addOption("local",j("settings.analysisMode.local")).addOption("hybrid",j("settings.analysisMode.hybrid")).addOption("remote",j("settings.analysisMode.remote")).setValue(this.plugin.getSettings().analysisMode).onChange(r=>{this.plugin.updateSettings({analysisMode:r})})),new Xt.Setting(t).setName(j("settings.serviceBaseUrl")).setDesc(j("settings.serviceBaseUrl.desc")).addText(i=>i.setPlaceholder("Local draft service URL").setValue(this.plugin.getSettings().serviceBaseUrl).onChange(r=>{this.plugin.updateSettings({serviceBaseUrl:r.trim()})})),new Xt.Setting(t).setName(j("settings.sendGeometrySummaryToRemote")).setDesc(j("settings.sendGeometrySummaryToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendGeometrySummaryToRemote).onChange(r=>{this.plugin.updateSettings({sendGeometrySummaryToRemote:r})})),new Xt.Setting(t).setName(j("settings.sendPreviewImagesToRemote")).setDesc(j("settings.sendPreviewImagesToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendPreviewImagesToRemote).onChange(r=>{this.plugin.updateSettings({sendPreviewImagesToRemote:r})})),new Xt.Setting(t).setName(j("settings.sendRawModelToRemote")).setDesc(j("settings.sendRawModelToRemote.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().sendRawModelToRemote).onChange(r=>{this.plugin.updateSettings({sendRawModelToRemote:r})}))}buildConvertersSection(t){if(new Xt.Setting(t).setName(j("settings.converters")).setHeading(),xr()){t.createEl("p",{cls:"setting-item-description",text:j("settings.mobileSupport.desc")});return}let i=this.createSecondaryMenu(t,j("settings.converterMenu"),j("settings.converterMenu.desc"));this.buildConverterToggles(i);let r=this.createSecondaryMenu(t,j("settings.environmentInspector"),j("settings.environmentInspector.desc"));this.buildConverterPaths(r),this.buildDiagnostics(r)}buildConverterToggles(t){new Xt.Setting(t).setName(j("settings.enableCad")).setDesc(j("settings.enableCad.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("freecad");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"freecad"])):a.filter(l=>l!=="freecad");this.plugin.updateSettings({enabledConverterIds:o})})}),new Xt.Setting(t).setName(j("settings.enableObj2gltf")).setDesc(j("settings.enableObj2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("obj2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"obj2gltf"])):a.filter(l=>l!=="obj2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new Xt.Setting(t).setName(j("settings.preferObj2gltf")).setDesc(j("settings.preferObj2gltf.desc")).addToggle(i=>i.setValue(this.plugin.getSettings().preferObj2gltfForObj).onChange(r=>{this.plugin.updateSettings({preferObj2gltfForObj:r})})),new Xt.Setting(t).setName(j("settings.enableFbx2gltf")).setDesc(j("settings.enableFbx2gltf.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("fbx2gltf");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"fbx2gltf"])):a.filter(l=>l!=="fbx2gltf");this.plugin.updateSettings({enabledConverterIds:o})})}),new Xt.Setting(t).setName(j("settings.enableMesh")).setDesc(j("settings.enableMesh.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("assimp");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"assimp"])):a.filter(l=>l!=="assimp");this.plugin.updateSettings({enabledConverterIds:o})})}),new Xt.Setting(t).setName(j("settings.enableSldprt")).setDesc(j("settings.enableSldprt.desc")).addToggle(i=>{let r=this.plugin.getSettings().enabledConverterIds.includes("sldprt");return i.setValue(r).onChange(s=>{let a=this.plugin.getSettings().enabledConverterIds,o=s?Array.from(new Set([...a,"sldprt"])):a.filter(l=>l!=="sldprt");this.plugin.updateSettings({enabledConverterIds:o})})})}buildConverterPaths(t){let i=hAe();new Xt.Setting(t).setName(j("settings.paths")).setHeading(),new Xt.Setting(t).setName(j("settings.pythonCmd")).setDesc(j("settings.pythonCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().freecadCommand).onChange(s=>{this.plugin.updateSettings({freecadCommand:s.trim()}),this.resetCommandDiagnostics()})),new Xt.Setting(t).setName(j("settings.freecadCmd")).setDesc(j("settings.freecadCmd.desc")).addText(r=>r.setPlaceholder(i.freecad).setValue(this.plugin.getSettings().freecadcmdCommand).onChange(s=>{this.plugin.updateSettings({freecadcmdCommand:s.trim()}),this.resetCommandDiagnostics()})),new Xt.Setting(t).setName(j("settings.obj2gltfCmd")).setDesc(j("settings.obj2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.obj2gltf).setValue(this.plugin.getSettings().obj2gltfCommand).onChange(s=>{this.plugin.updateSettings({obj2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new Xt.Setting(t).setName(j("settings.fbx2gltfCmd")).setDesc(j("settings.fbx2gltfCmd.desc")).addText(r=>r.setPlaceholder(i.fbx2gltf).setValue(this.plugin.getSettings().fbx2gltfCommand).onChange(s=>{this.plugin.updateSettings({fbx2gltfCommand:s.trim()}),this.resetCommandDiagnostics()})),new Xt.Setting(t).setName(j("settings.assimpCmd")).setDesc(j("settings.assimpCmd.desc")).addText(r=>r.setPlaceholder(i.python).setValue(this.plugin.getSettings().assimpCommand).onChange(s=>{this.plugin.updateSettings({assimpCommand:s.trim()}),this.resetCommandDiagnostics()}))}buildDiagnostics(t){new Xt.Setting(t).setName(j("settings.diagnostics")).setDesc(j("settings.diagnostics.desc")).addButton(r=>r.setButtonText(j("settings.diagnostics.checkNow")).onClick(async()=>{r.setDisabled(!0),r.setButtonText(j("settings.diagnostics.checking")),this.diagnosticsEl&&await this.renderCommandDiagnostics(this.diagnosticsEl),r.setButtonText(j("settings.diagnostics.checkNow")),r.setDisabled(!1),new Xt.Notice(j("settings.diagnostics.refreshed"))})),this.diagnosticsEl=t.createDiv({cls:"ai3d-settings-diagnostics"}),this.resetCommandDiagnostics()}buildPerformanceSection(t){new Xt.Setting(t).setName(j("settings.performance")).setHeading(),new Xt.Setting(t).setName(j("settings.canvasHeight")).setDesc(j("settings.canvasHeight.desc")).addSlider(i=>i.setLimits(200,800,25).setValue(this.plugin.getSettings().defaultCanvasHeight).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({defaultCanvasHeight:r})})),new Xt.Setting(t).setName(j("settings.autoRotateSpeed")).setDesc(j("settings.autoRotateSpeed.desc")).addSlider(i=>i.setLimits(.1,2,.1).setValue(this.plugin.getSettings().autoRotateSpeed).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({autoRotateSpeed:r})})),new Xt.Setting(t).setName(j("settings.renderQuality")).setDesc(j("settings.renderQuality.desc")).addDropdown(i=>i.addOption("low","Low").addOption("medium","Medium").addOption("high","High").setValue(this.plugin.getSettings().renderQuality).onChange(r=>{this.plugin.updateSettings({renderQuality:r})})),new Xt.Setting(t).setName(j("settings.renderScale")).setDesc(j("settings.renderScale.desc")).addSlider(i=>i.setLimits(.25,2,.25).setValue(this.plugin.getSettings().renderScale).setDynamicTooltip().onChange(r=>{this.plugin.updateSettings({renderScale:r})}))}async renderCommandDiagnostics(t){let i=++this.diagnosticsRunId;t.empty(),t.createEl("p",{text:j("settings.diagnostics.checkingAvailability")});let{describeConverterCommandSource:r,inspectAllConverterCommands:s}=await Promise.resolve().then(()=>(Ad(),NF)),a=await s(this.plugin.getSettings());if(i===this.diagnosticsRunId){t.empty();for(let o of a)this.renderCommandStatus(t,o,r)}}renderCommandStatus(t,i,r){var o;let s=t.createDiv({cls:"ai3d-settings-status-block"});s.createEl("strong",{text:`${i.label}: ${i.available?j("settings.diagnostics.available"):j("settings.diagnostics.notFound")}`});let a=[`${j("settings.diagnostics.sourceLabel")}: ${r(i.source)}`,`${j("settings.diagnostics.commandLabel")}: ${i.command}`,i.resolvedPath&&i.resolvedPath!==i.command?`${j("settings.diagnostics.resolvedPathLabel")}: ${i.resolvedPath}`:"",i.detail].filter(Boolean);for(let l of a)s.createDiv({text:l});for(let l of(o=i.dependencyChecks)!=null?o:[])this.renderDependencyCheck(s,l)}renderDependencyCheck(t,i){let r=(()=>{switch(i.kind){case"cad-python":return j("settings.diagnostics.cadPythonCheck");case"mesh-python":return j("settings.diagnostics.meshPythonCheck");case"freecadcmd-cli":return j("settings.diagnostics.freecadCmdCheck");case"obj2gltf-cli":return j("settings.diagnostics.obj2gltfCheck");case"fbx2gltf-cli":return j("settings.diagnostics.fbx2gltfCheck")}})(),s=i.ok?j("settings.diagnostics.selfCheckOk"):j("settings.diagnostics.selfCheckFailed");t.createDiv({text:`${j("settings.diagnostics.selfCheckLabel")}: ${r} - ${s}`}),i.detail&&t.createDiv({text:i.detail})}}});function lJ(n){let e=new Map;for(let[t,i]of Object.entries(n))for(let r of i.annotations)if(r.headingRef&&r.id){let s=Nl(r.headingRef);if(!s)continue;let a=e.get(s);a||(a=[],e.set(s,a)),a.push({pinId:r.id,modelPath:t,color:r.color})}return e}function cJ(n){for(let e of Object.values(n))for(let t of e.annotations)if(typeof t.headingRef=="string"&&Nl(t.headingRef))return!0;return!1}var o1=I(()=>{"use strict";fE()});function Ho(n,e,t=2.5){var i;if(typeof n=="string"){let r=(i=l1[n])!=null?i:l1.iso;return{alpha:r.alpha,beta:r.beta,radiusMultiplier:t}}return{alpha:n,beta:e!=null?e:Math.PI/3,radiusMultiplier:t}}function Fl(n,e,t=.02){let i=(1-t*(n+1))/n,r=(1-t*(e+1))/e,s=[];for(let a=0;a({path:i.path,position:[-t/2+r*e,0,0],color:i.color,wireframe:i.wireframe}))}function f1(n,e){return n.map((t,i)=>{let r=2*Math.PI*i/n.length;return{path:t.path,position:[Math.cos(r)*e,0,Math.sin(r)*e],color:t.color,wireframe:t.wireframe}})}var l1,eu=I(()=>{"use strict";l1={iso:{alpha:Math.PI/4,beta:Math.PI/3},front:{alpha:0,beta:Math.PI/2},side:{alpha:Math.PI/2,beta:Math.PI/2},top:{alpha:0,beta:.01},back:{alpha:Math.PI,beta:Math.PI/2},"3/4":{alpha:Math.PI/6,beta:Math.PI/3.5}}});var fJ,dJ=I(()=>{"use strict";eu();fJ={name:"compare",description:"Side-by-side model comparison (2-4 models)",minModels:2,maxModels:4,compute(n,e){if(n.length<2||n.length>4)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=uE(n,t),s=n.length<=3?n.length:2,a=Math.ceil(n.length/s),o=Fl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Ho(i),viewport:o[f]}));return{placements:r,cells:l}}}});var hJ,uJ=I(()=>{"use strict";eu();hJ={name:"showcase",description:"Single model viewed from multiple angles",minModels:1,maxModels:1,compute(n,e){if(n.length<1)return null;let t=Number(e.angles)||4,i=Number(e.radius)||2.5,r=[{path:n[0].path,position:[0,0,0],color:n[0].color,wireframe:n[0].wireframe}],s=t>=6?["front","side","top","back","iso","3/4"]:["iso","front","side","top"],a=s.length<=4?2:3,o=Math.ceil(s.length/a),l=Fl(a,o),c=s.map((f,d)=>({modelIndex:0,camera:Ho(f,void 0,i),viewport:l[d]}));return{placements:r,cells:c}}}});var mJ,pJ=I(()=>{"use strict";eu();mJ={name:"explode",description:"Spatial arrangement of parts (3-8 models in a ring)",minModels:3,maxModels:8,compute(n,e){if(n.length<3||n.length>8)return null;let t=Number(e.radius)||8,i=e.angle||"iso",r=f1(n,t),s=Math.min(n.length,4),a=Math.ceil(n.length/s),o=Fl(s,a),l=n.map((c,f)=>({modelIndex:f,camera:Ho(i),viewport:o[f]}));return{placements:r,cells:l}}}});var _J,gJ=I(()=>{"use strict";eu();_J={name:"timeline",description:"Horizontal progression of models (2-6 models in a strip)",minModels:2,maxModels:6,compute(n,e){if(n.length<2||n.length>6)return null;let t=Number(e.spacing)||6,i=e.angle||"3/4",r=uE(n,t),s=c1(n.length),a=n.map((o,l)=>({modelIndex:l,camera:Ho(i),viewport:s[l]}));return{placements:r,cells:a}}}});function d1(n,e,t,i,r){var f,d;if(!n||n.length===0)return null;let s=n.reduce((h,u)=>{var m;return h+((m=u.weight)!=null?m:1)},0);if(s<=0)return null;let a=[],o=0;for(let h of n){let m=((f=h.weight)!=null?f:1)/s*(1-t*(n.length+1));e==="horizontal"?a.push({x:t+o,y:t,w:m,h:1-2*t}):a.push({x:t,y:t+o,w:1-2*t,h:m}),o+=m+t}let l=[],c=[];for(let h=0;h{"use strict";vJ={name:"compose",description:"Combine multiple presets into one layout",minModels:1,maxModels:32,compute(n,e,t){return null}}});var EJ,SJ=I(()=>{"use strict";eu();EJ={name:"gallery",description:"All models in one scene, single camera (no cell limit)",minModels:1,maxModels:32,compute(n,e){if(n.length===0)return null;let t=Number(e.spacing)||6,i=e.angle||"iso",r=Number(e.cols)||0,s=r>0?r:Math.ceil(Math.sqrt(n.length)),a=Math.ceil(n.length/s),o=n.map((f,d)=>{let h=d%s,u=Math.floor(d/s),m=(h-(s-1)/2)*t,_=(u-(a-1)/2)*t;return{path:f.path,position:[m,0,_],color:f.color,wireframe:f.wireframe}}),l=Fl(1,1,0),c=[{modelIndex:0,camera:Ho(i,void 0,3+Math.max(s,a)*.5),viewport:l[0]}];return{placements:o,cells:c}}}});function l_(n){TJ.set(n.name,n)}function u1(n){return TJ.get(n)}var TJ,AJ=I(()=>{"use strict";dJ();uJ();pJ();gJ();h1();SJ();eu();h1();TJ=new Map;l_(fJ);l_(hJ);l_(mJ);l_(_J);l_(vJ);l_(EJ)});function mAe(){return typeof activeWindow=="undefined"?window:activeWindow}function mE(n){return _Ae.schedule(n)}var m1,pAe,_Ae,p1=I(()=>{"use strict";m1=class{constructor(e=1,t=0){this.maxActive=e;this.settleDelayMs=t;this.active=0;this.drainTimer=null;this.queue=[]}get activeCount(){return this.active}get queuedCount(){return this.queue.length}schedule(e){return new Promise((t,i)=>{this.queue.push({run:e,resolve:t,reject:i}),this.drain()})}drain(){if(this.drainTimer===null)for(;this.active0;){let e=this.queue.shift();if(!e)return;this.active+=1,Promise.resolve().then(e.run).then(e.resolve,e.reject).finally(()=>{this.active-=1,this.scheduleNextDrain()})}}scheduleNextDrain(){if(this.queue.length!==0){if(this.settleDelayMs<=0){this.drain();return}this.drainTimer===null&&(this.drainTimer=mAe().setTimeout(()=>{this.drainTimer=null,this.drain()},this.settleDelayMs))}}},pAe=75,_Ae=new m1(1,pAe)});var IJ={};Fe(IJ,{registerCodeBlockProcessor:()=>vAe,registerGridCodeBlockProcessor:()=>SAe});async function RJ(n){let{createConversionManager:e}=await Promise.resolve().then(()=>(o0(),a0));return e(n)}async function bJ(n,e,t,i){var d,h,u;let r=typeof e=="string"?{path:e}:e,s=Ef(n,r.path);if(!s)throw new Error(Ki("workbench.fileNotFound",{path:r.path}));let a=(h=(d=s.split(".").pop())==null?void 0:d.toLowerCase())!=null?h:"";if(!Ja(a))throw u_(a)?new Error(j("codeBlock.splatDisabled")):new Error(Ki("codeBlock.unsupportedFormat",{ext:`.${a}`,formats:Bl().join(", ")}));let o=(u=$l(n,s))!=null?u:void 0,l=Zh(n,t),c=await Qp({path:s,absolutePath:o,preferConversionExts:$p(t),conversionManager:()=>RJ(t),convertedAssetCache:i,conversionOutputRoot:l}),f=nE(c);return{sourcePath:s,effectivePath:f.path,effectiveExt:f.ext,warnings:f.warnings,model:{...r,path:f.path}}}async function gAe(n,e,t,i){let r=[];for(let s of e.models){let a=await bJ(n,s,t,i);r.push(a.model)}return{...e,models:r}}function MJ(n){xr()&&n.createDiv({cls:"ai3d-mobile-mode-hint ai3d-mobile-mode-hint--inline",text:j("codeBlock.mobileHint")})}function vAe(n,e,t,i){return{id:"3d",handler:(r,s,a)=>{var y,C;let o=r.trim();if(!o){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelPathOrConfig")});return}let l;if(o.startsWith("{")||o.startsWith("["))try{let D=JSON.parse(o);l=EAe(D)}catch(D){let w=s.createDiv({cls:"ai3d-json-error"}),G=String(D).match(/position\s+(\d+)/),O=Ki("codeBlock.jsonParseError",{error:String(D)});if(G){let N=parseInt(G[1],10),B=o.substring(0,N).split(` +`);O+=Ki("codeBlock.jsonParseLine",{line:String(B.length)})}w.createEl("pre",{text:O});return}else l={models:[{path:o}]};if(!l.models||l.models.length===0){s.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsInConfig")});return}l.models.length>1&&console.warn(`[AI3D] \`\`\`3d only supports one model; ${l.models.length-1} additional models ignored. Use \`\`\`3dgrid for multi-model.`);let f=l.models[0],d=Ef(n,f.path);if(!d){s.createDiv({cls:"ai3d-inline-empty",text:Ki("workbench.fileNotFound",{path:f.path})});return}let h=(C=(y=d.split(".").pop())==null?void 0:y.toLowerCase())!=null?C:"";if(!Ja(h)){s.createDiv({cls:"ai3d-inline-empty",text:u_(h)?j("codeBlock.splatDisabled"):Ki("codeBlock.unsupportedFormat",{ext:`.${h}`,formats:Bl().join(", ")})});return}let u=e(),m=s.createDiv({cls:"ai3d-preview-host"});l.height&&m.style.setProperty("--min-height",typeof l.height=="number"?`${l.height}px`:l.height),l.width&&m.style.setProperty("--max-width",typeof l.width=="number"?`${l.width}px`:l.width);let _=m.createEl("canvas",{cls:"ai3d-canvas-full"});Jp(_,"inline",d),m.appendChild(_);let p=null,g=null,v=!0,T=!1,S=!1;e_(_,()=>T?null:p);let E=tE(s,m,n,()=>p,()=>d,()=>{T||(T=!0,A.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null,m.remove())},e,()=>{if(v=!v,g){let D=m.querySelector(".ai3d-annotation-overlay");D&&D.classList.toggle("is-hidden",!v)}return v},void 0,{labelKey:"helper.toggleAnnotationsVisibilityLabel",activeTooltipKey:"helper.annotationsVisible",inactiveTooltipKey:"helper.annotationsHidden"});MJ(s);let A=new MutationObserver(()=>{T||s.contains(m)||(T=!0,A.disconnect(),M.disconnect(),g==null||g.destroy(),g=null,p==null||p.destroy(),p=null)});A.observe(s,{childList:!0});async function R(){if(S||T||!d)return;S=!0;let D=qh(m),w=async(G,O)=>{if(O.length===0||!PM(G))return;let N=G.getAnnotationProvider();if(N.canvas)try{let[{AnnotationManager:B},{createNoteReader:V}]=await Promise.all([Promise.resolve().then(()=>(c0(),l0)),Promise.resolve().then(()=>(d0(),f0))]);if(T||p!==G||!m.isConnected)return;g=new B(N,m,"readonly",O,void 0,V(n),void 0,{app:n,previewMode:u.annotationPreviewMode,displayMode:u.annotationDisplayMode}),E.showAnnotateButton(),E.updateAnnotationBadge(O.length)}catch(B){console.warn("[AI3D] Inline annotation runtime failed to load:",B)}};try{D.setPhaseKey("loading.preparingModel"),await mE(async()=>{var oe,ve,ie,ue,Pe,me,be;if(T||!m.isConnected){D.hide();return}let G=(oe=$l(n,d))!=null?oe:void 0,O=Zh(n,u);D.setPhaseKey("loading.preparingModel");let N=await Qp({path:d,absolutePath:G,preferConversionExts:$p(u),conversionManager:()=>RJ(u),convertedAssetCache:t,conversionOutputRoot:O}),B=nE(N),V=n_(n,B.path,u),Q=po(n,B.path);V.catch(()=>{}),Q.catch(()=>{});let K=(ve=i==null?void 0:i(d))!=null?ve:[],J={ext:B.ext,annotationMode:K.length>0?"readonly":"none",rendererRollout:u.previewRendererRollout,useThreeRenderer:u.useThreeRenderer},{preview:z}=await Kp(xJ,{surface:"code-block",modelPath:d},_,J);p=z;let Y=await V;(ie=p.setRenderQuality)==null||ie.call(p,Y.renderQuality,Y.renderScale),E.syncCapabilities(),D.setPhaseKey("loading.loadingModel");let de=await Q,ge=async De=>po(n,De);if(T){D.hide();return}let Ue=await p.loadModel(de,B.ext,ge,B.path);if(D.setProgress(100),aE(m,Ue),T){D.hide();return}((ue=l.scene)==null?void 0:ue.autoRotate)===void 0&&u.autoRotateDefault&&(l.scene={...l.scene,autoRotate:!0,autoRotateSpeed:u.autoRotateSpeed}),p.applyConfig(l),E.syncCapabilities(),h==="stl"&&f.color&&((Pe=p.setSTLColor)==null||Pe.call(p,f.color)),h==="stl"&&f.wireframe!==void 0&&((me=p.setWireframe)==null||me.call(p,f.wireframe)),(be=p.hasAnimations)!=null&&be.call(p)&&E.showAnimButton(),D.hide(),w(p,K)})}catch(G){T=!0,A.disconnect(),M.disconnect(),D.hide(),p==null||p.destroy(),p=null,m.replaceChildren();let O=rE(G);iE(G)?console.warn("[AI3D] Inline preview blocked by converter settings:",O.message):console.error("[AI3D] Inline preview failed:",G),sE(m,O)}}let M=new IntersectionObserver(D=>{for(let w of D)w.isIntersecting&&(M.disconnect(),R())},{rootMargin:"200px"});M.observe(m)}}}function EAe(n){if(typeof n=="string")return{models:[{path:n}]};if(typeof n!="object"||n===null)return{models:[]};let e=n;return typeof e.path=="string"?{models:[{path:e.path,color:e.color,wireframe:e.wireframe}],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}:{models:Array.isArray(e.models)?e.models.filter(i=>{let r=typeof i=="string"?i:i&&typeof i=="object"&&"path"in i?i.path:void 0;return typeof r=="string"&&r.length>0}).map(i=>{if(typeof i=="string")return{path:i};let r=i;return{path:r.path,color:r.color,wireframe:r.wireframe}}):[],camera:e.camera,lights:e.lights,scene:e.scene,stl:e.stl,width:e.width,height:e.height}}function SAe(n,e,t){return{id:"3dgrid",handler:(i,r,s)=>{var R,M,y,C,D,w,G,O;let a=i.trim();if(!a){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noConfigSpecified")});return}let o;try{o=JSON.parse(a)}catch(N){r.createDiv({cls:"ai3d-json-error"}).createEl("pre",{text:`JSON parse error: ${String(N)}`});return}if(o.preset!=="compose"&&(!o.models||o.models.length===0)){r.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.noModelsSpecified")});return}let l=o.preset==="compose"?1:Math.max(1,(M=(R=o.models)==null?void 0:R.length)!=null?M:1),c=(w=(y=o.models)==null?void 0:y[0])!=null?w:(D=(C=o.sections)==null?void 0:C[0])==null?void 0:D.models[0],f=typeof c=="string"?c:(G=c==null?void 0:c.path)!=null?G:"",d=r.createDiv({cls:"ai3d-grid-host"}),h=d.createEl("canvas");if(yQ(h),d.appendChild(h),typeof o.rowHeight=="number"){let N=o.preset==="compose"?1:Math.ceil(l/((O=o.columns)!=null?O:Math.min(l,3)));d.style.setProperty("--grid-height",`${o.rowHeight*N}px`)}let u=null,m=!1,_=!1,p=!1,g=0,v=null,T=null;CQ(h,()=>m?null:u);let S=tE(r,d,n,()=>u,()=>f,()=>{m||(m=!0,v==null||v.disconnect(),T==null||T.disconnect(),E(),d.remove())},e);MJ(r);function E(){g+=1,p=!1,_=!1,u==null||u.destroy(),u=null,S.syncCapabilities()}v=new MutationObserver(()=>{m||r.contains(d)||(m=!0,v==null||v.disconnect(),T==null||T.disconnect(),E())}),v.observe(r,{childList:!0});async function A(){if(_||p||m)return;p=!0;let N=++g,B=qh(d);B.setPhaseKey("codeBlock.renderingGrid"),B.setProgress(-1);try{await mE(async()=>{var de,ge,Ue,oe,ve,ie,ue,Pe,me,be;if(m||N!==g||!d.isConnected){B.hide();return}let V=e(),Q=[];for(let De of(de=o.models)!=null?de:[]){let ut=await bJ(n,De,V,t);Q.push(ut)}let K=Q.map(De=>De.model);f=(Ue=(ge=Q[0])==null?void 0:ge.sourcePath)!=null?Ue:f;let{renderer:J}=await mF(xJ,{surface:"3dgrid",preset:(oe=o.preset)!=null?oe:"compare",modelCount:(ie=(ve=o.models)==null?void 0:ve.length)!=null?ie:0},h);if(m||N!==g||!d.isConnected){J.destroy(),B.hide();return}u=J,S.syncCapabilities();let z=u,Y=async De=>po(n,De);if(o.preset==="compose"){if(!o.sections||o.sections.length===0){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeRequiresSections")}),u.destroy(),u=null;return}let De=[];for(let Ye of o.sections)try{if(!f){let Qt=Ye.models[0];if(Qt){let Pt=typeof Qt=="string"?Qt:Qt.path;f=(ue=Ef(n,Pt))!=null?ue:Pt}}let je=await gAe(n,Ye,V,t);De.push(je)}catch(je){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:je instanceof Error?je.message:String(je)}),z.destroy(),u=null;return}let ut=d1(De,(Pe=o.direction)!=null?Pe:"horizontal",Number((me=o.params)==null?void 0:me.gap)||.02,Ye=>typeof Ye=="string"?null:Ye,u1);if(!ut){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:j("codeBlock.composeNoValidSections")}),z.destroy(),u=null;return}await z.loadWithPreset(ut,Y)}else if(o.preset){let De=u1(o.preset);if(!De){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ki("codeBlock.unknownPreset",{preset:o.preset})}),z.destroy(),u=null;return}let ut=De.compute(K,(be=o.params)!=null?be:{});if(!ut){B.hide(),d.createDiv({cls:"ai3d-inline-empty",text:Ki("codeBlock.presetRequiresModels",{preset:o.preset,min:String(De.minModels),max:String(De.maxModels),count:String(K.length)})}),z.destroy(),u=null;return}await z.loadWithPreset(ut,Y)}else await z.loadModels(K,o,Y);if(m||N!==g){B.hide();return}_=!0,B.hide()})}catch(V){if(N!==g||m){B.hide();return}m=!0,v==null||v.disconnect(),T==null||T.disconnect(),B.hide(),u==null||u.destroy(),u=null,console.error("[AI3D Grid] Failed:",V),d.createDiv({cls:"ai3d-inline-empty",text:V instanceof Error?V.message:Ki("codeBlock.gridFailed",{reason:String(V)})})}finally{N===g&&(p=!1)}}T=new IntersectionObserver(N=>{N.some(V=>V.isIntersecting||V.intersectionRatio>0)?A():(_||p)&&E()},{rootMargin:"200px"}),T.observe(d)}}}var xJ,yJ=I(()=>{"use strict";eo();MM();Kh();_s();AJ();vF();WM();EF();HM();zM();XM();qp();_n();oE();ua();On();KM();p1();QM();xJ=qi("inline-code-block")});var DJ={};Fe(DJ,{registerLazyCodeBlockProcessor:()=>AAe,registerLazyGridCodeBlockProcessor:()=>xAe});function CJ(){return E0!=null||(E0=Promise.resolve().then(()=>(yJ(),IJ))),E0}function PJ(n){return(e,t,i)=>{let r=cl("ai3d-preview-host ai3d-code-block-lazy");r.setAttribute("aria-busy","true"),t.appendChild(r);let s=async()=>{if(r.isConnected)try{let o=await n();if(!r.isConnected)return;r.remove(),await o(e,t,i)}catch(o){console.warn("[AI3D] Failed to load inline code block runtime:",o);let l=r.isConnected?r:cl();r.isConnected||t.appendChild(l),l.classList.remove("ai3d-preview-host"),l.classList.add("ai3d-inline-empty"),l.removeAttribute("aria-busy"),l.textContent="Ai3d inline preview failed to load."}};if(typeof IntersectionObserver=="undefined"){s();return}let a=new IntersectionObserver(o=>{o.some(l=>l.isIntersecting||l.intersectionRatio>0)&&(a.disconnect(),s())},{rootMargin:TAe});a.observe(r)}}function AAe(n,e,t,i){let r=null;return{id:"3d",handler:PJ(async()=>(r!=null||(r=CJ().then(a=>a.registerCodeBlockProcessor(n,e,t,i).handler)),r))}}function xAe(n,e,t){let i=null;return{id:"3dgrid",handler:PJ(async()=>(i!=null||(i=CJ().then(s=>s.registerGridCodeBlockProcessor(n,e,t).handler)),i))}}var E0,TAe,LJ=I(()=>{"use strict";cm();E0=null,TAe="240px"});var OJ={};Fe(OJ,{setupHeadingPinObserver:()=>bAe});function RAe(n){if(n.length===0)return"var(--interactive-accent)";if(n.length===1)return n[0];let e=100/n.length;return`linear-gradient(135deg, ${n.map((t,i)=>{let r=Math.round(i*e),s=Math.round((i+1)*e);return`${t} ${r}% ${s}%`}).join(", ")})`}function _1(n){return n.map(e=>`${e.pinId}:${e.modelPath}:${e.color}`).sort().join("|")}function S0(n){return Array.from(n.entries()).map(([e,t])=>`${e}=>${_1(t)}`).sort().join("||")}function bAe(n){let e=new Map,t=null,i=new Map,r="",s=!1,a=null,o=new Set,l=0,c=O=>{var V;if(O===t)return!1;let N=new Map,B=t===null;for(let[Q,K]of Object.entries(O)){let J=(V=K.annotations)!=null?V:[];N.set(Q,J),i.get(Q)!==J&&(B=!0)}return N.size!==i.size&&(B=!0),t=O,i=N,B},f=(O=n.getModelAssetProfiles())=>lJ(O),d=O=>Nl(Array.from(O.childNodes).map(N=>{var B;return N.instanceOf(Element)&&N.classList.contains("ai3d-heading-pin-badge")?"":(B=N.textContent)!=null?B:""}).join(" ")),h=O=>{let N=e.get(O);N&&(O.removeEventListener("mouseover",N.handler),N.badge.remove(),delete O.dataset.pinBound,e.delete(O))},u=(O,N)=>{if(N.length===0){h(O);return}let B=_1(N),V=e.get(O);if((V==null?void 0:V.signature)===B)return;V&&h(O),O.dataset.pinBound=B;let Q=O.createSpan({cls:"ai3d-heading-pin-badge"}),K=[...new Set(N.map(ge=>ge.color).filter(Boolean))],J=Q.createSpan({cls:"ai3d-heading-pin-badge-swatch"});if(J.style.background=RAe(K),J.title=N.length>1?j("headingPin.showMultiple"):j("headingPin.showSingle"),J.setAttribute("role","button"),J.setAttribute("tabindex","0"),N.length>1){let ge=Q.createSpan({cls:"ai3d-heading-pin-badge-count"});ge.textContent=`\xD7${N.length}`}let z=[...new Set(N.map(ge=>ln(ge.modelPath)))];Q.title=Ki("headingPin.linkedTo",{models:z.join(", ")});let Y=ge=>{ge==null||ge.stopPropagation(),ge==null||ge.preventDefault();for(let Ue of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:Ue.pinId}}))};J.addEventListener("click",ge=>{Y(ge)}),J.addEventListener("keydown",ge=>{ge.instanceOf(KeyboardEvent)&&(ge.key!=="Enter"&&ge.key!==" "||Y(ge))}),Q.addEventListener("click",ge=>{ge.stopPropagation()}),O.appendChild(Q);let de=()=>{for(let ge of N)activeDocument.dispatchEvent(new CustomEvent("ai3d-pin-highlight",{detail:{pinId:ge.pinId}}))};O.addEventListener("mouseover",de),e.set(O,{badge:Q,handler:de,signature:B})},m=(O,N)=>{var V;let B=d(O);u(O,(V=N.get(B))!=null?V:[])},_=O=>{var N;for(let[B,V]of Array.from(e.entries())){if(!B.isConnected){h(B);continue}let Q=(N=O.get(d(B)))!=null?N:[],K=_1(Q);(Q.length===0||V.signature!==K)&&u(B,Q)}},p=(O,N)=>{O.querySelectorAll(_E).forEach(B=>m(B,N))},g=()=>{let O=n.getModelAssetProfiles();c(O);let N=f(O);if(r=S0(N),s=N.size>0,!s){_(N),D();return}C(),_(N),activeDocument.querySelectorAll(pE).forEach(V=>p(V,N))},v=0,T=(O=0)=>{v&&window.clearTimeout(v),v=window.setTimeout(()=>{v=0,g()},O)},S=n.subscribeStore(()=>{let O=n.getModelAssetProfiles();if(!c(O))return;let N=f(O),B=S0(N);if(B!==r){if(r=B,s=N.size>0,!s){_(N),D();return}C(),T()}});n.onLayoutChange(()=>{!s&&f().size===0||T(200)});let E=O=>O.matches(pE)||O.matches(_E)?!0:!!O.querySelector(pE)||!!O.querySelector(_E),A=O=>O.isConnected&&E(O),R=O=>E(O),M=()=>{var B,V,Q,K,J,z;let O=Array.from(o);o.clear(),l=0;let N=f();_(N);for(let Y of O)Y.isConnected&&((B=Y.matches)!=null&&B.call(Y,_E)&&m(Y,N),(Q=(V=Y.querySelectorAll)==null?void 0:V.call(Y,_E))==null||Q.forEach(de=>m(de,N)),(K=Y.matches)!=null&&K.call(Y,pE)&&p(Y,N),(z=(J=Y.querySelectorAll)==null?void 0:J.call(Y,pE))==null||z.forEach(de=>p(de,N)));r=S0(N),s=N.size>0,s||D()},y=O=>{if(!s)return;let N=!1;for(let B of O){for(let V of Array.from(B.addedNodes))V.instanceOf(HTMLElement)&&A(V)&&(o.add(V),N=!0);for(let V of Array.from(B.removedNodes))V.instanceOf(HTMLElement)&&R(V)&&(N=!0)}N&&!l&&(l=window.setTimeout(M,100))};function C(){a||(a=new MutationObserver(y),a.observe(activeDocument.body,{childList:!0,subtree:!0}))}function D(){a==null||a.disconnect(),a=null,o.clear(),l&&(window.clearTimeout(l),l=0)}n.registerCleanup(()=>{S(),D(),l&&(window.clearTimeout(l),l=0),v&&(window.clearTimeout(v),v=0);for(let O of Array.from(e.keys()))h(O)});let w=n.getModelAssetProfiles();c(w);let G=f(w);r=S0(G),s=G.size>0,s&&(C(),T(500))}var pE,_E,NJ=I(()=>{"use strict";_n();fE();_s();o1();pE=".markdown-preview-view, .markdown-source-view",_E=[".markdown-preview-view h1",".markdown-preview-view h2",".markdown-preview-view h3",".markdown-preview-view h4",".markdown-preview-view h5",".markdown-preview-view h6",".cm-heading-1",".cm-heading-2",".cm-heading-3",".cm-heading-4",".cm-heading-5",".cm-heading-6",".cm-header-1",".cm-header-2",".cm-header-3",".cm-header-4",".cm-header-5",".cm-header-6"].join(", ")});function MAe(n){return n.includes("![[")}function T0(n){let e="";for(let t of n.iter()){if(!t)continue;let i=e?e+t:t;if(i.includes("![["))return!0;e=i.slice(-2)}return!1}function wJ(n,e){return Math.max(0,Math.min(e,n.length))}function FJ(n,e,t){if(n.length===0)return!1;let i=n.lineAt(wJ(n,e)),r=n.lineAt(wJ(n,t));for(let s=i.number;s<=r.number;s++)if(MAe(n.line(s).text))return!0;return!1}function A0(n){if(!n.docChanged)return!1;let e=!1;return n.changes.iterChanges((t,i,r,s)=>{e||(e=FJ(n.startState.doc,t,i)||FJ(n.state.doc,r,s))}),e}var g1=I(()=>{"use strict"});function BJ(n,e,t=512){let i=new Map;return{resolve(r){var a;if(i.has(r))return(a=i.get(r))!=null?a:null;let s=e(n,r);if(i.set(r,s),i.size>t){let o=i.keys().next().value;o!==void 0&&i.delete(o)}return s},clear(){i.clear()}}}var UJ=I(()=>{"use strict"});var kJ={};Fe(kJ,{ModelEmbedWidget:()=>x0,registerLivePreviewExtension:()=>yAe});function VJ(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v){var A,R;let T="state"in n?n.state.doc:n.doc,S=[];if(!T0(T))return S;let E=0;for(let M of T.iterLines()){let y=E+M.length+1;if(!M.includes("![[")){E=y;continue}let C=0;for(;C0&&M[D-1]==="\\"){C=D+"![[".length;continue}let w=M.indexOf("]]",D+"![[".length);if(w===-1)break;let O=M.slice(D+"![[".length,w).split("|"),N=O[0].trim(),B=(R=(A=N.split(".").pop())==null?void 0:A.toLowerCase())!=null?R:"";if(!Ja(B)){C=w+2;continue}let V=400,Q=300;if(O.length>1){let J=O[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);J&&(V=parseInt(J[1],10),Q=parseInt(J[2],10))}let K=Ef(e,N);if(!K){C=w+2;continue}S.push(c_.Decoration.replace({widget:new x0(e,K,V,Q,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v),block:!0}).range(E+D,E+w+2)),C=w+2}E=y}return S}function GJ(n){return n.length===0?tu.RangeSet.empty:tu.RangeSet.of(n,!0)}function yAe(n,e,t,i){let r=tu.StateField.define({create(s){let a=e(),o=VJ(s,n,a.autoRotateDefault,a.enabledConverterIds,a.freecadCommand,a.obj2gltfCommand,a.fbx2gltfCommand,a.freecadcmdCommand,a.preferObj2gltfForObj,a.preferFbx2gltfForFbx,a.annotationPreviewMode,a.annotationDisplayMode,a.previewRendererRollout,a.useThreeRenderer,a.auxiliaryFileFolder,a.renderQuality,a.renderScale,t,i);return GJ(o)},update(s,a){if(a.docChanged){if(!A0(a))return s.map(a.changes);let o=e(),l=VJ(a.state,n,o.autoRotateDefault,o.enabledConverterIds,o.freecadCommand,o.obj2gltfCommand,o.fbx2gltfCommand,o.freecadcmdCommand,o.preferObj2gltfForObj,o.preferFbx2gltfForFbx,o.annotationPreviewMode,o.annotationDisplayMode,o.previewRendererRollout,o.useThreeRenderer,o.auxiliaryFileFolder,o.renderQuality,o.renderScale,t,i);return GJ(l)}return s.map(a.changes)},provide:s=>c_.EditorView.decorations.from(s)});return[tu.Prec.highest(r)]}var c_,tu,IAe,x0,WJ=I(()=>{"use strict";c_=require("@codemirror/view"),tu=require("@codemirror/state");eo();_s();zM();XM();cm();ua();_n();On();KM();_F();g1();p1();QM();IAe=qi("inline-live-preview"),x0=class extends c_.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.auxiliaryFileFolder=v;this.renderQuality=T;this.renderScale=S;this.convertedAssetCache=E;this.getAnnotations=A;this.preview=null;this.annotationMgr=null;this.readyObs=null;this.viewportObs=null;this.pollId=0;this.initStarted=!1;this.destroyed=!1;this.initGeneration=0;this.viewportReady=!1;this.zoomControl=null}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=xr(),i=cl("ai3d-embed-preview ai3d-cm-widget");i.setAttribute("contenteditable","false"),t&&i.classList.add("is-mobile","is-mobile-scroll-mode");let r=ih("canvas","ai3d-embed-canvas"),s=t?Math.min(this.height,220):this.height;r.style.setProperty("--ai3d-embed-height",`${s}px`),Jp(r,"live-preview",this.modelPath),e_(r,()=>this.destroyed?null:this.preview),i.appendChild(r),this.zoomControl=BM(i,()=>this.preview);let a=qh(i),o=cl("ai3d-embed-error is-hidden");if(i.appendChild(o),t){let f=!1,d=cl("ai3d-mobile-mode-bar"),h=cl("ai3d-mobile-mode-hint");h.textContent=j("livePreview.mobileHint");let u=ih("button","ai3d-mobile-mode-btn");u.type="button";let m=()=>{i.classList.toggle("is-mobile-interactive",f),i.classList.toggle("is-mobile-scroll-mode",!f),u.textContent=f?j("helper.scrollAction"):j("helper.interactAction"),u.classList.toggle("ai3d-btn-active",f),u.setAttribute("aria-label",f?j("helper.disableInteractionLabel"):j("helper.enableInteractionLabel"))};u.addEventListener("click",()=>{f=!f,m()}),m(),d.append(h,u),i.appendChild(d)}let l=()=>{this.destroyed||this.initStarted||this.viewportReady&&(!i.isConnected||r.clientWidth<=0||r.clientHeight<=0||(this.initStarted=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),this.initPreview(i,r,a,o,++this.initGeneration)))};this.readyObs=new ResizeObserver(()=>l()),this.readyObs.observe(i),this.readyObs.observe(r);let c=()=>{if(this.pollId||this.destroyed||this.initStarted)return;let f=0,d=()=>{this.pollId=0,!(this.destroyed||this.initStarted)&&(l(),!this.initStarted&&(++f>240||(this.pollId=window.requestAnimationFrame(d))))};this.pollId=window.requestAnimationFrame(d)};return typeof IntersectionObserver=="undefined"?(this.viewportReady=!0,c(),l()):(this.viewportObs=new IntersectionObserver(f=>{this.destroyed||this.initStarted||f.some(d=>d.isIntersecting||d.intersectionRatio>0)&&(this.viewportReady=!0,this.stopViewportWatch(),c(),l())},{rootMargin:"200px"}),this.viewportObs.observe(i)),i}stopReadyPoll(){this.pollId&&(window.cancelAnimationFrame(this.pollId),this.pollId=0)}async initPreview(t,i,r,s,a){var o;try{r.setPhaseKey("loading.preparingModel"),await mE(async()=>{var C,D,w,G,O,N,B,V,Q,K;if(this.destroyed||a!==this.initGeneration||!t.isConnected){r.hide();return}let[{prepareModelInput:l},{listPreferredConversionExts:c},{createLoggedModelPreview:f},{supportsAnnotationPreview:d},{AnnotationManager:h},{createNoteReader:u},{renderModelPerformanceFeedback:m}]=await Promise.all([Promise.resolve().then(()=>(WM(),xQ)),Promise.resolve().then(()=>(HM(),RQ)),Promise.resolve().then(()=>(MM(),oQ)),Promise.resolve().then(()=>(Kh(),dQ)),Promise.resolve().then(()=>(c0(),l0)),Promise.resolve().then(()=>(d0(),f0)),Promise.resolve().then(()=>(oE(),SF))]),_=(C=$l(this.app,this.modelPath))!=null?C:void 0;r.setPhaseKey("loading.preparingModel");let p=Zh(this.app,{auxiliaryFileFolder:this.auxiliaryFileFolder}),g=await l({path:this.modelPath,absolutePath:_,preferConversionExts:c({preferObj2gltfForObj:this.preferObj2gltfForObj,preferFbx2gltfForFbx:this.preferFbx2gltfForFbx}),conversionManager:async()=>{let{createConversionManager:J}=await Promise.resolve().then(()=>(o0(),a0));return J({enabledConverterIds:this.enabledConverterIds,freecadCommand:this.freecadCommand,obj2gltfCommand:this.obj2gltfCommand,fbx2gltfCommand:this.fbx2gltfCommand,freecadcmdCommand:this.freecadcmdCommand})},convertedAssetCache:this.convertedAssetCache,conversionOutputRoot:p}),v=(w=(D=this.getAnnotations)==null?void 0:D.call(this,this.modelPath))!=null?w:[],T={ext:g.effectiveExt,annotationMode:v.length>0?"readonly":"none",rendererRollout:this.previewRendererRollout,useThreeRenderer:this.useThreeRenderer},S=n_(this.app,g.effectivePath,{renderQuality:this.renderQuality,renderScale:this.renderScale}),E=po(this.app,g.effectivePath);S.catch(()=>{}),E.catch(()=>{});let{preview:A}=await f(IAe,{surface:"live-preview",modelPath:this.modelPath},i,T);if(this.destroyed||a!==this.initGeneration){A.destroy();return}this.preview=A,(G=this.zoomControl)==null||G.sync();let R=await S;(N=(O=this.preview).setRenderQuality)==null||N.call(O,R.renderQuality,R.renderScale),r.setPhaseKey("loading.loadingModel");let M=await E;if(this.destroyed||a!==this.initGeneration){(B=this.preview)==null||B.destroy(),this.preview=null;return}let y=await this.preview.loadModel(M,g.effectiveExt,J=>po(this.app,J),g.effectivePath);if(this.destroyed||a!==this.initGeneration){(V=this.preview)==null||V.destroy(),this.preview=null,(Q=this.zoomControl)==null||Q.sync();return}if(m(t,y),(K=this.zoomControl)==null||K.sync(),this.autoRotate&&this.preview.applyConfig({models:[],scene:{autoRotate:!0,autoRotateSpeed:.5}}),v.length>0&&d(this.preview)){let J=this.preview.getAnnotationProvider();J.canvas&&(this.annotationMgr=new h(J,t,"readonly",v,void 0,u(this.app),void 0,{app:this.app,previewMode:this.annotationPreviewMode,displayMode:this.annotationDisplayMode}))}r.setProgress(100),r.hide()})}catch(l){if(this.destroyed||a!==this.initGeneration)return;(o=this.preview)==null||o.destroy(),this.preview=null,r.hide(),s.remove(),t.replaceChildren();let[{describeModelLoadFailure:c,isMissingConverterError:f},{renderModelLoadFailure:d}]=await Promise.all([Promise.resolve().then(()=>(qp(),gQ)),Promise.resolve().then(()=>(oE(),SF))]),h=c(l);f(l)?console.warn("[AI3D] Live Preview blocked by converter settings:",h.message):console.error("[AI3D] Live Preview failed:",l),d(t,h)}finally{r.hide()}}destroy(){var t,i;this.destroyed=!0,this.stopReadyPoll(),this.stopReadyWatch(),this.stopViewportWatch(),(t=this.annotationMgr)==null||t.destroy(),this.annotationMgr=null,(i=this.zoomControl)==null||i.destroy(),this.zoomControl=null,this.preview&&(this.preview.destroy(),this.preview=null),this.initStarted=!1,this.viewportReady=!1}stopReadyWatch(){var t;(t=this.readyObs)==null||t.disconnect(),this.readyObs=null}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}ignoreEvent(){return!0}}});var XJ={};Fe(XJ,{registerLazyLivePreviewExtension:()=>PAe});function CAe(){return R0!=null||(R0=Promise.resolve().then(()=>(WJ(),kJ))),R0}function HJ(n,e,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T){var R,M;let S="state"in n?n.state.doc:n.doc,E=[];if(!T0(S))return E;let A=0;for(let y of S.iterLines()){let C=A+y.length+1;if(!y.includes("![[")){A=C;continue}let D=0;for(;D0&&y[w-1]==="\\"){D=w+"![[".length;continue}let G=y.indexOf("]]",w+"![[".length);if(G===-1)break;let N=y.slice(w+"![[".length,G).split("|"),B=N[0].trim(),V=(M=(R=B.split(".").pop())==null?void 0:R.toLowerCase())!=null?M:"";if(!Ja(V)){D=G+2;continue}let Q=400,K=300;if(N.length>1){let z=N[1].trim().match(/^(\d+)\s*x\s*(\d+)$/);z&&(Q=parseInt(z[1],10),K=parseInt(z[2],10))}let J=v.resolve(B);if(!J){D=G+2;continue}E.push(f_.Decoration.replace({widget:new v1(e,J,Q,K,t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,T),block:!0}).range(A+w,A+G+2)),D=G+2}A=C}return E}function zJ(n){return n.length===0?iu.RangeSet.empty:iu.RangeSet.of(n,!0)}function PAe(n,e,t,i,r){let s=BJ(n,Ef),a=()=>s.clear(),o=[n.vault.on("create",a),n.vault.on("delete",a),n.vault.on("rename",a)];r==null||r(()=>{for(let c of o)n.vault.offref(c)});let l=iu.StateField.define({create(c){let f=e(),d=HJ(c,n,f.autoRotateDefault,f.enabledConverterIds,f.freecadCommand,f.obj2gltfCommand,f.fbx2gltfCommand,f.freecadcmdCommand,f.preferObj2gltfForObj,f.preferFbx2gltfForFbx,f.annotationPreviewMode,f.annotationDisplayMode,f.previewRendererRollout,f.useThreeRenderer,f.auxiliaryFileFolder,f.renderQuality,f.renderScale,t,s,i);return zJ(d)},update(c,f){if(f.docChanged){if(!A0(f))return c.map(f.changes);let d=e(),h=HJ(f.state,n,d.autoRotateDefault,d.enabledConverterIds,d.freecadCommand,d.obj2gltfCommand,d.fbx2gltfCommand,d.freecadcmdCommand,d.preferObj2gltfForObj,d.preferFbx2gltfForFbx,d.annotationPreviewMode,d.annotationDisplayMode,d.previewRendererRollout,d.useThreeRenderer,d.auxiliaryFileFolder,d.renderQuality,d.renderScale,t,s,i);return zJ(h)}return c.map(f.changes)},provide:c=>f_.EditorView.decorations.from(c)});return[iu.Prec.highest(l)]}var f_,iu,R0,v1,YJ=I(()=>{"use strict";f_=require("@codemirror/view"),iu=require("@codemirror/state");eo();_s();g1();UJ();cm();R0=null;v1=class extends f_.WidgetType{constructor(t,i,r,s,a,o,l,c,f,d,h,u,m,_,p,g,v,T,S,E,A){super();this.app=t;this.modelPath=i;this.width=r;this.height=s;this.autoRotate=a;this.enabledConverterIds=o;this.freecadCommand=l;this.obj2gltfCommand=c;this.fbx2gltfCommand=f;this.freecadcmdCommand=d;this.preferObj2gltfForObj=h;this.preferFbx2gltfForFbx=u;this.annotationPreviewMode=m;this.annotationDisplayMode=_;this.previewRendererRollout=p;this.useThreeRenderer=g;this.auxiliaryFileFolder=v;this.renderQuality=T;this.renderScale=S;this.convertedAssetCache=E;this.getAnnotations=A;this.mountedWidget=null;this.mountedDom=null;this.viewportObs=null;this.destroyed=!1}eq(t){return this.modelPath===t.modelPath&&this.width===t.width&&this.height===t.height&&this.autoRotate===t.autoRotate&&this.enabledConverterIds.join("|")===t.enabledConverterIds.join("|")&&this.freecadCommand===t.freecadCommand&&this.obj2gltfCommand===t.obj2gltfCommand&&this.fbx2gltfCommand===t.fbx2gltfCommand&&this.freecadcmdCommand===t.freecadcmdCommand&&this.preferObj2gltfForObj===t.preferObj2gltfForObj&&this.preferFbx2gltfForFbx===t.preferFbx2gltfForFbx&&this.annotationPreviewMode===t.annotationPreviewMode&&this.annotationDisplayMode===t.annotationDisplayMode&&this.previewRendererRollout===t.previewRendererRollout&&this.useThreeRenderer===t.useThreeRenderer&&this.auxiliaryFileFolder===t.auxiliaryFileFolder&&this.renderQuality===t.renderQuality&&this.renderScale===t.renderScale&&this.convertedAssetCache===t.convertedAssetCache}toDOM(){let t=cl("ai3d-embed-preview ai3d-cm-widget ai3d-embed-preview-lazy");return t.setAttribute("contenteditable","false"),t.style.setProperty("--ai3d-embed-height",`${this.height}px`),this.watchViewport(t),t}destroy(){var t,i;this.destroyed=!0,this.stopViewportWatch(),(t=this.mountedWidget)==null||t.destroy(),this.mountedWidget=null,(i=this.mountedDom)==null||i.remove(),this.mountedDom=null}ignoreEvent(){return!0}watchViewport(t){if(typeof IntersectionObserver=="undefined"){this.mount(t);return}this.viewportObs=new IntersectionObserver(i=>{this.destroyed||this.mountedWidget||i.some(r=>r.isIntersecting||r.intersectionRatio>0)&&(this.stopViewportWatch(),this.mount(t))},{rootMargin:"240px"}),this.viewportObs.observe(t)}stopViewportWatch(){var t;(t=this.viewportObs)==null||t.disconnect(),this.viewportObs=null}async mount(t){let i;try{i=await CAe()}catch(a){console.warn("[AI3D] Failed to load Live Preview widget runtime:",a),!this.destroyed&&t.isConnected&&(t.textContent="Ai3d live preview failed to load.");return}let r=new i.ModelEmbedWidget(this.app,this.modelPath,this.width,this.height,this.autoRotate,this.enabledConverterIds,this.freecadCommand,this.obj2gltfCommand,this.fbx2gltfCommand,this.freecadcmdCommand,this.preferObj2gltfForObj,this.preferFbx2gltfForFbx,this.annotationPreviewMode,this.annotationDisplayMode,this.previewRendererRollout,this.useThreeRenderer,this.auxiliaryFileFolder,this.renderQuality,this.renderScale,this.convertedAssetCache,this.getAnnotations);if(this.destroyed||!t.isConnected){r.destroy();return}let s=r.toDOM();if(this.destroyed||!t.isConnected){r.destroy();return}this.mountedWidget=r,this.mountedDom=s,t.replaceWith(s)}}});var jJ={};Fe(jJ,{ModelFileSuggestModal:()=>E1});var KJ,E1,ZJ=I(()=>{"use strict";KJ=require("obsidian");eo();_n();E1=class extends KJ.FuzzySuggestModal{constructor(e,t){super(e),this.onChoose=t,this.setPlaceholder(j("modal.selectModel"))}getItems(){return this.app.vault.getFiles().filter(e=>{let t=e.extension.toLowerCase();return Ja(t)})}getItemText(e){return e.path}onChooseItem(e){this.onChoose(e)}}});function qJ(n,e){return n==="three"?{backend:n,supportedFormats:DAe,fallbackRole:"Primary single-model preview path",capabilities:[...e],colorPipeline:"sRGB output, no tone mapping, PBR material preservation",fidelityNotes:["Direct GLB/GLTF/STL/PLY/OBJ are expected to preserve geometry scale and material color intent.","Workbench, grid, and SPLAT routes still keep Babylon fallback coverage."]}:{backend:n,supportedFormats:LAe,fallbackRole:"Capability and compatibility backend",capabilities:[...e],colorPipeline:"Babylon material pipeline with conservative fallback behavior",fidelityNotes:["3dgrid, conservative workbench, SPLAT, and converted workbench inputs remain on Babylon.","Babylon remains the rollback path when Three direct rendering is disabled."]}}function QJ(n){return n.backend==="three"?qJ("three",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"]):qJ("babylon",["annotation","animation","measurement","disassembly","focus-selection","wireframe","orientation-gizmo","bounding-box","render-scale","camera-zoom","workbench"])}function $J(n){return[`${n.backend}`,`formats=${n.supportedFormats.join("/")}`,`capabilities=${n.capabilities.join("/")||"none"}`,`role=${n.fallbackRole}`].join("; ")}var DAe,LAe,JJ=I(()=>{"use strict";Kh();DAe=["glb","gltf","stl","ply","obj"],LAe=["glb","gltf","stl","ply","obj","splat","converted-glb"]});var tee={};Fe(tee,{buildDiagnosticsReport:()=>WAe});function vE(n){return typeof n=="boolean"?n?"on":"off":typeof n=="number"?Number.isFinite(n)?String(n):"unknown":typeof n=="string"?n.length>0?n:"empty":"unknown"}function OAe(n){var i;let e=(i=n.split(/[\\/]/).pop())!=null?i:n,t=e.lastIndexOf(".");return t<=0||t===e.length-1?"":`.${e.slice(t+1).toLowerCase()}`}function ru(n,e,t){if(!n)return t;if(e)return n;let i=OAe(n);return i?``:""}function gE(n,e){return n?`set (${ru(n,e,"not set")})`:"not set"}function NAe(n){let e=n.settings;return e.analysisMode==="local"?"local only":[e.analysisMode,e.serviceBaseUrl.trim()?"service configured":"service missing",`geometry ${vE(e.sendGeometrySummaryToRemote)}`,`preview refs ${vE(e.sendPreviewImagesToRemote)}`,`raw model ${e.sendRawModelToRemote?"blocked if requested":"off"}`].join(", ")}function wAe(n){let e=n.currentModelPath;return e?n.modelAssetProfiles[e]:void 0}function FAe(n){let e=n.lastKnowledgeGeneration;return e?e.status==="pending"?"pending or interrupted; rerun generation to replace the marker":e.status==="failed"?"failed; inspect console details and rerun after fixing the issue":e.warningCount>0?"completed with warnings":"none":"none"}function GAe(n){let e=new Set(n.enabledConverterIds);return BAe.map(t=>{let i=n[t.settingsKey].trim(),r=i.length===0?"command not configured":UAe.test(i)?"command configured, unsafe command rejected":"command configured, path redacted";return`${t.label}: ${e.has(t.id)?"enabled":"disabled"}, ${r}`}).join("; ")}function kAe(n){let e=n.convertedAssetRecords;if(e.length===0)return"none";let t=new Set(e.map(r=>`${r.sourcePath}:${r.sourceExt}:${r.targetExt}`)).size,i=e.filter(r=>r.warnings.length>0).length;return[`${e.length} record(s) for ${t} source(s)`,"validated before reuse for cache version, converter identity, output presence, and source freshness",i>0?`${i} record(s) carry warning text`:""].filter(Boolean).join("; ")}function WAe(n){var c,f,d,h,u,m,_,p,g;let{manifest:e,state:t}=n,i=t.settings,r=wAe(t),s=n.includeVaultPaths===!0,a=t.currentModelPath?fu({ext:(c=t.currentModelPath.split(".").pop())!=null?c:"",annotationMode:r!=null&&r.annotations.length?"readonly":"none",allowEditModeOnThree:!0,allowWorkbenchFeaturesOnThree:i.experimentalThreeWorkbench,rendererRollout:i.previewRendererRollout,useThreeRenderer:i.useThreeRenderer}):null,o=a?QJ(a):null,l=t.lastKnowledgeGeneration;return["# AI Model Workbench Diagnostics","",`Generated: ${(f=n.generatedAt)!=null?f:new Date().toISOString()}`,"","## Runtime","",`- Plugin version: ${e.version}`,`- Minimum Obsidian version: ${e.minAppVersion}`,`- Obsidian API version: ${eee.apiVersion}`,`- Platform: ${xr()?"mobile":"desktop"}`,`- Locale: ${i.locale}`,"","## Renderer","",`- Use Three renderer: ${vE(i.useThreeRenderer)}`,`- Converted GLB Three fast path: ${vE(i.useThreeForConvertedDirectView)}`,`- Preview rollout: ${i.previewRendererRollout}`,`- Experimental Three workbench: ${vE(i.experimentalThreeWorkbench)}`,`- Current route: ${a?`${a.backend} (${a.reason})`:"no current model"}`,`- Route capability profile: ${o?$J(o):"no current model"}`,`- Route color pipeline: ${(d=o==null?void 0:o.colorPipeline)!=null?d:"no current model"}`,`- Render quality: ${i.renderQuality}`,`- Render scale: ${i.renderScale}`,"","## Current Model","",`- Path: ${ru(t.currentModelPath,s,"none")}`,`- Preview summary: ${t.modelPreview?`${t.modelPreview.meshCount} mesh(es), ${t.modelPreview.triangleCount.toLocaleString()} triangle(s), ${t.modelPreview.materialCount} material(s)`:"not captured"}`,`- Annotation count: ${(h=r==null?void 0:r.annotations.length)!=null?h:0}`,`- Registered part candidates: ${(m=(u=r==null?void 0:r.registeredParts)==null?void 0:u.length)!=null?m:0}`,`- Report note: ${gE(r==null?void 0:r.reportNotePath,s)}`,`- Analysis sidecar: ${gE(r==null?void 0:r.analysisSidecarPath,s)}`,`- Knowledge index: ${gE(r==null?void 0:r.knowledgeIndexPath,s)}`,"","## Knowledge Generation","",`- Mode: ${NAe(t)}`,`- Report folder: ${ru(i.reportFolder,s,"empty")}`,`- Part notes folder: ${ru(i.partFolder,s,"empty")}`,`- Snapshot folder: ${ru(i.previewFolder,s,"empty")}`,`- Last generation: ${l?`${l.status} at ${l.generatedAt}`:"none"}`,`- Last generation attention: ${FAe(t)}`,`- Last generated model: ${ru(l==null?void 0:l.modelPath,s,"none")}`,`- Last report: ${gE(l==null?void 0:l.reportNotePath,s)}`,`- Last index: ${gE(l==null?void 0:l.knowledgeIndexPath,s)}`,`- Last part notes: ${(_=l==null?void 0:l.partNoteCount)!=null?_:0}`,`- Last preview images: ${(p=l==null?void 0:l.previewImageCount)!=null?p:0}`,`- Last warning count: ${(g=l==null?void 0:l.warningCount)!=null?g:0}`,"","## Conversion","",`- Enabled converters: ${i.enabledConverterIds.length?i.enabledConverterIds.join(", "):"none"}`,`- Auxiliary file folder: ${i.auxiliaryFileFolder.trim()?ru(i.auxiliaryFileFolder,s,"empty"):"default config folder"}`,`- Cached conversions: ${t.convertedAssetRecords.length}`,`- Converter command status: ${GAe(i)}`,`- Conversion cache status: ${kAe(t)}`,`- Conversion timeout: ${VAe}ms outer budget`,"- Converter safety: missing converters report their converter id; unsafe configured commands are rejected before execution; command paths are redacted.",`- Supported direct/model extensions: ${Bl().join(", ")}`,"","## Notes","","- Draft service URL and command paths are intentionally omitted from this report.",s?"- Vault-relative model and note paths are included because includeVaultPaths was requested.":"- Vault-relative model, report, index, and folder paths are redacted by default.","- Attach this report with the model format, console error, and reproduction steps when filing a bug.",""].join(` +`)}var eee,BAe,UAe,VAe,iee=I(()=>{"use strict";eee=require("obsidian");eo();JJ();yE();ua();BAe=[{id:"freecad",label:"Python/CadQuery",settingsKey:"freecadCommand"},{id:"obj2gltf",label:"obj2gltf",settingsKey:"obj2gltfCommand"},{id:"fbx2gltf",label:"FBX2glTF",settingsKey:"fbx2gltfCommand"},{id:"assimp",label:"Python/trimesh",settingsKey:"assimpCommand"},{id:"freecadcmd",label:"FreeCADCmd",settingsKey:"freecadcmdCommand"}],UAe=/[;|&<>$`\r\n\t]/,VAe=3e5});var YAe={};Fe(YAe,{default:()=>b0});module.exports=fee(YAe);var Is=require("obsidian");C0();eo();F0();var nJ=require("obsidian");_n();ME();V0();var lAe=new Set(["glb","gltf","stl","ply","obj"]),cAe=10*1024*1024,g0=class extends nJ.FileView{constructor(t,i,r,s){super(t);this.getSettings=i;this.convertedAssetCache=r;this.ps=s;this.delegate=null;this.delegatePromise=null;this.closed=!1;this.manualLoadRequested=!1}getViewType(){return bd}getDisplayText(){var t,i;return(i=(t=this.file)==null?void 0:t.name)!=null?i:j("workbench.modelTitle")}getIcon(){return"box"}async onOpen(){this.closed=!1,this.file&&await this.loadOrDeferFile(this.file,!0)}async onLoadFile(t){await this.loadOrDeferFile(t,!1)}async loadOrDeferFile(t,i){if(this.closed=!1,!this.delegate&&!this.manualLoadRequested&&fAe(t,i)){this.renderDeferredLoad(t);return}await this.loadFileNow(t)}async loadFileNow(t){let i=await this.ensureDelegate();!i||this.closed||(i.file=t,await i.onLoadFile(t))}async onClose(){this.closed=!0,IE(this.contentEl);let t=this.delegate;this.delegate=null,await(t==null?void 0:t.onClose())}async ensureDelegate(){return this.delegate?this.delegate:(this.delegatePromise||(this.delegatePromise=this.loadDelegate()),this.delegatePromise)}async loadDelegate(){this.contentEl.empty(),Md(this.contentEl),this.contentEl.createDiv({cls:"ai3d-inline-empty",text:j("loading.preparingModel")});let{DirectModelView:t}=await Promise.resolve().then(()=>(rJ(),iJ)),i=new t(this.leaf,this.getSettings,this.convertedAssetCache,this.ps);return i.contentEl=this.contentEl,i.file=this.file,this.delegatePromise=null,this.closed?(await i.onClose(),null):(this.delegate=i,i)}renderDeferredLoad(t){this.contentEl.empty(),Md(this.contentEl);let i=this.contentEl.createDiv({cls:"ai3d-inline-empty ai3d-direct-load-gate"});i.createDiv({cls:"ai3d-direct-load-gate-title",text:j("directView.deferredLoadTitle")}),i.createDiv({cls:"ai3d-direct-load-gate-message",text:j("directView.deferredLoadMessage")});let r=i.createDiv({cls:"ai3d-direct-load-gate-meta"});r.createSpan({text:t.name}),r.createSpan({text:dAe(t.stat.size)}),i.createEl("button",{cls:"ai3d-direct-load-gate-button",text:j("directView.deferredLoadButton")}).addEventListener("click",()=>{this.manualLoadRequested=!0,this.loadFileNow(t).finally(()=>{this.manualLoadRequested=!1})})}};function fAe(n,e){if(!e)return!1;let t=n.extension.toLowerCase();return lAe.has(t)?n.stat.size>=cAe:!0}function dAe(n){if(!Number.isFinite(n)||n<=0)return"0 B";let e=["B","KB","MB","GB"],t=n,i=0;for(;t>=1024&&i=100||i===0?0:t>=10?1:2;return`${t.toFixed(r)} ${e[i]}`}ME();var oJ=require("obsidian"),v0=class extends oJ.PluginSettingTab{constructor(t,i){super(t,i);this.plugin=i;this.delegate=null;this.delegatePromise=null}display(){this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:"Loading AI model workbench settings..."}),this.ensureDelegate().then(t=>{t.containerEl=this.containerEl,t.display()}).catch(t=>{this.containerEl.empty(),this.containerEl.createEl("p",{cls:"setting-item-description",text:`Failed to load AI Model Workbench settings: ${String(t)}`})})}hide(){var t;(t=this.delegate)==null||t.hide()}ensureDelegate(){var t;return this.delegate?Promise.resolve(this.delegate):((t=this.delegatePromise)!=null||(this.delegatePromise=Promise.resolve().then(()=>(aJ(),sJ)).then(({AI3DSettingTab:i})=>{let r=new i(this.app,this.plugin);return this.delegate=r,this.delegatePromise=null,r}).catch(i=>{throw this.delegatePromise=null,i})),this.delegatePromise)}};On();_n();o1();ua();var S1=qi("main"),HAe=700,zAe=2500;function EE(n,e){return()=>{n().catch(t=>{S1.error(`Command ${e} failed`,{error:String(t)}),new Is.Notice(`AI3D: ${e} failed \u2014 ${String(t)}`,5e3)})}}function XAe(n){let e=!1,t=null,i=null,r=window,s=()=>{var o;t!==null&&(window.clearTimeout(t),t=null),i!==null&&((o=r.cancelIdleCallback)==null||o.call(r,i),i=null)},a=()=>{e||(s(),n())};return t=window.setTimeout(()=>{t=null,r.requestIdleCallback?i=r.requestIdleCallback(a,{timeout:zAe}):t=window.setTimeout(a,0)},HAe),()=>{e=!0,s()}}var b0=class extends Is.Plugin{constructor(){super(...arguments);this.unloaded=!1;this.headingPinObserverStarted=!1;this.headingLinkedProfilesRef=null;this.headingLinkedProfilesResult=!1}getSettings(){return this.ps.store.getState().settings}updateSettings(t){this.ps.updateSettings(t),pF(this.getSettings().logLevel),E_(this.getSettings().locale)}async onload(){var o;if(this.unloaded=!1,this.ps=F1(this),await this.ps.load(),this.convertedAssetCache=b1(this.ps.store.getState().convertedAssetRecords,l=>this.ps.setConvertedAssetRecords(l)),pF(this.getSettings().logLevel),!this.ps.localeLoadedFromSaved){let c=((o=navigator.language)!=null?o:"en").startsWith("zh")?"zh-CN":"en";this.updateSettings({locale:c})}E_(this.getSettings().locale),this.addRibbonIcon("box",j("main.commandImportModel"),()=>this.importModel()),this.addCommand({id:"import-model",name:j("main.commandImportModel"),callback:()=>this.importModel()}),this.addCommand({id:"generate-note",name:j("main.commandGenerateNote"),callback:EE(()=>this.generateNote(),"generate note")}),this.addCommand({id:"open-knowledge-index",name:j("main.commandOpenKnowledgeIndex"),callback:EE(()=>this.openKnowledgeIndex(),"open knowledge index")}),this.addCommand({id:"clear-conversion-cache",name:j("main.commandClearConversionCache"),callback:EE(()=>Promise.resolve(this.clearConversionCache()),"clear conversion cache")}),this.addCommand({id:"check-converters",name:j("main.commandCheckConverters"),callback:EE(()=>this.checkConverterCommands(),"check converters")}),this.addCommand({id:"copy-diagnostics-report",name:j("main.commandCopyDiagnostics"),callback:EE(()=>this.copyDiagnosticsReport(),"copy diagnostics")}),this.addSettingTab(new v0(this.app,this)),this.registerView(bd,l=>new g0(l,()=>this.getSettings(),this.convertedAssetCache,this.ps)),this.registerExtensions(Bl(),bd);let t=l=>{var c,f;return(f=(c=this.ps.store.getState().modelAssetProfiles[l])==null?void 0:c.annotations)!=null?f:[]},{registerLazyCodeBlockProcessor:i,registerLazyGridCodeBlockProcessor:r}=await Promise.resolve().then(()=>(LJ(),DJ)),s=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t);this.registerMarkdownCodeBlockProcessor(s.id,s.handler);let a=r(this.app,()=>this.getSettings(),this.convertedAssetCache);this.registerMarkdownCodeBlockProcessor(a.id,a.handler),this.register(this.ps.store.subscribe(()=>{this.unloaded||this.headingPinObserverStarted||!this.hasHeadingLinkedAnnotations()||this.startHeadingPinObserver()})),this.app.workspace.onLayoutReady(()=>{this.unloaded||this.register(XAe(()=>{this.registerLivePreviewExtension(t),this.hasHeadingLinkedAnnotations()&&this.startHeadingPinObserver()}))})}onunload(){this.unloaded=!0,this.ps.dispose()}async startHeadingPinObserver(){if(!(this.unloaded||this.headingPinObserverStarted)){this.headingPinObserverStarted=!0;try{let{setupHeadingPinObserver:t}=await Promise.resolve().then(()=>(NJ(),OJ));if(this.unloaded)return;t({subscribeStore:i=>this.ps.store.subscribe(i),getModelAssetProfiles:()=>this.ps.store.getState().modelAssetProfiles,registerCleanup:i=>this.register(i),onLayoutChange:i=>{this.registerEvent(this.app.workspace.on("layout-change",i))}})}catch(t){this.headingPinObserverStarted=!1,console.warn("[AI3D] Failed to start heading pin observer:",t)}}}hasHeadingLinkedAnnotations(){let t=this.ps.store.getState().modelAssetProfiles;return this.headingLinkedProfilesRef===t?this.headingLinkedProfilesResult:(this.headingLinkedProfilesRef=t,this.headingLinkedProfilesResult=cJ(t),this.headingLinkedProfilesResult)}async registerLivePreviewExtension(t){if(!this.unloaded)try{let{registerLazyLivePreviewExtension:i}=await Promise.resolve().then(()=>(YJ(),XJ));if(this.unloaded)return;let r=i(this.app,()=>this.getSettings(),this.convertedAssetCache,t,s=>this.register(s));for(let s of r)this.registerEditorExtension(s)}catch(i){console.warn("[AI3D] Failed to register Live Preview model embeds:",i)}}importModel(){this.showImportModelModal().catch(t=>{S1.error("Failed to open import modal",{error:String(t)}),new Is.Notice(`AI3D: failed to open import modal - ${String(t)}`,5e3)})}async showImportModelModal(){let{ModelFileSuggestModal:t}=await Promise.resolve().then(()=>(ZJ(),jJ));new t(this.app,i=>{let r=i.extension.toLowerCase();Ja(r)&&this.openModelFile(i)}).open()}async openModelFile(t){this.ps.setCurrentModel(t.path,null),await this.app.workspace.getLeaf(!0).openFile(t,{active:!0})}async generateNote(){let{generateKnowledgeNote:t}=await Promise.resolve().then(()=>(p0(),m0));await t(this.app,this.ps)}async openKnowledgeIndex(){let t=this.resolveKnowledgeIndexPath();if(!t){new Is.Notice(j("workbench.noIndexYet"));return}let i=this.app.vault.getAbstractFileByPath(t);i instanceof Is.TFile?await this.app.workspace.getLeaf(!0).openFile(i,{active:!0}):new Is.Notice(Ki("workbench.fileNotFound",{path:t}))}resolveKnowledgeIndexPath(){var a,o,l;let t=this.ps.store.getState(),i=t.currentModelPath,r=i?(a=t.modelAssetProfiles[i])==null?void 0:a.knowledgeIndexPath:void 0;return r||((o=t.lastKnowledgeGeneration)!=null&&o.knowledgeIndexPath?t.lastKnowledgeGeneration.knowledgeIndexPath:(l=Object.values(t.modelAssetProfiles).filter(c=>!!c.knowledgeIndexPath).sort((c,f)=>Date.parse(f.updatedAt)-Date.parse(c.updatedAt))[0])==null?void 0:l.knowledgeIndexPath)}clearConversionCache(){this.convertedAssetCache.clear(),new Is.Notice("AI 3d conversion cache cleared.")}async checkConverterCommands(){if(xr()){new Is.Notice(j("main.converterDiagnosticsMobileUnavailable"),8e3);return}let{inspectAllConverterCommands:t}=await Promise.resolve().then(()=>(Ad(),NF)),i=await t(this.getSettings()),r=i.filter(a=>a.available).map(a=>a.label),s=i.filter(a=>!a.available).map(a=>a.label);if(s.length===0){new Is.Notice(`AI 3D converter diagnostics: all commands available (${r.join(", ")}).`,8e3);return}new Is.Notice(`AI 3D converter diagnostics: available ${r.join(", ")||"none"}; missing ${s.join(", ")}.`,1e4)}async copyDiagnosticsReport(){let{buildDiagnosticsReport:t}=await Promise.resolve().then(()=>(iee(),tee)),i=t({manifest:this.manifest,state:this.ps.store.getState()});try{await navigator.clipboard.writeText(i),new Is.Notice(j("main.diagnosticsCopied"),8e3)}catch(r){let s=this.getSettings().reportFolder.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"").trim()||"Analysis/3D Reports";await this.ensureVaultFolder(s);let a=`AI Model Workbench Diagnostics ${new Date().toISOString().replace(/[:.]/g,"-")}.md`,o=await this.app.vault.create(`${s}/${a}`,i);await this.app.workspace.getLeaf(!0).openFile(o,{active:!0}),new Is.Notice(j("main.diagnosticsCopyFailed"),1e4)}}async ensureVaultFolder(t){let i="";for(let r of t.split("/").filter(Boolean))i=i?`${i}/${r}`:r,this.app.vault.getAbstractFileByPath(i)||await this.app.vault.createFolder(i).catch(s=>{S1.warn("Failed to create vault folder",{path:i,error:String(s)})})}}; diff --git a/manifest.json b/manifest.json index ea55d89..ce20d17 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "ai-model-workbench", "name": "AI Model Workbench", - "version": "0.6.1", + "version": "0.7.0", "minAppVersion": "1.5.0", "description": "Turn 3D models into linked knowledge assets.", "author": "flash", diff --git a/package-lock.json b/package-lock.json index 0bed74a..4e27158 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-ai-model-workbench", - "version": "0.6.1", + "version": "0.7.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-ai-model-workbench", - "version": "0.6.1", + "version": "0.7.0", "dependencies": { "@babylonjs/core": "^9.6.0", "@babylonjs/loaders": "^9.6.0", diff --git a/package.json b/package.json index d5f3aab..0fc51c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-ai-model-workbench", - "version": "0.6.1", + "version": "0.7.0", "private": true, "description": "Obsidian plugin for turning 3D models into linked knowledge assets.", "scripts": { diff --git a/scripts/verify-settings-migration.mjs b/scripts/verify-settings-migration.mjs index 644746a..2556982 100644 --- a/scripts/verify-settings-migration.mjs +++ b/scripts/verify-settings-migration.mjs @@ -73,6 +73,7 @@ await writeFile(entryPath, ` assert(state.settings.analysisMode === DEFAULT_SETTINGS.analysisMode, "Analysis mode was not defaulted"); assert(state.settings.sendRawModelToRemote === false, "Raw model remote upload should default off"); assert(state.settings.previewRendererRollout === DEFAULT_SETTINGS.previewRendererRollout, "New rollout setting was not defaulted"); + assert(state.settings.useThreeForConvertedDirectView === DEFAULT_SETTINGS.useThreeForConvertedDirectView, "Converted GLB fast path setting was not defaulted"); assert(state.settings.snapshotFolder === DEFAULT_SETTINGS.snapshotFolder, "New folder setting was not defaulted"); assert(state.settings.partFolder === DEFAULT_SETTINGS.partFolder, "Part folder setting was not defaulted"); assert(state.settings.enabledConverterIds.includes("obj2gltf"), "Legacy converter setting was not preserved"); @@ -83,6 +84,7 @@ await writeFile(entryPath, ` await ps.save(); assert(saved.settings.experimentalThreeWorkbench === DEFAULT_SETTINGS.experimentalThreeWorkbench, "Saved data did not include defaulted setting"); + assert(saved.settings.useThreeForConvertedDirectView === DEFAULT_SETTINGS.useThreeForConvertedDirectView, "Saved data did not include converted GLB fast path setting"); assert(saved.lastKnowledgeGeneration?.partNoteCount === 2, "Saved data did not preserve last generation summary"); `, "utf8"); diff --git a/src/diagnostics/report.test.ts b/src/diagnostics/report.test.ts index afe1e7f..9b5e6c5 100644 --- a/src/diagnostics/report.test.ts +++ b/src/diagnostics/report.test.ts @@ -83,6 +83,7 @@ describe("diagnostics report", () => { expect(report).toContain("Current route: three"); expect(report).toContain("Route capability profile: three; formats=glb/gltf/stl/ply/obj"); expect(report).toContain("Route color pipeline: sRGB output, no tone mapping"); + expect(report).toContain("Converted GLB Three fast path: on"); expect(report).toContain("Path: "); }); diff --git a/src/diagnostics/report.ts b/src/diagnostics/report.ts index 5c24cb7..63dd91b 100644 --- a/src/diagnostics/report.ts +++ b/src/diagnostics/report.ts @@ -159,6 +159,7 @@ export function buildDiagnosticsReport(options: BuildDiagnosticsReportOptions): "## Renderer", "", `- Use Three renderer: ${formatValue(settings.useThreeRenderer)}`, + `- Converted GLB Three fast path: ${formatValue(settings.useThreeForConvertedDirectView)}`, `- Preview rollout: ${settings.previewRendererRollout}`, `- Experimental Three workbench: ${formatValue(settings.experimentalThreeWorkbench)}`, `- Current route: ${route ? `${route.backend} (${route.reason})` : "no current model"}`, diff --git a/src/domain/constants.ts b/src/domain/constants.ts index 497a046..c860c86 100644 --- a/src/domain/constants.ts +++ b/src/domain/constants.ts @@ -20,6 +20,7 @@ export const DEFAULT_SETTINGS: PluginSettings = { annotationDisplayMode: "surface", previewRendererRollout: "babylon-safe", useThreeRenderer: false, + useThreeForConvertedDirectView: true, experimentalThreeWorkbench: false, sendRawModelToRemote: false, sendPreviewImagesToRemote: false, diff --git a/src/domain/models.ts b/src/domain/models.ts index d17f6ab..e29bc68 100644 --- a/src/domain/models.ts +++ b/src/domain/models.ts @@ -23,6 +23,8 @@ export interface PluginSettings { previewRendererRollout: PreviewRendererRollout; /** Simple toggle: true = Three.js, false = Babylon.js (compatibility). */ useThreeRenderer: boolean; + /** Allow converted GLB outputs to use the Direct View Three.js fast path. */ + useThreeForConvertedDirectView: boolean; /** * Experimental workbench route: allow Three.js for direct GLB/GLTF workbench * surfaces with automatic Babylon fallback. diff --git a/src/i18n/en.ts b/src/i18n/en.ts index 7c4c421..12e850d 100644 --- a/src/i18n/en.ts +++ b/src/i18n/en.ts @@ -46,6 +46,8 @@ export const en = { "settings.previewRendererRollout.direct": "Reading + file view", "settings.useThreeRenderer": "Use Three.js renderer", "settings.useThreeRenderer.desc": "Toggle between Three.js (faster, lighter) and Babylon.js (full compatibility) for single-model previews. Three.js supports GLB/GLTF/STL/PLY/OBJ. 3dgrid always uses Babylon.js.", + "settings.useThreeForConvertedDirectView": "Converted GLB Three fast path", + "settings.useThreeForConvertedDirectView.desc": "When opening STEP, FBX, 3MF, DAE, and other converted files, load the generated GLB with Three.js first and silently fall back to Babylon.js if it fails. Turn this off to make converted files follow the normal compatibility mode.", "settings.experimentalThreeWorkbench": "Experimental Three workbench", "settings.experimentalThreeWorkbench.desc": "Try the Three.js workbench path for direct GLB/GLTF files only. If loading fails, the file view falls back to Babylon.js automatically.", "settings.autoRotateDefault": "Auto-rotate by default", diff --git a/src/i18n/zh-CN.ts b/src/i18n/zh-CN.ts index 1856780..e8e2b47 100644 --- a/src/i18n/zh-CN.ts +++ b/src/i18n/zh-CN.ts @@ -48,6 +48,8 @@ export const zhCN: Record = { "settings.previewRendererRollout.direct": "阅读 + 文件视图", "settings.useThreeRenderer": "使用 Three.js 渲染器", "settings.useThreeRenderer.desc": "在 Three.js(更快、更轻量)和 Babylon.js(完全兼容)之间切换单模型预览渲染器。Three.js 支持 GLB/GLTF/STL/PLY/OBJ。工作台和 3dgrid 始终使用 Babylon.js。", + "settings.useThreeForConvertedDirectView": "转换 GLB 的 Three 快速路径", + "settings.useThreeForConvertedDirectView.desc": "打开 STEP、FBX、3MF、DAE 等需要转换的文件时,先用 Three.js 加载生成的 GLB,失败后自动回退到 Babylon.js。关闭后转换文件会遵循普通兼容模式。", "settings.experimentalThreeWorkbench": "实验性 Three 工作台", "settings.experimentalThreeWorkbench.desc": "仅对直读 GLB/GLTF 文件尝试使用 Three.js 工作台路径。加载失败时,文件视图会自动回退到 Babylon.js。", "settings.autoRotateDefault": "默认自动旋转", diff --git a/src/settings.ts b/src/settings.ts index 35d776f..4eafa90 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -246,6 +246,17 @@ export class AI3DSettingTab extends PluginSettingTab { }), ); + new Setting(containerEl) + .setName(t("settings.useThreeForConvertedDirectView")) + .setDesc(t("settings.useThreeForConvertedDirectView.desc")) + .addToggle((toggle) => + toggle + .setValue(this.plugin.getSettings().useThreeForConvertedDirectView) + .onChange((val) => { + this.plugin.updateSettings({ useThreeForConvertedDirectView: val }); + }), + ); + new Setting(containerEl) .setName(t("settings.experimentalThreeWorkbench")) .setDesc(t("settings.experimentalThreeWorkbench.desc")) diff --git a/src/view/direct-view-routing.test.ts b/src/view/direct-view-routing.test.ts index 99a5f2d..8231917 100644 --- a/src/view/direct-view-routing.test.ts +++ b/src/view/direct-view-routing.test.ts @@ -53,6 +53,29 @@ describe("createDirectViewPreviewOptions", () => { expect(route.reason).toBe("glb direct view edit preview"); }); + it("keeps converted GLB outputs on the normal route when the fast path is disabled", () => { + const options = createDirectViewPreviewOptions( + makeSettings({ + previewRendererRollout: "babylon-safe", + useThreeRenderer: false, + useThreeForConvertedDirectView: false, + }), + makeSource({ + path: "C:\\vault\\models\\test-step.ai3d-converted.glb", + strategy: "convert", + sourcePath: "models/test-step.step", + sourceExt: "step", + }), + ); + const route = resolvePreviewRoute(options); + + expect(options.requireWorkbenchFeatures).toBe(false); + expect(options.rendererRollout).toBe("babylon-safe"); + expect(options.useThreeRenderer).toBe(false); + expect(route.backend).toBe("babylon"); + expect(route.reason).toBe("useThreeRenderer=false"); + }); + it("uses the guarded Three workbench route only when the experimental file-view setting is enabled", () => { const options = createDirectViewPreviewOptions( makeSettings({ diff --git a/src/view/direct-view-routing.ts b/src/view/direct-view-routing.ts index 2b80822..be771d2 100644 --- a/src/view/direct-view-routing.ts +++ b/src/view/direct-view-routing.ts @@ -32,8 +32,10 @@ function canUseThreeDirectFileView(source: PreviewSource): boolean { return source.strategy === "convert" && THREE_WORKBENCH_DIRECT_EXTS.has(source.ext); } -function shouldUseFastConvertedDirectView(source: PreviewSource): boolean { - return source.strategy === "convert" && THREE_WORKBENCH_DIRECT_EXTS.has(source.ext); +function shouldUseFastConvertedDirectView(settings: PluginSettings, source: PreviewSource): boolean { + return settings.useThreeForConvertedDirectView + && source.strategy === "convert" + && THREE_WORKBENCH_DIRECT_EXTS.has(source.ext); } export function createDirectViewPreviewOptions( @@ -42,7 +44,7 @@ export function createDirectViewPreviewOptions( ): DirectViewPreviewOptions { const allowWorkbenchFeaturesOnThree = canUseExperimentalThreeWorkbench(settings, source); const useThreeDirectFileView = canUseThreeDirectFileView(source); - const useFastConvertedDirectView = shouldUseFastConvertedDirectView(source); + const useFastConvertedDirectView = shouldUseFastConvertedDirectView(settings, source); return { ext: source.ext, annotationMode: "edit", diff --git a/versions.json b/versions.json index edd2a8a..f43890f 100644 --- a/versions.json +++ b/versions.json @@ -1 +1 @@ -{"0.0.1":"1.5.0","0.0.2":"1.5.0","0.0.3":"1.5.0","0.0.4":"1.5.0","0.0.5-beta.0":"1.5.0","0.1.1":"1.5.0","0.1.2":"1.5.0","0.1.4":"1.5.0","0.1.5":"1.5.0","0.1.6":"1.5.0","0.1.7":"1.5.0","0.1.8":"1.5.0","0.1.9":"1.5.0","0.2.0":"1.5.0","0.2.1":"1.5.0","0.2.2":"1.5.0","0.2.3":"1.5.0","0.2.4":"1.5.0","0.2.5":"1.5.0","0.3.0":"1.5.0","0.3.1":"1.5.0","0.4.0":"1.5.0","0.4.3":"1.5.0","0.5.1":"1.5.0","0.5.3":"1.5.0","0.5.5":"1.5.0","0.5.7":"1.5.0","0.5.8":"1.5.0","0.6.0":"1.5.0","0.6.1":"1.5.0"} +{"0.0.1":"1.5.0","0.0.2":"1.5.0","0.0.3":"1.5.0","0.0.4":"1.5.0","0.0.5-beta.0":"1.5.0","0.1.1":"1.5.0","0.1.2":"1.5.0","0.1.4":"1.5.0","0.1.5":"1.5.0","0.1.6":"1.5.0","0.1.7":"1.5.0","0.1.8":"1.5.0","0.1.9":"1.5.0","0.2.0":"1.5.0","0.2.1":"1.5.0","0.2.2":"1.5.0","0.2.3":"1.5.0","0.2.4":"1.5.0","0.2.5":"1.5.0","0.3.0":"1.5.0","0.3.1":"1.5.0","0.4.0":"1.5.0","0.4.3":"1.5.0","0.5.1":"1.5.0","0.5.3":"1.5.0","0.5.5":"1.5.0","0.5.7":"1.5.0","0.5.8":"1.5.0","0.6.0":"1.5.0","0.6.1":"1.5.0","0.7.0":"1.5.0"}